Text an der selben Position

Der Kunde möchte bestimmte Texte stets an der gleichen Stelle auf einem Zeichenblatt positioniert haben. genau: einige Millimeter oberhalb einer Linie.
Nun: mit einem Bezug auf die Y-Position des Shapes ist das kein Problem. Über ein Steuerelement kann der Text dennoch verschoben werden. So wie auch die Position des querlaufenden Balkens.

20161018messstelle01

201610108messstelle02

Verbindungspunkte

Kunde möchte auf einer Linie ganz viele Verbindungspunkte haben. Nun ein paar Zeilen Code und schon sind die 96 Verbindungspunkte im gleichen Abstand zueinander gesetzt. So etwas mache ich nicht per Hand!
20161018verbindungspunkte
Sub Verbindungspunkte()
 
Dim vsShape As Shape
Dim i As Integer
Set vsShape = ActivePage.Shapes(„Sheet.430“)
vsShape.AddRows visSectionConnectionPts, i, 0, 96
For i = 1 To 96
vsShape.Section(visSectionConnectionPts).Row(i).Cell(0).FormulaU = „=2 mm+2 mm*“ & (i – 1) * 2
Next
 
End Sub

Verborgene Blätter und pdf

Amüsant: Für eine Firma habe ich eine Vorlage eingerichtet. Sie enthält ein Zeichenblatt mit mehreren Elementen. Die Vorlage enthält ein weiteres Zeichenblatt, das ich über das ShapeSheet ausgeblendet habe (UIVisibility 1).
Ein Blatt ist verborgen
Ein Blatt ist verborgen
Nun fragte mich der Kunde, warum beim pdf-Export zwei Blätter ausgedruckt werden. Natürlich mein verborgenes Blatt.
Leider ein Blatt zu viel im pdf-Dokument
Leider ein Blatt zu viel im pdf-Dokument
Um dies zu verhindern, schaue ich ins ShapeSheet, ob es dort eine Blatt-Eigenschaft „NonPrinting“ (wie beim Shape) gibt. Leider nein.
Nun – da ich nur die Informationen des verborgenen Blattes benötige, wandle ich es in ein Hintergrundblatt um. Und damit wird es auch nicht gedruckt.

Linienformate

Hallo Herr Martin,
für technische Zeichnung benötige bei Shapes unterschiedliche Kantenabrundungen: Rechteck und Kurven. Wie mache ich das?
Die Antwort: So etwas funktioniert nur mit mehreren Shapes (die Sie natürlich gruppieren können). Ein Shape kann nur ein Linienformat besitzen.
20160923linie01
20160923linie02

Text drehen – geht nicht

Ein Teilnehmer in der Visio-Schulung wundert sich, dass er den Text eines Pfeiles mit dem Werkzeug „Textblock“ nicht drehen kann. Ich frage, ob er den Pfeil durch einen Verbinder erzeugt hat. Ein Blick in den Shape-Namen zeigt, dass er aus dem Master-Shape „Linie mit Pfeil“ erzeugt wurde.
Und ein zweiter Blick ins ShapeSheet zeigt – tatsächlich: der Winkel ist geschützt.

20160913pfeil

Bedingte Formatierung

Eine hübsche Frage aus der letzten Visio-Schulung:
Ein Verbinder soll blau formatiert werden bei einem (Prozent-) Wert > 50; bis einschließlich 50 soll die Linie rot dargestellt werden.
Die Datengrafiken scheiden aus, da man dort nur die Füllung bedingt formatieren kann, jedoch nicht die Linie. Über Layer kann man zwar Linien formatieren, aber nicht bedingt. Also das ShapeSheet:
Aus eine Verbinderlinie wird eine Dateneigenschaft eingetragen. Diese wird über Einfügen / Feld auf der Linie angezeigt und kann problemlos mit den Werkzeug „Textblock“ verschoben werden.
Im ShapeSheet wird in der Zelle LineColor folgende Formel eingetragen:
=GUARD(IF(Prop.Anteil<=50,RGB(255,0,0),RGB(0,0,255)))
Natürlich kann man auch weitere Farben verwenden. So kann man eine bedingte Formatierung nachbilden.

20160912verbinder01

Gruppen und drehen

Schnell eine technische Zeichnung erstellt – eine Rakete.

20160911rakete
Da die Container und Legenden für meine Zwecke nicht genügten, habe ich eigene Beschriftungssysmbole erstellt. Sie sind gruppiert. Dreht man die Gruppe, dreht sich der Text man. Man kann nun entweder innerhalb der Gruppe das Shape wieder „zurück“ drehen. Oder man dreht den Text mit Hilfe des Werkzeugs „Textblock“ „zurück“.

20160911rakete02 20160911rakete03 20160911rakete04 20160911rakete05
Übrigens: Kennen Sie die „Originalrakete“?

Eigene Organigrammsvorlage

Ich hätte es nicht geglaubt, aber es funktioniert:
Wenn Sie in Visio 2010 die Vorlage Organigramm öffnen, können Sie auf ihrer Basis eine neue Vorlage erstellen.
Ziehen Sie die Shapes für Chef und Mitarbeiter auf das Zeichenblatt, formatieren Sie sie und speichern Sie diese Shapes in einer neuen Schablone.
Achtung: Die Shapes müssen andere Namen tragen als die Shapes in der Orga-Schablone, beispielsweise xyPosition.
Achtung: Gut testen – möglicherweise müssen einige Einstellungen im Shapesheet mit GUARD fixiert werden, damit der Assistent sie nicht überschreibt.
20160904Orga01
Und: nun sehr erstaunlich: trägt man in eine Excel-Tabelle die Namen der neuen Mastershapes ein, greift der Assistent darauf zu und erzeugt ein Organigramm mit den neuen Shapes. Klasse!
20160904Orga02 20160904Orga03

Dynamische Listen

Hallo Herr Dr. Martin,
 
vielen Dank für die schnelle Antwort.
 
Gleichzeitig hänge ich mal mein Beispiel vom Klimaschrank an. Ich habe da die Shape Daten kreiert. Nun möchte ich erreichen, wenn ich aus der Liste der Modelle (Property Model) eines auswähle, dass sich die Werte von „Air Flow“ (Property AirFlow), „DX Cooling Capacity (total)“ (Property DX_total) usw. ändern. Kann man das erreichen und wie?
 
Vielen Dank im Voraus.
20160811Daten01 20160811Daten02
#######
Hallo Herr P.,
Da Sie einige längere Texte haben, schlage ich folgendes Vorgehen vor:
Ich habe einige User-defined Zellen eingefügt:
In User.Model steht die Formel:
=FIND(Prop.Model,Prop.Model.Format)
Sie ermittelt die Position des Auswahltextes aus der Liste, also bei CCD/U 41 A den Wert 1, bei CCD/U 61 A den Wert 12, bei CCD/U 81 A den Wert 23 usw.
Die Zelle User-Auswahl wandelt diese Liste in 0,1,2,3,4,5,6,7 um.
In die Zelle User.Werte habe ich Dummy-Werte eingetragen: die erste Liste lautet 1;2;3, die zweite 4;5;6, die dritte 7;8;9 usw. getrennt wurden sie durch ein „|“.
In der Zelle User-Liste (=INDEX(User.Auswahl,User.Werte,“|“)) ermittle ich die gewünschte Liste. Diese wird nun in die Zelle Prop.Air_Flow gezogen.
So etwas möchten Sie?
20160811Daten03

ShapeSeet – Dynamische Daten

Sehr geehrter Herr Dr. Martin,
 
ich habe mir gerade Ihr Buch „Visio 2010 Programmierung“ zugelegt.
 
Ich habe ein Shape erstellt (Klimaschrank), das in den Abmessungen für eine Reihe von Modellen gleich ist, sich aber in den technischen Details unterscheidet. Ich habe mir deshalb eine Reihe von Shape Daten erstellt. Nun möchte ich die Shape Daten selbst (Properties) ändern, wenn ich das Modell in der Auswahlliste das Modell auswähle (CCD/U 41 A;CCD/U 61 A;CCD/U 81 A;CCD/U 121 A;CCD/U 171 A;CCD/U 201 A;CCD/U 110 CW;CCD/U 200 CW).
Ich habe mir mal das Beispiel mit der Flügelmutter angeschaut und versucht, den Durchmesser zu setzen. Dazu habe ich die Eigenschaft auf „Visible“ gesetzt und unter „Actions“ einen neuen Eintrag „Actions.Row_5“ mit „=SETF(GetRef(User.Diameter),Prop.Diameter)“ erzeugt. Leider bleibt der voreingestellte Wert immer erhalten, egal welchen Durchmesser ich angebe.
Wie kann man die Werte automatisch verändern? Muss ich dazu ein VBA Makro schreiben?
####
Hallo Herr P.,
 
Sie haben einen Parameter in der Formel vergessen, bzw. falsch eingetragen: Sie muss korrekt heißen:
 
=SETF(GetRef(Prop.Diameter.Invisible),FALSE)
 
wenn Sie die Eigenschaft einblenden woollen (Invibible = FALSE)
 
Sie können auch auf die Funktion GetRef verzichten und schreiben:
 
=SETF(„Prop.Diameter.Invisible“,TRUE)
 
wenn Sie sie wieder ausblenden wollen.
Oder Sie packen beide Funktionen in eine Zelle (dynamisch: ein- und ausschalten).
 
Wenn Sie den „Umweg“ übe eine benutzerdefinierte Zelle gehen, dann lautet die Formel:
 
=SETF(GetRef(User.Diameter),0)
 
oder fürs Ausschalten (die Alternative):
 
=SETF(„User.Diameter“,1)
 
Dann verweisen Sie in der Zelle Prop.Diameter.Invisible auf:
 
=User.Diameter
20160810Schraube02 20160810Schraube01