Descargar

Macros de botón en AutoCAD versión 2009 (página 2)


Partes: 1, 2

^C^C_line;/;

  • Terminar en pausa para ingresar algún dato con barra invertida "": comando _circle que solicita indicar un objeto para poner el centro del circulo en su centro, y termina dejando una pausa para fijar el radio:

^C^C_.circle;_mid;

  • Terminar con salto de carro cada línea, de una macro con varias líneas, continuar la macro a una próxima línea con signo suma "+":

Siempre es conveniente escribir toda la cadena macro en una sola línea pero esto es imposible en el editor de macros de la interfaz _CUI, la manera de hacer una macro con saltos de carro es hacer una línea luego insertar símbolo de suma "+" luego hacer salto a línea de abajo y continuar otra línea que finaliza en el mismo signo "+" y otro salto a línea de abajo y así hasta terminar la cadena prevista en varias líneas, o sea con ese signo le indico al AutoCAD que la cadena continúa en línea de abajo, ejemplo de una macro con saltos de líneas:

^P (setq p1(getpoint "primer punto:"));+

(setq p2(getpoint "segundo punto:"));+

^C^C_pline;!p1;!p2;;^P

Poner "^P" al comienzo y final me evita que AutoCAD escriba las listas de autolisp en la ventana de comandos y solicitudes que no requieren ser mostradas.

Caracteres especiales de control en macros

; ——————— punto y coma es un ENTER^M —————— es un ENTER^I ——————– es un TAB

[espacio en blanco] equivale a teclear barra espaciadora ——————– pausa dentro de un comando para ingresar datos

. ——————– punto ante el nombre de un comando,

permite acceder a un comando de AutoCAD, incluso si se

ha anulado su definición mediante el comando ANULADEF

_comando ———– traduce los comandos y opciones de AutoCAD a los del idioma actual, ejemplo si se escribe _pline lo traduce a polilinea de version español.

Cada version de AutoCAD leerá las macros en su idioma, y para poder introducir nombres en ingles para que la macro sea legible en cualquier version, antepongo al comando u opción de comando el guion bajo.

-comando ———– signo menos delante de un comando, evita aparición de cuadros de dialogo

"comando ———– apostrofo delante de un comando, lo vuelve transparente, reemplaza a ^C^C

^C^C_select —— ejecuta comando _select para generar una preselección aplicable para otro comando posterior

+ ——————— signo suma, sirve para hacer cadenas macro en varias líneas concatenandolas con signo suma "+".

= *——————– Muestra el menú contextual, de imágenes o desplegable de nivel superior al actual

*^C^C ————— repite el ultimo comando$ ———————- inicia una cadena DIESEL con $M=

^B——————— equivale a control+B enciende o apaga los osnaps

^C ———————- es un COMMAND, termina un comando activo o inicia otro si se duplica como ^C^C^D ———————-enciende o apaga el UCS dinamico, equivale a control+D

^E ——————— inicia el siguiente plano isometrico, como control+E

^G ——————— apaga o enciende la grilla de puntos (control+G)

^H——————— equivale a paso atrás o tecla BACKSPACE^O ——————— enciende o apaga modo ORTHO

^P ———————- enciende o apaga MENUECHO, duplicación de datos mostrados^Q ———————– control + Q, transmite prompts, listas de estado, y entradas a salida a impresora ^T ———————– activa o desactiva un tablero digitalizador enlazado (CTRL+T)^V ———————– cambia la ventana grafica actual ^Z ———————- carácter nulo que suprime la adición automática del

SPACEBAR al final de una orden* ————————–es un Wildcard o comodín, se usa para separar partes diferentes de la macro.

@; ———————— arroba y punto y coma repite el ultimo punto insertado

~comando ————— Vuelve inutilizable un comando

!.comando ————— Señala una orden con una marca de verificación o si un Icono es exhibido para la opción del menú

&Ejemplo en menus —————Situado directamente antes de un carácter, especifica el carácter como la llave de acceso de atajo en un menú subrayandolo

t ————————- tabula forzando todo el texto entrado después de estos caracteres hacia la derecha el lado del menú

*Un ejemplo de cadena macro de botón, ¿Cómo la inicio?, elección de todos sus caracteres y elementos a incluir, y ¿Cómo la finalizo?, según el caso:

Caso 1: necesito hacer una macro de botón, que al ser accionada, me pida objeto de origen de propiedades, y una vez indicado, iguales las propiedades de todos los demás objetos a ese primero:

*Lo primero es que ningún comando esté previamente activo, entonces el comienzo es con ^C^C …..Pero _painter puede ser usado como comando transparente como "_painter……

*Luego llamo al comando igualar propiedades _painter ……

*Luego de dar comando viene un ENTER con ";"…..

*Luego barra invertida "" para ingresar el dato indicando origen de propiedades…

*Luego indico que los objetos destino son todos con _all….

*Finalizo con dos ENTER con ";;"…

*Queda así:

^C^C_painter;_all;;

O puede quedar así:

"_painter;_all;; …..para ser usada en medio de otro comando como el caso de usarlo dentro de un trazado con _pline.

Caso 2: Necesito tener un comando que me escriba un rótulo con nombre, dirección y fecha actual en distintas líneas con _text:

^C^C_.text;;;nombre: prexem;;;direccion: Av. Cabildo 1276;;;fecha: $M=$(edtime,$(getvar,date),DD/MON/YY);

Caso 3: Quiero un comando que me pida picar un objeto y apaga la capa de ese objeto pero solo hasta que yo dé ENTER, luego de lo cual se re enciende la misma capa.

^C^C_.layoff;;_.undo;

Caso 4: Quiero un comando que me pida picar un objeto y cambia a la capa del mismo poniendola actual.

^C^C^P(progn(vl-load-com)(terpri)(setq capa (vlax-get (vlax-ename->vla-object (car(entsel "seleccione el objeto de la capa requerida:"))) 'layer))(command "_layer" "_s" capa "")(princ))^P;

Caso 5: Comando para hacer sombreados sólidos directamente con color grisado

número 8.

(setvar "hpname" "solid") ^C^C_-bhatch _change _l; _p _c 8;;

La interfaz de personalización de AutoCAD, comando _cui

El comando que emplearemos principalmente aquí es _CUI, es el que sirve para abrir la interfaz de personalización del espacio de trabajo, y nos servirá para crear barras de herramientas, botones y poner macros asociadas a los mismos.

Para acceder al comando de personalización de la interfaz hacemos:

Menu:  ?Tools  ? Customize ? Interface edu.red

O ponemos en línea de comandos _CUI y damos ENTER, entonces aparece una ventana como esta:

edu.red

En esta ventana de diálogo puedo crear un nuevo botón de comando y una nueva barra de herramientas, supongamos que deseo crear un nuevo comando que me ejecute _audit, _regen y _purge en un solo botón.

Ejecuto _CUI y al abrir cuadro de diálogo creo una barra de esta manera:

_cui –>customizations in all CUI files –>click derecho en toolbars –>new toolbar

edu.red

*A la nueva barra de herramientas le pongo por nombre: "Limpieza1"…..

A cada cambio que realizo en este cuadro de diálogo pulso botón "Apply" para fijarlos……….

edu.red

*Armo la barra: arrastrando iconos desde lista de comandos a la misma, y me queda así:

edu.red

*Luego, tengo dentro de mi barra de limpieza los íconos de las macros:

^C^C_audit……………audita y corrige errores de archivo

^C^C_erase;………….borrador de objetos

^C^C_regen…………..regenera corrigiendo modelo

^C^C_regenall……….regenera todo en un archivo

^C^C_purge…………..purga lo que se considera de más en un archivo

*Ahora bien deseo crear un nuevo botón con una macro que me haga una limpieza general :

Dentro de la misma barra en el mismo cuadro de diálogo, creo nuevo comando:

edu.red

Y le pongo por nombre "limpiezageneral" en "Properties/Name", en

"Description" pongo —–>comando que engloba audit, regen y purge…..,

en "Command Display Name" pongo ——>LIMPIEZAGENERAL…….,

Y en macro pongo:

^C^C_audit _y _regen _purge _all _* _N

*La composición de esta macro DIESEL de botón es simple, solamente requiere:"^C^C"——>es ^C significa command cierra cualquier comando en curso, el siguiente ^C inicia el nuevo comando.

Luego inicia "_audit"……luego espacio en blanco equivale a ENTER, luego

"_y" es dar un si, luego otro espacio en blanco (ENTER), luego "_purge" + espacio en blanco + "_all" indica todos + espacio en blanco + "_*" que significa toda cadena de texto o nombre + espacio en blanco y finalizo dando un no con "_N".

Es algo similar a realizar un script hasta aquí, pero esto es lenguaje DIESEL que puede tener otros embebidos como LISP……..

*Ahora en "Button Image" elijo el mismo ícono de "_purge" y doy click en botón editar para agregarle las letras "Lg" para que sea el botón de mi nuevo comando, una vez que que tengo el nuevo ícono de "LIMPIEZAGENERAL" en la lista de comandos, arrastro el mismo a ni barra y doy "OK" saliendo de _CUI , entonces tengo la nueva barra de limpieza.

Análisis de macros de botón

Ejemplos sencillos:

*^C^C_.rectang;@500,500

Dibuja en forma repetitiva cuadrados de 500 de lado, se sale con ESC.

Si en la macro solo pongo——-^C^C_.rectang—–solo llamo al comando rectángulo…..Pero si pongo———-*^C^C_.rectang——-el asterisco vuelve repetitivo al comando, y solo se sale con ESCAPE.

Si pongo———*^C^C_.rectang;———además de lo anterior se dá un

ENTER con el punto y coma ";" y se crea una pausa con barra invertida

"" donde se ingresa primer corner…..

Si finalmente pongo——–*^C^C_.rectang;@500,500—–además de lo anterior se ingresa una coordenada relativa con "@500,500" que define el cuadrado repetitivo.

Macros para hacer _slice por 3 puntos con seleccion multiple:

^C(command "_slice" (ssget) "" "_3" pause)

Partes:

^C ————- Cancela cualquier comando en curso

(command "_slice" (ssget) "" "_3" pause) —— lista autolisp que ejecuta

el comando _slice de una selección de objetos indicando 3 puntos de un plano de

corte.

^C^C_select ^C^C_slice _p; _3

^C^C ——————- cancela cualquier comando y llama otro

_select —————– comando _select para crear seleccion

————————– pausa para que se pueda hacer la selección, si no

Estuviera, pasa directo al siguiente comando

^C^C ——————- cancela cualquier comando y llama otro

_slice ——————- comando _slice

_p; ———————– seleccion previa y enter

_3 ———————— opcion de _slice indicar plano por 3 puntos

————————– pausa para terminar _slice

Macro que funciona bien en acad2009ing:

Cambia el ucs a la linea dada en el extremo indicado y cambia la vista a superior:

Requiere pausa entre los dos comandos:

^C^C_ucs _ob ^C^C_-view _top

^C^C ——————- cancela cualquier comando y llama otro

_ucs —————– comando _ucs para establecer nuevo UCS sistema de coordenadas

_ob —————– opción para establecer ucs según un objeto

————————– pausa para que se pueda hacer la selección, si no estuviera, pasa directo al siguiente comando

^C^C ——————- cancela cualquier comando y llama otro

_-view ——————- comando _view sin cuadro de diálogo para cambiar la vista

_top ———————— opcion de _view pasa a vista superior

Copia de objetos con preselección:

^C^C_select ^C^C_copy _p;

^C^C ——————- cancela cualquier comando y llama otro

_select —————– comando _select para crear seleccion

————————– pausa para que se pueda hacer la selección, si no estuviera, pasa directo al siguiente comando

^C^C ——————- cancela cualquier comando y llama otro

_copy —————– comando _copy iniciado

_p; —————– cuando pide seleccionar objetos le digo _p indica "previa" y toma la selecciòn previa de _select y ENTER con ";"

————————– pausa para terminar de dar datos en _copy

Poner todo en vista superior, _zoom extendido y enciende 3dorbit free:

^C^C_-view _top _zoom _e '_3Dforbit

^C^C ——————- cancela cualquier comando y llama otro

_-view ——————- comando _view sin cuadro de diálogo para cambiar

la vista

_top ———————— opcion de _view pasa a vista superior

_zoom ———————— llamo comando _zoom

_e ———————— opcion de _zoom extendido en todo lo dibujado

"_3Dforbit ———————— enciende la orbita 3d libre en modo transparente

Comando que inicia la entrada dinámica, hace un segmento y lo acota:

^C(progn (command "_dynmode" "3" "_line" (getpoint) (getpoint) "")(vl-load-com)(command "_dimaligned" (vlax-curve-getstartpoint (vlax-ename->vla-object (entlast))) (vlax-curve-getendpoint (vlax-ename->vla-object (entlast)))))

Comando que crea un cuadrado dando valor de area y punto inicio:

^C^C(progn (terpri)(setq diag (sqrt (* (expt (sqrt (getreal "dar valor de area: ")) 2) 2)))(command "_.rectang" (progn (terpri) (setq p1 (getpoint "dar punto inicio:"))) (polar p1 (/ pi 4) diag))(princ))

Comando que sirve para abrir el Photoshop:

^C^C_start photoshop;

Comando que abre el Flock y traslada a una pagina de internet:

^C^C_start flock.exe http://www.prexem.blogspot.com

Comando que abre la calculadora de expresiones por línea de comandos:

^C^C_cal

Macro que hace un círculo en el punto promedio de los puntos medios de dos lineas o polilineas y el radio es elegible:

^C^C_circle 'cal (mid+mid)/2;

Cuando pide el centro se inicia el comando "cal en modo transparente dentro de otro comando.

Comando para exportar la ventana modelo como imagen *.jpg:

^C^C_jpgout

Comando que exporta la ventana modelo como imagen *.jpg dando camino

Del archivo:

^C^C_jpgout c:/foto23.jpg;;

Simil al anterior pero eligiendo objetos a ser exportados:

^C^C_jpgout c:/foto23.jpg

Comando que sirve para cambiar el espesor de una linea o polilinea:

^C^C_pedit _w ;

Comando que sirve para trazar muros en ejes ortogonales con entrada dinámica y en un forzado de cursor cada 0.1 (snap), se puede usar con mouse solo:

'_orthomode 1 '_dynmode 3 '_snap 0.1; ^C^C_pline

Comando que apaga todo lo anterior si no hay comando activo:

$(if,$(getvar,cmdactive),~) _dynmode -3 _ortho off _snap off

Hace una nube de revisión rectangular:

^C^C_rectang;/_revcloud;_O; _L;;

Hace una nube de revisión circular:

^C^C_circle;/_revcloud;_O; _L;;

Hace un triángulo que es nube de revisión:

^C^C_.polygon 3;_c;_.revcloud;_O; _L;;

hace una seleccion de n objetos, y cambia su color a azul:

^C^C_select;_change;_p;;_properties;_C;blue;;

hace una seleccion de objetos y los transforma en anotativos:

^C^C_select;_change;_p;;_properties;_a;_y;;

Macro que funciona bien en acad2009ing:

Cambia el ucs a la linea dada en el extremo indicado y cambia la vista a superior:

Requiere pausa entre los dos comandos:

^C^C_ucs _ob ^C^C_-view _top

Si está en espacio modelo, pasa directamente a layout2 con una lista LISP:

(if (eq(getvar "tilemode")1)(command "_layout" "set" "layout2"))

Selecciona previamente un objeto, luego lo mueve y lo puede rotar:

^C^C_select;_move;_p;;/_rotate;_p;;@0,0;_reference;@

Hace copiado de un objeto y rotación de la copia sobre si misma:

^C^C_select;_copy;_p;;/_rotate;_l;;@

Circulo por 3 puntos tangentes:

^C^C_circle _3p _tan _tan _tan

Circulo por dos puntos entre la mitad de una linea y la mitad de otra:

^C^C_circle _2p _mid _mid

Hace un arbolito genérico en planta dando centro y radio:

^C(progn (terpri)(setq p(getpoint "dar centro:"))(terpri)(setq r(getdist p "dar radio:"))(command "_circle" p r )(command "_line" p (polar p (/ pi 4) (* r 1.1)) "")(command "_-array" "l" "" "_p" p 8 150 "_y")(princ))

Hace sombreado gouraud sin aristas visibles en modelado 3d:

^C^C_-shademode _g

Resetea al original la lista de escalas:

^C^C_-scalelistedit _r _y _e

Unión de sólidos con preselección:

^C^C_select;_union;_p;;

Personalización del comando _extrude para que solo pida el path o trayectoria:

^C^C_select;_extrude _p; _p;;;

Barrido repetitiva, se sale con ESC:

*^C^C_sweep

Personalización del comando _sweep para que salga un sólido no alineado

con el path:

^C^C_select;(command "_sweep" "_p" "" "_A" "_N" pause)

Numerador secuencial usando la variable de sistema "USERI1" aumenta de 1 en 1, se sale con ESC:

*^C^C_.text;;;$M=$(getvar,USERI1);setvar;USERI1;$(+,1,$(getvar,USERI1))

Numerador cada 2 unidades:

*^C^C_.text;;;$M=$(getvar,USERI1);setvar;USERI1;$(+,2,$(getvar,USERI1))

Volver el numerador a cero:

^C^C_setvar;USERI1;0

Indicando dos poligonos a distintas alturas, obtiene el volumen existente entre ambos haciendo un _loft:

^C^C_select ^C^C_.loft _p; _c;(vl-load-com)(alert(strcat "volumen: "(rtos(vlax-get (vlax-ename->vla-object (entlast)) "volume") 2 2))) _.undo;1;

Macro para guardar una vista con un nombre:

^C^C_-view _s;

Macro para volver a una vista guardada dando el nombre:

^C^C_-view _r;

Y de esta manera, se pueden crear infinitas macros de botón incluíbles en AutoCAD por medio de la interfaz del comando _CUI

Es conveniente experimentar largamente con esto para encontrar su mecanismo.

 

 

 

 

Autor:

Víctor Adolfo Bracamonte

Arquitecto.

Concepción, Tucumán, Argentina.

Partes: 1, 2
 Página anterior Volver al principio del trabajoPágina siguiente