SubEntity на непечатаемом слое

Автор Тема: SubEntity на непечатаемом слое  (Прочитано 3936 раз)

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

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

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

  • ADN Club
  • Сообщений: 41
  • Карма: 4
  • Skype: andriy.dziubyna
Вопрос о печати SubEntity.

Есть графический объект унаследованный от AcDbEntity. В нем реализовано множество SubEntity. Эти SubEntity наносятся на разные слои, со своими настройками. При рисовании в методе subWorldDraw (AcGiWorldDraw *mode) для разных элементов задаю слои mode->subEntityTraits().setLayer(LayerId).

Если изменять настройки слоя (видимость, цвет, вес линии, тип линии) все работает хорошо и меняется на чертеже.

Но если отключить печатаемость слоя то элементы которые наносятся на этот слой все равно идут на печать. Проверял в Civil3D с его SubEntity трассы все работает хорошо.
В чем может быть проблема?

Есть конечно флаг mode->context()->isPlotGeneration(). По которому видно что проходит рисование для печать, но что то не очень хочеться влазить в настройки слоя и смотреть идет ли он на печать и в соответствии рисовать или не рисовать SubEntity  :-\

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: SubEntity на непечатаемом слое
« Ответ #1 : 20-03-2017, 13:42:29 »
Вполне возможно, что это баг. Но чтобы воспроизвести его тебе придётся подготовить для меня тестовый проект, в котором это воспроизводится.
Скорее всего тебе таки придётся анализировать слой, но возможно Autodesk'овцы подскажут другое решение.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • ADN Club
  • Сообщений: 41
  • Карма: 4
  • Skype: andriy.dziubyna
Re: SubEntity на непечатаемом слое
« Ответ #2 : 20-03-2017, 15:05:03 »
Добавляю тестовый проект.

Взял за основу пример по SubEntity с ObjectARX. Там реализовано графический объект AsdkSliderCrank с нескольких SubEntity.

При создании объекта добавил создание трех слоев для SubEntities (и добавил их сохранение в объект).
Непечатаемость программно уже не задавал, это через менеджер слоев можно сделать, там же попробовать отключить видимость и увидеть как исчезают элементы Entity и какой слой за какую часть отвечает.

Пример настроен под AutoCAD 2015.
Спасибо!

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: SubEntity на непечатаемом слое
« Ответ #3 : 20-03-2017, 15:46:36 »
Я сделал аналогичный пример для AutoCAD 2017 (очевидно, что под предыдущие версии ничего править не будут). Отправлю его в Autodesk. Когда будет какая-нибудь информация от них - сообщу.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: SubEntity на непечатаемом слое
« Ответ #4 : 20-03-2017, 17:04:44 »
Смог у себя воспроизвести это поведение.

Отправил запрос в ADN DevHelp.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение

Отмечено как Решение Александр Ривилис 22-03-2017, 15:22:15

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

  • Administrator
  • *****
  • Сообщений: 13829
  • Карма: 1784
  • Рыцарь ObjectARX
  • Skype: rivilis
Re: SubEntity на непечатаемом слое
« Ответ #5 : 22-03-2017, 13:59:21 »
Получил ответ из Autodesk. Такое "поведение" известно и уже давно отправлен запрос на его изменение. Так что единственный обход путь - это анализировать AcGiContext::isPlotGeneration() и AcDbLayerTableRecord::isPlottable.
Не забывайте про правильное Форматирование кода на форуме
Создание и добавление Autodesk Screencast видео в сообщение на форуме
Если Вы задали вопрос и на форуме появился правильный ответ, то не забудьте про кнопку Решение