自贡黄明儒 发表于 2013-7-19 10:51:08

用矩阵移动+旋转对象,向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命令了,据说是比较高级的写法
早会了这个的话,我的单向阵列,超级等分就容易多了,速度也快了

tigcat 发表于 2022-8-9 09:08:53

;黄老的这个移动其实可以这样改写,便于理解

[*](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 10:54:31

本帖最后由 guosheyang 于 2022-8-10 14:03 编辑

经测试   第8行q 放在m前是对的第7行还是要p1才行

lee50310 发表于 2022-8-10 14:11:13

本帖最后由 lee50310 于 2022-8-10 14:15 编辑

print1985 发表于 2013-7-19 11:48
缺子程序
整理一下 ,這個是包含子程序.....

print1985 发表于 2013-7-19 11:48:59

本帖最后由 print1985 于 2013-7-19 11:50 编辑

缺子程序   

云中孤鹰 发表于 2013-7-20 08:44:30

确实不错,支持

zjupxw 发表于 2013-10-3 18:55:54

请教个反向的问题,如何把处理过的对象,反变回原地的呢?有简洁的办法吗?

自贡黄明儒 发表于 2013-10-3 21:06:21

zjupxw 发表于 2013-10-3 18:55
请教个反向的问题,如何把处理过的对象,反变回原地的呢?有简洁的办法吗?

P1、P2相反就行,即位置调一下,角度为负

lucas_3333 发表于 2014-2-26 21:36:05

黄大侠,把你的单向阵列,超级等分共享出来吧,感谢ing!

springwillow 发表于 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非等比缩 ...

高飞好像已经解决了,在另一贴中,专门说了非等比…

springwillow 发表于 2014-7-12 20:16:55

自贡黄明儒 发表于 2014-7-11 19:23 static/image/common/back.gif
高飞好像已经解决了,在另一贴中,专门说了非等比…

在哪一个帖子里啊?高版的心随我动的帖子里有一个DragGen函数,能够在移动的时候显示非等比缩放,但确定的时候就不支持了。
页: [1] 2
查看完整版本: 用矩阵移动+旋转对象,向highflybir学习致敬!