ObjectARX, AutoCAD. Среда программирования библиотеки C++

       

DeepClone ()


AcDbHardPointerId проблема ссылки, упомянутая выше не будет происходить в этом случае, потому что deepClone () не следует За AcDbHardPointerId ссылками для клонирования.

Приложение может создавать проблемы в течение deepClone () если это пытается добавлять новые примитивы, в то время как AcDbObjectIds - все еще в состоянии непрерывного изменения. Поэтому, никогда не пытайтесь вызывать AcDbBlockTableRecord:: appendAcDbEntity () на любом клонированном, определяемом пользователем AcDbBlockTableRecords до окончания AcEditorReactor:: endDeepClone () уведомление далось. Напротив, Вы можете безопасно добавлять к пространству модели и пространству листа AcDbBlockTableRecords, потому что они никогда не клонированы в deepClone ().

Никогда попытка добавлять вершину к клонированный AcDb2dPolylines, AcDb3dPolylines, AcDbPolyFaceMeshes, или AcDbPolygonMeshes, приписывает клонированному AcDbBlockReferences, или вхождения в клонированные словари, до окончания AcEditorReactor:: endDeepClone () уведомление.

Если Вы создали примитивы в течение клонирования, то Вы будете должны сохранить их в памяти, наряду с ID их будущего владельца, до окончания AcEditorReactor:: endDeepClone () уведомлением. Они могут быть безопасно добавлены в конец, как только глубокий клон закончен.



Содержание раздела