Nas lições seguintes, será possível criar uma série de regras para gerenciar o conteúdo da montagem.
Este modelo inclui uma peça denominada manifold_block:1, que possui regras de iLogic. Deve ser passado o parâmetro de nível de montagem para a peça.
Esta regra define os parâmetros na peça segundo os valores correspondentes dos parâmetros de controle na montagem. A função Parâmetro especifica o nome do componente e o do 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
No tutorial Peça de blocos múltiplos, foi adicionada uma regra à peça de blocos múltiplos que controla os estilos T e Cotovelo. Também deve ser adicionado no nível de montagem. No lugar de voltar a inserir a regra existente, é copiada a original.
If component_type = "standard" Then port_b_size = port_a_size port_c_size = port_a_size End If
Quando o tamanho de porta da Porta A for alterado, várias tarefas deverão ser executadas:
É adicionada uma regra para fazê-lo:
A primeira parte desta regra ajusta o espaçamento do padrão do parafuso segundo a informação armazenada na tabela iPart da peça de união.
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")
A seguinte parte da regra seleciona a correspondente linha de iPart dentro da peça do parafuso segundo o tamanho de porto selecionado.
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")
A Porta B é diferente da Porta A e da Porta C porque ela não existe em um bloco múltiplo de cotovelos. Se o bloco múltiplo tem um estilo de cotovelo, deve ser desativado o topo de união e os parafusos de união que são utilizadas para este porto. Também devem ser desativadas as restrições de coincidência associadas com o topo de união.
Devido ao fato de desativar componentes, definemos um nível de detalhe antes de inserir a regra. As regras que afetam elementos relacionados com o nível de detalhe de uma montagem precisam que um nível personalizado de detalhe seja definido e antes de inserir as regras. Se o nível de detalhe personalizado não está definido, iLogic gera uma mensagem de erro.
Definição de um nível de detalhe
É adicionado um novo nível de detalhe.
Escreva a regra
Já pode ser inserida a regra.
If block = "elbow" Then isTee = False ElseisTee = True End If
Utilizaremos esta variável posteriormente para definir outros 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
Observe que é possível utilizar a variável isTee para ativar ou desativar estas restrições de acordo com o valor do parâmetro bloco.
Component.IsActive("port_b_union") = isTee Component.IsActive("port_b_screw_pattern") = isTee
Estas linhas utilizam a variável isTee. Quando o padrão de parafuso está desativado, o componente de parafuso também é desativado.
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 bloco deve ser incluído dentro de uma If isTeesentença com o propósito de que estas linhas sejam processadas unicamente no caso de um bloco múltiplo tee-style. A declaração If isTee Then é equivalente a If isTee = Verdadeiro Then, mas fornece um formato de expressão mais conciso.
Em primeiro lugar, seleciona-se a devida linha na tabela de iPart da peça de união, correspondente ao valor do parâmetro port_b_size; a seguir, extraem-se os valores a serem utilizados nos deslocamentos de padrão x e y. Depois, é extraído o número de peça de união e seu valor é armazenado em outro parâmetro para ser utilizado como referência 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
A regra para a Porta C é quase a mesma que para a Porta A, exceto pelo fato de que tudo o que referenciar a Porta A deverá, obrigatoriamente, referenciar a Porta 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")