ADN Open CIS
Сообщество программистов Autodesk в СНГ

08/09/2015

Понимание единиц измерения в Fusion 360 - Часть 2

Работа с параметрами

При обсуждении единиц важно понять их использование по отношению к параметрам; как редактирование существующих параметров, так и при создании новых объектов, которые полагаются на параметры. Например, при создании выдавливания, которое является определенной глубиной, есть параметр, который автоматически создается - он контролирует глубину выдавливания. В пользовательском интерфейсе вы вводите глубину в диалоговом окне Extrude, которая на самом деле является строкой, которая используется как выражение параметра, который будет создан. При создании выдавливания посредством API есть немного больше гибкости в задании глубины. Вы можете имитировать пользовательский интерфейс и предоставить строку, которая определяет правильную длину, но API также поддерживает указание реального значения, которое всегда в единицах базы данных (в данном случае - сантиметры, так как это длина). Для того, чтобы указать либо строковое выражение, либо реальное значение для глубины, Fusion поддерживает объект, называемый ValueInput, который используется в любое время когда вы предоставляете значение, которое станет параметром.Объект ValueInput является относительно простым объектом, который содержит либо реальное значение, либо строку. При создании объекта ValueInput вы можете использовать как методы ValueInput.createByReal, так и ValueInput.createByString. Если вы создаете ValueInput, используя строку то ValueInput будут оцениваться так же, как другие строки, введенные пользователем, как описано выше. Если вы создаете ValueInput с помощью реального значения, то значение считается в единицах базы данных, так что единица измерения не требуется. Например, в случае выдавливания значение будет считаться в сантиметрах, так как глубина экструзии - это длина. Вы можете использовать любой вариант в зависимости от имеющихся у вас данных. Если у вас есть строка, предоставленная пользователем или по какой-то причине вы хотите определить уравнение, можно использовать createByString. Если вы вычислили значение, вы можете использовать createByReal. Приведенный ниже код демонстрирует это. Уже получены профиль и глубина детали.

Код - C#: [Выделить]
  1. // Создать вход выдавливания, чтобы иметь возможность определить вход, необходимый для выдавливания.
  2. var extrudes = rootComp.features.extrudeFeatures;
  3. var extInput = extrudes.createInput(prof, adsk.fusion.FeatureOperations.NewComponentFeatureOperation);
  4.  
  5. // Определить, что степень является расстоянием равным половине глубины детали.
  6. var distance = adsk.core.ValueInput.createByReal(partDepth / 2);
  7. extInput.setDistanceExtent(false, distance);
  8.                            
  9. // Создание выдавливания.
  10. var ext = extrudes.add(extInput);

Объект ValueInput предоставляет способ передать либо строку, либо реальное значение через один аргумент. Если вы передаете строку, эта строка используется как уравнение параметра, который создан. Это означает, что оно может включать в себя ссылки на другие параметры, функции и т.д. Если вы передаете реальное значение, уравнение вычисляется Fusion и отображается в диалоговом окне параметров.

При изменении значения параметра с помощью API, у вас есть возможность использования свойства выражения, которое представляет собой строку и является таким же, которую использует пользователь, используя диалоговое окно Parameters, чтобы изменить значение параметра. Используя свойство выражения, можно ввести любое действительное выражение параметра. Внутренне, Fusion берет эту строку и оценивает её, чтобы убедиться, что она действительная. В дополнение к установке выражение, API также поддерживает настройки параметра, используя реальное значение с помощью свойства valueInput. Предполагается, что реальное значение будет в единицах базы данных для любого типа единиц измерения, который связан с параметром, и непосредственно связывает его с параметром. Это переопределит существующее выражение и Fusion создаст эквивалентное выражение для отображения в диалоговом окне. Значение, показанное в столбце "Value"? является на самом деле реальным внутренним значением, которое преобразуется в строку, используя что-то подобное методу formatInternalValue, изложенному выше. Это показано в текущей единице измерения документа по умолчанию с числом десятичных знаков, указанных в настройках. Это возможно только через API, где у вас есть прямой доступ на чтение и запись внутреннего значения.

Источник: http://help.autodesk.com/view/NINVFUS/ENU/?guid=GUID-A81B295F-984A-4039-B1CF-B449BEE893D7

 

Автор перевода: Дмитрий Емельянов

Обсуждение: http://adn-cis.org/forum/index.php?topic=3084

Опубликовано 08.09.2015
Отредактировано 03.10.2015 в 13:00:14