1. 程式人生 > 其它 >ObjectARX自定義實體中使用AcDbText文字對齊方式的正確方式

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