Beruflich Dokumente
Kultur Dokumente
2015
Este tutorial nos enseara los componentes de la programacion en Autolisp, util para continuar
con los demas temas.
Realiza un Me gusta, continuare subiendo videos
Mejores comentarios
DanielTV TODAVHace 1 ao
que mal, era justo lo que andaba buscando hace mucho y cuando lo encuentro, tiene precio.
Responder
comentarios
JAIDENHace 10 meses
Profesor buen dia, soy estudiante de ing civil, y este ejercicio ayuda bastante para el diseo de
planos, me gustara saber como puedo reemplazar el circulo por una letra , es decir en vez del
numero dentro del circulo, poner una letra antes de la enumeracin ejem: A1.. A2.... A3 .. .. le
agradezco su pronta colaboracin, un saludo desde COLOMBIA...
Responder 1
Frankb932Hace 1 ao
Muy bien explicado! Quisiera poder agregarle una linea al circulo para poder indicar a que
objeto hace referencia ese numero. Como seria el cdigo en este caso? Muchas gracias.
Responder 1
Alfonso ViveroHace 1 ao
gracias, por este video, tengo un block con attributes pero es un ellipse y quisiera una funsion
de lisp para que cad que lo insert se incremente como en este video, si pudieras aser un video
con esta situasion. Gracias.
Responder 1
Abel MoranHace 1 ao
Escrbame a amoranc2@gmail.com
Responder
joetron82Hace 2 meses
Buen Video Tutorial.
Responder
Tutorial en mi Blog:
http://goo.gl/O7h5f4
#######################################################
El procedimiento de uso:
1. Cargar el lisp.
2. Digitar el comando de iniciacin del lisp: "MLIN"
3. Seleccionar las lineas o polilineas a medir.
4. Enter.
5. Las lneas son medidas individualmente y el resultado aparece en pantalla, y la longitud total
aparece en la linea de comando.
[1/12]
Programacin en AutoLISP
ONCE.1. INTRODUCCIN
A parte de todo lo visto en cuestin de personalizacin, AutoCAD 14 ofrece
al usuario la posibilidad de crear programas y aplicaciones verticales
totalmente funcionales. Estos programas podrn ser distribuidos por el
creador, eso s, siempre corrern bajo AutoCAD.
La capacidad para hacer un programa nos lleva mucho ms all de la simple
personalizacin de mens o patrones de sombreado, nos lleva a un mundo
totalmente integrado en AutoCAD desde donde podremos disear nuestros
propios comandos, manipular dibujos o incluso acceder a la Base de Datos
interna del programa.
AutoCAD 14 proporciona diversas interfaces de programacin de
aplicaciones que vamos a comentar ahora de forma somera.
ONCE.2. CARACTERSTICAS DE
AutoLISP
Como ya hemos dicho, LISP (LISt Processing) es un lenguaje de
programacin que se remonta a los aos cincuenta y que fue desarrollado
para la investigacin de inteligencia artificial. La base de su funcionamiento
es el manejo de listas, en lugar de datos numricos como otros lenguajes.
AutoLISP es una implantacin LISP en AutoCAD.
Una lista es un conjunto de smbolos. El smbolo es la unidad mnima bsica
de una lista, y puede ser una variable, una funcin inherente a AutoLISP,
una funcin de usuario, un dato constante... Las listas elaboradas mediante
smbolos son evaluadas y procesadas para obtener un resultado.
Para programar en AutoCAD, este lenguaje proporciona una serie de
posibilidades como la facilidad para manejar objetos heterogneos
(nmeros, caracteres, funciones, entidades u objetos de dibujo, etctera), la
facilidad para la interaccin en un proceso de dibujo, la sencillez del lenguaje
y su sintaxis, y otras que hacen de l una herramienta muy til y sencilla de
manejar y aprender.
Como tambin hemos dicho ya, el lenguaje AutoLISP (y LISP) es un lenguaje
evaluado, y no interpretado o compilado. Los lenguajes interpretados son
ledos palabra a palabra por el ordenador, al ser introducidas, y cada una de
ellas convertida a lenguaje mquina. Esto hace que sea sencilla su edicin y
deteccin de errores de sintaxis u otros; por el contrario, hace que sean muy
lentos (ejemplo: Microsoft QBASIC). Los cdigos de los lenguajes
compilados son escritos por completo y, antes de su ejecucin final, es
necesario compilarlos, convirtindolos as en cdigo fuente ejecutable y
comprensible por la mquina. Este tipo de lenguajes hace que su ejecucin
sea ms rpida y pura pero, en contra, resulta ms difcil su depuracin
(ejemplos: Microsoft QuickBASIC o Borland C++).
Los lenguajes evaluados AutoLISP estn a caballo entre unos y otros. No
son tan rpidos como los compilados pero son ms flexibles e interactivos
que estos. Es posible, por ejemplo, construir un programa con AutoLISP que
sea capaz de modificarse a s mismo bajo determinadas circunstancia; sta
es la base de los llamados Sistema Expertos.
El mecanismo evaluador de AutoLISP es la propia lista: conjunto de smbolos
separados entre s por, al menos, un espacio blanco y encerrados entre
parntesis. Esto es, desde el momento que existe una expresin encerrada
entre parntesis, AutoLISP la evala e intenta ofrecer un resultado.
AutoLISP es un subconjunto del lenguaje Common LISP. Como ha sido
diseado para trabajar desde AutoCAD, se han seleccionado las
caractersticas de LISP ms adecuadas para este fin y, adems, se han
aadido otras nuevas, sobre todo en la manipulacin de objetos de dibujo,
acceso a la Base de Datos de AutoCAD e interaccin grfica general.
Los programas en AutoLISP son simples archivos de texto ASCII, con la
extensin habitual .LSP. Una vez hecho el programa, habremos de cargarlo
desde el propio editor de dibujo de AutoCAD. Tambin es posible escribir
lneas de cdigo AutoLISP desde la lnea de comandos del programa, como
veremos en breve.
Es posible la creacin de rdenes nuevas que llamen a programas en
AutoLISP, as como la redefinicin de comandos propios de AutoCAD, como
por ejemplo LINEA o DESPLAZA. Pero una de las ms importantes
potencialidades de AutoLISP es el acceso directo a la Base de Datos interna
de AutoCAD. Toda la informacin de un dibujo, como deberamos saber, no
se guarda como objetos de dibujo en s, o sea, cuando salvamos un .DWG, en
disco no se guardan los crculos, lneas, etctera, sino una relacin o base de
datos donde se dice dnde aparece un crculo o una lnea, con qu
coordenadas de origen y final, con qu radio o dimetro, tipo de lnea,
color... Podremos pues desde AutoLISP acceder a dicha base de datos para
modificarla, editarla o para exportar datos, por ejemplo, a una base de datos
externa.
ONCE.2.2. Procedimientos de
evaluacin
La base de todo intrprete de LISP es su algoritmo evaluador. ste analiza
cada lnea de programa y devuelve un valor como resultado. La evaluacin
slo se realizar cuando se haya escrito una lista completa y sta podr ser
cargada desde un archivo de texto o tecleada directamente en la lnea de
comandos de AutoCAD 14.
El primer elemento de la lista es comparado con todos los nombres de
funciones inherentes base o subrs internas de AutoLISP, con todos los
nombres de subrs externas cargadas desde aplicaciones ADS o ARX y en su
caso con todos los nombres de funciones de usuario cargadas en memoria.
Si el nombre es reconocido, se realiza la evaluacin de la expresin de
AutoLISP. Esta puede consistir en asignar un valor a una variable, cargar en
memoria una funcin de usuario, escribir un resultado en pantalla o en un
archivo, dibujar un objeto grfico, etc.
El primer elemento de la lista debe ser por tanto un nombre de funcin. El
resto de elementos se consideran argumentos de dicha funcin. La
evaluacin en AutoLISP se realiza de acuerdo a las siguientes reglas.
Primera:
Las listas se evalan quedando determinadas por el primer elemento. Si ste
es un nombre de funcin inherente o subrutina, los elementos restantes de
la lista son considerados como los argumentos de esa funcin. En caso
contrario se considera como un nombre de funcin definida por el usuario,
tambin con el resto de elementos como argumentos. Cuando los elementos
de una lista son a su vez otras listas, stas se van evaluando desde el nivel
de anidacin inferior (las listas ms "interiores"). El valor resultante en cada
evaluacin de las listas "interiores", es utilizado por las listas "exteriores".
Por ejemplo:
(SETQ sx (SIN (* PI (/ x 180.0))))
La lista ms "interior" contiene como primer elemento el nombre de la
funcin de AutoLISP /que realiza el cociente o divisin del siguiente
elemento entre los restantes. La evaluacin de dicha lista devuelve el
resultado del cociente, en este caso el valor contenido en la
variable xdividido entre el nmero real 180.0. Dicho valor es utilizado como
elemento en la lista circundante que empieza por la funcin de
AutoLISP * que realiza una multiplicacin o producto. Esta lista se evala
ofreciendo como resultado el producto de PI (3,14159) por el valor anterior.
A su vez el resultado interviene como argumento en la lista que empieza por
la funcin de AutoLISP SIN, que es evaluada obtenindose el seno. Este
interviene por ltimo como argumento de la lista ms exterior que empieza
por la funcin de AutoLISP SETQ , cuyo resultado es asignar o almacenar en
la variable sx el valor del seno. Este valor es devuelto por la lista
de SETQ como resultado final.
Segunda:
Puesto que cada lista contiene un parntesis de apertura y otro de cierre,
cuando existen listas incluidas en otras, todos los parntesis que se vayan
abriendo deben tener sus correspondientes de cierre. Si se introduce desde
el teclado una expresin en AutoLISP a la que falta por cerrar algn
parntesis, se visualiza un mensaje del tipo n> donde n es un nmero que
indica cuntos parntesis faltan por cerrar. Se pueden introducir por teclado
esos parntesis y subsanar el error. Por ejemplo:
Comando: (SETQ sx (SIN (* PI (/ x 180.0))
2> ))
0.523599
Tercera:
Tambin es posible evaluar directamente un smbolo (extraer por ejemplo el
valor actual contenido en una variable), introduciendo por teclado el signo
de cerrar admiracin seguido del nombre del smbolo. Esta evaluacin se
puede producir incluso en mitad de un comando. Por ejemplo, para
suministrar como ngulo para un arco el valor contenido en la variable x, se
responde a la solicitud de AutoCAD con !x. Por ejemplo:
Comando: !sx
0.523599
Cuarta:
Quinta:
Los smbolos de variables participan con el valor que contienen (que les est
asociado) en el momento de la evaluacin. Por ejemplo:
!x devuelve 30
!sx devuelve 0.523599
Sexta:
Determinadas funciones de AutoLISP pueden devolver un valor nulo, que se
representa mediante la expresin nil. Por ejemplo:
Comando: (PROMPT "Bienvenido a AutoLISP\n")
Bienvenido a AutoLISP
nil
La funcin PROMPT escribe en la lnea de comando el mensaje especificado y
devuelve nil. El cdigo \n equivale a INTRO.
Las dos primeras que veremos son sencillas de entender y utilizar. Ambas se
refieren al incremento, positivo o negativo, de una unidad a un valor
numrico.
(1+ valor)
Esta sintaxis corresponde a la funcin de incremento positivo de una unidad
al valor indicado. As, si queremos incrementar en 1 el valor 576, haremos:
(1+ 576)
Esto equivale a (+ 576 1) pero es de una forma ms cmoda; el resultado
es 577.
NOTA: La funcin se denomina 1+ en s, por lo que no existe espacio
entre 1 y +.
Podemos realizar estos incrementos con nombres de variable:
(1+ n)
lo que incrementar en una unidad el valor de n. Esto puede ser
especialmente necesario para controlar los llamados contadores-suma en
programacin, del tipo:
(SETQ sum (1+ sum))
Esto ya lo veremos a la hora de declarar variables.
La siguiente funcin resta (incremento negativo) una unidad al valor
numrico indicado. Equivale a (- valor 1), pero de una forma ms
cmoda.
(1- valor)
Por ejemplo:
(1- 32)
suyo resultado es 31.
Otros ejemplos de estas dos funciones:
(1- n)
(1- 67.90)
(1- -23)
(1+ -34.0)
(1+ (+ tuttot 1)
(1- (* 2 2))
(1- (* (/ 32 2) (+ 10 1.0)))
(ABS valor)
Esta funcin ABS devuelve el valor absoluto del nmero indicado o expresin
indicada. De esta forma, la siguiente expresin:
(ABS 23)
devuelve 23.
Las siguientes expresiones tienen el siguiente efecto indicado:
(ABS 25.78) devuelve 25.78
(ABS 45) devuelve 45
(ABS 0) devuelve 0
(ABS 13) devuelve 13
(ABS (/ 2 3.0)) devuelve 0.666667
(ABS (/ 2 -3.0)) devuelve 0.666667
(FIX valor)
FIX trunca un valor a su parte entera (positiva o negativa), es decir, de un
nmero real con decimales devuelve nicamente su parte entera. Pero,
cuidado, no se produce redondeo, slo un truncamiento.
Ejemplos:
(FIX 32.79) devuelve 32
(FIX 12.45) devuelve 12
(FIX (/ 10 3.0)) devuelve 3
(FIX (/ 10 3.0)) devuelve 3
(EXP exponente)
Esta funcin devuelve la constante (nmero) e elevada al exponente
indicado. Se corresponde con el antilogaritmo natural. Por ejemplo:
(EXP 1) devuelve 2.71828
(LOG valor)
LOG devuelve el logaritmo neperiano o natural (en base e) del valor indicado.
Por ejemplo:
(LOG 4.5) devuelve 125.0000
(GCD valor_entero1 valor_entero2)
Esta sintaxis se corresponde con la funcin de AutoLISP GCD, que devuelve el
mximo comn denominador de los dos valores indicados. Estos valores han
de ser obligatoriamente enteros, de no ser as, AutoLISP devuelve bad
argument type como mensaje de error. Veamos unos ejemplos:
(GCD 45 80) devuelve 5
(GCD 80 70) devuelve 10
(GCD (* 10 10) (/ 70 2)) devuelve 5
Si se indica un entero negativo el mensaje de error de AutoLISP
es improper argument.
Las dos ltimas funciones matemticas que veremos pueden sernos de gran
ayuda a la hora de programar. Una de ellas (MAX) devuelve el mayor de
todos los nmeros indicados en la lista. Su sintaxis es:
((20 3) * (8 2))
1 + 78.8 + ((78.8 ^ 2) / 2) + ((78.8 ^ 3) / 3)
(sen ( (80 * 28.002) cos (PI / 2))) / (PI (1 / 2))
arccos (100 / 2)
(124.6589 * (e ^ 2.3)) / (7 * 2)
ln (45 * (7 / 2))
(23.009 / 78.743) ^ (56.00123 1)
Realcense ejercicios de clculo de valores mayores y menores de listas, as
como de mximos comunes denominadores.
Realizar un par de ejercicios de incremento y decremento de una unidad a
valores.
NOTA: Las operaciones en general siguen en AutoLISP la jerarqua de las
operaciones matemticas: parntesis internos, parntesis externos,
operadores unitarios (signos), potenciacin, multiplicacin y divisin, suma y
resta, operadores relacionales (mayor que, menor que...) y operadores
lgicos (lgebra de Boole). Y cuando existen varios operadores en el mismo
nivel, se ejecutan de izquierda a derecha. Ahora mismo veremos operadores
relacionales o de comparacin y, luego, el lgebra de Boole en AutoLISP.
El lenguaje de programacin ms
potente?
Publicado en 'Foro Libre' por unknow, 14 Nov 2013.
1.
unknowMiembro maestro
Hola,
En estos das he estado buscando mucha informacin y opiniones acerca de los
mejores lenguajes de programacin. Los cursos de los institutos que he averiguado
empiezan entre noviembre y enero, as que debo decidirme por un lenguaje rpido, en
mi lista estn lenguajes como PHYTON, JAVA, C++ y RUBY. Debo resaltar que deseo
un lenguaje muy poderoso que me permita desarrollar aplicaciones y orientarme a
objetos.
POSDATA:
Tengo conocimientos de HTML, CSS y PHP.
unknow, 14 Nov 2013
#1
2.
JSkoneMiembro maestro
Java pero es muy jodido.
JSkone, 14 Nov 2013
#2
3.
fireblossomSuspendido
C, el papa...
o 2
#3
4.
crockMiembro diamante
Desde hace muchos aos es el lenguaje C, incluso en el viejo entorno DOS los
programas a medida hechos en C eran una bala.
crock, 14 Nov 2013
#4
5.
algun_usuarioMiembro de honor
No basta un lenguaje, tienes que aprender muchos lenguajes, el lenguaje ms
poderoso sera el assembler pero es muy complicado, slo lo usan los genios en
casos muy especiales, en su lugar se prefiere el C que le sigue en potencia pero es
ms fcil que el ensamblador, luego siguen los menos potentes pero ms fciles los
derivados del C como C++, C#, Java, etc.
o 1
#5
6.
TylosaurioMiembro de plata
C
peanutbutterjellytime
Tylosaurio, 14 Nov 2013
#6
7.
unknowMiembro maestro
crock escribi:
Desde hace muchos aos es el lenguaje C, incluso en el viejo entorno DOS los programas a medida
hechos en C eran una bala.
#7
8.
SteelMiembro de bronce
Python me parece que se enfoca ms a problemas cientficos, en todo caso un clsico
como C++ es un lenguaje muy potente, sigue siendo usado y ya pasaron casi 30 aos.
Java tambin es muy bueno por lo que me han dicho, pero es un descendiente de
lenguaje C++.
Bueno yo solamente he aprendido Pascal en su ltima versin ya a fines de los 90s y
un poco de COBOL y Basic, pero por mi cuenta, eso cuando me entro el bicho de
programar de all lo deje para dedicarme a mi actual carrera.
Steel, 14 Nov 2013
#8
9.
Mike7Suspendido
unknow escribi:
Hola,
En estos das he estado buscando mucha informacin y opiniones acerca de los mejores lenguajes de
programacin. Los cursos de los institutos que he averiguado empiezan entre noviembre y enero, as que
debo decidirme por un lenguaje rpido, en mi lista estn lenguajes como PHYTON, JAVA, C++ y RUBY.
Debo resaltar que deseo un lenguaje muy poderoso que me permita desarrollar aplicaciones y orientarme
a objetos.
POSDATA:
Tengo conocimientos de HTML, CSS y PHP.
Jskone tiene razn Java es un lenguage potente pero tambien algo jodido, de todos
modos es el que mas ensean en los institutos sobre todo porque ahora la mayoria de
las cosas se proyectaran hacia moviles
y como tambien dijo algun_usuario no bastara con un solo lenguaje tendras que saber
muchos mas
Mike7, 14 Nov 2013
#9
10.
El pelukaSuspendido
Aprende python ya que tienes conocimientos en php, y java si lo que quieres es
programacin orientado a objetos.
#10
11.
unknowMiembro maestro
algun_usuario escribi:
No basta un lenguaje, tienes que aprender muchos lenguajes, el lenguaje ms poderoso sera el
assembler pero es muy complicado, slo lo usan los genios en casos muy especiales, en su lugar se
prefiere el C que le sigue en potencia pero es ms fcil que el ensamblador, luego siguen los menos
potentes pero ms fciles los derivados del C como C++, C#, Java, etc.
Mike7 escribi:
Jskone tiene razn Java es un lenguage potente pero tambien algo jodido, de todos modos es el que mas
ensean en los institutos sobre todo porque ahora la mayoria de las cosas se proyectaran hacia moviles
y como tambien dijo algun_usuario no bastara con un solo lenguaje tendras que saber muchos mas
El peluka escribi:
Aprende python ya que tienes conocimientos en php, y java si lo que quieres es programacin orientado a
objetos.
Te recomiendo que no te metas en las familias de C, seria mejor invertir en tiempo en lisp.
Por qu dices lo de C?
unknow, 14 Nov 2013
#11
12.
Cesar44Miembro maestro
Steel escribi:
o 1
#12
13.
sexy93Miembro de plata
depende ps , de que quieres trabajar?
sexy93, 14 Nov 2013
#13
14.
MetalfoteroMiembro maestro
De los que conosco, el visual basic.
Metalfotero, 14 Nov 2013
#14
15.
metalgearxdMiembro de oro
No creo que hay un lenguaje mas poderoso que otros , todos tienen sus pro y contras ,
ademas Lenguaje C++ es un lenguaje un poco viejo , ahora lo que se maneja es
LENGUAJES DE PROGRAMACION en la web como php , java , javascript , eso es
dependiendo de lo que se quiera trabajar
o 1
#15
16.
Slayer_XMiembro de plata
No puedes usar un lenguaje para todo, hay lenguajes adecuados para determinadas
situaciones, al final lo que importa es que aprendas a programar, en 1 ao aparecer
un nuevo lenguaje especfico para hacer eso que buscas y tendrs que aprenderlo, asi
que enfocate en aprender a programar en general, algorimos, estructuras de datos,
eso es lo importante, los lenguajes van y vienen, solo es aprender sintaxis.
Clases de Programacin
AutoLISP/AutoCAD
Agregar a favoritos