テンプレートでの関数の活用 その1
テンプレートエディタの行コンテンツのルールを活用することで、レポートや図面のテンプレート上で、ある特定の部材のときに行を出力するようなことができます。ここではルールオプション上で活用できる設定をご紹介します。
ポリゴンプレートを抽出したい場合
モデル上の部材の断面タイプを確認する値フィールドとしては、PROFILE_TYPEがあります。ポリゴンプレートで配置した部材はPROFILE_TYPEとして、”POLY”が設定されています。したがってテンプレートエディタで、以下のようなルールを設定することで、モデル上からポリゴンプレートを抽出することができます。
| if (GetValue("PROFILE_TYPE") == ”POLY") then Output() else StepOver() endif |
このポリゴンプレートの抽出については、行プロパティ上の ウィザードボタンを使ってルールを定義することもできます。
特定の名前を持つ部材を抽出したい場合
部材の名前フィールドに特定の名称が設定されている部材を抽出する場合には、関数matchやfindを使って、ルールを設定することができます。テンプレートエディタで、以下のようなルールを設定することで、部材の名前に”PLATE”という文字列が含まれているものを抽出することができます。
【matchを使った場合】
| if(match(GetValue("NAME"),"*PLATE*")) then Output() else StepOver() endif |
【findを使った場合】
| if(find(GetValue("NAME"),”PLATE”) >= 0) then Output() else StepOver() endif |
match関数では、関数内で指定した値フィールド(NAME)に、所定の文字(PLATE)がある場合には、TRUEが返されます。設定する文字列には、ワイルドカード(*)や任意の文字(?)、特定の文字([~])を指定することができます。
(例)
大文字または小文字で文字列”PLATE”が定義されている場合 ”*[Pp][Ll][Aa][Tt][Ee]*”
SGPに続く文字列が1桁の任意の文字と”A”の場合 “SGP?A”
SGPに続く文字列が1桁の1~9の文字と”A”の場合 “SGP[123456789]A”
find関数では、関数内で指定した値フィールド(NAME)で、対象の文字列(PLATE)を検索します。検索対象の文字列があった場合には、先頭文字が0として、その文字列の位置を返します。検索対象の文字が含まれない場合には、-1が返されます。
特定のユーザー定義情報(UDA)の値で抽出したい場合
ユーザー定義情報のフィールドに情報が設定されているものを抽出する場合には、関数lengthやIsSetを使って、ルールを設定することができます。テンプレートエディタで、以下のようなルールを設定することで、コメントフィールドに値が設定されたものを抽出することができます。
【lengthを使った場合】
| if(length(GetValue("comment")) <=0 )then Output() else StepOver() endif |
【IsSetを使った場合】
| if (IsSet("comment")) then Output() else StepOver() endif |
length関数では、指定されたフィールドにデータが定義されている場合には、そのデータの長さ(文字数)が返されます。データが定義されていない場合には、-1が返されます。
IsSet関数では、値フィールドにデータが設定されている場合には、TRUEが返されます。