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

23/01/2014

Простое создание наклонного сегмента трубопровода с отводами

Продолжу свою работу по созданию наклонного сегмента трубопровода. Мы рассмотрели уже следующие темы, связанные с этой задачей: вычисление длины наклонного сегмента, создание трубы, соединение всех труб в одну систему, а также собственную реализацию программного создание отводов.

Явное размещение фитингов было довольно тяжелой и кропотливой задачей. Для ее решения необходимо было выполнить следующие шаги:

  • Проанализировать сгенерированную модель для определения семейства с подходящими фитингами (отводами)
  • Понять, как задать угол и диаметр отвода
  • Создать и разместить в проекте новый фитинг с помощью метода NewFamilyInstance
  • Правильно определить направление отвода, так чтобы один конец отвода присоединялся к исходной к трубе, а второй, к наклонному сегменту
  • Укоротить исходную трубу, так как фитинг тоже имеет некий размер
  • Соединить отводы и трубы в одну систему

Этот способ работает, хотя и заставил меня попотеть, прежде чем я добился нужного результата.

Но, как заметил Тате (Tate) в своем комментарии к статье соединение всех труб в одну систему, почти все можно было достичь с помощью метода NewElbowFitting, тем самым избавиться от множества хлопот. Этот метод выбирает, создает, подстраивает, размещает и соединяет отводы с трубами автоматически, исходя из настроек Revit.

Мы уже затрагивали тему создания фитингов ранее, но я до сих пор так и не использовал метод NewElbowFitting в своих примерах.

Размещение отводов с помощью метода NewElbowFitting

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

Для использования метода NewElbowFitting я просто заменил код, где соединял трубы друг с другом. В результате получилось следующее:

Код - C#: [Выделить]
  1.   pipe = doc.Create.NewPipe( q0, q1,
  2.     pipe_type_standard );
  3.  
  4.   pipe.get_Parameter( bipDiameter )
  5.     .Set( diameter );
  6.  
  7.   // Соединим наклонный сегмент
  8.   // с исходными трубами
  9.   //
  10.   //Util.Connect( q0, pipes[0], pipe );
  11.   //Util.Connect( q1, pipe, pipes[1] );
  12.  
  13.   // NewElbowFitting выполняет следующие действия:
  14.   // - Подбирает подходящее семейство и типоразмер (отводы)
  15.   // - Размещает в правильном положении отвод
  16.    // - соединяет все элементы трубопровода в одну систему
  17.  
  18.   Connector con0 = Util.GetConnectorClosestTo(
  19.     pipes[0], q0 );
  20.  
  21.   Connector con = Util.GetConnectorClosestTo(
  22.     pipe, q0 );
  23.  
  24.   doc.Create.NewElbowFitting( con0, con );
  25.  
  26.   Connector con1 = Util.GetConnectorClosestTo(
  27.     pipes[1], q1 );
  28.  
  29.   con = Util.GetConnectorClosestTo(
  30.     pipe, q1 );
  31.  
  32.   doc.Create.NewElbowFitting( con, con1 );

Как вы видите, весь тот сложный код, который я использовал для ручного создания, подбора и размещения отводов больше не требуется.

В результате модель выглядит точно также, как и в предыдущей статье, но код стал значительно проще и понятней.

Исходный код команды по созданию наклонного сегмента с отводами с помощью метода NewElbowFitting находится в примерах The Building Coder на GitHub в команде под названием CmdRollingOffset. Версия команды, которая обсуждалась в статье, находится в release 2014.0.106.5

Таким образом, исходная задача полностью решена. Однако остался еще вопрос, как создавать трубы с помощью нового метода Pipe.Create вместо Document.Create.NewPipe.

Источник: http://thebuildingcoder.typepad.com/blog/2014/01/newelbowfitting-easily-places-rolling-offset-elbow-fittings.html

 

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

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