Тема: AcDbObjectReactor::copied

Метод AcDbObjectReactor::copied(AcDbObject* dbObj, AcDbObject* newObj) вызывается в момент, когда нажимается Ctrl+C. Подскажите, пожалуйста, как получить объект, который получился в результате нажатия Ctrl+V? И как можно отследить, был ли вообще вставлен новый объект?

Re: AcDbObjectReactor::copied

Командный реактор на команду PASTECLIP.

Re: AcDbObjectReactor::copied

А как же получить новый AcDbEntity, который образовался в результате вставки? И подскажите, пожалуйста, как написать командный реактор с помощью ObjectArx?

Re: AcDbObjectReactor::copied

> Юлия

AcEditorReactor::commandWillStart
AcEditorReactor::commandEnded
AcDbDatabaseReactor::objectAppended

Примеры из ObjectARX SDK:
samples\reactors\dbreact_dg
samples\editor\mfcsamps\modeless

Re: AcDbObjectReactor::copied

Спасибо. Вроде получилось. Но возник еще вопрос. Предположим были скопированы два AcDbEntity, объединенных в группу, а при вставке метод AcDbDatabaseReactor::objectAppended вызывается семь раз. Не подскажите, откуда взялись пять лишних раз и для каких объектов они вызываются?

Re: AcDbObjectReactor::copied

Могу предположить, что это объекты (а не примитивы): слой, группа, тип линии и т.д. Чтобы отобрать только примитивы необходимо проверить AcDbEntity::cast(<указатель на добавленный объект>) на NULL. То что не NULL и будут добавленные примитивы.

Re: AcDbObjectReactor::copied

В том то и дело, что все семь примитивов проходят эту проверку...

Re: AcDbObjectReactor::copied

> Юлия
Создается и вставляется блок. Поэтому добавляются еще примитивы:
AcDbBlockBegin
AcDbBlockEnd
AcDbBlockReference
Внутрь блока сами скопированные примитивы, а после вставки еще раз эти же примитивы. Так что как раз 7 штук. Для того чтобы понять какие именно тебя интересуют нужно сравнить их blockId() с acdbCurDwg()->currentSpaceId(). Остальные в блоке, который потом удаляется. Для эксперимента я нарисовал два отрезка и выполнил Ctrl+C и Ctrl-V. Вот результат Ctrl+V:

Command: _pasteclip
<DB REACTOR: 7EF7A0F0> : <SysVar Will Change: CTABLESTYLE>
<DB REACTOR: 7EF7A0F0> : <SysVar Changed    : CTABLESTYLE>
<DB REACTOR: 7EF7A0F0> : <Opened For Modify : AcDbLayout, 10>
<DB REACTOR: 7EF7A0F0> : <Modified          : AcDbLayout, 10>
<DB REACTOR: 7EF7A0F0> : <Modified          : AcDbBlockTableRecord, 2>
<DB REACTOR: 7EF7A0F0> : <Modified          : AcDbBlockTableRecord, D>
<DB REACTOR: 7EF59630> : <Opened For Modify : AcDbBlockBegin, F4>
<DB REACTOR: 7EF59630> : <Appended          : AcDbBlockBegin, F4>
<DB REACTOR: 7EF59630> : <Modified          : AcDbBlockBegin, F4>
<DB REACTOR: 7EF59630> : <Modified          : AcDbBlockBegin, F4>
<DB REACTOR: 7EF59630> : <Opened For Modify : AcDbBlockEnd, F5>
<DB REACTOR: 7EF59630> : <Appended          : AcDbBlockEnd, F5>
<DB REACTOR: 7EF59630> : <Modified          : AcDbBlockEnd, F5>
<DB REACTOR: 7EF59630> : <Modified          : AcDbBlockEnd, F5>
<DB REACTOR: 7EF59630> : <Appended          : AcDbBlockTableRecord, F1>
<DB REACTOR: 7EF59630> : <Modified          : AcDbBlockTableRecord, F1>
<DB REACTOR: 7EF59630> : <Appended          : AcDbLine, F2>
<DB REACTOR: 7EF59630> : <Modified          : AcDbLine, F2>
<DB REACTOR: 7EF59630> : <Appended          : AcDbLine, F3>
<DB REACTOR: 7EF59630> : <Modified          : AcDbLine, F3>
<DB REACTOR: 7EF59630> : <Opened For Modify : AcDbBlockTableRecord, F1>
<DB REACTOR: 7EF59630> : <Modified          : AcDbBlockTableRecord, F1>
<DB REACTOR: 7EF59630> : <Opened For Modify : AcDbLine, F2>
<DB REACTOR: 7EF59630> : <Modified          : AcDbLine, F2>
<DB REACTOR: 7EF59630> : <Opened For Modify : AcDbLine, F3>
<DB REACTOR: 7EF59630> : <Modified          : AcDbLine, F3>
<DB REACTOR: 7EF59630> : <Opened For Modify : AcDbBlockTableRecord, F1>
<DB REACTOR: 7EF59630> : <Modified          : AcDbBlockTableRecord, F1> Specify insertion point:
<DB REACTOR: 7EF59630> : <Opened For Modify : AcDbBlockTableRecord, 1F>
<DB REACTOR: 7EF59630> : <Modified          : AcDbBlockTableRecord, 1F>
<DB REACTOR: 7EF59630> : <Opened For Modify : AcDbBlockTableRecord, F1>
<DB REACTOR: 7EF59630> : <Modified          : AcDbBlockTableRecord, F1>
<DB REACTOR: 7EF59630> : <Opened For Modify : AcDbBlockReference, F6>
<DB REACTOR: 7EF59630> : <Appended          : AcDbBlockReference, F6>
<DB REACTOR: 7EF59630> : <Modified          : AcDbBlockReference, F6>
<DB REACTOR: 7EF59630> : <Appended          : AcDbLine, F7>
<DB REACTOR: 7EF59630> : <Modified          : AcDbLine, F7>
<DB REACTOR: 7EF59630> : <Appended          : AcDbLine, F8>
<DB REACTOR: 7EF59630> : <Modified          : AcDbLine, F8>
<DB REACTOR: 7EF59630> : <Opened For Modify : AcDbLine, F7>
<DB REACTOR: 7EF59630> : <Modified          : AcDbLine, F7>
<DB REACTOR: 7EF59630> : <Opened For Modify : AcDbLine, F8>
<DB REACTOR: 7EF59630> : <Modified          : AcDbLine, F8>
<DB REACTOR: 7EF59630> : <Opened For Modify : AcDbBlockReference, F6>
<DB REACTOR: 7EF59630> : <Erased            : AcDbBlockReference, F6>
<DB REACTOR: 7EF59630> : <Opened For Modify : AcDbBlockTableRecord, F1>
<DB REACTOR: 7EF59630> : <Erased            : AcDbBlockTableRecord, F1>