Объединить 2 дакта

Автор Тема: Объединить 2 дакта  (Прочитано 2460 раз)

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

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

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

  • ADN OPEN
  • ***
  • Сообщений: 116
  • Карма: 8
Объединить 2 дакта
« : 30-01-2018, 18:07:11 »
Создаем кодом 2 дакта. К примеру:

Код - C# [Выбрать]
  1.             var p1 = new XYZ(0, 0, 0);
  2.             var p2 = new XYZ(10, 0, 0);
  3.             var p3 = new XYZ(20, 0, 0);
  4.  
  5.             var d1 = Duct.Create(doc, SystemTypeId, DuctType, levelId, p1, p2);
  6.             var d2 = Duct.Create(doc, SystemTypeId, DuctType, levelId, p2, p3);
  7.  
Далее находим коннекторы коннекторы каждого дакта в точке p2. И соединяем коннекторы:

Код - C# [Выбрать]
  1.             Connector connectorDuct1;
  2.             Connector connectorDuct2;
  3.  
  4.             connectorDuct1.ConnectTo(connectorDuct2);


Получаем 2 дакта подсоединенных друг к другу.  Вопрос есть ли возможность объединить их кодом, чтобы получился 1 дакт?  Варианты удаления 1 дакта и изменения длины другого не предлагать (такое решение будет неправильным, если у нас к дакту подсоединен takeoff)
« Последнее редактирование: 30-01-2018, 18:46:30 от Алексей Кузин »

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Объединить 2 дакта
« Ответ #1 : 30-01-2018, 18:22:21 »
Алексей Кузин
Напоминаю про правило форматирования кода на форуме (у меня в подписи).
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN OPEN
  • ***
  • Сообщений: 116
  • Карма: 8
Re: Объединить 2 дакта
« Ответ #2 : 30-01-2018, 18:48:03 »
Извиняюсь. Вроде всё так и нажимаю. Переделал.

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

  • ADN OPEN
  • ***
  • Сообщений: 116
  • Карма: 8
Re: Объединить 2 дакта
« Ответ #3 : 30-01-2018, 19:05:25 »
Если между дактами вставлен объект Union, то при его удалении дакты соединяются, хотелось бы попробовать сделать подобное без его использования.

Оффлайн Александр Ривилис

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: Объединить 2 дакта
« Ответ #4 : 30-01-2018, 19:45:56 »
Если между дактами вставлен объект Union, то при его удалении дакты соединяются, хотелось бы попробовать сделать подобное без его использования.
Думаю, что они соединяются именно так, как было написано в первом сообщении, т.е. один из них удаляется, а второй удлиняется. Если было что-то еще к ним подсоединено, то соответственно от удаленного отцеплется, а к удлинённому подсоединяются.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Александр Пекшев aka Modis

  • ADN Club
  • *****
  • Сообщений: 1658
  • Карма: 366
  • Отец modplus.org
    • ModPlus
Re: Объединить 2 дакта
« Ответ #5 : 31-01-2018, 09:44:29 »
Вариант "удалить 1ый и удлинить 2ой" - это единственный возможный вариант

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

  • ADN OPEN
  • ***
  • Сообщений: 116
  • Карма: 8
Re: Объединить 2 дакта
« Ответ #6 : 31-01-2018, 13:43:47 »
Спасибо за ответы.
Кстати, на счет обратной операции - разделения 1 дакта на несколько. Много где находил только одно решение - уменьшить длину и добавить еще дакт. Но есть в API метод, может уже давно но наткнулся на него недавно, возможно кому то будет полезно - Autodesk.Revit.DB.Mechanical.BreakCurve(...)

Цитировать
Если было что-то еще к ним подсоединено, то соответственно от удаленного отцеплется, а к удлинённому подсоединяются
Подсоединять takeoff нет возможности, только создавать заново. Если я ошибаюсь прошу поправте меня. Это решило бы много моих проблем!

Отмечено как Решение Алексей Кузин 31-01-2018, 15:11:10

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

  • ADN OPEN
  • ***
  • Сообщений: 116
  • Карма: 8
Re: Объединить 2 дакта
« Ответ #7 : 31-01-2018, 14:10:20 »
Пока остановился на решении c использованием Union. Суть метода:
1) Есть 2 дакта duct1, duct2
2) Делаем самый примитивный Family. тип Union - это важно.
3) вставляем Объект нашего типа между дактами, подсоединяем дакты к нему
4) удаляем этот объект.
5) проверяем duct1 и duct2 на IsValidObject, дакт который прошел проверку является результатом объединения. При этом все takeoff остаются подсоединенными.

По сути получается как раз удаление 1 дакта, увеличение длины второго и подсоединение takeoff от удаленного к тому который увеличил свой размер. Решение своеобразное...