abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
BIM Coordinator Program (INT) April 22, 2024

Gehen Sie den nächsten Schritt Ihrer Karriere als zertifizierter Graphisoft BIM Koordinator!

Programmierung
Alles über Programmierung in GDL und Python

elementID_conflict - Zeilenumbruch einfügen

Ma_Scht
Enthusiast
Howdy,
bin am "pythonieren" im Embrionalstatus.

https://graphisoft.com/downloads/python

In dem Programm von GS zur Verfügung gestellten Programm "elementID_conflict.py" möchte ich einen Zeilenumbruch "\n" nach jedem Element einfügen. Ich versuchte es bereits an X Stellen, aber erfolglos.
Mann ist das kompliziert. :--)

Am vielversprechendsten schein mir Zeile 28 zu sein
propertyValuesToElementIdsDictionary[propertyValue].add(elementId)
Das "ADD" läd förmlich dazu ein, was dazuzuschreiben.

Kann mir bitte jemand helfen um "reinzukommen"

Danke & Gruß
2 ANTWORTEN 2
runxel
Legend
Hallo Mario

Der Code von GS ist ziemlich kondensiert. Das kann man so schreiben, aber ist nicht wirklich Anfängerfreundlich.

Um die GUIDs der Elemente auf einer eigenen Zeile zu haben, musst du die Funktion "GetConflictMessage" durch die hier ersetzen:


def GetConflictMessage(elementIDPropertyValue, elementIds):
elem_str = ("\n".join(map(str, sorted(elementIds, key=lambda id: id.guid))))
return f"{conflictMessageParts[0]} {len(elementIds)} {conflictMessageParts[1]} '{elementIDPropertyValue}' {conflictMessageParts[2]}" + elem_str


Pass auf die korrekte Indentation auf! Python mag es nicht, wenn man Leerzeichen und Tabulatoren mixt.

############################################

Was ich hier gemacht hab, ist den letzten Teil der Konfliktmessage aus dem return abzuschneiden und in eine eigene Variable zu überführen.
Gleich schon mal einiges an Übersichtlichkeit gewonnen!

"elem_str" bekommt folgendes assigned:
(Von innen nach außen)
Sortiere die elementIds, nach ID (nicht dass das aus meiner Sicht nötig wäre, aber GS hatte das im Beispiel so drin), dann mappe jedes Item der Liste (momentan noch vom Typ "ElementID") in einen String. (Eine genaue Erklärung von map.)
Das gibt uns einen Iterator zurück, sodass wir in dieser Liste endlich jedes Item (nun vom Typ String! Das ist wichtig, sonst klappt es nicht -> dafür war "map" wichtig) mit einem Umbruch joinen können.
Bisschen Vodoo, aber man kommt da rein 🙂
Lucas Becker | AC 27 on Mac | Author of Runxel's Archicad Wiki | Editor at SelfGDL | Developer of the GDL plugin for Sublime Text |
«Furthermore, I consider that Carth... yearly releases must be destroyed»
Ma_Scht
Enthusiast
Danke Shadow!
Ich hatte Urlaub, deshalb die späte Antwort. Wenn die erste "Nachurlaubshitze" vorbei ist, werde ich es versuchen.
Beste Grüße
Mario
Einschreiben und zertifiziert werden!

Keine Antwort gefunden?

Andere Beiträge
im Board ansehen

Zurück zum Board

Neueste Lösungen durchsuchen

Akzeptierte Lösungen zeigen

Eine neue Diskussion starten!

Neues Thema erstellen