Aus dem Kopf und ohne AC zur Hand und mit Garantie auf kleine Fehler:
----------------------------
Syntax:
hotspot2 x,y [,ID [,parametername, typ [,parameterliste]]
Wertebereiche:
x, Typ real
y, Typ real
ID, Typ integer (ab ArchiCAD 6.5)
parametername, gültiger Parametername aus der Parameterliste des Objektes, der beweglich sein soll (ab ArchiCAD 8.0)
typ (1 bis 6) Typ integer (ab ArchiCAD 8.0)
parameterliste
Erläuterung:
Erzeugt einen Fangpunkt an der Stelle x/y. 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. Auf diesen Fangpunkt kann vermaßt werden. Damit ArchiCAD bei mehreren und je nach Darstellung evt. wechselnden Fangpunkten den korrekten assoziiert, kann dem Fangpunkt eine Identifizierungsnummer (ID) zugewiesen werden, die objektweit jedoch eindeutig sein muß. Es ist zu raten dazu eine Variable zu verwenden, die nach jedem HOTSPOT2 hochgezählt wird.
Ab ArchiCAD 8 können mehrere Fangpunkte gemeinsam einen beweglichen Fangpunkt definieren. 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 entsprechen. Vor den hotspot2-Befehlen ausgeführte MUL2-Befehle müssen mit den Fangpunkten korrespondieren.
Linear bewegliche Fangpunkte:
Es wird ein Vektor bestimmt, der die Längenangabe eines Parameters darstellt. Jeder Vektor hat einen Ausgangspunkt (Basis, typ ) und ein Ende (Beweglicher Punkt). Da ein Vektor (Parameter) auch die Länge Null haben kann, wäre in diesem Fall eine Richtung nicht definiert und jede möglich. Um das zu vermeiden muß ein Referenzvektor gesetzt werden, der die (negative) Richtung des Längenvektors angibt.
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 01->02 (vertikal). Der bewegliche Fangpunkt an 0/c. Es ist sicherzustellen, daß im Moment der Erzeugung der Fangpunkte die Länge von 01->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 mit 01->03 definiert.
Will man den Basisfangpunkt unsichtbar machen, addiert man 128 zu dem Basistyp:
HOTSPOT2 0, 0, 01,c,1+128 !Basisfangpunkt
Der Referenzfangpunkt ist immer unsichtbar.
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
Der Basispunkt muß nicht bei 0/0 liegen. Hier liegt er nun bei d/0:
HOTSPOT2 d, 0, 01,c,129 !Basisfangpunkt
HOTSPOT2 d, c, 02,c,2 !beweglicher Fangpunkt
HOTSPOT2 d,-1, 03,c,3 !Referenzrichtung
Ebenso in der anderen Richtung. Der Vektor liegt 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 beide beweglichen Fangpunkte aufeinander. Damit lassen sich mit einem Drag und drop beide Werte verändern. Eine Kombination mit dem Fanpunkttyp Winkel ist nicht möglich.
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. Nennen wir den mal "r". Satt eines Basispunktes gibt es nun eine Basislinie, die sich durch Winkelzentrum und einen Basispunkt 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.
Definieren wir nun den Mittelpunkt des Winkels, z.B. des Parameters w:
hotspot2 0,0, 07,w,6 !Mittelpunkt
Der Basispunkt auf der X-Achse liegt im Abstand r. Die Addition von 128 macht ihn wieder unsichtbar:
hotspot2 r,0,08,w,4+128 !Basispunkt
Und nun den beweglichen Punkt, der auf der Kreislinie liegen muß (Radius r):
hotspot2 r*cos(w),r*sin(w),09,w,5 !Beweglicher Punkt
Zusammen könnte das so aussehen:
txt="demo2"
r=stw(txt)
HOTSPOT2 d, 0, 01,c,129 !Basisfangpunkt
HOTSPOT2 d, c, 02,c,2 !beweglicher Fangpunkt
HOTSPOT2 d,-1, 03,c,3 !Referenzrichtung
HOTSPOT2 0,c, 04,d,129 !Basisfangpunkt
HOTSPOT2 d,c, 05,d,2 !beweglicher Fangpunkt
HOTSPOT2 -1,c, 06,d,3 !Referenzrichtung
add2 c,d
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
rot2 w
text2 0,0,txt
del 2