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



         

Открытие и Закрытие Объектов Базы данных


Каждый объект AcDbObject может быть упомянут тремя различными способами:

  • его маркером{*дескриптором*}
  • его объектом ID
  • указателем образца C++
  • Когда AutoCAD не выполняется, рисунок сохранен в файловой системе.

    Объекты, содержащиеся в DWG файле идентифицированы их маркерами{*дескрипторами*}.

    После того, как рисунок открыт, информация рисунка доступна через объект AcDbDatabase. Каждый объект в базе данных имеет объект ID, который сохраняется в течение текущего сеанса редактирования, от создания до стирания AcDbDatabase, в котором объект постоянно находится. Открытые функции берут объект ID как параметр и возвращают указатель на объект AcDbObject. Этот указатель правилен, пока объект не закрыт, как показано в следующем рисунке.

    Вы можете открывать объект, используя acdbOpenObject ():

    Acad::ErrorStatus

    AcDbDatabase::acdbOpenObject(AcDbObject*& obj,

    AcDbObjectId id,

    AcDb::OpenMode mode,

    Adesk::Boolean

    openErasedObject =

    Adesk::kFalse);

    Вы можете отображать маркер(дескриптор) к объекту ID, используя эту функцию:

    Acad::ErrorStatus

    getAcDbObjectId(AcDbObjectId& retId,

    Adesk::Boolean createIfNotFound,

    const AcDbHandle& objHandle,

    Adesk::UInt32 xRefId=0);

    Вы можете также открывать объект и затем запрашивать его маркер(дескриптор):

    AcDbObject* pObject;

    AcDbHandle handle;

    pObject->getAcDbHandle(handle);

    ОБРАТИТЕ ВНИМАНИЕ Всякий раз, когда объект базы данных открыт, это должно быть закрыто в самой ранней возможной возможности. Вы можете использовать AcDbObject:: близко () функция, чтобы закрыть объект базы данных.

    Ads_name эквивалентен

    AcDbObjectId. AcDb библиотека обеспечивает две автономных функции, которые позволяют Вам транслировать между AcDbObjectId и ads_name:

    // Returns an ads_name for a given object ID.

    //

    acdbGetAdsName(ads_name& objName,

    AcDbObjectId objId);

    // Returns an object ID for a given ads_name.

    //

    acdbGetObjectId(AcDbObjectId& objId,




    Содержание  Назад  Вперед