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

ADN Club => Revit API => Тема начата: Алексей Кузин от 16-04-2014, 10:17:03

Название: TakeOff FacingFlipped
Отправлено: Алексей Кузин от 16-04-2014, 10:17:03
Доброго дня.
Не буду углубляться в суть задачи.
Построим 2 TakeOff как на рисунке. у левого  FacingFlipped = true.
Почему устанавливается FacingFlipped. можно ли как то этого избежать? (CanFlipFacing = false)
Название: Re: TakeOff FacingFlipped
Отправлено: Виктор Чекалин от 17-04-2014, 10:42:38
Добрый день.

CanFlipFacing лишь означает, можно ли вручную менять ориентацию лицевой стороны (В пользовательском интерфейсе, либо программно с помощью метода flipFacing())

FacingFlipped для данного фитинга означает с какой стороны от трубы/воздуховода примыкает данный фитинг.

Изменить это нельзя. Да и собственно, зачем?
Название: Re: TakeOff FacingFlipped
Отправлено: Алексей Кузин от 21-04-2014, 12:44:34
Добрый день.

Печально что вы подтвердили мои изыскания.

Нужно это для соответствия с MEP. имеем 2 идентичные takeoff в Revit и MEP. Если мы рисуем takeoff слева от трубы то получаем что в revit данный takeoff меняет свою ориентацию по оси Y и строится как бы в левостронней системе координат. Например для takeoff-transition который имеет смещение по двум направлениям получаем ситуацию что при аналогичных параметрах в Revit и MEP построение будет различаться.

Одно из возможных решений - это в rfa вводить дополнительный параметр - флаг который определяет ориентацию. И в зависимости от этого флага выставлять геометрию.
Например:
 Left Set Filtered = if(FacingFlipped, -Right Set, Left Set)

Назначение этого флага можно задать в DMU.

         
Код - C# [Выбрать]
  1. public void Execute(UpdaterData data)
  2.         {      
  3.             var doc = data.GetDocument();
  4.             foreach (var el in data.GetAddedElementIds())
  5.                 SetFacingFlipped(doc, el);
  6.         }
  7.         private void SetFacingFlipped(Document doc, ElementId el)
  8.         {
  9.             Element element = doc.GetElement(el);
  10.             if (element != null && element.Name == "Tap - Transition")
  11.             {
  12.                 var fi = element as FamilyInstance;
  13.                 if (fi != null)
  14.                 {
  15.                           var para = element.get_Parameter("FacingFlipped");
  16.                           if (para != null && !para.IsReadOnly)
  17.                           {
  18.                                var pType = para.StorageType;
  19.                                if (pType == StorageType.Double)
  20.                                {
  21.                                          para.Set( fi.FacingFlipped ? 1 : 0);
  22.                                          doc.Regenerate();
  23.                                }
  24.                           }  
  25.                 }
  26.             }
  27.         }

Собственно вопрос - правильно ли я думаю что у takeoff FacingFlipped выставляется только при создании (определяется ориентация) и входе любых манипуляций не меняется?