Autodesk Inventor ilogic チュートリアル Part 2 Excel スプレッドシートと関連付けたルール作成 これは 3 つの章に分かれたチュートリアルの Part 2 です Part 1 では ilogic でルールを作成 実行して パーツドキュメントのパラメータ値を外部からコントロールする方法を学習します Part 2 では ilogic で Excel スプレッドシートと関連付けたルールを作成 実行して Excel スプレッドシートを参照して パーツドキュメントのパラメータ値を外部からコントロールする方法を学習します Part 3 では ilogic でルールを作成 実行して アセンブリおよびコンポーネントのパラメータ値を外部からコントロールする方法を学習します ilogic チュートリアルでの学習は Part 1 から順番に進めるようにしてください チュートリアル Part 2 のカリキュラムは 次のとおりです パラメータの作成 : パラメータエディタを使用して ルールの作成に使用するパラメータやパラメータ値のリストを作成します ルールの作成 : ルールエディタを使用して ルールを作成します Excel スプレッドシートとの関連付け :Excel スプレッドシートを参照するルールを作成します ルールのテスト : ルールを実行して パーツの各形状の変化や部品番号の変化を確認します ルールの順番の変更 : ツリーエディタを使用して ルールを実行する順番を変更します 1 / 22
チュートリアル Part 2 の概要 チュートリアル Part 2 では サンプルデータのマニホールドブロックを使用して ilogic で Excel スプレッドシートと関連付けて マニホールドブロックの各形状や部品番号に関するルールを作成 実行して ilogic のルールに基づいて Excel スプレッドシートを参照して パーツドキュメントのパラメータ値を外部からコントロールする方法を学習していきます サンプルデータのロード チュートリアル Part 2 で使用するサンプルデータをロードします 1. Autodesk Inventor を起動し アプリケーションメニューから [ 管理 ][ プロジェクト ] を選択して [ プロジェクト ] ダイアログを表示します または [ スタートアップ ] タブから [ プロジェクト ] を選択して [ プロジェクト ] ダイアログを表示します 2. プロジェクトリストで Inventor プロジェクト [ilogic 2010 Tutorial] をアクティブにして [ 完了 ] ボタンをクリックします 3. [ リボン ] メニューの [ 開く ] を選択して [ 開く ] ダイアログを表示し パーツドキュメントファイル manifold_block_no_rules.ipt を開きます 4. [ アプリケーションメニュー ] の [ 名前を付けて保存 ] を選択して [ 名前を付けて保存 ] ダイアログを表示し ファイル名 manifold_block.ipt を入力して保存します 2 / 22
これで チュートリアル Part 2 で使用するサンプルデータのロードが完了しました パラメータを作成する これからパラメータエディタを使用して ルールのプログラム作成に使用するパラメータ [port_a_size] パラメータ [port_b_size] パラメータ [port_c_size] パラメータ [block] パラメータ [component_type] パラメータを作成していきます [port_a_size] パラメータの作成 1. [ 管理 ] タブの [ パラメータ ] パネルから [ilogic Parameters] ツールをクリックします これで パラメータエディタが起動し [Parameter Editor] ダイアログが表示されます 2. パラメータリストの一番下の行 [Name] 列のセルをクリックして パラメータ名 port_a_size を入力します 3. [port_a_size] 行の [Type] 列のセルをクリックしてドロップダウンリストを表示し [User] を選択します 4. [port_a_size] 行の [Unit] 列のセルをクリックしてドロップダウンリストを表示し [in] を選択します 5. [port_a_size] 行の適当な空白セルを右クリックしてメニューを表示し [Make Multi-Value] を選択して [Value List Editer] ダイアログを表示します 3 / 22
6. [Add New Item(s)] フィールドにパラメータ値 0.5 0.75 1.00 1.25 1.50 2.00 2.50 3.00 を入力し [Add] ボタンをクリックして [Value] リストに追加します 7. [OK] ボタンをクリックして ダイアログを閉じます 8. [part_a_size] 行の [Key] 列にチェックを入れて キーパラメータに設定します [port_b_size] [port_c_size] パラメータの作成 [port_a_size] パラメータと同じ内容で [port_b_size] [port_c_size] パラメータを作成します [block] パラメータの作成 1. パラメータリストの一番下の行 [Name] 列のセルをクリックして パラメータ名 block を入力します 2. [block] 行の [Type] 列のセルをクリックしてドロップダウンリストを表示し [String] を選択します 3. [block] 行の [Unit] 列のセルをクリックして空白にします 4. [block] 行の適当な空白セルを右クリックしてメニューを表示し [Make Multi-Value] を選択して [Value List Editer] ダイアログを表示します 5. [Add New Item(s)] フィールドにパラメータ値 tee elbow を入力し [Add] ボタンをクリックして [Value] リストに追加します 6. [OK] ボタンをクリックして [Value List Editer] ダイアログを閉じます 7. [block] 行の [Key] 列にチェックを入れて キーパラメータに設定します [component_type] パラメータの作成 1. パラメータリストの一番下の行 [Name] 列のセルをクリックして パラメータ名 component_type を入力します 2. [component_type] 行の [Type] 列のセルをクリックしてドロップダウンリストを表示し [String] を選択します 3. [component_type] 行の [Unit] 列のセルをクリックして空白にします 4. [component_type] 行の適当な空白セルを右クリックしてメニューを表示し [Make Multi-Value] を選択して [Value List Editer] ダイアログを表示します 5. [Add New Item(s)] フィールドにパラメータ値 standard custom を入力し [Add] ボタンをクリックして [Value] リストに追加します 4 / 22
6. [OK] ボタンをクリックして [Value List Editer] ダイアログを閉じます 7. [component_type] 行の [Key] 列にチェックを入れて キーパラメータに設定します 8. [Done] ボタンをクリックしてダイアログを閉じてから パーツドキュメントを保存します これで ルールのプログラム作成に使用するパラメータの作成は すべて完了しました ルールを作成する これから ルールエディタを使用して ブロックの各形状や部品番号のパラメータ値をコントロールするためのルール ブロックの回路のルール ポートのサイズのルール ブロックのサイズのルール ポートのサイズ構成のルール 部品番号のルールのプログラムを作成していきます ブロックの回路のルール ブロックには ポートをつなぐ回路が設けられています パラメータの作成段階では [block] パラメータを作成して パラメータ値 [tee] [elbow] を割り当てました これから このパラメータとパラメータ値を構文に使用して ブロックの回路のルールのプログラムを作成します パラメータエディタの [Multi-Value] リストでパラメータ値を選択すると ブロックの回路をティータイプまたはエルボタイプに変更する そんな動作のルールを実行できるようにします 5 / 22
ルールのプログラムの作成 ブロックの回路のルールのプログラムを作成していきます パラメータ値が [tee] のときに実行するパート まず パラメータ値が [tee] のときに実行するパートを作成します 1. [ 管理 ] タブの [ilogic] パネルの [Add Rule] ツールをクリックして [Rule Name] ダイアログを表示します 2. [Name] フィールドにルール名 block_shape_rule を入力し [OK] ボタンをクリックして [Edit Rule] ダイアログを表示します 3. [Model] タブをクリックして内容を表示し テキストフィールドに If を入力するか [If] ボタンをクリックして挿入します 4. モデルツリーフィールドの [ilogic Parameters] をクリックして [Parameters] タブにパラメータをリスト表示します 5. [block] パラメータをダブルクリックして テキストフィールドに挿入します 6. ="tee" を入力します 7. [Then] ボタンをクリックして テキストフィールドに挿入します If block = "tee" Then 8. [Rule Syntax] タブをクリックして 内容を表示します 9. [Categories] フィールドの [Component/Feature] をクリックし [Functions] フィールドの [Feature.IsActive(featurename )] をダブルクリックして テキストフィールドに挿入します 10. [Model] タブをクリックして 内容を表示します 11. モデルツリーフィールドの [Port_B] をクリックして [Names] タブにパラメータをリスト表示します 12. 括弧内の構文 featurename を選択した状態で [Names] タブの [Port_B] をダブルクリックして テキストフィールドに挿入します 13. ("Port_B") の後に =True を入力します 14. [Rule Syntax] タブをクリックして 内容を表示します 15. [Categories] フィールドの [Component/Feature] をクリックし [Function] フィールドの [Feature.IsActive(featurename )] をダブルクリックして テキストフィールドに挿入します 16. [Model] タブをクリックして 内容を表示します 17. モデルツリーフィールドの [Port_B_Threads] をクリックして [Names] タブにパラメータをリスト表示します 18. 括弧内の構文 featurename を選択した状態で [Names] タブの [Port_B_Threads] をダブルクリックして テキストフィールドに挿入します 19. ("Port_B_Threads") の後に =True を入力します Feature.IsActive("Port_B") = True Feature.IsActive("Port_B_Threads") = True 6 / 22
ここでは [block] パラメータのパラメータ値が [tee] のときは [Port_B] フィーチャと [Port_B_threads] フィーチャ のアクティブ化を有効にすることを指定しています パラメータ値が [elbow] のときに実行するパート 次に パラメータ値が [elbow] のときに実行するパートを作成します 1. テキストフィールドに ElseIf を入力するか [ElseIf] ボタンをクリックして挿入します 2. モデルツリーフィールドの [ilogic Parameters] をクリックして [Parameters] タブにパラメータをリスト表示します 3. [block] パラメータをダブルクリックして テキストフィールドに挿入します 4. ="elbow" を入力します 5. [Then] ボタンをクリックして テキストフィールドに挿入します ElseIf block = "elbow" Then 6. 先に作成したパラメータ値 [tee] のパートの構文をコピー & ペーストし True の箇所を False に修正します Feature.IsActive("Port_B") = False Feature.IsActive("Port_B_Threads") = False ここでは [block] パラメータのパラメータ値が [elbow] のときは [Port_B] フィーチャと [Port_B_threads] フィーチ ャのアクティブ化を無効にすることを指定しています 7. テキストフィールドに EndIf を入力するか [EndIf] ボタンをクリックして挿入します 8. [OK] ボタンをクリックして ダイアログを閉じます これで ブロックの回路のルールのプログラム作成は完了しました ルールのテスト ブロックの回路のルールを実行して 意図した通りに動作するかテストを行います 1. [ 管理 ] タブの [ パラメータ ] パネルから [ilogic Parameters] ツールをクリックして [Parameter Editor] ダイアログを表示します 7 / 22
2. [block] 行の [Multivalue] 列のセルをクリックしてドロップダウンリストを表示し [tee] を選択します パラメータ値 [tee] を選択すると ブロックのポート B が作成され 回路がティータイプに変更されることを確認してください 3. [block] 行の [Multivalue] 列のセルをクリックしてドロップダウンリストを表示し [elbow] を選択します パラメータ値 [elbow] を選択すると ブロックのポート B が省略され 回路がエルボタイプに変更されることを確認してください 8 / 22
4. [Done] ボタンをクリックして ダイアログを閉じます これで ブロックの回路のルールのテストは完了しました ポートのサイズのルール ブロックには ポートとタップ穴が設けられています パラメータの作成段階では [port_a_size] [port_b_size] [port_c_size] パラメータを作成して パラメータ値を割り当てました これから これらのパラメータとパラメータ値を構文に使用して ポートのサイズのルールのプログラムを作成します パラメータエディタの [Multi-Value] リストでパラメータ値を選択すると Excel スプレッドシートを参照して ポートのサイズとタップ穴を変更する そんな動作のルールを実行できるようにします ルールのプログラムの作成 ポートのサイズのルールのプログラムを作成していきます パラメータ値が [port_a_size] のときに実行するパート まず パラメータ値が [port_a_size] のときに実行するパートを作成します 1. [ モデル ] ブラウザの [ サードパーティ ] を展開し [Embedding 1] を右クリックしてメニューを表示し [ 編集 ] を選択して パーツドキュメントに埋め込まれた Excel スプレッドシートを表示します Excel スプレッドシートの各列にブロックの各形状のモデルパラメータに対応するパラメータとパラメータ値が記載されていることに注目してください 2. [ilogic] パネルの [Add Rule] ツールをクリックして [Rule Name] ダイアログを表示します 3. [Name] フィールドにルール名 port_size_rule を入力し [OK] ボタンをクリックして [Edit Rule] ダイアログを表示します 9 / 22
4. [Rule Syntax] タブをクリックして 内容を表示します 5. [Categories] フィールドの [Data Links] をクリックして [Functions] フィールドに構文をリスト表示します 6. [Functions] フィールドの [i = GoExcel.FindRow("3rd Party:Embedding 1", "Sheet1", columnname", "<=", 0.2, "columnname", "<=", 4.1)] をダブルクリックして 構文をテキストフィールドに挿入します 7. 挿入した構文を次の通りに修正します i = GoExcel.FindRow("3rd Party:Embedding 1", "Sheet1", "port_size", "=", port_a_size) 8. [Functions] フィールドの [= GoExcel.CurrentRowValue] をダブルクリックして 構文をテキストフィールドに挿入します 9. 挿入した構文を次の通りに修正します port_a_y_dist_between_screw = GoExcel.CurrentRowValue("y_dist_between_screw") 10. 先に作成したパートの構文のコピー & ペーストと修正を繰り返して 次の通りにします port_a_x_dist_between_screw = GoExcel.CurrentRowValue("x_dist_between_screw") port_a_port_dia = GoExcel.CurrentRowValue("port_dia") Port_A_Drill_Depth = GoExcel.CurrentRowValue("tap_drill_depth") ここでは [port_a_size] パラメータに対応する Excel スプレッドシートの列と ポート A とタップ穴のパラメータ値を参照する Excel スプレッドシートの列を指定しています 青色表示のパラメータは すべてパーツドキュメント manifold_block.ipt のパラメータです 11. [Categories] フィールドの [Component/Feature] をクリックして [Functions] フィールドに構文をリスト表示します 12. [Functions] フィールドの [Feature.ThreadDesignation( featurename )= 3/8-16 UNC ] をダブルクリックして 構文をテキストフィールドに挿入します 13. 挿入した構文を次の通りに修正します Feature.ThreadDesignation("Port_A_Threads") = GoExcel.CurrentRowValue("tap_dim") ここでは ポート A のタップ穴 [Port_A_Threads] フィーチャのパラメータ値を参照する Excel スプレッドシー 10 / 22
トの列を指定しています パラメータ値が [port_b_size] のときに実行するパート 次に パラメータ値が [port_b_size] のときに実行するパートを作成します 1. 先に作成したパラメータ値 [port_a_size] のパートの構文をコピー & ペーストします 2. port_a の箇所を すべて port_b に修正します i = GoExcel.FindRow("3rd Party:Embedding 1", "Sheet1", "port_size", "=", port_b_size) port_b_y_dist_between_screw = GoExcel.CurrentRowValue("y_dist_between_screw") port_b_x_dist_between_screw = GoExcel.CurrentRowValue("x_dist_between_screw") port_b_port_dia = GoExcel.CurrentRowValue("port_dia") Port_B_Drill_Depth = GoExcel.CurrentRowValue("tap_drill_depth") Feature.ThreadDesignation("Port_B_Threads") = GoExcel.CurrentRowValue("tap_dim") パラメータ値が [port_c_size] のときに実行するパート 最後に パラメータ値が [port_b_size] のときに実行するパートを作成します 1. 先に作成したパラメータ値 [port_a_size] のパートの構文をコピー & ペーストします 2. port_a の箇所を すべて port_c に修正します i = GoExcel.FindRow("3rd Party:Embedding 1", "Sheet1", "port_size", "=", port_c_size) port_c_y_dist_between_screw = GoExcel.CurrentRowValue("y_dist_between_screw") port_c_x_dist_between_screw = GoExcel.CurrentRowValue("x_dist_between_screw") port_c_port_dia = GoExcel.CurrentRowValue("port_dia") Port_C_Drill_Depth = GoExcel.CurrentRowValue("tap_drill_depth") Feature.ThreadDesignation("Port_C_Threads") = GoExcel.CurrentRowValue("tap_dim") 3. [OK] ボタンをクリックしてダイアログを閉じてから パーツドキュメントを保存します これで ポートのサイズのルールのプログラム作成は完了しました ルールのテスト ポートのサイズのルールを実行して 意図した通りに動作するかテストを行います 1. [ 管理 ] タブの [ パラメータ ] パネルから [ilogic Parameters] ツールをクリックして [Parameter Editor] ダイアログを表示します 11 / 22
2. [port_a_size] 行の [Multivalue] 列のセルをクリックしてドロップダウンリストを表示し [1.50] を選択してから適当な空白セルをクリックします パラメータ値 [1.50] を選択すると ポート A のサイズが 1.5 インチに変更され それに合わせてタップ穴が変更されることを確認してください 3. [Done] ボタンをクリックして ダイアログを閉じます これで ポートのサイズのルールのテストは完了しました ブロックのサイズのルール 現状のままでは ポートのサイズのルールを実行してポートのサイズを変更しても ブロックは元のサイズのままです ポートのサイズの変更にブロックのサイズを対応させるために これから ブロックのサイズのルールのプログラムを作成していきます ポートのサイズを変更すると Excel スプレッドシートを参照して 最大サイズのポートに合わせてブロックのサイズを変更する そんな動作のルールを実行できるようにします ルールのプログラムの作成 ブロックのサイズのルールのプログラムを作成していきます 12 / 22
1. [ilogic] パネルの [Add Rule] ツールをクリックして [Rule Name] ダイアログを表示します 2. [Name] フィールドにルール名 block_size を入力し [OK] ボタンをクリックして [Edit Rule] ダイアログを表示します 3. テキストフィールドに If block = "tee" Then を入力します 4. [Rule Syntax] タブをクリックして内容を表示し [Categories] フィールドの [Math] をクリックします 5. [Functions] フィールドの [MaxOfMany(,,,,)] をダブルクリックして 構文をテキストフィールドに挿入します 6. 挿入した構文を port = MaxOfMany(port_a_size,port_b_size,port_c_size) に修正します 7. テキストフィールドに ElseIf block = "elbow" Then を入力します 8. [Functions] フィールドの [MaxOfMany(,,,,)] をダブルクリックして 構文をテキストフィールドに挿入します 9. 挿入した構文を port = MaxOfMany(port_a_size,port_c_size) に修正します 10. テキストフィールドに EndIf を入力するか [EndIf] ボタンをクリックして挿入します If block = "tee" Then port = MaxOfMany(port_a_size,port_b_size,port_c_size) ElseIf block = "elbow" Then port = MaxOfMany(port_a_size,port_c_size) ここでは [block] パラメータのパラメータ値が [tee] のときには [port_a_size] [port_b_size] [port_c_size] パラメータの中でパラメータ値が最大のものを [port] パラメータとする パラメータ値が [elbow] のときには [port_a_size] [port_c_size] パラメータの中でパラメータ値が最大のものを [port] パラメータとすることを指示しています 11. テキストフィールドに 次の通りに構文を入力します i = GoExcel.FindRow("3rd Party:Embedding 1", "Sheet1", "port_size", "=", port) block_depth = GoExcel.CurrentRowValue("block_depth") port_c_depth_from_front = GoExcel.CurrentRowValue("port_c_depth_from_front") block_width = GoExcel.CurrentRowValue("block_width") port_a_hor_offset = GoExcel.CurrentRowValue("hor_offset") port_b_hor_offset = GoExcel.CurrentRowValue("hor_offset") port_c_hor_offset = GoExcel.CurrentRowValue("hor_offset") ここでは [port] パラメータのパラメータ値に対応する Excel スプレッドシートの列と ブロックのパラメータ値が参照する Excel スプレッドシートの列を指定しています 12. テキストフィールドに 次のとおりに構文を入力します If block = "tee" Then 13 / 22
porta = MaxOfMany(port_a_size, port_b_size) ElseIf block = "elbow" porta = port_a_size ここでは [block] パラメータのパラメータ値が [tee] のときには [port_a_size] [port_b_size] パラメータの中で パラメータ値が最大のものを [porta] パラメータとする パラメータ値が [elbow] のときには [port_a_size] パラメ ータを [porta] パラメータとすることを指示しています 13. テキストフィールドに 次の通りに構文を入力します i = GoExcel.FindRow("3rd Party:Embedding 1", "Sheet1", "port_size", "=", porta) port_a_vert_offset = GoExcel.CurrentRowValue("vert_offset") port_b_vert_offset = GoExcel.CurrentRowValue("vert_offset") ここでは [porta] パラメータのパラメータ値に対応する Excel スプレッドシートの列と ブロックのパラメータ値が参照する Excel スプレッドシートの列を指定しています 14. テキストフィールドに 次の通りに構文を入力します If block = "elbow" Then port_c_vert_offset = GoExcel.CurrentRowValue("vert_offset") + (GoExcel.CurrentRowValue("port_dia")/4) Else port_c_vert_offset = GoExcel.CurrentRowValue("vert_offset") ここでは [block] パラメータのパラメータ値が [elbow] のときには Excel スプレッドシートを参照して [Vertoffset]+[port_dia]/4 のパラメータ値を [port_c_vert_offset] パラメータに出力する パラメータ値が [elbow] 以外のときには Excel スプレッドシートの [Vertoffset] 列のパラメータ値を [port_c_vert_offset] パラメータに出力することを指示しています 15. テキストフィールドに 次の通りに構文を入力します block_height = GoExcel.CurrentRowValue("block_height") ここでは Excel スプレッドシートの [block_height] 列のパラメータ値を [block_height] パラメータに出力する ことを指示しています 14 / 22
16. [OK] ボタンをクリックしてダイアログを閉じてから パーツドキュメントを保存します これで ブロックのサイズのルールのプログラム作成は完了しました ルールのテスト ブロックのサイズのルールを実行して 意図した通りに動作するかテストを行います 1. [ 管理 ] タブの [ パラメータ ] パネルから [ilogic Parameters] ツールをクリックして [Parameter Editor] ダイアログを表示します 2. パラメータフィルタの左フィールドを [All] に 右フィールドを [Key] に設定して パラメータリストをフィルタリングします 3. [port_a_size] 行の [Multivalue] 列のセルをクリックしてドロップダウンリストを表示し [3.00] を選択してから適当な空白セルをクリックします パラメータ値 [3.00] を選択すると ポート A のサイズが 3 インチに変更されるのに合わせて ブロックのサイズが変更されることを確認してください 4. [Done] ボタンをクリックして ダイアログを閉じます これで ブロックのサイズのルールのテストは完了しました ポートのサイズ構成のルール パラメータの作成段階では [component_type] パラメータを作成して パラメータ値 [standard] [custom] を割り当てました これから このパラメータとパラメータ値を構文に使用して ポートのサイズ構成のルールのプログラムを作成します パラメータエディタの [Multi-Value] リストでパラメータ値 [standard] を選択すると 他のポートをポート A と同じサイズに強制的に変更する そんな動作のルールを実行できるようにします ルールのプログラムの作成 ポートのサイズ構成のルールのプログラムを作成していきます 1. [ilogic] パネルの [Add Rule] ツールをクリックして [Rule Name] ダイアログを表示します 2. [Name] フィールドにルール名 component_type_rule を入力し [OK] ボタンをクリックして [Edit Rule] ダイアログを表示します 3. テキストフィールドに 次の通りに構文を入力します If component_type = "standard" Then 15 / 22
port_b_size = port_a_size port_c_size = port_a_size 4. [OK] ボタンをクリックしてダイアログを閉じます これで ポートのサイズ構成のルールのプログラム作成は完了しました ルールの順番の変更 ilogic でルールを実行する順番は ツリーエディタでルールの配列を入れ替えることで変更できます これから ポートのサイズ構成のルールを一番先に実行できるように ルールの順番を変更します 1. [ilogic] パネルの [edit ilogic Tree] ツールをクリックして [ilogic Tree] ダイアログを表示します 2. [In Document] タブの [component_type_rule] をツリーの一番上にドラッグ & ドロップして ルールの実行の順番を入れ替えます 3. [OK] ボタンをクリックしてダイアログを閉じてから パーツドキュメントを保存します これで ルールの順番の変更は完了しました ルールのテスト ポートのサイズ構成のルールを実行して 意図した通りに動作するかテストを行います 1. [ilogic] パネルの [Parameters] ツールをクリックして [Parameter Editor] ダイアログを表示します ここで [port_b_size] [port_c_size] 行の [Driving Rule] 列のセルに注目してください どちらのセルにもルール名がハイライト表示されています これは [port_b_size] [port_c_size] パラメータのパラメータ値は ポートの構成のルールに基づいていることを示しています 16 / 22
2. [component_type] 行の [Multivalue] 列のセルをクリックしてドロップダウンリストを表示し [standard] を選択します 3. [port_a_size] 行の [Multivalue] 列のセルをクリックしてドロップダウンリストを表示し [0.75] を選択します パラメータ値 [standard] [0.75] を選択すると ポート A が 0.75 インチに変更されるのに合わせて 他のポートがポート A と同じ 0.75 インチに強制的に変更されることを確認してください 4. [component_type] 行の [Multivalue] 列のセルをクリックしてドロップダウンリストを表示し [custum] を選択します 5. [port_c_size] 行の [Multivalue] 列のセルをクリックしてドロップダウンリストを表示し [3.00] を選択します パラメータ値 [custum] [3.00] を選択すると ポート C のみ 3 インチに変更され 他のポートは変更されないことを確認してください 6. [Done] ボタンをクリックして ダイアログを閉じます これで ポートのサイズ構成のルールのテストは完了しました 部品番号のルール 最後に 部品番号のルールのプログラムを作成します パラメータエディタで ポートのサイズのパラメータ値を変更すると Excel のスプレッドシートを参照して i Property の部品番号を更新する そんな動作のルールを実行できるようにします ルールのプログラムの作成 部品番号のルールのプログラムを作成していきます 1. [ilogic] パネルの [Add Rule] ツールをクリックして [Rule Name] ダイアログを表示します 2. [Name] フィールドにルール名 part_number_rule を入力し [OK] ボタンをクリックして [Edit Rule] ダイアログを表示します 3. テキストフィールドに 次の通りに構文を入力します 17 / 22
If component_type = "standard" Then i = GoExcel.FindRow("3rd Party:Embedding 1", "Sheet1", "port_size", "=", port_a_size) 4. [Rule Syntax] タブをクリックして 内容を表示します 5. [Categories] フィールドの [i Properties] をクリックして [Functions] フィールドに構文をリスト表示します 6. [Functions] フィールドの [iproperties.value("project", "Part Number")] をダブルクリックして 構文をテキストフィールドに挿入します 7. [Categories] フィールドの [Data Links] をクリックして [Functions] フィールドに構文をリスト表示します 8. [Functions] フィールドの [= GoExcel.CurrentRowValue("column_Name")] をダブルクリックして 構文をテキストフィールドに挿入します 9. 挿入した構文を次の通りに修正します iproperties.value("project", "Part Number") = GoExcel.CurrentRowValue("model_code") ここでは Excel スプレッドシートの [model_code] 列のパラメータ値を i Property の部品番号に出力することを指定しています 10. テキストフィールドに 次の通りに構文を入力します Else iproperties.value("project", "Part Number") = "HomeMade" ここでは パラメータ値が [standard] 以外のときは i Property の部品番号にパラメータ値 [HomeMade] を出力することを指定しています 11. [OK] ボタンをクリックしてダイアログを閉じてから パーツドキュメントを保存します これで 部品番号のルールのプログラム作成は完了しました ルールのテスト 部品番号のルールを実行して 意図した通りに動作するかテストを行います 1. [ 管理 ] タブの [ パラメータ ] パネルから [ilogic Parameters] ツールをクリックして [Parameter Editor] ダイアログを表示します 2. [component_type] 行の [Multivalue] 列のセルをクリックしてドロップダウンリストを表示し [standard] を選択します 18 / 22
3. [port_a_size] 行の [Multivalue] 列のセルをクリックしてドロップダウンリストを表示し [1.50] を選択します 4. [Done] ボタンをクリックして [Parameter Editor] ダイアログを閉じます 5. [ アプリケーションメニュー ] の [i Property] を選択して [i Property] ダイアログを表示し [ プロジェクト ] タブをクリックして内容を表示します パラメータ値 [standard] [1.50] を選択すると Excel のスプレッドシートを参照して [i Property] ダイアログの [ 部品番号 ] フィールドに 部品番号 [MAN-150] が入力されていることを確認してください 6. [ 閉じる ] ボタンをクリックして [i Property] ダイアログを閉じます 7. [ 管理 ] タブの [ パラメータ ] パネルから [ilogic Parameters] ツールをクリックして [Parameter Editor] ダイアログを表示します 8. [component_type] 行の [Multivalue] 列のセルをクリックしてドロップダウンリストを表示し [custom] を選択します 9. [Done] ボタンをクリックして [Parameter Editor] ダイアログを閉じます 10. [ アプリケーションメニュー ] の [i Property] を選択して [i Property] ダイアログを表示し [ プロジェクト ] タブをクリックして内容を表示します パラメータ値 [custum] [1.50] を選択すると [i Property] ダイアログの [ 部品番号 ] フィールドに 部品番号 HomeMade が入力されていることを確認してください 19 / 22
11. [ 閉じる ] ボタンをクリックして [i Property] ダイアログを閉じます これで 部品番号のルールのテストは完了しました これをもって ilogic チュートリアル Part2 のカリキュラムはすべて完了しました 最後に パーツドキュメントを保存して閉じます ilogic チュートリアル Part2 は終了です Part3 へ進んでください 付録ルールのプログラム全文ブロックの回路のルール If block = "tee" Then Feature.IsActive("Port_B") = True Feature.IsActive("Port_B_Threads") = True ElseIf block = "elbow" Then Feature.IsActive("Port_B") = False Feature.IsActive("Port_B_Threads") = False ポートのサイズのルール i = GoExcel.FindRow("3rd Party:Embedding 1", "Sheet1", "port_size", "=", port_a_size) port_a_y_dist_between_screw = GoExcel.CurrentRowValue("y_dist_between_screw") 20 / 22
port_a_x_dist_between_screw = GoExcel.CurrentRowValue("x_dist_between_screw") port_a_port_dia = GoExcel.CurrentRowValue("port_dia") Port_A_Drill_Depth = GoExcel.CurrentRowValue("tap_drill_depth") Feature.ThreadDesignation("Port_A_Threads") = GoExcel.CurrentRowValue("tap_dim") i = GoExcel.FindRow("3rd Party:Embedding 1", "Sheet1", "port_size", "=", port_b_size) port_b_y_dist_between_screw = GoExcel.CurrentRowValue("y_dist_between_screw") port_b_x_dist_between_screw = GoExcel.CurrentRowValue("x_dist_between_screw") port_b_port_dia = GoExcel.CurrentRowValue("port_dia") Port_B_Drill_Depth = GoExcel.CurrentRowValue("tap_drill_depth") Feature.ThreadDesignation("Port_B_Threads") = GoExcel.CurrentRowValue("tap_dim") i = GoExcel.FindRow("3rd Party:Embedding 1", "Sheet1", "port_size", "=", port_c_size) port_c_y_dist_between_screw = GoExcel.CurrentRowValue("y_dist_between_screw") port_c_x_dist_between_screw = GoExcel.CurrentRowValue("x_dist_between_screw") port_c_port_dia = GoExcel.CurrentRowValue("port_dia") Port_C_Drill_Depth = GoExcel.CurrentRowValue("tap_drill_depth") Feature.ThreadDesignation("Port_C_Threads") = GoExcel.CurrentRowValue("tap_dim") ブロックのサイズのルール If block = "tee" Then port = MaxOfMany(port_a_size,port_b_size,port_c_size) ElseIf block = "elbow" Then port = MaxOfMany(port_a_size,port_c_size) i = GoExcel.FindRow("3rd Party:Embedding 1", "Sheet1", "port_size", "=", port) block_depth = GoExcel.CurrentRowValue("block_depth") port_c_depth_from_front = GoExcel.CurrentRowValue("port_c_depth_from_front") block_width = GoExcel.CurrentRowValue("block_width") port_a_hor_offset = GoExcel.CurrentRowValue("hor_offset") port_b_hor_offset = GoExcel.CurrentRowValue("hor_offset") port_c_hor_offset = GoExcel.CurrentRowValue("hor_offset") If block = "tee" Then porta = MaxOfMany(port_a_size, port_b_size) ElseIf block = "elbow" porta = port_a_size 21 / 22
i = GoExcel.FindRow("3rd Party:Embedding 1", "Sheet1", "port_size", "=", porta) port_a_vert_offset = GoExcel.CurrentRowValue("vert_offset") port_b_vert_offset = GoExcel.CurrentRowValue("vert_offset") If block = "elbow" Then port_c_vert_offset = GoExcel.CurrentRowValue("vert_offset") + (GoExcel.CurrentRowValue("port_dia")/4) Else port_c_vert_offset = GoExcel.CurrentRowValue("vert_offset") block_height = GoExcel.CurrentRowValue("block_height") ポートのサイズ構成のルール If component_type = "standard" Then port_b_size = port_a_size port_c_size = port_a_size 部品番号のルール If component_type = "standard" Then i = GoExcel.FindRow("3rd Party:Embedding 1", "Sheet1", "port_size", "=", port_a_size) iproperties.value("project", "Part Number") = GoExcel.CurrentRowValue("model_code") Else iproperties.value("project", "Part Number") = "HomeMade" Autodesk Inventor は 米国 Autodesk, Inc. の米国およびその他の国における商標または登録商 標です その他記載の会社名 ブランド名および商品名は 各社の商標または登録商標です 記載事項は 予告なく変更することがございます 予めご了承ください 2009 Autodesk, Inc. All rights reserved. 22 / 22