 - (defun c:pdim(/ plSet pLlst vLst oldOsn cAng cDis cPt)
- (princ "\n<<< Select LwPolyline for dimensioning >>> ")
- (if(setq plSet(ssget '((0 . "LWPOLYLINE"))))
- (progn
- (setq pLlst(vl-remove-if 'listp
- (mapcar 'cadr(ssnamex plSet)))
- oldOsn(getvar "OSMODE")
- ); end if
- (setvar "OSMODE" 0)(setvar "CMDECHO" 0)
- (command "_.undo" "_be")
- (foreach pl pLlst
- (setq vLst(mapcar '(lambda(x)
- (trans x 0 1))(mapcar 'cdr
- (vl-remove-if-not
- '(lambda(x)(= 10(car x)))(entget pl))))
- ); end setq
- (if(equal '(70 . 1)(assoc 70(entget pl)))
- (setq vLst(append vLst(list(car vLst))))
- ); end if
- (while(< 1(length vLst))
- (setq cAng(angle(car vLst)(cadr vLst))
- cDis(/(distance(car vLst)(cadr vLst))2))
- (if(>=(caar vLst)(caadr vLst))
- (setq cAng(- cAng pi))
- ); end if
- (setq cPt(polar
- (polar(car vLst)cAng cDis)
- (+ cAng(* 0.5 pi))(* 1.0(getvar "DIMTXT")))
- ); end setq
- (command "_.dimaligned"(car vLst)(cadr vLst) cPt)
- (setq vLst(cdr vLst))
- ); end while
- ); end foreach
- (command "_.undo" "_e")
- (setvar "OSMODE" oldOsn)(setvar "CMDECHO" 1)
- ); end progn
- ); end if
- (princ)
- ); end of c:pdim
动手修该一下吧 |