Функции Parameter в iLogic

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

Parameter

Parameter("parameterName")

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

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

PartA.ipt.d12 = 6.3

Вместо этого можно использовать следующий синтаксис:

Parameter("PartA:1", "d12") = 6.3

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

Переименуйте компонент вручную, чтобы при замене компонента сохранить его имя.

Для имени компонента можно также использовать функцию MakePath:

Parameter(MakePath("SubAssem1:1", "Part1:1"), "d12") = 6.3

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

param_val = Parameter("d0")

param_val = Parameter("PartA:1", "d0")

Как показано в этих примерах, параметр может находиться в текущем документе. Можно использовать имя любого параметра, к которому возможен доступ из правила.

Если компонент не подавлен, то вместо имени компонента можно указать имя файла. Такой способ можно использовать для изменения параметра в базовой детали, которая не используется в качестве компонента сборки.

Parameter("PartA.ipt", "d12") = 6.3

Если параметр найти не удалось, функция Parameter генерирует сообщение об ошибке. Чтобы не отображать сообщение об ошибке, используйте следующий синтаксис:

Parameter.Quiet = True

Используйте этот метод, если известно, что параметр отсутствует, и такая ситуация ожидаема.

Доступ к параметрам в базовой детали

Доступ к параметрам в базовой детали можно получить из производной детали или сборки. Кроме того, к ним можно получить доступ из сборки, содержащей деталь, созданную на основе базовой детали.

Иногда рекомендуется задавать параметры в базовой детали из правил в сборке. Такой метод называется моделированием сверху-вниз. При изменении базового параметра также меняются связанные параметры во всех производных деталях.

Деталь и ее параметры не всегда видны в дереве модели в диалоговом окне "Редактировать правило". Доступ к ним можно получить с помощью функции Parameter. Например, чтобы изменить параметр в базовой детали, используйте следующий синтаксис:

Parameter("BaseShaft.ipt”, ”Diameter") = 0.125 in

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

Расширенные функции Parameter

Используйте функцию Parameter.Param для получения прямого доступа к параметру Inventor. Возвращается объект типа Параметр из API Autodesk Inventor:

param = Parameter.Param("parameterName")
If (param IsNot Nothing) Then
param.Expression = "5.0 in"
param.Tolerance.SetToDeviation(0.002 * 2.54, -0.004 * 2.54)
param.Comment = "Equation and Tolerance set by a rule"
End If

Можно также записать функцию в одну строку:

Parameter.Param("foo").Comment = "Comment set by a rule"

Используя следующий синтаксис, можно получить доступ к большему числу свойств параметра Autodesk Inventor:

param = Parameter.Param("parameterName")
param = Parameter.Param("componentName", "parameterName")

Эти функции возвращают объект класса Inventor.Parameter. См. дополнительные сведения об этом классе в справке по программированию в Inventor.

Функции MultiValue

Функции MultiValue используются для получения доступа к списку значений, хранящихся для многозначного параметра, и изменения этих значений. Их использование можно проиллюстрировать следующими примерами:

MultiValue.SetList("d0", 0,5, 0,75, 1,0, 1,25)

Задает список доступных значений для параметра d0.

MultiValue.SetList("d0", "3/8", "d1 * 2", "d1 * 3")

Задает, не значения, а формулы. В список можно включать как формулы, так и значения.

MultiValue.SetList("имя_файла.ipt.str0", "значение1", "значение2")

Задает список значений для текстового параметра детали.

MultiValue.SetList("деталь:1", "d0", 0,5, 0,75, 1,0, 1,25)

Задает список значений параметра компонента.

values = MultiValue.List("d0")

Извлекает текущий список значений, где переменная values — это объект VB.NET типа ArrayList.

MultiValue.SetValueOptions(True, DefaultIndex := 0, NumericCompare := “=”)

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

MultiValue.SetValueOptions(False)

При изменении списка значений параметра реальное значение параметра не меняется. Такое поведение функции MultiValue является поведением по умолчанию.

MultiValue.List(“MyStringParam”) = iProperties.Materials

Присваивает текстовому параметру список значений, эквивалентный списку материалов, доступному в текущем активном стандарте.

MultiValue.List("d0") = New Double() {0,5, 0,75, 1,0, 1,25}

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

См. примеры с использованием значений из Microsoft® Excel в разделе, описывающем функцию GoExcel.CellValues.

MultiValue.UpdateAfterChange = True

Как и настройка функции Parameter.UpdateAfterChange, которой задано значение True, это выражение вынуждает модель Inventor обновляться при каждом изменении значения параметра функцией MultiValue.List или MultiValue.SetList.

Установка значения True приведет к тому, что модель (документ) будет обновляться после изменения параметра. Это имеет место только при изменении параметров с помощью функции Parameter:

Для обновления модели в середине выполнения правила (после изменения некоторых параметров), используйте следующие два выражения вместе:
  • RuleParametersOutput()
    Прим.: — с помощью этого выражения модели будут назначены текущие значения локальных переменных функции Parameter.
  • InventorVb.DocumentUpdate()
  • Если не требуется обновлять модель в середине выполнения правила, можно сделать это после его завершения. Используйте это выражение: iLogicVb.UpdateWhenDone = True.

MultiValue.Quiet = True

Подавляет отображение сообщения об ошибке при невозможности найти параметр. Используйте эту функцию, если известно, что параметр отсутствует, и такая ситуация ожидаема. Например, бывает, что параметр отсутствует в некоторых деталях, к которым применимо правило.

foundVal = MultiValue.FindValue(aList, "<=", 4.0)

Находит значение в списке, которое наиболее точно соответствует условию. aList может быть списком массивов или массивом. В качестве аргумента для сравнения можно использовать <=, = или >=.

В следующем примере выполняется поиск значения, которое меньше или равно 4,0. Если найдено несколько таких значений, то возвращается значение, расположенное ближе всего к 4,0. Если значения, удовлетворяющего условию, не существует, в этом примере возвращается константа VB Nothing.

foundVal = MultiValue.FindValue(MultiValue.List("d0"), "<=", 4.0)

Это условие можно проверить.