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

Bibliotheken und Objekte
Archicad- und BIMcloud-Bibliotheken, deren Verwaltung und Migration, Objekte und andere Bibliotheksteile, etc.

GDL Objekt Fragment2 Modelldarstellung

jr__
Participant

Hallo zusammen

 

ich würde gerne ein Objekt (2D) erstellen, welches je nach Modelldarstellung oder frei wählbar (Komplett, Mittel, Einfach) dargestellt wird.

Im Objekt gibt es 3 Zeichnungen auf 3 Layern (Fragmenten?) verteilt.

Diese rufe ich einfach ab. Wie kann ich die Modelldarstellung einarbeiten? Sobald "Nach Modelldarstellung" im Objekt ausgewählt wird, muss die Darstellung von ausserhalb des Objektes abgerufen werden. Das Objekt sollte funktionieren wie das Waschbecken von Archicad (siehe Bild):

 

BeispielBeispiel

 

Ich habe dazu folgendes Video geschaut:

029 Archicad GDL Using Model View Options in Your Objects 

 

Nur es klappt irgendwie nicht... Mein 2D Skript sah bisher immer recht simple aus:

 
pen gs_cont_pen

IF abc="Komplett" THEN FRAGMENT2 1,2
IF abc="Mittel" THEN FRAGMENT2 2,2
IF abc="Einfach" THEN FRAGMENT2 3,2
 
Parameterskript:
 
values "abc" "Komplett","Mittel","Einfach"
 
Wie kann ich die Abfrage der Modelldarstellung einfach einarbeiten?
 
Beste Grüsse & danke für eure Mühen

 

Operating system used: Mac Intel-based

6 ANTWORTEN 6
Stefan L_
Mentor

Du musst die Modelldarstellung 'fragen', wie sie gerade eingestellt ist.

Das (DE)-Waschbecken ruft ein weiteres Macro auf, in dem das hier zu finden ist:

	if (iDetlevel2D = DETLEVEL_2D_MVO) then	! by MVO

		_reqDetlevel2D = 0
		_success = LIBRARYGLOBAL ("LibraryGlobals13", "iDetlevelMVO2D", _reqDetlevel2D)

		if (_success > 0) then
			_iDetlevel2D = _reqDetlevel2D
		else
			_iDetlevel2D = DETLEVEL_2D_DETAILED
		endif
...

Dabei ist 'LIBRARYGLOBAL ("LibraryGlobals13", "iDetlevelMVO2D", _reqDetlevel2D)' die entscheidende Abfrage.

'LibraryGlobals13' eine weitere GDL, nämlich die entsprechende Seite im Modelldarstellungsdialog.

Darin gibt es einen 'iDetlevel...'-Parameter; das kleine i vorne sagt, dass es sich (sehr wahrscheinlich :)) um eine Ganzzahl handelt.

Der wird gelesen und dann in einem eigenen Parameter '_reqDetlevel2D' gespeichert.

 

Wenn Du den Datentyp Deines "abc"-Parameters auf Ganzzahl umstellst und in der obigen Abfrage statt '_req...' einsetzt, und dann noch diese Liste (Achtung; DE-Waschbecken!) entschlüsselst, kommst du - glaube ich -  weiter:

! const values for iDetlevel2D:
DETLEVEL_2D_MVO			= 1
DETLEVEL_2D_SCSENS		= 2
DETLEVEL_2D_DETAILED	= 3
DETLEVEL_2D_SIMPLE		= 4
DETLEVEL_2D_DRAFT		= 5
DETLEVEL_2D_SYMBOLIC	= 6

 

--
Stefan
AC ...-27, WIN10

Lieber Stefan

 

erst einmal vielen Dank für deine ausführliche Antwort. Ich konnte den Datentyp des Parameters auf Ganzzahl umstellen. Im Parameterskript

habe ich die Werte wie folgt hinterlegt:

 

values{2} "iDetlevel2D" 1, "MVO", 2, "SCSENS", 3, "DETAILED", 4, "SIMPLE", 5, "DRAFT"
 
Das hat auch gut funktioniert und im Dropdownmenü erscheinen die Optionen.
 
Das 2D Skript sieht wie folgt aus:
 
pen gs_cont_pen

IF iDetlevel2D = 3 THEN FRAGMENT2 1,2 !DETAILED
IF iDetlevel2D = 4 THEN FRAGMENT2 2,2 !SIMPLE
IF iDetlevel2D = 5 THEN FRAGMENT2 3,2 !DRAFT
 
 

 

	if (iDetlevel2D = DETLEVEL_2D_MVO) then	! by MVO

		_reqDetlevel2D = 0
		_success = LIBRARYGLOBAL ("LibraryGlobals13", "iDetlevelMVO2D", _reqDetlevel2D)

		if (_success > 0) then
			_iDetlevel2D = _reqDetlevel2D
		else
			_iDetlevel2D = DETLEVEL_2D_DETAILED
		endif
...

 

Dieses Skript führt in meinem 2D-Skript zu einem Fehler und das Objekt wird als schwarzer Punkt (fehlendes Objekt) im Grundriss angezeigt

 

 

! const values for iDetlevel2D:
DETLEVEL_2D_MVO			= 1
DETLEVEL_2D_SCSENS		= 2
DETLEVEL_2D_DETAILED	= 3
DETLEVEL_2D_SIMPLE		= 4
DETLEVEL_2D_DRAFT		= 5
DETLEVEL_2D_SYMBOLIC	= 6

 

Ich weiss nicht genau was dieses Skript macht? Ich habe gesehen, dass es im Objekt "Handwaschbecken" im Masterskript so geschrieben steht. Die Parameter werden aber im Parameterskript definiert oder verstehe ich etwas falsch?

 

Wie ich die Modelldarstellung und im besten Fall auch noch den Massstab (massstabsabhängig) einbaue, ist mir leider trotz deiner Mühen noch nicht ganz klar.

 

Nach meinem Verständnis müsste es (in deutsch) so funktionieren:

 

Sobald ich unter "2D-Detaillierungsgrad" "nach Modelldarstellung" wähle, fragt das Objekt in der Modelldarstellung den Detaillierungsgrad der Objekte ab. Als Antwort kommt eine 3 (komplett), 4 (mittel) oder 5 (einfach) zurück und im 2D Skript wird diese Zahl für den Fragment2 Befehl eingesetzt.

 

Beste Grüsse & danke für deine Hilfe


 

 

Hei, mal rückwärts:

Dein Deutsch-Verständnis schein korrekt, ergänzend noch: Wenn die Abfrage fehlschlägt, wird 'DETLEVEL_2D_DETAILED' genutzt.

Das 'const values for iDetlevel2D:'-Skript macht nichts anderes, als Zeichenfolgen in Ganzzahlen zu übersetzen, das ist schneller.

 

Fehler - bekommst Du denn eine Meldung? Was passiert, wenn Du auf 'Script prüfen' klickst?

Damit Deine ganze Chose ans Laufen kommt, müssen ja erstmal beide Teile für sich funktionieren, dann kann man die beiden verheiraten.

- die Darstellung, gesteuert über Deine Auswahlliste

- die Abfrage der Modelldarstellung

 

Bei ersterem warst Du - glaube ich - ja schon fertig. Letzteres kannst Du z.B. so prüfen:

- im Masterscript direkt hinter die LIBRARYGLOBAL-Abfrage text2 0, 0, _reqDetlevel2D

- alles dahinter ggf. auskommentieren und speichern

- in der Modelldarstellung hin- und herschalten

Dann sollte eine 2, 3 oder 4 auftauchen.

--
Stefan
AC ...-27, WIN10

Hallo Stefan

Vielen Dank für deine Antwort. Kannst du mir angeben, welcher Code in welches Skript gehört?

Ich verliere da leider den Überblick. Das Objekt sieht wie folgt aus:

Bildschirmfoto 2024-10-31 um 15.23.13.png

Bildschirmfoto 2024-10-31 um 15.22.14.png

Bildschirmfoto 2024-10-31 um 15.22.30.png

Bildschirmfoto 2024-10-31 um 15.22.42.png

 

Die Abfrage der Modelldarstellung führt dazu, dass kein Objekt mehr angezeigt wird.

Ich danke dir für deine Hilfe.

Beste Grüsse

OT: Stelle statt Screenshots lieber CODE ein. Den können wir kopieren, korrigieren und zurück posten. Fürs nächste mal.

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

Uähh... Montag morgen...

 

Die Fehlermeldung im Master solltest Du selbst enschlüsseln können.

Die Fehlermeldung im 2D-Script ist natürlich bescheuert, 'Zeile 0' scheint der verzweifelte Versuch von Archicad zu sein, auf etwas vor Beginn des 2D-Scripts hinzuweisen... 🤣

 

Mal so aus der Hüfte...

Im Master:

- alle Auskommentierungen wieder einkommentieren

- die Kontroll-Textausgabe in Zeile 16 schieben, also hinter die LIBRARYGLOBAL-Abfrage

 

Im 2D-Script:

- Unterstriche vor 'iDetLevel2D' setzen, also zu '_iDetLevel2D' ändern

 

Was dann m.E. noch fehlt ist der Teil "Anwenderwunsch: NICHT nach MVO"...

--
Stefan
AC ...-27, WIN10

Setup info provided by author

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