;Measure distance and preserve variables for use with commands. (DEFUN C:MEASD ( / lunit lupre mpt1 mpt2 altmd mdstr) (setq lunit (getvar"lunits")) (setq lupre (getvar"luprec")) (setvar"lunits" 2) (setvar"luprec" 8) (while (setq mpt1 (upoint 0 "" "Point to measure distance from" nil nil)) (setq mpt2 (upoint 0 "" "Point to measure distance to" nil mpt1)) (setq mdis (distance mpt1 mpt2)) (setq pmdis (distance (list(car mpt1)(cadr mpt1))(list(car mpt2)(cadr mpt2)))) (setq altmd (distance mpt1 mpt2)) (setq mang (angle mpt1 mpt2)) (setq nmang (- 0 (angle mpt1 mpt2))) (setq svang (survang mang)) (setq mdstr (strcat "\nDistance=" (rtos mdis 2 6) " (" (rtos altmd 4 5) " [+-1/64\"]), Angle=" (angtos mang 0 4) " degrees (" svang ")")) (setq infst (strcat "\nmdis=" (rtos mdis 2 6) ", mang=" (angtos mang 0 4) ", nmang=" (angtos nmang 0 4) ", svang=" svang ", plane=" (rtos pmdis 2 6))) (princ mdstr) (princ infst) (c:ulnum) );while (setvar "lunits" lunit) (setvar "luprec" lupre) (princ) );defun (defun survang ( radang / ) (cond ((eq radang 0) (setq radang (/ pi 2) angpref "N " angsuf " E")) ((eq radang (/ pi 2)) (setq radang 0 angpref "N " angsuf " W")) ((eq radang pi) (setq radang (/ pi 2) angpref "N " angsuf " W")) ((eq radang (* pi 1.5)) (setq radang 0 angpref "S " angsuf " W")) ((and(< radang (/ pi 2))(> radang 0)) (setq radang (-(/ pi 2) radang) angpref "N " angsuf " E")) ((and(< radang pi)(> radang (/ pi 2))) (setq radang (-(/ pi 2)(- pi radang)) angpref "N " angsuf " W")) ((and(< radang (* pi 1.5))(> radang pi)) (setq radang (-(* pi 1.5) radang) angpref "S " angsuf " W")) ((and(< radang (* pi 2))(> radang (* pi 1.5))) (setq radang (-(/ pi 2)(-(* pi 2) radang)) angpref "S " angsuf " E")) ) (setq anglt (ANGTOS radang 1 4)) (SETQ count (STRLEN anglt) atxt anglt) (WHILE (AND (NOT (= (SUBSTR atxt 1 1) "d")) (> count 0)) ;and (SETQ atxt (SUBSTR atxt 2) count (1- count)) ) ;while (IF (= (SUBSTR atxt 4 1) "'") (SETQ angmin (SUBSTR atxt 2 3) secinx 5) (SETQ angmin (STRCAT "0" (SUBSTR atxt 2 2)) secinx 4) ) ;if (IF (= (SUBSTR atxt (1+ secinx) 1) "\"") (SETQ angsec (STRCAT "0" (SUBSTR atxt secinx 2))) (SETQ angsec (SUBSTR atxt secinx 3)) ) ;if (SETQ anglt (STRCAT angpref (SUBSTR anglt 1 (- (STRLEN anglt) (STRLEN atxt))) "%%221" angmin angsec angsuf ) ;_ end of strcat ) ;_ end of setq ) (defun c:ulnum () (if (setq selnum (car(entsel "\nSelect Line Number block to update: "))) (progn (while (/=(cdr(assoc 2 (entget selnum)))"LINBRG") (setq selnum (entnext selnum)) ) (setq selbrg (entget selnum)) (setq selbrg (subst (cons 1 svang)(assoc 1 selbrg)selbrg)) (entmod selbrg) (while (/=(cdr(assoc 2 (entget selnum)))"LINLEN") (setq selnum (entnext selnum)) ) (setq sellen (entget selnum)) (setq sellen (subst (cons 1 (strcat(rtos mdis 2 2)"'"))(assoc 1 sellen)sellen)) (entmod sellen) (entupd selnum) (princ) ) (princ "\nNo Line Number block selected. ") ) ) (princ)