Wenn ich ein Symbol in einer Prototypen-Zeichnung definiere, das Linien mit unterschiedlichen globalen Breiten hat, dann geht dieser Unterschied beim Skalieren im Stileditor des Darstellungsmodells verloren.
Dort kann man nur einen Wert für alle Linien eingeben. Sobald man ein solches Symbol in Höhe und Breite skaliert, muss man dort aber auch eine ebenso skalierte Linienbreite angeben, damit die Proportionen erhalten bleiben. Der Wert gilt dann aber offensichtlich für alle Linien im Symbol.

Im XML gibt es für jede einzelne Linie auch einen LWBYGLOBALWIDTH Tag, d.h. dort kann man den Unterschied auch beim Skalieren durch Eingabe desselben Faktors beibehalten. Dieser Ansatz ist allerdings bei komplexen Symbolen eher mühsam.

Als Lösung gibt es zwei weitere Ansätze:

1. Man erzeugt den Block nicht mit Linien, sondern mit gefüllten Polygonen (Solids). Dann entfällt die Skalierung, weil die Flächen automatisch mitskaliert werden.

2. Man macht die Skalierung nicht über die Oberfläche, sondern im XML und zwar durch Anfügen einer Berechnung der Art „Wert * Faktor“. Das kann man mit einem Editor recht leicht über die Verwendung „Regulärer Ausdrücke“ mit Suchen & Ersetzen erledigen. Da jeder Editor etwas anders mit regulären Ausdrücken umgeht hier nur ein Beispiel:

Man sucht nach ([0-9])

Das bedeutet in meinem Editor, es wird nach dem schließenden XML-Tag ParameterValue gesucht, wo davor irgend eine Ziffer steht.

Dann ersetzt man das mit $1 * FAKTOR

Das wiederum bedeutet: $1 nimmt den Wert aus der ersten variablen Suchanweisung ([0-9]), also die beliebige Ziffer und hängt die Berechnung ‚* FAKTOR‘ dahinter, bevor der Tag geschlossen wird. FAKTOR kann in diesem Fall entweder ein konkreter Wert sein ‚* 2,5‘ oder aber ein Attribut aus der Tabelle/View.

Klingt jetzt vielleicht etwas kryptisch, aber das funktioniert prima. Ohne diese regulären Ausdrücke hätten wir massive Probleme bei den Darstellungsmodellen zum Plotten (Legenden).

Gorden Kock
Author: Gorden Kock