Auslesen von Eckkoordinaten von Polygonen (OO Draw)

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

mikeschbg
*
Beiträge: 12
Registriert: Sa, 21.01.2006 09:12

Auslesen von Eckkoordinaten von Polygonen (OO Draw)

Beitrag von mikeschbg »

Hallo,

gibt es eine eingebaute Funktion in OO Basic mit der man Eckkoordinaten von Polygonen (OO Draw) auslesen kann ?

Grüße
Michael
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Michael,
eingebaute Funktion in OO Basic mit der man Eckkoordinaten von Polygonen (OO Draw) auslesen kann
Na ja, nicht eine eingebaute Funktion. Aber: Jedes Polygon-Shape (siehe auch com.sun.star.drawing.PolyPolygonDescriptor ) lbesitzt eine Eigenschaft "PolyPolygon", welches einen Array von Arrays von Objekten (Structs) des Typs com.sun.star.awt.Point enthält - und die stellen die Punkte des Polygons dar - bezogen auf die Seite (Kooordinaten).
Die kannst du natürlich alle auslesen und verarbeiten.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Michael,

und damit das nicht alles so "theoretisch" bleibt, hier mal ein praktisches Beispiel:

Zeichne mal in ein neues Draw-Dokument (2.0) ein geschlossenes Polygon - nutze das Werkzeug "geschlossenes, gefülltes Polygon".
Die Seite darf nur ein "Shape" enthalten! dann rufe das Makro auf - die jeweiligen Koordinaten der Eckpunkte werden aufgelistet:

Code: Alles auswählen

Sub PunkteAuflisten
	oDoc = thisComponent
	oPage = oDoc.drawPages(0)
	oShape = oPage.getByIndex(0)
	aArray1 = oShape.PolyPolygon
	aPunkte = aArray1(0)
	for i=0 to Ubound(aPunkte)
	  oPunkt = aPunkte(i)
	  s = s & i &": X = " & oPunkt.X & "; Y = " & oPunkt.Y & chr(13)
	next  
	msgbox s
End Sub
Na ja, die Hauptschwierigkeit besteht in der Identifikation des gewünschten Shapes - bei nur einem ist das einfach, aber alles ist intern ein "Shape", und die werden einfach intern durchnummeriert. Du kannst sie also nur über eine "Enumeration" erreichen - und musst sie mühevoll identifizieren.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
mikeschbg
*
Beiträge: 12
Registriert: Sa, 21.01.2006 09:12

Beitrag von mikeschbg »

Hallo,

super vielen Dank an Toxitom !!!

Berechnung funzt schon. Weiss nur noch nicht wie man den eingestellten Zeichnungsmaßstab auslesen kann (Systemvariable, etc ???).

Wäre super wenn mir jemand helfen könnte.

Grüße Michael
Antworten