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

       

Ссылки Монопольного использования (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 в представлении объекта владельца.



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