找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 13072|回复: 77

[每日一码] (1)AcDbText实体转换成AcDbMtext

  [复制链接]

已领礼包: 145个

财富等级: 日进斗金

发表于 2014-12-4 23:25:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
There is no API to convert an AcDbText entity to an AcDbMText entity. Also as
mentioned in the help files the AcDbMText::setFromTextEntity() function is deprecated.
So, we will have to query all the AcDbText's properties and map them to the
AcDbMtext entity ourselves.

There are two properties that we need to take special care of while mapping.

Firstly, the AcDbText has more justifications possible than the AcDbMText, so
we need to map all the AcDbText justifications to the AcDbMText justifications
such that justification is as close as possible to AcDbText's justification.
The only case where the AcDbMText entity does not match the AcDbText entity
entirely is when the text entity has the "Fit" option. The Mtext does not have
this option.

Secondly, we need to calculate the location(insertion) point for the Mtext object.
The AcDbText as two control points, namely position and alignment point. Depending
upon the vertical and horizontal modes either the position or the alignment
point is used as insertion point. It is a bit confusing to get the required
insertion point for the Mtext from these points. Instead we can create the Mtext
entity at origin and then get the maximum point of the bounding box of both
the Mtext and Text. Using these maximum points we can move the Mtext entity
such that it appears exactly over the text entity.

The attached VC++ ARX project creates an AcDbMText entity which copies all properties
from a selected AcDbText entity. Also, the test drawing "test.dwg" in the attachment
contains the AcDbText entities which can be used to test for all the text justifications.
The text string indicates what justification is used on the text entity.


游客,如果您要查看本帖隐藏内容请回复

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2014-12-5 00:02:02 | 显示全部楼层
多谢老大,沙发
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 2476个

财富等级: 金玉满堂

发表于 2014-12-5 10:59:12 | 显示全部楼层
看看ARX代码有多难懂....
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2014-12-5 13:31:10 | 显示全部楼层
学习学习!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2014-12-5 16:19:47 | 显示全部楼层
pMText->mirrorInX(pText->isMirroredInX());
pMText->mirrorInY(pText->isMirroredInY());
pMText->setOblique(pText->oblique());
pMText->setThickness(pText->thickness());
上述方法在2004以上版本已经没有了,没找到替代方法!

点评

没有就先注释掉吧。这代码都是早期版本下写的,对齐设置等还是值得推荐的。  详情 回复 发表于 2014-12-5 18:50
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-12-5 16:57:28 来自手机 | 显示全部楼层
牢固 发表于 2014-12-5 16:19
pMText->mirrorInX(pText->isMirroredInX());
pMText->mirrorInY(pText->isMirroredInY());
pMText->setO ...

2004以上mtext还有这些属性吗?
thickness是不是统一到Entity了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

 楼主| 发表于 2014-12-5 18:50:03 | 显示全部楼层
牢固 发表于 2014-12-5 16:19
pMText->mirrorInX(pText->isMirroredInX());
pMText->mirrorInY(pText->isMirroredInY());
pMText->setO ...

没有就先注释掉吧。这代码都是早期版本下写的,对齐设置等还是值得推荐的。

点评

Direction属性好像是控制文字方向?  详情 回复 发表于 2014-12-5 19:20
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2014-12-5 18:57:32 来自手机 | 显示全部楼层
XDSoft 发表于 2014-12-5 18:50
没有就先注释掉吧。这代码都是早期版本下写的,对齐设置等还是值得推荐的。

现在都是格式符控制,没有整体属性了吧

点评

对于有对齐点设置的TEXT实体,比如MC对齐,用这个代码转换后的MTEXT和普通的MTEXT里面设置对齐有些不同,看图。 下图是普通TEXT实体用(xdrx_text->mtext e)转换后编辑成两行的样子,MTEXT实体有对齐的夹点。 [at  详情 回复 发表于 2014-12-5 20:08
你说的整体属性是指什么?  详情 回复 发表于 2014-12-5 19:57
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2014-12-5 19:20:12 | 显示全部楼层
XDSoft 发表于 2014-12-5 18:50
没有就先注释掉吧。这代码都是早期版本下写的,对齐设置等还是值得推荐的。

Direction属性好像是控制文字方向?

点评

从上往下或者从下往上,图中的箭头。 [attachimg]11904[/attachimg]  详情 回复 发表于 2014-12-5 19:53
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

 楼主| 发表于 2014-12-5 19:53:39 | 显示全部楼层
牢固 发表于 2014-12-5 19:20
Direction属性好像是控制文字方向?

从上往下或者从下往上,图中的箭头。

QQ截图20141205195301.png

点评

这个是FlowDirection属性!Direction方向值就是祖玛11的值,  详情 回复 发表于 2014-12-5 20:02
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 3532个

财富等级: 富可敌国

发表于 2014-12-5 19:56:51 | 显示全部楼层
学习一下!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

 楼主| 发表于 2014-12-5 19:57:13 | 显示全部楼层
st788796 发表于 2014-12-5 18:57
现在都是格式符控制,没有整体属性了吧

你说的整体属性是指什么?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2014-12-5 20:02:13 | 显示全部楼层
XDSoft 发表于 2014-12-5 19:53
从上往下或者从下往上,图中的箭头。

你这个是FlowDirection属性!Direction方向值就是祖玛11的值,

点评

对,是 X 轴方向 AcGeVector3d direction() const; [/img]Description Returns an AcGeVector3d (in WCS) representing the X axis ("horizontal") for the text. This direction vector is used to determ  详情 回复 发表于 2014-12-5 20:23
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

 楼主| 发表于 2014-12-5 20:08:42 | 显示全部楼层
st788796 发表于 2014-12-5 18:57
现在都是格式符控制,没有整体属性了吧

对于有对齐点设置的TEXT实体,比如MC对齐,用这个代码转换后的MTEXT和普通的MTEXT里面设置对齐有些不同,看图。

下图是普通TEXT实体用(xdrx_text->mtext e)转换后编辑成两行的样子,MTEXT实体有对齐的夹点。
QQ截图20141205200719.png

双击进入UI编辑时候,中间有两箭头。

QQ截图20141205200308.png

而普通的MTEXT,进入里面设置的对齐方式表现图下图,没有上图中间的两箭头符号。

QQ截图20141205200335.png

也没对齐的夹点

QQ截图20141205200845.png
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

 楼主| 发表于 2014-12-5 20:23:04 | 显示全部楼层
牢固 发表于 2014-12-5 20:02
你这个是FlowDirection属性!Direction方向值就是祖玛11的值,

对,是 X 轴方向

AcGeVector3d direction() const;


[url=][img][/img]Description[/url]
Returns an AcGeVector3d (in WCS) representing the X axis ("horizontal") for the text.
This direction vector is used to determine the text flow direction.




论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-12-14 00:29 , Processed in 0.499450 second(s), 58 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表