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

ADN Club => ObjectARX => Тема начата: Dziubyna от 20-03-2017, 10:31:01

Название: SubEntity на непечатаемом слое
Отправлено: Dziubyna от 20-03-2017, 10:31:01
Вопрос о печати SubEntity.

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

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

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

Есть конечно флаг mode->context()->isPlotGeneration(). По которому видно что проходит рисование для печать, но что то не очень хочеться влазить в настройки слоя и смотреть идет ли он на печать и в соответствии рисовать или не рисовать SubEntity  :-\
Название: Re: SubEntity на непечатаемом слое
Отправлено: Александр Ривилис от 20-03-2017, 13:42:29
Вполне возможно, что это баг. Но чтобы воспроизвести его тебе придётся подготовить для меня тестовый проект, в котором это воспроизводится.
Скорее всего тебе таки придётся анализировать слой, но возможно Autodesk'овцы подскажут другое решение.
Название: Re: SubEntity на непечатаемом слое
Отправлено: Dziubyna от 20-03-2017, 15:05:03
Добавляю тестовый проект.

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

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

Пример настроен под AutoCAD 2015.
Спасибо!
Название: Re: SubEntity на непечатаемом слое
Отправлено: Александр Ривилис от 20-03-2017, 15:46:36
Я сделал аналогичный пример для AutoCAD 2017 (очевидно, что под предыдущие версии ничего править не будут). Отправлю его в Autodesk. Когда будет какая-нибудь информация от них - сообщу.
Название: Re: SubEntity на непечатаемом слое
Отправлено: Александр Ривилис от 20-03-2017, 17:04:44
Смог у себя воспроизвести это поведение.

Отправил запрос в ADN DevHelp.
Название: Re: SubEntity на непечатаемом слое
Отправлено: Александр Ривилис от 22-03-2017, 13:59:21
Получил ответ из Autodesk. Такое "поведение" известно и уже давно отправлен запрос на его изменение. Так что единственный обход путь - это анализировать AcGiContext::isPlotGeneration() и AcDbLayerTableRecord::isPlottable.