計算機/プリプロセッサ
計算機/プリプロセッサユーティリティ("calculat.ma")は、MicroStationのキー入力コマンドに含まれている式を評価するために使用します。計算機/プリプロセッサで使用するシンタックスは、"C言語"のシンタックスです。
- 計算機の数式結果はステータスバーに表示されます。たとえば、計算機/プリプロセッサがロードされているときに「CALCULATOR 3*sin(90)」とキー入力すると、このキー入力コマンドに含まれた式の結果である「3」がステータスバーに表示されます。
- プリプロセッサによって、数式がその解に置き換えられた後、キー入力コマンドがMicroStationに送られます。たとえば、計算機/プリプロセッサがロードされているときに「AA={asin(1)}」とキー入力すると、アクティブな角度がこの式の結果である90°に設定されます。
C言語式の処理
計算機とプリプロセッサはともに、標準C言語の式シンタックスを処理します。
Cプログラムによる式の処理と、計算機/プリプロセッサによる式の処理とで最も異なるのは、整数の除法です。Cプログラムによる式の処理では、整数の除法の結果は整数となります。一方、計算機/プリプロセッサによる式の処理では、整数の除法の結果は浮動小数点数となります。たとえばCでは、1/4(1割る4)の結果は0です。計算機/プリプロセッサでは、1/4(1割る4)の結果は0.25です。
計算機/プリプロセッサは、cos、acos、sin、asin、atan、atan2、tan、cosh、tanh、sinh、exp、ldexp、log、log10、pow、およびsqrtの各関数をサポートしています。これらの関数は、角度がラジアンの代わりに度数で表される点を除いて、標準Cの関数と同じです。
計算機/プリプロセッサで使用するための変数および関数を宣言することができます。詳細については、「計算機/プリプロセッサのカスタマイズ」を参照してください。
プリプロセッサと製品との連携
ここでは、計算機/プリプロセッサがロードされている間の、プリプロセッサとMicroStationとの相互作用について説明します。
プリプロセッサは、MicroStationのすべてのキー入力コマンドを調べて、以前に指定された区切り文字で囲まれたテキストを探します。既定の区切り記号は中括弧({ })です。
プリプロセッサは、指定した区切り記号で区切られた文字列を見つけると、その文字列を評価します。この文字列が有効なC式である場合、プリプロセッサは、文字列を囲んでいる区切り記号とC式とをその計算結果に置き換えて、キー入力コマンド文字列全体を再度調べます。プリプロセッサは、すべての区切られた文字列を置き換え終わるまで、このようにしてループを繰り返します。最後に、標準のキー入力コマンドとして処理するためにコマンドをMicroStationへと送ります。
プリプロセッサはキー入力コマンドの他にも、カスタムメニューからの選択により発生した、あるいは他のアプリケーション(MDLアプリケーション)によってシミュレートされるキー入力コマンド文字列も取り扱います。プリプロセッサが評価する式の結果は、整数、浮動小数点数、または文字列のいずれかです。
既定値は、「プリプロセッサ」ダイアログで変更できます。
計算機とプリプロセッサの出力フォーマット
計算機とプリプロセッサには、それぞれ2種類のフォーマット文字列があります。一方のフォーマット文字列は整数解の表示を制御し、もう一方は浮動小数点数である解の表示を制御します。これらのフォーマット文字列は、標準のC printf文字列です。
計算機は、文字列の結果を処理しません。計算機がある式を評価し、式の結果が文字へのポインタとなる場合、計算機はエラーメッセージを表示します。一方、プリプロセッサがある式を評価し、式の結果が文字へのポインタとなった場合、プリプロセッサはこの式を結果が指す文字列に置き換えます。
計算機のコマンド
計算機/プリプロセッサがアクティブな間、MicroStationのキー入力コマンドと同じように、次の計算機のコマンドをキー入力して実行することができます。
- CALCULATOR [C式] - C式の解を計算します。式の結果は、ステータスバーに表示されます。CALCULATORだけをキー入力する(C式を省略する)と、すべてのキー入力コマンドを式として解釈するように計算機に指示が出されます。このモードは、他のコマンドが実行されるまでの間アクティブとなります。
- CALCULATOR DECLARE DOUBLE [変数名] - 計算機およびプリプロセッサで使用するための変数(浮動小数点数型)を宣言します。この変数の初期値は0です。変数値の定義と値は、1つのセッションが終了して次のセッションが始まるまでの間、"uservrbl.dat"に保存されます。
- CALCULATOR DECLARE INT [変数名] - 計算機およびプリプロセッサで使用するための変数(整数型)を宣言します。この変数の初期値は0です。変数値の定義と値は、1つのセッションが終了して次のセッションが始まるまでの間、"uservrbl.dat"に保存されます。
- CALCULATOR FORMAT DOUBLE [フォーマット文字列] - 浮動小数点数式の結果表示に使用するフォーマット文字列を指定します。既定は、%.16gです。
-
CALCULATOR FORMAT INT [フォーマット文字列] - 整数式の結果表示に使用するフォーマット文字列を指定します。既定は%dです。
たとえば、10進数100の16進数値を計算するには、「CALCULATOR FORMAT INT %#X」とキー入力してから、「CALCULATOR 100」とキー入力します。
また、16進数100の10進数値を計算するには、「CALCULATOR FORMAT INT %d」とキー入力してから、「CALCULATOR 0x100」とキー入力します。
- UCCALC [C式] - C式の結果を計算しますが、答えは表示しません。
計算機/プリプロセッサのカスタマイズ
次の方法で、計算機/プリプロセッサをカスタマイズすることができます。
- "uservrbl.dat"ファイルを使用して変数を追加します。
- MDLプログラムから関数と変数を追加します。
- 「CALCULATOR DECLARE」コマンドで変数を宣言します。
- プリプロセッサを別のMDLプログラムで完全に置き換えます。
計算機/プリプロセッサは、初期化の過程で"uservrbl.dat"を読み取ります。MS_DATA構成変数が指すディレクトリから、このファイルを検索します。このファイルにおける各変数の定義は、「<型名> <変数名> <初期値>」のようなフォーマットになります。
変数型名「type_name」として有効な値は、「double」(倍精度浮動小数点数)および「int」(整数)の2つです。"uservrbl.dat"で定義する変数名の長さは、最大16文字(半角の場合)までに制限されています。文字列の初期値は、変数名の次に来る最初の非空白文字で始まります。同じ行の最後までが、文字列の初期値となります。
次に示すのは、標準的な初期設定ファイルの例です。
int baseValue 1 double baseUor 1.0
計算機/プリプロセッサがアンロードされるとき、"uservrbl.dat"が更新されます。更新の間、「"uservrbl.dat"」ファイル内で定義された変数、および「CALCULATOR DECLARE」コマンドで定義された変数の型、名前、値が記録されます。MDLプログラムから発行された変数に関する情報は保存されません。
MDLプログラムは、mdlCExpression_symbolPublish関数を使用して関数および変数を発行し、それらを計算機に追加することができます。「VISIBILITY_CALCULATOR」の可視性を持つシンボルセットを使用すると、MDLプログラムによって追加された関数または変数を計算機で使用可能にすることができます。これは、計算機に関数を追加する唯一の方法です。