In den nächsten Lektionen erstellen Sie eine Reihe von Regeln zum Verwalten des Inhalts der Baugruppe.
Dieses Modell enthält ein Bauteil mit dem Namen manifold_block:1, das iLogic-Regeln beinhaltet. Sie müssen die Parameter auf Baugruppenebene an das Bauteil übertragen.
Diese Regel legt Parameter im Bauteil basierend auf den entsprechenden Werten der Steuerparameter in der Baugruppe fest. Die Parameter-Funktion gibt den Komponentennamen und den Parameternamen an.
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
Im Lernprogramm Verteilerblock-Bauteil haben Sie dem Verteilerblock eine Regel hinzugefügt, mit der die T- und Bogen-Stile gesteuert werden. Sie müssen sie nun auch auf der Baugruppenebene hinzufügen. Anstatt die vorhandenen Regeln neu zu schreiben, kopieren Sie die ursprüngliche Regel.
If component_type = "standard" Then port_b_size = port_a_size port_c_size = port_a_size End If
Beim Ändern der Größe von Port A müssen Sie verschiedene Aufgaben ausführen:
Fügen Sie dazu eine Regel hinzu:
Mit dem ersten Teil dieser Regel wird der Abstand der Schraubenanordnung basierend auf der iPart-Tabelle des Verbindungsteils angepasst.
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")
Mit dem nächsten Teil der Regel wird die entsprechende iPart-Zeile im Schraubenbauteil basierend auf der ausgewählten Port-Größe ausgewählt.
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 unterscheidet sich von Port A und Port C, da er in einem Verteilerblock im Bogenstil nicht existiert. Wenn der Verteilerblock ein Block im Bogenstil ist, müssen Sie den Verbindungsaufsatz und die Schrauben für diesen Port unterdrücken. Sie müssen auch die dem Verbindungsaufsatz zugewiesenen Flächenabhängigkeiten unterdrücken.
Da Sie Komponenten unterdrücken, stellen Sie eine Detailgenauigkeit ein, bevor Sie die Regel schreiben. Regeln, die sich auf Elemente mit Bezug auf die Detailgenauigkeit in einer Baugruppe auswirken, erfordern, dass vor dem Schreiben der Regel eine benutzerdefinierte Detailgenauigkeit definiert und gespeichert wird. Wenn die benutzerdefinierte Detailgenauigkeit nicht definiert ist, generiert iLogic eine Fehlermeldung.
Festlegen von Detailgenauigkeit
Es wird eine neue Detailgenauigkeit hinzugefügt.
Schreiben der Regel
Jetzt können Sie die Regel schreiben.
If block = "elbow" Then isTee = False ElseisTee = True End If
Verwenden Sie diese Variable zu einem späteren Zeitpunkt, um andere Parameter festzulegen.
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
Beachten Sie, dass Sie die Variable isTee verwenden können, um diese Abhängigkeiten entsprechend dem Wert des Parameters block zu aktivieren oder zu deaktivieren.
Component.IsActive("port_b_union") = isTee Component.IsActive("port_b_screw_pattern") = isTee
In diesen Zeilen wird die Variable isTee verwendet. Wenn die Schraubenanordnung unterdrückt wird, wird die Schraubenkomponente ebenfalls unterdrückt.
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
Dieser gesamte Block wurde in eine If isTee-Anweisung eingeschlossen, sodass diese Zeilen nur bei einem Verteilerblock im T-Stil verarbeitet werden. Die Anweisung If isTee Then entspricht If isTee = True Then, bietet aber einen präziseren Ausdruck.
Wählen Sie zuerst die entsprechende Zeile in der iPart-Tabelle des Verbindungsbauteils, die dem Wert des Parameters port_b_size entspricht, und extrahieren Sie dann die Werte für den Anordnungsversatz in die X- und Y-Richtung. Anschließend extrahieren Sie die Bauteilnummer aus dem Verbindungsbauteil und speichern den Wert in einem anderen Parameter zur späteren Referenz.
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
Die Regel für Port C ist fast identisch mit der für Port A, mit der Ausnahme, dass alle Verweise auf Port A stattdessen auf Port C verweisen müssen.
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")