Dans les prochaines leçons, vous allez créer une série de règles pour gérer le contenu de l'ensemble.
Ce modèle contient une pièce nommée manifold_block:1, qui contient des règles iLogic. Vous devez transmettre le paramètre de niveau de l'ensemble à la pièce.
Cette règle définit les paramètres de la pièce en fonction des valeurs correspondantes des paramètres de contrôle de l'ensemble. La fonction Paramètre indique le nom du composant ainsi que le nom du paramètre.
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
Dans le didacticiel Pièce du bloc collecteur, nous allons ajouter une règle à la pièce du bloc collecteur qui contrôle les styles T et coude. Vous devez également l'ajouter au niveau de l'ensemble. Au lieu de réenregistrer la règle existante, nous allons copier l'original.
If component_type = "standard" Then port_b_size = port_a_size port_c_size = port_a_size End If
Lorsque vous modifiez la taille d'orifice de Port A, vous devez réaliser plusieurs tâches :
Pour ce faire, ajoutez une règle :
La première partie de cette règle ajuste l'espacement du réseau de vis en fonction des informations stockées dans la table d'iPièce de l'union.
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")
La pièce suivante de la règle sélectionne la ligne d'iPièce appropriée à l'intérieur de la vis basée sur la taille d'orifice sélectionnée.
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 est différent de Port A et Port C, car il n'existe pas dans un bloc collecteur coudé. Si le bloc collecteur est un bloc coudé, vous devez supprimer le couvercle-union et les vis d'union utilisées pour cet orifice. Vous devez également supprimer les contraintes de placage associées au couvercle-union.
Etant donné que nous masquons les composants, nous devons définir un niveau de détail avant d'écrire la règle. Les règles affectant les éléments associés au niveau de détail dans un ensemble requièrent la définition et l'enregistrement d'un niveau de détail personnalisé préalablement à l'écriture des règles. Si le niveau de détail personnalisé n'est pas défini, iLogic génère un message d'erreur.
Définir un niveau de détail
Un nouveau niveau de détail est ajouté.
Ecrire la règle
A présent, vous pouvez écrire la règle.
If block = "elbow" Then isTee = False ElseisTee = True End If
Nous utiliserons cette variable ultérieurement afin de définir d'autres paramètres.
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
Notez que vous pouvez utiliser la variable isTee pour activer ou désactiver ces contraintes en fonction de la valeur du paramètre block.
Component.IsActive("port_b_union") = isTee Component.IsActive("port_b_screw_pattern") = isTee
Ces lignes utilisent la variable isTee. Lorsque le réseau de vis est masqué, la vis est également masquée.
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
Nous avons inclus l'intégralité de ce bloc dans une instruction If isTee, de sorte que ces lignes soient traitées pour les blocs collecteurs en T. L'instruction If isTee Then équivaut à If isTee = True Then, mais elle offre un format d'expression plus concis.
Sélectionnez d'abord la ligne appropriée dans la table d'iPièce de l'union, correspondant à la valeur du paramètre port_b_size, puis extrayez les valeurs à utiliser pour les décalages de réseau X et Y. Ensuite, extrayez le numéro de pièce de la pièce d'union et stockez sa valeur dans un autre paramètre pour référence ultérieure.
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
La règle pour Port C est pratiquement la même que pour Port A, sauf que tout élément faisant référence à Port A doit faire référence à Port C.
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")