TakeOff FacingFlipped

Автор Тема: TakeOff FacingFlipped  (Прочитано 4068 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Алексей КузинАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 116
  • Карма: 8
TakeOff FacingFlipped
« : 16-04-2014, 10:17:03 »
Доброго дня.
Не буду углубляться в суть задачи.
Построим 2 TakeOff как на рисунке. у левого  FacingFlipped = true.
Почему устанавливается FacingFlipped. можно ли как то этого избежать? (CanFlipFacing = false)

Оффлайн Виктор Чекалин

  • Administrator
  • *****
  • Сообщений: 694
  • Карма: 111
  • Skype: chekalin-v
Re: TakeOff FacingFlipped
« Ответ #1 : 17-04-2014, 10:42:38 »
Добрый день.

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

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

Изменить это нельзя. Да и собственно, зачем?

Оффлайн Алексей КузинАвтор темы

  • ADN OPEN
  • ***
  • Сообщений: 116
  • Карма: 8
Re: TakeOff FacingFlipped
« Ответ #2 : 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 выставляется только при создании (определяется ориентация) и входе любых манипуляций не меняется?
« Последнее редактирование: 27-11-2014, 13:58:59 от Александр Ривилис »