Правила iLogic можно хранить не в модели Inventor, а во внешних файлах. Такой способ хранения позволяет использовать одно и то же правило в нескольких местах.
Чтобы хранить правила во внешних файлах, сначала надо задать расширение файла по умолчанию для новых файлов. Расширение по умолчанию выбирается исходя из желаемого способа редактирования файла. Например, можно задать в качестве расширения по умолчанию .vb, чтобы редактировать файлы в Visual Studio. Расширение·.txt позволяет редактировать правило в текстовом редакторе (например, в блокноте Microsoft). Можно также задать в качестве расширения по умолчанию .iLogicVB, если файлы содержат стандартный код правил iLogic, который будет предварительно обрабатываться iLogic.
Правила iLogic могут использовать код в других сборках .NET. Можно задать каталог, где хранятся эти сборки .NET. Сборку .NET можно создать с помощью таких средств программирования, как Visual Studio 2008. См. дополнительные сведения об использовании сборок .NET в правилах в разделе "Расширенные возможности программирования правил".
iLogic предлагает интерфейс автоматизации. Этот интерфейс можно использовать из кода Inventor VBA, VB6 или .NET для получения доступа к параметрам и правилам.
Эту возможность обеспечивает класс iLogicAutomation.
В проекте VBA или VB можно использовать его в качестве типа позднего связывания (объявляемого как объект), не добавляя ссылки. Поскольку он не является полным объектом .сом, его методы просматривать невозможно.
Для хранения значений параметров в iLogic используется пользовательский тип данных, называемый DoubleForEquals. DoubleForEquals поддерживает простое сравнение чисел. Этот параметр аналогичен стандартному типу VB.NET Double. Однако значения DoubleForEquals сравниваются, как если бы они были значениями одинарной точности (7 знаков после запятой, а не 15). По умолчанию параметры в правилах объявляются как DoubleForEquals.
DoubleForEquals позволяет игнорировать ошибку округления в операциях сравнения. Например, предположим, что в качестве единиц изменения в детали используются дюймы, и значение одного из параметров составляет 13/16 дюйма. В правиле деталь не в точности равна 13/16 дюйма, поскольку в модели значение параметра хранится в сантиметрах. Затем значение преобразуется в дюймы, чтобы использовать его в правиле. Рассмотрим следующее сравнение:
if d0 = 13/16 then ...
В этом примере условие не выполняется, если переменная d0 объявлена как переменная типа Double. Однако если объявить d0 как переменную типа DoubleForEquals, условие выполняется.
DoubleForEquals хранит значение как значение типа Double и выполняет все вычисления со значениями двойной точности. При этом сравнение выполняется для переменных одинарной точности.
При необходимости значение параметра можно преобразовать в величину двойной точности с помощью функции CDbl.
DoubleForEquals в VB.NET является структурой (тип значений).
DoubleForEquals рассматривает сравнение с нулем как особый случай. Если одно из сравниваемых значений в точности равно нулю, то проверка считается успешной, если другое число отличается от нуля меньше чем на 0,0000001 (по модулю).
Такое сравнение позволяет игнорировать ошибки округления для значений, близких к нулю. Например, в результате следующей операции сравнения можно сделать вывод, что x = 0:
angle = PI/2 x = cos(angle) If (x = 0) Then ... End If
DoubleForEquals — это тип по умолчанию для всех параметров Inventor, используемых в правилах. Этот параметр можно отключить по следующим причинам: