Support Forum

[Frage] active_elements = False im MultiElementSelctInteractor Funktion?

Schlagworte:
  • Python
  • Passives
  • Teilbild
  • MultiSelectInteractor

Hallo zusammen,

ich habe bei einem MultiElementSelectInteractor das Argument active_elements = False gesetzt.
Dennoch funktioniert es nicht, wenn die Elemente auf einem passiven Teilbild sind.

Ich kann zwar über die Elemente fahren, und diese werden in meiner Allplan Selektionfarbe markiert, aber ich kann Sie nicht anklicken und damit das ScriptObject starten sowohl auch nicht nativer Allplan Flächenseleketion auswählen. Muss noch etwas weiteres beachtet werden, um die Elementen auf einem passiven Teilbild zu selektionieren?

Gruss Sebastian

Hallo Sebastian,

ja, das Verhalten ist wirklich komisch. Die Elemente werden gehighlighted, aber Selektion bringt kein Ergebnis. Ich befürchte, das ist ein Fehler im ALLPLAN selbst und du kannst nichts dafür.

Ich kann dir nur den Workaround mit der Selektierung von Einzelelementen vorschlagen. Oder du limitierst den auswahl nur auf aktive Elemente.

Grüße,
Bart

Elemente auf einem passiven Teilbild können NICHT in einer InputFunction selektiert werden!
(Selektion bedeutet Schreib/Lesezugriff!) Das Highlighting ist hier irreführend.
Es bedeutet "nur", dass das betreffende Element gelesen werden kann!

Mit einer DBQuery ist es hingegen schon möglich, Elemente von einem passiven Teilbild zu lesen.

In die Datenbank "Schreiben" dürfte man ein modifizieres Element hingegen nicht, wenn es auf einem passieven Teilbild liegt. Habe ich allerdings noch nicht probiert, ob das bei pDB->write() tatsächlich verhindert wird.

Wäre allerdings "sehr bedenklich", wenn das ginge.

Dann wäre die gesamte Teilbildaktivierung (passiv, aktiv, aktuell) hinfällig, und der Anwender könnte sich nicht mehr darauf verlassen, dass passive Teilbilder nicht verändert werden!

Hallo Nemo,

in meinem Falle sollen die Elemente nur gelesen werden und nicht bearbeitet werden. Ich weiss aber, dass gewisse PythonParts von Allto es ermöglichen, passive Elemente zu selektionieren und z.B. Geometrie abgreifen. Ob das aber durch die von dir erwähnte DBQuery passiert, weiss ich nicht.

Aber verstehe ich es jetzt richtig, dass in der InputFunktion immer Schreibrechte der Elemente vorhanden sein müssen, und das Argument active_elements dann hinfällig ist?

Gruss Sebastian

Wie genau es implementiert ist, kann ich Dir nicht sagen.

Ich habe es aus "Anwendersicht" beschrieben!
Und als Anwender würde ich es mir verbitten, wenn ein PythonPart oder Visual-Script
Elemente auf einem passiven Teilbild ändert!
Insofern ist es nicht hilfreich, in einem PythonPart Schreibzugriffe auf Elemente auf einem passiven Teilbild zu erlauben, oder gar zu implementieren!

Zitiert von: Nemo
Und als Anwender würde ich es mir verbitten, wenn ein PythonPart oder Visual-Script
Elemente auf einem passiven Teilbild ändert!

Hier war nicht die Rede von der Änderung der Elemente auf passiven Teilbilder.

Die im Python API exponierten Funktionen SelectElement und GetSelectedElement vom Allplan Interaction Framework sind in daer lage, elemente auf passiv geladenen Teilbilder zu erkennen und zu lesen. Es ist die Aufgabe vom Entwickler, diese Elemente nicht in solchen Operationen zu verwenden, die einen Schreibzugriff erfordern.

Was hier irreführend ist, dass die passiv geladenen Elementen beim Multiselection gehighlighted werden (als ob sie erkannt wurden), aber GetSelectedElements methode eine leere Liste liefert.

Zitiert von: Nemo
Mit einer DBQuery ist es hingegen schon möglich, Elemente von einem passiven Teilbild zu lesen.

Vollständigkeitshalber: Der Member DBQuery ist nicht Teil des hier diskutierten Interface.

Grüße,
Bart