Message 1 of 2
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
I have code to add XData to MText (AcDbMText). It does not work. If I modify the same code for Text (AcDbText), it works properly.
bool CMajXRecord::AddXData(AcDbEntity *pEntity, const __int32 iValue, int iXdTyp /*= AcDb::kDxfXdInteger32*/)
{
struct resbuf *pRb, *pTemp;
pRb = pEntity->xData(_MAJU_XREC_NAME);
if (pRb != NULL)
for (pTemp = pRb; pTemp->rbnext != NULL; pTemp = pTemp->rbnext);
else
{
pRb = acutNewRb(AcDb::kDxfRegAppName);
pTemp = pRb;
const size_t nSize = _tcslen(_MAJU_XREC_NAME) + 1;
pTemp->resval.rstring = (TCHAR *) malloc(nSize * sizeof(TCHAR));
errno_t err = 0;
if ((err = _tcscpy_s(pTemp->resval.rstring, nSize, _MAJU_XREC_NAME)) != 0)
{
acutPrintf(L"\nChyba při vytváření položky XData - nelze vytvořit řetězec, errno: %i", err);
return false;
}
}
pTemp->rbnext = acutNewRb(iXdTyp);
pTemp = pTemp->rbnext;
pTemp->resval.rlong = iValue;
bool bRes = pEntity->setXData(pRb) == Acad::eOk;
acutRelRb(pRb);
return bRes;
}
void Main()
{
AcDbBlockTableRecord *pBlockTableRecord = CMajEntity::GetModelTableRecord();
try {
int a = 10000111;
int b = 10000222;
acdbRegApp(_MAJU_XREC_NAME);
AcDbObjectId idStylTxVelky = CMajSet::GetStdTXTStyleId(L"MJ_TXT_VELKY");
CMajEntity::CmEnText defObj({ 0,0,0 }, L"Text", acdbCurDwg()->layerZero(), NULL, 2);
AcDbMText *pText = NULL;
CMajEntity::MakeEntity(pText, &defObj, pBlockTableRecord); //this function make Text or MText and return opened pText
bool bb = pText->isModified(); //true
CMajXRecord::AddXData(pText, a);
CMajXRecord::AddXData(pText, b);
pText->close();
pBlockTableRecord->close();
}
catch (CMajException &except)
{
pBlockTableRecord->close();
CMajException::ZobrazMsgBox(except);
}
}
Solved! Go to Solution.