;IO.LSP Ver 2.1 Bill DeShawn bdeshawn@sterling.net (defun rtd (A) (/ (* A 180.0) PI) ) (defun ioerr (msg) (setq msg "\nDone")(princ msg)(terpri) (setq *error* olderr) (if snapstyle (setvar "snapstyl" snapstyle)) (f pb (setvar "pickbox" pb)) (if lu (setvar "lunits" lu)) (if ortho (setvar "orthomode" ortho)) (prin1) ) (defun c:io (/ pb lu ortho ang isoline p1 isoang iodsstr isoangstr p2) (setq olderr *error*) (setq *error* ioerr) (graphscr) (setq pb (getvar "pickbox")) (setvar "pickbox" 4) (setq lu (getvar "lunits")) (setvar "lunits" 2) (setq ortho (getvar "orthomode")) (setvar "orthomode" 0) (setq snapstyle (getvar "snapstyl")) (setvar "snapstyl" 1) (setvar "cmdecho" 0) (prompt "\nISOMETRIC OFFSET default setting = ") (if (/= iods nil) (progn (princ iods) (prompt "\nType in a new distance or press ENTER to accept default. ") ) (prompt "None. Please enter initial setting: ") ) (terpri)(TERPRI) (setq iods (getdist "Isometric offset distance. ")) (if (/= iods nil) (setq isodist iods) (setq iods isodist) ) (prompt "\nSelect line to offset")(terpri) (setq isoline "T") (while (not (null isoline)) (setq isoline (entsel)) (setq p1 (cadr isoline)) (setq ang (rtd (getangle p1 "\nSide to offset? "))) (if (and (<= ang 60.00)(> ang 0.00))(setq isoang 30.00)) (if (and (<= ang 120.00)(> ang 60.00))(setq isoang 90.00)) (if (and (<= ang 180.00)(> ang 120.00))(setq isoang 150.00)) (if (and (<= ang 240.00)(> ang 180.00))(setq isoang 210.00)) (if (and (<= ang 300.00)(> ang 240.00))(setq isoang 270.00)) (if (and (<= ang 360.00)(> ang 300.00))(setq isoang 330.00)) (setq iodsstr (rtos iods)) (setq isoangstr (rtos isoang)) (setq p2 (strcat "@" iodsstr "<" isoangstr)) (command ".copy" isoline "" p1 p2) ) (setvar "osmode" os) (setvar "orthomode" ortho) (setvar "snapstyl" snapstyle) (setvar "pickbox" pb) (setvar "lunits" lu) (setq *error* olderr) (princ) ) (princ "\nIO.LSP -- Loaded. V 2.1 Type IO to execute. ") (princ)