Сообщество программистов Autodesk в СНГ
ADN Club => Inventor API => Тема начата: niksasa от 26-12-2013, 15:56:28
-
Добрый день.
Есть код, который добавляет пользовательский параметр ДЛИНА:
Try
pDoc = m_inventorApplication.ActiveDocument
p = pDoc.Parameter.Value(Dlina.Text)
Catch ex As Exception
pDoc.ComponentDefinition.Parameters.UserParameters.AddByEx * pression(Dlina.Text, mDlina.Text, UnitsTypeEnum.kMillimeterLengthUnits)
End Try
Почему при изменении значения в текстовом поле mDlina пользовательский параметр не обновляется, а появляется новый параметр ДЛИНА_1?
Дело по аналогии с ilogic.
Try
p = Parameter.Param("ДЛИНА")
Catch
ThisDoc.Document.ComponentDefinition.Parameters.UserParameters.AddByEx * pression("ДЛИНА", "100", UnitsTypeEnum.kMillimeterLengthUnits)
End Try
-
Проблема в том, что в вашем коде не получается корректной ссылки на пользовательский параметр, и из-за этого возникает ошибка. Управление всегда переходит в блок Catch, а там создается новый параметр. Поскольку имя Длина занято, параметр автоматически создается с видоизмененным именем Длина_1 (подставляется суффикс "_1"),
Вот так дожно работать:
Dim oDoc As Inventor.Document = m_inventorApp.ActiveDocument
Dim oUserPars As UserParameters = oDoc.ComponentDefinition.Parameters.UserParameters
Dim oPar As UserParameter = Nothing
Try
oPar = oUserPars.Item(Name)
oPar.Expression = "100 мм"
Catch ex As Exception
oPar = oUserPars.AddByExpression(Name, "100 мм", "mm")
End Try
С Наступающим Новым Годом ! :)
-
Спасибо, Владимир. Все работает в лучшем виде.
С наступающим новым годом!
-
А кроме отработчика ошибок Try, можно через If узнать существует параметр с заданным именем или нет?
-
А кроме отработчика ошибок Try, можно через If узнать существует параметр с заданным именем или нет?
ну перебрать коллекцию параметров
-
ну перебрать коллекцию параметров
да это ж еще дольше, уж лучше Try