悬赏已过期 后悬赏过期
悬赏

一段代码在AutoCAD2018能顺利运行,但是在中望就不行了!

邀请:
  1.  
;; 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函数用于启动绘制二维多段线的命令并通过选取图元提取多段线的顶点并继续绘制
  • (
defun c:WE2 (/ s1)
  •  
(command "pline")
  •  
(while (setq s1 (car (entsel "\n选择图元: ")))
  •  
(command "non" (xyp-DXF-PL 10 s1))
  •  
)
  •  
(command "")
  •  
(princ)
  • )
  • ;这个代码在AutoCAD2018能顺利实施,在中望cad里竟然不能运行。
 
收藏0
分享
您的回答

回答

默认排序 时间排序
图片审查中...
购物车
优惠劵
今日签到
有新私信 私信列表
搜索
复制链接
微信扫码
已复制到剪贴板