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)) ;
}
posted @   edata  阅读(1067)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
点击右上角即可分享
微信分享提示

目录导航