各位好,这个可用DCL实现?不懂DCL的请教,谢谢
(defun c:te( / li et clst cenlist l2 )(setq li (entsel "\n请选择指定图层的圆进行修改直径:"))
(progn
(setq et (entget(nth 0 li)))
(setq lay_name (cdr (assoc 8 et)))
)
(if (and(setq ss (ssget "x"(list'(0 . "CIRCLE")(cons 8 lay_name)))))
(progn
(setq i 0 clst nilcenlistnil l2 nil)
(repeat (sslength ss)
(setq en (ssname ss i)
ent (entget en)
r1 (assoc 40 ent)
cenlist (cons(cdr r1) cenlist)
i (1+ i))
(setq cenlist (vl-sort cenlist '< ));小到大排列
)
(setq l2 (cons (car cenlist)l2))
(while(setq cenlist (vl-remove(car cenlist)(cdr cenlist)))
(setq l2 (cons(car cenlist) l2))
)
(foreach e (reverse l2)
(if (not (member e clst))
(progn
(setq ss1 (ssget "x"(list'(0 . "CIRCLE")(cons 8 lay_name) (cons 40 e))))
(setq newd (getdist (strcat "\n输入新的直径-->" (rtos (* e 2) 2 3) "<--:")))
(if newd (progn
(setq j 0)
(setq e (/ newd 2))
(setq clst (cons e clst))
(repeat (sslength ss1)
(setq ent1 (entget(ssname ss1 j))
ent1 (subst (cons 40 e) (assoc 40 ent1) ent1)
j (1+ j))
(entmod ent1)
)
)
)))))
);修改结束
(princ)
)
把以上程序改为DCL来修改圆直径是否可以?
把选择到的圆原始直径取出,在边上对应一个编辑框输入修改?
如数据为空则表示不修改,保留原始数据,谢谢
本帖最后由 xyp1964 于 2019-12-10 14:14 编辑
;; 这个功能用对话框有点多余
(defun c:te ()
(setq dd (Udist 7 "" "新直径<输入或鼠标直接量取>" dd nil))
(if (and (setq s1 (car (entsel "\n请选择指定图层的圆进行修改直径: ")))
(setq la (cdr (assoc 8 (entget s1))))
(setq ss (ssget "x" (list '(0 . "CIRCLE") (cons 8 la))))
)
(xyp-SubUpd ss 40 (* dd 0.5))
)
(princ)
)
sharetow 发表于 2019-12-12 12:47
权限不够,回不了你私发的信息。
可以的,再多都可以,只是对你想要的dcl面板类型有所限制。
你好
按你所觉得合适的面板即可,感谢 xyp1964 发表于 2019-12-10 14:13
;; 这个功能用对话框有点多余
多种圆的时候,在命令行修改容易眼花{:1_1:} :D你在晓东也发了相同的帖子哇 权限不够,回不了你私发的信息。
可以的,再多都可以,只是对你想要的dcl面板类型有所限制。
本帖最后由 sharetow 于 2019-12-12 13:35 编辑
linheyuanpcb 发表于 2019-12-12 13:16
你好
按你所觉得合适的面板即可,感谢
上附件........圆比较多的情况 sharetow 你好 请查看附件,谢谢 linheyuanpcb 发表于 2019-12-12 13:50
sharetow 你好 请查看附件,谢谢
我感觉只能做这种面板了
页:
[1]
2