寒潮大冬瓜 发表于 2025-4-15 23:07:23

本帖最后由 寒潮大冬瓜 于 2025-4-15 23:08 编辑

寒潮大冬瓜 发表于 2024-12-30 00:15
院长好!辛苦指导……
(defun c:tt ()
(command "3dpoly")

;; xyp-DXF-pl 函数用于获取实体的 DXF 数据并提取 X 和 Y 坐标此函数是对 xyp-DXF 功能的扩展,不仅获取指定代码的 DXF 数据,还会提取出 X 和 Y 坐标
(defun xyp-DXF-pl (code ename / ent lst)
      ;; 检查传入的 code 是否为列表类型
      (if (= (type code) 'LIST)
                ;; 如果是列表类型
                (progn
                        ;; 获取实体的完整 DXF 数据
                        (setq ent (entget ename))
                        ;; 初始化一个空列表用于存储结果
                        (setq lst '())
                        ;; 遍历 code 列表中的每个元素
                        (foreach a code
                              ;; 将每个元素及其对应的 DXF 数据组成的列表添加到结果列表中
                              (setq lst (cons (list a (cdr (assoc a ent))) lst))
                        )
                        ;; 反转结果列表以保证顺序正确
                        (setq lst (reverse lst))
                        ;; 提取 X 坐标
                        ;(setq x (car lst))
                        ;; 提取 Y 坐标
                        ;(setq y (cadr lst))
                        ;; 重新组合成只包含 X 和 Y 坐标的列表
                        ;(setq lst (list x y))
                        (setq lst (list (car lst) (cadr lst)))
                )
                ;; 如果 code 不是列表类型
                (if (= code -3)
                        (progn
                              ;                ;; 当 code 为 -3 时,获取扩展数据
                              (setq lst (cdr (assoc code (entget ename '("*")))))
                              ;                ;; 提取 X 坐标
                              ;(setq x (car lst))
                              ;                ;; 提取 Y 坐标
                              ;(setq y (cadr lst))
                              ;                ;; 重新组合成只包含 X 和 Y 坐标的列表
                              (setq lst (list (car lst) (cadr lst)))
                        )
                        (progn
                              ;                ;; 其他情况,获取指定 code 的 DXF 数据
                              (setq lst (cdr (assoc code (entget ename))))
                              ;                ;; 提取 X 坐标
                              ;                (setq x (car lst))
                              ;                ;; 提取 Y 坐标
                              ;                (setq y (cadr lst))
                              ;                ;; 重新组合成只包含 X 和 Y 坐标的列表
                              (setq lst (list (car lst) (cadr lst)))
                              ;                (setq lst (list x y))
                        )
                )
      )
      ;lst
)
;;WE2函数用于启动绘制二维多段线的命令并通过选取图元提取多段线的顶点并继续绘制源于xyp1964代码
(defun c:WE2 (/ s1)
      (command "pline")
      (while (setq s1 (car (entsel "\n选择图元: ")))
                (command "non" (xyp-DXF-PL 10 s1))
      )
      (command "")
      (princ)
)
自己胡乱的改了一下,在AutoCAD2018能顺利实施,就还是差一点,没有一条虚线随着鼠标走,不够形象。
但是很奇怪,在中望cad里竟然不能运行……还得辛苦院长指导

技术工作室 发表于 2025-4-19 10:46:40

谢谢院长大人分享
页: 28 29 30 31 32 33 34 35 36 37 [38]
查看完整版本: 【e派】工具箱函数再揭秘及应用实例