En las lecciones siguientes, creará una serie de reglas para administrar el contenido del ensamblaje.
Este modelo incluye una pieza denominada manifold_block:1, que contiene reglas de iLogic. Se debe pasar el parámetro de nivel de ensamblaje a la pieza.
Esta regla define los parámetros en la pieza según los valores correspondientes de los parámetros de control en el ensamblaje. La función Parámetro especifica el nombre del componente y el del parámetro.
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
En el aprendizaje Pieza de bloques múltiples, hemos añadido una regla a la pieza de bloques múltiples que controla los estilos T y Codo. También se debe añadir en el nivel de ensamblaje. En lugar de volver a escribir la regla existente, se copia el original.
If component_type = "standard" Then port_b_size = port_a_size port_c_size = port_a_size End If
Cuando se cambia el tamaño de puerto de Port A, se deben realizar varias tareas:
Se añade una regla para hacerlo:
La primera parte de esta regla ajusta el espaciado del patrón del tornillo según la información almacenada en la tabla iPart de la pieza de unión.
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 siguiente pieza de la regla selecciona la correspondiente fila de iPart dentro de la pieza del tornillo según el tamaño de puerto seleccionado.
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 es diferente de Port A y Port C, ya que no existe en un bloque múltiple con estilo de codo. Si el bloque múltiple tiene un estilo de codo, debe desactivarse la cubierta de unión y los tornillos de unión que se utilizan para este puerto. También debe desactivarse las restricciones de coincidencia asociadas con la cubierta de unión.
Debido al hecho de desactivar componentes, establecemos un nivel de detalle antes de escribir la regla. Las reglas que afectan a elementos relacionados con el nivel de detalle de un ensamblaje precisan que se defina y guarde un nivel de detalle personalizado antes de escribir las reglas. Si el nivel de detalle personalizado no está definido, iLogic genera un mensaje de error.
Definición de un nivel de detalle
Se añade un nuevo nivel de detalle.
Escritura de la regla
Ya se puede escribir la regla.
If block = "elbow" Then isTee = False ElseisTee = True End If
Usaremos esta variable posteriormente para definir otros parámetros.
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
Tenga en cuenta que es posible utilizar la variable isTee para activar o desactivar estas restricciones según el valor del parámetro block.
Component.IsActive("port_b_union") = isTee Component.IsActive("port_b_screw_pattern") = isTee
Estas líneas utilizan la variable isTee. Cuando el patrón de tornillo está desactivado, el componente de tornillo también se desactiva.
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
Todo este bloque dentro se debe incluir dentro de una sentencia de If isTee, con el fin de que estas líneas se procesen únicamente en el caso de un bloque múltiple con estilo en T. La sentencia If isTee Then es equivalente a If isTee = True Then, pero proporciona un formato de expresión más conciso.
En primer lugar, se elige la fila pertinente en la tabla de iPart de la pieza de unión, correspondiente al valor del parámetro port_b_size; a continuación, se extraen los valores para utilizar los desfases de patrón x e y. Después, se extrae el número de pieza de unión y su valor se almacena en otro parámetro para usarse como referencia posteriormente.
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 regla para Port C es casi la misma que para Port A, con una excepción: todo lo que hace referencia a Port A debe hacer referencia a Port C en su lugar.
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")