Ссылки Монопольного использования (Ownership References)
Если Вы создаете вашу собственную иерархию монопольных использований, Вы должны установить подключение{*связь*} между владельцем и находящимся в собственности объектом. Объект не может иметь множественных владельцев.
Создавать подключение{*связь*} монопольного использования
1 Определяют, что владелец имеет объект.
2 Определяют, что объект принадлежит владельцу.
AcDbObject протокол всегда определяет связь{*ссылку*} от владельца к находящемуся в собственности объекту и обратной связи{*ссылке*} от объекта до его владельца.
Следующий код иллюстрирует установку двухсторонней связи{*ссылки*} монопольных использований между владельцем и ее содержанием:
// Uses the OwnerDemo class defined in the next example
// (see "ObjectARX Example," below).
//
// Sets pOwner to be the owner of pOwned.
//
void
makeOwner(OwnerDemo* pOwner, AcDbObject* pOwned)
{
// First let pOwner know it is the owner. This
// establishes ownership for filing persistence.
//
pOwner->setIdData(pOwned->ojectId());
// Now set up the backpointer so that the owned
// object knows who its owner is.
//
pOwned->setOwnerId(pOwner->objectId());
}
Обычно используемые члены контейнерного класса устанавливают двухстороннюю связь{*ссылку*} автоматически. Например, следующий функциональный запрос устанавливает блочный отчет{*запись*} таблицы как владелец объекта, и также прибавляет объект к блочному списку отчета{*записи*} таблицы находящихся в собственности объектов.
BlockTableRecord- > appendAcDbEntity (...);
Точно так же AcDbDictionary:: setAt () функция и AcDbSymbolTable:: добавляется () функция устанавливает двухсторонние связи{*ссылки*} между владельцем и ее объектами в одном шаге.
Если Вы непосредственно управляете объектами, использующими entmod () или entmake () в AutoLISP, Вы сначала прибавляете находящийся в собственности объект к базе данных, используя entmake (), то присоединяете ее ads_name или название{*имя*} объекта с соответствующим кодом группы DXF в представлении объекта владельца.