アセンブリ内に規則を作成する

次のいくつかのレッスンでは、アセンブリのコンテンツを管理するための一連の規則を作成します。

アセンブリからパーツにパラメータを渡す

このモデルには manifold_block:1 という名前のパーツが含まれており、そのパーツの中には iLogic 規則があります。アセンブリ レベルのパラメータをパーツに渡す必要があります。

  1. assembly_to_parts_rule という名前の規則を作成します。

    この規則によって、アセンブリ内の制御パラメータの対応する値に基づき、パーツ内のパラメータが設定されます。この 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
  2. この規則が完成したら [OK] をクリックします。

アセンブリ内のパーツ レベル規則を編集する

マニホルド ブロック パーツ」チュートリアルでは、T 形エルボ スタイルを制御するマニホルド ブロック パーツに対する規則を追加しました。この規則をアセンブリ レベルでも追加する必要があります。既存の規則を書き直すのではなく、元の規則をコピーします。

  1. モデル ブラウザの manifold_block:1 をダブルクリックします。他のコンポーネントが透明になります。
  2. リボンで、 [管理]タブ [iLogic]パネル [ルール ブラウザ] の順にクリックします。
  3. component_type_rule をダブルクリックします。
  4. 規則テキストをクリップボードにコピーします。
  5. [ルールを編集]ダイアログ ボックスで[キャンセル]をクリックして、ダイアログ ボックスを閉じます。
  6. モデル ブラウザ内の my_manifold_block.iam をクリックします。
  7. component_type_rule という名前の新しい規則を追加します。
  8. component_type_rule からコピーした規則テキストを、[ルールを編集]ダイアログ ボックスの規則テキスト領域に貼り付けます。

    コード ブロックをコピーする

    If component_type = "standard" Then
    port_b_size = port_a_size
    port_c_size = port_a_size
    End If
  9. [OK] をクリックして、このアセンブリ レベルの規則を保存します。

port_a_rule を追加する

Port A のポート サイズを変更するときは、次のようないくつかのタスクを実行する必要があります。

これを行うための規則を追加します。

  1. マニホルド ブロック アセンブリがアクティブであることを確認します。
  2. port_a_rule という名前の規則を作成します。

    この規則の最初の部分は、結合パーツの iPart テーブルに保存された情報に基づいて、ねじパターンの間隔を調整します。

  3. port_a_size パラメータに基づいて使用されている行を参照するコード ブロックを追加します。次に、2 つの列から 2 つの異なるアセンブリ パラメータに値を割り当てます。

    コード ブロックをコピーする

    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 関連の文は、[システム]タブの[iPart]ノードにある[スニペット]領域で見つけることができます。

    規則の次の部分では、選択したポート サイズに基づき、ねじパーツ内部の適切な iPart 行を選択します。

  4. 一連の If 文を使用して、port_a_size パラメータの現在の値に従い、適切な 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
  5. この規則の最後の部分では、フレア フランジの部品番号を取得し、それをアセンブリ パラメータに格納する文を追加します。これは、後ほどこのチュートリアルの別の規則で使用されます。

    コード ブロックをコピーする

    port_a_union_part_number = iProperties.Value("port_a_union", "Project", "Part Number")
  6. [OK]をクリックして規則を保存し、アセンブリ ファイルを保存します。

port_b_rule を追加する

Port BPort APort C とは異なり、エルボ マニホルド ブロックには存在しません。マニホルド ブロックがエルボ スタイルのブロックである場合は、このポートに使用される結合キャップと結合ねじを省略する必要があります。また、結合キャップに関連付けられているメイト拘束も省略する必要があります。

コンポーネントを省略するため、規則を記述する前に詳細レベルを設定します。アセンブリ内の詳細レベルに関連するアイテムに影響を及ぼす規則では、その規則を作成する前にカスタム詳細レベルが定義され、保存されている必要があります。カスタム詳細レベルが定義されていない場合、iLogic はエラー メッセージを生成します。

詳細レベルを設定する

  1. モデル ブラウザで、[リプレゼンテーション]ノードを展開してから、[詳細レベル]ノードを展開します。
  2. [詳細レベル]ノードを右クリックして、[新規詳細レベル]を選択します。

    新しい詳細レベルが追加されます。

  3. LevelofDetail1 をゆっくりダブルクリックし、その名前を iLogic に変更します。

ルールを記述する

ここで規則を記述することができます。

  1. port_b_rule という名前の規則を作成します。
  2. この規則の最初の部分では、T 形のブロックを作成するのかどうかを決めて、その情報を個別の変数 isTee に格納します。isTee 変数は True または False という値を保持します。

    コード ブロックをコピーする

    If block = "elbow" Then
    isTee = False
    ElseisTee = True
    End If

    この変数は、後で他のパラメータを設定する際に使用します。

  3. マニホルド ブロックがエルボ スタイルの場合に、結合と結合ねじを特定する拘束をオフにする行を規則に追加します。マニホルド ブロックがT 形の場合に拘束をオンにします。

    コード ブロックをコピーする

    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 パラメータの値に従って、これらの拘束をオンまたはオフにすることができます。

    注: これらの拘束に使用される命名規則によって、それらの拘束がこの規則で参照しやすくなっています。[ルールを編集]ダイアログ ボックスのモデル ツリー情報を使用しても、拘束の名前を決める上で役立ちます。
  4. port_b_union パーツおよび対応するねじのパターンを条件付きで含める 2 つの行を追加します。

    コード ブロックをコピーする

    Component.IsActive("port_b_union") = isTee
    Component.IsActive("port_b_screw_pattern") = isTee

    これらの行では isTee 変数を使用します。ねじのパターンが省略されると、ねじコンポーネントも省略されます。

  5. Port B を使用する場合のために、ポートのサイズ、ねじパターンのパラメータ値、および port_b_union の部品番号を設定するセクションを追加します。

    コード ブロックをコピーする

    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 パターンのオフセットに使用するために抽出します。次に、結合パーツから部品番号を抽出し、その値を別のパラメータに格納して後で参照できるようにします。

  6. この規則の最後の部分では、ねじパーツの iPart テーブル内のメンバを Port B に使用するために選択します。これは port_b_size パラメータの値に基づきます。これは一連の If/Then/Else 文を使用してコントロールします。

    コード ブロックをコピーする

    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
  7. [OK]をクリックしてダイアログ ボックスを閉じ、規則を保存します。
  8. アセンブリ ファイルを保存します。

port_c_rule を追加する

Port C の規則は、Port A を参照するものすべてが Port C を参照する必要があることを除いて、Port A の規則とほぼ同じです。

  1. ルール ブラウザを開きます。
  2. port_a_rule をダブル クリックします。
  3. マウスを使用して、規則全体をハイライト表示します。
  4. [Ctrl]+[C]を押して、規則テキストをコピーします。
  5. [ルールを編集]ダイアログ ボックスで[OK]をクリックして、ダイアログ ボックスを閉じます。
  6. port_c_rule という名前の新しい規則を追加します。
  7. [ルールを編集]ダイアログ ボックスで、規則テキストの領域内をクリックし、[Ctrl]+[V]を押して規則を貼り付けます。
  8. ダイアログ ボックスの上部にある[検索と置換]タブをクリックします。
  9. [検索対象]port_a と入力します。
  10. [以下の内容で置換]port_c と入力します。
  11. [大/小文字を区別]にチェック マークを付けます。
  12. [この規則ですべてを置換]をクリックします。

    コード ブロックをコピーする

    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")
  13. [OK]をクリックして、ダイアログ ボックスを閉じます。
  14. アセンブリ ファイルを保存します。

[前へ] | [次へ]