打开APP
未登录
开通VIP,畅享免费电子书等14项超值服
开通VIP
首页
好书
留言交流
下载APP
联系客服
【飞鸟集】UCS的变换矩阵及其逆变换矩阵
求真我
>《cad板块》
2014.03.28
关注
这里提供一个函数,得到当前UCS下的变化矩阵和逆变换矩阵。
普通浏览复制代码
;;;UCS到WCS的变换矩阵及其WCS到UCS的变换矩阵
;;;the transformation matrix of UCS to WCS and WCS to UCS.
(defun UCS2WCS (/ xdir ydir zdir UcsOrg WcsOrg matlst revlst matrix)
(defun AppendMatrix (lst org)
(append
(mapcar 'append lst (mapcar 'list org))
'((0. 0. 0. 1.))
)
)
(if (zerop (getvar "WORLDUCS")) ;如果不同于WCS
(setq xdir (getvar "UCSXDIR") ;X方向
ydir (getvar "UCSYDIR") ;Y方向
zdir (G:CrossProductor xdir ydir) ;Z方向等于X方向叉乘Y方向
UcsOrg (getvar "UCSORG") ;UCS原点
WcsOrg (trans '(0 0 0) 0 1) ;WCS原点相对于UCS的坐标
matLst (list xdir ydir zdir) ;UCS的旋转矩阵
RevLst (trp matLst) ;UCS的旋转矩阵的逆
matrix (list
(AppendMatrix matlst WcsOrg) ;UCS到WCS的变换矩阵
(AppendMatrix RevLst UcsOrg) ;WCS到UCS的变换矩阵
)
)
(list
'((1. 0. 0. 0.) (0. 1. 0. 0.) (0. 0. 1. 0.) (0. 0. 0. 1.)) ;世界坐标系下是单位矩阵
'((1. 0. 0. 0.) (0. 1. 0. 0.) (0. 0. 1. 0.) (0. 0. 0. 1.)) ;世界坐标系下是单位矩阵
)
)
)
;;; 矢量的点积
;;; VXV Returns the dot product of 2 vectors
(defun vxv (v1 v2)
(apply '+ (mapcar '* v1 v2))
)
;;; 矢量转置
;;; TRP Transpose a matrix -Doug Wilson-
(defun trp (m)
(apply 'mapcar (cons 'list m))
)
;;; 矢量的矩阵变换
;;; MXV Apply a transformation matrix to a vector -Vladimir Nesterovsky-
(defun mxv (m v)
(mapcar (function (lambda (r) (vxv r v))) m)
)
;;; 矩阵相乘
;;; MXM Multiply two matrices -Vladimir Nesterovsky-
(defun mxm (m q)
(mapcar (function (lambda (r) (mxv (trp q) r))) m)
)
;;;两矢量的叉积
;;; CrossProductor --vec1 * vec2
(defun G:CrossProductor (vec1 vec2 / a b c d e f)
(setq a (car vec1))
(setq b (cadr vec1))
(setq c (caddr vec1))
(setq d (car vec2))
(setq e (cadr vec2))
(setq f (caddr vec2))
(list
(- (* b f) (* c e))
(- (* c d) (* a f))
(- (* a e) (* b d))
)
)
以下作为测试
普通浏览复制代码
(defun c:test(/ ent obj mat)
(if (setq ent (car (entsel)))
(progn
(setq obj (vlax-ename->vla-object ent))
(setq mat (ucs2wcs))
(vla-TransformBy obj (vlax-tmatrix (car mat))) ;UCS->WCS
(command ".select" ent pause)
(vla-TransformBy obj (vlax-tmatrix (cadr mat))) ;WCS->UCS
)
)
)
本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请
点击举报
。
打开APP,阅读全文并永久保存
查看更多类似文章
猜你喜欢
类似文章
Trans 函数的妙用
定位-'Cal计算器
提高CAD制图速度
通用函数 选择集与列表的转换
AutoLisp:AutoLisp实现对AutoCAD进行输入命令,选择对象,实现不同方向进行缩放
怎样用CAD画箭头?
更多类似文章 >>
生活服务
热点新闻
留言交流
回顶部
联系我们
分享
收藏
点击这里,查看已保存的文章
导长图
关注
一键复制
下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!
联系客服
微信登录中...
请勿关闭此页面
先别划走!
送你5元优惠券,购买VIP限时立减!
5
元
优惠券
优惠券还有
10:00
过期
马上使用
×