Создание правил в сборке

В следующих упражнениях будут созданы правила для управления содержимым сборки.

Передача параметров из сборки в детали

Данная модель включает в себя деталь с именем manifold_block:1, в которой содержатся правила iLogic. Параметр уровня сборки необходимо передать в деталь.

  1. Создайте правило с именем assembly_to_parts_rule.

    Это правило устанавливает параметры детали на основании соответствующих значений управляющих параметров сборки. В данном примере функция Параметр определяет как имя компонента, так и имя параметра.

    Копировать блок кода

    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
  2. По завершении работы с этим правилом нажмите кнопку ОК.

Редактирование правил уровня детали в сборке

В учебном пособии Деталь коллектора было добавлено правило для детали блока разветвителя трубопровода, управляющее стилями Т-образный и отводной. Его также следует добавить на уровне сборки. Вместо повторного создания существующего правила скопируем оригинал.

  1. Дважды щелкните элемент manifold_block:1 в браузере модели. Другие компоненты становятся прозрачными.
  2. Выберите на ленте вкладку "Управление" панель iLogic "Браузер правил" .
  3. Дважды щелкните элемент component_type_rule.
  4. Скопируйте текст правила в буфер обмена.
  5. Чтобы закрыть диалоговое окно "Редактировать правило", нажмите кнопку Отмена.
  6. Дважды щелкните элемент my_manifold_block.iam в браузере модели.
  7. Добавьте новое правило с именем component_type_rule.
  8. Вставьте скопированный из component_type_rule текст правила в область текста правила в диалоговом окне "Редактировать правило".

    Копировать блок кода

    If component_type = "standard" Then
    port_b_size = port_a_size
    port_c_size = port_a_size
    End If
  9. Чтобы сохранить новое правило уровня сборки, нажмите кнопку ОК.

Добавление правила port_a_rule

При изменении размера канала Port A необходимо выполнить следующие действия:

Для этого необходимо добавить правило:

  1. Убедитесь в том, что сборка коллектора активна.
  2. Создайте правило с именем port_a_rule.

    В первой части этого правила расстояния для массива винтов адаптируются на основании информации из таблицы параметрических деталей для детали соединения.

  3. Добавьте блок кода, который выполняет поиск используемой строки на основании параметра port_a_size. а затем устанавливает значения двух параметров сборки из других столбцов.

    Копировать блок кода

    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")
    Прим.: Используемые здесь выражения, связанные с параметрической деталью, можно найти в области Фрагменты узла Параметрические детали вкладки Система.

    В следующей части правила на основании выбранного размера канала выбирается нужная строка параметрической детали в детали "винт".

  4. Для установки требуемого элемента параметрического ряда согласно текущему значению параметра port_a_size используйте последовательность выражений If.

    Копировать блок кода

    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
  5. После этого добавьте выражение, определяющее номер детали для развальцованного фланца и сохраняющее его в качестве параметра сборки, который используется в другом правиле в следующих разделах этого учебного пособия.

    Копировать блок кода

    port_a_union_part_number = iProperties.Value("port_a_union", "Project", "Part Number")
  6. Чтобы сохранить это правило и файл сборки, нажмите кнопку ОК.

Добавление правила port_b_rule

Port B отличается от Port A и Port C, потому что он не существует в коллекторе отводного типа. Если в качестве коллектора используется блок отводного типа, следует подавить отображение крышки и винтов соединения для этого канала. Следует также подавить зависимости совмещения, связанные с соединительной крышкой.

Для подавления компонентов перед созданием правила следует установить уровень детализации. Для правил, влияющих на элементы, связанные с уровнем детализации в сборке, необходимо определить и сохранить пользовательский уровень детализации до создания правила. Если пользовательский уровень детализации не определен, то функция iLogic выдает сообщение об ошибке.

Установка уровня детализации

  1. В браузере модели разверните узел Представления, а затем - узел Уровень детализации.
  2. Щелкните правой кнопкой узел Уровень детализации и выберите команду Создание уровня детализации.

    Новый уровень детализации будет добавлен.

  3. Дважды щелкните элемент LevelofDetail1 и измените его имя на iLogic.

Запись правила

Теперь создадим правило.

  1. Создайте правило с именем port_b_rule.
  2. В первой части правила определите стиль блока — Т-образный — и сохраните эту информацию в отдельной переменной isTee. Переменная isTee может иметь значение True или False.

    Копировать блок кода

    If block = "elbow" Then
    isTee = False
    ElseisTee = True
    End If

    Эта переменная будет впоследствии использоваться для установки других параметров.

  3. Добавьте в правило строки для отключения зависимостей, фиксирующих соединение и винт соединения, если стиль коллектора - отвод. Включите зависимости, если у коллектора Т-образный стиль.

    Копировать блок кода

    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

    Обратите внимание на то, что для включения и выключения этих зависимостей можно использовать переменную isTee в соответствии с параметром block.

    Прим.: Установленные для этих зависимостей имена упрощают создание ссылок на них в данном правиле. Обратите внимание на то, что для упрощения заполнения имен зависимостей можно использовать информацию из дерева модели в диалоговом окне "Редактировать правило".
  4. Добавьте две строки, включающие деталь port_b_union и соответствующий массив винтов с определенными условиями:

    Копировать блок кода

    Component.IsActive("port_b_union") = isTee
    Component.IsActive("port_b_screw_pattern") = isTee

    В этих строках применяется переменная isTee. Массив винтов подавляется вместе с компонентом винта.

  5. При использовании Port B добавьте раздел, устанавливающий размер канала, значения параметров массива винтов и номер детали port_b_union.

    Копировать блок кода

    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

    Этот блок включен в выражение If isTee, чтобы эти строки обрабатывались только для Т-образного коллектора. Оператор If isTee Then равен If isTee = True Then, но он обеспечивает меньший размер.

    Вначале выберем строку в таблице параметрической детали для детали соединения, соответствующей значению параметра port_b_size, а затем извлечем значения, используемые в массиве для смещения по осям Х и Y. Далее из детали соединения извлечем номер детали и сохраним его в виде отдельного параметра для дальнейшего использования.

  6. В последней части этого правила будет выбран элемент таблицы параметрических деталей для винта, который должен использоваться для Port B. Он основан на значении параметра port_b_size. Используйте последовательность выражений If/Then/Else для управления.

    Копировать блок кода

    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
  7. Для закрытия диалогового окна и сохранения правила нажмите кнопку ОК.
  8. Сохраните файл сборки.

Добавление правила port_с_rule

Правило для Port C почти совпадает с правилом для Port A, за исключением того, что все компоненты, ссылающиеся на Port A, должны ссылаться на Port C.

  1. Откройте браузер правил.
  2. Дважды щелкните правило port_a_rule.
  3. С помощью мыши выделите все правило целиком.
  4. Чтобы скопировать текст правила, нажмите клавиши Ctrl+C.
  5. Чтобы закрыть диалоговое окно "Редактировать правило", нажмите кнопку ОК.
  6. Добавьте новое правило с именем port_c_rule.
  7. В диалоговом окне "Редактировать правило" щелкните область текста правила и нажмите клавиши Ctrl+V, чтобы вставить правило.
  8. Перейдите на вкладку Найти и заменить в верхней части диалогового окна.
  9. Введите port_a в поле "Искать".
  10. Введите port_c в поле "Заменить на".
  11. Установите флажок Учитывать регистр.
  12. Щелкните элемент Заменить все в этом правиле.

    Копировать блок кода

    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")
  13. Для закрытия диалогового окна нажмите кнопку ОК.
  14. Сохраните файл сборки.

Назад | Далее