newer 发表于 2025-5-12 19:40:00

XD::GEOM:M-TRANS


;; ------------------------------------------------------------------------
;;; 函数名称 / Function Name: XD::GEOM:M-TRANS
;;;
;;; 【功能说明 / Description】
;;;   对点列表 LST 中的每个点应用坐标变换 TRANS,返回变换后的点列表。
;;;   变换由参数 A 和 B 指定,调用 AutoCAD 的 TRANS 函数实现。
;;;
;;; 【参数说明 / Parameters】
;;;   lst - (list) 点坐标列表,每个元素为点坐标列表 (x y z)
;;;   a   - (int) 变换的源坐标系代码
;;;   b   - (int) 变换的目标坐标系代码
;;;
;;; 【返回值 / Return Value】
;;;   (list) 变换后的点坐标列表,顺序与输入相同
;;;
;;; 【依赖函数 / Dependencies】
;;;   - length : 获取列表长度
;;;   - nth    : 获取列表中指定位置元素
;;;   - cons   : 构造列表
;;;   - reverse: 反转列表
;;;   - trans: AutoCAD 内置坐标变换函数
;;;
;;; 【备注 / Notes】
;;;   - 该函数实现了对点集的批量坐标变换,常用于几何处理和坐标系转换。
;;;   - 返回的列表顺序与输入保持一致。
;;;
(defun XD::GEOM:M-TRANS (lst a b / lst2 c n)
(setq n 0)
(setq lst2 nil) ;; 初始化结果列表,避免未定义变量错误
(repeat (length lst)
    (setq c (nth n lst))
    (setq c (trans c a b))
    (setq lst2 (cons c lst2))
    (setq n (+ n 1))
)
(reverse lst2)
)

HLCAD 发表于 2025-5-13 08:35:48

本帖最后由 HLCAD 于 2025-5-13 08:37 编辑

版主,是否可以简化为:
(mapcar (function (lambda(x) (trans x a b))) Lst)

页: [1]
查看完整版本: XD::GEOM:M-TRANS