Tworzenie reguł w zespole

W następnych kilku ćwiczeniach utworzysz serię reguł zarządzających zawartością zespołu.

Przekazywanie parametrów z zespołu do części iPart.

Ten model ma część o nazwie manifold_block:1, zawierającą reguły iLogic. Należy przekazać parametry z poziomu zespołu do tej części.

  1. Utwórz regułę o nazwie assembly_to_parts_rule.

    Reguła ta ustala parametry w części w oparciu o odpowiednie wartości parametrów sterowania w zespole. Funkcja Parametr określa nazwę komponentu oraz nazwę parametru.

    Kopia bloku kodu

    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 ukończeniu reguły kliknij przycisk OK.

Edycja reguł na poziomie części w zespole

W ćwiczeniu Część bloku kolektora dodaliśmy do części bloku kolektora regułę sterującą stylami teownika i kolanka. Musimy ją dodać również na poziomie zespołu. Zamiast przepisywać regułę, możemy skopiować oryginał.

  1. Kliknij dwukrotnie pozycję manifold_block:1 z poziomu przeglądarki modelu. Pozostałe komponenty staną się przezroczyste.
  2. Na wstążce kliknij kartę Zarządzanie panel iLogic Przeglądarka reguł .
  3. Kliknij dwukrotnie pozycję component_type_rule.
  4. Skopiuj tekst reguły do schowka.
  5. Kliknij Anuluj w oknie Edycja reguły, by zamknąć okno.
  6. Kliknij dwukrotnie pozycję my_manifold_block.iam w przeglądarce modelu.
  7. Dodaj nową regułę o nazwie component_type_rule.
  8. Wklej tekst skopiowany z reguły component_type_rule do pola tekstowego reguły w oknie dialogowym Edycja reguły.

    Kopia bloku kodu

    If component_type = "standard" Then
    port_b_size = port_a_size
    port_c_size = port_a_size
    End If
  9. Kliknij przycisk OK, aby zapisać regułę na poziomie zespołu.

Dodawanie reguły port_a_rule

Gdy zmieniamy rozmiar gniazda Port A, musimy wykonać kilka czynności:

Dodajemy regułę:

  1. Upewnij się, że zespół bloku kolektora jest aktywny.
  2. Utwórz regułę o nazwie port_a_rule.

    Pierwsza część tej reguły reguluje odstępy w szyku śrub na podstawie informacji przechowywanych w tabeli części iPart.

  3. Dodaj blok kodu wyszukujący wykorzystywany wiersz na podstawie parametru port_a_size. Następnie przypisz wartości dwóm różnym parametrom zespołu z dwóch innych kolumn.

    Kopia bloku kodu

    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")
    Uwaga: Użyte tutaj instrukcje powiązane z iPart można znaleźć w polu Szablony kodu w węźle iPart na karcie Systemowe.

    Następna część reguły wybiera odpowiedni wiersz iPart wewnątrz części śruby w oparciu o wyznaczony rozmiar gniazda.

  4. Używając szeregu instrukcji If, określ właściwy składnik iPart zgodnie z bieżącą wartością parametru port_a_size.

    Kopia bloku kodu

    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. W końcowej części reguły dodaj instrukcję pobierającą numer części dla kołnierza rozchylenia i przechowującą numer w parametrze zespołu, który zostanie wykorzystany w dalszej części ćwiczenia.

    Kopia bloku kodu

    port_a_union_part_number = iProperties.Value("port_a_union", "Project", "Part Number")
  6. Kliknij przycisk OK, by zapisać regułę, a następnie zapisz plik zespołu.

Dodawanie reguły port_b_rule

Port B różni się od gniazd Port A i Port C, ponieważ nie występuje w bloku kolektora kolankowego. Jeśli blok kolektora jest blokiem typu kolankowego, musimy wyłączyć zaślepkę i śruby użyte dla tego punktu. Musimy również wyłączyć wiązania zestawiające przypisane do zaślepki.

Ponieważ wyłączamy komponenty, przed zapisaniem reguły wybieramy poziom szczegółu. Reguły wpływające na obiekty powiązane z poziomem szczegółu w zespole wymagają zdefiniowania i zapisania niestandardowego poziomu szczegółu przed przystąpieniem do zapisu reguł. Jeśli niestandardowy poziom szczegółu nie zostanie zdefiniowany, iLogic wygeneruje komunikat o błędzie.

Wybór poziomu szczegółu

  1. W przeglądarce modeli rozwiń folder Reprezentacje, a następnie Poziom szczegółu.
  2. Kliknij prawym przyciskiem węzeł folderu Poziom szczegółu, a następnie kliknij Nowy poziom szczegółu.

    Dodany zostanie nowy poziom szczegółu.

  3. Powoli dwukrotnie kliknij pozycję LevelofDetail1, a następnie zmień jej nazwę na iLogic.

Zapis reguły

Następnie możemy zapisać regułę.

  1. Utwórz regułę o nazwie port_b_rule.
  2. W pierwszej części reguły określ, czy tworzony jest blok teownikowy, i zapisz tę informację w osobnej zmiennej isTee. Zmienna isTee przyjmuje wartość True lub False.

    Kopia bloku kodu

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

    Użyjemy tej zmiennej później, by określić inne parametry.

  3. Do reguły dodaj wiersze wyłączające wiązania zaślepki i śruby, jeśli blok posiada styl kolankowy. Włącz wiązania, jeśli blok jest blokiem teownikowym.

    Kopia bloku kodu

    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

    Zauważ, że zmiennej isTee można używać do włączania lub wyłączania wiązań odpowiednio do wartości parametru block.

    Uwaga: Konwencja nazewnicza zastosowana do wiązań ułatwia odnoszenie się do nich w regule. Pamiętaj, że możesz również użyć informacji z Drzewa modelu w oknie dialogowym Edycja reguły, by uzupełnić nazwy wiązań.
  4. Dodaj dwa wiersze, które warunkowo uwzględniają część port_b_union i odpowiadający jej szyk śrub:

    Kopia bloku kodu

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

    W tych wierszach używana jest zmienna isTee. Gdy szyk śruby jest wyłączony, wyłączony jest również komponent śruby.

  5. W sytuacjach, gdy używamy gniazda Port B, dodajemy fragment definiujący rozmiar gniazda, wartości parametrów szyku śrub oraz numer części port_b_union.

    Kopia bloku kodu

    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

    Zawarliśmy cały ten blok w instrukcji If isTee, aby te wiersze były przetwarzane wyłącznie w przypadku teownikowego bloku kolektora. Instrukcja If isTee Then jest równoważna instrukcji If isTee = True Then, ale sprawia, że wyrażenie jest bardziej zwięzłe.

    Najpierw w tabeli iPart części stanowiącej dwuzłączkę wybieramy właściwy wiersz odpowiadający wartości parametru port_b_size, a następnie pobieramy wartości, których użyjemy jako wartości odsunięcia szyków x i y. Następnie pobieramy numer części z części dwuzłączki i zapisujemy jego wartość w innym parametrze na użytek w przyszłości.

  6. W ostatniej części reguły wybieramy składnik w tabeli iPart części stanowiącej śrubę, aby użyć go w odniesieniu do gniazda Port B. Jest on oparty na wartości parametru port_b_size. Aby tym sterować, należy użyć szeregu instrukcji If/Then/Else.

    Kopia bloku kodu

    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. Kliknij przycisk OK, aby zamknąć okno dialogowe i zapisz regułę.
  8. Zapisz plik swojego zespołu.

Dodawanie reguły port_c_rule

Reguła dla gniazda Port C jest prawie taka sama, jak w przypadku gniazda Port A, z wyjątkiem tego, że wszystko, co odnosi się do gniazda Port A musi odnosić się do gniazda Port C.

  1. Otwórz przeglądarkę reguł.
  2. Kliknij dwukrotnie pozycję port_a_rule.
  3. Używając myszy zaznacz całą regułę.
  4. Naciśnij Ctrl+C, aby skopiować tekst reguły.
  5. Kliknij przycisk OK w oknie Edycja reguły, by zamknąć okno.
  6. Dodaj nową regułę o nazwie port_c_rule.
  7. W oknie dialogowym Edycja reguły kliknij w polu tekstu reguły i naciśnij Ctrl+V, aby wkleić regułę.
  8. Kliknij kartę Wyszukaj i zamień w górnej części okna dialogowego.
  9. Wprowadź port_a w polu Znajdź.
  10. Wprowadź port_c w polu Zamień.
  11. Zaznacz pole wyboru Uwzględnij wielkość liter.
  12. Kliknij Zamień wszystko w tej regule.

    Kopia bloku kodu

    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. Kliknij przycisk OK, aby zamknąć okno dialogowe.
  14. Zapisz plik swojego zespołu.

Wstecz | Dalej