虚心向老顾版主等高手请教,关于修改孔径的问题!
www.dimcax.com
虚心向老顾版主等高手请教,关于修改孔径的问题!
我有大批量圆的大小和形状都要修改,但其中有一些孔径很接近(如10.3,10.5,10.8,12等)
如果一个一个选很容易选错。
一、把所有直径10.3mm的圆都改为10mm的圆:
输入10mm,然后用鼠标选取10.3mm中的一个(用鼠标选择,而不是输入数值10.3),所有10.3的圆都变成10mm的了。
(我认为:把10.3改为10.0应该是在提取属性中修改的吧,而全选应该是在“工具”--“快速选择”对话框中可以选到所有直径为10.3的圆)
二、如果上面问题能解决,那么能否把圆孔改为螺钉孔?即输入螺钉孔大小如m10,然后操作跟上述一样。
三、这个就复杂些了,
插入一个块(块名为m12),然后用鼠标选取孔径10.3mm中的一个(用鼠标选择,而不是输入数值10.3),所有孔径为10.3的圆都变成块m12了。
谢谢!
图片:
下面的程序可改你的孔径
(if (not (tblsearch "layer" "1z"))
(command "layer" "n" "1z" "c" "3" "1z" "l" "center" "1z" "")
)
(if (not (tblsearch "layer" "3z"))
(command "layer" "n" "3z" "c" "3" "3z" "l" "hidden" "3z" "")
)
(if (not (tblsearch "layer" "0z"))
(command "layer" "n" "0z" "")
)
(if (not (tblsearch "layer" "2z"))
(command "layer" "n" "2z" "c" "2" "2z" "")
)
(defun c:gdj ()
(setq en (ssget "all" '((0 . "circle"))) n (sslength en) rr1 nil rr2 nil rr3 nil rr4 nil rr5 nil rr6 nil rr7 nil rr8 nil rr9 nil rr10 nil)
(setq w 0 b 1 gg nil bb nil rr nil e 1 fz1 nil fz2 nil fz3 nil fz4 nil fz5 nil fz6 nil fz7 nil fz8 nil fz9 nil fz10 nil fz nil)
(setq d1 (getreal "输入要改的直径:") d (getreal "要改成的直径:"))
(repeat n
(setq a (ssname en w) )
(setq aa (entget a))
(setq p1 (cdr (assoc 10 aa)) dd (* (cdr (assoc 40 aa)) 2.0) )
(if (= dd d1)
(progn
(setq aa (subst (cons 40 d)(assoc 40 aa) aa))
(entmod aa)
))
(setq w (+ w 1))
)
)
;;;它不是用块是用画螺纹画出来的
(defun c:gm ()
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(setq en (ssget "all" '((0 . "circle"))) n (sslength en) rr1 nil rr2 nil rr3 nil rr4 nil rr5 nil rr6 nil rr7 nil rr8 nil rr9 nil rr10 nil)
(setq w 0 b 1 gg nil bb nil rr nil e 1 fz1 nil fz2 nil fz3 nil fz4 nil fz5 nil fz6 nil fz7 nil fz8 nil fz9 nil fz10 nil fz nil)
(setq d1 (getreal "输入要改的直径:") d (getreal "要改成螺纹:"))
(repeat n
(setq a (ssname en w) )
(setq aa (entget a))
(setq p1 (cdr (assoc 10 aa)) dd (* (cdr (assoc 40 aa)) 2.0) )
(if (= dd d1)
(progn
(command "erase" a "")
(setq r (* d 0.5) p2 (polar p1 0 r) p3 (polar p1 (* pi 1.5) r))
(command "layer" "s" "0z" """circle" p1 "d" (* d 0.8) )
(command "layer" "s" "2z" """arc" "c" p1 p2 p3)
(setq pp1 (polar p1 0 (+ r 3)) pp2 (polar p1 pi (+ r 3)) pp3 (polar p1 (* pi 0.5) (+ r 3)) pp4 (polar p1 (* pi 1.5) (+ r 3)))
(command "layer" "s" "1z" """line" pp1 pp2 """line" pp3 pp4 "")
(command "layer" "s" "0" "")
))
(setq w (+ w 1))
)
(setvar "osmode" os)
)
gbg
谢谢老顾,虽然不是我想要的那种功能,但这种功能也很实用,不管怎样还是要感谢您!