ObjectARX自定義實體中使用AcDbText文字對齊方式的正確方式
阿新 • • 發佈:2022-03-29
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)) ; }