abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 

Wir schätzen Ihren Input!
Bitte nehmen Sie an der Umfrage zu Archicad 28 Startbildschirm und Lerninhalte/Schnell-Tutorials teil

Programmierung
Alles über Programmierung in GDL und Python

Etikett für BD und DD

Soxis
Participant

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

 

AC27, PC-Win10, ThinkPad, Intel i7, Win-I7+Nvidia
3 ANTWORTEN 3
Frank Beister
Moderator

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

 

bim author since 1994 | bim manager since 2018 | author of selfGDL.de | openGDL | skewed archicad user hall of fame | author of bim-all-doors.gsm

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

AC27, PC-Win10, ThinkPad, Intel i7, Win-I7+Nvidia

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.)

bim author since 1994 | bim manager since 2018 | author of selfGDL.de | openGDL | skewed archicad user hall of fame | author of bim-all-doors.gsm

Setup info provided by author