Das Wissen aller Anwender nutzen

Im Allplan Connect Forum tauschen sich Anwender aus, geben wertvolle Tipps oder beraten sich bei ganz konkreten Aufgabenstellungen − auch international.
Und damit wirklich keine Frage unbeantwortet bleibt, unterstützen die Mitarbeiter des Technischen Supports ebenfalls aktiv das Forum.

Es erwarten Sie:

  • Foren-Vielfalt aus CAD Architektur, CAD Ingenieurbau uvm.
  • Tipps von User für User
  • international: Deutsch, Englisch, Italienisch, Französisch und Tschechisch

Melden Sie sich jetzt an und diskutieren Sie mit!

Zur Registrierung

[Frage] Problem bei "Verkettung" zwischen Symbolpunkt und Beschriftung (Label)

Schlagworte:
  • Python
  • Symbol3DElement
  • LabelElement
  • 2021

Hallo

in Allplan gibt es die Möglichkeit Symbolpunkte (Geländepunkte) mit Koordinaten/Höhe zu beschriften.
Gerne würde ich nun per Python erstelle Symbolpunkte gleich beschriften. Der unten stehende Code macht dies.

Leider funktioniert die "Verkettung" zwischen dem Symbolpunkt und der Beschriftung nicht ganz korrekt.
Die Verkettung wir beim Kopieren mittels Copy&Paste aufgelöst. Der Text der Beschriftung (z.B. Höhe) bleibt und aktualisiert sich nicht mehr. Somit ist es nicht gleich sichtbar, dass die "Verkettung" nicht mehr funktioniert.

Bei "manuell" erstellten Beschriftungen passiert dies nicht. Ebenso bei beschrifteten Makros. Dieses Verhalten ist eine grosse Fehlerquelle!

Ist dieses ein Problem der Python-Schnittstelle? Oder kann ich dies mit korrektem Code selber lösen?

symbol_ele = AllplanBasisElements.Symbol3DElement(com_prop, symbol_prop, loc_sym)
            
text_prop = AllplanBasisElements.TextProperties()
text_prop.Type = AllplanBasisElements.TextType.eFormularText
text_ele = AllplanBasisElements.TextElement(com_prop, text_prop, text_lbl, loc_lbl))

label_lst = []
label_lst.append (AllplanBasisElements.LabelElement(text_ele, AllplanBasisElements.eLabelNormalText))
symbol_ele.SetLabelElements(label_lst)

Gruss und Dank
Hansruedi

..was steht den im Text drin?
Wenn dort nicht eine Formel , z.B.

"H =%D3%FA4.3%FE#KZ1# m"

drin steht, sondern nur die Höhe als normaler Text (z.B. "0.05"), ist es kein Beschriftungsbild, welches sich aktualisieren kann.

Anhänge (2)

Typ: image/png
53-mal heruntergeladen
Größe: 70,98 KiB
Typ: image/png
38-mal heruntergeladen
Größe: 126,86 KiB

Vielen Dank für die Antwort.
Ich habe mich wohl etwas undeutlich ausgedrückt.

Die Beschriftungen aktualisieren sich bei den mit Python erstellten Symbolpunkten ganz normal.
Kopieren, Text anpassen... funktioniert auch. Als Text habe ich die Formel "%D3%FA4.3%FE#KZ1#" verwendet.

Mein Problem ist, dass beim Kopieren mittels Copy&Paste die Verkettung aufgelöst wird.

Ist der Symbolpunkt INNERHALB eines PythonParts (Makros), oder wird dieser (mit dem Label) in Allplan selbst erzeugt?

Im ersteren Fall ist es normal, dass die Verbindung "kaputt" geht.

Im 2. Fall sollte sich der Symbolpunkt eigentlich genauso verhalten, wie ein händisch erstellter Geländepunkt. Ggf. könnte man mit einem XML-Export (siehe symbolpoint.label.png) diese beiden Symbol-Punkte vergleichen. Wenn das XML gleich aussieht, verhalten sich die Punkte auch gleich!

Also evtl. mal das Teilbild mit einem solchen in Python erstellten Punkt hier hochladen, zum analysieren...

Anbei der XML-Export:

Neben der eigentlichen Beschriftung für die Höhe (<noi:BASIS_TEXT>) ist dem Symbolpunkt noch eine zweite Beschriftung (<noi:BASIS_VARIABLE_LABEL>) untergeordnet. Diese und die "gleiche" Beschriftung welche frei der <noi:MODEL_SECTION> zugeordnet ist, sind in Allplan nicht sichtbar.

Ein Re-Import der XML-Datei funktioniert erst, wenn die beiden <noi:BASIS_VARIABLE_LABEL>-Tags aus ihr entfernt werden.
<noi:BASIS_VARIABLE_LABEL> wird wohl nur bei der Beschriftung von Makros/Elementen gebraucht. Jedoch nicht bei Symbolpunkten.

Anhänge (2)

Typ: image/png
48-mal heruntergeladen
Größe: 435,36 KiB
Typ: text/xml
694-mal heruntergeladen
Größe: 17,91 KiB

noi:BASIS_VARIABLE_LABEL braucht man eigentlich nur, wenn:
-mehrere Texte vorhanden sind
-andere grafische Elemente, wie Linien oder Füllflächen im VTB sein sollen.
-das VTB aus mehreren Folien bestehen soll

Jetzt muss Du nur noch herausfinden, wie man das in Python "wegbekommt"...