- (defun c:dtmj(/ );动态面积
- (command"undo""m")
- (if(and(setq en(car(setq xz(entsel"\n请选择地块线:"))))
- (="地块线"(cdr(assoc 8(setq el(entget en)))))
- )
- (progn
- (setq bb(fjdb en)
- obj(vlax-ename->vla-object en)
- mjss(ssget'"cp"bb'((0 . "text")(8 . "实测面积")))
- n -1
- )
- (repeat(sslength mjss)
- (setq men(ssname mjss(setq n(1+ n))))
- (setq zdzd(cdr(assoc 11(entget men))))
- (if(=(wzgx zdzd en)-1)
- (setq mjen men)
- )
- )
- (setq
- pt(cadr xz)
- zjd(vlax-curve-getclosestpointto obj pt)
- cs(vlax-curve-getParamAtPoint obj zjd)
- cs(atoi(rtos cs 2 0))
- pt(vlax-curve-getpointatparam obj cs)
- pt(list(car pt)(cadr pt))
- mode t
- )
- (while mode
- (setq mo(grread t 15 0)
- co(car mo)
- )
- (cond((member co '(2 3 25 32)) ;其它 右键 右键 空格
- (setq mode nil)
- )
- (t
- (setq p1(cadr mo))
- (entmod(subst(cons 10 p1)(cons 10 pt)el))
- (setq bb(fjdb en))
- (setq zxzb(list(/(apply'+(mapcar'(lambda(x)(car x))bb))(length bb))(/(apply'+(mapcar'(lambda(x)(cadr x))bb))(length bb))))
- (setq mj(rtos(*(vla-get-area obj)0.0015) 2 2))
- (setq mjel(subst(cons 1 mj)(assoc 1(entget mjen))(entget mjen)))
- (entmod(subst(cons 11 zxzb)(assoc 11 mjel)mjel))
- )
- )
- )
- )
- )
- )
|