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

18/02/2014

Разделение воздуховода или трубы, имеющих врезки

Вопрос: Я бы хотел разделить воздуховод или трубу точно так, как я это делаю в интерфейсе.

В интерфейсе есть команда: Изменить -> Редактирование -> Разделить с зазором.

А как можно программно получить тот же, либо более-менее похожий результат?

Ответ: Классы Duct (воздуховод) и Pipe (труба) не содержат подобной функциональности.

Вот пара дискуссий на эту тему: разделение трубы или воздуховода (на англ.) и еще более ранняя (на англ.), от 2009 года.

Ответ: Разделение трубы путем укорачивания ее с одной стороны и создания новой трубы с другой стороны работает прекрасно. Но только в самых простых и примитивных случаях.

А что можно сделать, если к трубе присоединены врезки?

В этом случае, при укорачивании трубы, будет удалено соединение между врезкой и трубой, что в свою очередь вызовет ошибку.

Создание новой трубы на месте старой не приведет к автоматическому присоединению к врезке.

Так все же можно разделить трубу или воздуховод с присоединёнными врезками?

Ответ: Как и всегда, с помощью Revit API вы не сможете сделать больше, чем вы можете сделать в интерфейсе.

Если рассматривать действия в пользовательском интерфейсе, вам нужно:

Удалить врезки. В некоторых случаях Revit отобразит ошибку, в которой сказано о необходимости удаления врезки. Но в ряде случаев такого не произойдет. Не смотря на эту ошибку, вы так или иначе должны удалить врезку, чтобы затем создать новую. По понятным причинам вам нужно запомнить ее тип, месторасположение, ориентацию, и т.д.

Заново соединить новый отрезок трубы, удлиняющий старую, с новой врезкой. Команда «Удлинить», в пользовательском интерфейсе, поможет вам в этом. С помощью API можно сделать то же самое. Мы рассматривали этот вариант в статье Простое создание наклонного сегмента трубопровода с отводами

Ответ: Я понимаю, что API не содержит какой-либо дополнительной функциональности по сравнению с пользовательским интерфейсом.

Однако, помимо встроенной команды «Разделить с зазором» для стен, есть команда «Разделить элемент», которая отлично работает и с трубами, и с воздуховодами. Есть ли программный аналог этой команды и как его можно найти?

Во-вторых, вы предложили удалить врезку и затем создать заново.

В интерфейсе, метод «Удлинить» создаст врезку, только в том случае, если он определен в Типе воздуховода и в качестве Предпочтительного типа соединения указана Врезка. Более того, еще один момент, о котором не стоит забывать. Необходимо скопировать значение всех параметров из старой врезки в новую.

 

Метод «Разделить элемент» в интерфейсе делает все это автоматически: я просто разделяю воздуховод и все. Именно такого поведения я и хочу достичь с помощью API.

Ответ: Спасибо за разъяснение и прошу прощения за то, что необходимо воспользоваться таким непростым способом.

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

Источник: http://thebuildingcoder.typepad.com/blog/2014/02/daylighting-extension-and-splitting-with-taps.html

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

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