;; (c) 2010, Fred R. Weaver ;; fred@fredweaver.biz ;; BOLT RECTANGLE (defun c:bolt ( / os wid ht hwid hht x y p1 p2 p3 p4) (setq os (getvar "osmode")) (while (setq p0 (getpoint "\nPick center of bolt pattern: ")) (setq ss (ssadd)) (setvar "osmode" 0) (setq wid (getreal "\nWidth in inches: ")) (setq ht (getreal "\nHeight in inches: ")) (setq hwid (/ wid 12.0)) (setq hht (/ ht 12.0)) (setq x (car p0)) (setq y (cadr p0)) (setq p1 (list (- x hwid)(- y hht))) (setq p2 (list (+ x hwid)(- y hht))) (setq p3 (list (+ x hwid)(+ y hht))) (setq p4 (list (- x hwid)(+ y hht))) (command ".pline" p1 p2 p3 p4 p1 "") (ssadd (entlast) ss) (entmake (list (cons 0 "circle")(cons 10 p1)(cons 40 0.05))) (ssadd (entlast) ss) (entmake (list (cons 0 "circle")(cons 10 p2)(cons 40 0.05))) (ssadd (entlast) ss) (entmake (list (cons 0 "circle")(cons 10 p3)(cons 40 0.05))) (ssadd (entlast) ss) (entmake (list (cons 0 "circle")(cons 10 p4)(cons 40 0.05))) (ssadd (entlast) ss) (entmake (list (cons 0 "line")(cons 10 p1)(cons 11 p3))) (ssadd (entlast) ss) (entmake (list (cons 0 "line")(cons 10 p2)(cons 11 p4))) (ssadd (entlast) ss) (setq rot (getorient p0 "\nRotation <0>: ")) (if (not rot)(setq rot 0)) (setvar "osmode" os) (command ".rotate" ss "" p0 (rtd rot)) ) (princ) )