Изменить горизонтали внутри поверхности

Автор Тема: Изменить горизонтали внутри поверхности  (Прочитано 9198 раз)

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

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

  • ADN OPEN
  • Сообщений: 39
  • Карма: 0
Недавно создал тему по поводу извлечения горизонталей из поверхности (http://adn-cis.org/forum/index.php?topic=1745.0). Однако появилась ещё одна задача: добавить Xdata для горизонталей внутри поверхности (под Civil 2012).
Поскольку IAeccSurface.ExtractContour "вырывает" из поверхности горизонтали, нужно получить контуры без отсоединения от поверхности. Попробовал воспользоваться свойством AeccTinSurface.Contours, однако получаю AeccTinSurfaceContour.Count = 0. Хотя если воспользоваться извлечением, то получаю их без проблем.
Можно ли таким способом получить горизонтали поверхности без её "расчленения"? И как в этом случае узнать какая горизонталь главная, а какая вспомогательная?
Спасибо.

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Поскольку IAeccSurface.ExtractContour "вырывает" из поверхности горизонтали
Это как??? Ты получаешь ObjectId для контуров, дальше открываешь их для записи и прописываешь Xdata. Или я чего-то не понял?
И как в этом случае узнать какая горизонталь главная, а какая вспомогательная?
Ты же можешь отфильтровать их в методе IAeccSurface.ExtractContour используя в качестве фильтра AeccSurfaceFilterType.aeccSFMajorContours или AeccSurfaceFilterType.aeccSFMinorContours
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 738
Поскольку IAeccSurface.ExtractContour "вырывает" из поверхности горизонтали, нужно получить контуры без отсоединения от поверхности.
Те горизонтали, которые мы видим на поверхности (при соответствующей настройке стиля поверхности) - скорее всего, просто временная графика, создаваемая при отрисовке объекта поверхности и не являются полноценными объектами базы данных чертежа. Поэтому, вряд ли есть возможность к ним что-то прицепить. При перестроении поверхности, создаются новые объекты отрисовки. Поэтому, даже если представить, что вдруг удастся к ним как-то добраться и что-то прицепить, данные пропадут вместе с объектом при перерисовке поверхности.

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 738
AeccTinSurface.Contours, однако получаю AeccTinSurfaceContour.Count = 0.
Скорее всего, это свойство для получения горизонталей, которые являются определением поверхности. То есть - исходными данными для построения поверхности. Попробуйте добавить горизонталь в поверхность и проверить, изменится ли счетчик.

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

  • ADN OPEN
  • Сообщений: 39
  • Карма: 0
Это как??? Ты получаешь ObjectId для контуров, дальше открываешь их для записи и прописываешь Xdata. Или я чего-то не понял?
Да, он возвращает эти линии, но после этого на чертеже линии исключаются из поверхности, т.е .в поверхности этих линий больше нет, а они лежат отдельно.
Дмитрий, Вы возможно правы. Но поверхность должна как-то хранить свои примитивы, может она создаёт какой-нибудь блок? Мне кажется едва ли поверхность является временной графикой. Т.к. если расчленить поверхность, мы получим вхождение блока, отредактировать просто так блок не получится, т.к. если выполним ADCENTER, то блока там не будет(хотя очевидно он существует).
Тем не менее попробую добавить горизонтали, посмотрю что получится. Но к сожалению в моём случае поверхность всегда строится по точкам. Я уж подумываю если Ваша гипотеза верна, то можно по крайней мере будет извлечь горизонтали, и добавить их заново в поверхность, но уже как линии.

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

  • ADN
  • *
  • Сообщений: 2531
  • Карма: 738
Но поверхность должна как-то хранить свои примитивы, может она создаёт какой-нибудь блок?
Где-то "внутри" может и есть какая-то коллекция для хранения объектов временной графики. Но явного доступа к ним я пока не встречал. Для меня Ваша задача - все равно что пытаться добавить данные к линиям, составляющим штриховку, тоже из того же разряда.
и добавить их заново в поверхность, но уже как линии.
Наверное, это единственный вариант решения. Но это если Вы уверены, что потом поверхность редактировать не будут. Иначе, будут ошибки.

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

  • Administrator
  • *****
  • Сообщений: 13886
  • Карма: 1788
  • Рыцарь ObjectARX
  • Skype: rivilis
Может добавить Xdata к самой AeccTinSurface. И при этом сделать привязку отдельных частей Xdata к уровням (горизонталям)?
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение