Тема: Отрисовка объекта в нескольких слоях

Есть такая фича что в worldDraw объект можно приметивами нарисовать в разных слоях. (Котлеты отдельно, мухи отдельно).
-------------------------------------------------
mode->geometry().(рисуем)
curLayer = mode->subEntityTraits().layerId();
mode->subEntityTraits().setLayer(otherLayer);
mode->geometry().(рисуем в другом слое)
mode->subEntityTraits().setLayer(curLayer);
-------------------------------------------------
Проблема в том, что объекту можно сделать setLayer() - только один curLayer. А рисуется он в разных слоях. Соотвественно при копировании с плана на план такого объекта - если в destination чертеже нет нужного слоя otherLayer - то его надо сделать.
otherLayer = getLayer("LAYER_NAME"); //Если нет, то создаем и возвращаем id
Опять же в рамках одного чертежа все проканывает. Т.е. если мы ставим на план первый объект и "LAYER_NAME" отсутсвует, то все срабатывает (создается и части объекта отрисовываются в нем).
При копировании с плана на план (Copy/Paste) летит ошибка автокадовская при попытке нарисовать объект. Т.е. getLayer("LAYER_NAME") - вроде отрабатывает успешно - создает слой, метод worldDraw завершается успешно, но при отрисовке - на экране отрисовываются части объекта curLayer, как только должна нарисоваться часть из "LAYER_NAME" - из нутрей акада летит ошибка.
Если предварительно создать в destination чертеже слой "LAYER_NAME" - то все ОК.
Кто посоветует как сделать чтоб за объектом при deepClone вытягивались все слои из чертежа в чертеж, которые этому объекту нужны?

Re: Отрисовка объекта в нескольких слоях

Все решил проблему рекомендованным путем в хелпе.
Сделал у объекта массив AcDbHardPointerId-ов тех слоев что он юзает.
Теперь при копировании с плана на план все необходимое барахло перетягивается за объектом.

Re: Отрисовка объекта в нескольких слоях

А в чем глубинный смысл создавать один примитив на нескольких слоях? Чтобы управлять примитивом посредством модификации свойств слоя вместо того, чтобы написать свои команды изменения свойств примитива? wink
IMHO это идет сильно вразрез с идеологией AutoCAD: один примитив - один слой.

Re: Отрисовка объекта в нескольких слоях

> KonstantinM
Вовремя, нам как раз сейчас нужно решать подобную задачу smile

> Александр Ривилис
Например у нас осевая линия должна лежать на чётко определённом слое. Поэтому даже многие блоки рисуются на нескольких слоях.

Re: Отрисовка объекта в нескольких слоях

> archimag
Блоки - это что? Имеются в виду acad-овские блоки или бетонные? Если acad-овские, то они запросто могут содержать примитивы находящиеся на разных слоях. А вот зачем бетонные блок разносить на разные слои - не очень понятно. Наверное чтобы марка была на другом слое? Может быть, может быть...

Re: Отрисовка объекта в нескольких слоях

> Александр Ривилис
Блоки имеются ввиду акадовские smile
Нам сейчас нужен линейный объект - труба. У трубы рисуется две границы и осевая. Осевая должна лежать на отдельном слое. Отсюда и возникает необходимость рисовать часть объекта на одном слое, а часть на другом...

Re: Отрисовка объекта в нескольких слоях

Спасибо за толковое объяснение! smile

Re: Отрисовка объекта в нескольких слоях

:) Именно для трубы и мне надо было оно свойство :)