Доступ к Area.Name Бросает Ошибка
Я просто пытаюсь найти способ доступа к свойству name элемента Area внутри Revit Python Shell, пробовал просматривать удивительно информативный блог Джереми Таммика, пробовал AUGI, документы Revit API, искал 2 дня...
Попытка доступа через несколько способов, FilteredElementsCollector(doc).OfCategory(BuiltInCategory.OST_Areas), попытка с помощью класса Area, попытка с помощью AreaTag, каждый раз, когда я получаю сообщение об ошибке при любых обстоятельствах, и это сводит меня с ума, это выглядит как простая проблема, которую я не могу понять!
РЕДАКТИРОВАТЬ: Также пробовал по идентификатору элемента, через теги, через схемы области, нада, нет идти
Может кто-нибудь сказать, пожалуйста, как получить доступ к этому свойству через RPS?
3 ответа
Я бы сказал две вещи:
areaObject.LookupParameter("Name")
areaObject.GetParameters("Name")
... являются допустимыми методами. Пожалуйста, обратите внимание, как я использовал GetParameters()
НЕ GetParameter()
, Есть некоторые недостатки использования любого из двух. Метод lookup возвращает параметр FIRST, соответствующий имени, которое во многих случаях может быть другим параметром для разных элементов. Это не очень надежно.
GetParameters()
метод вернет их все, если их несколько, так что вам придется иметь дело с List<Parameter>
а не один объект, из которого вы можете извлечь свою ценность.
Я бы лично рекомендовал использовать areaObject.get_Parameter(BuiltInParameter.ROOM_NAME)
метод извлечения значения Name из объекта Area. BuiltInParameter всегда указывает на один и тот же параметр и надежно возвращает только этот один параметр. Вот немного больше информации об этих методах: http://www.revitapidocs.com/2018/4400b9f8-3787-0947-5113-2522ff5e5de2.htm
Может быть, ваша проблема такая же, как эта?:
Your_Area.Name # throws error
Element.Name.GetValue(Your_Area) # works great
Чтобы ответить на мой собственный вопрос, я на самом деле никогда не думал о том, чтобы просмотреть код других скриптов Revit Python... в данном случае PyRevit, который, на мой взгляд, гораздо более красноречиво написан, чем RPS, и с нетерпением ждет возможности их консольной работы. сделанный!
По сути, я по ошибке использовал GetParameter("параметр") вместо LookupParameter("параметр").
Как я уже сказал, это было что-то глупо простое, чего я просто не понимал.
Если кто-то обладает достаточными знаниями для последовательного разъяснения этого, пожалуйста, ответьте!
Большое спасибо!