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

ADN Club => Revit API => Тема начата: Nikita_Pinchuk от 24-04-2018, 17:36:53

Название: Вставка крана в трубу.
Отправлено: Nikita_Pinchuk от 24-04-2018, 17:36:53
Доброе время суток!
У меня есть проблема со вставкой крана в трубу. Сейчас у меня реализовано как "Создание трубы - создание крана - создание трубы" , т.е. по точкам (image1). При этом коннекторы трубы и крана не сцепляются, а просто лежат в одной точке. Но таким способом я не могу работать с вертикальными участками труб(image3). Cоответственно, я хотел бы ВСТАВИТЬ кран в трубу, например "Создание трубы - Вставить кран в центр трубы" (так, как я могу это сделать в самом Revit). Тогда труба просто проходит сквозь кран.  Трубу я создаю методом "Pipe.Create", кран - "Create.NewFamilyInstance".
В качестве входных параметров для NewFamilyInstance можно подать: точку (этот метод я использую), прямую, кривую, поверхность.
Но ничего такого я не могу извлечь из параметров трубы. Как дальше жить, господа?
Название: Re: Вставка крана в трубу.
Отправлено: Александр Игнатович от 24-04-2018, 17:58:45
День добрый. А что если семейство повернуть после создания?

Кстати, Revit автоматически соединяет в систему, если делать как Вы описали? Имею ввиду
"Создание трубы - создание крана - создание трубы

Вопрос к тому, что вроде логичным должно быть, что семейство крана есть Transition, тогда можно создавать краны методом Document.NewTransitionFitting и у созданного семейства при необходимости менять типоразмер на типоразмер семейства крана. В этом случае вне зависимости от того, вертикальная труба, горизонтальная или наклонная можно реализовывать как "создать трубу, создать трубу, создать переход между ними, поставить типоразмер семейства крана"
Название: Re: Вставка крана в трубу.
Отправлено: Nikita_Pinchuk от 24-04-2018, 18:04:16
Семейство я могу вращать только в опорной плоскости, т.е. только в горизонтали. (ElementTransformUtils.RotateElement)
Поскольку я создаю трубы и кран независимо, то они не принадлежат к одной системе.
Спасибо на наводку, сейчас опробую.
Название: Re: Вставка крана в трубу.
Отправлено: Александр Игнатович от 24-04-2018, 18:21:29
Повернул семейство
Код - Python [Выбрать]
  1. import math
  2. e = selection[0]
  3.  
  4. tx = Transaction(doc, "rotate")
  5. tx.Start()
  6.  
  7. ElementTransformUtils.RotateElement(doc, e.Id, Line.CreateUnbound(e.Location.Point, XYZ.BasisY), 0.5*math.pi)
  8.  
  9. tx.Commit()
  10.  

Было:
(https://s9.postimg.cc/9yv5b767v/source.png) (https://postimg.cc/image/9yv5b767v/)

Стало:
(https://s9.postimg.cc/jw6649ljf/rotated.png) (https://postimg.cc/image/jw6649ljf/)
Название: Re: Вставка крана в трубу.
Отправлено: Александр Игнатович от 24-04-2018, 18:25:10
С этим семейством не получится, категория семейства должна быть "Соединительные детали трубопроводов", тогда у FamilyInstance свойство MEPModel становится типа MechanicalFitting

В свойствах семейства должно быть

(https://s9.postimg.cc/cg6wiu0ij/transition.png) (https://postimg.cc/image/cg6wiu0ij/)
Название: Re: Вставка крана в трубу.
Отправлено: Nikita_Pinchuk от 07-05-2018, 13:45:47
Спасибо за участие, Александр! Семейство поворачивается, все в порядке. Но осталась одна проблема - кран не подключается к системам в случае "труба - кран - труба". То есть не получается ВСТАВИТЬ кран в трубу. По ссылке доступен скринкаст, через теги почему-то не работает. Спасибо!


Название: Re: Вставка крана в трубу.
Отправлено: Александр Игнатович от 07-05-2018, 13:51:06
Попробуйте соединить с помощью метода:

Код - C# [Выбрать]
  1. Connector.ConnectTo
Название: Re: Вставка крана в трубу.
Отправлено: Александр Ривилис от 07-05-2018, 15:34:42
По ссылке доступен скринкаст, через теги почему-то не работает.
Как видишь работает. Прочитай: Добавление к сообщению видео с сайта https://screencast.autodesk.com/ (http://adn-cis.org/forum/index.php?topic=2813.0)
Название: Re: Вставка крана в трубу.
Отправлено: Nikita_Pinchuk от 07-05-2018, 18:23:18
Благодарствую! Все работает!