无法将多行文字附加到引线
大家好。我有一个问题.所以现在我正在创建带有注释(Mtext)的领导者。源代码如下。我使用了“pLeader->attattachAnnotation(pMtext->objectID)”,但它不起作用。你能告诉我为什么吗?
关于命令的结果,我还附上了下面的图片。请看。
void
cmdKRLE()
{
ads_point pt0,pt1, pt2;
TCHAR Content;
pt0 = 0;
pt0 = 0;
pt0 = 0;
acedInitGet(1, NULL);
acedGetPoint(pt0, _T("\n Select the first point:"), pt1);
acedInitGet(1, NULL);
acedGetPoint(pt1, _T("\n Select the second point:"), pt2);
acdbUcs2Wcs(pt1, pt1, false);
acdbUcs2Wcs(pt2, pt2, false);
AcDbDatabase* pDb = acdbHostApplicationServices()->workingDatabase();
Acad::ErrorStatus es;
AcDbBlockTableRecordPointer pBtr(pDb->currentSpaceId(), AcDb::kForWrite);
if (pBtr.openStatus() != Acad::eOk) return;
struct resbuf DimScale;
acedGetVar(_T("DIMSCALE"), &DimScale);
acedGetString(1, _T("\n Input content:"), Content);
AcDbObjectPointerpMtext;
pMtext.create();
pMtext->setContents(Content);
pMtext->setLayer(_T("TEXT"));
pMtext->setTextHeight(DimScale.resval.rreal * 3.2);
pMtext->setLocation(asPnt3d(pt2));
if (pt2 >= pt1)
{
pMtext->setAttachment(AcDbMText::kBottomLeft);
}
else
{
pMtext->setAttachment(AcDbMText::kBottomRight);
}
es = pBtr->appendAcDbEntity(pMtext);
if (es != Acad::eOk)
{
acutPrintf(_T("\n Can not add Mtext!"));
return;
}
AcDbObjectPointer pLeader;
pLeader.create();
pLeader->appendVertex(asPnt3d(pt1));
pLeader->appendVertex(asPnt3d(pt2));
es = pBtr->appendAcDbEntity(pLeader);
if (es != Acad::eOk)
{
acutPrintf(_T("\n Can not add Leader!"));
return;
}
pLeader->setLayer(_T("SCALE"));
pLeader->setDimscale(DimScale.resval.rreal);
pLeader->attachAnnotation(pMtext->objectId());
pLeader->evaluateLeader();
}
**** Hidden Message ***** 嗨,您应该检查每个ARX调用的错误状态,当事情变糟时,它可能会告诉它。exampleif (auto e = pMtext->setContents(...); e != eOk)。
acutPrintf(_T(“\nError @ pMtext->setContents = %ls: ”), acadErrorStatusText(e));。
另外,我喜欢在创建实体后使用设置数据库默认值,这可能不是这里的错误,但它是导致很多问题的原因AcDbObjectPointerpMtext;。
pMtext.create();。
pMtext->setDatabaseDefaults(pDb);。
。
感谢您的回复。我得到了这个.让我用这个再次检查我的代码。
页:
[1]