Racks zusammenfassen – Schritt 2

Schritt II
Die Racks sollen Namen haben. Diese Namen sollen im Report aufgelistet werden. Und der Name soll als Beschriftung angezeigt werden. Dafür gibt es zwei Lösungen:
* Man kann die Namen über die Daten eingeben.
* Man kann die Namen über Entwicklertools / Shape-Name festlegen.
Ich habe mich für letztere Variante entschieden.
Da das Shape eine Gruppe ist, gibt nun auch wieder zwei Varianten, wie man den Namen anzeigen lassen kann:
* In einem Mitgliedsshape mit einer Verknüpfung auf das Gruppenshape, also:
= Sheet.4711!Prop.Rackname
oder:
= Sheet.4711!NAME()
Und diese Information – gespeichert in einer benutzerdefinierten Zelle oder in einem Daten Feld kann über Einfügen / Feld als Text eingefügt werden.
Auch hier habe ich mich für die zweite Variante entschieden:
* direkt auf der Gruppe habe ich den Text editiert ([F2]) und dann über Einfügen / Feld / Objektinfo / Name eingefügt. Mit dem Werkzeug „Textblock“ kann man ihn verschieben.
Und über Entwicklertools / Schutz habe ich den Text der Gruppe geschützt. Alternativ: im ShapeSheet.

Daten und Datengrafik

Eine hübsche Frage zu Visio:
An eine Zeichnung wird eine Exceltabelle gebunden mit technischen Informationen. Einige davon werden über eine Datengrafik angezeigt. Die Frage: Ich möchte die Texte ein klein wenig verschieben.
Leider sind die Datengrafiken etwas sperrig in Bezug auf die Anpassung, beispielsweise von Textpositionen.
Ich schlage vor ein eigenes Shape zu erstellen. Eine Gruppe, die mehrere Mitgliesdselemente beinhaltet. Ein Datensatz wird auf die Gruppe gezogen. Die „inneren“ Shapes holen sich mit einem Verweis auf das äußere Gruppenshape die Information, beispielsweise
=Sheet.4711!Prop._vis_Power
Diese Information wird angezeigt, kann bequem formatiert und verschoben werden. Die Datengrafik muss entfernt werden.
Und dann kam die Frage: Aber ich möchte möglicherweise noch eine Farbe verwenden – je nach Wert. Natürlich kann man so etwas im ShapeSheet einrichten. Datengrafik wäre einfacher.
Mein Vorschlag – warum nicht beides: ein selbst gebautes Shape, dass die Daten anzeigt unter Verwendung der Datengrafik. Der Vorschlag kam gut an.

Dynamische Breite und Höhe

Hallo Herr Martin,
in einer excel Tabelle habe ich flächen mit den jeweiligen abmaßen beschrieben. Ist es möglich diese Tabelle mit visio derart zu verknüpfen, dass die shapes (ähnlich wie in der netzwerkverknüpfung die sie beschrieben haben und die Formatierung der shapes beeinflusst haben) direkt in der beschriebenen Größe erzeugt werden? Wenn ja, ist das ohne großen programmieraufwand möglich und wo könnte ich mir das Vorgehen anlesen/zeigen lassen?
Ziel ist es lediglich in der Tabelle zu arbeiten und die shapes dann „automatisch“ anzupassen
 
Vielen Dank und ein schönes Wochenende
 
####
 
Hallo Herr G,
kennen Sie das ShapeSheet?
Erzeugen Sie eine Zeichnung und verknüpfen diese mit einer Exceltabelle.
Erzeugen Sie ein Rechteck.
Verknüpfen Sie einen Datensatz mit diesem Rechteck.
Verweisen Sie im ShapeSheet des Rechtecks bei der Breite auf die Spalte der Breite; bei der Höhe auf die Spalte mit der Höhe. Fläche wird nicht funktionieren!
Duplizieren Sie dieses Rechteck und weisen den anderen Rechtecken die anderen Datensätze zu.
Klappt!

Dynamische Verbinderformate

Die Aufgabe klingt einfach – ist aber ein wenig knifflig: Wenn ein Verbinder »kor-rekt« klebet, das heißt, wenn Angang und Ende mit statisch an Verbindungspunkte eines anderen Shapes kleben, soll sich die Linie rot färben.
Klebt ein Verbinder, dann steht steht in den Zellen BeginX und BeginY eine Formel der Form:
=PAR(PNT(Process.4!Connections.X2,Process.4!Connections.Y2))
Wenn nicht, dann steht in den beiden Zellen nur die X- und Y-Angabe, beispiels-weise 110 mm und 220 mm.
Die Formel selbt kann – beispielsweise in einer userdefined Zelle mit der Funktion
=EVALCELL(BeginX)
ermittelt werden. Damit man auf den Text zugreifen kann, muss dieser in einen Text umgewandelt werden, also beispielsweise:
=FORMAT(EVALCELL(BeginX),“@“)
Dies liefert entweder
PKT(100,000 mm;8,360 mm)
oder
100,000 mm
Und davon kann man nun die ersten drei Zeichen herauslesen:
=LEFT(FORMAT(EVALCELL(BeginX),“@“),3)
Nun kann in einer anderen Zelle Bezug auf diese beiden benutzerdefinierten Zellen benommen werden, beispielsweise so:
=GUARD(IF(AND(STRSAME(User.KlebeverhaltenLinks,“PKT“),
STRSAME(User.KlebeverhaltenRechts,“PKT“)),2,0))
2 steht für rote Linienfarbe, 0 für schwarze Linienfarbe. Man könnte auch die Linie dicker machen oder formatieren:
Die Formel für die Linienstärke wäre dann:
=GUARD(IF(AND(STRSAME(User.KlebeverhaltenLinks,“PKT“),
STRSAME(User.KlebeverhaltenRechts,“PKT“)),5 pt,1 pt))

Unterschiedliche Schriftgrößen in einer Gruppe

Hallo Herr Martin,
Auffällig ist, dass die Schriftgröße irgendwie abgeleitet wird vom Shape Text. Dies sieht dann komisch aus, wenn man die Shape-Texte unterschiedlich groß wählt (z.B. um mehr Text bei einzelnen Shapes unterzubringen) und dann nummeriert. Da sind dann die Nummerierungen unterschiedlich groß. Kann man nicht eine separate Schriftgröße für alle Nummern vorgeben, unabhängig von den Shape-Texten? Vielleicht konfigurierbar im Nummerierungsassistent?
Eine hübsche Fingerübung: Wird die Schriftgröße in einer Gruppe verkleinert, verkleinert sich die Schriftgröße in allen Mitglied-Shapes.
Die Lösung ist einfach: im ShapeSheet des Shapes, in dem sich die Nummer befindet, ändere ich in der Zelle
Char.Size
die Größe von
= 10 pt
auf
=Guard(10 pt)

Seitennummerierung mit Feldern

Ein Teilnehmer einer meiner Visio-Schulungen hat mich auf folgendes Phänomen aufmerksam gemacht: Wenn man mehrere Zeichenblätter hat, die alle einen Hintergrund verwenden und wenn auch diesem Hintergrund sich ein Shape befindet mit den Felder Zeichenblattnummer und Anzahl der Zeichenblätter so funktioniert alles wunderbar. Wird allerdings eines der Blätter über das ShapeSheet ausgeblendet, zählt Visio noch immer die Gesamtanzahl der Zeichenblätter … Ein Bug sicherlich nicht, aber: unglücklich!

ShapeSheet statt Datengrafik

Es muss nicht immer eine Datengrafik sein.
In Visio wird ein Shape mit einer Jahreszahl beschriftet. Je nach Zahl werden andere Shapes entsprechend eingefärbt.
Dies könnte man beispielsweise folgendermaßen realisieren:
Ein Shape heißt Sheet.1 Es ist beschriftet. Ein anderes Shape zieht sich diese Information mit
=SHAPETEXT(Sheet.1!TheText)
Eine Liste wird in einer benutzerdefinierten Zelle definiert:
=“2015;2016;2017;2018;2019;2020;2021;2022″
Die Position der Zahl wird ermittelt:
=(FIND(User.Jahr,User.Jahresliste)+4)/5
Eine Farbliste existiert – jede Zahl steht für eine bestimmte Farbe:
=“1;5;12;18;44;22;9;20″
Und dieser korrespondierende Wert wird ermittelt:
=INDEX(User.Jahresposition,User.Farbliste,“;“)

Verschiedene Dreiecke

Heute in der Visio-Schulung fragte eine Teilnehmerin, was denn der Unterschied zwischen den beiden Shapes „Dreieck“ und „Rechtwinkliges Dreieck“ sei.
Ich habe eine Weile probiert, dann im Shapesheet nachgeschaut: Bei Dreieck steht in der Zelle „LockCalcWH“ der Wert 1 (True), beim anderen eine 0. Und was bewirkt diese Zelle. Die Hilfe verrät es:
„Sperrt das Auswahlrechteck eines Shapes, damit dieses nicht neu berechnet wird, wenn ein Scheitelpunkt bearbeitet oder ein Zeilentyp im Abschnitt Geometry geändert wird.“
Das heißt: wenn man einen der Eckpunkte mit dem Bleistiftwerkzeug verschied, verändert sich das umschreibende Rechteck beim Dreieck nicht, beim „Rechtwinkligen Dreieck“ wird es dagegen angepasst.

Gruppenschutz

Guten Abend,
 
Eine schnelle Frage mal eben voraus. Ich hatte mir heute ein paar Videos von Ihnen auf Linkedin angesehen. Video 4.7 Verhaltens-mechanismen, Schutz und Copyright hat mich inspiriert Symbole in ein fertiges/gruppiertes Shape zu integrieren.
Ich kann aber keine Shapes in gruppierte Shapes, die aus einer Schablone kommen, dropen. Die entsprechenden Einstellen bei beiden Shapes hatte ich gem. Anleitung gemacht. Mit einem frisch gruppiertem Shape ging es auch.
Auch kann ich die Shapes aus der Schablone nicht un-groupen.
####
Hallo Herr W.,
 
Zu Ihrer „kurzen“ Frage – das sind zwei Dinge:
* Wenn Sie mehrere Shapes markieren und in eine Schablone ziehen, werden sie immer gruppiert. Sie können dann nur das EINE Mastershape (also die Gruppe) aus der Schablone ziehen.
* Neben Entwicklertools / Schutz gibt es ein ShapeSheet unter den Shapes. Kennen Sie es? DORT (und nur dort) kann man das „Gruppieren aufheben“ verbieten.

Shape-Datensätze

Sehr geehrter Herr Martin,
vielen Dank für das freundliche Gespräch und die Unterstützung. Hier noch einmal die Fehlerbeschreibung von meiner Seite.
• Ich habe ein Mastershape erzeugt. Die Datensätze des Mastershapes wurde nicht manuell erzeugt, sondern wurden von einer Shape-Datensatz Vorlage (hier „EMS_Instrument“) übernommen. Bei den Shapedaten habe ich eine „Variable Liste“ erzeugt mit fest hinterlegten Einträgen aus der Shapedaten-Vorlage.
• Nutze ich nun dieses Mastershape in einer Zeichnung und definiere unter „Funktion“ einen frei gewählten Text welcher nicht in der vordefinierten Auswahl besteht z.B. ABC. Dieser wird jedoch nach dem Schließen und erneuten Öffnen der Zeichnung aus dem verwendeten Shape wieder entfernt/gelöscht:
• Aus meiner Sicht gleicht Visio beim Laden der Zeichnung alle in der Zeichnung verwendeten Shapes mit den Mastershapes bzw. eigentlich mit der verknüpften Datensatzvorlagen ab. Da bei diesem der Eintrag „ABC“ nicht existiert wird der Eintrag ABC gelöscht bzw. die einzelnen Datensatzvorlage einfach wieder überschrieben. (Hinweis am Rande: Dieses passiert nur, wenn die variable Liste bereits in der Datensatzvorlage Einträge enthält. Ist die variable Liste in der Datensatzvorlage leer, werden freie Eingaben in der Zeichnung nicht überschrieben.)
• Ich habe mir nun über den Weg geholfen, dass ich im Mastershape die Verknüpfung „User.CPMSetList“ zur Datensatzvorlage entfernt habe und so kein Abgleich mehr Datensatzvorlage besteht.
• Ich würde mich freuen, wenn sie mir dieses Phänomen bei ihnen auch einmal gegenprüfen könnten.
• Zur Info: Ich nutze Visio Professional 2016 im „Verfahrenstechnik“ Modus
Best Regards
#####
Hallo Herr T.,
es geht einfacher: erstellen Sie ein Shape mit Daten. Fügen Sie die Daten zu einem ShapeDatensatz hinzu:
Übertragen Sie die Daten auf ein zweites Shape. Die Daten sind auf dem zweiten Shape vorhanden. Löschen Sie den Shape-Datensatz. Die Datenfelder (und mit ihnen die Daten) werden ebenfalls gelöscht. Das kann nicht im Sinne des Erfinders sein.
Ich habe hier Visio in Office 365 Version 1905; Build 11629.20246 – das dürfte die neueste Version sein.
 
Umgekehrt: mir ist aufgefallen: wenn ich das Shape mit den Daten, die aufgrund eines Daten-Satzes erzeugt wurden, in eine andere Datei kopiere, wird der Shape-Datensatz mitkopiert.
Sie haben recht: der Verweis auf den Daten-Satz steht im ShapeSheet – wird die Zelle „User.CPMSetList“ gelöscht, wird die Verknüpfung aufgehoben – alles klappt wieder.
Was mich wundert: ich finde die Shape-Datensätze nicht! Weder im ShapeSheet des Dokuments noch des Zeichenblattes. Auch nicht im Zeichnungsexplorer. Irgendwo müssen sie doch gekapselt sein … Witzig: wenn ich mit dem Makro diese Aktionen aufzeichne, erhalte ich: NICHTS!
 
Sorry – ich muss es deutlich sagen – das ist wohl ein Bug! Heißt: „vorsichtig“ bis gar nicht mit den Shape-Datensätzen umgehen!
 
Ich habe in meinem Buch „Visio 2013/2016 für Entwickler“ aufgelistet:
Erstaunlicherweise stehen einige Dinge nicht im ShapeSheet. Man kann sie nur per Programmierung auslesen. Hierzu gehören:
• Der Text
• Werden Informationen aus einer Datenquelle mit einem Shape verknüpft, kann man aus den ShapeSheet nicht die Verknüpfung ablesen. Die Daten werden bei jeder Aktualisierung neu in die Daten des Shapes geschrieben.
• Der Name des Zeichenblattes
• Der Name des verwendeten Hintergrundblattes
 
Ich werde es in der nächsten Auflage um den Punkt „Shape-Datensätze“ erweitern.
 
schöne Grüße
 
Rene Martin