以下 ObjectARX 示例由两个函数组成:and。第一个函数将新的 xrecord 添加到字典中,将该字典添加到命名对象字典中,然后将数据添加到 xrecord。该函数打开一个 xrecord,获取其数据列表,并发送要打印的列表。有关完整程序,请参阅 ObjectARX示例\数据库\xrecord_dg目录。createXrecord()listXrecord()listXrecord() void createXrecord() { AcDbDictionary *pNamedobj, *pDict; acdbHostApplicationServices()->workingDatabase() ->getNamedObjectsDictionary(pNamedobj, AcDb::kForWrite); // Check to see if the dictionary we want to create is // already present. If not, then create it and add // it to the named object dictionary. // if (pNamedobj->getAt("ASDK_DICT", (AcDbObject*&) pDict, AcDb::kForWrite) == Acad::eKeyNotFound) { pDict = new AcDbDictionary; AcDbObjectId DictId; pNamedobj->setAt("ASDK_DICT", pDict, DictId); } pNamedobj->close(); // Add a new xrecord to the ASDK_DICT dictionary. // AcDbXrecord *pXrec = new AcDbXrecord; AcDbObjectId xrecObjId; pDict->setAt("XREC1", pXrec, xrecObjId); pDict->close(); // Create a resbuf list to add to the xrecord. // struct resbuf *pHead; ads_point testpt = {1.0, 2.0, 0.0}; pHead = acutBuildList(AcDb::kDxfText, "This is a test Xrecord list", AcDb::kDxfXCoord, testpt, AcDb::kDxfReal, 3.14159, AcDb::kDxfAngle, 3.14159, AcDb::kDxfColor, 1, AcDb::kDxfInt16, 180, 0); // Add the data list to the xrecord. Notice that this // member function takes a reference to resbuf, NOT a // pointer to resbuf, so you must dereference the // pointer before sending it. // pXrec->setFromRbChain(*pHead); acutRelRb(pHead); pXrec->close(); } // Gets the xrecord associated with the key XREC1 and // lists out its contents by passing the resbuf list to the // function printList. // void listXrecord() { AcDbDictionary *pNamedobj; acdbHostApplicationServices()->workingDatabase() ->getNamedObjectsDictionary(pNamedobj, AcDb::kForRead); // Get the dictionary object associated with the key ASDK_DICT. // AcDbDictionary *pDict; pNamedobj->getAt("ASDK_DICT", (AcDbObject*&)pDict, AcDb::kForRead); pNamedobj->close(); // Get the xrecord associated with the key XREC1. // AcDbXrecord *pXrec; pDict->getAt("XREC1", (AcDbObject*&) pXrec, AcDb::kForRead); pDict->close(); struct resbuf *pRbList; pXrec->rbChain(&pRbList); pXrec->close(); printList(pRbList); acutRelRb(pRbList); } |
|Archiver|CAD开发者社区 ( 苏ICP备2022047690号-1 苏公网安备32011402011833)
GMT+8, 2025-1-8 19:41
Powered by Discuz! X3.4
Copyright © 2001-2021, Tencent Cloud.