(defun C:ISOBOX (/ bm isp0 isp1 isp2 isp3 tl tt tr) (if (null hth) (setq hth 1)) (if (null ls) (setq ls 1)) (if (null rs) (setq rs 1)) (setq bm (getvar "blipmode")) (while (setq isp0 (getpoint "\nPick lower corner: ")) (setvar "blipmode" 0) (mapcar '(lambda (pmpt defval / new) (initget (+ 2 4)) (setq new (getdist isp0 (strcat pmpt " <" (rtos (eval defval)) ">: "))) (cond ((not (null new)) (set defval new)))) '("\nEnter height" "\nEnter left side" "\nEnter right side") '(hth ls rs)) (command ".LINE" isp0 (setq isp1 (polar isp0 (dtor 150) ls)) (setq tl (polar isp1 (dtor 90) hth)) (setq tt (polar isp0 (dtor 90) hth)) isp0 (setq isp3 (polar isp0 (dtor 30) rs)) (setq tr (polar isp3 (dtor 90) hth)) tt "" ".LINE" tl (polar tl (dtor 30) rs) tr "") (setvar "blipmode" bm)) (princ) ) (defun C:ISOSIDE (/ isp0 ison bm anglst pmtlst dimlst dlst elast entlst) (if (null hth) (setq hth 1)) (if (null ls) (setq ls 1)) (if (null rs) (setq rs 1)) (while ((lambda (/ done) (setq done ()) (while (not done) (setq ison (getvar "snapisopair")) (princ (strcat "\nCurrent isoplane: " (cond ((= ison 0) "Left") ((= ison 1) "Top") ((= ison 2) "Right")))) (initget (+ 2 4) "L T R") (setq isp0 (getpoint "\nSet plane/L/T/R/or pick lower corner: ")) (cond ((eq (type isp0) 'STR) (setvar "snapisopair" (cond ((= isp0 "L") 0) ((= isp0 "T") 1) ((= isp0 "R") 2)))) (T (setq done T)))) isp0)) (cond ((= ison 0) (setq anglst (list 150 90) pmtlst (list "\nEnter left side" "\nEnter height") dimlst (list 'ls 'hth))) ((= ison 1) (setq anglst (list 150 30) pmtlst (list "\nEnter left side" "\nEnter right side") dimlst (list 'ls 'rs))) ((= ison 2) (setq anglst (list 30 90) pmtlst (list "\nEnter right side" "\nEnter height") dimlst (list 'rs 'hth)))) (setq bm (getvar "blipmode")) (setvar "blipmode" 0) (setq dlst (mapcar '(lambda (pmpt defval / new) (initget (+ 2 4)) (setq new (getdist isp0 (strcat pmpt " <" (rtos (eval defval)) ">: "))) (cond ((not (null new)) (set defval new)) (T (eval defval)))) pmtlst dimlst)) (setq elast (entlast) entlst ()) (apply '(lambda (a1 a2 d1 d2 / lastpt) (command ".LINE" isp0 (setq lastpt (polar isp0 (dtor a1) d1)) (setq lastpt (polar lastpt (dtor a2) d2)) (polar lastpt (dtor (- a1 180)) d1) "c")) (append anglst dlst)) (if (null elast) (setq elast (entnext) entlst (cons elast entlst))) (while (setq elast (entnext elast)) (setq entlst (cons elast entlst))) (foreach ent entlst (redraw ent 3)) (setvar "blipmode" bm)) (princ) ) (defun dtor (d) (/ (* d pi) 180)) ;---< End Of File >---