(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