返回 VLA 方法可用的 4x4 转换矩阵的适当表示
(vlax-tmatrix list)
参数
list
由表组成的表,其中每个子表包含 4 个数值,分别表示转换矩阵的各个元素。
返回值
类型为 SafeArray 的变体,表示 4x4 转换矩阵。
示例
定义转换矩阵并将其值指定为变量 tmatrix:
_$ (setq tmatrix (vlax-tmatrix '((1 1 1 0) (1 2 3 0) (2 3 4 5) (2 9 8 3))))
#<variant 8197 ...>
使用 vlax-safearray->list 以表的形式查看 tmatrix 的值:
_$ (vlax-safearray->list (vlax-variant-value tmatrix))
((1.0 1.0 1.0 0.0) (1.0 2.0 3.0 0.0) (2.0 3.0 4.0 5.0) (2.0 9.0 8.0 3.0))
下面的代码创建一条直线,并使用转换矩阵将其旋转 90 度:
(defun Example_TransformBy () ; / lineObj startPt endPt matList transMat)
(vl-load-com) ; 加载 ActiveX 支持
(setq acadObject (vlax-get-acad-object))
(setq acadDocument (vla-get-ActiveDocument acadObject))
(setq mSpace (vla-get-ModelSpace acadDocument))
;; 创建直线
(setq startPt (getpoint "拾取起点:"))
(setq endPt (vlax-3d-point (getpoint startPt "拾取终点:")))
(setq lineObj (vla-addline mSpace (vlax-3d-point startPt) endPt))
;;; 用转换矩阵初始化 transMat 变量
;;; 该矩阵将对象绕点 (0,0,0) 旋转 90 度。
;;; 先创建包含 4 个子表的列表,其中每个子表
;;; 包含 4 个数值,代表转换矩阵的元素
(setq matList (list '(0 -1 0 0) '(1 0 0 0) '(0 0 1 0) '(0 0 0 1)))
;;; 使用 vlax-tmatrix 将表转换为变体。
(setq transmat (vlax-tmatrix matlist))
;;; 用定义的转换矩阵转换直线
(vla-transformby lineObj transMat)
(vla-zoomall acadObject)
(princ "直线已被转换。")
(princ)
)
明经通道 版权所有 未经许可 不得传播 | 评论 |