abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
Programmierung
Alles über Programmierung in GDL und Python
GELÖST!

3D GDL Objekt, Fangpunkte hinzufügen

zws
Participant

Ich habe aus Wänden, Unterzügen und Morph Elektroschalter gezeichnet und diese als GDL- Objekt gespeichert. Damit ich in den Ansichten nun die Achsen der Elektroapparate vermassen kann muss ich einen Fangpunkt im Zentrum vom Apparat haben. Im Moment sind die Fangpunkte nur an den Ecken. Frage: Wie muss ich das 3D-Script ergänzen, damit im Zentrum ein Fangpunkt ist.

Ich bin absoluter Anfänger, wenn es um die GDL-Programmiersprache geht. Das sind meine ersten 3D GDL Objekte. Deshalb bitte bei Antworten beachten, dass kaum Kenntnis vorhanden ist. Besten Dank!

 


Bildschirmfoto 2025-05-01 um 17.17.39.pngBildschirmfoto 2025-05-01 um 17.16.26.png
1 AKZEPTIERTE LÖSUNG

Akzeptierte Lösungen
Lösung
Jochen Suehlo
Moderator

Die Syntax für einen fixen Hotspot lautet: HOTSPOT x, y, z(, hotID)
Die Hotspot-ID sollte man immer verwenden, wenn man etwas an den Fangpunkten bemaßen möchte.
Also z.B.

hotID = 1
HOTPSPOT 0.05,  - 0.04, 0.05, hotID : hotID = hotID + 1

HOTPSPOT 0.05, - 0.04, 0.10, hotID : hotID = hotID + 1

HOTPSPOT 0.05, - 0.04, 0.15, hotID : hotID = hotID + 1
x, y, z, sind die Koordinaten der Hotspots (von mir angenommen) bezogen auf den Objektursprung, daher schreibe diese am besten ganz oben ins 3D-Script, damit Du nicht in einer Koordinatentransformation (ADD-Befehle) landest.



Jochen Suehlo . AC12-28 . MAC OSX 14.4 . WIN11
GDL object creation: b-prisma.de

Lösung in ursprünglichem Beitrag anzeigen

7 ANTWORTEN 7
Lösung
Jochen Suehlo
Moderator

Die Syntax für einen fixen Hotspot lautet: HOTSPOT x, y, z(, hotID)
Die Hotspot-ID sollte man immer verwenden, wenn man etwas an den Fangpunkten bemaßen möchte.
Also z.B.

hotID = 1
HOTPSPOT 0.05,  - 0.04, 0.05, hotID : hotID = hotID + 1

HOTPSPOT 0.05, - 0.04, 0.10, hotID : hotID = hotID + 1

HOTPSPOT 0.05, - 0.04, 0.15, hotID : hotID = hotID + 1
x, y, z, sind die Koordinaten der Hotspots (von mir angenommen) bezogen auf den Objektursprung, daher schreibe diese am besten ganz oben ins 3D-Script, damit Du nicht in einer Koordinatentransformation (ADD-Befehle) landest.



Jochen Suehlo . AC12-28 . MAC OSX 14.4 . WIN11
GDL object creation: b-prisma.de
runxel
Hero

Hi zws, willkommen im Forum!

Der Befehl für einen Hotspot lautet "hotspot xx, yy, zz, ID" – also überschaubar in der Parametrisierung: Das sind die Koordinaten plus ein eindeutiger numerischer Identifier.

Problem: Sobald man anfängt sich die Hotspots selber zu skripten, fliegen die automatisch gesetzten wieder raus; du hättest dann nur noch den gerade eingefügten. Daher musst du, sofern du die brauchst, die an den Ecken auch wieder skripten.

Wenn man Elemente so speichert, wie du, sollten eigentlich die Abmessungen der "Bounding Box" immer richtig gesetzt werden. Damit müsste es einfach sein, sich die Hotspots noch zu programmieren:

hotspot 0, B, 0, 1
hotspot A, B, 0, 2
hotspot 0, B, ZZYZX, 3
hotspot A, B, ZZYZX, 4
hotspot A/2, B, ZZYZX/2, 5

 

Geht jetzt davon aus, dass das Objekt parallel zur X-Achse gezeichnet wurde und mit den Schaltern in Richtung -Y.

Damit das auch so klappt, musst du diese Zeilen im 3D-Skript nah am Anfang zwischen den Zeilen, die mit "mul" beginnen und denen die mit "add" beginnen reinsetzen.

 

Happy coding!

Lucas Becker | AC 27 on Mac | Graphisoft Insider Panelist | Akroter.io – high-end GDL objects | Author of Runxel's Archicad Wiki | Editor at SelfGDL | Developer of the GDL plugin for Sublime Text

My List of AC shortcomings & bugs | I Will Piledrive You If You Mention AI Again |

POSIWID – The Purpose Of a System Is What It Does /// «Furthermore, I consider that Carth... yearly releases must be destroyed»

Herzlchen Dank an Jochen Suehlo und runxel für eure sehr rasche Hilfe.

Habe die Fixpunkte mit eurer Hilfe nun da wo ich sie haben will!

Merci!

zws
Participant

Nun habe ich festgestellt, dass im 3D die Fangpunkte nicht auf dem Objekt zu liegen kommen, sondern etwas davon entfernt sind. Wie kann ich das korrigieren?

Ich habe zwei Bildschirmfotos angehängt, eines vom 3D-Script und eines vom 3D wo ersichtlich ist, dass die Fangpunkte nicht auf dem Objekt sind.

Danke im Voraus für eure Hilfe.


Bildschirmfoto 2025-05-02 um 09.04.25.pngBildschirmfoto 2025-05-02 um 09.03.40.png

Howdy zws,

Schreibe in die ERSTE ZEILE Deines 3D-Scriptes:

SPHERE 0.1

Die Mitte der Kugel ist Dein ABSOLUTER Bojekt-NULLPUNKT

 

Nun schreib ene Zeile VOR Deinem 1. eigenen HoSpo

SPHERE 0.1

Das ist der AKTUELLE Nullpunkt an dieser Stelle des 3D-Scriptes

 

Liegen beide Kugeln aufeinander, siehst Du KEINE Kugel.

(Linie löscht linie aus)

 

Mach Dir Schnitte und miss die Abstände.

Nun GDL-Handbuch lesen unter den Schlagworten:

ADD, ADDx, ADDy, ADDz, ROT, MUL

(MUL ist etwas tricky, aber flippig wenn man es mal braucht)

 

Achja, DEL ist SUPERWICHTTIG und

DEL TOP streiche bitte gleich aus Deinem Kopf!

 

Du kannst die erforderlichen DELs mitzählen, indem Du z.B.

cnt = 0

ADD 0.5,0.5.0,5 : cnt = cnt+1

   ADDx 1.11 : cnt = cnt+1

            SPHERE 0.222

DEL cnt

 

Ich mache das meist NICHT so, da es Rechenleistung frißt.

Ich mache meist:

ADD 0.5,0.5.0,5

    ADDx 1.11

            SPHERE 0.222

DEL 2

 

Es geht nat. auch:

ADD 0.5,0.5.0,5

    ADDx 1.11

            SPHERE 0.222

  DEL 1

            SPHERE 0.333

DEL 1

 

Es werden die DELs immer von "innen" nach "außen" zurückgesetzt.

 

Gruß Mario

 

 

Danke für die Rückmeldung.

Das Übersteigt nun meine Fähigkeiten definitiv. Es scheitert schon daran, dass die Kugel nicht weg ist (siehe Bildschirmfoto). Die Andere Frage ist, wo muss ich die Zeilen einfügen damit sich die Fangpunkte auf die richtige Ebene bewegen?


Bildschirmfoto 2025-05-02 um 12.04.04.pngBildschirmfoto 2025-05-02 um 12.10.13.png
Ma_SchtAC27
Enthusiast

Hallo zws,

schau Dir Deinen SCREEN-SHOT an!

In Zeile 23 bis 26 macht das automatisch erstellte Script die entsprechenden Bewegungen im 3D-Raum.

Füge mal Dein Script danach ein!

Ein bisschen probieren und experimentieren musst Du schon.

Ich werde es Dir nicht scripten.

Nimm mal SPHERE 0.0001, sodass Du es einfacher erkennst wo der Mittelpunkt gerade im Raum ist! 

Verschiebe / kopiere die SPHERE-Zeile an verschiedene Stellen in Deinem Script.

Ändere den Durchmesser und spiele ein bisschen rum.

Achja, GDL arbeitet IMMER in METER.