;Arc dimension (^v^) XANADU, http://www.xanadu.cz (defun C:DIMARC ( / pt1 pt2 cen a1 a2 D1 D2 D i p r oldOs oldCmde) (setq oldCmde (getvar "CMDECHO")) (setq oldOs (getvar "OSMODE")) (setvar "CMDECHO" 0) (prompt "Pick 2 points on an arc - ") (setvar "OSMODE" 512) (while (not cen) (setq pt1 (getpoint "1st pt: ") cen (osnap pt1 "_CEN") ) (if (not cen) (alert "Doesn't lay on an arc, retry") (setq pt2 (getpoint cen " 2nd pt: "))) );while (setvar "OSMODE" 0) (setq a1 (angle cen pt1) a2 (angle cen pt2) ad (abs (- a2 a1)) r (distance pt1 cen) D1 (* r ad) D2 (* r (- (* 2 pi) ad)) ) (prompt (strcat "\nDIMARC> Arc length (1): " (rtos D1) ", complementar arc (2): " (rtos D2))) (setq D D1) (initget "1 2 Smaller") (setq i (getkword "\nDIMARC> Dim which? [<1>/2/Smaller]: ")) (if (= i "2")(setq D D2)) (if (= i "Smaller")(setq D (min D1 D2))) (command "_DIMANGULAR" "" cen pt1 pt2 "_T" (rtos D) pause) (setvar "OSMODE" oldOs) (setvar "CMDECHO" oldCmde) (prin1) ) (princ "\nDIMARC command loaded.") (princ)