Как сделать копию поверхности в текущем чертеже

Автор Тема: Как сделать копию поверхности в текущем чертеже  (Прочитано 8786 раз)

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

Оффлайн Павел55Автор темы

  • ADN OPEN
  • ***
  • Сообщений: 106
  • Карма: 3
Изменение высоты точек  и изменение стиля поверхности ни на что не повлияло.

Оффлайн Павел55Автор темы

  • ADN OPEN
  • ***
  • Сообщений: 106
  • Карма: 3
ObjectId surfNewId = TinSurface.Create(db, "Поверхность-n") в этом методе второй аргумент - stringSurfaceName, а за отображение в дереве поверхностей отвечает другое свойство -  DisplayName. Поэтому при использовании метода мы видим поверхности-копии с одинаковыми именами.

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
ObjectId surfNewId = TinSurface.Create(db, "Поверхность-n") в этом методе второй аргумент - stringSurfaceName, а за отображение в дереве поверхностей отвечает другое свойство -  DisplayName. Поэтому при использовании метода мы видим поверхности-копии с одинаковыми именами.
Ага. Т.е. достаточно поменять DisplayName, чтобы имена поверхностей отличались. Отлично.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Изменение высоты точек  и изменение стиля поверхности ни на что не повлияло.
Отлично.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Павел55Автор темы

  • ADN OPEN
  • ***
  • Сообщений: 106
  • Карма: 3
Ага, только у этого свойства set закрыт, a методов чтоб поменять имя  я пока не нашел.

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

  • Administrator
  • *****
  • Сообщений: 13830
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Ага, только у этого свойства set закрыт, a методов чтоб поменять имя  я пока не нашел.
Я пока тоже. Есть свойство Name, которое можно менять. Но похоже это не то, что тебе нужно.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Существуют ли какие то стандартные методы копирования существующей поверхности в текущий чертеж?
Насколько я знаю, в API Civil 3D такого нет.
Или  может быть можно как то поместить поверхность в быстрые ссылки а потом оттуда достать?
API Civil 3D не умеет работать с быстрыми ссылками.
а затем использовать метод CopyFrom из старой в новую.
Как и в любом другом случае, использование продвинутых методов AutoCAD на сложных объектах Civil 3D может привести к неожиданным результатам...

Нужно ещё уточнить, что Вы понимаете под копией поверхности. Что она должна забрать из исходной? Например:
1. Только текущее состояние геометрии поверхности
2. Текущее состояние геометрии и настройки её отображения
3. Полная копия: геометрия + отображение + ссылки на источники данных, формирующие поверхность
4. <свой вариант>

Оффлайн Павел55Автор темы

  • ADN OPEN
  • ***
  • Сообщений: 106
  • Карма: 3
Важна только геометрия

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Если так, то вполне нормальный вариант вот этот:
похоже что придется изобретать костыль - извлекать из поверхности точки и каждый раз создавать поверхность добавляя в нее эту группу точек. Но если поверхность сложная - то она построится как попало.
Я не вижу в этом варианте ничего костыльного.
Чтобы поверхность построилась не "как попало", помимо точек нужно обработать ещё ограничивающие контуры и треугольники. Задачка не сказать что простая, но решаемая.

Оффлайн Павел55Автор темы

  • ADN OPEN
  • ***
  • Сообщений: 106
  • Карма: 3
Уже решили эту задачу с посощью метода CopyFrom

Оффлайн Дмитрий Загорулькин

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 735
Уже решили эту задачу с посощью метода CopyFrom
Я выше уже писал о том, что результат может получиться неожиданный. CopyFrom - это такой чёрный ящик, если мы говорим про его работу с объектами Civil. Работа его в таком режиме не документирована и вряд ли тестировалась вообще. Применение, получается - на свой страх и риск. Я бы не рискнул, учитывая, что есть вполне рабочий альтернативный вариант. По закону подлости, какой-нибудь неожиданный "косяк" может вылезти в самый неподходящий момент. Но, тут, как говорится, дело хозяйское: моё - предупредить, ваше - принять решение с учётом всех обстоятельств.
Как в итоге справились с DisplayName?

Оффлайн Павел55Автор темы

  • ADN OPEN
  • ***
  • Сообщений: 106
  • Карма: 3
Пока никак) конечно, если какой то косяк вылезет, то буду переделывать, но пока требуется решение так сказать "в лоб", а потом уже тестировать и оптимизировать.