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


         

function gets the xrecord associated


pXrec->close();

acutRelRb(head);

}

// The listXrecord() function gets the xrecord associated with the

// key "ASDK_XREC1" and lists out its contents by passing the resbuf

// list to the function printList().

//

void

listXrecord()

{

AcDbObject *pObj;

AcDbXrecord *pXrec;

AcDbObjectId dictObjId;

AcDbDictionary *pDict;

pObj = selectObject(AcDb::kForRead);

if (pObj == NULL) {

return;

}

// Get the object ID of the object’s extension dictionary.

//

dictObjId = pObj->extensionDictionary();

pObj->close();

// Open the extension dictionary and get the xrecord

// associated with the key ASDK_XREC1.

//

acdbOpenObject(pDict, dictObjId, AcDb::kForRead);

pDict->getAt("ASDK_XREC1", (AcDbObject*&)pXrec,

AcDb::kForRead);

pDict->close();

// Get the xrecord’s data list and then close the xrecord.

//

struct resbuf *pRbList;

pXrec->rbChain(&pRbList);

pXrec->close();

printList(pRbList);

acutRelRb(pRbList);

}

 

Глобальный Функциональный Пример

Следующий пример использует глобальные функции ObjectARX, чтобы создать xrecord и прибавлять это к словарю, связанному с клавишей ASDK_REC{*ключом*}.

int

createXrecord()

{

struct resbuf *pXrec, *pEnt, *pDict, *pTemp, *pTemp2;

ads_point dummy, testpt = {1.0, 2.0, 0.0};

ads_name xrecname, ename, extDict = {0L, 0L};

// Have the user select an entity. Then get its data.

//

if (acedEntSel("\nselect entity: ", ename, dummy) != RTNORM)

{

acutPrintf("\nNothing selected");

acedRetVoid();

return RTNORM;

}

pEnt = acdbEntGet(ename);

// Now check to see if the entity already has an

// extension dictionary.

//

for (pTemp = pEnt; pTemp->rbnext != NULL; pTemp = pTemp->rbnext)

{

if (pTemp->restype == 102) {

if (!strcmp("{ACAD_XDICTIONARY", pTemp->resval.rstring))

{

ads_name_set(pTemp->rbnext->resval.rlname, extDict);

break;

}

}

}

// If no extension dictionary exists, add one.

//

if (extDict[0] == 0L) {


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