Seite 1 von 1

Probleme mit Maßlinien in LibreOffice

Verfasst: Fr 1. Okt 2021, 16:32
von erikafuchs
Hallo Leute,
ich habe diese Frage auch schon im oO Forum gepostet, aber eigentlich gehört sie ja hier rein:
In meinem Rechentrainer werden Figuren und Körper mit Maßlinien versehen. In oO funktioniert das wunderbar, in LO nicht.
so soll es z.B. aussehen:

(Es gelingt mir nicht, das Bild hier einzufügen -> siehe unten "mit.jpg")

Bild
In oO sieht es auch so aus. In LO sieht es zunächst so aus:

siehe unten "ohne.jpg"
Bild

... klicke ich aber auf "Speichern" taucht auch die Beschriftung auf. Wahrscheinlich wisst ihr warum.
Hier ist der Code:

Code: Alles auswählen

sub main
	dim oDoc as object, oPunkte as object, oPoly as object, oPage as object, oMass as object
	oDoc=ThisComponent
	ZeichnungLoeschen

  
  x1=40
  y1=20
  
  x2=75
  y2=65
  
 
   oPage=oDoc.drawpages(0)
   oPoly=ThisComponent.createInstance("com.sun.star.drawing.PolyPolygonShape")

   oPunkte=array(erzeugePunkt(x1*100, y1*100), erzeugePunkt(x2*100, y1*100), erzeugePunkt(x2*100, y2*100), erzeugePunkt(x1*100, y2*100))
   oPoly.LineWidth=50  
   oPage.add(oPoly)  
   oPoly.PolyPolygon=array(oPunkte())                        

   oPoly.fillColor=rgb(255,255,0)  
  
   flag=false         
          
   oMass=oDoc.createInstance("com.sun.star.drawing.MeasureShape")
   oPage.add(oMass)  
   With oMass
     .StartPosition=erzeugePunkt(x1*100, y1*100)
     .endPosition=erzeugePunkt(x2*100, y1*100)
     .MeasureDecimalPlaces=1 
     .MeasureUnit=2
     if flag then .MeasureBelowReferenceEdge=true
   End With
   
   flag=true

   oMass=oDoc.createInstance("com.sun.star.drawing.MeasureShape")
   oPage.add(oMass)  
   With oMass
     .StartPosition=erzeugePunkt(x1*100, y1*100)
     .endPosition=erzeugePunkt(x1*100, y2*100)
     .MeasureDecimalPlaces=1 
     .MeasureUnit=2
     if flag then .MeasureBelowReferenceEdge=true
   End With
end sub
'************************************************************************************************************************
'************************************************************************************************************************
sub ZeichnungLoeschen 
	oPage=ThisComponent.drawpages(0)
	do while oPage.count>0
    	oGrafik=opage.getbyindex(oPage.count-1)
      	oPage.remove(oGrafik)    	  
	loop
end sub
'************************************************************************************************************************
'************************************************************************************************************************
'************************************************************************************************************************
Function erzeugePunkt (ByVal x as Long, ByVal y as long) as com.sun.star.awt.Point
   dim oPunkt as new com.sun.star.awt.Point
   oPunkt.X=x
   oPunkt.Y=y
   erzeugePunkt=oPunkt
End Function   
'************************************************************************************************************************
Function erzeugeSize (ByVal Breite as Long, ByVal Hoehe as Long) as com.sun.star.awt.Size
   Dim oSize as new com.sun.star.awt.Size
   oSize.Width=Breite
   oSize.Height=Hoehe
   erzeugeSize=oSize
end function
Eine Beispieldatei hängt an.

Re: Probleme mit Maßlinien in LibreOffice

Verfasst: Fr 1. Okt 2021, 21:13
von craig
Hallo,

sehr seltsam :roll:

Zwecks Test habe ich mal zwei Objekte (oMass1 und oMass2) für die Maßlinien referenziert.
Hier mal mein geänderter Part:

Code: Alles auswählen

sub main
	dim oDoc as object, oPunkte as object, oPoly as object, oPage as object, oMass as object
	oDoc=ThisComponent
	ZeichnungLoeschen
 
  x1=40
  y1=20
  
  x2=75
  y2=65
 
   oPage=oDoc.drawpages(0)
   oPoly=ThisComponent.createInstance("com.sun.star.drawing.PolyPolygonShape")

   oPunkte=array(erzeugePunkt(x1*100, y1*100), erzeugePunkt(x2*100, y1*100), erzeugePunkt(x2*100, y2*100), erzeugePunkt(x1*100, y2*100))
   oPoly.LineWidth=50  
   oPage.add(oPoly)  
   oPoly.PolyPolygon=array(oPunkte())                        

   oPoly.fillColor=rgb(255,255,0)  
  
   flag=false         
          
   oMass1=oDoc.createInstance("com.sun.star.drawing.MeasureShape")
   oPage.add(oMass1)  
   With oMass1
     .StartPosition=erzeugePunkt(x1*100, y1*100)
     .endPosition=erzeugePunkt(x2*100, y1*100)
     .MeasureDecimalPlaces=1 
     .MeasureUnit=2
     if flag then .MeasureBelowReferenceEdge=true
   End With

REM → → → → → → → → → → → → → → → → → → → → → → → → → → → → → → → → → → → 
	' Der String wird erst angezeigt, wenn XRAY einmalig ausgeführt wurde
	' Ohne XRAY bleibt der String LEER
	xray oMass1
	  'msgbox oMass.String
	  sStr1=oMass1.String
REM ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← 

   flag=true

   oMass2=oDoc.createInstance("com.sun.star.drawing.MeasureShape")
   oPage.add(oMass2)  
   With oMass2
     .StartPosition=erzeugePunkt(x1*100, y1*100)
     .endPosition=erzeugePunkt(x1*100, y2*100)
     .MeasureDecimalPlaces=1 
     .MeasureUnit=2
     if flag then .MeasureBelowReferenceEdge=true
   End With

REM → → → → → → → → → → → → → → → → → → → → → → → → → → → → → → → → → → → 
	' Der String wird erst angezeigt, wenn XRAY einmalig ausgeführt wurde
	' Ohne XRAY bleibt der String LEER
	xray oMass2
	  msgbox oMass2.String
	  sStr2=oMass2.String
REM ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ← ←		

		oMass1.String=sStr1
		oMass2.String=sStr2
end sub
Getestet mit:
  • LO 7.1.5.2
  • LO 7.3 (Aplha) Erstelldatum: 01.10.2021
Bei beiden Versionen funktioniert Dein Code nicht, bzw. nur zum Teil.
Wenn ich den Code ausführe, dann sind zunächst die Maßlinien nicht beschriftet.
Fahre ich jedoch mit dem Mauszeiger über die jeweilige Maßlinie, wird der String (oMass.String) angezeigt.

Ich kann Dir aber nicht sagen, ob noch ein Schritt in Deiner
With-Anweisung fehlt oder ob dieses Verhalten ein Bug ist.

Ausserdem habe ich per XRAY einen undokumentierten Befehl gefunden:
MeasureFormatString
Hierzu gibt es in der AOO- und in der LO-API keinerlei HInweise.

Re: Probleme mit Maßlinien in LibreOffice

Verfasst: Fr 1. Okt 2021, 21:42
von erikafuchs
Hallo Craig,
vielen Dank für deine Mühe. Sehe ich das richtig, dass du da genauso vor einem Rätsel stehst?

Re: Probleme mit Maßlinien in LibreOffice

Verfasst: Fr 1. Okt 2021, 22:57
von craig
Hallo,

ja, für mich ist dies auch ein Rätsel.

Ich habe den Code mit XRAY untersucht und konnte keinen Fehler finden.
Bei meinen verschiedensten Versuchen ist nun das seltsame Verhalten aufgetreten,
dass oMass.String erst einen Inhalt bekommt, wenn zuvor XRAY aufgerufen wurde.
Ich habe auch eine Wait-Anweisung an verschiedenste Stelle plaziert, aber die brachte auch keinen Erfolg.

Da dieser Fehler auch in der Alpha-Version von Heute nicht
korrigiert wurde, gibt es dazu auch noch keinen Bug-Report.
Ich konnte zumindest keinen finden.

Re: Probleme mit Maßlinien in LibreOffice

Verfasst: Sa 2. Okt 2021, 09:37
von F3K Total
Moin zusammen,
ich kann eure Ergebnisse exakt nachvollziehen, eine Lösung des Problemes habe ich auch nicht gefunden, aber immerhin einen Workaround.
Wenn das Dokument am Ende der Routine mit

Code: Alles auswählen

odoc.store
gespeichert wird, erscheinen bei mir die Bemaßungen.
W10, LO 7.1.6

EDIT: unter Linux Mint LO 7.1.6 gibt es die Probleme nicht. Kein Xray oder Speichern nötig, funktioniert wie mit AOO problemlos.

Gruß R

Re: Probleme mit Maßlinien in LibreOffice

Verfasst: Sa 2. Okt 2021, 13:20
von erikafuchs
Ja, das mit dem Speichern habe ich ja oben schon beschrieben, das ist aber keine wirkliche Lösung, die Nutzer bekommen in einem Aufgabenblock mehrere von diesen Aufgaben (wieviele bestimmt der Zufall) und da mein „Rechentrainer“ zwischenzeitlich ziemlich umfangreich ist, dauert das Speichern jeweils ziemlich lange ... zusätzlich ist mir aufgefallen, dass das im Vergleich zu OpenOffice ein Mehrfaches länger dauert. Da bräuchte ich eine andere Lösung.

Re: Probleme mit Maßlinien in LibreOffice

Verfasst: Sa 2. Okt 2021, 15:52
von Mondblatt24
erikafuchs hat geschrieben:
Fr 1. Okt 2021, 16:32
Hallo Leute,
ich habe diese Frage auch schon im oO Forum gepostet,
https://de.openoffice.info/viewtopic.ph ... 07#p296307

und bei

https://ask.libreoffice.org/t/problem-w ... ines/68807

Re: Probleme mit Maßlinien in LibreOffice

Verfasst: Sa 2. Okt 2021, 16:07
von erikafuchs
@mondblatt24: ja stimmt. auf ersteres habe ich ja oben auch hingewiesen und auf der englischsprachigen Seite sind viel mehr Nutzer, vielleicht fällt da jemandem was ein (Die werden sicher eher selten auf der deutschen Seite nachsehen)

Ich habe noch was festgestellt: Wenn man mit der Maus über die entsprechende Stelle fährt, taucht die Beschriftung auf!
... Das hilft mir allerdings nicht, da das in meinem Rechentrainer nicht funktioniert. Dort ist ein Dialogfenster mit der Aufgabenstellung geöffnet und daher kann man die Grafik nicht auswählen oder anklicken.

Re: Probleme mit Maßlinien in LibreOffice

Verfasst: Sa 2. Okt 2021, 20:36
von erikafuchs
Stephan vom OpenOffice Forum hatte die richtige Idee:

Ich gruppiere die Objekte der Grafik, verkleinere sie mit dem Faktor 1 (ich weiß, das macht nicht wirklich Sinn) und gut ist.
Da die Beschriftung auch auftaucht wenn man mit der Maus drüberfährt muss man mit der Grafik wohl nur noch mal machen.

Es scheint sich um einen Bug in LibreOffice zu handeln.

Danke für eure Anteilnahme und nochmals Dank an Stephan.

Re: Probleme mit Maßlinien in LibreOffice

Verfasst: So 3. Okt 2021, 08:16
von F3K Total
Moin,
ich habe auch noch einen zweiten Workaround, der kurzzeitige Wechsel auf ein anderes Tabellenblatt:

Code: Alles auswählen

thiscomponent.currentcontroller.activeSheet = ThisComponent.Sheets(1)
thiscomponent.currentcontroller.activeSheet = ThisComponent.Sheets(0)
Gruß R