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

Standard-Ankerpunkt für Objekt definieren

user1_1
Participant

Hallo liebe Community.

 

Ich bin neu im GDL-programmieren, habe mich mittlerweile einige Stunden eingelesen und auch schon mein erstes dynamisches Objekt erstellt und versuche mich nun an einer Abwandlung eines bestehenden Objekts "Gefälle Beschriftung" der Archicad Standardbibliothek 26. Ich hänge derzeit am Problem, den Standard-Ankerpunkt für mein Objekt neu zu definieren. Dieser wird beim Hotspot2 mit der Koordinate "0,0" gesetzt, ich möchte ihn aber auf den Hotspot2 mit der Koordinate "A,0" ändern, da an diesem Punkt die bereits programmierte dynamische Pfeilspitze liegt.

 

Aus meiner Sicht sollte ich mit der Korrektur des nachfolgenden Teil des Codes zu mienem Ziel kommen:

 

unID = 1
HOTSPOT2 0,0,unID :	unID=unID+1

	HOTSPOT2 0,0,unID,a,1+128 :unID=unID+1
	HOTSPOT2 a,0,unID,a,2 :unID=unID+1
	HOTSPOT2 -1,0,unID,a,3 :unID=unID+1


HOTSPOT2 a/2,0,unID :	unID=unID+1

 

Ich kann zu dierser Problemstellung im GDL-Skript nichts finden. Ich hörte, dass die Flag "+128" an den zweiten Hotspot verschoben gehört. Mache ich das, geht der Hotspot allerdings verloren...

 

Kann mir da jemand aushelfen? 

 

Beste Grüße, 1_1

6 ANTWORTEN 6
runxel
Hero

Das ist vielleicht ein bisschen verwirrend, weil der "Hotspot" zwei verschiedene Aufgaben erfüllt:

Der Hotspot alleine ist erstmal nur ein Angreifpunkt, dargestellt mit dem standardmäßig schwarz gefüllten Kreis in der Sicht (z.B. Grundriss beim hotspot2).

Die drei Hotspots zusammen ergeben dann ein System, welches dem User ermöglicht das Objekt direkt zu manipulieren. Das sind dann die pinken Rauten.

 

Du fragst erst nach dem "Standard-Ankerpunkt".

Der Einsetzpunkt eines Objekts ist im Regelfall der erste im Script auftauchende Hotspot, nicht der mit der kleinsten unID (die ID muss nicht einmal fortlaufend sein...).

Man kann allerdings im Vorschaufenster den Einsetzpunkt jederzeit ändern! Man klickt einfach auf ein anderes "X".

 

runxel_0-1758625970988.png

 

Im Anschluss zeigst du uns aber Code für einen beweglichen Hotspot.

Hotspot Typ 1 ist der Basispunkt. Dieser Punkt ist der "Nullpunkt" für die nachfolgende Transformationssteuerung. Wenn man diesen Punkt nicht sehen will, kann man ihn mit der 128 Flag unsichtbar machen. Umgekehrt kann man mit der 256 Flag diesen Punkt als steuerbar kennzeichnen; dann wird er auch pink und die Richtung der Bewegung kehrt sich um.

Der Hotspot vom Typ 2 ist der bewegliche Punkt und kann niemals ausgeblendet werden (macht ja auch keinen Sinn).

Typ 3 ist der Referenzpunkt und ist der negative Vektor der Bewegung. Dieser ist immer verborgen.

 

Dein Code

hotspot2 0, 0, unID, A, 1+128 : unID=unID+1
hotspot2 A, 0, unID, A, 2     : unID=unID+1
hotspot2 -1, 0, unID, A, 3    : unID=unID+1

 erzeugt also einen pinken, bewglichen Hotspot an der Koordinate (A,0) und steuert die Breite.

 

Wenn du willst, dass Archicad das Objekt beim Klicken auf die Position (A,0) einfügt kannst du den Hotspot (ohne Typnummer) einfach als erstes nochmal definieren. Diese Dopplung ist harmlos.

Lucas Becker | AC 29 on Mac (Sequoia) | Graphisoft Insider Panelist | Akroter.io – high-end GDL objects | Author of Runxel's Archicad Wiki | Editor at SelfGDL | Developer of the GDL plugin for Sublime Text

My List of AC shortcomings & bugs | I Will Piledrive You If You Mention AI Again |

POSIWID – The Purpose Of a System Is What It Does /// «Furthermore, I consider that Carth... yearly releases must be destroyed»

Hallo runxel!

Vielen Dank für deine Erklärung. So ganz funktioniert es aber noch nicht, oder ich habe es falsch verstanden... Ich habe nun einen weiteren Hotspot an erster Stelle positioniert, beim Rücksetzen auf die Standardeinstellungen meines Objektes bleibt der Standardeinfügepunkt aber immer noch die Koordinate 0,0 und nicht A,0... Hier der Code:

 

	HOTSPOT2 a,0
	HOTSPOT2 0,0,unID,a,1+128 :unID=unID+1
	HOTSPOT2 a,0,unID,a,2 :unID=unID+1
	HOTSPOT2 -1,0,unID,a,3 :unID=unID+1

 

Auch das rausstreichen der "+128"-flag oder das Ändern derer auf "+256" (wie von dir beschrieben) erzeugt keine Nicht-Sichtbarkeit oder zusätzlichen Steuerhebel...

Was mache ich falsch?

Mh, eigentlich nüscht! Schaut alles gut aus, – und – ich kann das hier bei mir nicht nachstellen....

Erst recht nicht, wenn man dem Basispunkt den 128er Flag mit beigibt – denn dann sollte er ja gar nicht mehr zu sehen sein.

Dein Code, um ein line2 0, 0, A, 0 erweitert, gibt mir brav das hier im Vorschaufenster:

 

runxel_0-1758910615886.png

Also alles gut, genauso wie von dir gewollt.

Bedeutet: kann nur drei Möglichkeiten geben:

  • Du hast doch noch im Code irgendwo einen Hotspot2 auf (0, 0)
  • du hast im "2D-Symbol" (GDL-Editor, nicht 2D-script) etwas gezeichnet,
  • du hast in den Kompatibilitätsoptionen "Automatische Fixpunkte" angemacht.

runxel_1-1758910725464.png

Eins davon muss die Ursache sein 😄

 

Lucas Becker | AC 29 on Mac (Sequoia) | Graphisoft Insider Panelist | Akroter.io – high-end GDL objects | Author of Runxel's Archicad Wiki | Editor at SelfGDL | Developer of the GDL plugin for Sublime Text

My List of AC shortcomings & bugs | I Will Piledrive You If You Mention AI Again |

POSIWID – The Purpose Of a System Is What It Does /// «Furthermore, I consider that Carth... yearly releases must be destroyed»
Ma_SchtAC27
Enthusiast

Hallo User1_1,

mach doch einfach eine Koordinaten-Tansformation mittels ADD.

Verschiebe Deinen gewünschten Nullpunkt und "alles danach" auf den vorhandenen Nullpunkt. 

Klar, kostet ein bisschen Rechenleistung. 

Ob man einen beweglichen HoSpo (2) als NULL-Pkt. nutzen kann, weiß ich nicht, glaube ich aber auch nicht.  

Vergiss das DEL 1 am Ende des Scriptes NICHT!

 

ADD2 A,0

    !!! Dein Script

DEL 1

 

@runxel

Dopplung von HoSpos ist totale ... beim Bemaßen. 

Die Bemaßung verknüpft sich mit der HoSpo-Nr. ( ist sinnig). 

Ich pfusche ja ganz gern mal, aber da bin ich total pingelig.

Gruß Mario 


@Ma_SchtAC27  schrieb:

Dopplung von HoSpos ist totale ... beim Bemaßen. 

Die Bemaßung verknüpft sich mit der HoSpo-Nr. ( ist sinnig). 

Ich pfusche ja ganz gern mal, aber da bin ich total pingelig.


Solange die übereinanderliegenden Hotspots nicht irgendwann divergieren, sollte es keine negativen Effekte geben.

Tatsächlich kommt der zuletzt definierte Hotspot zuoberst zu liegen und wird mit der Bemaßung verknüpft.

Außerdem: bei zweidimensionalen Hotspots (also in X wie Y Richtung) müssen die beiden Hotspots ja zwangsweise übereinander liegen.

 

Lucas Becker | AC 29 on Mac (Sequoia) | Graphisoft Insider Panelist | Akroter.io – high-end GDL objects | Author of Runxel's Archicad Wiki | Editor at SelfGDL | Developer of the GDL plugin for Sublime Text

My List of AC shortcomings & bugs | I Will Piledrive You If You Mention AI Again |

POSIWID – The Purpose Of a System Is What It Does /// «Furthermore, I consider that Carth... yearly releases must be destroyed»
user1_1
Participant

Ich komme derzeit leider nicht dazu eure Vorschläge auszuprobieren, aber sobald wieder etwas Luft bei mir ist, werde ich mich definitiv dran setzen. Danke einstweilen für eure Ratschläge! Freue mich schon, mein Bibliothekselement weiter zu optimieren 🙂

 

Gruß 1_1