用矩阵移动+旋转对象,向highflybir学习致敬!
本帖最后由 自贡黄明儒 于 2013-7-19 11:19 编辑;;本次练习将对象从p1移到p2,并旋转45度
(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)) ;移动矩阵
(setq an (/ (* 45 pi) 180))
(setq q (mat:rotation p1 an)) ;转动矩阵
(setq matr (MAT:mxm m q)) ;矩阵相乘:移动+转动
(vla-transformby obj (vlax-tmatrix matr))
(princ)
)
这样就可以不使用command命令了,据说是比较高级的写法
早会了这个的话,我的单向阵列,超级等分就容易多了,速度也快了 ;黄老的这个移动其实可以这样改写,便于理解
[*](defun C:w1 (/ AN M MATR OBJ P1 P2 Q)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(setq obj (vlax-ename->vla-object (car (entsel))))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(setq p1 (getpoint "\n >基点"))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(setq p2 (getpoint "\n >>终点"))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(setq m (MAT:TranslateBy2P p1 p2)) ;移动矩阵,第一个图形变化矩阵----m
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(setq an (/ (* 45 pi) 180))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(setq q (mat:rotation p2 an)) ;转动矩阵,第二个图形变化矩阵----q
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(setq matr (MAT:mxm q m)) ;矩阵相乘:移动+转动,最先操作的矩阵放在相乘的最右边,超过3个也是这样的规则放置
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(vla-transformby obj (vlax-tmatrix matr))
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif(princ)
[*]http://bbs.mjtd.com/source/plugin/imc_colorcode/images/jssc_none.gif)
本帖最后由 guosheyang 于 2022-8-10 14:03 编辑
经测试 第8行q 放在m前是对的第7行还是要p1才行 本帖最后由 lee50310 于 2022-8-10 14:15 编辑
print1985 发表于 2013-7-19 11:48
缺子程序
整理一下 ,這個是包含子程序.....
本帖最后由 print1985 于 2013-7-19 11:50 编辑
缺子程序
确实不错,支持 请教个反向的问题,如何把处理过的对象,反变回原地的呢?有简洁的办法吗? zjupxw 发表于 2013-10-3 18:55
请教个反向的问题,如何把处理过的对象,反变回原地的呢?有简洁的办法吗?
P1、P2相反就行,即位置调一下,角度为负 黄大侠,把你的单向阵列,超级等分共享出来吧,感谢ing! 本帖最后由 springwillow 于 2014-7-11 16:30 编辑
矩阵对于平面变换(平移,旋转,缩放,等侧变换)确实是非常方便实用的,而且可以对非块实体进行XY非等比缩放,只是将非等比矩阵实施于实体还是个问题 springwillow 发表于 2014-7-11 16:27
矩阵对于平面变换(平移,旋转,缩放,等侧变换)确实是非常方便实用的,而且可以对非块实体进行XY非等比缩 ...
高飞好像已经解决了,在另一贴中,专门说了非等比… 自贡黄明儒 发表于 2014-7-11 19:23 static/image/common/back.gif
高飞好像已经解决了,在另一贴中,专门说了非等比…
在哪一个帖子里啊?高版的心随我动的帖子里有一个DragGen函数,能够在移动的时候显示非等比缩放,但确定的时候就不支持了。
页:
[1]
2