ObjectARX自定义实体中使用AcDbText文字对齐方式的正确方式
ObjectARX自定义实体中使用文字对齐方式的正确方式
这是在自定义实体中借用AcDbText来显示文字的时候,设置对齐方式可能不生效的解决方式。
关键的两个语句,应该同样适用于jig,后台打开数据库生成文字,块定义生成文字。
效果展示
关键代码
//-----------------------------------------------------------------------------
//----- AcDbEntity protocols
Adesk::Boolean custEntity::subWorldDraw (AcGiWorldDraw *mode) {
assertReadEnabled () ;
AcDbObjectPointer<AcDbText> pText;
Acad::ErrorStatus es= pText.create();
if (Acad::eOk == es)
{
//setDatabaseDefaults() 非常关键的一句 来自 azj4win
pText->setDatabaseDefaults();
pText->setColorIndex(1);
pText->setTextString(_T("呵呵"));
pText->setHorizontalMode(AcDb::kTextCenter);
pText->setVerticalMode(AcDb::kTextVertMid);
pText->setAlignmentPoint(m_StartPoint*0.5+m_EndPoint.asVector()*0.5);
pText->setHeight(2.5);
//adjustAlignment(pDb) 关键2
pText->adjustAlignment(curDoc()->database());
//不要使用这种方式,否则颜色之类的属性无法显示,来自651864346的问题
//pText->worldDraw(mode);
//正常用法
mode->geometry().draw(pText);
}
return (AcDbEntity::subWorldDraw (mode)) ;
}