<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>Thema "Ankerpunkt setzen" in Programmierung</title>
    <link>https://community.graphisoft.com/t5/Programmierung/Ankerpunkt-setzen/m-p/550670#M6360</link>
    <description>Hallo zusammen,&lt;BR /&gt;&lt;BR /&gt;ich habe mir einige einfache GDL Objekte gebastelt und bin auf folgende Problem gestoßen.&lt;BR /&gt;&lt;BR /&gt;Bei einem Objekt habe ich beispielsweise 6 Hotspots definiert.&lt;BR /&gt;Es besteht u. a. aus einem Rechteck und einem Text.&lt;BR /&gt;In der Mitte des Rechtecks habe ich einen Hotspot und einen weiteren als "Beweger" für den Text.&lt;BR /&gt;&lt;BR /&gt;Wenn ich in der Vorschau den Objekteinstellungen den Mittelpunkt des Rechtecks aktiviere, sodass das Quadrat dort sitzt und dann die Parameter für Länge und Breite ändere, möchte ich logischerweise, dass sich die Größe des Rechtecks ändert und der aktivierte Mittelpunkt als Ankerpunkt verwendet wird.&lt;BR /&gt;Stattdessen wird aber der Bewegungspunkt des Textes als Ankerpunkt verwendet.&lt;BR /&gt;Dieser ist im 2D Skript als Basispunkt definiert.&lt;BR /&gt;&lt;BR /&gt;Hier mal das Skrip (Achtung, ich bin noch bzw. wieder Anfänger)t.&lt;BR /&gt;Ich hab versucht, das fett zu machen, was mir wichtig erscheint.&lt;BR /&gt;&lt;BLOCKQUOTE&gt;! Variablen&lt;BR /&gt;laenge = groesse -0.020&lt;BR /&gt;&lt;BR /&gt;! Start Rechteck zeichnen&lt;BR /&gt;&lt;B&gt;PEN stift_rechteck&lt;BR /&gt;RECT2 0,0,laenge,laenge&lt;/B&gt;&lt;BR /&gt;! Achsen&lt;BR /&gt;PEN stift_achsen&lt;BR /&gt;LINE_TYPE linie_achsen&lt;BR /&gt;LINE2 laenge/2,0,laenge/2,laenge&lt;BR /&gt;LINE2 0,laenge/2,laenge,laenge/2&lt;BR /&gt;&lt;BR /&gt;LINE_TYPE 1&lt;BR /&gt;diagonale=(laenge*SQR(2)/4)&lt;BR /&gt;LINE2 laenge/2+diagonale/4,laenge/2+diagonale/4,laenge-diagonale/4,laenge-diagonale/4&lt;BR /&gt;LINE2 laenge/2-diagonale/4,laenge/2+diagonale/4,diagonale/4,laenge-diagonale/4&lt;BR /&gt;LINE2 diagonale/4,diagonale/4,laenge/2-diagonale/4,laenge/2-diagonale/4&lt;BR /&gt;LINE2 laenge-diagonale/4,diagonale/4,laenge/2+diagonale/4,laenge/2-diagonale/4&lt;BR /&gt;&lt;BR /&gt;! Hotspots&lt;BR /&gt;!Mitte&lt;BR /&gt;&lt;B&gt;HOTSPOT2 laenge/2, laenge/2&lt;/B&gt;&lt;BR /&gt;!! Länge&lt;BR /&gt;!!! lu&lt;BR /&gt;HOTSPOT2 0, 0&lt;BR /&gt;!!! lo&lt;BR /&gt;HOTSPOT2 0, laenge&lt;BR /&gt;!!! ru&lt;BR /&gt;HOTSPOT2 laenge, 0&lt;BR /&gt;!!! ro&lt;BR /&gt;HOTSPOT2 laenge, laenge&lt;BR /&gt;&lt;BR /&gt;! Ende Rechteck zeichnen&lt;BR /&gt;&lt;BR /&gt;! Start Bezeichnung (Text)&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;IF seite="links" THEN&lt;BR /&gt;anker = 9&lt;BR /&gt;ELSE IF seite = "rechts" THEN&lt;BR /&gt;anker = 7&lt;BR /&gt;pos_x=-pos_x+laenge&lt;BR /&gt;ENDIF&lt;BR /&gt;&lt;BR /&gt;DEFINE STYLE stil_bezeichung "Arial", 2, anker, 0&lt;BR /&gt;SET STYLE stil_bezeichung&lt;BR /&gt;PEN stift_bezeichung&lt;BR /&gt;gr=STR(groesse*1000,3,0)&lt;BR /&gt;bezeichnung="ZLDA\n" + gr&lt;BR /&gt;&lt;B&gt;TEXT2 pos_x, pos_y, bezeichnung&lt;/B&gt;&lt;BR /&gt;&lt;BR /&gt;!!Hotspots&lt;BR /&gt;&lt;B&gt;HOTSPOT2 0, 0, 09, pos_x, 1 ! Basisfangpunkt&lt;/B&gt;&lt;BR /&gt;HOTSPOT2 pos_x, 0, 10, pos_x, 2 ! beweglicher Fangpunkt&lt;BR /&gt;!HOTSPOT2 0, 10, 11, pos_x, 3, pos_x ! &lt;BR /&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;Was muss ich machen, damit der in der Vorschau aktivierte Fangpunkt als Anker für Größenänderungen des Rechtecks benutzt wird?</description>
    <pubDate>Sat, 13 May 2017 09:20:21 GMT</pubDate>
    <dc:creator>mac_martin</dc:creator>
    <dc:date>2017-05-13T09:20:21Z</dc:date>
    <item>
      <title>Ankerpunkt setzen</title>
      <link>https://community.graphisoft.com/t5/Programmierung/Ankerpunkt-setzen/m-p/550670#M6360</link>
      <description>Hallo zusammen,&lt;BR /&gt;&lt;BR /&gt;ich habe mir einige einfache GDL Objekte gebastelt und bin auf folgende Problem gestoßen.&lt;BR /&gt;&lt;BR /&gt;Bei einem Objekt habe ich beispielsweise 6 Hotspots definiert.&lt;BR /&gt;Es besteht u. a. aus einem Rechteck und einem Text.&lt;BR /&gt;In der Mitte des Rechtecks habe ich einen Hotspot und einen weiteren als "Beweger" für den Text.&lt;BR /&gt;&lt;BR /&gt;Wenn ich in der Vorschau den Objekteinstellungen den Mittelpunkt des Rechtecks aktiviere, sodass das Quadrat dort sitzt und dann die Parameter für Länge und Breite ändere, möchte ich logischerweise, dass sich die Größe des Rechtecks ändert und der aktivierte Mittelpunkt als Ankerpunkt verwendet wird.&lt;BR /&gt;Stattdessen wird aber der Bewegungspunkt des Textes als Ankerpunkt verwendet.&lt;BR /&gt;Dieser ist im 2D Skript als Basispunkt definiert.&lt;BR /&gt;&lt;BR /&gt;Hier mal das Skrip (Achtung, ich bin noch bzw. wieder Anfänger)t.&lt;BR /&gt;Ich hab versucht, das fett zu machen, was mir wichtig erscheint.&lt;BR /&gt;&lt;BLOCKQUOTE&gt;! Variablen&lt;BR /&gt;laenge = groesse -0.020&lt;BR /&gt;&lt;BR /&gt;! Start Rechteck zeichnen&lt;BR /&gt;&lt;B&gt;PEN stift_rechteck&lt;BR /&gt;RECT2 0,0,laenge,laenge&lt;/B&gt;&lt;BR /&gt;! Achsen&lt;BR /&gt;PEN stift_achsen&lt;BR /&gt;LINE_TYPE linie_achsen&lt;BR /&gt;LINE2 laenge/2,0,laenge/2,laenge&lt;BR /&gt;LINE2 0,laenge/2,laenge,laenge/2&lt;BR /&gt;&lt;BR /&gt;LINE_TYPE 1&lt;BR /&gt;diagonale=(laenge*SQR(2)/4)&lt;BR /&gt;LINE2 laenge/2+diagonale/4,laenge/2+diagonale/4,laenge-diagonale/4,laenge-diagonale/4&lt;BR /&gt;LINE2 laenge/2-diagonale/4,laenge/2+diagonale/4,diagonale/4,laenge-diagonale/4&lt;BR /&gt;LINE2 diagonale/4,diagonale/4,laenge/2-diagonale/4,laenge/2-diagonale/4&lt;BR /&gt;LINE2 laenge-diagonale/4,diagonale/4,laenge/2+diagonale/4,laenge/2-diagonale/4&lt;BR /&gt;&lt;BR /&gt;! Hotspots&lt;BR /&gt;!Mitte&lt;BR /&gt;&lt;B&gt;HOTSPOT2 laenge/2, laenge/2&lt;/B&gt;&lt;BR /&gt;!! Länge&lt;BR /&gt;!!! lu&lt;BR /&gt;HOTSPOT2 0, 0&lt;BR /&gt;!!! lo&lt;BR /&gt;HOTSPOT2 0, laenge&lt;BR /&gt;!!! ru&lt;BR /&gt;HOTSPOT2 laenge, 0&lt;BR /&gt;!!! ro&lt;BR /&gt;HOTSPOT2 laenge, laenge&lt;BR /&gt;&lt;BR /&gt;! Ende Rechteck zeichnen&lt;BR /&gt;&lt;BR /&gt;! Start Bezeichnung (Text)&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;IF seite="links" THEN&lt;BR /&gt;anker = 9&lt;BR /&gt;ELSE IF seite = "rechts" THEN&lt;BR /&gt;anker = 7&lt;BR /&gt;pos_x=-pos_x+laenge&lt;BR /&gt;ENDIF&lt;BR /&gt;&lt;BR /&gt;DEFINE STYLE stil_bezeichung "Arial", 2, anker, 0&lt;BR /&gt;SET STYLE stil_bezeichung&lt;BR /&gt;PEN stift_bezeichung&lt;BR /&gt;gr=STR(groesse*1000,3,0)&lt;BR /&gt;bezeichnung="ZLDA\n" + gr&lt;BR /&gt;&lt;B&gt;TEXT2 pos_x, pos_y, bezeichnung&lt;/B&gt;&lt;BR /&gt;&lt;BR /&gt;!!Hotspots&lt;BR /&gt;&lt;B&gt;HOTSPOT2 0, 0, 09, pos_x, 1 ! Basisfangpunkt&lt;/B&gt;&lt;BR /&gt;HOTSPOT2 pos_x, 0, 10, pos_x, 2 ! beweglicher Fangpunkt&lt;BR /&gt;!HOTSPOT2 0, 10, 11, pos_x, 3, pos_x ! &lt;BR /&gt;&lt;/BLOCKQUOTE&gt;&lt;BR /&gt;&lt;BR /&gt;Was muss ich machen, damit der in der Vorschau aktivierte Fangpunkt als Anker für Größenänderungen des Rechtecks benutzt wird?</description>
      <pubDate>Sat, 13 May 2017 09:20:21 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Programmierung/Ankerpunkt-setzen/m-p/550670#M6360</guid>
      <dc:creator>mac_martin</dc:creator>
      <dc:date>2017-05-13T09:20:21Z</dc:date>
    </item>
    <item>
      <title>Re: Ankerpunkt setzen</title>
      <link>https://community.graphisoft.com/t5/Programmierung/Ankerpunkt-setzen/m-p/550671#M6361</link>
      <description>Hallo Mac,&lt;BR /&gt;ich weiß was Du meinst. Ich mache das immer so:&lt;BR /&gt;Generell lasse ich alle Verschiebepunkte der dyn. HoSpos als Parameter im UI anzeigen. So kann man schnell bei 1000 Objekten den Text einheitlich verschieben. &lt;BR /&gt;Standardmäßig verschiebe ich den Text immer über den Mittelpunkt, läßt sich ja leicht mit o.g. Y-Verschiebungswerten des dyn. HoSpo schnell einstellen.&lt;BR /&gt;Generell mache ich Text in Objekten ausschaltbar, incl. deren HoSpos.&lt;BR /&gt;Gruß Mario</description>
      <pubDate>Mon, 15 May 2017 06:47:24 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Programmierung/Ankerpunkt-setzen/m-p/550671#M6361</guid>
      <dc:creator>Ma_Scht</dc:creator>
      <dc:date>2017-05-15T06:47:24Z</dc:date>
    </item>
    <item>
      <title>Re: Ankerpunkt setzen</title>
      <link>https://community.graphisoft.com/t5/Programmierung/Ankerpunkt-setzen/m-p/550672#M6362</link>
      <description>Vielen Dank für Dein Feedback.&lt;BR /&gt;Ich kann Dir aber nicht ganz folgen.&lt;BR /&gt;&lt;BR /&gt;Was bedeutet "Generell lasse ich alle Verschiebepunkte der dyn. HoSpos als Parameter im UI anzeigen." Gehts es da um die pos_x und pos_y Werte im Einstellungen Fenster?&lt;BR /&gt;Das hab ich auch so.&lt;BR /&gt;&lt;BR /&gt;Das hilft mir aber nicht dabei, dass Größenänderungen ab dem von mir angeklickten Ankerpunkt aus durchgeführt werden.&lt;BR /&gt;&lt;BR /&gt;Gruß&lt;BR /&gt;Martin</description>
      <pubDate>Mon, 15 May 2017 18:58:01 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Programmierung/Ankerpunkt-setzen/m-p/550672#M6362</guid>
      <dc:creator>mac_martin</dc:creator>
      <dc:date>2017-05-15T18:58:01Z</dc:date>
    </item>
    <item>
      <title>Re: Ankerpunkt setzen</title>
      <link>https://community.graphisoft.com/t5/Programmierung/Ankerpunkt-setzen/m-p/550673#M6363</link>
      <description>Da geht etwas ein wenig durcheinander.  V.a. bei den Fangpunkten.&lt;BR /&gt;&lt;BR /&gt;Schau dir mal auf selfgdl den Teil über die zweidimensionalen Fangpunkte an. Ich muss das hier nicht wiederholen. Zu zwei Kernfehlern:&lt;BR /&gt;&lt;BR /&gt;- Fangpunkte benötigen einen Index. Dieser muss im Skript eindeutig sein.&lt;BR /&gt;- Bewegliche Fangpunkte brauchen eine Referenzrichtung. Bei der Länge=0 "rät" AC sonst in welche Richtung plus ist.&lt;BR /&gt;- Eine ganz schlechte Idee ist es den Parameter, der beweglich sein soll im Skript zu ändern (Hier: pos_x).&lt;BR /&gt;- Man kann in AC keinen Basispunkt definieren. Der Basispunkt, den Du meinst ist der Basispunkt für den beweglichen Fangpunkt.&lt;BR /&gt;&lt;BR /&gt;Dein IF - THEN Konstrukt ist zwar zulässig, aber etwas unüblich. Wahrscheinlich ist der 2. Teil auch überflüssig, denn wenn die Ausrichtung nicht "rechts" oder "links" ist, kommt es zum Fehler. Besser ist es wie korrigiert.&lt;BR /&gt;&lt;BR /&gt;Zu Deinem eigentlichen Problem: Mario hat das schon korrekt gesagt: Das Objekt ist genau an einem Punkt im Projekt verankert. Nimm alle Bibliotheken aus dem Bib-Manager und Du siehst die EInsetzpunkte. Im Objekt selbst ist dieser Punkt der Nullpunkt des Objektes. In der ersten Zeile in 2D und 3D (bzw. bis zur ersten Systemtransformation) ist die Kordinate 0/0 genau dieser Punkt. &lt;BR /&gt;&lt;BR /&gt;Im Einstellungsdialog kannst Du zwar eine Referenz auf einen anderen Punkt setzen, das ändert aber nichts an der Systematik. Lediglich versucht AC bei Größenänderungen zu berücksichtigen, dass es das Objekt nach der Änderung so verschiebt, dass das Objekt an dem Punkt im Projekt fixiert bleibt. Das ist aber nicht sicher, dass AC das auch schafft, wenn genau dieser Punkt sich auch innerhalb des Objektes in der Position verändert. Jedenfalls versetzt das das Objekt. Also seinen Einsetzpunkt im Projekt. Alles innerhalb des Objektes bleibt aber auf den internen Objektnullpunkt bezogen. Weswegen z.B. auch Dein Text (bezogen auf die linke untere Ecke) mitrutscht und nicht fixiert bleibt.&lt;BR /&gt;&lt;BR /&gt;Welcher Hotspot im Dialog als Referenz/Anker ausgewählt wurde, lässt sich im Skript übrigens nicht abfragen.&lt;BR /&gt;&lt;BR /&gt;Hier Dein etwas redigierter Quelltext:&lt;BR /&gt;&lt;BR /&gt;&lt;PRE&gt;! Variablen&lt;BR /&gt;laenge = groesse -0.020&lt;BR /&gt;halb = laenge / 2&lt;BR /&gt;htspt = 1 ! Zähler Fangpunktindex&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;! Start Rechteck zeichnen&lt;BR /&gt;PEN stift_rechteck&lt;BR /&gt;RECT2 0,0,laenge,laenge&lt;BR /&gt;&lt;BR /&gt;! Achsen&lt;BR /&gt;PEN stift_achsen&lt;BR /&gt;LINE_TYPE linie_achsen&lt;BR /&gt;&lt;BR /&gt;LINE2 halb, 0, halb, laenge&lt;BR /&gt;LINE2 0 , halb, laenge, halb&lt;BR /&gt;&lt;BR /&gt;! Innereien des Rechtecks&lt;BR /&gt;&lt;BR /&gt;LINE_TYPE 1&lt;BR /&gt;diagonale = laenge * 0.088  ! ~ * SQR(2) / 4 / 4  ! Sinn?&lt;BR /&gt;&lt;BR /&gt;LINE2   halb+diagonale, halb+diagonale, laenge-diagonale, laenge-diagonale&lt;BR /&gt;LINE2   halb-diagonale, halb+diagonale,        diagonale, laenge-diagonale&lt;BR /&gt;LINE2        diagonale,      diagonale,   halb-diagonale,   halb-diagonale&lt;BR /&gt;LINE2 laenge-diagonale,      diagonale,   halb+diagonale,   halb-diagonale&lt;BR /&gt;&lt;BR /&gt;! Hotspots&lt;BR /&gt;! Mitte&lt;BR /&gt;htspt = htspt + 1 : HOTSPOT2 halb, halb, htspt  &lt;BR /&gt;&lt;BR /&gt;! Ecken&lt;BR /&gt;htspt = htspt + 1 : HOTSPOT2 0, 0, htspt  !!! lu&lt;BR /&gt;htspt = htspt + 1 : HOTSPOT2 0, laenge, htspt  !!! lo&lt;BR /&gt;htspt = htspt + 1 : HOTSPOT2 laenge, 0, htspt  !!! ru&lt;BR /&gt;htspt = htspt + 1 : HOTSPOT2 laenge, laenge, htspt !!! ro &lt;BR /&gt;&lt;BR /&gt;! Ende Rechteck zeichnen&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;! Start Bezeichnung (Text)&lt;BR /&gt;&lt;BR /&gt;IF seite="links" THEN&lt;BR /&gt;  anker = 9&lt;BR /&gt;  ADD2 0,0 : rtg = 1&lt;BR /&gt;ELSE&lt;BR /&gt;!  IF seite = "rechts" THEN&lt;BR /&gt;    anker = 7&lt;BR /&gt;    ADD2 laenge,0 : rtg = -1&lt;BR /&gt;!    ELSE&lt;BR /&gt;!  	ADD2 0,0 : rtg = 1&lt;BR /&gt;!  ENDIF&lt;BR /&gt;ENDIF&lt;BR /&gt;&lt;BR /&gt;! Text&lt;BR /&gt;DEFINE STYLE stil_bezeichung "Arial", 2, anker, 0&lt;BR /&gt;SET STYLE stil_bezeichung&lt;BR /&gt;PEN stift_bezeichung&lt;BR /&gt;&lt;BR /&gt;gr = STR(groesse*1000,3,0)&lt;BR /&gt;&lt;BR /&gt;bezeichnung="ZLDA\n" + gr&lt;BR /&gt;TEXT2 pos_x*rtg, pos_y, bezeichnung&lt;BR /&gt;&lt;BR /&gt;!!Hotspots&lt;BR /&gt;MUL2 rtg,1&lt;BR /&gt;htspt = htspt + 1 : HOTSPOT2 0, 0, htspt, pos_x, 1 ! Basisfangpunkt&lt;BR /&gt;htspt = htspt + 1 : HOTSPOT2 pos_x, 0, htspt, pos_x, 2 ! beweglicher Fangpunkt&lt;BR /&gt;htspt = htspt + 1 : HOTSPOT2 -0.1, 0, htspt, pos_x, 3, pos_x ! Referenzpunkt&lt;BR /&gt;DEL 2&lt;BR /&gt;&lt;/PRE&gt;</description>
      <pubDate>Mon, 15 May 2017 21:23:26 GMT</pubDate>
      <guid>https://community.graphisoft.com/t5/Programmierung/Ankerpunkt-setzen/m-p/550673#M6363</guid>
      <dc:creator>Frank Beister</dc:creator>
      <dc:date>2017-05-15T21:23:26Z</dc:date>
    </item>
  </channel>
</rss>

