Vytvoření pravidel v sestavě

V dalších několika lekcích vytvoříte řadu pravidel k řízení obsahu sestavy.

Převedení parametrů ze sestavy do součástí

Tento model obsahuje součást s názvem manifold_block:1, která obsahuje pravidla modulu iLogic. Musíme převést parametr na úrovni sestavy do součásti.

  1. Vytvořte pravidlo s názvem assembly_to_parts_rule.

    Toto pravidlo nastavuje parametry v součásti na základě příslušných hodnot řídicích parametrů v sestavě. Funkce našeho parametru určuje název komponenty a také název parametru.

    Kopírování bloku kódu

    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. Po dokončení tohoto pravidla klikněte na tlačítko OK.

Úprava pravidel na úrovni součásti v sestavě

Ve výukovém programu Součást rozloženého bloku jsme do součásti rozloženého bloku přidali pravidlo, které řídí styly T-kusukolena. Toto pravidlo musíme přidat také na úrovni sestavy. Místo přepisování existujícího pravidla zkopírujeme originál.

  1. V prohlížeči modelu dvakrát klikněte na součást manifold_block:1. Ostatní komponenty se stanou průhlednými.
  2. Na pásu karet klikněte na kartu Správa panel iLogic Prohlížeč pravidel .
  3. Dvakrát klikněte na položku component_type_rule.
  4. Zkopírujte text pravidla do schránky.
  5. V dialogu Upravit pravidlo kliknutím na tlačítko Storno zavřete dialog.
  6. V prohlížeči modelu dvakrát klikněte na soubor my_manifold_block.iam.
  7. Přidejte nové pravidlo s názvem component_type_rule.
  8. Zkopírujte text pravidla component_type_rule a vložte jej do části k zadávání textu pravidla v dialogu Upravit pravidlo.

    Kopírování bloku kódu

    If component_type = "standard" Then
    port_b_size = port_a_size
    port_c_size = port_a_size
    End If
  9. Kliknutím na tlačítko OK uložte toto pravidlo na úrovni sestavy.

Přidání port_a_rule

Při změně velikosti portu Port A je nutné provést několik úkonů:

Provedení těchto činností zrealizujeme přidáním pravidla:

  1. Zajistěte, aby byla sestava rozloženého bloku aktivní.
  2. Vytvořte pravidlo s názvem port_a_rule.

    První část tohoto pravidla nastavuje vzdálenost pole šroubů na základě dat uložených v tabulce iSoučástí spojovací součásti.

  3. Přidejte blok kódu, který vyhledává používaný řádek na základě parametru port_a_size. Pak přiřazuje hodnoty ke dvěma různým parametrům sestavy ze dvou dalších sloupců.

    Kopírování bloku kódu

    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")
    Poznámka: Zde používané příkazy vztahující se k iSoučásti jsou uvedeny v oblasti Fragmenty pod položkou iSoučásti na kartě Systém.

    Další část pravidla volí příslušný řádek iSoučásti uvnitř součásti šroubu na základě zvolené velikosti portu.

  4. Pomocí série příkazů If nastavte příslušný člen iSoučásti podle aktuální hodnoty parametru port_a_size.

    Kopírování bloku kódu

    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. Pro poslední část tohoto pravidla přidejte příkaz, který určí číslo součásti pro hrdlovou přírubu a uloží ho do parametru sestavy, který bude později v tomto výukovém programu použit v dalším pravidle.

    Kopírování bloku kódu

    port_a_union_part_number = iProperties.Value("port_a_union", "Project", "Part Number")
  6. Kliknutím na tlačítko OK uložte pravidlo a uložte soubor sestavy.

Přidání port_b_rule

Port Port B se liší od portů Port A a Port C, protože neexistuje v rozloženém bloku kolena. Jestliže rozložený blok je blok se stylem kolena, musíme vypnout spojovací víko a spojovací šrouby použité pro tento port. Dále musíme vypnout také vazby pro ti sobě sdružené se spojovacím víkem.

Protože vypínáme komponenty, nastavíme úroveň detailů předtím, než budeme pravidlo zapisovat. Pravidla ovlivňující položky týkající se úrovně detailů v sestavě vyžadují definování uživatelské úrovně detailů a její uložení před zapisováním pravidel. Pokud nebude uživatelská úroveň detailů definována, modul iLogic zobrazí chybové hlášení.

Nastavení úrovně detailů

  1. V Prohlížeči modelu rozbalte položku Reprezentace a pak položku Úroveň detailů.
  2. Klikněte pravým tlačítkem na položku Úroveň detailů a zvolte položku Nová úroveň detailů.

    Je přidána nová úroveň detailů.

  3. Pomalu dvakrát klikněte na položku LevelofDetail1 a přejmenujte ji na iLogic.

Zapsání pravidla

Nyní můžeme pravidlo zapsat.

  1. Vytvořte pravidlo s názvem port_b_rule.
  2. V první části pravidla určete, zda vytváříte blok se stylem tvarovka T, a uložte jej do samostatné proměnné isTee. Proměnná isTee obsahuje hodnotu True nebo False,

    Kopírování bloku kódu

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

    Tuto pro měnnou použijeme později k nastavení dalších parametrů.

  3. Přidejte do pravidla řádky k vypnutí vazeb, které uchycují spojovací součást a spojovací šroub, když má rozložený blok styl kolena. Zapněte vazby, když má rozložený blok styl T-kusu.

    Kopírování bloku kódu

    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

    Proměnnou isTee lze v závislosti na hodnotě parametru block použít k zapnutí nebo vypnutí těchto vazeb.

    Poznámka: Konvence pojmenování použitá pro tyto vazby usnadnila odkazování na ně v tomto pravidle. Nezapomeňte, že můžete používat také data stromu modelu v dialogu Upravit pravidlo a tím si usnadnit vytváření názvů vazeb.
  4. Přidejte dva řádky, které podmíněně zahrnují součást port_b_union a odpovídající pole šroubu:

    Kopírování bloku kódu

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

    Tyto řádky používají proměnnou isTee. Když je pole šroubu vypnuto, komponenta šroubu je také vypnuta.

  5. Do instancí, ve kterých je použita možnost Port B, přidejte část, která nastaví velikost portu, hodnoty parametrů pole šroubu a číslo součásti port_b_union.

    Kopírování bloku kódu

    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

    Celý blok uzavřeme příkazem If isTee tak, aby tyto řádky byly zpracovávány pouze pro rozložený blok stylu T-kusu. Výraz If isTee Then je stručnějším ekvivalentem výrazu If isTee = True Then.

    Nejprve je nutné zvolit příslušný řádek v tabulce iSoučásti spojovací součásti, která odpovídá hodnotě parametru port_b_size, a poté extrahovat hodnoty ke stanovení odsazení pole x a y. Pak získáme číslo součásti ze spojovací součásti a uložíme jeho hodnotu do jiného parametru pro pozdější odkaz.

  6. V poslední části tohoto pravidla zvolte člen v tabulce iSoučásti součásti šroubu pro port Port B. Tento člen závisí na hodnotě parametru port_b_size. K řízení použijte řadu příkazů If/Then/Else.

    Kopírování bloku kódu

    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. Kliknutím na tlačítko OK zavřete dialog a uložte pravidlo.
  8. Uložte váš soubor sestavy.

Přidání port_c_rule

Pravidlo pro port Port C je téměř stejné jako pro port Port A, pouze je nutné změnit všechny odkazy z hodnoty Port A na hodnotu Port C.

  1. Otevřete Prohlížeč pravidla.
  2. Dvakrát klikněte na pravidlo port_a_rule.
  3. Pomocí myši zvýrazněte celé pravidlo.
  4. Stisknutím kláves Ctrl+C zkopírujte text pravidla.
  5. V dialogu Upravit pravidlo kliknutím na tlačítko OK zavřete dialog.
  6. Přidejte nové pravidlo s názvem port_c_rule.
  7. V dialogu Upravit pravidlo kliknutím v oblasti textu pravidla a stisknutím kláves Ctrl+V vložte pravidlo.
  8. Klikněte na kartu Vyhledat a nahradit v horní části dialogu.
  9. Do pole Najít zadejte výraz port_a.
  10. Do pole Nahradit za zadejte výraz port_c.
  11. Zaškrtněte políčko Rozlišovat malá a velká.
  12. Klikněte na příkaz Nahradit vše v tomto pravidle.

    Kopírování bloku kódu

    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. Kliknutím na tlačítko OK zavřete dialog.
  14. Uložte váš soubor sestavy.

Předchozí | Další