这是在自定义实体中借用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)) ; }
文章评论