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

vektor drehbar mit verschobenen mittelpunkt

dihes8010
Participant
an die helfer
danke mal, dass das immer so gut funktioniert
 
habe eine vektor mit beweglichen anfangspunkt
& beweglichen endpunkt
& drehbar
 
das funktioniert soweit gut
wenn allerdings a0 bewegt wird, geht der Mittelpunkt beim drehen mit a0 nicht mit
 
! linear links
    hotspot2 0,     0,  uID,    a0, 1+128   :uID=uID+1
    hotspot2 -0.1,  0,  uID,    a0, 3+128   :uID=uID+1
    hotspot2 a0,    0,  uID,    a0, 2       :uID=uID+1

! linear rechts
    hotspot2 0,     0,  uID,    a1, 1+128   :uID=uID+1
    hotspot2 -0.1,  0,  uID,    a1, 3+128   :uID=uID+1
    hotspot2 a1,    0,  uID,    a1, 2       :uID=uID+1

! drehbar bei a0
    hotspot2 a0,            0,              uID, wA , 6         :uID=uID+1  !Mittelpunkt
    hotspot2 l4,        0,              uID, wA , 4+128     :uID=uID+1  !Basispunkt
    hotspot2 l4*cos(wA),    l4*sin(wA), uID, wA , 5         :uID=uID+1  !Beweglicher Punkt
    rot2 wA :nTrs=nTrs+1    
9 ANTWORTEN 9
Ma_Scht
Advocate

Howdy dihes,

schau mal ins GDL-Handbuch. Bei Drehung muss du neben dem 4er, 5er und 6er noch den 7er-HoSpo-Typ setzen. Der kennzeichnet die Drehachse (sprich senkrecht zu der Fläche die durch 4, 5 und 6 aufgespannt wird. Dann klappts auch mit alpha = 0

 

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

 

Gruß

für 3d hast du recht; In der Frage ging es aber um 2D: "hotspot2"

 

Ich denke, das Problem liegt hier:    hotspot2 a0,            0,              uID, wA , 6         :uID=uID+1  !Mittelpunkt

der X Wert a0 taucht in den folgenden beiden Zeilen nicht mehr auf

ArchiCAD 25 / Windows 10
dihes8010
Participant

Danke zunächst

mit der 3D kam ich nicht klar

mit 2D hab ichs auch noch nicht ganz

 

hab mal das gsm hochgeladen

 

danke

dihes8010
Participant

hallo neuer versuch

hab das script reduziert auf einen vector

möchte, dass der drehpunkt immer der anfangspunkt bleibt

vlt. kann wer helfen

danke

___

!vector

nTrs = 0: uID = 1

l = -hotA+hotB
l3= l/3*2
pen penCol

!drehung
! add2 hotA, 0
    hotspot2 0,             0,              uID, hotW , 6       :uID=uID+1  !Mittelpunkt
    hotspot2 l3,            0,              uID, hotW , 4+128   :uID=uID+1  !Basispunkt
    hotspot2 l3*cos(hotW),  l3*sin(hotW),   uID, hotW , 5       :uID=uID+1  !Beweglicher Punkt
! del 1
    rot2 hotW      

!Anfangspunkt
    hotspot2 0,     0,  uID,    hotA,   1+128   :uID=uID+1  !base
    hotspot2 hotA,  0,  uID,    hotA,   2       :uID=uID+1  !move
    hotspot2 -1,    0,  uID,    hotA,   3       :uID=uID+1  !ref
 add2 hotA, 0

!Endpunkt
    hotspot2 0,     0,  uID,    hotB,   1+128   :uID=uID+1
    hotspot2 hotB,  0,  uID,    hotB,   2       :uID=uID+1
    hotspot2 -1,    0,  uID,    hotB,   3       :uID=uID+1

!Vektor
    lA=0
    line_type pTyp  
    line2 0, 0, hotB, 0
    line_type 1
    hotline2 0, 0, hotA, hotB
del 2
Frank Beister
Moderator

Um was willst du drehen? Um den Objektnullpunkt oder den Anfangspunkt des Vektors? Das ist entscheidend. Danach richtet sich, wo du die Dreh-Befehle einfügst und v.a. wann du das Koordinatensystem verschiebst bzw. drehst.

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

danke fürs helfen

 

um den anfangspunkt soll gedreht weden

 

der anfangspunkt & der endpunkt sind linear verschiebbar

 

das drehen um den nullpunkt ist kein problem

Mögliche Lesart:

Ein Punkt auf der X-Achse beweglich. Gedachte Gerade durch diesen Punkt und um diesen Punkt drehbar. Weiterer Punkt in beweglichem Abstand auf dieser Geraden. Vektor zwischen den Punkten.

 

Zweite Lesart:

Ein beliebig positionierter Punkt in X/Y. Der Rest wie zuvor.

 

Dritte Lesart:

Zwei beliebig positionierte Punkte in X/Y. Vektor dazwischen. Nur wozu ist dann die Rotation?

 

Bei allem vorausgesetzt, dass die Drehung des Gesamtobjektes nicht sinnvoll/möglich ist, weil noch andere Elemente erzeugt werden, die nicht gedreht werden sollen.

 

Ich frage "so blöd", weil klar sein muss, was eigentlich wie funktionieren soll, denn ggf. beeinflusst eine Drehung die Position der Punkte und das kannst du nicht mit HOTSPOT(2) lösen, sondern dafür müssen die Parameter synchronisiert werden. Schlimmstenfalls widersprechen sich die Einstellungen.

 

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
Frank Beister
Moderator
! Erste Lesart ungetestet so:

uID = 100
hotspot2 0, 0, uID
circle2 0,0,0.05

! linear links
 hotspot2 0, 0, uID, a0, 1+128 :uID=uID+1
 hotspot2 -0.1, 0, uID, a0, 3+128 :uID=uID+1
 hotspot2 a0, 0, uID, a0, 2 :uID=uID+1

add2 a0,0
vl = (a1-a0)
dp = vl / 2

! drehbar bei a0
 hotspot2 0, 0, uID, wA , 6 :uID=uID+1 !Mittelpunkt
 hotspot2 dp, 0, uID, wA , 4+128 :uID=uID+1 !Basispunkt
 rot2 wA
 hotspot2 dp, 0, uID, wA , 5 :uID=uID+1 !Beweglicher Punkt
 
! linear rechts
 hotspot2 -a0, 0, uID, a1, 1+128 :uID=uID+1
 hotspot2 -a0-0.1, 0, uID, a1, 3+128 :uID=uID+1
 hotspot2 vl, 0, uID, a1, 2 :uID=uID+1

line2 0,0,vl,0
del 2
oder einfacher:
! Erste Lesart ungetestet so:

uID = 100
hotspot2 0, 0, uID
circle2 0,0,0.05

! linear links
 hotspot2 0, 0, uID, a0, 1+128 :uID=uID+1
 hotspot2 -0.1, 0, uID, a0, 3+128 :uID=uID+1
 hotspot2 a0, 0, uID, a0, 2 :uID=uID+1

add2 a0,0
dp = a1 / 2

! drehbar bei a0
 hotspot2 0, 0, uID, wA , 6 :uID=uID+1 !Mittelpunkt
 hotspot2 dp, 0, uID, wA , 4+128 :uID=uID+1 !Basispunkt
 rot2 wA
 hotspot2 dp, 0, uID, wA , 5 :uID=uID+1 !Beweglicher Punkt
 
! linear rechts
 hotspot2 0, 0, uID, a1, 1+128 :uID=uID+1
 hotspot2 -0.1, 0, uID, a1, 3+128 :uID=uID+1
 hotspot2 a1, 0, uID, a1, 2 :uID=uID+1

line2 0,0,a1,0
del 2
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

Leseart 2

 

habe mir eine Aufmasswand für 2D gebaut.

Weil ich die Aufmasse auf einem Arbeitsblatt zeichne, kann ich die als Transparentpause dem Modell hinterlegen.

 

Meist ist alles im rechten Winkel und ich möchte damit vermeiden das der Punkt 2 frei beweiglich ist; also nur linear.

Jetzt ist natürlich zu wünschen, dass die 2D-Wand am Punkt 1 frei verschiebbar (x & y) ist, ohne das die wand sich dreht bzw. in der Länge ändert.

Im 2ten Schritt kann ich die Länge nur linear verändern; bzw bei Bedarf die Wand kontrolliert drehen.

 

hoffe das ausreichend nachvollziehbar beschrieben zu haben

 

Danke

 

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