Nachbarshapes

Der Befehl
SpatialRelation
ist klasse: damit kann man überprüfen, ob ein Shape in der Nähe eines anderen liegt. Durchläuft man mit einer Schleife alle Shapes, kann man schnell die Nachbarn herausfinden.
Allerdings: ich suche die benachbarten „Regale“ zu den Spirituosen und finde drei Regale (ich suche nur nach den weißen Shapes). Was tun? Also doch ein bisschen x- und y-Rechnung:
For j = 1 To UBound(strShapeNameMitText)
If vsBlatt.Shapes(strShapeNameMitText(j)).Cells(„FillForegnd“).Result(„in“) = 1 Then
If Asc(Left(vsBlatt.Shapes(strShapeNameMitText(j)).Text, 1)) <> 63 Then
If vsBlatt.Shapes(strShapeNameMitText(i)).SpatialRelation(vsBlatt.Shapes(strShapeNameMitText(j)), dblTolerance, visSpatialIncludeHidden) > 0 Then
If CInt(vsBlatt.Shapes(strShapeNameMitText(j)).Cells(„Angle“).Result(„deg“)) = 0 Then ‚ — waagrecht
If (vsBlatt.Shapes(strShapeNameMitText(j)).Cells(„PinX“).Result(„cm“) >= vsBlatt.Shapes(strShapeNameMitText(i)).Cells(„PinX“).Result(„cm“) – _
vsBlatt.Shapes(strShapeNameMitText(i)).Cells(„Width“).Result(„cm“) / 2 And _
vsBlatt.Shapes(strShapeNameMitText(j)).Cells(„PinX“).Result(„cm“) <= vsBlatt.Shapes(strShapeNameMitText(i)).Cells(„PinX“).Result(„cm“) + _
vsBlatt.Shapes(strShapeNameMitText(i)).Cells(„Width“).Result(„cm“) / 2) Then
xlZelle.Offset(lngExcelZeile, 8).Value = vsBlatt.Shapes(strShapeNameMitText(j)).Text
xlZelle.Offset(lngExcelZeile, 9).Value = vsBlatt.Shapes(strShapeNameMitText(j)).Name
lngExcelZeile = lngExcelZeile + 1
blnRegalierung = True
End If
Else
If (vsBlatt.Shapes(strShapeNameMitText(j)).Cells(„PinY“).Result(„cm“) >= vsBlatt.Shapes(strShapeNameMitText(i)).Cells(„PinY“).Result(„cm“) – _
vsBlatt.Shapes(strShapeNameMitText(i)).Cells(„Width“).Result(„cm“) / 2 And _
vsBlatt.Shapes(strShapeNameMitText(j)).Cells(„PinY“).Result(„cm“) <= vsBlatt.Shapes(strShapeNameMitText(i)).Cells(„PinY“).Result(„cm“) + _
vsBlatt.Shapes(strShapeNameMitText(i)).Cells(„Width“).Result(„cm“) / 2) Then
xlZelle.Offset(lngExcelZeile, 8).Value = vsBlatt.Shapes(strShapeNameMitText(j)).Text
xlZelle.Offset(lngExcelZeile, 9).Value = vsBlatt.Shapes(strShapeNameMitText(j)).Name
lngExcelZeile = lngExcelZeile + 1
blnRegalierung = True
End If
End If
End If
End If
End If
Next

Shapes anordnen

Ansicht / Add-Ons / Visio-Extras / Shapes anordnen
Mit diesem Assistenten kann man schnell viele Shapes erzeugen, die im gleichen Abstand zueinander liegen. Schade, dass Visio diesen Assistenten nicht weiter entwickelt hat oder auch weiter an die Oberfläche geholt hat.

Symmetrisches Shape

Hallo Herr Martin,
Das Zentrum des Shapes soll seine y-Koordinaten nicht verändern, nur die Linien sollen sich (symmetrisch?) verlängern und die Texte auf Höhe der Dreiecke bleiben. Wie mache ich so etwas?
Hallo Herr M.,
Die Antwort zu Ihrem Supply Limit: es gibt keine Taste, um die Höhe (oder Breite) symmetrisch zum Pin zu ändern. Man könnte es über das Fenster Ansicht / Größe und Position machen – umständlich!

Ich schlage ein bisschen ShapeSheet vor: Fügen Sie einen Controlpunkt ein und beziehen die beiden Labels, die beiden Dreiecke und die beiden Enden der Linie auf diesen Punkt.

Sie finden meine Lösung unten links in dem roten Kasten. Hilft das?

Zeitstrahl

Hallo Herr Martin.
 
Ich würde gern mehrere Varianten eines Ablaufs mit Meilensteinen und Zeitabschnitten zeichnen. Die Zeitachse in Visio scheint dafür gut geeignet zu sein. Allerdings möchte ich alles ohne Datumsangaben abbilden. Momentan stelle ich die Schriftfarbe der Datumsangaben auf die Hintegrundfarbe ein, so dass sie „unsichtbar“ ausgegeben werden. Gibt es eigentlich eine bessere Möglichkeit in Visio die Zeitachse, Meilensteine etc. ohne konkrete Datumsangaben abzubilden?
#####
Hallo Herr B.,
kennen Sie sich mit dem ShapeSheet aus? Das Shape, in dem sich der Text befindet holt sich die Informationen aus dem „Linienshape“. Man findet im ShapeSheet in der Zelle TextFields einen Verweis, beispielsweise:
=Sheet.36!User.visMask
Im anderen Shape wird die userdefined Cell erklärt:
=“{{dd.MM.yyyy}}
DARAN kann man nicht „schrauben“. Aber:
schalten Sie per Formatierung (oder im ShapeSheet) die Schriftfarbe auf weiß und speichern Sie das Shape dann in einer eigenen Schablone ab.
Sie benötigen ja das Datum, damit Visio die Position auf dem Zeitstrahl bestimmt. Also bleibt nur wegformatieren.

Festes Gitter

Kann man in Visio das Gitter so einstellen, dass die Shapes sich nur innerhalb des Gitters bewegen und nicht in das Gitter „hineinfallen“? Nein. Es geht nicht.
Ich würde einschalten:
Ansicht / Anzeigen / Schnellstartsymbol / Festes Gitter
Ansicht / Visuelle Unterstützung / Schnellstartsymbol / Einrasten am Gitter (und sonst nichts)
Gleicher Dialog: Weitere Optionen / Hohe Ziehkraft beim Gitter – alle anderen Optionen haben eine niedrige Ziehkraft
Das Ergebnis ist „ziemlich“ gut.
Dennoch: bei einem großen Zoom „rutschen“ die Shapes doch durch das Raster …

Ausrichten – nicht nur für Profis

Erstaunlich – auch versierte Visio-Anwender wissen das nicht: in der letzten Visio-Schulung wurde die Frage nach dem Ausrichten gestellt. Warum er die Shapes mal nach links, mal nach rechts schiebt. Die Antwort ist einfach:
ich erstelle drei Shapes in der Reihenfolge wie ich sie beschriftet habe: 1 – 2 – 3. Drücke ich die Tastenkombination [Strg] + [A] wird das zuletzt erstelle Shape (3) etwas dicker markiert. Ziehe ich einen Rahmen um die Shapes wird Nummer (1) dicker markiert. Das dicker markierte Shape ist das Bezugsshape. Beim Ausrichten „gewinnt“ dieses Shape – die anderen Shapes wandern in seine Richtung; es selbst bleibt an der Position. Da ich natürlich nach einer Weile nicht mehr weiß, welches Shape ich zuerst, beziehungsweise zuletzt erstellt habe, empfehle ich folgendes Vorgehen: Markieren Sie ein Shape. Dieses Shape ist das Bezugsshape und behält seine Position bei – die anderen wandern in seine Richtung. Die übrigen Shapes können nun mit der Shrg- oder Shift-Taste dazu markiert werden. Oder Sie ziehen mit gedrückter Shift-Taste einen Rahmen um die übrigens Shapes.

Strg+A
Rahmen ziehen
(1) gewinnt
(3) gewinnt

Bauteile verbinden

In der letzten Visioschulung kam die Frage, ob man Bauteile als Art Elemente einer Bibliothek schnell an eine Zeichnung anbinden kann. Ob man einer Markierung einen Punkt hinzufügen kann, den man dann mit eine vorhandenen Zeichnung verbinden kann.
Die Antwort lautet: nein. Mann kann einer Markierung einen (Verbindungs-)punkt hinzufügen. Man kann mehreren Elementen, die aus Linien und Rechtecken bestehen nicht einen festen Ort zuweisen (und gleichzeitig noch andocken). Ich würde mit einem großen Zoom bei so einer verfahrenstechnischen Zeichnung das Teilelement so verschieben, dass die Position gut geeignet ist. Hilfslinien sind dafür gut geeignet. Und anschließend im zweiten Schritt verbinden.

Linienstärke

Linienstärke in Visio ist ein Formatattribut. Die Größe eines Shapes ist keine Formatierung. Verkleinert oder vergrößert man nun einen Visio-Zeichnung bleiben die Linienstärken erhalten. Das kann ärgerlich sein. Eine Lösung, wenn eine verkleinerte Zeichnung benötigt wird: Man erstelle ein pdf aus der Visio-Zeichnung und verkleinere (oder vergrößere) das pdf.

normal
verkleinerte Zeichnung
vergrößerte Zeichnung

Layer und Farben

Das Kugelventil aus der Schablone „Ventile und Amaturen“ liegt auf dem Layer „Ventil“. Wird dieser Layer mit einer Farbe versehen, wird einerseits die Liniefarbe geändert, aber auch die Füllfarbe des Kreises auf weiß gesetzt.
Um dies zu verhindern, muss ein zweiter Kreis erzeugt werden, der mit dem Shape gruppiert wird. Die Gruppe liegt auf dem Layer „Ventil“, das Kreisshape dagegen nicht. Damit wird die Linienfarbe des Layers nicht auf dem Kreis angewendet.

Gerader Verbinder

In der Visio-Schulung fiel die Bemerkung, dass es manchmal notwendig ist, gerade Verbinder zu erzeugen. Wie verändert man eine gewinkelte Linie in eine gerade? Die Antwort ist einfach – über das Kontextmenü.