Operator
Associative
Integer constant
String or Char Constants
+
binary, unary
addition
string or char concatenation
-
subtraction
*
binary
multiplication
/
division
%
modulus
&
biwise and
|
biwise or
^
biwise xor
&&
logical and
||
logical or
<<
left shift
>>
right shift
==
equality
same string or char
!=
inequality
different string or char
<
less than
>
greater than
<=
less than or equal to
>=
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>
_USTN_DISPLAYALLCFGVARS = 0
%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)
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
English