coord-transf.2d elements3d elementsnon geo scriptsfunctionscontrol statem.attributesvariousaddons
simplepolygonstext elementsprojectionsediting commandsbinary
HOTARC2 HOTLINE2 HOTSPOT2
Name
HOTSPOT2
Syntax
HOTSPOT2x, y [, ID_number [, parametername_edit, typ [, parametername_display]]]
Aufklappen Range
x, Typ Real
y, Typ Real

Ab ArchiCAD® 6.5:
ID_number > 0, Typ Integer

Ab ArchiCAD® 8.x:
parametername_edit, Name eines numerischen Parameters (Länge/Winkel). Kein Text.
typ , Typ integer (*)

Ab ArchiCAD® 9:
parametername_display, Name eines numerischen Parameters. Kein Text.

(*) mit typ = j1 + j2+j3+j4:
j1=0: normaler Fangpunkt
j1=1: Linear beweglicher Punkt: Basispunkt
j1=2: Linear beweglicher Punkt: Beweglicher Punkt
j1=3: Linear beweglicher Punkt: Referenzpunkt (immer verborgen)
j1=4: Punkt für Winkelbogen: Basispunkt
j1=5: Punkt für Winkelbogen: Beweglicher Punkt
j1=6: Punkt für Winkelbogen: Mittel-/Drehpunkt des Kreisbogens (immer verborgen)

j2=0: Punkt ist sichtbar (wenn j1=3 oder j1=6 immer unsichtbar)
j2=128: Punkt ist unsichtbar

j3=0: Position des Punktes ist fest
j3=256: Punkt ist editierbar. (wenn j1=1 oder j1=4)

j4=0: Drehrichtung gegen den Uhrzeigersinn. (wenn j1=6)
j4=512: Drehrichtung im Uhrzeigersinn. (wenn j1=6)
Aufklappen Description
Erzeugt einen Fangpunkt an der Stelle (x/y) des Objektes. Dieser wird im Vorschaufenster des Objekteditors zwar als Kreuz angezeigt, ist im Plan platziert später aber unsichtbar. Um langes Suchen mit dem Cursor zu vermeiden sollten diese also in der Nähe von sichtbaren Elementen des Objektes liegen.

Enthält das 2D-Skript keinen HOTSPOT2-Befehl, werden automatisch an den Eckpunkten eines gedachten, alle 2D-Elemente einschließenden Rechtecks und dessen Mitte Fangpunkte ausgegeben. In den Detaileinstellungen jedes Objektes kann man diese 5 Punkte auch zusätzlich zu den skriptgesteuerten Fangpunkten erzwingen. Es empfiehlt sich aber das Setzen der Fangpunkte mit dem HOTSPOT2-Befehl zu steuern. Bis ArchiCAD 5 waren diese 5 Fangpunkte nicht optional, sondern wurden immer ausgegeben.

Auf die Fangpunkte eines Objektes kann vermaßt werden. Damit ArchiCAD bei mehreren und je nach Darstellung und Einstellung des Objektes evt. wechselnden Fangpunkten stets den korrekten assoziiert, darf sich die Reihenfolge der Erzeugung im Skript nicht ändern. Die Verwendung der Identifizierungsnummer (ID_number) hilft hier leider nicht.

Ab ArchiCAD 8 können die Fangpunkte zum graphischen Editieren von Objektparametern verwendet werden. Dabei gibt parametername_edit den Namen des Winkel- oder Längenparameters an, der mit dem Fangpunkt veränderbar sein soll, status gibt die Funktion des Fangpunktes innerhalb dieser "Editiergruppe" an, und parametername_display gibt an, welcher Parameter nebst Eingabefeld während des graphischen Editierens auf der PET-Palette erscheinen soll. Es sind auch einzelne Felder eines Arrays als veränderliche Parameter (z.B. x[4]) zulässig. Die beweglichen Fangpunkte werden dann auch nicht mehr mit runden, sondern mit rautenförmigen Markern dargestellt.
Näheres siehe Tipps und Tricks.
Aufklappen Example
Beispiel 1a:
Nehmen wir mal einen Parameter c als Längenparameter.

HOTSPOT2 0, 0, 01,c,1 !Basisfangpunkt
HOTSPOT2 0, c, 02,c,2 !beweglicher Fangpunkt
HOTSPOT2 0,-1, 03,c,3 !Referenzrichtung


Der bewegliche Vektor ist also von Punkt 01 zu Punkt 02 vertikal. Der bewegliche Fangpunkt (02) liegt an 0/c. Es ist sicherzustellen, dass im Moment der Erzeugung der Fangpunkte die Länge von Punkt 01 zu Punkt 02 (hier im Beispiel also von 0/0 nach 0/c) auch tatsächlich dem Wert entspricht, der in dem Parameter zu diesem Zeitpunkt abgelegt ist. Die Referenzrichtung ist von Punkt 01 zu Punkt 03 definiert. Dabei ist egal welchen Wert und welches Vorzeichen der Parameter gerade hat. Auch wenn der Parameter selbst ebenfalls negativ ist, muss der Referenzvektor in den negativen Bereich zeigen.

Beispiel 1b:
Will man den Basisfangpunkt unsichtbar machen, addiert man 128 zu dem Basistyp:

HOTSPOT2 0, 0, 01,c,1+128 !Basisfangpunkt
HOTSPOT2 0, c, 02,c,2 !beweglicher Fangpunkt
HOTSPOT2 0,-1, 03,c,3 !Referenzrichtung


Der Referenzfangpunkt ist immer unsichtbar.

Beispiel 1c:
Der Basispunkt muss nicht bei 0/0 liegen. Hier liegt er nun bei d/0, ist also um den Wert d verschoben zur Y-Achse:

HOTSPOT2 d, 0, 01,c,129 !Basisfangpunkt
HOTSPOT2 d, c, 02,c,2   !beweglicher Fangpunkt
HOTSPOT2 d,-1, 03,c,3   !Referenzrichtung


Siehe Abbildung 2


Beispiel 2a:
Nehmen wir noch einen weiteren Parameter d als Längenparameter. Nun aber in die andere Richtung (horizontal):

HOTSPOT2  0,0, 04,d,1 !Basisfangpunkt
HOTSPOT2  d,0, 05,d,2 !beweglicher Fangpunkt
HOTSPOT2 -1,0, 06,d,3 !Referenzrichtung


Beispiel 2b:
Nicht auf der X-Achse, sondern verschoben um den Wert c, liegt der Vektor nun auf der Höhe von c:

HOTSPOT2  0,c, 04,d,129 !Basisfangpunkt
HOTSPOT2  d,c, 05,d,2   !beweglicher Fangpunkt
HOTSPOT2 -1,c, 06,d,3   !Referenzrichtung


Durch diese Translation liegen nun die beweglichen Fangpunkte der Beispiele 1c und 2b aufeinander. Damit lassen sich mit einem Drag und drop beide Werte verändern. Siehe Abbildung 3.

Beispiel 3:
Definieren wir nun einen beweglichen Winkelparameter namens w:

r=1
hotspot2 0,0, 01,w,6 !Mittelpunkt
hotspot2 r,0, 02,w,4+128 !Basispunkt
hotspot2 r*cos(w),r*sin(w), 03,w,5 !Beweglicher Punkt


Der Drehpunkt liegt im Ursprung. Der Basispunkt auf der X-Achse liegt im Abstand r. Die Addition von 128 macht ihn wieder unsichtbar. Die Koordinaten des beweglichen Punktes, der auf der Kreislinie liegen muss, werden aus dem Winkel und dem Radius r berechnet. Siehe Abbildung 4. Statt der Punktberechnung kann man auch eine kleine Transformation des Koordinatensystems vornehmen. Man ersetze die Zeile des 3. Fangpunktes durch:

ROT2 w : hotspot2 r,0, 03,w,5 : DEL 1 !Beweglicher Punkt

oder, wenn der bewegliche Punkt senkrecht zur Basislinie stehen soll, lautet die Zeile des 3. Fangpunktes:

hotspot2 r,r*tan(w), 03,w,5 !Beweglicher Punkt

Beispiel 4:
Aus den Beispielen 1c, 2b und 3 lässt sich ein frei beweglicher Text des Objektes durch 3 Koordinatenparameter definieren:

! Parameter:
! c: Vertikaler Versatz, Typ Länge
! d: Horizontaler Versatz, Typ Länge
! w: Rotation, Typ Winkel

txt="Beweg mich! Dreh mich!"
r=stw(txt)/1000*GLOB_SCALE !Textbreite als Radius

HOTSPOT2 0,0,99 !Fangpunkt am Objekteinsetzpunkt

! Vertikale Richtung
HOTSPOT2 d, 0, 01,c,1+128 !Basisfangpunkt
HOTSPOT2 d, c, 02,c,2     !beweglicher Fangpunkt
HOTSPOT2 d,-1, 03,c,3     !Referenzrichtung

! Horizontale Richtung
HOTSPOT2  0,c, 04,d,1+128 !Basisfangpunkt
HOTSPOT2  d,c, 05,d,2     !beweglicher Fangpunkt
HOTSPOT2 -1,c, 06,d,3     !Referenzrichtung

add2 d,c

! Drehung
hotspot2 0,0, 07,w,6     !Mittelpunkt
hotspot2 r,0, 08,w,4+128 !Basispunkt
hotspot2 r*cos(w),r*sin(w),09,w,5 !Beweglicher Punkt

! Eindrehen und Textausgabe
rot2 w
text2 0,0,txt
del 2
Aufklappen Specialities
Ab ArchiCAD 8 können Objekte einen Schalter enthalten, der verhindert, dass die Fangpunkte des Grundrisses automatisch im 3D verwendet werden. Dieser ist Bestandteil der Parameterliste dreidimensionaler Objekte.

Es können auch einzelne Datenfelder eines Arrays als beweglicher Fangpunkt fungieren. Allerdings können nicht 2 Werte des gleichen Arrays über denselben Fangpunkt verändert werden. Dann ist nur einer von beiden editierbar.
Aufklappen Attributes
(PEN)
Aufklappen Context
2D-Skript
Aufklappen Background
Identifikationsnummer:
Die Verwendung der ID_number dient der Identifikation nach außen. Werden z.B. assoziative Maßketten auf ein Objekt gelegt und anschließend durch eine Veränderung der Parameter zusätzliche Fangpunkte erzeugt, kann es bis ArchiCAD 6.0 durch die Veränderung der Reihenfolge ihrer Erzeugung innerhalb des Skriptes zu einem Verrutschen der Bemaßungspunkte kommen. Durch die Verwendung der ID_Nummer kann man dies verhindern, da die Maßkette nun eindeutig auf einen bestimmten Fangpunkt bezogen werden kann. Soweit die Theorie. Es funktioniert nur leider nicht. Die ID_Nummer hat bisher nur den zweifelhaften Sinn gezeigt, dass sie vom Programmierer sauber verwaltet werden muss, was jedoch ArchiCAD leichter intern lösen könnte. Nach Aussage von Graphisoft wird die ID-Nummer zur Identifikation der Fangpunkte in Schnittfenstern verwendet. Für den Grundriss ist das zwar denkbar, aber noch nicht abzusehen, wann es implementiert wird.
Bis ArchiCAD® 17 ist es dem Programmierer überlassen die Eindeutigkeit der ID sicherzustellen. Das sollte er, auch wenn es kein Werkzeug zur Überprüfung gibt, auch tun, denn since ArchiCAD® 11 wird bei doppelt vergebenen IDs eine Fehlermeldung ausgegeben. Es ist zu raten dazu eine Variable zu verwenden, die nach jedem HOTSPOT2 hochgezählt wird. V.a. bei der mehrfachen Verwendung von Makros, die HOTSPOT2-Befehle enthalten ist hier eine mehrfache Verwendung der gleichen ID zu vermeiden.

Graphisch bewegliche Fangpunkte:
Ab ArchiCAD 8 können mehrere Fangpunkte gemeinsam einen beweglichen Fangpunkt definieren. D.h. an einem Fangpunkt des Objektes kann ohne Öffnen des Einstellungsdialoges der Wert eines Parameters graphisch geändert werden. Prinzipiell gibt es zwei unterschiedlich Typen: Linear und Winkel. Bei den linearen können auch zwei bewegliche Fangpunkte zusammenfallen, die dann 2 Parameter gleichzeitig verändern. Sie müssen allerdings dann auch theoretisch beweglich sein und sich nicht gegenseitig durch Richtung oder Wertebereiche/Schrittweiten ausschließen. Außerdem müssen sie den maßstäblichen Längen der Parameterwerte entsprechen. Vor den hotspot2-Befehlen ausgeführte MUL2-Befehle müssen mit den Fangpunkten korrespondieren. Eine Kombination von Fanpunkttyp Winkel und Linear ist nicht möglich.

Linear bewegliche Fangpunkte:
Parameter vom Typ Länge werden mit den Fangpunkttypen 1, 2 und 3 graphisch editierbar definiert. Dazu wird ein Vektor bestimmt, der die Längenangabe des Parameters darstellt. Jeder Vektor hat einen Ausgangspunkt (Basis, typ=1) und ein Ende (Beweglicher Punkt, typ=3). Da ein Vektor (Parameter) auch die Länge Null haben kann, wäre in diesem Fall eine Richtung nicht definiert und jede beliebige möglich. Um das zu vermeiden muss ein Referenzvektor gesetzt werden, der die (negative) Richtung des Längenvektors angibt.

Bogenförmig bewegliche Fangpunkte (Winkel):
Die Definition eines beweglichen Winkelfangpunktes ist ähnlich. Bei einem Winkel ist aber noch neben dem eigentlichen Winkel ein weiteres Maß nötig: Der Radius des Winkelbogens. Statt eines Basispunktes gibt es nun eine Basisstrecke, die sich durch Winkelzentrum (typ=6) und einen Basispunkt (typ=4) definiert. Üblicherweise nimmt man hierfür die Richtung der X-Achse, da sonst umfangreiche trigonometrische Operationen nötig sind. Zuvorige Transformationen des Koordinatensystems mit ADD2 und ROT2 sind zulässig. Der bewegliche Punkt (typ=5) spannt nun den Winkelbogen von der Basislinie um den Mittelpunkt gedreht auf. Die Koordinaten lassen sich mit SIN() und COS() ermitteln. Die Strecke vom Mittelpunkt zum Basispunkt und Mittelpunkt zu beweglichem Punkt sollte die gleiche Länge (=Radius) ergeben. Siehe Beispiel 3 und 4, sowie Abbildung 4.
Wird dem Fangpunkt des Mittelpunktes zur Typennummer (j1=6) 512 hinzuaddiert, wird der Winkel nicht ArchiCAD-üblich entgegen, sondern im Uhrzeigersinn aufgezogen.
Aufklappen References
GDL-Handbuch 4.5 (DE) p. 86
GDL-Handbuch 5.0 (DE) p. 100
GDL-Handbuch 6.0 (DE) p. 124
GDL-Neue Funktionen 6.5 (DE) p. 135
GDL-Handbuch 6.5 (DE) p. 120
GDL-Handbuch 7.0 (DE) p. 120
GDL-Handbuch 8.0 (DE) p. 19/86
GDL-Handbuch 8.1 (DE) p. 20/88
GDL-Handbuch 9.0 (DE) p. 121/135
GDL-Handbuch 10.0 (DE) p. 117/133
GDL-Handbuch 11.0 (DE) p. 123/133
GDL Reference Guide 9.0 (INT) p. 117/131
GDL Reference Guide 10.0 (INT) p. 117/133
GDL Reference Guide 11.0 (INT) p. 117/133
GDL Cookbook 3.1 (EN/DE) p. 1.10
 





Abb. 1: Position eines einfachen Fangpunktes. Eine graphische Darstellung als Kreuz erfolgt nur in der Vorschau des Objektes.


Abb. 2: Linear beweglicher Fangpunkt in 1 Richtung.
Punkt 01: Basispunkt (typ=1)
Punkt 02: Beweglicher Punkt (typ=2)
Punkt 03: Referenzpunkt (typ=3)



Abb. 3: Zwei linear bewegliche und kombinierte Fangpunkte.
Punkt 01: Basispunkt 1 (typ=1)
Punkt 02: Beweglicher Punkt 1 (typ=2)
Punkt 03: Referenzpunkt 1 (typ=3)
Punkt 04: Basispunkt 2 (typ=1)
Punkt 05: Beweglicher Punkt 2 (typ=2)
Punkt 06: Referenzpunkt 2 (typ=3)
Punkt 02 und 05 liegen auf gleicher Position.



Abb. 4: Beweglicher Fangpunkt für Winkelparameter.
Punkt 01: Basispunkt (typ=4)
Punkt 02: Beweglicher Punkt (typ=5)
Punkt 03: Mittelpunkt (typ=6)


separates Web Control Fenster Download Objekt

Aufklappen GDL WebControl