明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: xyp1964

[讨论] 【e派】工具箱函数再揭秘及应用实例

    [复制链接]
发表于 4 天前 | 显示全部楼层
本帖最后由 寒潮大冬瓜 于 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里竟然不能运行……还得辛苦院长指导
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-4-19 02:27 , Processed in 0.180120 second(s), 20 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表