Verarbeitung von Konfigurationsvariablen


 Produkt:MicroStation
 Version:All
 Umgebung:N\A
 Produktbereich:Konfiguration
 Produktunterbereich:Allgemeine Konfiguration

Konfiguration über Variablen

MicroStation V8 bietet neue Funktionen für die Arbeitsbereichskonfiguration unter Verwendung von Variablen. Es ist jetzt möglich, eine Aktion auf der Grundlage des Wertes einer Variablen auszuführen.

24. Juni 2002 - Arbeitsbereichskonfigurationsdateien bieten sowohl dem Administrator als auch dem Benutzer die Möglichkeit zu steuern, wie MicroStation initialisiert und nach Informationen sucht. Mit Hilfe von Befehlszeilenschaltern, Variablendefinitionsverweisen, Präprozessoranweisungen und Operatoren kann sichergestellt werden, dass MicroStation die richtigen Konfigurationsdateien findet, Konfigurationsvariablen definiert und auf diese Definitionen mit Hilfe von bedingten Verarbeitungstechniken reagiert.

Die meisten Anwender, die in der Vergangenheit Konfigurationsdateien geändert und/oder erstellt haben, haben diese Techniken verwendet, um so unterschiedliche Aufgaben wie die Neuzuordnung von Arbeitsbereichen zu ihrem Netzwerk, das Hinzufügen von Variablendefinitionen auf der Grundlage von PCF und UCF oder das Ausführen einer Aktion auf der Grundlage des Vorhandenseins oder der Definition einer Variablen durchzuführen. MicroStation V8 bietet Ihnen die Möglichkeit, eine Aktion auf der Grundlage des Wertes einer Variable auszuführen.

Die neueste Version von BMAKE unterstützt Ausdrücke im Pre-Processing. Durch die Verwendung der Konstantenausdrücke %if und %elif können ganzzahlige Konstanten (dezimal), String- oder Zeichenkonstanten mit einer Variablendefinition verglichen werden. Ausdrücke können die unten aufgeführte Liste von Operatoren verwenden, um auf konstante Werte, Exit-Codes von Befehlen, Zeichenketten, Zeichen, Makros und Dateisystempfade einzuwirken.


 Operator  

 Associative

Integer constant                  

 String or Char Constants

+

binary, unary

 addition     

 string or char concatenation

 -

binary, unary  

 subtraction

 

 *

binary     

multiplication 

 

/

binary 

division 

 

%

binary 

modulus 

 

&

binary 

biwise and 

 

|

binary 

biwise or

 

^

binary

 biwise xor

 

&&

binary 

logical and 

 

||

binary 

logical or 

 

<<

binary

left  shift

 

 >>

binary 

right shift 

 

==

binary 

equality 

 same string or char

!=

binary

inequality 

different string or char 

<

binary

less than 

 

>

binary

greater than 

 

<=  

binary

less than or equal to  

 

>= 

binary

greater than or equal to 

 

Einige dieser Operatoren werden Ihnen bekannt vorkommen, da sie in der Vergangenheit in Konfigurationsdateien verwendet wurden. Schauen wir uns an, wie einige der Operatoren verwendet wurden, damit wir uns besser vorstellen können, wie sie in Verbindung mit konstanten Ausdrücken verwendet werden.

Das folgende Beispiel ist ein Ausschnitt aus der Hauptkonfigurationsdatei von MicroStation V8, msconfig.cfg. Die Syntax definiert den Wert von _USTN_USERCFG in Abhängigkeit davon, ob bestimmte Bedingungen erfüllt sind.

%if defined (_BENTLEYREDLINE) || defined (_BENTLEYVIEW)

_USTN_USERNAME : viewonly

%elif defined (_MSGEOOUTLOOK)

_USTN_USERNAME : gouser

%elif defined (_PRJREVIEW)

_USTN_USERNAME : sketch

%else

_USTN_USERNAME : untitled

%endif

_USTN_USERCFG : $(_USTN_USER)$(_USTN_USERNAME).ucf

Beachten Sie, dass in der ersten Zeile der Operator für logisches Oder ( || ) verwendet wird. In dieser Zeile wird bestimmt, ob Bentley Redline oder Bentley View auf der Arbeitsstation installiert ist. Sollte eines von beiden installiert sein, also eine der Oder-Bedingungen erfüllt sein, wird der Wert von _USTN_USERNAME bedingt als viewonly definiert. Sollte keine der Präprozessor-Direktiven ein wahres Ergebnis liefern, wird der Wert von_USTN_USERNAME bedingt als untitled definiert.

Dem erfahrenen Workspace-Benutzer mag auffallen, dass die Datei dfltuser.cfg in Bezug auf _USTN_USERNAME nicht erwähnt wurde. Dies war eine absichtliche Auslassung, so dass darauf hingewiesen werden kann, dass die Datei dfltuser.cfg im Gegensatz zu früheren MicroStation-Versionen nicht installiert, sondern beim Initialisieren von MicroStation erstellt wird. Dies entspricht in etwa dem Verhalten der Benutzereinstellungsdatei (UPF ), und wie die UPF wird auch dfltuser.cfg, sollte sie gelöscht werden, bei der nächsten Initialisierung von MicroStation neu erstellt.

Nachdem Sie nun gesehen haben, wie diese Operatoren in einer Konfigurationsdatei unter Verwendung von Präprozessor-Direktiven verwendet werden, können Sie sie auch in einem konstanten Ausdruck verwenden. In vielen Fällen werden Administratoren MicroStation so konfigurieren, dass die UCF auf der Grundlage der Systemumgebungsvariablen USERNAME definiert wird. Dies kann ein Teil eines Roaming-Profils sein, das den Benutzern zu jeder Arbeitsstation folgt, an der sie sich anmelden.

Vor der Einführung der Verarbeitung konstanter Ausdrücke war der Administrator nicht in der Lage, auf den Wert von USERNAME einzuwirken, sondern konnte diese Information nur als Mittel zum Festlegen anderer Variablendefinitionen verwenden. Schauen Sie sich das Beispiel aus msconfig.cfg an und betrachten Sie die letzte Zeile, in der der Wert von _USTN_USERCFG bedingt definiert wird. In der Syntax unten sehen Sie, dass der Wert von _USTN_USERNAME entscheidend dafür ist, welche UCF in der MicroStation Manager-Dropdown-Box Benutzer aufgeführt wird. Daher kann der Administrator mit der folgenden Syntax erreichen, dass dieser Wert gleich dem Wert der Netzwerkanmeldung ist:

_USTN_USERNAME = $(USERNAME)

Dies wird als Variablendefinitionsreferenz bezeichnet. Weitere Informationen hierzu finden Sie im MicroStation V8 Administrator's Guide.

%if $(USERNAME) == "Administrator"

_USTN_DISPLAYALLCFGVARS = 1>

%else

_USTN_DISPLAYALLCFGVARS = 0

%endif

%lock _USTN_DISPLAYALLCFGVARS

Wenn die obige Syntax in eine Konfigurationsdatei auf Site-Ebene, z. B. standards.cfg, aufgenommen würde, würde der Dialog zur Arbeitsbereichskonfiguration nur dann die gesamte Liste der Konfigurationsvariablen anzeigen, wenn sowohl _USTN_USERNAME = $(USERNAME)als auch der Administrator an der Workstation angemeldet sind.

Ein weiteres interessantes und nützliches Beispiel für diese Art der Verarbeitung lässt sich durch die Verwendung eines Befehlszeilenschalters veranschaulichen. Nehmen wir an, die Aktion "Öffnen" für den Dateityp DGN ist auf:

"javascript:void(null);" "-wsMY_FILE=%1" "%1"

Dadurch wird eine neue Variable, MY_FILE, erstellt, die der vollständigen Dateispezifikation der aktuellen Datei entspricht. Denjenigen unter Ihnen, die schon einmal die gesamte Variablenliste des Arbeitsbereich-Konfigurationsdialogs gelesen haben, wird dies auffallend ähnlich erscheinen wie die gesperrte Benutzerebenen-Variable_DGNFILE. Warum sollte man zwei Variablen mit demselben Expansionswert haben wollen? Die Antwort sollte jedem klar sein, der schon einmal versucht hat, den erweiterten Wert von _DGNDIR zu verwenden, um Informationen festzulegen, die bei der Initialisierung von MicroStation verwendet werden.

Sowohl _DGNFILE als auch _DGNDIR werden gesetzt, nachdem die Datei geöffnet wurde, d. h. nachdem die Konfigurationsdateien verarbeitet wurden. Während der Arbeitsbereichskonfigurationsdialog also den korrekten Pfad zu einer Variablen angibt, in der sie als Variablendefinitionsreferenz verwendet wurden, z. B. MS_SYMBRSRC, wurden die RSC-Dateien nicht geladen. Dies liegt daran, dass unabhängig davon, auf welcher Ebene MS_SYMBRSRC definiert ist, der Wert von _DGNFILE oder _DGNDIR undefiniert sein wird.

Mit Hilfe der Verarbeitung von konstanten Ausdrücken und der Verwendung des Befehlszeilenschalters -ws können Informationen wie RSC-Dateien nun auf der Grundlage des Verzeichnisses der geöffneten Datei geladen werden. Dies gilt nur, wenn der Windows-Explorer verwendet wird, d. h. durch Doppelklick auf die zu öffnende Datei.

DEVDIR = $(devdir(MY_FILE))

%if $(DEVDIR) == (path to design file)

MS_SYMBRSRC = (path(s) to RSC files)

%elif $(DEVDIR) == (another path to design file)

MS_SYMBRSRC = (path(s) to RSC files)

%else

MS_SYMBRSRC = (path(s) to RSC files)

%endif

Mit der obigen Syntax können bestimmte RSC-Dateien geladen werden, wenn eine Datei über den Windows Explorer geöffnet wird. Außerdem werden die RSC-Dateien nur geladen, wenn MicroStation nicht bereits initialisiert wurde. Der Grund dafür ist, dass MicroStation die RSC-Dateien lädt, wenn es geöffnet wird. Einmal geöffnet, können keine neuen RSC-Dateien mehr verarbeitet werden.

Die Verarbeitung konstanter Ausdrücke ist eine leistungsstarke Ergänzung zur Verarbeitung von Konfigurationsdateien/Variablen. Wir hoffen, dass die obigen Beispiele in Verbindung mit spezifischen Anforderungen und Kreativität zu einigen innovativen

Sehen Sie hierzu auch

Andersprachige Quellen

English