今天无聊,发一个以前的程序 stgz=实体规整
;|stgz=实体规整 by lxx.2009.7|;
(defun c:stgz (/ D E E10 E11 ENT ENTYP FIL FILLST FILSS I IDFIL SS ne10 ne11)
(princ "\n stgz=实体规整 by lxx.2009.7")
(vl-load-com)
(if (not (setq d (getint "\n 四舍五入值(负数为小数点后位数)/<0>")))
(setq d 0)
)
(princ "\n 选择过滤实体类型/<全部类型实体>:")
(setq idfil '(10 11)) ;; 起点终点圆心.
(setq filss (ssget)
i -1
)
(if filss
(progn
(while (setq e (ssname filss (setq i (1+ i))))
(setq entyp (cdr (assoc 0 (entget e))))
(if (not (member entyp fillst))
(setq fillst (cons entyp fillst))
)
)
(setq fil
(cons 0
(vl-string-right-trim
","
(apply 'strcat
(mapcar '(lambda (x) (strcat x ",")) fillst)
)
)
)
)
)
)
(princ "\n 选择要处理的实体:")
(setq i -1)
(if (if fil
(setq ss (ssget (list fil)))
(setq ss (ssget))
)
(while (setq e (ssname ss (setq i (1+ i))))
(setq ent (entget e)
e10 (assoc 10 ent)
e11 (assoc 11 ent)
ne10 (cons 10 (mapcar '(lambda(x)(x-sswr x d))(cdr e10)))
ne11 (cons 11 (mapcar '(lambda(x)(x-sswr x d))(cdr e11)))
)
(setq ent (subst ne10 e10 ent)
ent (subst ne11 e11 ent))
(entmod ent)
)
)(princ)
)
;| 四舍五入.!!! ok!----by lxx.2006.9
(x-sswr -325.3525 2) ->-300
(x-sswr 325.3525 -2) -> 325.35
(x-sswr 325.3525 -1) -> 325.4
(x-sswr 325 -1) -> 325.0
|;
(defun x-sswr (num n / e r)
(setq e (expt 10. n)
r (rem num e)
num (- num r)
)
(if (> r (/ e 2))
(+ num e)
num
)
)
;;;;;
(princ "\n stgz=实体规整 by lxx.2009.7")
功能是什么? 功能是什么?
呵呵,好构思。我也写过一个实体归整的程序。
过几天也贴上来献丑。 zhengchuan 发表于 2011-5-10 22:27 static/image/common/back.gif
功能是什么?
就是把选中实体的有效特征点(如圆心,直线端点,多一些端点)按四舍五入的位数一次调整。
我主要是为了避免有时候画轴线有不易觉察的误差而写的这个程序。 是不是只能对x向或y向的线调整,其他的不行? 与x,y方向无关,支持所有 10 ,11 开头的组码 (一般用来存储点位,如pl线,直线,圆心)
比如:pl线某点为 3.124,-8465.22 可以自动规整为3.1,-8465.2 诸如此类 高手!真高! 也写过。但发现在四舍五入计算时,实数超限会出错。
你也可以试试,把图移到一个x、y很大的地方运行程序。 好构思,能想到就不错了。
页:
[1]