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

25/08/2015

Доступ к IfcGUID импортированной стены

Вопрос: У меня есть стена, которая в IFC файле задана с идентификатором ‘3lDzp1LFjDqwXDAihsyNrA’ и выглядит примерно так:

Код: [Выделить]
  1.   #615 = IFCWALLSTANDARDCASE( '3lDzp1LFjDqwXDAihsyNrA',
  2.     #42, '\X2\6A196E9658C1\X0\:(P)PC200:1185289', $,
  3.     '\X2\6A196E9658C1\X0\:(P)PC200:794115',
  4.     #587, #613, '1185289' );

Как можно получить IFC GUID '3lDzp1LFjDqwXDAihsyNrA' для этой стены в модели Revit?

Я вижу, что в интерфейсе он отображается как значение свойства IfcGuid:

 

Ответ: Эти данные хранятся как обычный параметр соответствующего элемента.

Доступ к нему можно получить с помощью метода Element.LookupParameter или Element.GetParameters, например:

Код - C#: [Выделить]
  1.   IList<Parameter> ps = elem.GetParameters( "IfcGUID" );
  2.  
  3.   // или
  4.  
  5.   Parameter pGuid = elem.LookupParameter( "IfcGUID" );
  6.   string ifc_guid = pGuid.AsString();

Первый вариант предпочтительней, так как он гарантирует, что вы корректно обрабатываете случай, если у элемента есть несколько параметров с одинаковым именем.

Но, лучше использовать другой метод, который абсолютно не зависит от локализации Revit. Нужно использовать встроенный параметр.

В данном случае, это IFC_GUID:

Код - C#: [Выделить]
  1. Parameter pGuid = e.get_Parameter( BuiltInParameter.IFC_GUID );
  2.   string ifc_guid = pGuid.AsString();

Источник: http://thebuildingcoder.typepad.com/blog/2015/06/ifc-guid-access-life-span-and-cloning-of-geometry.html#3

Автор перевода: Виктор Чекалин

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

Опубликовано 25.08.2015