🎄 Helfen Sie noch heute, unser LibreOffice Forum zu erhalten! 🎄
❤️ Bitte helfen Sie uns dabei, das Ziel für 2025 zu erreichen. Vielen Dank! ❤️

❤️ HELFEN SIE JETZT >> << HELFEN SIE JETZT ❤️

>> Dank Ihrer Unterstützung -> Keine Werbung für alle registrierten LibreOffice-Forum User! <<
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗


[gelöst] Ein createInstance Problem

Alles zur Programmierung im LibreOffice.
Antworten
wega
Beiträge: 133
Registriert: Mi 16. Jul 2014, 19:15

[gelöst] Ein createInstance Problem

Beitrag von wega » Mi 10. Dez 2025, 00:40

Guten Abend zusammen,
ich habe mir mit der Ki folgendes Programm erstellt:

Code: Alles auswählen

Sub DrawTouchingCircleSegments()
    ' Zugriff auf die erste Zeichnungsseite
    Dim oDrawPage As Object
    oDrawPage = ThisComponent.DrawPages(0)

    ' Erstellen der ersten Ellipse (erstes Segment)
    Dim oSegment1 As Object
    oSegment1 = oDrawPage.createInstance("com.sun.star.drawing.EllipseShape")
	'oSegment1 = oDrawPage.createInstance("com.sun.star.drawing.Ellipse")

    ' Position und Größe des ersten Segments
    Dim oPosition1 As Object
    oPosition1 = CreateUnoObject("com.sun.star.awt.Point")
    oPosition1.X = 1000   ' X-Position des ersten Kreissegments
    oPosition1.Y = 1000   ' Y-Position des ersten Kreissegments
    oSegment1.Position = oPosition1

    ' Radius des ersten Kreissegments
    oSegment1.Width = 2000   ' Breite des ersten Kreises
    oSegment1.Height = 2000  ' Höhe des ersten Kreises (gleich für einen Kreis)

    ' Optional: Linie und Füllung
    oSegment1.LineColor = RGB(0, 0, 0)  ' Schwarze Linie
    oSegment1.LineWidth = 200            ' Linienstärke
    oSegment1.FillColor = RGB(255, 255, 0)  ' Gelbe Füllung

    ' Das erste Segment zur Zeichnungsseite hinzufügen
    oDrawPage.add(oSegment1)

    ' Erstellen der zweiten Ellipse (zweites Segment)
    Dim oSegment2 As Object
    oSegment2 = oDrawPage.createInstance("com.sun.star.drawing.EllipseShape")

    ' Position und Größe des zweiten Segments
    Dim oPosition2 As Object
    oPosition2 = CreateUnoObject("com.sun.star.awt.Point")
    oPosition2.X = 3000   ' X-Position des zweiten Kreissegments (am Berührungspunkt)
    oPosition2.Y = 1000   ' Y-Position des zweiten Kreissegments
    oSegment2.Position = oPosition2

    ' Radius des zweiten Kreissegments
    oSegment2.Width = 2000   ' Breite des zweiten Kreises
    oSegment2.Height = 2000  ' Höhe des zweiten Kreises (gleich für einen Kreis)

    ' Optional: Linie und Füllung für das zweite Segment
    oSegment2.LineColor = RGB(0, 0, 0)  ' Schwarze Linie
    oSegment2.LineWidth = 200            ' Linienstärke
    oSegment2.FillColor = RGB(0, 255, 0)  ' Grüne Füllung

    ' Das zweite Segment zur Zeichnungsseite hinzufügen
    oDrawPage.add(oSegment2)

    ' Optional: Position des Berührungspunkts anzeigen
    Dim oPoint As Object
    oPoint = CreateUnoObject("com.sun.star.awt.Point")
    oPoint.X = 2000  ' Berührungspunkt X
    oPoint.Y = 1000  ' Berührungspunkt Y
    MsgBox "Die Kreissegmente berühren sich bei: " & oPoint.X & ", " & oPoint.Y
End Sub

und bekomme nun einen BASIC-Laufzeitfehler, dass die Eigenschaft bzw. Methode "createInstance" nicht gefunden wird.
Ich habe die Anweisung schon von Shape auf Ellipse geändert, aber finde keine Lösung.

Unter Linux LUBUNTU verwende ich folgende Libreoffice Version:

Version: 25.8.2.2 (X86_64) / LibreOffice Community
Build ID: 580(Build:2)
CPU threads: 4; OS: Linux 6.17; UI render: default; VCL: qt6 (cairo+xcb)
Locale: de-DE (de_DE.UTF-8); UI: de-DE
Ubuntu package version: 4:25.8.2-0ubuntu0.25.10.1
Calc: threaded

Ich würde mich sehr freuen, wenn mir eine/r helfen könnte.

Mit Gruß
Werner
Zuletzt geändert von wega am Do 11. Dez 2025, 11:02, insgesamt 1-mal geändert.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2633
Registriert: Fr 10. Dez 2010, 10:01

Re: Ein createInstance Problem

Beitrag von karolus » Mi 10. Dez 2025, 07:05

Vielleicht solltest du mal MRI benutzen, anstatt mit einer KI zu chatten!!

Die Fehlermeldung sagt dir doch schon daß deine DrawPage keine Methode »createInstance« kennt, an der Stelle solltest du dann wahrscheinlich direkt »createUnoService« oder (vielleicht) »thisComponent.createInstance«
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)

wega
Beiträge: 133
Registriert: Mi 16. Jul 2014, 19:15

Re: Ein createInstance Problem

Beitrag von wega » Do 11. Dez 2025, 11:00

Hallo Karolus,
danke für Deine Anregung.

Jedoch kommt man mit KI etwas näher an die Programmiermöglichkeiten
von Libreoffice BASIC. Denn diese Sprache ist nicht gerade einfach, wenn man
die Möglichkeiten jenseits des üblichen Basics nutzen möchte. Wie hier die
Darstellungen von Geometrien in DRAW.

Anhängend hier die Lösung mit dem europäischen KI-Modell "LUMA" zu meinem
Kreisproblem.

Code: Alles auswählen

Sub Zeichne_Kreisboegen
'################################################################
' die Lösung mit der europäischen Alternative LUMO zu Chatgpt
' erstellt.
' von alleine wäre ich nicht so weit gekommen
'################################################################
 
Dim oDoc As Object 
Dim oPage As Object 
Dim nRad As Long
Dim oPos As New com.sun.star.awt.Point
Dim oSize As New com.sun.star.awt.Size 

 oDoc = ThisComponent 
 oPage = oDoc.DrawPages.getByIndex(0) 
 nRad = 3000 
 oSize.Width = nRad * 2 
 oSize.Height = nRad * 2 
 oPos.X = 5000 
 oPos.Y = 5000 
 ErstelleBogen oPage, oPos, oSize, 0, 12000, RGB(0,0,255), 100 
 ErstelleBogen oPage, oPos, oSize, 12000, 24000, RGB(255,0,0), 100 
 End Sub

Private Sub ErstelleBogen(ByRef oPage As Object, ByVal oPos As com.sun.star.awt.Point, ByVal oSize As com.sun.star.awt.Size, ByVal nStart As Long, ByVal nEnd As Long, ByVal nColor As Long, ByVal nWidth As Long) 
Dim oArc As Object 
oArc = ThisComponent.createInstance("com.sun.star.drawing.EllipseShape") 
oArc.Position = oPos 
oArc.Size = oSize 
oArc.CircleKind = com.sun.star.drawing.CircleKind.ARC 
oArc.CircleStartAngle = nStart 
oArc.CircleEndAngle = nEnd 
oArc.LineColor = nColor 
oArc.LineWidth = nWidth 
oPage.add(oArc) 
End Sub
mit freundlichem Gruß
Werner
Zuletzt geändert von wega am Do 11. Dez 2025, 23:52, insgesamt 1-mal geändert.

Benutzeravatar
karolus
* LO-Experte *
Beiträge: 2633
Registriert: Fr 10. Dez 2010, 10:01

Re: [gelöst] Ein createInstance Problem

Beitrag von karolus » Do 11. Dez 2025, 16:20

Hallo

Denk mal darüber nach aus welchen Quellen deine KI's ihre Weisheiten zusammenreimen!

Ist schon etwas seltsam daß deine KI jetzt plötzlich eine Lösung presentiert die ich im Kern bereits vorgeschlagen hatte: thisComponent.createInstance … und jemand der seit ~11 Jahren in diesem Forum unterwegs ist! … sich immer noch weigert MRI zu benutzen.
LO25.2.x.y debian 13(trixie) auf Raspberry5 8GB (64bit)
LO25.8.x.y flatpak debian 13(trixie) auf Raspberry5 8GB (64bit)


An alle, die das LibreOffice-Forum gern nutzen und unterstützen wollen:


Bitte helfen Sie uns mit 7 Euro pro Monat.
Durch Ihren Beitrag tragen Sie dazu bei, unsere laufenden Kosten für die kommenden Monate zu decken.
Unkompliziert per Kreditkarte oder PayPal.
Als ein kleines Dankeschön werden Sie im LO-Forum als SUPPORTER gekennzeichnet.



Antworten