Hallo Herr Martin,
nach einer längeren Pause beschäftige ich mich wieder mit AVEVA Diagrams bzw. Visio.
Ich möchte ein Shape für eine Messstelle zeichnen, das aus 4 Linien mit round=5 (Kreis) und einer Führungslinie besteht.
Wenn ich den Griffpunkt der Führungslinie nach rechts bewege, soll die Führungslinie am Quadrantenpunkt des Kreises (x=10, y=5) beginnen und horizontal bis zum Griffpunkt laufen. Links analog.
Wenn ich den Griffpunkt der Führungslinie nach unten bewege, soll die Führungslinie am Quadrantenpunkt des Kreises (x=5, y=0) beginnen und vertikal bis zum Griffpunkt laufen. Oben analog.
Ideal wäre, wenn die Führungslinie sich nur in den 4 gewünschten Richtungen zeigt und an den 4 Quadrantenpunkten des Kreises verankert und keine Zwischenpositionen oder -winkel einnehmen würde.
Haben Sie zu dieser Aufgabenstellung eine Idee oder ein Beispiel?
Hallo Herr M.,
so funktioniert es:
* Erstellen Sie einen Kreis. Wechseln Sie in das ShapeSheet. Schalten Sie dort im Abschnitt „Protection“ den LockAspect auf
=GUARD(1)
So bleibt er ein Kreis.
* Fügen Sie eine zweite Geometriesektion hinzu, in der Anfang und Ende in die folgenden Zeilentypen geändert werden:
MoveTo und LineTo
* Fügen Sie einen weiteren Abschnitt „Controls“ hinzu.
* Damit man den Kontrollpunkt nicht aus dem Shape herausziehen kann, wird in einer User-defined cell die Begrenzung festgelegt:
=IF(Controls.Row_1.Y>Height,SETF(„Controls.Row_1.Y“,Height),0) und
=IF(Controls.Row_1.Y<0,SETF(„Controls.Row_1.Y“,0),0)
* Das Ende der Linie, also x und y, verweisen auf das Control:
=Controls.Row_1 und
=Controls.Row_1.Y
Der y-Anfangspunkt hat die gleich y-Koordinate wie das Ende:
=Geometry2.Y2
* Bei x ist ein wenig Rechnung nötig:
=SQRT((Width/2)^2-(Width/2-Geometry2.Y1)^2)+Width/2
Der Grundgedanke ist die Formel des Kreises: x² + y² = 1
Für die linke Seite analog:
IF(Controls.Row_1>Width/2,SQRT((Width/2)^2-(Width/2-Geometry2.Y1)^2)+Width/2,-SQRT((Width/2)^2-(Width/2-Geometry2.Y1)^2)+Width/2)
Damit man bequem zwischen horizontal und vertikal umschalten kann, wird ein Abschnitt „Action“ eingefügt. In einer benutzerdefinierten Zelle wird festgelegt:
=“1 = horizontal // 2 = vertikal“
Darauf wird Bezug genommen:
* Das Menü der ActionZeile zeigt an:
=IF(User.horizontal=1,“vertikal“,“horizontal“)
* die Action selbst schaltet um:
=IF(User.horizontal=1,SETF(„User.horizontal“,2),SETF(„User.horizontal“,1))
* Die Zelle Geometry2.NoLine belndet ein oder aus:
=User.horizontal<>1
* und nun kann der dritte Geometrieabschnitt erzeugt werden, in dem Bezug genommen wird:
IF(Controls.Row_2.Y>Height/2,SQRT((Height/2)^2-(Height/2-Geometry3.X1)^2)+Height/2,-SQRT((Height/2)^2-(Height/2-Geometry3.X1)^2)+Height/2)