找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 8135|回复: 30

[有奖答题] 继续关注矩阵,讨论下镜像文字矩阵的写法和如何实现镜像后,文字不反向

[复制链接]

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-5-1 13:21:21 | 显示全部楼层 |阅读模式

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

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

×
朋友反映,XREF局部抠图的题目太难,其实也没难了,知道思路和原理就OK了,那么这次给大家出个镜像矩阵的写法。

大家知道,在系统变量mirrtext=0的情况下,我们用mirror命令镜像文字后,文字位置镜像了,但文字是正向的。但是如果用ARX和ACTIVEX的Transformby方法,镜像后的文字是不受mirrtext控制的,也就是说,对于一个矩阵方法镜像文字后,还需要对文字进行”反向“的处理,这次,大家就讨论讨论如何写镜像文字的”矩阵“以及如何把镜像后的文字”正向“的组合矩阵。请大家讨论矩阵的写法。

QQ截图20130501132611.png



测试图见附件

请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:Drawing1.rar 
下载次数:14  文件大小:13.39 KB 
下载权限: 不限 以上  [免费赚D豆]



高飞鸟斑竹的矩阵实现函数库见:http://bbs.xdcad.net/thread-667494-1-1.html

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

已领礼包: 6530个

财富等级: 富甲天下

发表于 2013-5-2 14:35:51 | 显示全部楼层
一天多了,没人回答。
其实在前面翻转文字的帖子中,我在7楼和16楼给出两种方法,这个题目大体上使用这两种方法的集合就可以得到。
最近晓东一直专注于矩阵,说实在的,我真不知道到底怎样才算矩阵,210组码翻转一下算不算矩阵?
就本题而言,就有歧义,仅是平面的其实无话说,如果是空间的就有点啰嗦,假定转轴不在文本平面内,那么这个镜像是相对转轴镜像还是相对通过转轴和文本垂直的平面镜像,或是相对于通过转轴的其他平面(如平行于坐标轴的某平面)镜像,其实这在程序表现上司很不同的。

点评

Dxf 文件的文本图元(单行文本,多行文本)由于存在文字水平对正,垂直对正,文字生成方向,第二对齐点,文字旋转,坐标系等诸多参数的组合,可计算出组合的种类接近2000种; 因此必须设计非常好矩阵满足所有变换。  详情 回复 发表于 2014-10-15 09:49
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

 楼主| 发表于 2013-5-2 14:49:38 | 显示全部楼层

真正的转换矩阵,是要都包括你说的各种情况的。截图只能出一种情况,之所以关注矩阵,就是能让大家有一种思路,不管什么CAD,他的实现都是通过矩阵转换进行的图形实体的编辑操作。这个和任何语言无关的。比如你说的210翻转,最后在ACAD内部还是通过最后的矩阵运算实现的。

而学会了和软件无关的矩阵变换图形的计算机图形学的算法,就不用去对各种实体自身的繁杂的数据类型、格式进行操作和记忆了。能让大家更关注到应用工具自身的算法上来。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-5-2 15:30:27 | 显示全部楼层
我的思路是:

1、镜像一次
2、在得到文字的包围盒,沿着过中心点的垂直于NORMAL的Y轴再镜像一次。

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

使用道具 举报

发表于 2013-8-5 10:16:10 | 显示全部楼层
本帖最后由 wowan1314 于 2013-8-5 10:35 编辑

奇怪了。。 高飞鸟版主的 矩阵函数中得到的镜像矩阵,用vla-TransformBy运算对文字不会反向啊?
  1. 命令: !XD-MIR
  2. ((-1.0 0.0 0.0 26589.5) (0.0 1.0 0.0 0.0) (0.0 0.0 -1.0 0.0) (0.0 0.0 0.0 1.0))

  3. 命令: !HB-MIR
  4. ((-1.0 3.67382e-016 0.0 26589.5) (3.67382e-016 1.0 0.0 -5.00222e-012) (0.0 0.0
  5. 1.0 0.0) (0.0 0.0 0.0 1.0))
复制代码
用XD-MIR做的镜像矩阵。 无论用VLA还是XD的矩阵转换 文字都是反的。
用HB-MIR做的镜像矩阵。用VLA转换文字不会反。 而用XD的矩阵转换文字却是反的。

镜像测试.jpg

点评

你可以把XD MIRR 和 HB MIRR 矩阵值都贴过来,比较下内容就知道。 镜像矩阵都应该一样。 因为一个矩阵作用到实体的结果是一样的。不能文字的不镜像,而其他实体镜像,要想文字不镜像只能对文字在单独做个变换。  详情 回复 发表于 2013-8-5 11:56
H版(MAT:RotateBy2P P1 P2 an),旋转180度后文字也是翻转了的  详情 回复 发表于 2013-8-5 10:46
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2013-8-5 10:46:36 | 显示全部楼层
wowan1314 发表于 2013-8-5 10:16
奇怪了。。 高飞鸟版主的 矩阵函数中得到的镜像矩阵,用vla-TransformBy运算对文字不会反向啊?用XD-MIR做的 ...

H版(MAT:RotateBy2P P1 P2 an),旋转180度后文字也是翻转了的

点评

所谓镜向,不就是旋转180度?  详情 回复 发表于 2013-8-5 11:02
你这个是三维旋转撒。  发表于 2013-8-5 10:51
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 604个

财富等级: 财运亨通

发表于 2013-8-5 11:02:57 | 显示全部楼层
/db_自贡黄明儒_ 发表于 2013-8-5 10:46
H版(MAT:RotateBy2P P1 P2 an),旋转180度后文字也是翻转了的

所谓镜向,不就是旋转180度?

点评

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

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-8-5 11:28:10 | 显示全部楼层
不对吧!在Lisp里文字的vla-transformby是受mirrtext变量控制的!

点评

测试代码如下:  详情 回复 发表于 2013-8-5 11:40
我测试几次了。。 G版可亲自测试看看。。 XD与H版的矩阵就是精度上的区别。可结果也会不同  详情 回复 发表于 2013-8-5 11:32
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-8-5 11:32:34 | 显示全部楼层
本帖最后由 wowan1314 于 2013-8-5 11:49 编辑
牢固 发表于 2013-8-5 11:28
不对吧!在Lisp里文字的vla-transformby是受mirrtext变量控制的!

我测试几次了。。

G版可亲自测试看看。。   

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

使用道具 举报

发表于 2013-8-5 11:40:51 | 显示全部楼层
本帖最后由 wowan1314 于 2013-8-5 11:45 编辑
牢固 发表于 2013-8-5 11:28
不对吧!在Lisp里文字的vla-transformby是受mirrtext变量控制的!

测试代码如下:
  1. (defun C:t11 nil  
  2. (setq P1 (getpoint) P2 (getpoint))
  3. (setq XD-MIR (xdrx_matrix_setmirror (xdrx_matrix_identity 3) (list P1 P2)))
  4. (setq HB-MIR (MAT:Reflect P1 P2))
  5. (xdrx_entity_TransformedCopy (ssget) XD-MIR)
  6. (vla-TransformBy (vlax-ename->vla-object(car(entsel))) (vlax-tmatrix XD-MIR))  
  7. (vla-TransformBy (vlax-ename->vla-object(car(entsel))) (vlax-tmatrix HB-MIR))
  8. (xdrx_entity_TransformedCopy (ssget) HB-MIR)
  9. )
矩阵.gif

点评

晓东的矩阵和高飞鸟的矩阵是不同的!Z值不同!晓东的Z为-1,所以文字镜像后210组码值为(210 0.0 0.0 -1.0) ,文字当然是反的啦!  详情 回复 发表于 2013-8-5 12:04
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-8-5 11:56:50 | 显示全部楼层
wowan1314 发表于 2013-8-5 10:16
奇怪了。。 高飞鸟版主的 矩阵函数中得到的镜像矩阵,用vla-TransformBy运算对文字不会反向啊?用XD-MIR做的 ...

你可以把XD MIRR 和 HB MIRR 矩阵值都贴过来,比较下内容就知道。

镜像矩阵都应该一样。 因为一个矩阵作用到实体的结果是一样的。不能文字的不镜像,而其他实体镜像,要想文字不镜像只能对文字在单独做个变换。

点评

两个矩阵 目测就是精度上的区别。。 测试代码已贴出。 一测便知!  详情 回复 发表于 2013-8-5 11:59
5楼贴的就是矩阵值。  发表于 2013-8-5 11:58
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-8-5 11:59:34 | 显示全部楼层
newer 发表于 2013-8-5 11:56
你可以把XD MIRR 和 HB MIRR 矩阵值都贴过来,比较下内容就知道。

镜像矩阵都应该一样。 因为一个矩阵 ...

两个矩阵 目测就是精度上的区别。。

测试代码已贴出。 一测便知!

点评

那怎么会变换后不一样。 这样,你都用 xdrx_entity_transform 变换下实体,对两个矩阵,看是否结果是一样的。  详情 回复 发表于 2013-8-5 12:02
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-8-5 12:02:22 | 显示全部楼层
wowan1314 发表于 2013-8-5 11:59
两个矩阵 目测就是精度上的区别。。

测试代码已贴出。 一测便知!

那怎么会变换后不一样。

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

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-8-5 12:04:28 | 显示全部楼层
本帖最后由 牢固 于 2013-8-5 12:07 编辑

晓东的矩阵和高飞鸟的矩阵是不同的!Z值不同!高飞鸟的是1.0,晓东的Z为-1,所以文字镜像后210组码值为(210 0.0 0.0 -1.0) ,文字当然是反的啦!说到这里,一楼的答案也就出来了吧!

点评

Z值+1,那对普通别的实体还有镜像效果吗?  详情 回复 发表于 2013-8-5 12:43
答案是肯定的,vla-transformby受mirrtext变量控制!,具体如何变,由矩阵决定! 也就是矩阵变换后,根据mirrtext变量的值决定文字是否再要反一下变化! ARX的transformby是否受mirrtext变量控制,我就不清楚了!  详情 回复 发表于 2013-8-5 12:12
同样的HB矩阵,用VLA和XD的矩阵转换 结果却不同?  详情 回复 发表于 2013-8-5 12:07
对! Z值是反的。 但是HB矩阵,用VLA和XD的矩阵转换 结果却不同?  发表于 2013-8-5 12:07

评分

参与人数 1D豆 +5 收起 理由
wowan1314 + 5 谢谢。 想通了。

查看全部评分

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

使用道具 举报

发表于 2013-8-5 12:07:43 | 显示全部楼层
牢固 发表于 2013-8-5 12:04
晓东的矩阵和高飞鸟的矩阵是不同的!Z值不同!高飞鸟的是1.0,晓东的Z为-1,所以文字镜像后210组码值为(2 ...

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 05:13 , Processed in 0.214884 second(s), 65 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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