Menu Principal:
Está Vd en: FAQ>>Part Design >>082_¿Macros?
He recibido muchos correos electrónicos donde el personal dice cosas, que me ponen los pelos de punta, como esta:
“Hola Juanri: Estoy empezando con esto del CATIA y quiero saber para qué sirven y cómo se hace una macro”.
¡Pa haberse matáo!!!
Claro, a mí me cabe la duda de si cuando dice: “Estoy empezando” lo dice “porque es por la mañana y está empezando HOY a trabajar, pero lleva muchos años en esto”..O es que hoy ha descubierto que existe el CATIA V5?
Yo pongo la siguiente analogía (nada que ver con ano):
Es como si yo fuera “profe” de una escuela primaria (ya sabéis: esos seres pequeños de 5-8 años) y de pronto llegara uno de ellos y me dijera: “Juanri: ¿me va a enseñar hoy integrales dobles?” Y yo asustado le diría: “Si..las galletas que son integrales…jejeje”.
Que no es que yo no sepa integrales, que debo saberlo (en mi cabeza estaban al menos…), pero que antes hay que aprender a sumar, restar y demás cosas para abordar con cierta base las integrales dobles (Gusanito, gusanito, palito cruzado, que decíamos entonces), no?
Porque yo, al anónimo lector de esta página (y por ser anónimo desconozco sus conocimientos) le preguntaría:
A.- | ¿Sabes que una macro es, en el fondo (y sin fondo), un programa? |
B.- | ¿Sabes que, para programar, hay que tener unos estudios de programación, al menos básicos? |
C.- | ¿Sabes que estos programas tocan “objetos” que son features de CATIA mediante unas “digamos APIS” de CATIA? |
|
Si a todas estas preguntas has respondido “Si; se programar y conozco CATIA a fondo”, entonces pasamos a la segunda parte:
Es el caso en que, en la “escuela primaria que hablaba antes”, se me ha “colado” un “niño con bigote, algo calvo y de 1,75 de altura” y quiere que yo le explique (entre tabla de 3 x 4 =12; 3x 5=15 …) como se lleva la contabilidad de un almacén que él tiene..
Está claro que no tengo “capacidad para eso”… no “en esa escuela”.
Pues es lo que digo: No es que no sepa; que sé. Es que este “lugar” no es el adecuado para eso, porque está pensado para el que empieza y tengo que sostener/responder preguntas de un nivel más sencillo.
Además esta el tema que “algunos programas y utilidades enfocadas para automatizar” yo las hago (o lo intento) para “ganar dinero” y enfocadas a empresas y no a particulares. Recordar que el contenido de esta web está acogido a las normas Creative Commons (https://creativecommons.org/licenses/by-nc-sa/2.5/es/) es decir:
“Usted es libre de:
• | Copiar, distribuir y comunicar públicamente la obra. |
• | Hacer obras derivadas. |
Siempre que:
• | Reconocimiento: | Debe reconocer los créditos de la obra de la manera especificada por el autor o el licenciador (pero no de una manera que sugiera que tiene su apoyo o apoyan el uso que hace de su obra). |
• | No comercial. | No puede utilizar esta obra para fines comerciales, incluidos el dar formación mi costa! |
• | Compartir bajo la misma licencia. | Si altera o transforma esta obra, o genera una obra derivada, sólo puede distribuir la obra generada bajo una licencia idéntica a ésta. |
Y demás cosas que figuran en la licencia….
Pero algunos lectores insisten:
“Es que como en ToolsMacro.. hay un comando que es “Start Recording..” que graba una macro…”
Supongamos que tenemos una pieza como esta:
Y queremos hacer una macro para dibujar una línea entre el origen y el vértice superior (donde está la mano). Veamos como se hace y cual es el resultado:
1.- | Con la pieza en pantalla doy “Tools![]() ![]() |
|
2.- | Doy a OK y eso da lugar a que me aparezca en la zona gráfica un icono como este: que sirve para detener el proceso de “copia” de la macro. | ![]() |
3.- | Y empiezo a introducir “acciones” en mi macro: Doy al icono “Line” y selecciono la opción “Point-Point” haciendo clic en el origen y el vértice indicado. Doy OK para cerrar el panel y crear la línea. | |
4.- | Doy al icono que me apareció para parar de grabar. |
Vamos a ver que ha grabado catia, en esta ocasión:
5.- | Nos vamos a Tools
|
6.- | Para ver lo escrito, con la macro seleccionada (en azul) damos al botón [Edit...] y vemos lo escrito:![]() |
¿Quién entiende esto? Pues los programadores, porque si no hay que empezar por la A en la programación. ¡Ah, que eres programador!! Bueno pues ya sabes: una serie de declaraciones de variables de tipos específicos de CATIA V5 (As Part; As Bodies; etc..)
Y después asocia a estas variables valores, por ejemplo:
Set reference1 = part1.CreateReferenceFromBRepName("FVertex:(Vertex:(Neighbours:(Face:(Brp:(AxisSystem.1;2);None:();
Cf11:());Face:(Brp:(AxisSystem.1;3);None:();Cf11:());Face:(Brp:(AxisSystem.1;1);None:();Cf11:()));
Cf11:());WithPermanentBody;WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR14)", axisSystem1)
Esta asocia a la Reference1, el vértice del origen de sistema de ejes AxisSystem.1.
Set assemble1 = shapes1.Item("Assemble.1")
Esta asocia a la variable assemble1, el Nodo llamado Assemble.1.
Set hybridBody1 = hybridBodies1.Item("Patata")
Esta asocia a la variable hybridBody1, el Geometrical Set llamado Patata.
Y que pasa si damos Alt+F8 y damos al botón [Run]? Pues que creará una línea como esa tantas veces como le demos al botón Run.
¿Y si queremos que en vez de a ese vértice apunte a otro vértice?.
Pues a ver quien es el guapo que averigua como se crea, a mano, este “chorizo”:
Set reference2 = part1.CreateReferenceFromBRepName("FVertex:(Vertex:(Neighbours:(Face:(Brp:
(Pad.1;0:(Brp:(Sketch.1;5)));None:();Cf11:());Face:(Brp:(Pad.1;2);None:();Cf11:());
Face:(Brp:(Pad.1;0:(Brp:(Sketch.1;4)));None:();Cf11:()));Cf11:());WithPermanentBody;
WithoutBuildError;WithSelectingFeatureSupport;MFBRepVersion_CXR14)", assemble1)
Claro, para copiar una línea está el socorrido “Copy & Paste”. Y para un grupo de elementos geométricos está el Power Copy.
¿Y puedo utilizarlo para otra pieza, como esta?
Pues va ha ser que NO. ¿Por qué? Porque fallaría por ejemplo en esta sentencia:
Set assemble1 = shapes1.Item(“Assemble.1”)
Dado que este part no tiene la operación booleana “Assemble.1”
Entonces: ¿para que sirven las macros?
Pues a no ser que sean cosas genéricas, como: Seleccionar todos los puntos existentes en el Part y ocultarlos,
Solo sirven, para los programadores, para saber cómo se llama a la función Line Point-Point:
Set hybridShapeLinePtPt1 = hybridShapeFactory1.AddNewLinePtPt(reference1, reference2)
Cosa que también se sabe con la ayuda que trae el programa, pero aquí se puede ver mas claro.
Espero que esto deje claro el asunto de las macros y no volvamos “con la burra al carril”
![]() |
Dirija sus preguntas a: juanri@muchocatia.es | CATIA V5 R27 |