AutoCAD ¿Sabes si hay un error en código de VisualLisp?

Hola a todos, quiero saber si este código está bien... y si está mal cómo AutoCAD me lo corrige. Tengo AutoCAD 2004.
El código es el siguiente:


; RUEDA.LSP: Dibujo de una rueda dentada
(defun dibuja_rueda
(centro radio numdi/ dang ang ang1 ang2 ang3 pto1 pto2 pto3 pto4 pto5 radd blip cmd)

(setq blip(getvar "BLIPMODE"))
(setq cmd(getvar "CMDECHO"))
(setvar "BLIPMODE" 0)
(setvar "CMDECHO" 0)

(setq dang (*3.141592 2))
(setq dang (/ dang numdi))
(setq ang1 (/ dang 4))
(setq ang2 (/ dang 2))
(setq ang3 (* 3 ang1))

(setq ang 0)
(repeat numdi
(setq pto1 (polar centro ang radio))
(setq pto3 (polar centro (+ ang ang2) radio))
(setq radd (/ (distance pto1 pto3) 2))
(setq pto2 (polar centro (+ ang ang1)(+ radio radd)))
(command "arco" pto1 pto2 pto3)

(setq pto5 (polar centro (+ ang dang) radio))
(setq radd(/ (distance pto3 pto5)2))
(setq pto4(polar centro (+ang ang3)(- radio radd)))
(command "arco" pto3 pto4 pto5)

(setq ang (+ ang dang))
)

(setvar "BLIPMODE" blip) ;restablecemos BLIPMODE
(setvar "CMDECHO" cmd) ;restablecemos CMDECHO
nil
)

;La función RUEDA es la que solicita los parámetros.
(defun c:rueda(/ cen rru ndi)

(initget 1)
(setq cen (getpoint" \nCentro de la rueda:"))
(initget 7)
(setq rru (getdist" \nRadio de la rueda:"))
(initget 7)
(setq ndi (getint" \nNúmero de dientes:"))
(dibuja_rueda cen rru ndi)
)
 

vorpal

VIP
Es bunea costumbre indentar las líneas para ver el nivel de anidamiento de o de paréntesis abiertos.

Creo que es el programa "visual lisp" el que te permite verificar la sintaxis de una rutina como esta.

Saludos.
 

patttxi

Novel
Había unos cuantos errores, prueba con este código...
Saludos.


; RUEDA.LSP: Dibujo de una rueda dentada
(defun dibuja_rueda
( / );(centro radio ndi / dang ang ang1 ang2 ang3 pto1 pto2 pto3 pto4 pto5 radd blip cmd)
(setq blip(getvar "BLIPMODE"))
(setq cmd(getvar "CMDECHO"))
(setvar "BLIPMODE" 0)
(setvar "CMDECHO" 0)
(setq dang (* 3.141592 2))
(setq dang (/ dang ndi))
(setq ang1 (/ dang 4))
(setq ang2 (/ dang 2))
(setq ang3 (* 3 ang1))
(setq ang 0)
(repeat ndi
(setq pto1 (polar centro ang radio))
(setq pto3 (polar centro (+ ang ang2) radio))
(setq radd (/ (distance pto1 pto3) 2))
(setq pto2 (polar centro (+ ang ang1)(+ radio radd)))
(command "_arc" pto1 pto2 pto3)
(setq pto5 (polar centro (+ ang dang) radio))
(setq radd(/ (distance pto3 pto5)2))
(setq pto4(polar centro (+ ang ang3)(- radio radd)))
(command "_arc" pto3 pto4 pto5)
(setq ang (+ ang dang))
)
(setvar "BLIPMODE" blip) ;restablecemos BLIPMODE
(setvar "CMDECHO" cmd) ;restablecemos CMDECHO
nil
)
;La función RUEDA es la que solicita los parámetros.
(defun c:rueda(/)
(initget 1)
(setq centro (getpoint" \nCentro de la rueda:"))
(initget 7)
(setq radio (getdist" \nRadio de la rueda:"))
(initget 7)
(setq ndi (getint" \nNúmero de dientes:"))
(dibuja_rueda) ;)
)
 
Arriba