Сообщество программистов Autodesk в СНГ
ADN Club => Revit API => Тема начата: GIPPY от 20-06-2021, 16:49:20
-
Здравствуйте.
Прошу помощи.
Dim sdff As Parameter
sdff = obj.LookupParameter("Описание")
в данном коде я пытаюсь в текущей транзакции после создания семейства obj найти значение параметра Описание и потом его изменить,
но не получается даже его найти, значение sdff возвращается пустое (nothing).
(https://i.ibb.co/0yWVNXy/Image1.jpg) (https://ibb.co/KxQzZGx)
-
Эммм... Судя по картинке, ты хочешь изменить параметр типоразмера, а не экземпляра семейства, а в коде ищешь параметр именно экземпляра. Ещё рекомендую везде, где можно, получать параметры либо используя перечисление BuiltInParameter для встроенных параметров или GUID для общих. Рекомендация #2 - поставить и использовать RevitLookup, сильно помогает в разработке.
-
Спасибо за ответ.
Действительно revitlookup в парметрах семейства не отобразил параметр Описание. Я решил попробовать поработать с отображаемым параметром Марка
obj.LookupParameter("Марка").SetValueString("Фм")
этот код не вызвал ошибку, но и не присвоил значение Фм параметру Марка.
(https://i.postimg.cc/v4YYpV3W/Image1.jpg) (https://postimg.cc/v4YYpV3W)
(https://i.postimg.cc/PvfHBGMd/Image2.jpg) (https://postimg.cc/PvfHBGMd)
-
Используй метод Parameter.Set взамен.
Здесь не очень ясно отображено в документации, исходим из логики, представленной API в классе Parameter. У него есть методы .AsString() и .AsValueString(), если тип параметра строковой, то AsString вернёт значение параметра, .AsValueString() - вернёт null. Если, например, параметр типа "Да/Нет", то результат AsString() будет null, AsValueString(), например, "Да", (AsInteger() == 1)
Таким образом, например, для параметра типа "Да/Нет" будет рабочим код parameter.SetValueString("Да") (ну, пока пользователь не запустит Revit на английском языке, по этой же причине не рекомендую использовать метод LookupParameter). Возможно, американцам он удобен с их имперскими "1 1/2 дюйма", но лучше пользоваться одним из overload-ов метода Parameter.Set
-
Большое спасибо за ответ.
код
obj.LookupParameter("Марка").Set("Фм")
сработал.