I cannot add XData to MText (to Text it works)

I cannot add XData to MText (to Text it works)

majklha
Advocate Advocate
387 Views
1 Reply
Message 1 of 2

I cannot add XData to MText (to Text it works)

majklha
Advocate
Advocate

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);
	}
}

 

0 Likes
Accepted solutions (1)
388 Views
1 Reply
Reply (1)
Message 2 of 2

majklha
Advocate
Advocate
Accepted solution

The problem was not in my code but in Autocad Expres Utility, which cannot read XData from MText. I cannot imagine reason - perhabs error in Express code.

I have checked XData with this utility. If I checked it with my own code, all is right.

0 Likes