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

28/10/2015

Параметры типа для системных семейств

Вопрос: Надеюсь кто-нибудь сможет мне помочь как получить параметры типа для системных семейств. Я могу получить параметры экземпляра, такие как Площадь или объем, но не могу, например, Ключевую пометку.

С экземплярами семейств я использую, к примеру, Door.Symbol.get_Parameter(BuiltInParam.KEYNOTE_PARAM); Но как заставить это работать с системными семействами? Что я упустил?

Код - C#: [Выделить]
  1. FilteredElementCollector FMFloorCollector = new FilteredElementCollector(OpenDoc);
  2. FMFloorCollector.OfClass(typeof(Floor));
  3. foreach (Floor FMFloor in FMFloorCollector)
  4. {
  5. Floor_Keynote = FMFloor.get_Parameter(BuiltInParameter.KEYNOTE_PARAM);
  6. Floor_Family = FMFloor.get_Parameter(BuiltInParameter.ALL_MODEL_FAMILY_NAME);
  7. Floor_Mark = FMFloor.get_Parameter(BuiltInParameter.ALL_MODEL_MARK);
  8. Floor_Type = FMFloor.get_Parameter(BuiltInParameter.ALL_MODEL_TYPE_NAME);
  9. Floor_Description = FMFloor.get_Parameter(BuiltInParameter.ALL_MODEL_DESCRIPTION);
  10. Floor_Area = FMFloor.get_Parameter(BuiltInParameter.HOST_AREA_COMPUTED);
  11. Floor_Volume = FMFloor.get_Parameter(BuiltInParameter.HOST_VOLUME_COMPUTED);
  12. }

Ответ: Похоже вы пытаетесь получить информацию о перекрытии. Для параметров экземпляра это не сложно и вы с этим легко справляетесь, но с параметрами типа не получается. Я бы посоветовал сначала получить все необходимые параметра экземпляра, затем, найти тип этих экземпляров и уже для него получить параметры типа. Например, вот так:

Код - C#: [Выделить]
  1. foreach (Floor FMFloor in FMFloorCollector)
  2. {
  3.                 //параметры экземпляра
  4.                 Parameter Floor_Family = FMFloor.get_Parameter(BuiltInParameter.ALL_MODEL_FAMILY_NAME);
  5.                 Parameter Floor_Mark = FMFloor.get_Parameter(BuiltInParameter.ALL_MODEL_MARK);
  6.                 Parameter Floor_Type = FMFloor.get_Parameter(BuiltInParameter.ALL_MODEL_TYPE_NAME);
  7.                 Parameter Floor_Area = FMFloor.get_Parameter(BuiltInParameter.HOST_AREA_COMPUTED);
  8.                 Parameter Floor_Volume = FMFloor.get_Parameter(BuiltInParameter.HOST_VOLUME_COMPUTED);
  9.  
  10.                 Element el = FMFloor as Element;
  11.                 ElementId typeid = el.GetTypeId();
  12.                 Element floortype = OpenDoc.GetElement(typeid);
  13.  
  14.                 //параметры типа
  15.                 Parameter Floor_Keynote = floortype.get_Parameter(BuiltInParameter.KEYNOTE_PARAM);
  16.                 Parameter Floor_Description = floortype.get_Parameter(BuiltInParameter.ALL_MODEL_DESCRIPTION);
  17. }

Источник: http://adndevblog.typepad.com/aec/2015/09/another-year-wiseri-hope-revit-api-check-for-worksharing-environment-get-type-parameters-from-a-system-family.html

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

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

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