Autolisp. desarrollo de un codo.

Solo disponible en BuenasTareas
  • Páginas : 11 (2619 palabras )
  • Descarga(s) : 0
  • Publicado : 13 de diciembre de 2011
Leer documento completo
Vista previa del texto
codo.lsp:

;;; set 2oo8
; *************** LISTA DE VARIABLES DEL PROGRAMA ****************

; AD : angulo de desvio en grados
; RG : radio de giro
; NS : numero de sectores
; NP : numero de puntos a calcular
; ADR : angulo de desvio en radianes
; DN1 : diametro neutro de la base inferior
; DN2 : diametroneutro de la base superior
; AS : angulo del sector

; LD : longitud del desarrollo
; DG : diferencia entre generatrices
; GMIN : semigeneratriz minima
; PBT : punto base de la curva
; C : contador
; L1 : lista de puntos de la sinusoide

; ****************************************************************
;************** DEFINICION DE FUNCIONES AUXILIARES **************
; ****************************************************************

; *** funcion tangente de un numero

;;; TAN
;;; acepta cualquier ángulo en radianes y devuelve la tangente en un rango de
;;; -9.7E307+epsilon a 9.7E307, ambos inclusive. Se analiza la posibilidad de que
;;; el coseno del valor pasado seaigual a cero, para evitar un error de división
;;; por cero.
(defun tan (z / cosz)
(if (zerop (setq cosz (cos z)))
*INF*
(/ (sin z) cosz)
) ;_fin de if
) ;_fin de defun
;*** ACOS (coseno inverso)
;;; acepta un argumento en el rango -1.0 a 1.0 ambos inclusive, y devuelve un
;;; ángulo en radianes en el rango de pi a 0 ambosinclusive
(defun acos (z /)
(atan (sqrt (- 1.0 (* z z))) z)
) ;_fin de defun

; *** funciones para la introduccion de datos.
; *** numeros enteros

(defun datint (msg actval defval / resp)
(if (equal actval nil)
(setq actval defval)
)
(setq resp (getint
(strcat msg ":")
)
)
(if (equal resp nil)
(setq actval actval)
resp
)
); *** numeros reales

(defun datreal (msg actval defval / resp)
(if (equal actval nil)
(setq actval defval)
)
(setq resp (getreal (strcat msg ":")))
(if (equal resp nil)
(setq actval actval)
resp
)
)

; ****************************************************************
; ************** DEFINICION DE LA ORDEN CODO **************
;****************************************************************

(defun C:CODO (/ C CONTROL DG DIST1 GMIN L1 LD
curva P0 P1 P10 P2 P3 P4 P5 P9
PB PBT PC1 PC2
)
(command "_.undo" "_group")
(setvar "cmdecho" 0)
(setq oldosmode (getvar "osmode"))
(setvar "osmode" 0)
;;; (setq
;;;
;;; ad (datreal "\n Introduzca el Angulo deDesvio : " ad 45.00)
;;; rg (datreal "\n Introduzca el Radio de Giro : " rg 100.00)
;;; dn (datreal "\n Introduzca el Diametro Neutro de la Pieza : "
;;; dn
;;; 10
;;; )
;;; ns (datint "\n Introduzca el Numero de Sectores : " ns 4)
;;; np (datint "\n Introduzca el Numero de Puntos a calcular : "
;;; np
;;; 100
;;; )
;;;
;;; )

(setq carga (load_dialog "codo.dcl"))(if (not (new_dialog "CODO" carga))
(exit)
)
(setq dias0 (dimx_tile "codos")
dias$ (dimy_tile "codos")
)
(start_image "codos")
(slide_image 0 0 dias0 dias$ "codos")
(end_image)
(if DN1
(set_tile "DIA" (rtos DN1 2 2))
(set_tile "DIA" "")
)
(if DN2
(set_tile "DIA2" (rtos DN2 2 2))
(set_tile "DIA2" "")
)
(if AD(set_tile "ANG" (rtos AD 2 2))
(set_tile "ANG" "")
)
(if RG
(set_tile "RG" (rtos RG 2 2))
(set_tile "RG" "")
)
(if NS
(set_tile "NS" (itoa NS))
(set_tile "NS" "")
)
(if NP
(set_tile "NP" (itoa NP))
(progn
(set_tile "NP" "200")
(setq NP 200)
)
)
(action_tile "DIA" "(setq DN1 (atof (get_tile...
tracking img