; The following program is sample output from the LISP Generator (more info at www.LispGen.com). ; The LISP Generator is a full-featured code generator for Autocad's AuotLISP language. ; Legal notices: ; - This sample program is intended as a demonstration only. ; - The program is available on an 'as-is' basis with no warranties, either expressed or implied, of any kind. ; - The program may only be used at the user's own risk. ; - No license or rights to the code are either given or forfeited. ; Everything that follows is direct and unaltered output from the LISP Generator. ; This program was created on October 24 2006 using the LISP Generator. ; Define the function (the program). (defun c:GEAR ( / PT1 RAD1 CIRCUM NUM1 XSCALE LEN1 ANG1 I ROT1 PT2 OLDCE OLDERR OLDTE) ; Save the current value of cmdecho then redefine it. (setq OLDCE (getvar "cmdecho")) (setvar "cmdecho" 1) ; Save the current value of texteval then set it to 1 (setq OLDTE (getvar "texteval")) (setvar "texteval" 1) ; Save the current value of the error handling subroutine then redefine it. (setq OLDERR *error*) (defun *error* (errmes) (princ (strcat "\nExecution of GEAR halted by the following error: " ERRMES)) (setvar "cmdecho" OLDCE) (setq *error* OLDERR) (prin1) ) ;(setq *error* nil) ; NOTE: to turn error handling off, erase the semicolon in the line above. ; GET a POINT from the user and store it in PT1. (setq PT1 (getpoint "\ncenter point: ")) ; GET a DIST from the user and store it in RAD1. (setq RAD1 (getdist "\nradius: ")) ; assign result of MATH calculation to CIRCUM. (setq CIRCUM (* (* 2 PI) RAD1)) ; GET a INT from the user and store it in NUM1. (setq NUM1 (getint "\nnumber of gears: ")) ; assign result of MATH calculation to XSCALE. (setq XSCALE (/ (/ CIRCUM NUM1) 2)) ; GET a DIST from the user and store it in LEN1. (setq LEN1 (getdist "\nlength of tooth: ")) ; ASSIGN a value to ANG1. (setq ANG1 0) ; BEGIN LOOP loop1. ; LOOP NUM1 times. (setq I -1) (repeat NUM1 (setq I (1+ I)) ; assign result of MATH calculation to ANG1. (setq ANG1 (/ (* I 360.0) NUM1)) ; assign result of MATH calculation to ROT1. (setq ROT1 (+ ANG1 270.0)) ; OPERATION - store the result in PT2. (setq PT2 (POLAR PT1 (/ (* ANG1 PI) 180.0) RAD1)) ; Input to AutoCAD's command line. (command "insert" "tooth" PT2 XSCALE LEN1 ROT1 ) ) ; END LOOP loop1. ; Reset "cmdecho" to previous value. (setvar "cmdecho" OLDCE) ; Reset "texteval" to previous value. (setvar "texteval" OLDTE) ; Reset *error* to previous definition. (setq *error* OLDERR) ; Exit quietly (no return value.) (prin1) )