Nuevo servicio de AutoDesk, buscador en inglés de detalles constructivos, en formatos
*.Dwg, *.Dwf, *.Pdf, y otros, por ahora de marcas de habla inglesa:
****www.seek.autodesk.com****
29 may 2008
*Buscador de detalles para Arquitectos e Ingenieros, en archivos de productos AutoDesk, CAD, Office y otros:
11 may 2008
Usar la barra de estado de AutoCAD para mostrar datos, con _MODEMACRO:
Customizar la barra de estado de AutoCAD en DIESEL:
¿Qué es DIESEL?:
DIESEL (Direct Interpretively Evaluated String Expression Language),
es Lenguaje de Expresiones como Cadenas de Texto Interpretables en forma Directa……..
Es otra Interface de Programación de AutoCAD, sirve para personalizar la “Barra de estado”
(Status Bar) de AutoCAD, crear comandos a partir de iconos y para modificar acciones
en comandos existentes, aunque existen interfaces mas poderosas como Vlisp,
VBA u ObjectARX (C++).
Las listas en DIESEL son siempre cadenas de texto de un solo renglón, evaluables
directamente, aunque sean operaciones matemáticas,y devuelven cadenas de texto
como resultados……..Existen dos tipos de uso difundidos para el lenguaje DIESEL dentro del
AutoCAD, customizar la barra de estado y crear o modificar macros de comandos.
Personalizar resultados en “Barra de estado” con MODEMACRO:
Se suele utilizar el lenguaje DIESEL dentro de la variable de sistema MODEMACRO
para mostrar en la barra de estado cierta información como la fecha y la hora, valores
de variables de sistema o variables de entorno o valores recuperables por rutinas Vlisp.
*Aquí Las listas comienzan con signo de dólar “$”, y listas anidadas igual.
Expresiones que pueden tener este formato:
$(funcion
Los resultados son igualmente cadenas de texto.
Los operandos de una expresión DIESEL van separados por comas “,”……..
*El separador de decimales es el punto “.”
*Todo parentesis de apertura tiene su par de cierre.
*Se llama al comando MODEMACRO, y allí se introduce la lista DIESEL.
* “MODEMACRO” solo sirve para usar la “barra de estado” como panel de
resultados para mostrar alguna función o variable de AutoCAD.
El valor inicial de MODEMACRO al arrancar AutoCAD es “NIL”, y vuelve a NIL
al apagar AutoCAD o al ingresar un punto “.” en la solicitud del comando.
Ejemplo:
Quiero que la Barra de Estado de AutoCAD me muestre la fecha, entonces
inicio comando “MODEMACRO” e ingreso la expresión DIESEL:
$(edtime,$(getvar,date),Es----DDDD-----DD/MONTH/YYYY)
Donde uso dos funciones DIESEL:
edtime-------devuelve fecha y hora en un formato dado.
getvar--------devuelve el valor de la variable “date” o fecha de AutoCAD.
*Aquí “edtime” toma el valor de “date” en formato decimal y lo presenta con
el formato especificado:
“ES----DDDD(Domingo)----DD(13)/MONTH(Abril)/YYYY(2008)"
Y la barra de estado queda así:
*Si quiero que también me aparezca la hora con minutos y segundos pongo
en “modemacro”:
$(edtime,$(getvar,date),Es----DDDD-----DD/MONTH/YYYY-----HH:MM:SS)
Expresión para modemacro que muestra en barra de estado la altura
presente de texto:
altura de texto:$(getvar,textsize)
*En Modemacro, todo lo que sigue al signo de dólar “$” y al paréntesis de
apertura es tomable como DIESEL, hasta que cierre ese paréntesis.
Expresión para tener el nombre del archivo actual:
$(getvar,dwgname)
Expresión que escribe en barra de estado la capa actual:
Capa actual: $(getvar,clayer)
Para que muestre capa y color actuales:
capa:$(getvar,clayer) - color:$(getvar,cecolor)
Para que aparezca el nombre del comando en ejecución:
$(getvar,cmdnames)
Mostrar area de última medición cuando este aplicando comando _area:
$(if,$(eq,$(getvar,cmdnames),AREA), area anterior:$(getvar,area))
Funciones DIESEL usables para “MODEMACRO”:
Suma----“$(+,num,num,….)”-------
Ejemplo: $(+,12,1,23.3)------es 12+1+23.3
Resta----“$(-,num,num)”-------
Ejemplo: $(-,76.2,12)---------es 76.2 – 12
Multiplicación----“$(*,num,num)”----
Ejemplo: $(*,23,2.2)----es 23 x 2.2
División----“$(/,num,num)”----
Ejemplo: $(/,211,3)-------------es 211 ÷ 3
Igualdad----“$(=,num,num)”---
Ejemplo: $(=,12,12)------------es 12=12
Menor que----“$(<,num,num)”------
Ejemplo: $(<,13.2,15)----------es 13.2 menor que 15 Mayor que----“$(>,num,num)”------
Ejemplo: $(>,87.231,76)-------es 87.231 mayor que 76
Distinto que----“$(!=,num,num)”----
Ejemplo: $(!=,64,63.89)--------es 64 ≠ 63.89
Menor o igual que----“$(<=,num,num)” ----
Ejemplo: $(<=,A,2.111)-----es A<=2.111-----A puede ser otra lista anidada.
Mayor o igual que----“$(>=,num,num)”----
Ejemplo: $(>=,B,T)-----es B>=T
Conjunción Y (algo y otra cosa)----“$(and,num,num)” ----
Ejemplo: $(and,A,B)----es A y B
Transformar un número a un ángulo en un determinado modo, como cadena de texto:
Forma: “$(angtos,num,modo,precision)”
En ANGTOS, el modo
0 --------Grados
1 --------Grados/minutos/segundos
2 --------Grados centesimales
3 --------Radianes
4 --------Unidades de topografia
Ejemplo:
$(angtos,23.12,1,2) -----devuelve 244d41'
*El comando _MACROTRACE muestra en linea de comandos las trayectorias
de operaciones de comandos cuando esta en 1, en 0 queda anulada esa
muestra*
Para ver la operatoria en ventana de comandos, pongo “MACROTRACE” en 1:
Para:
$(angtos,12.22,1,4)
Macrotrace muestra esto:
Comando:
MODEMACRO
Indique nuevo valor para MODEMACRO, o . para ninguno <"">: $(angtos,12.22,1,4)
Eval: $(ANGTOS, 12.22, 1, 4)
===> 340d9'16"
Para: $(angtos,3.14,0,3) -------------macrotrace muestra:
Comando:
MODEMACRO
Indique nuevo valor para MODEMACRO, o . para ninguno <"">: $(angtos,3.14,0,3)
Eval: $(ANGTOS, 3.14, 0, 3)
===> 179.909
*Pasa un número tomado como radianes a grados sexagesimales.
Mostrar Fecha y Hora:
“$(edtime, $(getvar,date), DD/ M/ YY - H:M:SS)”
Es presentar datos de la variable “date” en un determinado formato.
*Valores de FORMATO :
D.............dia, aparece asi: 9
DD..........dia,aparece: 09
DDD............nombre de dia tres letras: lun
DDDD.........nombre completo del dia: lunes
M.............mes: 6
MO...........mes con dos cifras: 06
MON.........mes tres letras: jun
MONTH.........mes, nombre completo: junio
YY..................año dos cifras: 78
YYYY.............año cuatro cifras: 1978
H ........................hora una cifra: 8
HH.................hora dos digitos: 08
MM................minutos dos digitos: 28
SS.................segundos dos digitos: 56
AM/PM.........AM o PM mayusculas: PM
am/pm............am o pm minusculas: pm
Ejemplo:
Comando:
MODEMACRO
Indique nuevo valor para MODEMACRO, o . para ninguno <"">:
$(EDTIME, $(getvar,date), DD/ M/ YY - H:M:SS)
Eval: $(EDTIME, $(getvar,date), DD/ M/ YY - H:M:SS)
Eval: $(GETVAR, date)
===> 2454571.99886917
===> 14/ 4/ 08 - 23:4:22------lo que se verá en barra de estado.
Igualdad entre cadenas comparadas:
Forma: “$(eq,num,num)”
Ejemplo:$(eq,$(getvar,PERIMETER), 2447.11)
es:
Comando: MODEMACRO
Indique nuevo valor para MODEMACRO, o . para ninguno <"">:
$(eq,$(getvar,PERIMETER), 2447.11)
Eval: $(EQ, $(getvar,PERIMETER), 2447.11)
Eval: $(GETVAR, PERIMETER)
===> 2447.11484019
===> 0-----------------la igualdad exacta no se cumple por lo que da cero,
si se cumple da 1.
Caso en que se cumple la igualdad:
$(eq,$(fix,$(getvar,PERIMETER)),1993)
Evaluacion:
Comando:
MODEMACRO
Indique nuevo valor para MODEMACRO, o . para ninguno <"">:
$(eq,$(fix,$(getvar,PERIMETER)),1993)
Eval: $(EQ, $(fix,$(getvar,PERIMETER)), 1993)
Eval: $(FIX, $(getvar,PERIMETER))
Eval: $(GETVAR, PERIMETER)
===> 1993.42587247
===> 1993
===> 1
Evaluar una cadena cualquiera:
Forma: “$(eval,expresión DIESEL)”
Ejemplo: $(eval, $(/, 12,2.3))
es:
Comando:
MODEMACRO
Indique nuevo valor para MODEMACRO, o . para ninguno <"">:
$(eval, $(/, 12,2.3))
Eval: $(EVAL, $(/, 12,2.3))
Eval: $(/, 12, 2.3)
===> 5.2173913
Otro ejemplo, mostrar la mitad del area medida anteriormente:
mitad de area:$(eval,$(/,$(getvar,AREA),2))
es:
Comando:
MODEMACRO
Indique nuevo valor para MODEMACRO, o . para ninguno <"">: mitad de
area:$(eval,$(/,$(getvar,AREA),2))
Eval: $(EVAL, $(/,$(getvar,AREA),2))
Eval: $(/, $(getvar,AREA), 2)
Eval: $(GETVAR, AREA)
===> 374271.29667677
===> 187135.64833839
aparece en linea de estado:
mitad de area: 187135.64833839
Rescatar solo la parte entera de un número real:
Forma: “$(fix,numero real)”
Mostrar redondeado el ultimo perimetro medido:
$(fix,$(getvar,PERIMETER))metros
Evaluación:
Comando:
MODEMACRO
Indique nuevo valor para MODEMACRO, o . para ninguno <"">:
redondeando, el ultimo perimetro tenia:$(fix,$(getvar,PERIMETER))metros
Eval: $(FIX, $(getvar,PERIMETER))
Eval: $(GETVAR, PERIMETER)
===> 2447.11484019
===> 2447
en barra de estado dirá:
redondeando, el ultimo perimetro tenia: 2447metros
Obtener un valor de una variable ambiental:
Forma: “$(getenv,variable ambiental)”
Sea obtener la ruta del sistema operativo:
la macro diesel es: $(GETENV, SystemRoot)
Evaluación:
Comando:
MODEMACRO
Indique nuevo valor para MODEMACRO, o . para ninguno <"">: $(getenv,SystemRoot)
Eval: $(GETENV, SystemRoot)
===> C:\WINDOWS----esto aparece en linea de estado.
Obtener valor de una variable de sistema:
Forma:”$(getvar,variable de sistema)”
Sea obtener el valor de "OSMODE" actual y mostrarlo en barra de estado,
la macro DIESEL es:
$(getvar,osmode)
Evaluación:
Comando:
MODEMACRO
Indique nuevo valor para MODEMACRO, o . para ninguno <",">: Osmode
actual:$(getvar,osmode)
Eval: $(GETVAR, osmode)
===> 4133
Aparece en linea de estado así:
Osmode actual:4133
"SI" condicional
Forma:”$(if,condicion,valor si se cumple, valor si no se cumple)”
Ejemplo:
Sea indicar en barra de estado si estoy en espacio modelo o en espacio papel:
$(IF, $(eq,$(getvar,cvport),1), -PAPEL-, -MODELO-)
estando en espacio medelo la evaluación es:
Comando:
MODEMACRO
Indique nuevo valor para MODEMACRO, o . para ninguno <"">: $(IF,
$(eq,$(getvar,cvport),1), -PAPEL-, -MODELO-)
Eval: $(IF, $(eq,$(getvar,cvport),1), -PAPEL-, -MODELO-)
Eval: $(EQ, $(getvar,cvport), 1)
Eval: $(GETVAR, cvport)
===> 2
===> 0
===> -MODELO- es lo aparece en barra de estado
Sea poner en barra de estado un indicador de si esta o no el “MODO ORTHO”:
Macro:$(IF, $(eq,$(getvar,orthomode),0), -MODO ORTHO FUERA-)
Evaluación cuando el modo está fuera:
Comando:
MODEMACRO
Indique nuevo valor para MODEMACRO, o . para ninguno <"">:
$(if,$(eq,$(getvar,orthomode),0),-MODO ORTHO FUERA-)
Eval: $(IF, $(eq,$(getvar,orthomode),0), -MODO ORTHO FUERA-)
Eval: $(EQ, $(getvar,orthomode), 0)
Eval: $(GETVAR, orthomode)
===> 0
===> 1
===> -MODO ORTHO FUERA- esto aparece en linea de estado.
Obtener un elemento de una lista con “INDEX”:
Forma:”$(index,numero indicador, expresion que da una lista)”
.....el numero indicador es 0 para el primer lugar, y 9 para el ultimo.
Sea mostrar las tres coordenadas del último punto al terminar un comando:
macro:
$(INDEX, 0, $(getvar,LASTPOINT)), $(INDEX, 1, $(getvar,LASTPOINT)), $(INDEX, 2, $(getvar,LASTPOINT))
Evaluación:
Comando:
MODEMACRO
Indique nuevo valor para MODEMACRO, o . para ninguno <"">: $(INDEX, 0,
$(getvar,LASTPOINT)),$(INDEX, 1, $(getvar,LASTPOINT)),$(INDEX, 2,
$(getvar,LASTPOINT))
Eval: $(INDEX, 0, $(getvar,LASTPOINT))
Eval: $(GETVAR, LASTPOINT)
===> 2982.40238032,672.8905039,0
===> 2982.40238032
Eval: $(INDEX, 1, $(getvar,LASTPOINT))
Eval: $(GETVAR, LASTPOINT)
===> 2982.40238032,672.8905039,0
===> 672.8905039
Eval: $(INDEX, 2, $(getvar,LASTPOINT))
Eval: $(GETVAR, LASTPOINT)
===> 2982.40238032,672.8905039,0
===> 0
aparece en barra de estado:
2982.40238032, 672.8905039,0
Evaluar selectivamente algún argumento de una expresión con “NTH”:
sea la siguiente expresión condicional aplicada a una distancia tomada
previamente con el comando “_DIST”,es------si la distancia tomada, es menor
o igual a 1200.0, evalua la primera expresion de dos dadas, sino evalua la
segunda de dos dadas:
$(if,$(<=,$(getvar,DISTANCE),1200.0),$(nth,0,$(/,$(getvar,DISTANCE),2),0.0), $(nth,1,$(/,$(getvar,DISTANCE),2),$(/,$(getvar,DISTANCE),3))) Evaluación con MODEMACRO:
Comando: MODEMACRO Indique nuevo valor para MODEMACRO, o . para ninguno <"">:
$(if,$(<=,$(getvar,DISTANCE),1200.0),$(nth,0,$(/,$(getvar,DISTANCE),2),0.0),
$(nth,1,$(/,$(getvar,DISTANCE),2),$(/,$(getvar,DISTANCE),3)))
Eval: $(IF, $(<=,$(getvar,DISTANCE),1200.0), $(nth,0,$(/,$(getvar,DISTANCE),2),0.0), $(nth,1,$(/,$(getvar,DISTANCE),2),$(/,$(getvar,DISTANCE),3)))
Eval: $(<=, $(getvar,DISTANCE), 1200.0)
Eval: $(GETVAR, DISTANCE) ===> 1377.12628071
===> 0
Eval: $(NTH, 1, $(/,$(getvar,DISTANCE),2), $(/,$(getvar,DISTANCE),3))
Eval: $(/, $(getvar,DISTANCE), 3)
Eval: $(GETVAR, DISTANCE)
===> 1377.12628071
===> 459.04209357
aparece n barra de estado: 459.04209357
Porque en ese caso $(getvar,DISTANCE) da-------1377.12628071
Optar por uno u otro, con “OR”:
Ejemplo,sea optar por un valor de medición de AREA o por valor =0:
$(or,$(getvar,AREA),0)
Comando:
MODEMACRO
Indique nuevo valor para MODEMACRO, o . para ninguno <"">:
$(or,$(getvar,AREA),0)
Eval: $(OR, $(getvar,AREA), 0)
Eval: $(GETVAR, AREA)
===> 10000-------------opta por el valor de area, cuando existe medición previa.
Si no existe solo evalúa el valor de $(getvar,AREA), y omite evaluar el 0.
Otro ejemplo:
Opción por dos números, los suma:
Comando:
MODEMACRO
Indique nuevo valor para MODEMACRO, o . para ninguno <"">: $(or,1,2)
Eval: $(OR, 1, 2)
===> 3
Convertir un número en cadena de texto según un formato con “RTOS”:
Ejemplo:
Quiero que el valor de la última distancia medida me aparezca como cadena
de texto en modo “DECIMAL” y precisión “2”:
Expresión para MODEMACRO:
$(rtos,$(getvar,DISTANCE),2,2)
Evaluación:
Comando: modemacro
Indique nuevo valor para MODEMACRO, o . para ninguno <"">:
$(rtos,$(getvar,DISTANCE),2,2)
Eval: $(RTOS, $(getvar,DISTANCE), 2, 2)
Eval: $(GETVAR, DISTANCE)
===> 3346.90532671
===> 3346.91------resultado en barra de estado.
Es:
$(RTOS, valor, modo, precisión)
Los valores de modo posibles son:
1........... Científico
2 ...........Decimal
3 ...........Pies y pulgadas I (fracción decimal)
4 ...........Pies y pulgadas II (fracción propia)
5 ...........Fraccional
Medir cantidad de caracteres de una cadena de texto con “STRLEN”:
Sea mostrar en barra de estado la cantidad de caracteres de la cifra de
la última medición de distancia:
Expresión para MODEMACRO:
$(strlen,$(rtos,$(getvar,DISTANCE),2,2))
Evaluación:
Comando:
MODEMACRO
Indique nuevo valor para MODEMACRO, o . para ninguno <"">:
$(strlen,$(rtos,$(getvar,DISTANCE),2,2))
Eval: $(STRLEN, $(rtos,$(getvar,DISTANCE),2,2))
Eval: $(RTOS, $(getvar,DISTANCE), 2, 2)
Eval: $(GETVAR, DISTANCE)
===> 3346.90532671
===> 3346.91
===> 7-----Esto aparece en barra de estado.
Subcadena de una cadena de texto con “SUBSTR”:
De una cifra extraigo una parte y la muestro en barra de estado........
$(SUBSTR, $(rtos,$(getvar,DISTANCE),2,2), 2, 5)
Evaluación:
Comando:
MODEMACRO
Indique nuevo valor para MODEMACRO, o . para ninguno <"">: $(SUBSTR,
$(rtos,$(getvar,DISTANCE),2,2), 2, 5)
Eval: $(SUBSTR, $(rtos,$(getvar,DISTANCE),2,2), 2, 5)
Eval: $(RTOS, $(getvar,DISTANCE), 2, 2)
Eval: $(GETVAR, DISTANCE)
===> 1710.90043324
===> 1710.9
===> 1710.------esto aparece en barra de estado.
Convertir una cadena de texto a mayúsculas con “UPPER”:
$(upper,$(getvar,dwgname))
Evaluación:
Comando:
MODEMACRO
Indique nuevo valor para MODEMACRO, o . para ninguno <"">:
$(upper,$(getvar,dwgname))
Eval: $(UPPER, $(getvar,dwgname))
Eval: $(GETVAR, dwgname)
===> Dibujo1.dwg
===> DIBUJO1.DWG------esto aparece en barra de estado.
“XOR”, operador lógico “O” exclusivo:
La regla de operación en “XOR” es un tipo de uso exclusivista de “OR”:
(XOR 12 13) ES = (12 OR 13) Y NUNCA (12 Y 13)
Ejemplo:
Comando:
MODEMACRO
Indique nuevo valor para MODEMACRO, o . para ninguno <"">:
$(xor,2.2,3,6,7.7,67.8)
Eval: $(XOR, 2.2, 3, 6, 7.7, 67.8)
===> 67
$(xor,$(getvar,osnapz),1)
Evaluación:
Comando:
MODEMACRO
Indique nuevo valor para MODEMACRO, o . para ninguno <"">:
$(xor,$(getvar,osnapz),1)
Eval: $(XOR, $(getvar,osnapz), 1)
Eval: $(GETVAR, osnapz)
===> 1
===> 0
*Ejemplos de expresiones DIESEL para MODEMACRO”:
*Expresión para que se muestre en barra de estado si un comando está en progreso o si está inactivo todo:
$(IF, $(eq,$(getvar,CMDACTIVE),1), >>>>*EN PROGRESO*>>>>, ----*INACTIVO*----)
*Fecha:
$(EDTIME, $(getvar,date), DD/MM/YYYY)
*Indicar en que color salen los objetos creados:
*Los objetos creados saldrán en color: $(getvar,CECOLOR)
*Saber a que altura estarán las cámaras:
*Las camaras se ubican en altura:$(getvar,cameraheight)
*Indicar en que ventana estamos, modelo o papel:
$(IF, $(eq,$(getvar,cvport),2), *MODELO*)$(IF, $(eq,$(getvar,cvport),1), *PAPEL*)
*Mostrar status de la entrada dinámica:
$(if,$(eq,$(getvar,DYNMODE),-1),*Entrada dinamica fuera*)$(if,$(eq,$(getvar,DYNMODE),1),*Entrada de puntero activada*)$(if,$(eq,$(getvar,DYNMODE),2),*Entrada de cotas activada*)$(if,$(eq,$(getvar,DYNMODE),3),*Entrada de puntero y de cotas activadas*)
*Mostrar elevacion de objetos creados:
Elevacion de los objetos creados:$(getvar,ELEVATION)
*Mostrar puntos limites de la extensión del dibujo en espacio modelo:
Punto inferior izquierdo:$(getvar,EXTMIN) – Punto superior derecho:$(getvar,EXTMAX)
*Saber en que nivel de suavidad van saliendo los objetos modelizados:
Nivel de suavidad de objetos modelizados:$(*,10,$(getvar,facetres))%
*Ver el valor de tolerancia a huecos en contornos, cuando se ejecuta un
Sombreado:
$(if,$(eq,$(getvar,cmdnames),BHATCH),Tolerancia actual a huecos en contornos:$(getvar,HPGAPTOL))
*Datos para el caso de hacer un sombreado:
$(if,$(eq,$(getvar,cmdnames),BHATCH),Tolerancia actual a huecos en contornos:$(getvar,HPGAPTOL)-Escala del sombreado:$(getvar,HPSCALE))
*Mostrar el nombre del bloque a insertar:
$(if,$(eq,$(getvar,cmdnames),INSERT),Bloque insertado:$(getvar,INSNAME))
*Muestra el último angulo almacenado al ejecutar un comando lineal como
polilinea, linea o arco:
ULTIMO ANGULO INTRODUCIDO:$(ANGTOS,$(GETVAR,LASTANGLE),0,2)º
*Muestra la distancia focal de perspectiva:
Distancia focal actual de perspectiva: $(getvar,lenslength)
*Mostrar los datos geográficos de ubicación del sitio del modelo:
Lugar del modelo--->Latitud:$(getvar,LATITUDE)-Longitud:$(getvar,LONGITUDE)
*Un comando AutoLISP para que aparezca la hora de creación del archivo
en barra de estado:
;;;indicar hora de creacion del presente archivo
;;;en barra de estado
(defun c:hora_archiv()
(setvar "modemacro"
"El presente archivo se creo a la hora:$(EDTIME, $(getvar,tdcreate), HH:MM)"
)
(princ)
);fin
*Poner un TIMER o Cronómetro en barra de estado que indique tiempo
transcurrido desde el inicio de archivo presente:
Transcurridos:$(EDTIME, $(getvar,tdusrtimer), MM:SS)Minutos
*Nombre del sistema actual de coordenadas:
Sistema de coordenadas actual: $(getvar,UCSNAME)
*Mostrar si el archivo actual es o no de solo lectura:
$(if,$(eq,$(getvar,WRITESTAT),0),*ARCHIVO SOLO LECTURA*)$(if,$(eq,$(getvar,WRITESTAT),1),*ARCHIVO MODIFICABLE*)
*Mostrar si las unidades por defecto se inician en milimetros o no en el dibujo:
$(if,$(eq,$(getenv,InsertUnitsDefSource),4),*Unidades en mm por defecto*,*Unidad por defecto diferente de mm*)
Expresión vlisp para hacer que las unidades por defecto en los dibujos sean
metros:
(setenv "InsertUnitsDefSource" "6")
*NOTA: Todas las expresiones DIESEL a ser ingresadas por _MODEMACRO,
deben ser de una sola linea o renglon, no pueden tener saltos de linea, por ello
es aconsejable realizarlas en el block de notas en una linea y despues copiar
y pegar en linea de comandos.
..................................................................................................................................................
*Páginas para consultar sobre DIESEL:
http://www.crlf.de/Dokumente/Diesel/Diesel.html
www.fourmilab.ch/diesel
http://members.iinet.net.au/~bigbyte/diesel.htm
http://www.upfrontezine.com/tailor/tailor17.htm
http://www.kxcad.net/autodesk/autocad/AutoCAD_2008_Customization_Guide/index.left.htm
http://www.kxcad.net/autodesk/autocad/AutoCAD_2008_Customization_Guide/ws73099cc142f4875513fb5cd10c4aa30d6b-7d0a.htm
http://web.madritel.es/personales1/argalnares/13_rutinas.htm
http://www.lawebdelprogramador.com/cursos/autocad/autocad_9.php
http://www.caddigest.com/subjects/autocad/tutorials/select/parsai_building_menu5.htm
http://www.grapevine.net/~lacy/index.html
..........................................................................................................................................
30 abr 2008
ESCACLIC.LSP........Perfil de escalera de un tramo con dos clicks de ratón:
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;RUTINA "ESCACLIC" HACE UN PERFIL GENERICO DE UNA ESCALERA DE UN TRAMO;;;
;;;INTRODUCIENDO PUNTO DE ARRANQUE Y PUNTO DE LLEGADA DE LA MISMA ;;;;;;;;;
;;;HACIENDO UN TANTEO DE MEDIDAS IDEALES PARA UN ESTUDIO PREVIO ;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(PRINC "\n....* ESCACLIC ** TRAMO DE ESCALERA CON DOS CLICKS DE RATON *
** © AUTOR: VICTOR ADOLFO BRACAMONTE....2007 **")
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(DEFUN VAR_VARESCACLIC ()
(COMMAND "_OSMODE" 0)
(COMMAND "_PICKBOX" 0)
);VARIAR VARIABLES DE SISTEMA EN ESCACLIC
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(DEFUN ENTRADADEDATOSESCACLIC ()
(SETQ ARR (GETPOINT "\nDAR PUNTO DE ARRANQUE DE ESCALERA: "))
(SETQ LLEG (GETPOINT "\nDAR PUNTO DE LLEGADA DE ESCALERA: "))
(SETQ ALT (ABS (* (DISTANCE ARR LLEG) (SIN (ANGLE ARR LLEG))))
DESH (ABS (* (DISTANCE ARR LLEG) (COS (ANGLE ARR LLEG))))
)
(SETQ ANGESC (ANGLE ARR LLEG));ANGULO DE LA ESCALERA
(IF (AND(> ANGESC 0)(< ANGESC (/ PI 2))) (SETQ DIRECCIONAL 1))
(IF (AND(> ANGESC (/ PI 2))(< ANGESC PI)) (SETQ DIRECCIONAL 2))
(IF(AND (> ANGESC PI)(< ANGESC (* 1.5 PI))) (SETQ DIRECCIONAL 3))
(IF (AND (> ANGESC (* 1.5 PI)) (< ANGESC (* 2 PI)))
(SETQ DIRECCIONAL 4)
)
);FIN DE ENTRADA DE DATOS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(DEFUN ATRASESCACLIC ()
(SETQ OSMESCACLIC (COMMAND "_OSMODE" 4133))
(SETQ PICKESCACLIC (COMMAND "_PICKBOX" 3))
)
(DEFUN ERRORESCACLIC (MENSAJE)
(ATRASESCACLIC)
(SETQ MENSESCACLIC
(IF (= MENSAJE "dividir por cero")
(PRINC "\n****¡Ese largo de escalera es muy reducido!....
¡Ingrese otro largo mayor!****
dividir por cero")
)
)
(PRINC)
);FUNCION DE ERROR AL INGRESAR UN DATO ERRONEO
;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(DEFUN PROCESODEDATOSESCACLIC1 ()
(SETQ INCLINADA (DISTANCE ARR LLEG));TRIANGULO DE TODA LA ESCALERA
(SETQ NUMMOD (/ INCLINADA 0.35))
(SETQ CANT (FIX NUMMOD));NUMERO DE MODULOS DIAGONALES
(SETQ ANGESCABS (ATAN (/ ALT DESH)));ANGULO DE ESCALERA ABSOLUTO
(SETQ ANGESCGRAD(* ANGESCABS (/ 180 PI)));ANGULO ESCALERA EN GRADOS
(SETQ CONTRAHUELLA1 (* 0.35 (SIN ANGESCABS))
NUEVAALT (* CANT CONTRAHUELLA1)
HUELLA1 (* 0.35 (COS ANGESCABS))
NUEVODESH (* CANT HUELLA1)
CORRECHUELLA (/ ALT NUEVAALT)
CORRECCONTRAHUE (/ DESH NUEVODESH)
CONTRAHUELLA (* CORRECCONTRAHUE CONTRAHUELLA1)
HUELLA (* CORRECHUELLA HUELLA1)
)
);CALCULO Y CORRECCION DE HUELLA Y CONTRAHUELLA
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(DEFUN PROCESODEDATOSESCACLIC2 ()
(SETQ PT1 ARR)
(IF(= DIRECCIONAL 1)(SETQ PT2 (POLAR PT1 (/ PI 2) CONTRAHUELLA)))
(IF(= DIRECCIONAL 2)(SETQ PT2 (POLAR PT1 (/ PI 2) CONTRAHUELLA)))
(IF(= DIRECCIONAL 3)(SETQ PT2 (POLAR PT1 PI HUELLA)))
(IF(= DIRECCIONAL 4)(SETQ PT2 (POLAR PT1 0 HUELLA)))
(COMMAND "_PLINE" PT1 PT2 "")
(SETQ PT1 PT2)
(IF(= DIRECCIONAL 1)(SETQ PT2 (POLAR PT1 0 HUELLA)))
(IF(= DIRECCIONAL 2)(SETQ PT2 (POLAR PT1 PI HUELLA)))
(IF(= DIRECCIONAL 3)(SETQ PT2 (POLAR PT1 (* PI 1.5) CONTRAHUELLA)))
(IF(= DIRECCIONAL 4)(SETQ PT2 (POLAR PT1 (* PI 1.5) CONTRAHUELLA)))
(COMMAND "_PLINE" PT1 PT2 "");DIBUJO DE UN ESCALON
(REPEAT (- CANT 1)
(SETQ PT1 PT2)
(IF(= DIRECCIONAL 1)(SETQ PT2 (POLAR PT1 (/ PI 2) CONTRAHUELLA)))
(IF(= DIRECCIONAL 2)(SETQ PT2 (POLAR PT1 (/ PI 2) CONTRAHUELLA)))
(IF(= DIRECCIONAL 3)(SETQ PT2 (POLAR PT1 PI HUELLA)))
(IF(= DIRECCIONAL 4)(SETQ PT2 (POLAR PT1 0 HUELLA)))
(COMMAND "_PLINE" PT1 PT2 "")
(SETQ PT1 PT2)
(IF(= DIRECCIONAL 1)(SETQ PT2 (POLAR PT1 0 HUELLA)))
(IF(= DIRECCIONAL 2)(SETQ PT2 (POLAR PT1 PI HUELLA)))
(IF(= DIRECCIONAL 3)(SETQ PT2 (POLAR PT1 (* PI 1.5) CONTRAHUELLA)))
(IF(= DIRECCIONAL 4)(SETQ PT2 (POLAR PT1 (* PI 1.5) CONTRAHUELLA)))
(COMMAND "_PLINE" PT1 PT2 "")
)
);RESTO DE ESCALONES
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(DEFUN PROCESODEDATOSESCACLIC3 ()
(SETQ RELACIONDEPASO (+ (* 2 CONTRAHUELLA) HUELLA));RELACION DE PASO DE LA ESCALERA
(SETQ PASOREALDIAGONAL (/ CONTRAHUELLA (SIN (/ ANGESCABS 2))));PASO REAL DIAGONAL
);FIN DE PROCESO DE DATOS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(DEFUN MOSTRARRESULTADOSESCACLIC ()
(PROMPT "\n*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*")
(PROMPT "\nLA DIRECCIONAL INGRESADA ES: ")
(IF (= DIRECCIONAL 1)(PRINC "HACIA DERECHA Y ARRIBA"))
(IF (= DIRECCIONAL 2)(PRINC "HACIA IZQUIERDA Y ARRIBA"))
(IF (= DIRECCIONAL 3)(PRINC "HACIA IZQUIERDA Y ABAJO"))
(IF (= DIRECCIONAL 4)(PRINC "HACIA DERECHA Y ABAJO"))
(PROMPT "\nALTURA VERTICAL ENTRE NIVELES: ")
(PRINC ALT)
(PROMPT "\nDESARROLLO HORIZONTAL: ")
(PRINC DESH)
(PROMPT "\nLARGO DIAGONAL TOTAL: ")
(PRINC INCLINADA)
(PROMPT "\nEL NUMERO DE ESCALONES DETERMINADO PARA ESTE CASO ES: ")
(PRINC CANT)
(PROMPT "\nANGULO DE LA ESCALERA: ")
(PRINC ANGESCGRAD)
(PROMPT "º")
(PROMPT "\nVALOR DE HUELLA: ")
(PRINC HUELLA)
(PROMPT "\nVALOR DE CONTRAHUELLA: ")
(PRINC CONTRAHUELLA)
(PROMPT "\nLA RELACION DE PASO (2CH+1H) CALCULADA ES: ")
(PRINC RELACIONDEPASO)
(PROMPT "\nEL PASO REAL DIAGONAL PARA PERSONAS EN ESTA ESCALERA ES: ")
(PRINC PASOREALDIAGONAL)
(PROMPT "\n*&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&*")
(PROMPT "\n*....© AUTOR: VICTOR ADOLFO BRACAMONTE....2007....*")
(PRINC)
);FIN DE MOSTRAR RESULTADOS
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(DEFUN REST_VARESCACLIC ()
(COMMAND "_OSMODE" 4133)
(COMMAND "_PICKBOX" 3)
(PRINC)
);RESTITUIR VARIABLES DE SISTEMA EN ESCACLIC
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;,
(DEFUN C:ESCACLIC (/ ALT DESH PT1 PT2
ANT_ERROR *ERROR*)
(SETQ ANT_ERROR *ERROR*
*ERROR* ERRORESCACLIC)
(ENTRADADEDATOSESCACLIC)
(VAR_VARESCACLIC)
(PROCESODEDATOSESCACLIC1)
(PROCESODEDATOSESCACLIC2)
(PROCESODEDATOSESCACLIC3)
(MOSTRARRESULTADOSESCACLIC)
(REST_VARESCACLIC)
(SETQ *ERROR* ANT_ERROR)
);FIN DE ESCACLIC
1 abr 2008
Archivos scripts para hacer rutinas (*.scr):
Con el comando "_script" de AutoCAD,
se pueden llamar archivos de extensión "*.scr"
realizados en el bloq de notas, siguiendo
lineas de comandos que reproducen
acciones completas del usuario, solo
se deben grabar las líneas introducidas
en la ventana de comandos, en un
orden cuidado.......Este método es
extremadamente sensible a los espacios
en blanco y a los saltos de lineas.
Todo script termina con el cursor en
la linea siguiente a la última órden
pero en el borde sin crear espacio en blanco
y todo salto de linea o línea en blanco
equivale a un ENTER.
(****Siempre al terminar cualquier comando de autocad, si se da ENTER,
repite el comando****).
En _script todo espacio vacio es un ENTER.
---------------------------------------
Un ejemplo:
Quiero tener un script que me haga
2 circulos concentricos de radios
300 y 500:
El script sería:
-----------------------------------
_circle
0,120
300
0,120
500
--------------------------------------ver adjunto
Otro ejemplo:
Hacer un script que audite y purgue un archivo:
sería:
----------------------------------------
_audit
_y
_purge
_a
*
_n
-----------------------------------------ver adjunto
*Al margen:
Si quiero repetir el último script ejecutado
ingreso el comando "_rscript".
Y si quiero poner comentarios dentro del
script hago lo mismo que en Autolisp,
punto y coma ";" y la linea siguiente
es comentario, pero por ser un script
tan sensible a los espacios en blanco,
no recomiendo poner lineas extras en él,
para poder concentrarse en lo importante
que es la secuencia de comandos con los
espacios "exactos"........