Функции компонентов в iLogic

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

Можно создать модель (деталь или сборку), содержащую компоненты, необходимые для представления всех возможных допустимых конфигураций продукта. Этот метод называется "супермоделированием". Когда детали или компоненты сборки слишком сложны или слишком многочисленны и супермоделирование становится нецелесообразным, используйте функцию Component.Replace.

Чтобы перейти к функциям Component, разверните узел "Components" на вкладке "Система" в области "Фрагменты".

Имена компонентов

Выполняйте изменение всех имен компонентов до включения этих имен в правило. Изменяя имя компонента по умолчанию, назначенное Autodesk Inventor, можно обеспечить его неизменность при изменении связанного файла IPT или IAM.

Исходное имя компонента можно восстановить и при этом сохранить его стабильность. Чтобы изменить компонент, слегка измените его имя, а затем замените его исходным именем.

При использовании компонента из Библиотеки компонентов для функций Component.IsActive и Component.Replace требуется изменить его имя.

Component.IsActive

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

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

Не подавляйте подкомпоненты. Лучше всего выполнить подавление из правила внутри компонента.

Например, сборка с именем TopAssembly содержит узел SubAssembly:1, а этот узел содержит деталь SamplePart:1.

Чтобы подавить SamplePart:1 используйте правило внутри узла. Это правило может иметь параметр, задающий состояние подавления. Пользователь может задать параметр с помощью правила в TopAssembly.

При использовании iLogic для подавления компонента структуре спецификации компонента присваивается значение Reference. Это приводит к тому, что он не появляется в спецификации. Он появляется в представлении "Данные моделей", но не включается в представления "Структурированный" или "Только детали". Если подавление компонента отключено, то iLogic возвращает компоненту состояние до подавления ("Нормальный", "Неразделимый", "Приобретенный" или "Фантомный").

До использования правила iLogic для изменения состояния подавления компонента сборки создайте и активизируйте новый пользовательский уровень детализации.

Синтаксис

Component.IsActive("ComponentName")

Примеры

Можно использовать 1 вместо True и 0 вместо False.

Чтобы задать состояние подавления и структуру спецификации, используйте следующий синтаксис:

Component.IsActive("PartA:1") = false
Component.IsActive("PartB:1") = 0
Component.IsActive("PartC:1") = false
Component.IsActive("PartD:1") = 0

Чтобы прочитать состояние подавления и структуру спецификации, используйте следующий синтаксис:

MyBooleanParam = Component.IsActive("ComponentName:1)
If Component.IsActive("PartE") Then
' do something
End If

Component.iComponentIsActive

Эта функция является разновидностью функции Component.IsActive и используется для задания или чтения состояния подавления компонента параметрической детали или параметрической сборки. Если не менять имя компонента вручную, то для параметрических деталей и сборок необходимо использовать этот специальный синтаксис.

Рекомендуется изменить имя компонента. В этом случае вместо этой функции можно использовать Component.IsActive.

Синтаксис

Component.iComponentIsActive("iPartParentName:1")

iPartParentName

Имя стандартной детали без расширения файла .ipt.

Component.Color

Задает или читает цвет компонента.

Синтаксис

Component.Color("iPartA:1")

Примеры

Задать цвет:

Component.Color("iPartA:1") = "Green"
Component.Color("iPartA:2") = "Aluminum (Cast)"
Component.Color("iPartA:3") = "As Material"

Читать цвет:

MyStringParameter = Component.Color("iPartA:1")

Component.Visible

Задает или читает видимость компонента. Эта функция не меняет структуру спецификации компонента.

Синтаксис

Component.Visible("componentName")

Примеры

Задать видимость:

Component.Visible("Plate") = true
Component.Visible("Bearing") = false

Читать видимость:

parameter = Component.Visible("Plate")
parameter = Component.Visible("Bearing")
If Component.Visible("PartE") Then
do something
End If

Component.SkipDocumentSave

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

Синтаксис

Component.SkipDocumentSave = True

Если задать значение True, документ компонента не сохраняется.

По умолчанию используется значение False (Component.SkipDocumentSave = False), то есть документ компонента сохраняется.

Component.Replace

Заменяет одну деталь другой или один узел другим. Эту функцию можно также использовать для замены массивов компонентов.

В заменяемых компонентах используйте iMates, чтобы оставить неизменными зависимости сборки. Можно заменить одну деталь другой, деталь сборкой или сборку деталью.

Функция выполняет поиск файла, который следует использовать для замены, в нескольких папках:

В качестве имени файла можно использовать относительный путь (относительный относительно любого их этих каталогов поиска).

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

Синтаксис

Component.Replace("ComponentToReplaceName", "OtherPartfilename.ipt", <replaceAll>)

ComponentToReplaceName

Имя заменяемой детали или заменяемого узла.

OtherPartfilename

Деталь или узел, которые следует использовать в качестве замены.

<replaceAll>

Присвойте логической переменной значение True для замены всех экземпляров компонента. Присвойте ей значение False, чтобы заменить только один именованный экземпляр.

Пример

If PartType = "Type A" Then
Component.Replace("Widget","PartA.ipt", True)
ElseIf PartType = "Type B" Then
Component.Replace("Widget","PartB.ipt", True)
End If

Замена компонента (с указанием уровня детализации)

Этот вариант функции Component.Replace используется для замены компонента в сборке другим компонентом на определенном уровне детализации.

Синтаксис

Component.Replace("SubAssem:1", "OtherAssemFilename.iam<Level of Detail>", <replaceAll>)

В этой функции аргумент <replaceAll> — это тот же аргумент, что был описан для более общей функции Component.Replace.

Можно также заменить узел тем же самым узлом на другом уровне детализации.

Component.ReplaceiPart

Эта функция необходима для параметрических деталей с пользовательскими параметрами, но она также рекомендуется для стандартных параметрических деталей. Если компонент является параметрической деталью, то используйте ее вместо Component.Replace. Чтобы изменить конфигурацию определенной параметрической детали, после замены можно использовать iPart.ChangeRow или iPart.FindRow.

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

Синтаксис

Component.ReplaceiPart("iPart1:1", "OtherPartfilename.ipt", True, rowNumber)

Используйте rowNumber, чтобы заменить компонент и одновременно выбрать строку параметрических деталей.

Примеры

Чтобы задать пользовательские параметры, повторите пользовательские значения в Component.ReplaceiPart и еще раз в iPart.ChangeRow или в правиле iPart.FindRow.

Для ChangeRow:

Component.ReplaceiPart("iPart1:1", "OtherPartfilename.ipt", True, rowNumber, customParam1, customParam2)
iPart.ChangeRow("iPart1:1", rowNumber, customParam1, customParam2)

Для FindRow:

Component.ReplaceiPart("iPart1:1", "OtherPartfilename.ipt", True, rowNumber, customParam1, customParam2)
i = iPart.FindRow("iPart1:1", "Dia", ">=", 3.0, "r;|", customParam1, customParam2)

MakePath

Определяет путь к имени компонента в узле. Чтобы задать путь, перечислите все уровни узлов в том порядке, в котором они появляются в дереве. Эта функция необходима, когда требуется задать имя компонента, когда точно такое же имя существует в другом месте в сборке.

Синтаксис

MakePath("SubassemblyComponentName","PartComponentName")

Примеры

Component.Color(MakePath("SubAssem1:1", "Part2:1")) = “Green”
Component.IsActive(MakePath("SubAssem1:1", "SubSubAssem2:1", "Part2:1")) = “Yellow”