....
//шаблонная функция для записи в xRecord
template<typename T>
bool xRecordXdataHelper::setXrecordParameter(const AcDbObjectId &objectId, const ACHAR * paramerName, const int ¶meterType, const T ¶meter)
{
//create or get extension dictionary
AcDbObjectId dictId;
{
AcDbObjectPointer<AcDbObject> pobj(objectId, AcDb::kForWrite);
if (pobj.openStatus() != Acad::eOk) return false;
pobj->createExtensionDictionary();
dictId = pobj->extensionDictionary();
}
//Add xrecord to extension dictionary
AcDbObjectId xrecid;
AcDbXrecord * pXrec;
{
AcDbObjectPointer<AcDbDictionary> pDict(dictId, AcDb::kForWrite);
if (pDict.openStatus() != Acad::eOk) return false;
pXrec = new AcDbXrecord;
pDict->setAt(paramerName, pXrec, xrecid);
}
//add resbuf to xrecord
struct resbuf * head = NULL;
head = acutBuildList(parameterType, parameter, 0);
pXrec->setFromRbChain(*head);
pXrec->close();
acutRelRb(head);
return true;
}
.....
//сохраняем objectId в xRecord
bool MleaderController::setObjectId(const AcDbObjectId &MLeaderId, const AcDbObjectId &objId){
ads_name adsName;
acdbGetAdsName(adsName, objId);
return setXrecordParameter(MLeaderId, MLeaderID, AcDb::kDxfHardPointerId, adsName);
}
.....