W następnych kilku ćwiczeniach utworzysz serię reguł zarządzających zawartością zespołu.
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.
 Utwórz regułę o nazwie assembly_to_parts_rule.
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.

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
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ł.
 Na wstążce kliknij 
kartę Zarządzanie
Na wstążce kliknij 
kartę Zarządzanie
 panel iLogic
panel iLogic
 Przeglądarka reguł
.
Przeglądarka reguł
.  Dodaj nową regułę o nazwie component_type_rule.
Dodaj nową regułę o nazwie component_type_rule. 
If component_type = "standard" Then port_b_size = port_a_size port_c_size = port_a_size End If
Gdy zmieniamy rozmiar gniazda Port A, musimy wykonać kilka czynności:
Dodajemy regułę:
 Utwórz regułę o nazwie port_a_rule.
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.

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")
Następna część reguły wybiera odpowiedni wiersz iPart wewnątrz części śruby w oparciu o wyznaczony rozmiar gniazda.

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 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
Dodany zostanie nowy poziom szczegółu.
Zapis reguły
Następnie możemy zapisać regułę.
 Utwórz regułę o nazwie port_b_rule.
Utwórz regułę o nazwie port_b_rule. 
If block = "elbow" Then isTee = False ElseisTee = True End If
Użyjemy tej zmiennej później, by określić inne parametry.

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.

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.

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.

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
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.
 Otwórz przeglądarkę reguł.
Otwórz przeglądarkę reguł.  Dodaj nową regułę o nazwie port_c_rule.
Dodaj nową regułę o nazwie port_c_rule. 
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")