abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
abbrechen
Suchergebnisse werden angezeigt für 
Stattdessen suchen nach 
Meintest du: 
BIM Coordinator Program (INT) April 22, 2024
Gehen Sie den nächsten Schritt Ihrer Karriere als zertifizierter Graphisoft BIM Koordinator!
Programmierung
Alles über Programmierung in GDL und Python

Hotspot für Drehung funktioniert nicht

snow
Ace
Hallo zusammen,

ich hab mir die Basis hierfür aus selfGDL kopiert…
… funktioniert aber nicht, wie erwartet... lässt sich nicht drehen… nach viel probieren kommt nun gar keine Pet-Palette mehr (im Schnitt)
rotx 90 
hotspot 0, 1, 0, 1, winkel, 6 ! Mittelpunkt
hotspot -3.02, 0, 0, 2, winkel, 4+128 ! Basis
hotspot 0, 0, 0, 3, winkel, 7 ! Referenz
rotz winkel
hotspot -3.02, 0, 0, 4, winkel, 5 ! Beweglich
(eine aufgestellte Shilouette… deswegen 'rotx 90' am Anfang…)

Verstehe nicht wirklich, warum offenbar 4 Hotspots erforderlich sind und nicht nur 2. (Wenn es nur in 3D-Skizze dazu gäbe...)
Könnte ich auch weniger Punkte definieren und dafür die Statuswerte mit '+' verbinden?

Kann mir jemand helfen?

edit… Einen Schritt weiter:
Es liegt offenbar am 3. Punkt. Gebe ich z.B. '1' für die z-Koordinate ein, lässt sich das Ding drehen... allerdings mit etwas seltsamen "Richtungen"





Das Koordinatensystem dreht sich im die y-Achse--- warum auch immer…
ARCHICAD for Future
______________________________________

archicad versions 8-27 | mac os 13 | win 10
15 ANTWORTEN 15
Anonymous
Nicht anwendbar
Probier mal dieses Script von Graphisoft:

unID = 1
r = 1
! --------------------------------------------------------------------------------
! Center
! --------------------------------------------------------------------------------
hotspot 0, 0, 0, unID, ang, 6 : unID = unID + 1
! --------------------------------------------------------------------------------
! Base
! --------------------------------------------------------------------------------
hotspot r, 0, 0, unID, ang, 4 : unID = unID + 1
! --------------------------------------------------------------------------------
! Moving
! --------------------------------------------------------------------------------
hotspot r * COS(ang), r * SIN(ang), 0, unID, ang, 5 : unID = unID + 1
! --------------------------------------------------------------------------------
! Reference
! --------------------------------------------------------------------------------
hotspot 0, 0, 1, unID, ang, 7 : unID = unID + 1


Wenn Du keine Winkelfunktionen verwendest, bewegt sich der Hotspot nicht auf einem Kreissegment.
runxel
Legend
Weil ich das Problem letztens auch hatte und das Referenzhandbuch mir nicht klar genug erschien, hab ich das versucht noch mal deutlicher bei SelfGDL zu formulieren.
Zitat:
Eine Änderung ergibt sich jedoch bei der Erstellung von Hotspots für Winkelparameter im 3D-Raum. Dafür ist nun ein weiterer, vierter Hotspot (j1=7) nötig. Dieser gibt quasi die Normalenrichtung der Ebene an, auf welcher der gedachte Kreisbogen für die grafische Winkeleingabe liegt. Daraus resultiert sich auch das Fehlen des Statuscodes 512, denn die Drehrichtung ergibt sich nun aus der Richtung des Vektors vom Mittel- zum Referenzpunkt. Damit die Hotspoterstellung gelingt, müssen die Vektoren der Basislinie und der Bewegungslinie zum Mittelpunkt stets senkrecht zum Vektor des Referenzpunkts stehen.


Dein gedachter Kreis, den du im Kopf im 3D Raum mit deinem Hotspot nachzeichnest, braucht einen Normalenvektor, der senkrecht zur der Drehebene steht = dieser Vektor bildet die Achse.

Edit: Jochen hat ein gutes Skript. Bisschen Mathe ist es dann doch.
Lucas Becker | AC 27 on Mac | Author of Runxel's Archicad Wiki | Editor at SelfGDL | Developer of the GDL plugin for Sublime Text |
«Furthermore, I consider that Carth... yearly releases must be destroyed»
snow
Ace
O. K. ich hatte den Eintrag zuvor auch schon mal gelesen... nur jetzt nicht mehr daran gedacht... es geht also darum, die Drehachse über 2 Koordinaten zu definieren.

Jetzt funktioniert das ganze so weit. 🙂
Ich hatte einen Koordinatenfehler für den Mittelpunkt drin (ich übersehe immer irgendwelche Zeichen…) ... deswegen war zuvor alles so komisch.

Allerdings scheint sich der Bassispunkt in Schnitten etc. in den Vordergrund zu drängen. Die Pet-Palette erscheint nicht.
Nur wenn man das Teil zuvor im 3D-Fenster dreht, lässt sich der Punkt im Schnitt wirklich anfassen.

Lässt sich da was ändern?
(Bevor ich ich mich dann weiter um Eingabe-Möglichkeiten in % und als Winkel kümmere…)
ARCHICAD for Future
______________________________________

archicad versions 8-27 | mac os 13 | win 10
snow
Ace
Das mit dem zunächst nicht bedienbaren Anfasspunkt liegt wohl nicht an der Position des Basispunkts...
… den kann ich ja seitlich versetzen… aber dadurch wird es auch nicht "besser". Was ist da nur los.

Hab mich aber jetzt um die Parameter-Sache gekümmert.
Neigung in % eingeben funktioniert... 😄 dachte aber, ich könnte es auch so handhaben, dass ich entweder Neigung oder Winkel eingeben kann…
… scheint aber ohne 'if'-funkton nicht zu klappen. sobald ich die zweite Zeile hinschreib' wird nur diese "beachtet".
PARAMETERS winkel = atn (neigung)
PARAMETERS neigung = tan (winkel)

@Jochen Suehlo
Danke auch für dieses Script. So weiß ich mal, was noch alles möglich ist... falls ich anderweitig nicht weiterkomme…
ARCHICAD for Future
______________________________________

archicad versions 8-27 | mac os 13 | win 10
Ma_Scht
Enthusiast
Ja, die dyn. HoSpos sind etwas kniffelig.
Spiele mit den Vorzeichen.
Du kannst ganze Abende damit verbringen. 🙂)

Kopiere den Text den JOCHEN SÜHLO ober einstellte!
Dann _LIN 0,0,0, 2,0,0

Probier es aus.
Die Linie steht für alles was Du mit dem HoSpo drehen willst.

Nimm das als VORLAGE und schiebe es Dir mit ADD und ROT in Deinem GDL an die Stelle wo Du es brauchst. die späteren DEL, am Ende nicht vergessen. Das kostet zwar etwas Rechenleistung, wenn Du es NICHT jedes Mal an Deine Situation anpasst, aber es ist dann schnell zusammen geschrieben.

Studiere das Ganze und spiele mit einzelnen VORZEICHEN in den Zeilen mal ein positives r, mal ein negatives. Muss man selbst verinnerlichen.

Du kannst auch den Drehwinkel an einem völlig anderen Teil im SCRIPT abfragen.
Er wird als PARAMETER ja gespeichert.
Gruß
snow
Ace
Also ich weiß ja nicht, ob das so gemeint war... aber abgesehen von der Schwierigkeit mit dem anfänglichen anpassen, lässt sich alle wunderbar drehen und der entsprechende Hotspot bleibt auch immer an der selben Stelle, bezogen aufs Objekt.



das mit dem Parameter-Skript ist ja wieder ein anderes Thema... da fehlen mir einfach wohl die Grundlagen...
ARCHICAD for Future
______________________________________

archicad versions 8-27 | mac os 13 | win 10
Ma_Scht
Enthusiast
Sieht doch gut aus.

Der dyn. HoSpo schreibt sich selbstständig in seinen Parameter der PARAMETER-LISTE.
In Deinem Fall muss der Parameter vom TYP WINKEL sein.
Ist klar, oder?
Im PARAMETER-SCRIPT braucht es KEINEN PARAMETER-BEFEHL.
snow
Ace
Damit der Hotspot funktioniert nicht.... hat damit ja nichts zu tun...
... aber für die "Komfortfunktionen", die ich gerne hätte:

Eingabe wahlweise von 'Neigung in %' oder als Grad-Zahl... und das ganze, ohne dass ich angeben muss, wo ich etwas reinschreiben will, sondern das einfach immer die letzte Eingabe gilt.
So etwas scheint ja grundsätzlich mit GDL möglich zu sein--- meine das so etwas bei allen möglichen Objekten vorkommt.

Und dann hab' ich immer noch das Problem, dass der Hotspot "tot" ist, sobald sich das Objekt in 0° Drehung befindet.
ARCHICAD for Future
______________________________________

archicad versions 8-27 | mac os 13 | win 10
Ma_Scht
Enthusiast
Hi Achmed,
versuch das mal!
Pungeliger kann ich es Dir NICHT aufschreiben.
Gruß Mario



!!! In der Parameter-Liste den Parameter "dreWi" als WINKEL definieren!


!!! 2D-_SCRIPT
PROJECT2 3,270,2


!!! 3D-SCHRIPT
unID = 1
iii = 1.5

!!!! KOORDINATEN-SYSTEM-ACHSEN !!!!
DEFINE STYLE "TXT" ARIAL, 100.00 , 5, 0
SET STYLE "TXT"
PEN 16 : LIN_ 0,0,0, iii,0,0 : ADDx iii : TEXT 0,0,"X" : DEL 1 !!! X-Achse
PEN 11 : LIN_ 0,0,0, 0,iii,0 : ADDy iii : TEXT 0,0,"Y" : DEL 1 !!! Y-Achse
PEN 13 : LIN_ 0,0,0, 0,0,iii : ADDz iii : TEXT 0,0,"Z" : DEL 1 !!! Z-Achse

!!!! DREHBEREICHE !!!!
radi = 1.000 !!! Länge des Radius

!!! Über das folgende ADD wird alles was danach kommt im Raum verschoben
ADD 0,0,0 !!! Hier spielen! Mal X-Wert ändern, mal Y-Wert, mal Z-Wert

!!! Über das folgende ROT wird alles was danach folgt im Raum so eingedreht wie es gebraucht wird
ROTx 90 !!! Hier spielen! Mal ROTy, mal ROTz, mal Vorzeichen ändern, mal Winkel ändern!

HOTSPOT 0, 0, 0, unID, dreWi, 6 : unID=unID+1 !!! MP
HOTSPOT radi, 0, 0, unID, dreWi, 4 + 1*128 : unID=unID+1 !!! BASIS
HOTSPOT radi * COS(dreWi), radi * SIN(dreWi), 0, unID, dreWi, 5 + 0*128 : unID=unID+1 !!! Beweglicher Pkt
HOTSPOT 0, 0, 1, unID, dreWi, 7 : unID=unID+1 !!! ReferenzPkt. falls dreWi = NULL

!!!! ANFANG von allem was über den einen HoSpo-Drehwinkel gedreht werden soll
PEN 16
LIN_ 0,0,0, radi,0,0
ARC radi, 0,dreWi
!!!! ENDE von allem was über den einen HoSpo-Drehwinkel gedreht werden soll

DEL 1 !!! Ende der ROT-Verdrehung
DEL 1 !!! Ende der ADD-Verschiebung

!!! Man kann auch ERST den ROT (Verdrehung) und dann den ADD (Verschiebung) machen
!!! Dann noch eine Prise MUL hinzugeben und ab dafür!
Einschreiben und zertifiziert werden!