Тема: Наследование от AcDbBlockReference

Этот вопрос уже задавался и не получил ответа, но, надеюсь, на сей раз кто-нибудь ответит.
Наследую от AcDbBlockReference, создаю визардом класс MyBlockReference наследник AcDbBlockReference и не переопределяю НИ ОДНОГО метода...
2) Добавляю в модалспейс MyBlockReference
3) Добавляется... рисуется... ведет себя в точности как AcDbBlockReference
4) НО... Если сделать Copy объекта и затем Paste, то объект вставляется в точку с вектором 2v от начала координат, будучи вставляем в точку v.
Как с этим бороться? Помогите, пожалуйста!

Re: Наследование от AcDbBlockReference

Ж:) Задавал этот вопрос я.
Ответа не получил - разбираться с этой херней меня запарило - потратил больше дня.
Сам написал свой MyBlockReference менее чем за пол дня. Надо сделать AcDbHardPointId blkId и AcGeMatrix3d xformIn.
В методе worldDraw - пробегаешься по объектам блока - делаешь getTransformedCopy( xformIn ) - для копии делаешь worldDraw и убиваешь копию. И все работает и все копируются как надо.
А примера как Autodesk сделал AcDbBlockReference - исходники НИГДЕ не нашел. И че они там наделали остается лишь гадать. У них похоже стоит проверка где-то (pEnt->isA() == AcDbBlockReference::desc()) {} - после этого унаследовашись от AcDbBlockReference - эта проверка не срабатывает и... слезы... слезы...

Re: Наследование от AcDbBlockReference

> Kostt
Дело в том, что для AcDbBlockReference никогда не вызывается его родной метод transformBy (который содержит баг), а для производных от него классов вызвается всегда. Теоретически нужно корректно переопределить этот метод в своем классе без использования метода родительского класса.

Re: Наследование от AcDbBlockReference

> Александр Ривилис
Ага, мне пришлось это сделать для AcDbPoint. А ещё, когда создаёшь производный класс от AcDbCircle, то grip points начинают работать неправильно sad Autodesk на мыло!!!

Re: Наследование от AcDbBlockReference

> Александр Ривилис
Шоб метод transformBy у AcDbBlockReference не звался - они и впарили - (pEnt->isA() == AcDbBlockReference::desc())
Вот вопрос у меня в том и состоял, а какой метод дергали они(Autodesk) вместо AcDbBlockReference::transformBy? Если они это сделали, то на это были причины - и можно было в хелпе написать т.к. эта фенька идет с 2002-го акада...
Точно на мыло... (тоже вспомнил что grip-ы в окружности работали через жопу)

Re: Наследование от AcDbBlockReference

Попробовал следующую простенькую конструкцию, объект ведет себя покорректнее, но все равно косячит :(
Acad::ErrorStatus elsyBlockReference::transformBy(const AcGeMatrix3d &xform){
    assertWriteEnabled();
    setBlockTransform(xform);
    return Acad::eOk;}

Re: Наследование от AcDbBlockReference

> Kostt
Простенькой конструкцией здесь не обойтись. Нужно переписать полностью метод transformBy()...

Re: Наследование от AcDbBlockReference

Для этого необходимо написать комбинирование текущей матрицы трансформации с входной. Если у кого есть такой код, убедительная просьба выслать