ユーザ部品の定義方法 / 属性定義ファイル(XML)の作成

属性定義ファイル(XML)の作成
■定義する項目について
部品形状を定義したモデルファイル(MDP)とは別に、寸法値の組み合わせや材質・価格などの属性を定義したXML形式のファイルです。 XML形式のファイルは、ホームページを記述する言語であるHTMLとよく似た構造を持っています。
XMLファイルを記述する際、文書内に日本語を記述する場合は、「文字コード」に非常に気をつける必要があります。 日本語版のWindowsでは文字コードとして、一般的に「シフトJIS(Shift-Jis)」が用いられています。 メモ帳などでテキストを保存する場合はこの方式になります(保存時のダイアログには「ANSI」と表示されるようです)。 XMLファイルの先頭行には、このXMLファイル自体がどの文字コードを用いて記述されているのかを宣言する必要があります。
実際の文字コードと、宣言文の文字コードが異なっているとファイルの読み込みに失敗してしまうので注意してください。
例1)「utf-8」という文字コードでXMLファイルを記述した場合の宣言
<?xml version="1.0" encoding="utf-8" ?>
例2)日本語の「シフトJIS」という文字コードでXMLファイルを記述した場合の宣言
<?xml version="1.0" encoding="Shift-JIS" ?>
この属性定義ファイルでは下記の項目を定義します。
定義する項目 説明
部品名称
<param_name>タグ
カタログパネルや、システム標準コマンドの部品リストに表示される名称です。 下記のタグを利用して、言語毎に名称を個別に定義します。
言語 タグ
日本語 <ja_JP>タグ
英語 <C>タグ
中国語 <zh_CN>タグ
台湾語 <zh_TW>タグ
例)
<part_name>
<ja_JP>エジェクタピン</ja_JP>
<C>Ejector Pin</C>
</part_name>
部品ID
<part_id>タグ
ユーザ部品を一意に特定するためのGUID(GUID: Globally Unique IDentifier)です。 128ビットの数値ですが16進数で表示されます。 必ず部品毎に異なる値を設定する必要があります。 この値が重複していると、[部品編集]コマンドが正しく動作しなくなります。
Space-E/Mold の[ツール]メニューの[ユーザ部品IDの生成」を実行して得られたIDを記述します。
例)<part_id>DEB1D6EB-881E-4a1c-B77A-FD00CCABA02E</part_id>
寸法一覧
<param_def>タグ
[システム寸法名 name 属性]、 [優先度 prior 属性]、 [値指定必要フラグ orderParam 属性]を、 1つの[寸法 <variable タグ>]として、部品に必要な数だけ定義します。
各寸法には必ず優先度を指定する必要があります。 ある寸法Aの値が決まらないと別の寸法Bの値が決まらない場合、寸法Aの優先度が寸法Bの優先度より高く設定する必要があります。 一般的には、部品カタログの寸法テーブルの左にある寸法の優先度が高くなります。 自由寸法でない場合は、 優先度は1以上の整数値を指定します。自由寸法である場合は、優先度は0を指定します。 値の大小のみが判定されますので、優先度の値が飛び石になっていても問題ありません。
[標準ユーザ部品]では、部品の種類毎にあらかじめ決められた寸法一覧がありますので、それに基づいて記述します。
[システム寸法名]がお客様の社内での呼び名と違う場合は、[表示寸法名 dispName 属性]を指定することができます。 これは画面上で表示するための名称であって、実際の内部処理ではシステム名が使用されます。 [規格外ユーザ部品]の場合は、このような制限はないので、自由に[システム寸法名]を指定することができます。
ユーザ部品を配置するとき、必ず作業者が値を指定しなければならない寸法は、orderParam 属性の値を true として設定します。 すると、カタログドロップ時のダイアログや、部品編集コマンド実行時のダイアログなどで、値を指定することができるようになります。 作業者が値を指定しなくても、一意に値が自動的に決定するような寸法の場合は、orderParam 属性の値を設定する必要はありません。 orderParam 属性を設定した寸法は、設定してない寸法よりも必ず優先度を高くしてください。

追加工の関連寸法は、alterationParam 属性の値を true として設定します。 部品配置時のダイアログと部品編集時のダイアログで、「部品を追加工する」をチェックすれば、追加工の寸法を指定することができます。

追加工変数のorderParam 属性の値をtrueに設定してはいけません。追加工FLAG変数は「*_FLAG」という形で命名した変数です。 優先度が一番高い追加工変数(非freeタイプ)は必ずFLAG変数です。 ただし、追加工の非FLAG変数がprior=0である(freeタイプ)場合は、FLAG変数の優先度は非FLAG変数より低くても構いません。 追加工の非FLAG変数の優先度がorderParam="true"の変数のより低い必要があります。

例)
<param_def>
<variable name="P" dispName="d" prior="1" orderParam="true" />
<variable name="L" prior="2" orderParam="true" />
<variable name="T" prior="3" />
<variable name="H_FLAG" prior="4" alterationParam="true" />
<variable name="H" dispName="D" prior="5"  alterationParam="true" />
</param_def>
部品発注コードの書式
<part_code>タグ
部品の発注コードの書式を定義します。 発注コードに記載される寸法の順番は、上記寸法の優先度の順番に一致させる必要があります。 また、[値指定必要フラグ]がtrueの寸法だけを記述します。 寸法の間に仕切り符号を必ず付けてください。一致させたコードでは定義できない場合は、部品発注コード(カスタマイズ用)で定義が可能です。
例として、P、L寸のみ[値指定必要フラグ]が制定されているような、発注コードの書式が「UEPD d{P}-L{L}」の部品の場合について説明します。 部品を配置し、P寸、L寸の寸法値が決定した時点で、{}部が対応する寸法の値に置き換えられます。 すると最終的な発注コードは「UEPD d20-L4」のように変換されます。 {}内部の寸法名は、[システム寸法名]を記述します。
例)<part_code>UEPD d{P}-L{L}</part_code>
各寸法の値の組み合わせ
<param_combo_table> タグ
<param_combo_table> タグmodel_name 属性に、 XMLファイルで定義しているユーザ部品の形状ファイル(MDP)のファイル名を指定します。
実際の寸法値の組み合わせを、<param_combo> タグを使って定義します。 特定の寸法値の組み合わせの時だけ別のモデルファイルを指定する場合は、<param_combo> タグmodel_name 属性にモデルファイル名を指定します。
<variable> タグでは、各寸法がどのような値を取り得るかを定義します。 固定値や、一定の範囲内のピッチ値で刻まれた値などを指定できます。 また、「P寸の値+30」などの式を指定することもできます。 詳細は以下を参考にしてください。
部品の材質
<material_combo_table>タグ
部品に対する既定の材質を定義します。未定義でも可能です。
同じ部品でも、寸法によって材質が変化する場合は、寸法値の組み合わせと同様の書式で定義します。 ただし、材質に影響しない寸法については記述する必要がありません。 たとえば、3つある寸法のうち、材質がL寸の値でのみ変化する場合には、それ以外の寸法を記述する必要はありません。
例)L寸が130.01〜150の間の材質は「SKD16」でそれ以外は「SCM45」の部品の場合
<material_combo_table default="SCM435">
<material_combo value="SKD16">
<variable type="range" name="L" min="130.01" max="150" pitch="0.01" />
</material_combo>
</material_combo_table>
価格
<price_combo_table>タグ
部品に対する既定の価格を定義します。未定義でも可能です。
材質と同様に寸法によって価格が変化する場合は、寸法値の組み合わせと同様の書式で定義します。 たとえば、3つある寸法のうち、価格がL寸の値でのみ変化する場合には、それ以外の寸法を記述する必要はありません。
例)L寸が120.01〜140の間の価格は200円、140.1〜150は、220円、それ以外は180円の部品の場合
<price_combo_table default="180">
<price_combo value="200">
<variable type="range" name="L" min="120.01" max="140" pitch="0.01" />
</price_combo>
<price_combo value="220">
<variable type="range" name="L" min="140.01" max="150" pitch="0.01" />
</price_combo>
</price_combo_table>
部品発注コード(カスタマイズ用)
<part_code_part_list>タグ
部品に対するカスタマイズ用の発注コードを定義します。未定義でも可能です。
"部品発注コードの書式"では定義できない発注コードを指定します。寸法の計算順序、true , false に影響しないため任意の設定が可能です。書式は、"部品発注コードの書式"と同じです。
例)P,H で発注コード(SFAD P-H)が構成される場合

<param_def>
<variable name="P" dispName="d" prior="1" orderParam="true" />
<variable name="L" prior="2" orderParam="true" />
<variable name="T" prior="3" />
<variable name="H" dispName="D" prior="4" />
</param_def>

<part_code_part_list>
SFAD P{P}-H{H}
</part_code_part_list>

部品発注コードの初期値
<part_code_default_value>タグ
部品に対する発注コードの初期値を定義します。未定義でも可能です。
"部品発注コード"の通りに各パラメータに対して数値を代入します。この値を設定するとユーザー部品をドロップした時にその値が初期値として入力されます。 書式が"部品発注コード"と少しでも異なる場合は、初期値は設定されません。
例)部品UEPDで、dに6 Lに60の初期値を与えたい場合

<part_code>UEPD d{P}-L{L}</part_code>
<part_code_default_value>UEPD d6-L60</part_code>
部品の追加工
<alteration_combo_table>タグ
部品に対する追加工を定義します。定義しなくても構いません。 追加工の種類に複数がある場合は、<alteration_combo_table> タグを複数定義します。
<alteration_combo_table> タグname 属性に、 追加工種類の名称を指定します。conflict 属性に、 併用不可の追加工種類の名称を指定します。
追加工オプションを<alteration_combo> タグで定義します。 name 属性に、 追加工オプションの名称を指定します。code_format 属性に、追加工コードを定義します。 選択したオプションにより、書式に応じて発注コードを変更することになります。
code_format 属性 発注コードへの影響
none 発注コードへの変更がありません
-HC{H} 発注コードの後に付加します
V=VC 発注コード中のVを追加工のVCで取り替えます
<variable> タグでは、 追加工オプションを実現するための追加工寸法を定義します。 オプションを指定すると、定義された寸法値が選択できます。 追加工種類ごとに、FLAG変数の優先度は当変数で制御している追加工変数の優先度より高い必要があります。
例)部品CPAB-Lで、「ツバ径変更」追加工種類の場合

<alteration_combo_table name="ツバ径変更 conflict="ツバ厚変更">
<alteration_combo name="なし" code_format="none">
<variable name="HC_FLAG" />
</alteration_combo>
<alteration_combo name="あり" code_format="-HC{H}">
<variable name="HC_FLAG" />
<variable name="H" />
</alteration_combo>
</alteration_combo_table>
■各寸法値の組み合わせ
寸法値の組み合わせを定義するために、値を指定する方法として4タイプを定義しています。 <variable> タグtype 属性に次の値を指定します。 name 属性には、[システム寸法名]を記述します。
タイプ 説明
固定値(fix)
1つの数値しか取り得ない寸法の場合に使用するタイプです。value属性に、数値を記述します。
数値部分には式を記述することができます。使用できる寸法は、かならず自分よりも優先度が高いものでなければいけません。 下記の例の様に一般的な算術式を記述します。値の有効性(負の値や0など)は検証されませんので、注意してください。selectvalue属性を定義した場合(無くても可)はその文字列を選択時のダイアログに表示できます(fix , enum のみ)。
例1)D寸の値が3の場合
<variable type="fix" name="D" value="3" selectvalue="任意の文字列"/>
例2)L寸の値がD寸の値+5の場合
<variable type="fix" name="L" value="D+5" />
列挙値(enum)
「2,5,6」などの規則性のない一連の数値のうちからどれかの値を取る寸法の場合に使用するタイプです。 value属性に列挙された値を「カンマ(,)」区切りで記述します。 selectvalue属性を定義した場合(無くても可)はその文字列を選択時のダイアログに表示できます(fix , enum のみ)。下の例では、"2,5,6" を"赤、白、青"に対応させます。
例)P寸の値が2,5,6(赤、白、青)の場合
<variable type="enum" name="P" value="2,5,6" selectvalue="赤,白,青"/>
範囲値(range)
「30〜100の間の値をピッチとして0.1刻み」などのある一定の範囲内の数値を取り得る寸法の場合に使用するタイプです。 定義するときの最小値と最大値は有効な数値に含まれます。
min属性に開始値、max属性に終了値、pitch属性にピッチ値を記述します。 また、開始値や終了値には数式を指定することもできます。
「1.1〜2.1までピッチ0.5刻み」などのような定義をすることはできません。 つまり、有効な値は常にピッチ値で割り切れる値となります。 「1.0〜2.0までピッチ0.5刻み」はOKとなります。「1.0,1.5,2.0」は0.5で割り切れるためです。
例1)L寸の値が「165.01〜200まで0.01刻み」の場合
<variable type="range" name="L" min="165.01" max="200" pitch="0.01" />
例2)N寸の値が「L-150〜L-20まで1刻み」の場合
<variable type="range" name="N" min="L-150" max="L-20" pitch="1" />
例2)の場合、L=169.43のときにNのmin値は単純に計算すると、19.43となりますが、 Nのピッチは1ですので、19.43よりも大きく且つ1で割り切れる値として、min=20と計算されます。 max値も149.43よりは小さい1で割り切れる値として、max=149と計算されます。 もし、ピッチが0.5の場合は、min=19.5、max=149となります。
自由値(free)
任意の値を扱う寸法の場合に使用するタイプです。 value属性に””で記述します。
例)M寸の値が自由寸法の場合
<variable type="free" name="M" value="" />
■寸法値の組み合わせ例
例1) 下記の図のような寸法の部品において、寸法値の組み合わせを定義する場合の例を示します。
表の左にかかれている順に寸法の優先度を設定します。 すると、P寸の値の組み合わせは1種類しか存在しませんが、他の寸法の取り得る値が異なるので、 寸法の優先度の関係上P寸の値の定義は2度記述する必要があります。
<!-- 寸法一覧の定義 -->
<param_def>
<variable name="D" prior="1" orderParam="true" />
<variable name="L" prior="2" orderParam="true" />
<variable name="P" prior="3" orderParam="true" />
</param_def>
<!-- 寸法値の組み合わせの定義 -->
<param_combo_table model_name="既定のモデル.mdp">
<param_combo>
<variable type="fix" name="D" value="3" />
<variable type="range" name="L" min="30" max="100" pitch="0.1" />
<variable type="enum" name="P" value="2,5,6" />
</param_combo>
<param_combo>
<variable type="fix" name="D" value="5" />
<variable type="range" name="L" min="30" max="150" pitch="0.1" />
<variable type="enum" name="P" value="2,5,6" />
</param_combo>
</param_combo_table>
例2) 下記の図のような寸法の部品について、寸法値の組み合わせを定義する例を示します。
AND、ORなどの論理条件は、パラメータの組み合わせを分けることで定義できます。
<!-- 寸法一覧の定義 -->
<param_def>
<variable name="L" prior="1" orderParam="true" />
<variable name="P" prior="2" orderParam="true" />
<variable name="N" prior="3" orderParam="true" />
</param_def>
<!-- 寸法値の組み合わせの定義 -->
<param_combo_table model_name="既定のモデル.mdp">
<param_combo>
<variable type="range" name="L" min="50" max="165" pitch="0.01" />
<variable type="range" name="P" min="0.6" max="1.4" pitch="0.01" />
<variable type="range" name="N" min="15" max="L-20" pitch="1" />
</param_combo>
<param_combo>
<variable type="range" name="L" min="165.01" max="200" pitch="0.01" />
<variable type="range" name="P" min="0.6" max="1.4" pitch="0.01" />
<variable type="range" name="N" min="L-150" max="L-20" pitch="1" />
</param_combo>
</param_combo_table>
■追加工付きの寸法の組み合わせ例
例1) ミスミ/プラ型用標準部品/ストレートコアピン/CPAB-L

下記の図のような追加工寸法の部品において、寸法値の組み合わせを定義する場合の例を示します。
この追加工種類の名称が「ツバカット」です。

一つの追加工種類に対して、一つの「*_FLAG」という寸法を定義する必要です。ツバの左のカットは「CA」という寸法で定義します。右のカットは「CB」という寸法で定義します。

定義する時、下記のルールを守らなければなりません。

  • 「*_FLAG」の優先度は必ず他の関連寸法より高い必要があります。
  • 「*_FLAG」のvariableタグselectvalue属性の内容がalteration_comboタグname属性の内容と一致しなければなりません。
  • 追加工FLAG変数がvalue="0"である場合は、selectvalueの値を"なし"に定義しなれければなりません。
  • <!-- 寸法一覧の定義 -->
    <param_def>
    <variable name="KC_FLAG" dispName="KC_FLAG" prior="9" alterationParam="true"/>
    <variable name="CA" dispName="CA" prior="10" alterationParam="true"/>
    <variable name="CB" dispName="CB" prior="11" alterationParam="true"/>
    </param_def>
    <!-- 寸法値の組み合わせの定義 -->
    <param_combo_table model_name="既定のモデル.mdp">
    <param_combo>
    <variable type="fix" name="KC_FLAG" value="0" selectvalue="なし"/>
    <variable type="fix" name="CA" value="0"/>
    <variable type="fix" name="CB" value="0"/>
    </param_combo>
    <param_combo>
    <variable type="fix" name="KC_FLAG" value="1" selectvalue="1面"/>
    <variable type="range" name="CA" min="P/2" max="H/2-0.1" pitch="0.1" />
    <variable type="fix" name="CB" value="0"/>
    </param_combo>
    <param_combo>
    <variable type="fix" name="KC_FLAG" value="3" selectvalue="2面(寸法違い)" />
    <variable type="range" name="CA" min="P/2" max="H/2-0.1" pitch="0.1" />
    <variable type="range" name="CB" min="CA+0.1" max="H/2-0.1" pitch="0.1" />
    </param_combo>
    </param_combo_table>
    <!-- 追加工種類一覧の定義 -->
    <alteration_combo_table name="ツバカット">
    <alteration_combo name="なし" code_format="none" >
    <variable name="KC_FLAG" />
    </alteration_combo>
    <alteration_combo name="1面" code_format="-KC{CA}">
    <variable name="KC_FLAG" />
    <variable name="CA" />
    </alteration_combo>
    <alteration_combo name="2面(寸法違い)" code_format="-KAC{CA}-KBC{CB}">
    <variable name="KC_FLAG" />
    <variable name="CA" />
    <variable name="CB" />
    </alteration_combo>
    </alteration_combo_table>

    例2) ミスミ/プラ型用標準部品/フラットコアピンA形状/CPZB-1A

    下記の図のような追加工寸法の部品において、寸法値の組み合わせを定義する例を示します。 追加工種類が二つあります。それに、併用不可です。

    発注コードの表示を変更したい場合は、alteration_comboタグcode_format属性に「X=Y」のように定義します。
    「X」が標準発注コードに使う文字列で、「Y」が追加工有効である場合に使う文字列です。
     

    <!-- 寸法一覧の定義 -->
    <param_def>
    <variable name="BC_FLAG" dispName="BC_FLAG" prior="4" alterationParam="true"/>
    <variable name="VC_FLAG" dispName="VC_FLAG" prior="9" alterationParam="true"/>
    </param_def>
    <!-- 寸法値の組み合わせの定義 -->
    <param_combo_table model_name="既定のモデル.mdp">
    <param_combo>
    <variable type="fix" name="No." value="1.5"/>
    <variable type="fix" name="BC_FLAG" value="0" selectvalue="なし"/>
    <variable type="fix" name="lmax" value="min(P*5,50)"/>
    <variable type="fix" name="VC_FLAG" value="0" selectvalue="なし"/>
    <variable type="fix" name="Vmin" value="0.5"/>
    </param_combo>
    <param_combo>
       <variable type="fix" name="No." value="1.5"/>
       <variable type="fix" name="BC_FLAG" value="1" selectvalue="あり"/>
       <variable type="fix" name="lmax" value="min(P*6,50)"/>
       <variable type="fix" name="VC_FLAG" value="0" selectvalue="なし"/>
       <variable type="fix" name="Vmin" value="0.5"/>
    </param_combo>
    <param_combo>
    <variable type="fix" name="No." value="1.5"/>
    <variable type="fix" name="BC_FLAG" value="0" selectvalue="なし"/>
    <variable type="fix" name="lmax" value="min(P*5,50)"/>
    <variable type="fix" name="VC_FLAG" value="1" selectvalue="あり"/>
    <variable type="fix" name="Vmin" value="0.4"/>
    </param_combo>
    </param_combo_table>
    <!-- 追加工種類一覧の定義 -->
    <alteration_combo_table name="Vminを拡大" conflict="lmaxを拡大">
    <alteration_combo name="なし" code_format="none">
    <variable name="VC_FLAG" />
    </alteration_combo>
    <alteration_combo name="あり" code_format="V=VC">
    <variable name="VC_FLAG" />
    </alteration_comb>
    </alteration_combo_table>
    <alteration_combo_table name="lmaxを拡大" conflict="Vminを拡大">
    <alteration_combo name="なし" code_format="none">
    <variable name="BC_FLAG" />
    </alteration_combo>
    <alteration_combo name="あり" code_format="-BC">
    <variable name="BC_FLAG" />
    </alteration_combo>
    </alteration_combo_table>