大家帮忙看看,这个问题不会太麻烦!!!
本帖最后由 275437962 于 2013-12-30 23:22 编辑(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)
)
上面的程序只能针对半径是整数的圆,能否提高精度也可针对,如圆的半径为0.2345,即小数点后保留4位!!!
还有下面这个:
(defun myss (minl maxl / e len n obj ss)
(if (setq ss (ssget '((0 . "LINE"))))
(repeat (setq n (sslength ss))
(setq e (ssname ss (setq n (1- n))))
(setq obj (vlax-ename->vla-object e))
(setq len (vlax-get obj 'length))
(if (or
(< len minl)
(> len maxl)
)
(ssdel e ss)
)
)
)
ss
)
(defun c:sss (/ a b ss)
(if (not (setq a (getdist "\n请指定最小长度<0.01>:")))
(setq a 0.5)
)
(if (not (setq b (getdist "\n请指定最大长度<0.08>:")))
(setq b 2.5)
)
(if (and
a
b
)
(if (setq ss (myss a b))
(command "._select" ss "" "._pselect" ss "")
)
)
(princ)
)
如何提高这个程序快速选择的精度,如我要选择的直线是0.0798,那么按上面程序的最小长度0.01和最大长度0.08,这条线不能被选中!!能否让这个选择的精度,精确到小数点后四位!!
楼主是否可以换个思路
精确到小数点后4位和后8位区别不是很大
是否可以选择如1.01-1。02之间
页:
[1]