autolisp如何实现自动插入块(利用圆)
本帖最后由 275437962 于 2013-12-26 22:40 编辑我想让CAD某层中的所有固定大小的圆的中心插入事先命名的块(一个圆点),保证圆点的中心和圆的中心重合!!!
望哪位大侠帮个忙,自己水平有限,谢谢了!!!1 支持一下学习中 学习了学习了 学习了。感谢!! ;圆替换块 明经 ZZXXQQ 2009.9.23
(defun c:tt ()
(setvar "CMDECHO" 0)
(if (and (setq bnm (getstring "\n图块名 :"))
(/= bnm "")
(princ "\n选择圆 :")
(setq ss (ssget '((0 . "CIRCLE"))))) (progn
(setq i 0)
(repeat (sslength ss)
(setq pc (cdr(assoc 10 (entget (ssname ss i)))))
(command "-insert" bnm pc "" "" "")
(setq i (1+ i))
)
(command ".erase" ss "");删去此句就保留圆
))
(setvar "CMDECHO" 1)
(princ)
)
ZZXXQQ 发表于 2013-12-22 21:13 static/image/common/back.gif
朋友,这段代码怎么运行啊 加载后,命令TT ZZXXQQ 发表于 2013-12-22 21:13 static/image/common/back.gif
(setq bnm (getstring "\n图块名 :"))
这个地方应该处理一下,至少应该把所有的图块名列出来,弄到对话框的下拉列表让人选更好一些,当然最好是有预览图配套就更完美,不然输入块名的话,至少应该加上检查,万一块名输错了呢? 本帖最后由 275437962 于 2013-12-22 23:12 编辑
ZZXXQQ 发表于 2013-12-22 21:13 static/image/common/back.gif
这段代码,我用了,太好用了,谢谢了,都不知道说什么好了!!
能否再麻烦一下,再帮改一下,不让所有的圆都插入块,只让直径为某个固定长度的圆插入块!!!
(defun c:tt ()
(setvar "CMDECHO" 0)
(if (and (setq bnm (getstring "\n图块名 :"))
(/= bnm "")
(princ "\n选择圆 :")
(setq ss (ssget '((0 . "CIRCLE")(40 . xxxx))))) ;;xxxx换成你需要的圆的半径
(progn
(setq i 0)
(repeat (sslength ss)
(setq pc (cdr(assoc 10 (entget (ssname ss i)))))
(command "-insert" bnm pc "" "" "")
(setq i (1+ i))
)
;; (command ".erase" ss "");删去此句就保留圆
))
(setvar "CMDECHO" 1)
(princ)
)
masterlong 发表于 2013-12-23 02:46 static/image/common/back.gif
(defun c:tt ()
(setvar "CMDECHO" 0)
(if (and (setq bnm (getstring "\n图块名 :"))
ok了,谢谢,能否再麻烦你一下,再帮我改改,让新插入块的图层和它对应的圆所在图层一致,并让所有插入块的颜色改成bylayer(即随层)!! 要求要一次性提完
不厌其烦的解答
本论坛或者只有Z版做得到
(defun c:tt ()
(setvar "CMDECHO" 0)
(if (and (setq bnm (getstring "\n图块名 :"))
(/= bnm "")
(princ "\n选择圆 :")
(setq ss (ssget '((0 . "CIRCLE")(40 . xxxx))))) ;;xxxx换成你需要的圆的半径
(progn
(setq i 0)
(repeat (sslength ss)
(setq pc (cdr(assoc 10 (entget (ssname ss i)))))
(setq ely (cdr(assoc 8 (entget (ssname ss i)))))
(command "-insert" bnm pc "" "" "")
(command "change" (entlast) "" "p" "la" ely "co" "byl" "")
(setq i (1+ i))
)
;; (command ".erase" ss "");删去此句就保留圆
))
(setvar "CMDECHO" 1)
(princ)
)
masterlong 发表于 2013-12-23 13:31 static/image/common/back.gif
要求要一次性提完
不厌其烦的解答
本论坛或者只有Z版做得到
谢谢了,你说的是,我老是啰嗦的问,不过你还是不厌其烦的解答,谢谢你的提醒!!
页:
[1]
2