明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 4112|回复: 11

[源码] 用矩阵移动+旋转对象,向highflybir学习致敬!

[复制链接]
发表于 2013-7-19 10:51:08 | 显示全部楼层 |阅读模式
本帖最后由 自贡黄明儒 于 2013-7-19 11:19 编辑

;;本次练习将对象从p1移到p2,并旋转45度
  1. (defun C:w1 (/ AN M MATR OBJ P1 P2 Q)
  2.   (setq obj (vlax-ename->vla-object (car (entsel))))
  3.   (setq p1 (getpoint "\n >基点"))
  4.   (setq p2 (getpoint "\n >>终点"))
  5.   (setq m (MAT:TranslateBy2P p1 p2))                  ;移动矩阵
  6.   (setq an (/ (* 45 pi) 180))
  7.   (setq q (mat:rotation p1 an))                          ;转动矩阵
  8.   (setq matr (MAT:mxm m q))                          ;矩阵相乘:移动+转动
  9.   (vla-transformby obj (vlax-tmatrix matr))
  10.   (princ)
  11. )


这样就可以不使用command命令了,据说是比较高级的写法
早会了这个的话,我的单向阵列,超级等分就容易多了,速度也快了

评分

参与人数 1明经币 +1 收起 理由
wowan1314 + 1 很给力!

查看全部评分

"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2022-8-9 09:08:53 | 显示全部楼层
;黄老的这个移动其实可以这样改写,便于理解
  • (defun C:w1 (/ AN M MATR OBJ P1 P2 Q)
  •   (setq obj (vlax-ename->vla-object (car (entsel))))
  •   (setq p1 (getpoint "\n >基点"))
  •   (setq p2 (getpoint "\n >>终点"))
  •   (setq m (MAT:TranslateBy2P p1 p2))                  ;移动矩阵,第一个图形变化矩阵----m
  •   (setq an (/ (* 45 pi) 180))
  •   (setq q (mat:rotation p2 an))                          ;转动矩阵,第二个图形变化矩阵----q
  •   (setq matr (MAT:mxm q m))                          ;矩阵相乘:移动+转动,最先操作的矩阵放在相乘的最右边,超过3个也是这样的规则放置
  •   (vla-transformby obj (vlax-tmatrix matr))
  •   (princ)
  • )




发表于 2022-8-10 10:54:31 | 显示全部楼层
本帖最后由 guosheyang 于 2022-8-10 14:03 编辑

经测试   第8行q 放在m前是对的  第7行还是要p1才行
发表于 2022-8-10 14:11:13 | 显示全部楼层
本帖最后由 lee50310 于 2022-8-10 14:15 编辑

整理一下 ,這個是包含子程序.....

本帖子中包含更多资源

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

x
发表于 2013-7-19 11:48:59 | 显示全部楼层
本帖最后由 print1985 于 2013-7-19 11:50 编辑

缺子程序   

点评

http://bbs.mjtd.com/forum.php?mod=viewthread&tid=99926  发表于 2013-7-19 11:57
见highflybir的帖子《论矩阵》  发表于 2013-7-19 11:50
发表于 2013-7-20 08:44:30 | 显示全部楼层
确实不错,支持
发表于 2013-10-3 18:55:54 | 显示全部楼层
请教个反向的问题,如何把处理过的对象,反变回原地的呢?有简洁的办法吗?
 楼主| 发表于 2013-10-3 21:06:21 来自手机 | 显示全部楼层
zjupxw 发表于 2013-10-3 18:55
请教个反向的问题,如何把处理过的对象,反变回原地的呢?有简洁的办法吗?

P1、P2相反就行,即位置调一下,角度为负
发表于 2014-2-26 21:36:05 | 显示全部楼层
黄大侠,把你的单向阵列,超级等分共享出来吧,感谢ing!
发表于 2014-7-11 16:27:17 | 显示全部楼层
本帖最后由 springwillow 于 2014-7-11 16:30 编辑

矩阵对于平面变换(平移,旋转,缩放,等侧变换)确实是非常方便实用的,而且可以对非块实体进行XY非等比缩放,只是将非等比矩阵实施于实体还是个问题
 楼主| 发表于 2014-7-11 19:23:41 来自手机 | 显示全部楼层
springwillow 发表于 2014-7-11 16:27
矩阵对于平面变换(平移,旋转,缩放,等侧变换)确实是非常方便实用的,而且可以对非块实体进行XY非等比缩 ...

高飞好像已经解决了,在另一贴中,专门说了非等比…
发表于 2014-7-12 20:16:55 | 显示全部楼层
自贡黄明儒 发表于 2014-7-11 19:23
高飞好像已经解决了,在另一贴中,专门说了非等比…

在哪一个帖子里啊?高版的心随我动的帖子里有一个DragGen函数,能够在移动的时候显示非等比缩放,但确定的时候就不支持了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-9-29 21:26 , Processed in 0.174656 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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