Support Forum

[Frage] Unterstützung von SYMB_POS [Gelöst]

Schlagworte:
  • Smartparts
  • Allplan
  • 2019
  • SYMB_POS
  • Plugin-Download

Hallo.

Ich bin über den Befehl SYMB_POS gestolpert. Wenn ich das richtig verstanden habe, müsste hiermit die Lage eines Smartparts im Dokument verändert werden können. Der Befehl wird in Allplan 2019 nicht unterstützt aber ist es geplant irgendwann mal damit arbeiten zu können?

Bzw. gibt es eine Möglichkeit wie ich die aktuellen Koordinaten des Smartparts beim Öffnen einlesen kann? Dann könnt ich das, was ich erreichen will über einen Umweg einbauen..

Danke schon im Voraus!

Lösung anzeigen Lösung verbergen

Gerade weil die Gleichheitsprüfung die Information von SYMB_POS und SYMB_ROT "nicht sieht" bzw. ignoriert, bekommt man ja diese Probleme mit der Gleichheitsprüfung! Dadurch ist das Versprechen : Gleiche Paramter und gleiches Script erzeugen dasselbe Ergebnis nicht länger gültig! Der Hashwert über Script und Parameter würde "Gleichheit" anzeigen, obwohl die SmartParts unterschiedliche Geometrien haben!

Und der Layer der Makroverlegung wird nicht geprüft, weil es sich nicht um einen Parameter, sondern um eine "äußere Eigenschaft" des SmartPart-Containers handelt! Sehr wohl aber wird eine Parameter "lay", der zusammen mit dem Befehl LAYER lay im Script vorkommt, in die Gleichheitsprüfung einbezogen!

Die Parameter, über die der Hashwert gebildet wird, haben alle ein "+" in der Spalte "G".
Damit kann man Parameter mit "-" in der Spalte auch von der Gleichheitsprüfung ausschliessen, wenn diese nicht "in die Geometrie" bzw. in das "Aussehen" des SmartParts "eingehen". Z.b. wenn ein Parameter nur die aktuelle Seite in der Palette anzeigt ("curr_page"), braucht man den nicht für die "Gleichheitsprüfung"! Das wäre eher hinderlich!

Man könnte aber SYMB_POS und SYMB_ROT zu Standard-Parametern machen, wie REF_X und REF_Y.
Dann würden diese in die "Gleichheitsprüfung" eingeschlossen.
Das könnte allerdings nur Allplan machen.

Aber, mit Allplan 2021 kann jeder Folgendes als Workaround machen:
1. Attribute anlegen "Pos_X", "Pos_Y" und "Pos_Z" als Formel-Attribute mit Verweise auf die Attribute
Allplan_intern->X_Koordinate(163) Allplan_intern->Y_Koordinate(164) Allplan_intern->Z_Koordinate(165)
und diese dem SmartPart zuweisen

2. Im Script Parameter "pos_x", "pos_y" und "pos_z" anlegen, und diese an die Attribute "Pos_X", "Pos_Y" und "Pos_Z" verknüpfen.

3. Danach kann man im Script auf die Werte zugreifen.

Kleiner Haken an der Sache ist, dass das SmartPart die Verschiebung bzw. die Änderung des Attributes "nicht mitbekommt".
Daher muss man danach noch ein "SmartPart aktualisieren" machen.

Aber als Workaround mag es ausreichen!
Entdeckt die Möglichkeiten (der Formelattribute)!

Anhänge (1)

Typ: text/xml
1066-mal heruntergeladen
Größe: 7,72 KiB
11 - 13 (13)

Na dann ist doch alles gut!

Leider habe ich für die Rotation2d noch kein geeignetes Attribut gefunden, um das auch für SYMB_ROT in ähnlicher Weise zu machen.

Ich habe es versucht mit dem Attribut "Winkel"(@155@) und mit "Rotationswinkel "Z_Achse"(@1331@). Leider erfolglos.
Falls einer einen Tipp hat, in welchem Attribut der Winkel berechnet und abgelegt wird, dann bitte her damit...

Danke Nemo für den detaillierten Einblick in die SmartParts und auch für den Workaround!

Dieser beschreibt genau das, was ich mir vorgestellt habe. Leider arbeite ich noch mit Allplan Version 2019 aber es ist gut zu wissen, dass es zumindest mit der neuesten Version von Allplan funktioniert.

Ich muss wohl wieder mal nachfragen!

Der Trick funktioniert mit Allplan 2021 wirklich gut.
Gibt es jetzt noch einen Trick, wie ich den Projekt Offset im SmartPart noch berücksichtigen kann?

11 - 13 (13)