Name
HOTSPOT2

Syntax
HOTSPOT2 x, y [, ID_nummer [, parametername_edit [, typ [, parametername_palette [, "Eigene Beschreibung"]]]]]

Aufklappen Wertebereiche
x, Typ Real
y, Typ Real

Ab Archicad 6.5:
ID_nummer > 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_palette, Name eines numerischen Parameters. Kein Text.

(*) mit typ = j1 + j2 + j3 + j4 + j5:
j1=0: normaler Fangpunkt (Ohne Editierfunktion)
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)
j1=7: Punkt für Winkelbogen: Referenzpunkt (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)

j5=0: Alle Werte verstehen sich in Modellgröße.
j5=1024: Der Wert des unter parametername_edit angegebenen Parameters wird in Papiergröße (= mm) gewertet. Das funktioniert allerdings nur, wenn der Parameter ein Längenparameter ist. Mit "Natürlichen Zahlen" und allen anderen Parametertypen ergibt sich beim Setzen des Flags keinerlei Änderung.

Aufklappen Erläuterung
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_nummer) 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, typ gibt die Funktion des Fangpunktes innerhalb dieser "Editiergruppe" an, und parametername_palette 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.
Der String in "Eigene Beschreibung" kann dazu verwendet werden einen eigenen Text statt des Parameternamens in der Palette anzeigen zu lassen. Für diese Option muss parametername_palette gesetzt sein, bei dem sich allerdings parametername_edit einfach wiederverwendet werden lässt.

Näheres siehe Tipps und Tricks.

Aufklappen Beispiel
Beispiel 1a:
Nehmen wir mal einen Parameter c als Längenparameter.

HOTSPOT2 0, 0, 1, c, 1 !Basisfangpunkt
HOTSPOT2 0, c, 2, c, 2 !beweglicher Fangpunkt
HOTSPOT2 0,-1, 3, 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, 1, c, 1+128 !Basisfangpunkt
HOTSPOT2 0, c, 2, c, 2 !beweglicher Fangpunkt
HOTSPOT2 0,-1, 3, 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,  1, c, 129 !Basisfangpunkt
HOTSPOT2 d, c, 2, c, 2   !beweglicher Fangpunkt
HOTSPOT2 d,-1, 3, 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, 4, d, 1 !Basisfangpunkt
HOTSPOT2  d,0, 5, d, 2 !beweglicher Fangpunkt
HOTSPOT2 -1,0, 6, 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, 4, d, 129 !Basisfangpunkt
HOTSPOT2  d,c, 5, d, 2   !beweglicher Fangpunkt
HOTSPOT2 -1,c, 6, 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, 1, w, 6 !Mittelpunkt
hotspot2 r,0, 2, w, 4+128 !Basispunkt
hotspot2 r*cos(w),r*sin(w), 3, 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, 3, 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), 3, 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, 1, c, 1+128 !Basisfangpunkt
HOTSPOT2 d, c, 2, c, 2     !beweglicher Fangpunkt
HOTSPOT2 d,-1, 3, c, 3     !Referenzrichtung

! Horizontale Richtung
HOTSPOT2  0,c, 4, d, 1+128 !Basisfangpunkt
HOTSPOT2  d,c, 5, d, 2     !beweglicher Fangpunkt
HOTSPOT2 -1,c, 6, d, 3     !Referenzrichtung

add2 d,c

! Drehung
hotspot2 0,0, 7, w, 6     !Mittelpunkt
hotspot2 r,0, 8, w, 4+128 !Basispunkt
hotspot2 r*cos(w),r*sin(w), 9, w, 5 !Beweglicher Punkt

! Eindrehen und Textausgabe
rot2 w
text2 0,0,txt
del 2

Aufklappen Beispiel Erläuterung
Vorbereitung für Automatische Vermaßung auto_dimensions(LibDevGuide)

Falls man sichergehen will, dass Fenster- und Türobjekte korrekt durch die automatische Bemaßung und in interaktiven Auswertungen vermaßt werden, muss man Hotspots an speziellen Stellen definieren.

Falls man eine Abmessung mit nominaler Breite und Höhe haben möchte, muss das Objekt 4 Hotspots in einer vertikalen planen Ebene besitzen, mit den Abmessungen A (horizontal) und B (vertikal). Diese Hotspots müssen eigene einzigartige IDs besitzen. Diese IDs sollten unveränderbar sein, wenn man den Maßstab oder etwas anderes ändert. Diese nominale Vermaßung funktioniert ebenfalls mit den durch ArchiCAD vorgegebenen Hotspots.

Falls man den Anschlag, die Wandöffnung oder Einheits-Breite/Höhe bemaßen möchte, benötigt man zusätzliche Hotspots mit dem Abstand "ac_reveal_width", "ac_reveal_height" oder "ac_wallhole_width", "ac_wallhole_height" oder "ac_unit_width", "ac_unit_height".

Falls es im wesentlichen um die Maßketten in der interaktiven Auswertung geht, können Sie diese Hotspots je nach dem GLOB_CONTEXT weglassen. Der GLOB_CONTEXT-Wert für Auswertung und Listing ist 6. Interaktive Auswertungs-Sets: Der normalerweise versteckte Parameter bShowAddHotspotsForIS sollte in den LibraryGlobal Einstellungsobjekten auf 1 gesetzt werden, falls das Objekt einen solchen Hotspot besitzt und es einen solchen Parameter gibt. Er kann für die genaue Indentifizierung der IS-Situation verwendet werden. Näheres dazu in der "Library Global View Options Section" der Technical Standards oder bei selfGL unter LIBRARYGLOBAL.

Aufklappen Besonderheiten
Ab Archicad 8 können Objekte einen Schalter enthalten, der verhindert, dass die Fangpunkte des Grundrisses automatisch im 3D verwendet werden. Dieser ist automatisch Bestandteil der Parameterliste dreidimensionaler Objekte (nach Auswahl des entsprechenden Subtyps). Im Normalfall sollte man diese Option nicht nutzen und auf Aus setzen.

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.

Dictionary-Parameter (mit Archicad 23 eingeführt) lassen sich nicht mit HOTSPOTs verknüpfen.

Aufklappen Attribute
(PEN)

Aufklappen Tipps und Tricks
Identifikationsnummer:
Die Verwendung der ID_nummer 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 ab 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 selben 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 Fanpunkttypen 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 Kontext
2D-Skript