2025-04-16 06:29 PM - bearbeitet 2025-04-16 06:30 PM
Entweder ist das ein Bug oder ich bin zu blöd oder beides! Also, ich möchte eine eigene Geschoßabhängigkeit in der Darstellung eines 3D-Objekts programmieren. Ich habe dazu auch mit PROJECT2{4} experimentiert - aber das führte zu keinem ordentlichen Ergebnis und die Berechnung dauert vieeeel zu lange (sind viele und komplexe Elemente, ergo Lamellen-Schrägfassade. An der Stelle Grüße an @Lukas Oelmueller, Du weißt um was es geht ;-))
Damit ich das selbst steuern kann, habe ich die folgenden Parameter:
MasterCount ist nur ein Zähler um zu sehen, wie oft das Masterskript durchlaufen wird.
SchnittUrsprung ist die Schnitthöhe im Ursprungsgeschoß des Objekts, dz die Schnitthöhe abhängig vom Geschoß, der Rest erklärt sich von selbst.
Wenn ich die Geschoßwerte nicht über "REQUEST ("STORY", "", geschossaktuell, geschossnameAktuell)" ermittle, sondern diese per Hand eingebe, funktioniert alles. Nur mit der REQUEST-Anweisung nicht. Total seltsam ...
Hier das Masterskript:
masterCount=masterCount+1
r3 = REQUEST ("STORY", "", geschossaktuell, geschossnameAktuell)
if INT(geschossaktuell)=INT(ursprungsgeschoss) then dz = schnittUrsprung
if INT(geschossaktuell)=INT(ursprungsgeschoss-1) then dz = schnittEinsDrunter
if INT(geschossaktuell)=INT(ursprungsgeschoss+1) then dz = schnittEinsDrueber
if geschossaktuell<>geschossvorher then geschossvorher=geschossaktuell
PARAMETERS dz=dz, geschossaktuell=geschossaktuell, geschossvorher=geschossvorher, masterCount=masterCount
print "MASTER ",masterCount,"\nUrsprungsgeschoss ",ursprungsgeschoss,"\nAktuelles Geschoss ",geschossaktuell,"\nSchnitthöhe dz ",dz,"\n"
2D-Skript
dummyvar = GLOB_CSTORY_ELEV
if INT(geschossaktuell)=INT(ursprungsgeschoss) then dz = schnittUrsprung
if INT(geschossaktuell)=INT(ursprungsgeschoss-1) then dz = schnittEinsDrunter
if INT(geschossaktuell)=INT(ursprungsgeschoss+1) then dz = schnittEinsDrueber
if geschossaktuell<>geschossvorher then geschossvorher=geschossaktuell
PARAMETERS dz=dz, geschossaktuell=geschossaktuell, geschossvorher=geschossvorher
print "2D","\nUrsprungsgeschoss ",ursprungsgeschoss,"\nAktuelles Geschoss ",geschossaktuell,"\nSchnitthöhe dz ",dz,"\n"
project2 3,270,2
3D-Skript (gekürzt)
if geschossaktuell<>geschossvorher then geschossvorher=geschossaktuell
PARAMETERS dz=dz, geschossaktuell=geschossaktuell, geschossvorher=geschossvorher
print "3D","\nUrsprungsgeschoss ",ursprungsgeschoss,"\nAktuelles Geschoss ",geschossaktuell,"\nSchnitthöhe dz ",dz,"\n"
addz dz !Schnittebene festlegen
cutplane
addz -dz
...
group "group_9970DA15_E72A_43C1_B0BF_4FD383B39801"
...
endgroup
placegroup ("group_9970DA15_E72A_43C1_B0BF_4FD383B39801")
killgroup ("group_9970DA15_E72A_43C1_B0BF_4FD383B39801")
cutend
Parameterskript
PARAMETERS dz=dz, geschossaktuell=geschossaktuell, geschossvorher=geschossvorher
print "PARAM","\nUrsprungsgeschoss ",ursprungsgeschoss,"\nAktuelles Geschoss ",geschossaktuell,"\nSchnitthöhe dz ",dz,"\n"
Hier noch ein Video das zeigt, welche Skripte durchlaufen werden und welches Ergebnis erreicht wird.
Gelöst! Gehe zu Lösung.
am 2025-04-16 09:05 PM
Hier jetzt die Lösung. Alles im 3D-Skript:
Diesen Teil ganz an den Anfang
cutplaneON=0
!Für project2 im 2D-Skript
if GLOB_CONTEXT=2 then
dH=GLOB_HSTORY_ELEV !Höhenlage Ursprungsgeschoß ab ProjektNull
abstandUrsprungsGeschoss=SYMB_POS_Z-GLOB_HSTORY_ELEV
dz=0
if GLOB_CH_STORY_DIST=0 then dz = schnittUrsprung
if GLOB_CH_STORY_DIST=-1 then dz = schnittEinsDrunter
if GLOB_CH_STORY_DIST=1 then dz = schnittEinsDrueber
if GLOB_CH_STORY_DIST<-1 then EXIT
if GLOB_CH_STORY_DIST<2 then
addz dz-abstandUrsprungsGeschoss
cutplaneON=1
cutplane
del 1
endif
endif
Und das ganz ans Ende
if (GLOB_CONTEXT=2) AND (cutplaneON=1) then
cutend
endif
am 2025-04-16 07:38 PM
Vergesst es, ich habs hinbekommen. Wie immer war es @Frank Beister , der mir geholfen hat. Und zwar mit diesem uralten Beitrag: https://community.graphisoft.com/t5/Programmierung/GDL-Objekt-Grundriss-Darstellung/td-p/426512
Diese Community ist schon geil ...
am 2025-04-16 09:05 PM
Hier jetzt die Lösung. Alles im 3D-Skript:
Diesen Teil ganz an den Anfang
cutplaneON=0
!Für project2 im 2D-Skript
if GLOB_CONTEXT=2 then
dH=GLOB_HSTORY_ELEV !Höhenlage Ursprungsgeschoß ab ProjektNull
abstandUrsprungsGeschoss=SYMB_POS_Z-GLOB_HSTORY_ELEV
dz=0
if GLOB_CH_STORY_DIST=0 then dz = schnittUrsprung
if GLOB_CH_STORY_DIST=-1 then dz = schnittEinsDrunter
if GLOB_CH_STORY_DIST=1 then dz = schnittEinsDrueber
if GLOB_CH_STORY_DIST<-1 then EXIT
if GLOB_CH_STORY_DIST<2 then
addz dz-abstandUrsprungsGeschoss
cutplaneON=1
cutplane
del 1
endif
endif
Und das ganz ans Ende
if (GLOB_CONTEXT=2) AND (cutplaneON=1) then
cutend
endif
am 2025-04-16 09:25 PM
Ich habe vor einigen Jahren ein einigermaßen nachvollziehbares Extrakt aus Graphisoft-Objekten erstellt, welches ein Objekt korrekt projiziert darstellt, mit Schnittebene, Aufsichtsprojektion und Untersicht. Das ist immer wieder nützlich bei meinen eigenen Projekten.
2025-04-17 07:33 AM - bearbeitet 2025-04-17 07:34 AM
Danke-Jochen. Das Teil hattest Du vor Jahren schon mal gezeigt, aber ich hatte es einfach vergessen. Derzeit stricke ich ja an diesem Teil herum: https://community.graphisoft.com/t5/Programmierung/Wandverkleidung-Goodie-Wanbd-Addon-GDL-nun-mit-Ro.... Da geht es für die 2D-Darstellung um die selben Dinge und ich bin mit den jüngeren Project2-Befehlen auch nicht zurande gekommen. Deshalb habe ich begonnen, den ursprünglichen alten Project2-Befehl und die höhergelegenen Dinge einfach mit 2D-Flächen und "DRAWINDEX 10" abzudecken. Geht auch ganz gut. Für das Teil brauche ich aber noch so einige Zeit..
Hab mir mal Deine alte Routine mit reingeholt, um damit rumzuspielen. Mal sehen, was dann schlussendlich "schneller aufbaut".
am 2025-04-17 09:04 AM
Irgenwie fehlt in diesem Forum ein ordentliches Entwickler-Board. Eine Stelle, an der man richtig nach Problemen und Code-Schnipsel suchen kann mit richtiger Datenbank und so.
Peinlich ist es, dass man im Beitragstext zwar Code darstellen lann, aber eben kein GDL-Basic.
Danke Jungs, ich werde mir Eure Lösungen mal ansehen. Ist ja bald Ostern...