Shapedaten im Shape und auf dem Zeichenblatt

Amüsant. Ein Zeichenblatt hat Shape-Daten. Wenn nun ein Shape darauf verweist, also mit
=ThePage!Prop. …
einen Bezug herstellt, dann erhält ein neues, leeres Blatt die Shapedaten, sobald das Shape hinüber kopiert wird.
Das heißt: Speichert man das Shape in einer Schablone, bekommt das Blatt die Daten. Diese können gefüllt werden. Auf dem Shape werden sie dann angezeigt.

Maßstab

Erstaunlich: Wählen Sie eine Vorlage mit einem Maßstab – beispielsweise Raumplan. Ändern Sie den Maßstab in eine „krumme Zahl“ – beispielsweise 3,75 cm entsprechen 1000 mm.
Ziehen Sie eine Bemaßungslinie aus der Schablone. Ändern Sie im Fenster „Größe und Position“ die Länge. Wahrscheinlich klappt es. Allerdings – einige Male ziehen, eintragen, ziehen – dann stimmen Länge mit angezeigter Zahl nicht mehr überein. Ein Blick ins ShapeSheet gibt Auskunft: der Fall „benutzerdefiniert“ wurde dort nicht abgefangen.

Bemaßungslinien

Gute Idee.
Heute in der Visio-Schulung fragte eine Teilnehmerin, ob man denn Bemaßungslinien an Objekte im Raum, beispielsweise Säulen, kleben können. So, dass man den Abstand zwischen den Säulen schnell ablesen kann, wenn sich die Säulen verschieben.
Die Antwort: Da Bemaßungslinien Linien – also mit Anfangs- und Endpunkt versehene Shapes sind, kann man an die anderen Objekte Verbindungspunkte setzen und daran die Linie kleben. So wandert die Linie beim verschieben der Säulen mit und zeigt den Abstand an.

Datenexport

Guten Tag Herr Martin,

ich habe mal versucht eine Kombination von Visio und Excel, wie von Ihnen aufgezeigt zu realisieren. Dabei sind noch einige Schwierigkeiten aufgetaucht:

Welche Einstellung muss vorgenommen werden damit in der Spalte Beschreibung gleiche Einträge zusammen gefasst werden?

Die Antwort:
Sie haben beim Export die Möglichkeit, im dritten Schritt zu gruppieren und in den Optionen gleiche Werte zusammenzufassen:

Texthintergrund

Gestern war ich verblüfft. Ein Teilnehmer zeigte mit das Visio-Shape, das er für eine Kühltruhe gezeichnet hatte. Als ich fragte, warum er ein weiteres Shape mit einer Beschriftung darüber legte, war die Antwort: nur so kann man den Text gut lesen.
Ich zeigte ihm, dass man in den Text (über Einfügen / Feld) die Geometrie-Breite einfügen kann (und auf zwei Nachkommastellen formatieren kann).
Und dass man den Texthintergrund weiß färben kann. So hat man nur ein Shape, das sogar dynamisch seine Breite anzeigt – man muss den Wert also nicht noch einmal eintragen. Er war zufrieden.

Führungslinien in den Vordergrund

Letzte Woche in der Visio-Schulung kam die Frage, wie man alle Führungslinien in den Vordergrund schieben kann.
Die Antwort: Markieren Sie alle Führungslinien über Start / Bearbeiten / Markieren / Nach Typ auswählen / Führungslinien.
Anschließend kann man sie in den Vordergrund holen, beispielsweise über Start / Anordnen / In den Vordergrund.

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.