Support Forum

Gleiche Smartparts austauschen - Woran wird erkannt was gleich ist? [Gelöst]


Hallo,

und zwar folgende Frage in die Runde, woran erkennt Allplan welche Smartparts gleich sind, werden die Variabelen des Smartparts überprüft? Wenn ja, lässt sich dies irgendwie umgehen, sodass ich quasi auch variabelen im Smartpart nutzen kann, welche nicht verglichen werden?

Grüße Paul

Lösung anzeigen Lösung verbergen

Hallo,

bei der Untersuchung, ob 2 SmartParts gleich sind, gilt es 2 Fälle zu betrachten.
1. Beziehen sich die beiden SmartParts auf dieselbe Makro-Defintion?
Das ist nach dem Kopieren eine SmartPArts mit Allplan-Befehl "Kopieren" der Fall!
Dann sind sie immer gleich!
2. Ist die im SmartPart erzeugte Geometrie gleich?
Da man aus Performance-Gründen nicht alle geometrische Elemente vergleichen kann, macht man das statt dessen über die Parameter, mit denen ja die Geometrie erzeugt wird. Dabei geht man davon aus, dass bei gleichem Script gleiche Eingangsparameter dieselbe Geometrie erzeugen (müssten).
Also wird ein Hash-Wert über die die Geometrie beeinflussenden Parameterwerte berechnet, und dieser verglichen.
Welche Parameter beeinflussen nun die Geoemtrie? Zunächst mal wird standardmäßig angenommen, dass alle Parameter für die Geometrieerzeugung relevant sind.
Man kann allerdings auch Parameter von der Hash-Wert-Berechnung ausnehmen (s.geo_parameter.png), indem man in der letzten Spalte durch Klick auf "+" ein "-" draus macht! Aber Vorsicht:
Damit kann man dem Vergleichsalgorithmus auch ein "U" für ein "O" vormachen, wenn der Parameter doch die Darstellung des SmartParts beeinflusst! Sprich: Man muss sich also sicher sein, dass der mit "-" ausgenommene Parameter in keinster Weise zur Geometrie-Erzeugung beiträgt, auch nicht indirekt!

Anhänge (1)

Typ: image/png
82-mal heruntergeladen
Größe: 58,82 KiB

Hallo,

bei der Untersuchung, ob 2 SmartParts gleich sind, gilt es 2 Fälle zu betrachten.
1. Beziehen sich die beiden SmartParts auf dieselbe Makro-Defintion?
Das ist nach dem Kopieren eine SmartPArts mit Allplan-Befehl "Kopieren" der Fall!
Dann sind sie immer gleich!
2. Ist die im SmartPart erzeugte Geometrie gleich?
Da man aus Performance-Gründen nicht alle geometrische Elemente vergleichen kann, macht man das statt dessen über die Parameter, mit denen ja die Geometrie erzeugt wird. Dabei geht man davon aus, dass bei gleichem Script gleiche Eingangsparameter dieselbe Geometrie erzeugen (müssten).
Also wird ein Hash-Wert über die die Geometrie beeinflussenden Parameterwerte berechnet, und dieser verglichen.
Welche Parameter beeinflussen nun die Geoemtrie? Zunächst mal wird standardmäßig angenommen, dass alle Parameter für die Geometrieerzeugung relevant sind.
Man kann allerdings auch Parameter von der Hash-Wert-Berechnung ausnehmen (s.geo_parameter.png), indem man in der letzten Spalte durch Klick auf "+" ein "-" draus macht! Aber Vorsicht:
Damit kann man dem Vergleichsalgorithmus auch ein "U" für ein "O" vormachen, wenn der Parameter doch die Darstellung des SmartParts beeinflusst! Sprich: Man muss sich also sicher sein, dass der mit "-" ausgenommene Parameter in keinster Weise zur Geometrie-Erzeugung beiträgt, auch nicht indirekt!

Anhänge (1)

Typ: image/png
82-mal heruntergeladen
Größe: 58,82 KiB

Moin, besten Dank für die schnelle Antwort, nun habe ich aber das Problem das wenn er sie dann als gleich erkennt, auch die Prameter überschreibt, welche nicht verglichen werden sollen, lässt sich das auch irgenwie einstellen das diese trotz aktualisieren unverändert bleiben sollen?

PS: Was bewirkt eigentlich die Zeile daneben, also "S" ("Speichern")?

Gruß Paul

Ich schrieb doch:

Aber Vorsicht: Damit kann man dem Vergleichsalgorithmus auch ein "U" für ein "O" vormachen, wenn der Parameter doch die Darstellung des SmartParts beeinflusst!

Was passiert, wenn der Vergleichsalgorithmus zum Ergebnis kommt: "Beide SmartParts sind gleich"?
Ja dann wird das gemacht, was auch beim Kopieren passiert:
Die beiden SmartPart-Makros "teilen" sich eine Makro-Definition und damit alles, was das SmartPart ausmacht: Parameter, Scripte, Ressourcen usw.
Wenn das nicht gewollt ist, dann muss man im Gegenteil dafür sorgen, dass die SmartParts nie gleich sind!
Dafür git es hier im Forum auch Beispiele, wie man das anstellen kann.

Ein "gleich bis auf folgende Unterschiede" gibt es leider nicht! Entweder sind die Dinger gleich, oder nicht gleich, mit allen Konsequenzen, die das hat.
Man kann nicht Parameter definieren, die nur für die eine oder die andere Verlegung gelten.

In Allplan ist ein SmartPart eine Makro-Verlegung, die ihre Darstellung (die Geometrie) aus der Makro-Definition bezieht! Das hat den Vorteil (vor allem für den Speicherverbrauch), dass sich mehrere Verlegungen eine Defintion (die verbraucht den Speicher!) "teilen" können. Parameter und Scripte sind aber Teil der Makro-Definition, und deshalb "unteilbar", gelten also für alle darauf verweisenden Verlegungen.

Also Antwort:
Ja, man kann umgehen, dass alle Parameter verglichen werden.
Und nein, das heisst nicht, dass man diese ausgeschlossenen Parameter unabhängig voneinander
in den SmartParts verwenden kann.

Wofür ist das dann gut?
Eigentlich nur für Parameter, die die GUI steuern. z.B kann man mit dem Parameter "CURR_PAGE"
den gerade angzeigten Karteireiter steuern. Da dieser Parameter keinen Einfluss auf die Geometrie hat,
würde man ihn vom Vergleich ausnehmen. Gleiches gilt für andere Status-Parameter, die nur die GUI betreffen.

Moin,

besten Dank für die Erläuterung, einen Tod muss man dann wohl sterben