次のいくつかのレッスンでは、アセンブリのコンテンツを管理するための一連の規則を作成します。
このモデルには manifold_block:1 という名前のパーツが含まれており、そのパーツの中には iLogic 規則があります。アセンブリ レベルのパラメータをパーツに渡す必要があります。
この規則によって、アセンブリ内の制御パラメータの対応する値に基づき、パーツ内のパラメータが設定されます。この Parameter 関数は、コンポーネントの名前とともにパラメータの名前を指定します。
Parameter("manifold_block:1", "block") = block Parameter("manifold_block:1", "component_type") = component_type Parameter("manifold_block:1", "port_a_size") = port_a_size Parameter("manifold_block:1", "port_b_size") = port_b_size Parameter("manifold_block:1", "port_c_size") = port_c_size
「マニホルド ブロック パーツ」チュートリアルでは、T 形やエルボ スタイルを制御するマニホルド ブロック パーツに対する規則を追加しました。この規則をアセンブリ レベルでも追加する必要があります。既存の規則を書き直すのではなく、元の規則をコピーします。
If component_type = "standard" Then port_b_size = port_a_size port_c_size = port_a_size End If
Port A のポート サイズを変更するときは、次のようないくつかのタスクを実行する必要があります。
これを行うための規則を追加します。
この規則の最初の部分は、結合パーツの iPart テーブルに保存された情報に基づいて、ねじパターンの間隔を調整します。
i = iPart.FindRow("port_a_union", "port_size", "=", port_a_size) port_a_y_dist_between_screws = iPart.CurrentRowValue("y_dist_betwn_screw") port_a_x_dist_between_screws = iPart.CurrentRowValue("x_dist_betwn_screw")
規則の次の部分では、選択したポート サイズに基づき、ねじパーツ内部の適切な iPart 行を選択します。
If port_a_size = .50 Then iPart.ChangeRow("port_a_union_screw", "Screw-01") ElseIf port_a_size = 0.75 Then iPart.ChangeRow("port_a_union_screw", "Screw-02") ElseIf port_a_size = 1.00 Then iPart.ChangeRow("port_a_union_screw", "Screw-02") ElseIf port_a_size = 1.25 Then iPart.ChangeRow("port_a_union_screw", "Screw-03") ElseIf port_a_size = 1.50 Then iPart.ChangeRow("port_a_union_screw", "Screw-04") ElseIf port_a_size = 2.00 Then iPart.ChangeRow("port_a_union_screw", "Screw-04") ElseIf port_a_size = 2.50 Then iPart.ChangeRow("port_a_union_screw", "Screw-05") ElseIf port_a_size = 3.00 Then iPart.ChangeRow("port_a_union_screw", "Screw-06") End If
port_a_union_part_number = iProperties.Value("port_a_union", "Project", "Part Number")
Port B は Port A や Port C とは異なり、エルボ マニホルド ブロックには存在しません。マニホルド ブロックがエルボ スタイルのブロックである場合は、このポートに使用される結合キャップと結合ねじを省略する必要があります。また、結合キャップに関連付けられているメイト拘束も省略する必要があります。
コンポーネントを省略するため、規則を記述する前に詳細レベルを設定します。アセンブリ内の詳細レベルに関連するアイテムに影響を及ぼす規則では、その規則を作成する前にカスタム詳細レベルが定義され、保存されている必要があります。カスタム詳細レベルが定義されていない場合、iLogic はエラー メッセージを生成します。
詳細レベルを設定する
新しい詳細レベルが追加されます。
ルールを記述する
ここで規則を記述することができます。
If block = "elbow" Then isTee = False ElseisTee = True End If
この変数は、後で他のパラメータを設定する際に使用します。
Constraint.IsActive("port_b_cap_center") = isTee Constraint.IsActive("port_b_cap_hole") = isTee Constraint.IsActive("port_b_cap_face") = isTee Constraint.IsActive("port_b_cap_screw") = isTee
isTee 変数を使用すると、block パラメータの値に従って、これらの拘束をオンまたはオフにすることができます。
Component.IsActive("port_b_union") = isTee Component.IsActive("port_b_screw_pattern") = isTee
これらの行では isTee 変数を使用します。ねじのパターンが省略されると、ねじコンポーネントも省略されます。
if isTee Then i = iPart.FindRow("port_b_union", "port_size", "=", port_b_size) port_b_y_dist_between_screws = iPart.CurrentRowValue("y_dist_betwn_screw") port_b_x_dist_between_screws = iPart.CurrentRowValue("x_dist_betwn_screw") port_b_union_part_number = iProperties.Value("port_b_union", "Project", "Part Number") End If
このブロック全体を If isTee 文に含めることにより、これらの行が T 形のマニホルド ブロックの場合にのみ処理されるようにします。If isTee Then 文は If isTee = True Then と同等ですが、式の形式はより簡潔です。
最初に、結合パーツの iPart テーブルで、port_b_size パラメータの値に対応する適切な行を選択してから、それらの値を x および y パターンのオフセットに使用するために抽出します。次に、結合パーツから部品番号を抽出し、その値を別のパラメータに格納して後で参照できるようにします。
If port_b_size = .50 then iPart.ChangeRow("port_b_union_screw", "Screw-01") elseif port_b_size = .75 then iPart.ChangeRow("port_b_union_screw", "Screw-02") elseif port_b_size = 1.00 then iPart.ChangeRow("port_b_union_screw", "Screw-02") elseif port_b_size = 1.25 then iPart.ChangeRow("port_b_union_screw", "Screw-03") elseif port_b_size = 1.50 then iPart.ChangeRow("port_b_union_screw", "Screw-04") elseif port_b_size = 2.00 then iPart.ChangeRow("port_b_union_screw", "Screw-04") elseif port_b_size = 2.50 then iPart.ChangeRow("port_b_union_screw", "Screw-05") elseif port_b_size = 3.00 then iPart.ChangeRow("port_b_union_screw", "Screw-06") End If
Port C の規則は、Port A を参照するものすべてが Port C を参照する必要があることを除いて、Port A の規則とほぼ同じです。
i = iPart.FindRow("port_c_union", "port_size", "=", port_c_size) port_c_y_dist_between_screws = iPart.CurrentRowValue("y_dist_betwn_screw") port_c_x_dist_between_screws = iPart.CurrentRowValue("x_dist_betwn_screw") If port_c_size = .50 then iPart.ChangeRow("port_c_union_screw", "Screw-01") elseif port_c_size = .75 then iPart.ChangeRow("port_c_union_screw", "Screw-02") elseif port_c_size = 1.00 then iPart.ChangeRow("port_c_union_screw", "Screw-02") elseif port_c_size = 1.25 then iPart.ChangeRow("port_c_union_screw", "Screw-03") elseif port_c_size = 1.50 then iPart.ChangeRow("port_c_union_screw", "Screw-04") elseif port_c_size = 2.00 then iPart.ChangeRow("port_c_union_screw" "Screw-04") elseif port_c_size = 2.50 then iPart.ChangeRow("port_c_union_screw", "Screw-05") elseif port_c_size = 3.00 then iPart.ChangeRow("port_c_union_screw", "Screw-06") End If port_c_union_part_number = iProperties.Value("port_c_union", "Project", "Part Number")