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

27/06/2014

Как определить тип выступающего профиля стены (Wall Sweep Type) для использования в методе WallSweep.Create()

Вопрос: В Revit SDK есть метод для создания выступающего профиля стены. Он объявлен как:

Код - C#: [Выделить]
  1. WallSweep.Create( Wall wall,
  2. ElementId wallSweepType,
  3. WallSweepInfo wallSweepInfo)

Вторым параметром необходимо передать тип профиля, но я не знаю, как мне его получить и поэтому у меня не получается воспользоваться этим методом. Скажите, как правильно получить значение этого параметра для передачи его в метод?

Ответ: Вот пример кода, в котором показано как это можно сделать:

Код - C#: [Выделить]
  1. private ElementId GetSweepOrRevealTypeId(
  2. WallSweepType sweepType)
  3. {
  4.     FilteredElementCollector wallSweeps =
  5. new FilteredElementCollector(RevitDoc);
  6.     wallSweeps.OfClass(typeof(WallSweep));
  7.   
  8.     Func<WallSweep, bool> IsUnfixedSweep = sweep =>
  9. !sweep.GetWallSweepInfo().IsFixed &&
  10. sweep.GetWallSweepInfo().WallSweepType == sweepType;
  11.     return
  12.   
  13.     wallSweeps.OfType<WallSweep>().
  14. FirstOrDefault<WallSweep>(IsUnfixedSweep)
  15. .GetTypeId();
  16. }
  17.  
  18. WallSweep sweep = WallSweep.Create(wall,
  19. GetSweepOrRevealTypeId(WallSweepType.Sweep),
  20. sweepInfo);

 

И еще один вариант:

Код - C#: [Выделить]
  1. FilteredElementCollector collector= new FilteredElementCollector(RevitDoc);
  2. collector.OfCategory(BuiltInCategory.OST_Cornices);
  3. ElementType wallSweepType = collector.FirstElement() as ElementType;

Источник: http://adndevblog.typepad.com/aec/2014/03/how-to-determine-wallsweeptype-parameter-for-wallsweepcreate-api.html

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

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