Kategorie: Blog: Der Visio Guru
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.
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.
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?
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.
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
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!
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.