2024-08-21 02:59 PM - bearbeitet 2024-08-21 03:12 PM
Hallo zusammen,
Das Thema der Etikettierung von Decken- und Bodendurchbrüche scheint ja schon länger zu existieren
Jetzt habe ich mich auch einmal daran versucht, bin aber recht neu in der Welt des GDL. Jetzt habe versucht ein Label bzw. Etikett zu erzeugen welches zwischen einem "DD" Deckendurchbruch und einem "BD" Bodendurchbruch unterscheidet. Mit dem untenstehenden Code funktioniert das bisher soweit auch, leider reicht meine Kenntnis/Weitsicht aber sicher nicht aus um Beurteilen zu können ob es mir im Projekt, bei diese Art von Abfrage, später mal irgendwo zu Problemen kommen könnte.
Vielleicht kann ja einer der "alten GDL-Hasen", welche ich hier seit langem eher Still verfolge, mal seine Meinung dazu abgeben.
Liebe Grüße,
Chris
eps = 0.0001
! Relative Position des Durchbruchs zum aktuellen Geschoss abfragen
_relPosition = GLOB_CH_STORY_DIST
! Relative Position vergleichen
if _relPosition = 0 then
Praefix = "BD"
endif
if _relPosition = -1 then
Praefix = "DD"
endif
! Durchbruchsetikett schreiben
DEFINE STYLE "Stil_1" "Arial", 4,5,0
STYLE Stil_1
TEXT2 0, 3.0, Praefix
Operating system used: Windows
am 2024-08-21 04:28 PM
Im Moment fällt mir dazu nur ein, dass _relPosition vielleicht nicht vom Typ Ganzzahl ist/deklariert wird und deine Abfragen bei der Skriptprüfung oder schlimmstenfalls in der Ausführung Probleme machen. GDL ist da ziemlich divenhaft und möchte sowas lieber so geprüft haben:
eps = 0.0001
! Betrachtungspunkt zu Einsetzgeschoss ermitteln
if _relPosition > -eps then
Praefix = "BD"
endif
if _relPosition <- eps then
Praefix = "DD"
endif
am 2024-08-23 10:36 AM
Hallo Frank,
schonmal herzlichen dank für deinen Input!
Im nächsten Schritt möchte ich nun die Wand von den Deckendurchbrüchen unterscheiden. Das mache ich wie folgt:
! Prüfen ob Durchbruch in Decke oder Wand
_compare = haskey(OPENING_CENTERHEIGHT_VALUES.toProjectZero)
! Variable definieren
_Praefix = ""
! 0 = Decke, 1 = Wand
if _compare = 0 then
! Relative Position vergleichen
if _relPosition > -eps then
_Praefix = "BD"
endif
if _relPosition < -eps then
_Praefix = "DD"
endif
else
_Praefix = ID_2 ! Eigenschaft "Öffnungsart" ausgeben
endif
Ab hier stellen sich mir jetzt mehrere Fragen:
1) Ist es möglich den Durchbruch jetzt noch zu prüfen ob er limitiert ist oder nicht? Also ist er eine Nische oder Durchgängig?
Ich habe dazu einen Listenparameter gefunden, bekomme es aber nicht hin Ihn auszulesen: "Limits" - Infinite, or limited on or both sides
2) Ein Zugriff auf die Öffnungsart, Höhenkote OK/RA, Öffnungstiefe und Gewerk vollziehe ich momentan über Property-IDs
Gibt es hier andere Variablen um über GDL darauf zuzugreifen?
3) Die langen Property-IDs sorgen wohl dafür, das mein eigentlich kurzes Label mit kurzen Text, eine sehr lange Box mit kurzem Text wird. Lässt sich das irgendwie umgehen oder definieren, dass die Box nur so lang ist wie der Inhalt der Property?
Liebe Grüße
Chris
2024-08-26 03:22 PM - bearbeitet 2024-08-26 03:47 PM
zu 1: Sieht nicht danach aus:
reference-guide/opening-parameters
Allerdings ist da ein Eintrag doppelt. Entweder c&p Fehler oder da sollte was stehen, was wir nicht wissen. (@GS: Vielleicht mal prüfen?)
Zu 2/3: Ich weiß nicht, was du wo auslesen willst. In Etiketten kannst du assoziierte Elemente "abfragen". Ist das Element ein GDL-Objekt (Tür, Fenster, e.a.) kannst du deren Parameter abfragen. Öffnungen sind das zumindest in dem Sinne nicht. Deren Archicad-Eigenschaften bekommst du, wie bei allen anderen Bauteilen auch, nur als Platzhalter, den tatsächlichen Inhalt kannst du, so wie bei Autotexten im GDL nicht verarbeiten. Auch nicht die Länge des Ersetzungstextes. Man kann sich das so vorstellen, dass das GDL-Skript am eine seines Durchlaufes an Archicad selbst nur einen Markup-Text (mit den Platzhalter-IDs) übergibt, den dann die 2D-Engine in den darszustellenden Text übersetzt. in dem Moment, wenn der Klartext abgerufen wird, ist GDL bereits "raus".
EDIT/KORREKTUR:
Auch bei Nicht-GDL-Bauteilen kannst du verarbeitbare Informationen verwenden. das sind, wie du schon bemerkt hast, die Globalen Variablen. Das sind Werte, die Archicad zu Beginn der Skriptabarbeitung an das Etikettenobjekt "durchreicht". Ist ein Wert aber nicht vorgesehen (siehe Link) geht es halt nicht.
Etiketten sind dahingehend etwas besonderes, weil sie mit anderen Elementen und deren Informationen durch die Assotiation in Verbindung stehen können. "Normale" GDL Objekte bekommen nur allgemeine Informationen des Projektkontextes wie Geschoß, Höhenlage e.a.
(Weitere Objekte mit Verbindung sind Marker, Türen und Fenster.)