下午看到个帖子,说是很急,要求点选一个矩形框(左理角为L=1.0的倒角,右下角为R=1.0的圆角),要求把倒角和圆角都改成0.9,当时想写的,结果耽搁了,现在写出来找不到那个帖子了,也没记住那位兄弟的名字,只好给他放这里了
 - (defun c:DJYJ(/ a b continue);;
- (defun plinexy(e / a q m p);;;LWPolyline,POLYLINE顶点,去掉完全重合点
- (setq a(vlax-ename->vla-object e)
- q(vlax-safearray->list(vlax-variant-value(vla-get-Coordinates a)))
- m(vla-get-objectname a)a 0
- m(if(= m"AcDb3dPolyline")3 2))
- (repeat(/(length q)m)
- (cond((= m 2)(setq p1(list(nth a q)(nth(+ a 1)q))))
- ((= m 3)(setq p1(list(nth a q)(nth(+ a 1)q)(nth(+ a 2)q)))))
- (setq p(if(member p1 p)p(append p(list p1)))
- a(+ a m)))
- p)
- (setq continue t)
- (while continue
- (if (setq a(car(entsel"选择要修改倒角的圆角的多线段右键退出")))
- (progn
- (setq b(entget a))
- (if(vl-string-search"LINE"(cdr(assoc 0 b)))
- (entmod(setq a(vl-sort(plinexy a)'(lambda (s1 s2)(< (cadr s1) (cadr s2))))
- b(subst(list 10(-(car(car a))0.1)(cadr(car a)))(cons 10(car a))b)
- b(subst(list 10(+(car(cadr a))0.1)(cadr(cadr a)))(cons 10(cadr a))b)
- b(subst(list 10(car(caddr a))(-(cadr(caddr a))0.1))(cons 10(caddr a))b)
- b(subst(list 10(car(cadddr a))(-(cadr(cadddr a))0.1))(cons 10(cadddr a))b)))
- )
- )
- (setq continue nil))
- )
- )
|