BITTE helfen Sie uns HEUTE mit einer SPENDE
Helfen Sie das LibreOffice Forum zu erhalten!

❤️ DANKE >><< DANKE ❤️

> KEINE WERBUNG FÜR REGISTRIERTE BENUTZER!<
Ihre Spende wird für die Deckung der laufenden Kosten sowie den Erhalt und Ausbau 🌱 des LibreOffice Forums verwendet.
🤗 Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet. 🤗

Probleme mit Maßlinien in LibreOffice

Alles zur Programmierung im LibreOffice.
Antworten
erikafuchs
Beiträge: 30
Registriert: Mi 20. Mär 2013, 18:07

Probleme mit Maßlinien in LibreOffice

Beitrag von erikafuchs » Fr 1. Okt 2021, 16:32

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.
Dateianhänge
mit.jpg
mit.jpg (15.78 KiB) 3075 mal betrachtet
ohne.jpg
ohne.jpg (16.1 KiB) 3075 mal betrachtet
MasslinienTest.ods
(10.91 KiB) 168-mal heruntergeladen

craig
Beiträge: 1137
Registriert: Do 21. Apr 2016, 11:42

Re: Probleme mit Maßlinien in LibreOffice

Beitrag von craig » Fr 1. Okt 2021, 21:13

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.
Gruß

Craig

Nie die Sicherungskopie vergessen!

════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8

erikafuchs
Beiträge: 30
Registriert: Mi 20. Mär 2013, 18:07

Re: Probleme mit Maßlinien in LibreOffice

Beitrag von erikafuchs » Fr 1. Okt 2021, 21:42

Hallo Craig,
vielen Dank für deine Mühe. Sehe ich das richtig, dass du da genauso vor einem Rätsel stehst?

craig
Beiträge: 1137
Registriert: Do 21. Apr 2016, 11:42

Re: Probleme mit Maßlinien in LibreOffice

Beitrag von craig » Fr 1. Okt 2021, 22:57

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.
Gruß

Craig

Nie die Sicherungskopie vergessen!

════════════════════════════════════════════════
WIN 10 Pro 64-Bit • LO 7.4.5.1 (x64) • AOO 4.1.8

F3K Total
Beiträge: 2416
Registriert: So 10. Apr 2011, 10:10

Re: Probleme mit Maßlinien in LibreOffice

Beitrag von F3K Total » Sa 2. Okt 2021, 09:37

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
Windows 10: AOO, LO Linux Mint: AOO, LO

erikafuchs
Beiträge: 30
Registriert: Mi 20. Mär 2013, 18:07

Re: Probleme mit Maßlinien in LibreOffice

Beitrag von erikafuchs » Sa 2. Okt 2021, 13:20

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.

Mondblatt24
Beiträge: 2863
Registriert: Fr 3. Mär 2017, 17:12

Re: Probleme mit Maßlinien in LibreOffice

Beitrag von Mondblatt24 » Sa 2. Okt 2021, 15:52

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
Win 11 (x64) ▪ LO 24.2.2.2 (x64) ▪ AOO Portable 4.1.15
Wenn Eure Frage zutreffend beantwortet wurde, seid so nett und fügt dem Betreff der Eingangsfrage [GELÖST] hinzu.

erikafuchs
Beiträge: 30
Registriert: Mi 20. Mär 2013, 18:07

Re: Probleme mit Maßlinien in LibreOffice

Beitrag von erikafuchs » Sa 2. Okt 2021, 16:07

@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.

erikafuchs
Beiträge: 30
Registriert: Mi 20. Mär 2013, 18:07

Re: Probleme mit Maßlinien in LibreOffice

Beitrag von erikafuchs » Sa 2. Okt 2021, 20:36

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.

F3K Total
Beiträge: 2416
Registriert: So 10. Apr 2011, 10:10

Re: Probleme mit Maßlinien in LibreOffice

Beitrag von F3K Total » So 3. Okt 2021, 08:16

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
Windows 10: AOO, LO Linux Mint: AOO, LO

An alle, die das LibreOffice-Forum nutzen:


Bitte beteiligen Sie sich mit 7 Euro pro Monat und helfen uns bei unserem Budget für das Jahr 2024.
Einfach per Kreditkarte oder PayPal.
Als Dankeschön werden Sie im Forum als LO-SUPPORTER gekennzeichnet.

❤️ Vielen lieben Dank für Ihre Unterstützung ❤️

Antworten