abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
Programmierung
Alles über Programmierung in GDL und Python
GELÖST!

einer Objektauswahl automatisch verschiedene Etiketten zuweisen und positionieren (aus IFC-Objekten)

Kellermann
Participant

Hallo, 

vorweg ich bin Neu in ArchiCAD unterwegs und auch in der Python API, entschuldigt daher plumpe Fragen oder falsche Annahmen. 
Das Ziel ist, allen Einrichtungen (Objekten) in einem Plan automatisch Etiketten mit den Objektparametern zuzuweisen, je nach den individuellen Eigenschaften des jeweiligen Objektes. 

Genauer haben wir hier Regale, die aus mehreren Regalabschnitten bestehen (die Objekte).  So sollen alle Objekte (Regalabschnitte) eine Abschnittsnummer bekommen, aber nur Am Anfang des Regals soll die Regalnummer stehen. Und nur die Objekte mit dem Parameter Elektro = wahr, sollen das Elektrosymbol bekommen.  
Ich weiß, dass ArchiCAD mit 'suchen und aktivieren' eine gezielte Auswahl ermöglicht und das nach zuweisung des gewünschten Etikettes als Defaultetikett man mit "Ausgewählte Elemente etikettieren" diese auch damit schnell etikettieren kann. Favoriten Etikette mit der definierten Farbe, Format Größe etc. des Textes sind auch erstellt. 

Problem 1: Es gibt keine Automatisierung bei der Auswahl der Filterparameter und des Etikettes, sodass der User hier viele simple Aufgaben machen muss, die auch ein Makro (AUfzeichnung wie in Excell oder Photoshop) machen könnte.

 

Problem 2: das größere Problem, ist die Positionierung. Unsere Elemente stammen aus einem IFC-Export und scheinbar verwendet hier ArchiCAD die Boundingbox, welche global und damit an der Welt,X,Y,Z-Rotation ausgerichtet ist und damit die Texte und Symbole, insbesondere bei schrägen langen Regalen  teils sonst wo im Raum landen. Mit Morphs geht die Ausrichtung am Objekt besser, hat aber andere Nachteile, sodass wir diese nicht nutzen können, und Objekte nutzen müssen 


Die Frage ist, wie bekomme ich das am besten mit Python hin? 
1) Platzieren von einem als Favoritenetikett gespeichertes Etikett

2) Alternativ wie erstelle ich das Etikett mit den Texten und wie gebe ich da Farbe , Schriftgöße  (Stifteset vor)?

3) Wie bekomme ich hier eine Platzierung hin, die sich an der Geometrie bzw. der lokalen und nicht der globalen Boundingbox orientiert. Also zum Beispiel Ankerpunkt linke obere Ecke mit einem Offset von 5x5 mm / pixel, oder so. 

Ich würde mich sehr freuen, wenn ihr mir hier bei einzelnen Fragen oder allen weiterhelfen könnt. Danke im Voraus. 
Auch hilfreiche Seiten zu den jeweiligen Themn sind willkommen. 

 

 

Operating system used: Windows 10

1 AKZEPTIERTE LÖSUNG

Akzeptierte Lösungen
Lösung

In den Beispielscripten werden keine Etiketten erzeugt, sondern die Raum Nr. der Zonen bzw. Element ID der Stühle geändert.
Die Etiketten die das dann anzeigen sind aber schon in den zugehörigen Beispielplänen vorhanden.

Also ja, Eigenschaften (und ähnliches) ändern geht direkt mit der vorhanden Python API. Die Etiketten selber platzieren funktioniert nur mit Add-On.

Lösung in ursprünglichem Beitrag anzeigen

3 ANTWORTEN 3

Hi,

Spannendes Thema! Leider gibt's bei der Python API viele Einschränkungen. Unter anderem ist es damit nicht direkt möglich Elemente zu erzeugen/platzieren. Dazu braucht man die Hilfe von Add-Ons (C++ API). Mit einem Add-On könnte man in die Richtung direkt gehen, oder es gibt auch die Möglichkeit mithilfe eines Add-Ons mehr Befehle für die Python API zur Verfügung zu stellen. Das ist aber auch nicht ohne. Am weitesten fortgeschritten ist dabei das tapir-archicad-addon. Hab grad nachgeschaut, da gibt's leider noch nichts für Etiketten.

Also ohne Add-On Programmierung kommst du da nicht wirklich weit denke ich.

Hallo und vielen Dank für die Antwort, auch wenn sie ernüchternd ausfällt. 

In den Beispielscripten zur Nummerierung von Zonen, Stühlen etc. werden ja auch Etiketten erzeugt mit der Nummer, eben. Oder ist das was anderes?

Lösung

In den Beispielscripten werden keine Etiketten erzeugt, sondern die Raum Nr. der Zonen bzw. Element ID der Stühle geändert.
Die Etiketten die das dann anzeigen sind aber schon in den zugehörigen Beispielplänen vorhanden.

Also ja, Eigenschaften (und ähnliches) ändern geht direkt mit der vorhanden Python API. Die Etiketten selber platzieren funktioniert nur mit Add-On.

Setup info provided by author