Proyecto Fin de Carrera Ingeniería...

127
Equation Chapter 1 Section 1 Proyecto Fin de Carrera Ingeniería Aeronáutica Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa Autor: Antonio Segura Valverde Tutor: Domingo Morales Palma Dpto. de Ingeniería Mecánica y Fabricación Escuela Técnica Superior de Ingeniería Universidad de Sevilla Sevilla, 2017

Transcript of Proyecto Fin de Carrera Ingeniería...

Page 1: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Equation Chapter 1 Section 1

Proyecto Fin de Carrera

Ingeniería Aeronáutica

Programación de macros en CATIA V5 y Abaqus

para el análisis de conformado de chapa

Autor: Antonio Segura Valverde

Tutor: Domingo Morales Palma

Dpto. de Ingeniería Mecánica y Fabricación

Escuela Técnica Superior de Ingeniería

Universidad de Sevilla

Sevilla, 2017

Page 2: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental
Page 3: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

iii

Proyecto Fin de Carrera

Ingeniería Aeronáutica

Programación de macros en CATIA V5 y Abaqus

para el análisis de conformado de chapa

Autor:

Antonio Segura Valverde

Tutor:

Domingo Morales Palma

Profesor Contratado Doctor

Dpto. de Ingeniería Mecánica y Fabricación

Escuela Técnica Superior de Ingeniería

Universidad de Sevilla

Sevilla, 2017

Page 4: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental
Page 5: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

v

Proyecto Fin de Carrera: Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de

chapa

Autor: Antonio Segura Valverde

Tutor: Domingo Morales Palma

El tribunal nombrado para juzgar el Proyecto arriba indicado, compuesto por los siguientes miembros:

Presidente:

Vocales:

Secretario:

Acuerdan otorgarle la calificación de:

Sevilla, 2017

El Secretario del Tribunal

Page 6: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

A mi familia

A mis profesores y amigos

Page 7: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

vii

Page 8: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Agradecimientos

Me gustaría agradecer en primer lugar a mi tutor del proyecto, Domingo Morales Palma, por

darme la oportunidad de poder realizar este trabajo con él y por ayudarme durante todo el transcurso del

mismo. A mi familia y seres queridos, que siempre han estado apoyándome durante todo el transcurso de

mi carrera académica, que no ha sido corta, y facilitándome llegar al final de la misma.

Antonio Segura Valverde

Sevilla, 2017

Page 9: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

ix

Page 10: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Resumen

En este proyecto se estudian las posibilidades de la automatización de tareas en dos de los sistemas

CAD/CAM/CAE más utilizados para el diseño, análisis y fabricación de productos de chapa metálica: CATIA

y Abaqus.

El trabajo incluye una introducción a CATIA V5 y a Abaqus, con especial énfasis en las herramientas de

ambos programas que pueden automatizarse y que resultan útiles para el estudio de procesos de conformado

de chapa. Se presentan diversas metodologías de trabajo así como la estructura de programación orientada a

objetos en los lenguajes de programación propios de cada sistema: VBA para los módulos Part Design y

Prismatic Machining de CATIA V5, y Python para Abaqus.

En el trabajo se desarrollan dos aplicaciones prácticas sobre procesos de rebordeado de agujero. La primera

consiste en un conformado incremental en dos etapas en el que se pretende homogeneizar el espesor de la

chapa a través de una optimización de la trayectoria de la herramienta conformadora. La segunda aplicación

tiene como objetivo analizar el efecto del radio del punzón en un proceso de embutición, automatizando el

cálculo del espesor de la chapa.

Page 11: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

xi

Abstract

This project examines the automation tasks in two most commonly used CAD / CAM / CAE systems, for the

design, analysis and manufacture of sheet metal products: CATIA and Abaqus.

The work includes an introduction to CATIA V5 and Abaqus, with special emphasis on the tools of both

programs, that can be automated and are useful for the study of sheet forming processes.Several working

methodologies are presented, and the object-oriented programming structure in the programming languages of

each system: VBA for the Part Design module and Prismatic Machining modules of CATIA V5 and Python

for Abaqus.

The project also includes of two practical applications of hole flanging processes. The first one consists of a

single point incremental forming (SPIF) in two phases, in which the thickness of the sheet is homogenized

through an optimization of the forming tool. The second application aims to analyze the effect of the radius of

the punch in a process of forming, automating the calculation of the thickness of the sheet.

Page 12: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Índice

Agradecimientos viii

Resumen x

Abstract xi

Índice xii

Índice de Tablas xiv

Índice de Códigos xiv

Índice de Figuras xv

1 Introducción 1 1.1 Contexto del proyecto 1 1.2 Objetivos 1 1.3 Estructura de la memoria 2

2 Automatización con CATIA V5 3 2.1 Introducción a CATIA V5 3 2.2 Modelado de piezas (Part Design) 5 2.3 Simulación de mecanizado de piezas (Prismatic Machining) 8 2.4 Visual Basic for Application 16

2.4.1 Entorno 16 2.4.2 Librerías de las macros 17 2.4.3 Macro Recording 17

2.5 Visual Basic Editor 19 2.6 Programación con Part Design Module 20

2.6.1 PartDocument 20 2.6.2 Sketcher 22 2.6.3 CATPART(PartDesign) 24

2.7 Programación con Prismatic Machining 29

3 Automatización con Abaqus 33 3.1 Introducción a Abaqus CAE 33

3.1.1 Part 35 3.1.2 Material 35 3.1.3 Section 36 3.1.4 Assembly 36 3.1.5 Steps 37 3.1.6 Interactions 38 3.1.7 Load 38 3.1.8 Mesh 39 3.1.9 Job 40 3.1.10 Visualization 40

3.2 Modelado del conformado de chapa 41 3.2.1 Definición geométrica del modelo 41 3.2.2 Definición del material 42

Page 13: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

xiii

3.2.3 Definición de las propiedades de la chapa 42 3.2.4 Mallado del modelo 43 3.2.5 Ensamblaje de parts 44 3.2.6 Configuración de Steps 45 3.2.7 Definción de las interacciones entre parts en el modelo 45 3.2.8 Definición de condiciones de contorno del problema 47 3.2.9 ConFiguración Módulo Job 47 3.2.10 Visualización de resultados 48

3.3 Abaqus Scripting 49 3.3.1 Programación orientada a objetos en Abaqus (Abaqus Object Model) 50

3.4 Programación de un proceso de conformado de chapa 54 3.4.1 Modelado del ensayo 54 3.4.2 Interpretación de resultados (Módulo resultados Abaqus) 61

4 Aplicación CAD/CAM a un proceso de conformado incremental en 2 etapas 63 4.1 Descripción del problema 63 4.2 Metodología 64

4.2.1 Dibujar sketch parametrizado 65 4.2.2 Generar resto de modelo CAD/CAM 66 4.2.3 Scripts 68

4.3 Soluciones propuestas 68 4.3.1 Macros en Part Design 68 4.3.2 Macro en Prismatic Machining 69

4.4 Análisis y dicusión 70

5 Aplicación CAE a un proceso de rebordeado de agujero 72 5.1 Descripción del problema 72 5.2 Metodología 73 5.3 Modelo propuesto 74 5.4 Análisis de resultados 79

6 Conclusiones y trabajos futuros 81 6.1 Conclusiones 81 6.2 Trabajos futuros 81

Referencias 83

Glosario 84

ANEXO A 84 a.Recomendaciones generales de modelado 3D en programas de diseño industrial 84

ANEXO B 85 a. Macros módulo Part Design aplicación CAD/CAM a un proceso de conformado incremental en dos etapas 85 b. Macros módulo Machining aplicación CAD/CAM a un proceso de conformado incremental en dos etapas 90

ANEXO C 91 a. Macros auxiliares modelado en python aplicación CAD/CAM a un proceso de rebordeado de agujero 92 b. Macro pre4-fea-hole definition.py 100 c. Macro pre5-fea-hole definition.py 102 d. Macro scr7-calculate-sheet-thickness.py 104 e. Macro scr8-draw-graph.py 108

Page 14: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

ÍNDICE DE TABLAS

Tabla 2.1. Operaciones básicas en Part Design 6

Tabla 2.2 Operaciones básicas de mecanizado CATIA V5 10

Tabla 2.3 Propiedades y acciones del objeto Part y Product 20

Tabla 2.4 Objetos del PartDesign 22

Tabla 2.5 Objetos del Sketcher 23

Tabla 2.6 Tipo de cotas y su nomenclatura interna en CATIA V5 24

Tabla 2.7 Herramientas del Shapefactory 24

Tabla 2.8 Herramientas para programar un hole 27

Tabla 3.1 Sistemas de unidades consistentes 34

Tabla 3.2 Librerías de Abaqus 53

ÍNDICE DE CÓDIGOS

Código 1.Definición del objeto shapefactory 25

Código 2.Definición de un objeto Pad 25

Código 3.Referencia del pad 1. 25

Código 4.Referencia del pad 2. 26

Código 5.Pocket 26

Código 6. Referencia para un hole 26

Código 7.Hole 27

Código 8. Slot 27

Código 9.Shaft 28

Código 10.Rib 29

Código 11. Ejemplo uso de comandos para acceder a objetos 51

Código 12. Ejemplo uso de comandos para crear un Part 51

Page 15: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

xv

ÍNDICE DE FIGURAS

Figura 2.1 Pantalla inicial de trabajo CATIA V5 4

Figura 2.2 Área de trabajo del Part Design 5

Figura 2.3 Zona de trabajo del sketch 7

Figura 2.4 Pieza final generada 7

Figura 2.5 Zona de trabajo módulo Machining 8

Figura 2.6 Ventana de diálogo del Part Operation 9

Figura 2.7 Ventana de diálogo para definir una operación del Part Operation 11

Figura 2.8 Parámetros a definir de la herramienta 11

Figura 2.9 Parámetros a definir la trayectoria de la herramienta 12

Figura 2.10 Menú parámetros de conFiguración de feed rate and spindle 12

Figura 2.11 Menú Macros 13

Figura 2.12 Generación de código APT mediante la GUI de CATIA 14

Figura 2.13 Muestra de código APT generado en CATIA 15

Figura 2.14 Acceso al menú de macros mediante la GUI 16

Figura 2.15 Entorno VBA 17

Figura 2.16 Ayuda CAA V5 Visual Basic Help 18

Figura 2.17. Object browser 19

Figura 2.18 Estructura del módulo del Part Design 21

Figura 2.19 Estructura del modulo de Sketcher 22

Figura 2.20 Árbol de trabajo de CATIA en el módulo de Prismatic Machining (Process

tree). Objetos del Process

29

Figura 2.21 Estructura del módulo de Machining 30

Figura 2.22 Extracto de código del documento CATIA V5 Automation help 30

Figura 2.23 Ventana descripción del objeto Manufacturing Setup 31

Figura 3.1 Ventana de trabajo Abaqus/CAE 34

Figura 3.2 Opciones para modelado 3D(izquierda),2D (centro) y Axialsimétrico

(derecha.)

35

Page 16: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Figura 3.3 Cuadro de edición de un material 35

Figura 3.4 Creación de una sección solida (arriba izquierda),de placa

(arriba,derecha),de viga (abajo izquierda) u otra (abajo,derecha)

36

Figura. 3.5 Ventana de edición del Módulo Assembly 37

Figura. 3.6 Creación de un step 37

Figura. 3.7 Creación de una propiedad de interacción. 38

Figura. 3.8 Creación de una interacción. 38

Figura 3.9 Condiciones de contorno Mechanical y Otras 39

Figura. 3.10 Tipos de carga para un análisis estático general 39

Figura. 3.11 Menú de herramientas del módulo mesh 40

Figura. 3.12 Módulo de visualización de resultados 40

Figura 3.13 Clasificación de los procesos de conformado 41

Figura 3.14 Part chapa (izquierda), Part punzón (centro) y Part Blankholder (derecha) 42

Figura 3.15 Ventanas de edición de un material en abaqus propiedades elásticas y

plásticas

42

Figura.3.16 Ventanas de edición de secciones 43

Figura.3.17 Mallado del Part Sheet en el Módulo Mesh 43

Figura.3.18 Mallado del Part Blankholder en el Módulo Mesh 44

Figura.3.19 Mallado del Part Tool en el Módulo Mesh 44

Figura.3.20 Assembly del modelado del proceso de conformado de chapa 44

Figura.3.21Definición del Step 45

Figura.3.22Definición Field Output Request 45

Figura.3.23 Configuración Interaction Placa-Blankholder 46

Figura.3.24 Configuración Interaction Placa-Punzón 46

Figura.3.25 Configuración Cargas y condiciones de contorno 47

Figura.3.26 Monitorización del Job 47

Figura.3.27 Visualización del problema de conformado de chapa deformación final de

la chapa

48

Figura.3.28 Visualización del problema de conformado de chapa Tensione de V Mises

de la chapa

48

Page 17: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

xvii

Figura.3.29 Visualización del problema de conformado de chapa valores de PEEQ

(Equivalent plastic strain) de la chapa

49

Figura 3.30 Esquema de iteracción entre Abaqus Scripting Interface y Abaqus/CAE

kernel

49

Figura 3.31 Estructura del modelo de objetos en Abaqus 51

Figura 3.32 Captura del Abaqus Scripting User’s Manual 52

Figura 3.33 Extracto del inicio de un archivo *.jnl 52

Figura. 3.34 Importación de las librerías a utilizar en el script 54

Figura. 3.35 Estructura del modelo de objetos en Part 54

Figura. 3.36 Esquema del modelado del proceso de conformado 55

Figura. 3.37 Extracto de código para le generación de los parts del modelo 56

Figura. 3.38 Extracto de código para le generación de partición 57

Figura. 3.39 Extracto de código para creación de material, sección y asignación de

sección

57

Figura. 3.40 Extracto de código para mallar los parts 58

Figura. 3.41 Estructura del modelo de objetos del rootAssembly 58

Figura. 3.42 Extracto de código perteneciente al assembly 59

Figura. 3.43 Extracto de código perteneciente a la creación del step y configuración de

los datos de salida del análisis

59

Figura. 3.44 Extracto de código para la configuración de contactos en el modelo 60

Figura. 3.45 Extracto de código para la definición de las condiciones de contorno 60

Figura. 3.46 Extracto de código para definir el job 61

Figura. 3.47 Estructura del modelo de objetos del odb 61

Figura. 3.48 Estructura del modelo de objetos bajo el objeto session 62

Figura. 3.49 Extracto de código para crear una ventana de visualización y mostrar

resultados del análisis

62

Figura 4.1 Boceto trayectorias de herramienta en SPIF y parametrización de

trayectorias en conformado en 2 etapas

64

Figura 4.2 Esquema de definición de parámetros en nuestra aplicación 65

Figura 4.3 Restricciones geométricas de nuestro modelo y relación entre parámetros y

variables

65

Figura 4.4 Sketch trayectoria con parámetros A=30mm, W=5mm y H=7mm 66

Page 18: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Figura 4.5 Part generado Hole Flanging 2 pasadas (A=30mm,W=5mm y H=7mm) 66

Figura 4.6 Configuración de estrategia de trayectoria 67

Figura 4.7 Configuración geometría a mecanizar 67

Figura 4.8 Configuración del feed rate y spindle 67

Figura 4.9 Configuración de macros de aproximación 67

Figura 4.10 Imagen del process utilizado para la generación de trayectorias 68

Figura 4.11 Macro 01-update-geometry 69

Figura 4.12 Macro generación de APT 69

Figura 4.13 Visualización de las ventanas emergentes que aparecen al ejecutar la macro

Macro 01-update-geometry

70

Figura 5.1 Esquema relación entre archivos en nuestra aplicación CAE 71

Figura 5.2 Archivos de entrada de datos a la aplicación CAE 72

Figura 5.3 Estructura del If 72

Figura 5.4 Estructura del for 72

Figura 5.5 Esquemas del proceso de Hole Flanging en una sola etapa 73

Figura 5.6 Esquemas del proceso de Hole Flanging modelado en Abaqus 74

Figura 5.7 Script pre4-fea-hole definition.py 75

Figura 5.8 Script creación parts de herramientas 76

Figura 5.9 Script del mallado del modelo 76

Figura 5.10 Script del Assembly 76

Figura 5.11 Script condiciones de contorno en Step 2 77

Figura 5.12 Script conFiguración de contactos entre chapa-herramienta y chapa-

sistema de sujección

77

Figura 5.13 Script de creación de Jobs 77

Figura 5.14 Gráfica Hole-flanging en una sola pasada 78

Figura 5.15 Visualización del análisis para herramienta de radio de curvatura 10mm 79

Figura 6.1 Esquema del proceso de automatización de la tarea 80

Page 19: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

1

1 INTRODUCCIÓN

1.1 Contexto del proyecto

Hoy en día existe una necesidad cada vez más exigente para el desarrollo de técnicas de fabricación

ágiles que puedan ser fácilmente adaptables a la introducción de nuevos productos en el mercado. La industria

del conformado de metales está en continua búsqueda y desarrollo de nuevas tecnologías que permitan el

ahorro de tiempo y costes

En este contexto, el grupo de investigación del departamento de Ingeniería Mecánica y Fabricación de la

Universidad de Sevilla, investiga desde hace varios años sobre el conformado de chapa metálica en diferentes

materiales. Actualmente, el grupo usa el software CATIA V5 para la realización del mecanizado de piezas con

las máquinas de control numérico disponibles en el taller, tanto para el proceso de conformado incremental en

dos etapas, como para el proceso de rebordeo de agujero en una etapa. El estudio de diversos parámetros que

influyan en el fallo en proceso de conformado incremental provoca, que se realicen varios modelos cambiando

una serie de parámetros en busca de la relación con el fallo. El estudio de trayectorias de la herramienta es uno

de los ensayos realizados. La aplicación de macros en la generación del código APT con la trayectoria de la

herramienta sería una herramienta de gran ayuda en el desarrollo de ensayos reales y de análisis en software

CAE.

1.2 Objetivos

Éste proyecto tiene como objetivo general, la introducción a la automatización de tareas en CATIA

V5 y Abaqus y su posible aplicación en el análisis del conformado de una chapa.

El objetivo del proyecto es la interacción y manejo del lenguaje de programación de macros VBA, con la que

poder obtener en CATIA V5 diferentes aplicaciones que permitan la optimización del tiempo a la hora de

realizar modificaciones geométricas en una pieza sólida que será sometida a distintos test en el laboratorio de

Fabricación. En una segunda parte del trabajo se utilizará otro conocido leguaje de programación, Python, para

poder automatizar el calculo mediante Abaqus, programa de MEF, de las deformaciones en la pieza y devolver

una serie de archivos que nos muestren la variación de espesor de la chapa en un proceso de conformado

dependiendo del radio de curvatura de la herramienta.

Con el fin de lograr éste objetivo se ha establecido una lista de tareas u objetivos concretos a realizar:

Estudio introductorio al modelo de programación orientada a objetos de CATIA V5.

Estudio introductorio al modelo de programación orientada a objetos de Abaqus.

Generación de macros en CATIA V5 para generar trayectorias para un proceso de

deformado incremental en chapa.

Generación de un modelo en Abaqus mediante macros, para el análisis de un proceso de

rebordeado de agujero y la relación del espesor en la chapa con el radio de curvatura de la

herramienta

Page 20: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Introducción

2

1.3 Estructura de la memoria

Éste proyecto está organizado en seis capítulos, incluyendo la presente introducción.

El Capítulo 2 engloba los apartados teóricos dedicados a la Automatización en CATIA V5 mediante

macros. Contiene una visión general del software de CAM/CAD CATIA V5, los módulos de Part Design y

Prismatic Machining, se realiza una introducción a la programación en Visual Basic en el entorno CATIA y

las singularidades en cada uno de los módulos que son necesarios para el modelado de las trayectorias de

fabricación y la obtención del código APT.

En el Capítulo 3 se engloban los apartados teóricos dedicados a la Automatización en Abaqus

mediante macros o scripts. La distribución es similar a la del capítulo anterior, visión general del software

CAE Abaqus, se explican los módulos que lo componen y se genera un modelo para el análisis de un

conformado de chapa genérico.

En el Capítulo 4 se desarrolla la aplicación de macros a un proceso de conformado incremental en 2

etapas.Se desarrollan macros para automatizar las tareas necesarias para generar las trayectorias del punzón en

el proceso de conformado de dos etapas.

En el Capítulo 5 se desarrolla la aplicación de macros en el análisis del proceso de rebordeo de

agujero para el estudio la dependencia del espesor de la chapa con el radio de curvatura de la herramienta de

procesado.

El Capítulo 6 muestra las conclusiones principales de este trabajo y los posibles trabajos futuros que

pueden derivarse de este proyecto.

Al final de este documento se adjuntan tres anexos, uno con consejos a seguir para el modelado de

una pieza 3D en CATIA V5, otro dos con los scripts generados en visual Basic para CATIA V5 y en Python

para Abaqus.

Page 21: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

3

2 AUTOMATIZACIÓN CON CATIA V5

n este capítulo se va a presentar el programa CATIA V5 y se va a explicar a grandes rasgos, el

lenguaje de programación “Visual Basic for applications” (VBA). Una vez introducido el entorno

en el que se va a trabajar, se procederá a explicar el entorno general de trabajo de VB6, así como

nociones generales de programación de dicho lenguaje.

2.1 Introducción a CATIA V5

CATIA (Computer-Aided Three dimensional Interactive Application) es un programa informático de

diseño, fabricación e ingeniería asistida por computadora comercial realizado por Dassault Systèmes. El

programa está desarrollado para proporcionar apoyo desde la concepción del diseño hasta la producción y

el análisis de productos.

Provee una arquitectura abierta para el desarrollo de aplicaciones o para personalizar el programa. Las

interfaces de programación de aplicaciones, CAA2 (o CAAV5), se pueden programar en Visual Basic y

C++.

Fue inicialmente desarrollado para servir en la industria aeronáutica. Se ha hecho un gran hincapié en el

manejo de superficies complejas, CATIA también es ampliamente usado en la industria del automóvil

para el diseño y desarrollo de componentes de carrocería. Concretamente empresas como el Grupo VW

(Volkswagen, Audi, SEAT y Škoda), BMW, Renault, Peugeot, Daimler AG, Chrysler, Smart y Porsche

hacen un amplio uso del programa. La industria de la construcción también ha incorporado el uso del

software para desarrollar edificios de gran complejidad formal; el Museo Guggenheim Bilbao, en España,

es un hito arquitectónico que ejemplifica el uso de esta tecnología. Referencia [2].

Esto permite que varias disciplinas aprovechen las aplicaciones especializadas de CATIA V5 y lo utilicen

en todas las fases del proceso de desarrollo de sus productos.

Hay distintos módulos de trabajo dentro de CATIA V5, que a su vez tienen distintos submódulos. En éste

proyecto nos centraremos en los módulos:

-Mechanical Design, en concreto en el submódulo Part Design y Assembly

-Machining, en concreto en el submódulo Prismatic Machining

Referencia [1]

E

Page 22: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con CATIA V5

4

Figura 2.1 Pantalla inicial de trabajo CATIA V5

En CATIA existen diferentes tipos de ficheros; los mas importantes, o al menos los que vamos a tratar en

éste proyecto, son: Ficheros CATPart, CATProduct, y CATProcess.Los ficheros CATPart albergan toda

la geometría necesaria para realizar un Diseño de Partes. Su estructura está compuesta básicamente por un

Sistema de Referencia con los tres Planos Normales, uno o varios Part Body y uno o varios Geometrical

Set.

En el Part Body se almacenan los elementos de Volúmenes y Sólidos, y en los Geometrical Set, la

Geometría Alámbrica y las Superficies. El número y nombre de los Part Body y Geometrical Set a

definir, serán a criterio del usuario siempre que no existan normas de procedimientos a seguir para la

definición de estos componentes.

En los ficheros CATProduct, se incluyen uno o varios ficheros CATPart y sus condiciones o relaciones de

posición entre ellos. Estas Condiciones son las Constraints y son las restricciones de libertad de

movimientos que tienen unos elementos respecto a otros. Por ejemplo, la rueda de un coche tiene la

restricción de estar “siempre” en contacto con el suelo, sin embargo, tiene la libertad de movimiento de

girar sobre su eje; la primera sería una Constraint y la segunda, un grado de libertad. Los Ficheros

CATProcess son los que contienen las Partes y Operaciones necesarias para la creación del Programa de

Control Numérico. Referencia [4]

Como se ha mencionado anteriormente, CATIA es un software de diseño CAD/CAE muy potente que,

además de poner a nuestra disposición una gran cantidad de herramientas de trabajo para el modelado de

sólidos, contiene herramientas para implementar los conceptos de KBE (Knowledge-based Engineering).

Una de las herramientas es la programación en VBA y al plantearnos el desarrollo y uso de esta opción,

estamos persiguiendo dos objetivos principales:

1. Conseguir que los procesos se realicen más rápido (al ser trabajados por lotes).

2. Disminuir la probabilidad de error humano (al realizar procesos repetitivos que pueden conllevar falta

de atención).

Más adelante se van a exponer algunos de los conceptos y principios que integran la programación en

VBA para Catia.

Page 23: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

5

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

2.2 Modelado de piezas (Part Design)

Dentro del modulo del Mechanical Design se encuentra el submódulo de Part Desing. En CATIA se

puede diseñar piezas mecánicas en 3D de forma intuitiva gracias a su interfaz de usuario (GUI). En dicho

módulo el usuario puede modelar una pieza partiendo de un sketch, dibujo en un plano de referencia, y

mediante distintos commandos darle profundidad, hacerle agujeros, rebordeo etc…

A continuación vamos a realizar una breve descripción del área de trabajo del Part Design. Para acceder a ella

seleccionamos “File- New” y se abrirá un cuadro de diálogo, “List of types”. Seleccionamos “Part” y

automáticamente se abrirá el área de trabajo del Part Design.

Figura 2.2 Área de trabajo del Part Design

En la figura 2.2 observamos el área de trabajo del Part Design. A la izquierda en el margen superior,

el árbol de diseño. En ésta parte colgará todas las operaciones que se hagan sobre la pieza. Se compone por el

nombre de la pieza. por un Geometrical Set, en el que se puede hacer lineas, planos y sketchs de apoyo para la

realización de la pieza, y el PartBody donde colgarán las operaciones, que como resultado, generarán el diseño

3D deseado.

En la parte derecha se encuentran las distintas operaciones para modelar una pieza. En la tabla 2.1 se describen

dichas operaciones básicas.

Page 24: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con CATIA V5

6

Sketch. – Herramienta utilizado para crear un sketch y abrir el toolset de Sketch

Pad. - Herramienta utilizado para la creación de un sólido a partir de un perfil (profile, obtenido

con el Sketcher) plano que se “estira” a lo largo de un eje perpendicular.

Pocket. – Herramienta análoga al Pad, el efecto es la retirada de material o vaciado.

Shaft. – Herramienta para crear un sólido a partir de la revolución de un perfil sobre un eje.

Groove. - Herramienta para acanalar.

Hole. – Herramienta para realizar agujeros a partir de un sketch circle.

Rib. - Herramienta para realizar extrusionados.

Slot. – Herramienta para crear ranuras.

Stiffener. – Herramienta para crear nervios.

Edge Fillet. – Herramienta par biselar.

Chamfer. – Herramienta para crear chaflanes.

Constraint. – Herramienta utilizado para acotar las dimesiones del sketch.

Tabla 2.1. Operaciones básicas en Part Design

Para generar cualquier pieza el primer paso es realizar un sketch, en el cuál se creara uno de los perfiles de la

pieza a la cual se le dará profundidad posteriormente con uno de los comandos específicos, como por ejemplo

podría ser el Pad.

En el anexo se enumeran unas pautas para modelado en 3D generales. Como resultado de la combinación de

sketches y operaciones del Part Design se modelaría una pieza en 3D con CATIA. En la figura 2.4 observamos

una pieza en 3D realizada a través de un sketch. sección en un plano ZY y su revolución en torno al eje Z

,usando la operación Shaft, nos dá como resultado dicha pieza en 3D.

Page 25: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

7

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Figura 2.3 Zona de trabajo del sketch

Figura 2.4 Pieza final generada

Page 26: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con CATIA V5

8

2.3 Simulación de mecanizado de piezas (Prismatic Machining)

Uno de los módulos más interesantes de CATIA V5 desde el punto de vista de la

fabricación.CATIA, como herramienta CAD/CAM, te permite modelar una pieza en 3D y gracias al módulo

Machining simular el proceso de mecanizado, con las distintas operaciones de mecanizado que sean necesarias

para obtener la pieza final a partir del lingote,tocho o pieza previamente conformada.CATIA nos da una

opción de generar el código APT para el posterior uso en una máquina de Control Numérico.

El último paso dentro de CATIA para materializar el diseño en un objeto real consiste en definir, de manera

gráfica e interactiva, las operaciones y movimientos que debe hacer una máquina herramienta de control

numérico (MHCN en adelante) a partir del stock para llegar al objetivo. Dichas operaciones, como es sabido,

se indican a la máquina mediante un programa de control numérico, escrito en un lenguaje comprensible para

la máquina. En la industria existen dos tipos de lenguajes que son totalmente válidos para nuestros propósitos,

pero con algunas diferencias:

• APT (Automatically Programmed Tooling). Es un lenguaje de alto nivel, en el sentido en que

posee sentencias de complejo significado geométrico, que una máquina elemental de Control

Numércio no podría interpretar. Podría decirse que su gramática es relativamente próxima al

lenguaje humano. Tiene la ventaja de que no esta particularizada para ningún modelo o fabricante de

MHCN.

• Lenguaje ISO, también conocido como “palabras G”. Es el lenguaje que interpretan todas la

máquinas comerciales de hoy en día, aunque existen ligeras variaciones de un fabricante a otro. Es,

por lo dicho, un lenguaje de bajo nivel.

A continuación en la figura 2.5 vemos la zona de trabajo en el módulo de Machining, sub-módulo Prismatic

Machining. Explicaremos a grandes rasgos las herramientas más communes del módulo y los pasos a realizar

para obtener como obejtivo la generación de un código APT.

Figura 2.5 Zona de trabajo módulo Machining

A la izquierda de la figura 2.5, marcado en verde tenemos el Process List. Esta es la rama de mayor incidencia

en un CATProcess, ya que en ella debemos definir todos y cada uno de los Procesos de Mecanizado, en

adelante, “Part Operations”.

La fabricación de una Pieza (Part), necesitará una o varias “Part Operations”, según la complejidad de la Parte

a mecanizar y los criterios aplicados por el Programador.

De forma general, podemos decir que una pieza (Part), necesitará tantas “Part Operations” como máquinas

distintas se utilice en el Proceso. Otro factor determinante para el número de “Part Operations”, es el número

de Posiciones de Mecanizado.

Page 27: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

9

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Lo primero es realizar un Part Operation, para ello seleccionamos el icono situado en la parte superior

derecho de la zona de trabajo. Tenemos que definir el part operation, para ello nos servimos de la ventana de

diálogo que aparece al hacer doble click sobre el Part operation creado en el árbol del Process.

Figura 2.6 Ventana de diálogo del Part Operation

Para definir nuestro part operation, CATIA nos da varios parámetros para completar nuestro modelo. Podemos

asignar una máquina a el part operation, también podemos elegir un eje de referencia de la máquina. CATIA

cogerá un eje de referencia por defecto si no se le asigna uno.

Un parámetro indispensable es el Part o Product ( ), en el cuál se asocial un CATProduct o CATPart al part

operation.

Respecto a parámetros geométricos relevantes encontramos:

Design Part.- Si queremos hacer simulaciones visuales del procesado de la pieza.Se selecciona la

pieza a mecanizar

Stock.- Por defecto CATIA creará uno,pero es posible seleccionar una pieza creada por el usuario

como Stock.

Fixtures.- En éste apartado se pueden seleccionar los elementos de sujección , mesa de trabajo

etc…

Safety plane.- Nos permite seleccionar un plano donde podamos garantizar que la herramienta se

mueve sin riesgo de c colisionar con la pieza, generalmente por encima de la misma. Con este plano

definido, CATIA genera una programa donde en cada cambio de operación dentro de la secuencia, la

herramienta retorna al plano de seguridad.

Dentro de cada “Part Operations”, se definirá al menos un “Manufacturing Program”, y dentro de éste se

definirán todas las operaciones de mecanizado o “Machining Operations” necesarias para su mecanizado. En

ocasiones, el proceso de una “Part Operations”, no se puede realizar todo de una vez, porque durante el

proceso, es necesario quitar algún elemento del útil, o montar una brida o cualquier otra manipulación del

Operario que implique una parada de la maquina para realizarla.

En este caso, se definirá un “Manufacturing Program 1” que incluirá todas la “Machining Operations”

anteriores a la parada de máquina, y un “Manufacturing Program 2” para las “Machining Operations”

posteriores.Dentro de un “Manufacturing Program” se pueden incluir una o varias “Machining Operations”, y

una o varias “Auxiliary Operations”.

Page 28: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con CATIA V5

10

Cuando hablamos de Tareas Básicas de Mecanizado, hablamos de las distintas operaciones que se realizan en

una fresadora convencional sin tener en cuenta que los movimientos que manualmente realiza el Operario

puedan ser sustituidos por unos movimientos automatizados por Control Numérico.

Una vez que tengamos identificadas cada una de estas operaciones, nuestro siguiente paso sería aplicar la

estrategia mas sencilla de las Machining Operations que CATIA V5 pone a nuestra disposición, tratando

siempre de aplicar las Estrategias mas básicas y elementales antes de elegir Estrategias avanzadas y

complicadas que dificultarían tener un buen control de la herramienta y del mecanizado.

Atendiendo a estos criterios las operaciones básicas de mecanizado pueden agruparse en:

•Planeado.

•Contorneado.

•Cajeado.

•Desbastes.

•Ranurado.

•Barridos.

•Multiejes.

Hay que tener en cuenta que esta clasificación atiende solamente a criterios Físicos y Tecnológicos, sin tener

en cuenta el Modo de Programación empleado. Las seis tareas primeras corresponden al mecanizado

realizados en Fresadora de tres ejes, donde se incluyen Prismatic Machining y Surface Machining, aunque la

Programación Prismatica puede hacerse inclinada en algunos casos y necesitaría una máquina de 4 o 5 ejes. El

último grupo de tareas corresponde al mecanizado realizado en una fresadora de cuatro o cinco ejes, y su

mecanizado solo es posible en una máquina gobernada por Control Numérico (CN) y un programa de

Multiaxis Machining. Referencia [4]

Milling Operations Descripción

Pocketing Operations Operación de vaciado

Prismatic Roughin Operations Operación de desbaste

Facing Operations Operación de planeado

Profile Contouring Operations Operación de contorneado

Curve Following Operations Operacción de fresado

Groove Milling Operations Operación de ranurado

Point to Point Operations Operación de punto a punto

Tabla 2.2 Operaciones básicas de mecanizado CATIA V5

Para cada una de las operaciones mostradas en la tabla 2.2 serán necesario introducir una serie de parámetros

para definir la operación a realizar, éstos serán requeridos por CATIA al hacer doble click sobre el icono de la

operación deseada. En bases generales para definir una operación se debe:

Page 29: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

11

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Definir la geometría a ser mecanizada . -En éste apartado se selecciona la superficie a tratar,

sírvase como ejemplo una operación de pocketing. En ella definiremos el plano superior, el plano

inferior y las paredes como condiciones de contorno.Una vez definido los parámetros mínimos

requeridos el icono de Geometry pasará de .

Figura 2.7 Ventana de diálogo para definir una operación del Part Operation

La herramienta que va a ser utilizada para el mecanizado . -Elección de la herramienta y

definición de la geometría de la herramienta. Los datos que se definen en este apartado son

fundamentales tanto para la generación del programa de control numérico (p. ej. para el ajuste de

radio) como para la correcta simulación y previsualización de la operación mecanizado. Todos los

parámetros que aparecen en la Figura X son editables por el usuario.

-db,.Diámetro del vástago

-D.- Diámetro del cabezal de la herramienta

-L.- Longitud total de la herramienta

-Rc.-Radio de curvatura del cabezal de la

herramienta

Figura 2.8 Parámetros a definir de la herramienta

Los parámetros para la estrategia de mecanizado . -Eligiendo el recorrido que se desee que

realice la máquina mientras que realiza el mecanizado, siendo posible seleccionar realizar el

mecanizado de una sola pasada, back and forward junto a otras opciones. Permite especificar el tipo

de trayectoria que va a realizar la herramienta, separación entre líneas paralelas y diferentes

profundidades.

Page 30: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con CATIA V5

12

Otros apartados a modificar son la estrategia radial a seguir por la herramienta, la estrategia axial y el

HSM (High Speed Milling). En la figura 2.9 podemos observar la ventana para su modificación.

Figura 2.9 Parámetros a definir la trayectoria de la herramienta

Velocidades de rotación y de avance de la herramienta .- Velocidades de avance (feedrate) y

rotación (spindle) de la herramienta en las distintas fases de la operación (Figura 2.10). Las fases a las

que se refiere la figura son: aproximación, mecanizado, retirada (p. ej. al salir de un taladro) y

acabado.

Figura 2.10 Menú parámetros de configuración de feed rate and spindle

Macros para definir los movimientos de transición al inicio y fin de la operación Estrategias de

aproximación “Segura”. La aproximación a la pieza para realizar una operación de mecanizado debe

ser diseñada con cuidado para que no suceda ninguna colisión, cosa que se puede detectar y estudiar

mediante simulación. Permite definir varios puntos “seguros” para la aproximación.

Page 31: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

13

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Figura 2.11 Menú Macros

Se definen como dos tipos de macros en éste apartado:

Macro Approach

Cuando definimos un movimiento de corte en una operación de mecanizado, tenemos que tener muy

en cuenta que la herramienta no puede empezar a cortar material de cualquier forma, la herramienta

necesita estar en una posición favorable antes de empezar el corte, y también comenzar la penetración

en el material de una forma suave, progresiva, y siempre que sea posible, tangente al movimiento de

corte.

Como norma general podemos decir que hay dos tipos diferentes de Macros; Macro de aproximación

(Approach), y de retirada (Retract).

La Macro de aproximación (Approach), consta de dos movimientos fundamentales; el primero sería

alcanzar la profundidad del mecanizado, y la segunda posicionarse fuera de la Drive Surface (DS), de

forma que el siguiente movimiento de acercamiento a la Drive Surface, sea de forma tangente.

En el primer movimiento para alcanzar la altura del mecanizado, procuraremos siempre posicionar la

herramienta fuera del material, y en este caso, el movimiento puede realizarse como una bajada

totalmente vertical o movimiento puramente axial. Este tipo de movimientos se puede programar

cuando se trata de mecanizado de contornos exteriores, planeados o desbastes abiertos.

Si el mecanizado a realizar es un desbaste cerrado, o un contorneado interior, la penetración en el

material hasta alcanzar la altura del mecanizado,no se podrá realizar de forma vertical porque la

herramienta entraría cortando el material en dirección axial y podría provocar rotura de herramienta.

En este caso, será necesario definir un movimiento en rampa o movimiento circular hasta alcanzar la

altura deseada.

Page 32: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con CATIA V5

14

Macro Retract

Los movimientos del Macro Retract, consisten básicamente en salir de la zona del material hasta

alcanzar una altura de seguridad fuera del Stock.

Cuando se definan los macros Retract, es importante tener en cuenta el siguiente movimiento de

forma que el movimiento sea un movimiento previo al Macro Approach de la siguiente operación.

Hay veces que hay que definir los Macros Retract con unos movimientos amplios para enlazar la

siguiente operación, y otras veces, estos movimientos son mínimos por ser muy cercana la zona a

mecanizar a continuación.

Aunque el movimiento mas generalizado del macro Retract es un movimiento axial de retirada hasta

un plano de seguridad, este movimiento lo realizaremos sólo cuando la herramienta ya no esté en

contacto con la Drive Surface, (DS).

Cuando no es posible salir fuera del material para realizar la retirada, debemos definir un pequeño movimiento

tangente a la DS, de unos 2 o 3 mm para separarse y después realizar el movimiento vertical de retirada.

Referencia[4]

Una vez definidas nuestras operaciones de mecanizado en nuestro part operation una opción interesante es

generar nuestro código APT ó ISO. En el árbol de trabajo, basta con seleccionar “Manufacturing Program” y

pulsar el botón, del que se despliega un menú en el que seleccionaremos Generate NC Code in Interactively.

Esta orden requiere rellenar los datos relativos al lenguaje de la máquina destino en la siguiente caja de

diálogo:

Figura 2.12 Generación de código APT mediante la GUI de CATIA

La opción NC data type permite indicar si queremos generar un programa ISO ó APT. En el campo output file

debemos indicar un nombre de fichero, que se empleará parea generar un fichero ASCII con las instrucciones

APT o ISO del programa de mecanizado. El fichero generado puede ser editado con el Block de Notas de

Windows. A continuación, se muestra parte del código APT generado en un process que define el problema a

estudiar en éste proyecto.

Page 33: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

15

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

$$ -----------------------------------------------------------------

$$ Generated on sábado, 26 de agosto de 2017 20:09:03

$$ CATIA APT VERSION 1.0

$$ -----------------------------------------------------------------

$$ Manufacturing Program.1

$$ Part Operation.1

$$*CATIA0

$$ Manufacturing Program.1

$$ 1.00000 0.00000 0.00000 0.00000

$$ 0.00000 1.00000 0.00000 0.00000

$$ 0.00000 0.00000 1.00000 0.00000

PARTNO PART TO BE MACHINED

COOLNT/ON

CUTCOM/OFF

$$ OPERATION NAME : Tool Change.1

$$ Start generation of : Tool Change.1

TLAXIS/ 0.000000, 0.000000, 1.000000

$$ TOOLCHANGEBEGINNING

CUTTER/ 20.000000, 10.000000, 0.000000, 10.000000, 0.000000,$

0.000000, 50.000000

TOOLNO/1, 20.000000

TPRINT/Forming Tool

LOADTL/1

$$ TOOLCHANGEEND

$$ End of generation of : Tool Change.1

$$ OPERATION NAME : ZLevel.1

$$ Start generation of : ZLevel.1

LOADTL/1,1

SPINDL/ 70.0000,RPM,CLW

RAPID

GOTO / -23.22399, -44.88788, 2.00000

RAPID

GOTO / -23.22399, -44.88788, 1.20000

FEDRAT/ 300.0000,MMPM

Figura 2.13 Muestra de código APT generado en CATIA

Page 34: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con CATIA V5

16

2.4 Visual Basic for Application

El lenguaje de programación Visual Basic procede del denominado BASIC (Beginner’s All-

purpose Symbolic Instruction Code) que fue creado en 1964 en el Dartmouth College, como un medio

para iniciarse en el mundo de la programación. Tras varias modificaciones, en 1978 se estableció el

BASIC standard. Primero fue nombrado como GW-BASIC, luego quedó en QuickBASIC y actualmente se

le conoce como Visual Basic tras adaptarse al entorno de ventanas “Windows” e incorporar herramientas

de tipo visual como botones, listas de texto o cuadros de texto asociadas a eventos. La primera versión de

Visual Basic fue presentada en 1991, siendo la última la versión 6, liberada en 1998.

Visual Basic for Applications (VBA) es el lenguaje de macros de Visual Basic v6. Éste fue incorporado en

muchas aplicaciones de Microsoft y posteriormente en otras aplicaciones para ampliar la funcionalidad de

las mismas. VBA incorpora las librerías y herramientas de Visual Basic, a las que añade librerías de

objetos propias de cada software donde esta incluido. La debilidad de este lenguaje radica en que la

compilación de la macro no puede realizarse si no se dispone del entorno en el que se ha desarrollado.

Otra debilidad es su falta de versatilidad para trabajar en otros sistemas operativos.

CATIA en 1998 con la versión V5 incorporó VBA a su entorno, pudiendo realizar macros en VB y en

lenguaje C++, siendo aún los lenguajes de macros que se han dispuesto para su versión V6. Referencia [2]

2.4.1 Entorno

En primer lugar, se va a explicar que es una macro, ya que es importante saber que es lo que

estamos realizando. Una macro consiste en una serie de funciones escritas en un lenguaje de

programación que agrupa una serie de comandos, los cuales permiten realizar las operaciones requeridas

automáticamente. Son usadas para ahorrar tiempo y reducir la posibilidad de errores humanos a la hora de

realizar operaciones que se llevan a cabo de forma repetitiva.

El uso de macros para la automatización en el proceso de diseño es prácticamente ilimitado, siendo

algunos ejemplos la importación de puntos desde Excel a un modelo CAD 3D, la generación de

geometrías de manera automática, la creación de planos de modelos 3D, etc.Un CATScript Macro no deja

de ser un cojunto de instrucciones escritas en un lenguaje muy similar a Visual Basic (VB) para la

creación, manipulación y explotación de Objetos de CATIA V5.

Para acceder al entorno de trabajo VBA no hace falta estar en ningún módulo de CATIA específico, se

puede acceder a él desde cualquier módulo con tan solo pinchar dentro de la pestaña Tools en la opción

Macros. Dentro de ésta se podrá o bien comenzar a grabar una macro, acceder a las macros ya realizadas

y librerías o al editor de Visual Basic, como se aprecia en la figura 2.14.Referencia [1]

Figura 2.14 Acceso al menú de macros mediante la GUI

Page 35: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

17

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

2.4.2 Librerías de las macros

Las macros de CATIA pueden ser almacenadas en las librerías de macros de tres formas posibles:

Folders (vbscript y CATScript), Project files (catvba) o CATParts/CATProducts. Solo una de estas tres

librerías de macros puede ser usada a la vez. Para crear una librería el procedimiento a usar es el siguiente.

1. Ir a Tools → Macro → Macros.

2. Abrir “Macro libraries”.

3. Asegurarse de que el tipo de librería esté cargada en “Directories” y luego hacer click en “Add existing library”.

4. Seleccionar la carpeta donde se van a guardar los CATScripts a lo largo del proyecto.

5. Cerrar la librería de macros. En dicha librería deberían aparecer posteriormente la lista de

CATScripts que se realicen.

Otro método es crear un Project file donde se irán guardando las distintas macros en módulos. Ésta ha

sido la opción elegida para el desarrollo de éste proyecto.

Figura 2.15 Entorno VBA

2.4.3 Macro Recording

Un método para crear macros es grabando las acciones que se realicen con el ratón. Para macros

grabadas en un fichero o en un CATPart o CATProduct, los estamentos declarados se grabarán para

CATScript, pero no para MSVBScript. Para macros grabadas en una librería, “MS VBA” es la única

opción. A la hora de grabar una macro mediante este procedimiento hay que tener en cuenta algunos

aspectos:

No seleccionar Workbenches (entornos de trabajo) mientras se está grabando una macro.

No grabar más de lo que sea absolutamente necesario.

No usar la opción “deshacer” mientras se está grabando.

No usar la opción “deshacer” mientras se está grabando.

Page 36: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con CATIA V5

18

Ser consciente y darse cuenta de la configuración de CATIA cuando se está grabando.

Salir de los sketches (dibujos) antes de parar de grabar.

Verificar cada macro una vez se haya grabado.

Una vez se haya finalizado la grabación, se deshará todo lo realizado y se reproducirá la macro,

de manera que se podrá comprobar si es correcta la macro y si reproduce la operación que se quería

realizar.

También hay que tener en cuenta que mediante dicho procedimiento aparecerán numerosas líneas de

código que no son realmente necesarias, por lo que pueden eliminarse. Por otro lado, tampoco aparecerán

comentarios acerca de lo que se está haciendo o explicando los parámetros de entrada, por lo que se

deberán añadir manualmente. Referencia [1]

Durante la realización de este proyecto se ha hecho uso de esta herramienta para aprender a usar

operaciones de gran complejidad de las cuales no existía mucha información al respecto. Sin embargo,

todos los códigos desarrollados en el presente proyecto se han realizado mediante la opción que se explica

en el siguiente apartado.

Por último, una de las herramientas principales que se van a utilizar para el desarrollo de macros

o scripts es la ayuda que ofrece Catia en el CAA V5 Visual Basic help. Además de contar con una valiosa

información acerca de los objetos propios aplicados a VBA, en la ayuda de Catia encontramos pequeñas

guías de sus respectivos módulos. En ellas se definen los conceptos básicos, las interactuaciones que

realizan sus módulos y algunos ejemplos.

Figura 2.16 Ayuda CAA V5 Visual Basic Help

Page 37: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

19

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

2.5 Visual Basic Editor

El entorno de Visual Basic Editor es sobre el que se ha desarrollado la primera parte de éste Trabajo Fin

de Carrera. Para acceder al mismo debemos pinchar en Tools → Macro → Visual Basic Editor

apareciendo la ventana de la figura 2.14. Todo lo que se programe y se realice dentro de esta ventana

puede interactuar directamente con CATIA si empleamos los objetos del programa. Primero conviene

tener a disposición del programador tanto el menú denominado Project Explorer, así como el Properties

Windows, ya que son los dos menús fundamentales en los que se trabaja y los cuales facilitan mucho el

trabajo. Para acceder a ellos, hay que clicar sobre la pestaña View y adjuntar ambas aplicaciones a la

pantalla principal tal como se muestra en la figura 2.15.

La ventana Project Explorer recoge todos los datos y archivos que conforman el Project (proyecto de

programación) en el que se esté trabajando. Puede albergar formularios (Userforms), módulos (Modele) y

clases (Class module), los cuales se explican a continuación:

-Módulos. - Son rutinas independientes. Dado que el código contenido en un módulo estándar de Visual

Basic es accesible desde distintos formularios del programa, será ventajoso colocar en este módulo todo

lo que queramos disponer como “código compartido”, es decir, que pueda ser utilizado en cualquier

formulario del programa. Se guardan para su exportación en ficheros con extensión *.bas.

-Formularios. - Son rutinas asociadas a ventanas gráficas donde se incorporan objetos y eventos. Los

formularios son el elemento básico que permite la interacción del programa con el usuario, demandando

variables, opciones, etc. Se almacenan con extensión *.frm.

Clases: son definiciones de nuevos objetos de tipo plantilla donde se definen las propiedades y eventos

del mismo, son almacenados como*.cls.

En cuanto a la ventana Properties Windows, refleja en una columna todas las propiedades de cada

formulario o control que se tenga seleccionado en la ventada Project Explorer. Para acceder a dicha

información solo tenemos que pinchar sobre el formulario o control deseado. Referencia [1].

Por último, se va a explicar otra ventana que ha sido de utilidad, la ventana object browser, a la cual se

accede de la misma forma que las anteriores.

Figura 2.17. Object browser.

Page 38: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con CATIA V5

20

Dicha herramienta nos es de gran ayuda cuando se está en un punto de la programación en la que no se

sabe bien qué hacer, cómo seguir o cómo funciona cualquier tipo de objeto. Si escribimos cualquier

objeto en la barra de búsqueda, se nos muestran tres columnas que nos ayudan a controlar dicho objeto.

La tercera de ellas, la columna members, muestra distintas formas para realizar la misma operación,

eligiéndose la más conveniente. La segunda columna, muestra a qué tipo de objeto pertenece la operación

que se quiere realizar, por lo que ya se sabrá que objeto hay que definir para poder acceder a la

herramienta deseada. Referencia [1].

Se puede observar que en la parte inferior de la imagen se muestra una descripción que nos sirve de ayuda

ya que desglosa uno a uno todos los argumentos de entrada que son necesarios para realizar la operación.

Para volver de nuevo a la ventana de trabajo no hay más que cerrar esta ventana. Antes de comenzar con

la programación, conviene analizar detenidamente cada una de las partes o bloques que constituyen el

entorno donde se realiza toda la programación.

2.6 Programación con Part Design Module

Como hemos visto en secciones anteriores en el módulo de Part Design se trabaja a un nivel más

geométrico de la pieza.Los posibles scripts a desarrollar en éste módulo tendrán como resultado la realización

de una serie de acciones sobre la pieza.Por ejemplo la realización de un agujero en el centro de una de las

caras de una pieza mediante un script.Lo que sería una consecucción de acciones a realizar por el usuario,

realizar en un sketch, en la cara de la pieza, una circunferencia con el diámetro del agujero y por último utilizar

la operación hole, mediante un script se realizaría en una sola acción.Sobre éste script tan simple se podrían

desarrollar algunos más complejos, un script que pidiera al usuario el diámetro del agujero que desea realizar

en una cara y que tras ser introducido, realice dicho agujero.

En CATIA se utiliza la programación orientada a objetos, todas las acciones son realizadas a

distintos objetos jerarquizados. A continuación realizamos una breve descripción de los objetos que se

manipulan en el Part Design.

2.6.1 PartDocument

Representa al Document que contiene la información de la pieza. Al igual que en el apartado

anterior, cuando se crea este objeto (nuevo) se asocia un objeto Part raíz que contiene la información del

modelo 3D. Además, podemos acceder a la información del objeto Product que lo contiene.

Propiedad Acción

Part Devuelve el objeto Part ‘raíz’ del PartDocument

activado

Set oPartRaiz = CATIA.ActiveDocument.Part

Product Devuelve el objeto Product ‘raíz’ del PartDocument

activado

Set oProdRaiz = CATIA.ActiveDocument.Product

Tabla 2.3 Propiedades y acciones del objeto Part y Product

Page 39: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

21

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Figura 2.18 Estructura del módulo del Part Design

La estructura del Part Design es la que se aprecia en la figura 2.18, donde los colores diferencian enre objetos

contenedores de objetos o colecciones, y objetos abstractos. Como ya se ha comentado anteriormente, la

estructura de CATIA está muy jerarquizada, de manera que por ejemplo, para acceder a los planos de

referencia, habráque definir en primer lugar los objetos y propiedades referentes a Plane que contienendichos

planos (PartDocument → Part → Originelements).

En la tabla siguiente se recogen las propiedades de los objetos que se utilizan en el módulo

PartDesign, explicando brevemente qué función tiene cada una de ellas.

Propiedad Comando Comentario OriginElements Dim origin1 As OriginElements

Set origin1 = part1.OriginElements Constituye el sistema de

referencia absoluto del

documento de planos XY,

XZ e YZ. AxisSystems Dim refsist1 As AxisSystems

Set refsist1 = part1. AxisSystems Es la colección de sistemas de

referencia que pueden existir en

el documento part.

GeometricElements Dim geometric1 As

GeometricElements

Set geometric1 =

Part1.GeometricElements

Colección de elementos

geométricos 3D del

partdocument generadas

directamente en 3D, es

decir, sin la mediación

del módulo Sketcher Bodies Dim Bodies1 As Bodies

Set Bodies1 = Part1.Bodies Colección de cuerpos

sólidos dentro del

partdocument

Page 40: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con CATIA V5

22

HybridBodies Dim HybBod1 As HybridBodies

Set HybBod1 = Part1.HybridBodies Colección de OpenBodies

(elementos de referencia) Constraints Dim Constraints1 As Constraints

Set Constraints1 =Part1.Constraints Colección de

restricciones geométricas

y dimensionales del

partdocument. Relations DimRelations1 AsRelations

SetRelations 1 = Part1.Relations Colección de relaciones

del partdocument. Parameters DimParameters1 AsParameters

SetParameters1 = Part1.Parameters Colección completa de

todos los parámetros del

partdocument. Tabla 2.4 Objetos del PartDesign

Referencia [1]

2.6.2 Sketcher

Dentro de este módulo se puede encontrar una serie de objetos y colecciones que se

utilizarían en la creación de un Script en el cuál se hagan modificaciones en el Sketch.En dicho

módulo el uso de un script podría servir para cambiar una cota y o establecer relaciones entre las

cotas en ese plano,definiendo un nuevo sketch y por ente, actualizando la geometría de la pieza.

Figura 2.19 Estructura del modulo de Sketcher

Como se observa en la figura 2.19, los objetos del Sketcher son “Factory2D”, “line2D” y “Axis2D”, dentro de

los cuales se encuentran una serie de métodos que se resumen a continuación:

Page 41: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

23

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Objeto Comentario Contenido

Factory2D

Incluye todos los métodos

necesarios para poder trabajar

en el módulo Sketcher.

CreateCircle

CreateClosedCircle

CreateClosedEllipse

CreateControlPoint

CreateEllipse

CreateHyperbola

CreateIntersection

CreateIntersections

CreateLine

CreateLineFromVector

CreateParabola

CreatePoint

CreateProjection

CreateProjections

CreateSpline

Line2D Engloba tres métodos que dan

el univector de la dirección de

la recta, un punto sobre la línea

y un último que permite

modificar las características de

la línea infinita.

GetDirection

GetOrigine

SetData

Axis2D Vienen detalladas las

propiedades del sistema de

coordenadas.

HorizontalReference

Origin

VerticalReference

Tabla 2.5 Objetos del Sketcher

Constrainsts

Tras ver la estructura del modulo sketcher, para terminar con éste módulo faltaría que el sketch quede bien

definido y fijo, es decir, que sea inalterable por algún error cuando se esté creando o manipulando,para ello es

necesario establecer las restricciones o constraints.

Los constraints trabajan con referencias, es decir, hay que establecer la referencia de cada uno de los objetos

del sketch. Una vez definidas éstas, es necesario una instrucción que permita relacionarlas entre sí, para lo cual

se usa la siguiente línea de código: constraintsX.AddBiEltCs(CatCsTypeDistance, reference1, reference2). En

dicho comando se observan dos propiedades de gran interés.

Page 42: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con CATIA V5

24

La instrucción AddBiEltCs nos indica que la restricción va a usar dos referencias, es decir, se van a

relacionar dos objetos. Se pueden relacionar uno, dos o tres objetos. Para ello solo se ha de cambiar el prefijo

“Bi-“ por el correspondiente. Es decir, una restricción tal que AddMonoEltCs solo necesitará una referencia y

otra como AddTriEltCs, tres. En este proyecto se trabajará con restricciones de uno y dos objetos.

CatCsTypeDistance refleja el tipo de restricción que se quiere imponer. Existen numerosos tipos de

restricciones como se muestra en la tabla 2.6.

Con estas órdenes, el programa sabe que las referencias en cuestión se encuentran relacionadas según el tipo

de restricción utilizada. Sin embargo no conoce la cantidad exacta del parámetro (el cual dependerá del tipo de

restricción en cuestión) que las relaciona (distancia, ángulo…), por lo que hay que señalar que constraint tiene

dos modos de trabajo:

1. Modo constraint: El valor asignado restringe la geometría en dicha posición

>>constraint1.Mode = catCstModeDrivingDimension

2. Modo Measurement: el valor solo refleja aquello que puede ser observado desde dicha

posición >> constraint1.Mode = catCstModeDrivenDimension

Número de referencias Tipo BiEltCs CatCstTypeAnnulContact

CatCstTypeParallelims CatCstTypePerpendicularity CatCstTypeChamfer CatCstTypeConcentry CatCstTypeDistance CatCstTypeHorizontaly/Vertically CatCstTypeLength CatCstTypeLineContact CatCstTypeMajor/MinorRadius CatCstTypeMidpoint CatCstTypeOn CatCstTypePlanarangle CatCstTypeDistance CatCstTypeTangency

MonoEltCs CatCstTypeRadius TriEltCs CatCstTypeSimetry

Tabla 2.6 Tipo de cotas y su nomenclatura interna en CATIA V5

2.6.3 CATPART(PartDesign)

Objeto Comentario Contenido

Shapefactory Incluye todos los métodos

necesarios para poder trabajar

en el módulo Part Design.

AddnewCircPattern

AddnewHole

AddnewPad

AddnewPocket

AddnewSlot

AddnewRib

AddnewEdgeFilletWith

ConstantRadius

AddnewShaft

Tabla 2.7 Herramientas del Shapefactory

Lo primero que hay que hacer es definir y cargar el objeto en cuestión y una vez cargado ya se

podrá hacer uso de las herramientas que incluye. Reference [VB Scripting for CATIA V].

Page 43: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

25

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Dim shapeFactory1 As ShapeFactory

Set shapeFactory1 = part1.ShapeFactory

Código 1.Definición del objeto shapefactory

Como hemos visto en la introducción al módulo PartDesign (Sección 2.2) existen una serie de

operaciones básicas para realizar un modelado.A continuación se muestra como se utilizan

dichas herramientas mediante un script.

Pad

La herramienta pad es la comúnmente usada para hacer extrusiones a partir de un sketch. Es muy

potente ya que con dicha herramienta y con alguna más que explicaremos posteriormente, se

pueden definir infinidad de sólidos. Usaremos las siguientes líneas de código para hacer un pad:

Dim pad1 As Pad

Set pad1 = shapeFactory1.AddNewPad(sketch1, espesor)

pad1.Name = "nombre1" ' Darle un nombre al pad

Dim limit1 As Limit

Set limit1 = pad1.FirstLimit

Dim length1 As Length

Set length1 = limit1.Dimension

length1.Value = espesor

Código 2.Definición de un objeto Pad

Los argumentos que nos pide la herramienta son el sketch que se desea extruir y el espesor que

se quiere. Otra reseña de importancia es la posibilidad de llamar al pad con el nombre que

elijamos para luego no confundirlo con otro posible pad.

Es necesario restringir la altura del pad. Para ello hay que definir tanto el límite inferior del que

tiene que partir el pad como la longitud de la extrusión. Habrá que darle un valor a la dimensión

de la longitud. Reference [1].

Pocket

La estructura del pocket es prácticamente igual a la del pad pero en este caso, lo que se quiere

hacer es un hueco sobre un sólido ya creado, de manera que, tendremos que hacer una referencia

a la superficie sobre la que se quiere hacer dicho hueco.

La referencia se puede hacer de dos formas:

1. Creando una referencia directa de la superficie del sólido usando las líneas mostradas

en el código 3. Se observa que el pocket se hará sobre una superficie RSur:Face,

especificando que se realiza sobre el pad ya creado.

Dim reference10 As Reference

Set reference10 =

part1.CreateReferenceFromName("Selection_RSur:(Face:(Brp:(Pad.1;2);None:();~

~ Cf11:());Pad.1_ResultOUT;Z0;G3055)")

Código 3.Referencia del pad 1.

2. O bien creando un plano mediante un offset que coincida con la distancia a la

superficie del sólido sobre la que se quiere generar el pocket.Para ello se crea un

plano,herramienta que se encuentra dentro del objeto hybridshapefactory, en el cual

se encuentran las principales herramientas del módulo wireframeandSurfaceDesign.

Page 44: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con CATIA V5

26

Dim hybridShapePlaneExplicit1 As HybridShapePlaneExplicit

Set hybridShapePlaneExplicit1 = originElements1.PlaneXY

Dim reference10 As Reference

Set reference10 = part1.CreateReferenceFromObject(hybridShapePlaneExplicit1)

Dim hybridShapePlaneOffset1 As HybridShapePlaneOffset

Set hybridShapePlaneOffset1 = hshapefactory1.AddNewOffset(reference10, altura, False)

Código 4.Referencia del pad 2.

El procedimiento seguido consiste en crear un plano XY, que servirá de referencia a

nuestro plano, indicando que son paralelos.Cuando ya tenemos la referencia para hacer el pocket,

el resto del proceso se realiza de manera análoga al caso del pad, usando el primero de los casos

explicados anteriormente:

Dim reference10 As Reference

Set reference10 =

part1.CreateReferenceFromName("Selection_RSur:(Face:(Brp:(Pad.1;2);None:();~

~ Cf11:());Pad.1_ResultOUT;Z0;G3055)")

Dim pocket1 As Pocket

Set pocket1 = shapeFactory1.AddNewPocket(sketch2, espesor)

pocket1.Name = "hueco interno"' Dar nombre al agujero

Dim limit2 As Limit

Set limit2 = pocket1.FirstLimit

limit2.LimitMode = catUpToSurfaceLimit ' Se define su profundidad a la

' superficie más próxima

Código 5.Pocket

Hole

A diferencia del pocket, cuando hacemos un hole, estamos haciendo un orificio circular

mientras que con el pocket se puede hacer un hueco con la forma del sketch que demos como

entrada. Al igual que hay que hacer para el pocket, es necesario crear una referencia de la

superficie del sólido sobre la que se realizará el hole para lo que habrá que usar las siguientes

líneas de código.

Dim reference3 As Reference

Set reference3 =part1.CreateReferenceFromBRepName("FSur:~

~Face:(Brp:(cilindro;2);None:();Cf11:());WithTemporaryBody;~

~WithoutBuildError;WithInitialFeatureSupport;MonoFond;~

~MFBRepVersion_CXR15)", pad1)

Código 6. Referencia para un hole

A continuación, en el código 7 se explica cómo programar un hole a partir de un punto,

donde como se aprecia, se nos piden como argumentos de entrada las coordenadas absolutas del

punto, un plano de referencia y la profundidad de mismo. Destacar que hole trabaja con

diámetros y no con radios por lo que si como parámetro tenemos el radio, hay que multiplicarlo

por dos para que el programa realice correctamente el agujero.

Se dispone de varias herramientas para programar un hole, cada una de las cuales nos

piden distintos argumentos, y se usarán unas u otras según el caso. Algunas de las distintas

formas de programarlo se muestran a continuación:

Page 45: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

27

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Orden Parámetros AddNewHole X, Y,Z (coordenadas absolutas), profundidad AddNewHoleFromPoint X,Y,Z (coordenadas absolutas), plano de

referencia, profundidad AddNewHoleFromRefPoint Punto origen, plano de referencia,

profundidad AddNewHoleFromSketch Sketch, profundidad AddNewHoleWithConstraints X,Y,Z (coordenadas absolutas), contorno,

plano de referencia, profundidad.

(si el contorno es circular, el hole será

concéntrico a dicho contorno) Tabla 2.8 Herramientas para programar un hole.

Dim hole1 As Hole

Set hole1 = shapeFactory1.AddNewHoleFromPoint(X, Y, Z,~~reference3, longitud)

hole1.Type = catSimpleHole

hole1.AnchorMode = catExtremPointHoleAnchor

hole1.BottomType = catFlatHoleBottom

hole1.Name = "hueco interno"

Dim limit2 As Limit

Set limit2 = hole1.BottomLimit

limit2.LimitMode = catOffsetLimit

Dim length3 As Length

Set length3 = hole1.Diameter

length3.Value = 2 * radio_int 'Hole trabaja con diámetro no con radio

Código 7.Hole

Además, para que la herramienta funcione correctamente, hay que especificar una serie

de elementos:

El Type: indica el tipo de hole que se quiere realizar, en este caso un catSimpleHole.

El AnchorMode: indica donde está anclado el hole. En el caso del ejemplo se indica

catExtremPointHoleAnchor, indicando que se trata de un hole que parte de un punto

específico en el extremo del sólido.

El BottomType: se precisa dónde finaliza el agujero que se desea realizar, que en

catFlatHoleBottom se está especificando que es hasta el fondo del sólido.

Slot

Otra herramienta para eliminar material es la conocida como slot. A diferencia de las

dos anteriores, podemos dar como argumento de entrada la forma o sketch que queremos

desechar y además una guía que recorrerá dicho sketch, de modo que, finalmente, se elimina

material a lo largo de una trayectoria.Los códigos necesarios para programar un slot aparecen en

el código 8. Dim slot1 As Slot

Set slot1 = shapeFactory1.AddNewSlotFromRef(Nothing, Nothing)

Dim reference24 As Reference

Set reference24 = part1.CreateReferenceFromObject(sketch3)

slot1.SetProfileElement reference24

Dim reference25 As Reference

Set reference25 = part1.CreateReferenceFromObject(sketch4)

slot1.CenterCurveElement = reference25

Page 46: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con CATIA V5

28

Código 8. Slot

Shaft

La herramienta shaft al igual que ocurría con el pad o el pocket requiere crear

previamente un sketch, que sirva de base para poder revolucionarlo luego en torno a un eje para

conformar el sólido de revolución deseado.

Los dos parámetros en los que se basa la herramienta son:

El ángulo de revolución: es muy importante destacar que se debeprogramar en grados

sexagesimales y no en radianes como ocurría en el círculo.

El eje de revolución: es necesario indicar la dirección alrededor de la cual se genera la

pieza.

Las siguientes líneas de código recogen la programación de un shaft:

Dim shapeFactory1 As ShapeFactory

Set shapeFactory1 = part1.ShapeFactory

Dim shaft1 As Shaft

Set shaft1 = shapeFactory1.AddNewShaft(sketch1)

' Se define el ángulo de revolución

Dim angle1 As Angle

Set angle1 = shaft1.FirstAngle

angle1.Value = TextBox1' Valor del ángulo introducido en el menú

Dim parameters1 As Parameters

Set parameters1 = part1.Parameters

Dim length1 As Length

Set length1 = parameters1.Item("Part1\PartBody\Shaft.1\ThickThin1")

length1.Value = 0

shaft1.Name = "Revolución"

' Se establece el eje de revolución

Dim reference12 As Reference

Set reference12 = part1.CreateReferenceFromObject(line2D2)

shaft1.RevoluteAxis = reference12

Código

Código 9.Shaft

Como se puede observar, es necesario definir un ángulo y establecer que este sea el ángulo de

revolución del sólido, así como crear una referencia para definirla como el eje de revolución del

sketch. Referencia [1].

Rib

Otra de las herramientas más potentes y útiles del objeto shapefactory es la llamada Rib,

la cual permite hacer una extrusión de un sketch sobre una guía que se le marque. Por tanto habrá

que generar dos sketch que habrá que aportar a la herramienta como argumentos:

El perfil: da forma al sólido que queremos generar y podrá ser un sketch abierto en el

caso en el que el rib se realice tangente a una superficie y queremos un acavado suave

sobre la misma.

Guía: indica el camino que queremos que siga el perfil.

Page 47: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

29

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Es importante que a la hora de programar, el perfil y la guía tengan un punto en común, es decir,

que estén en contacto en algún punto de su geometría ya que podrían surgir algunos errores o

problemas en el sólido extruido en caso de que no compartan algún punto. Las líneas de código

para programar un rib son muy sencillas y se muestran a continuación:

Dim rib1 As Rib

Set rib1 = shapeFactory1.AddNewRibFromRef(refrib1, refrib2)

Part1.update

Código 10.Rib

2.7 Programación con Prismatic Machining

Al igual que en la sección 2.6, en el módulo de machining también es posible automatizar algunos

comandos mediante scripts. Como hemos visto en la sección 2.3, en CATIA es posible la simulación del

mecanizado de piezas mediante el workbench machining y su módulo Prismatic Machining. Al igual que la

programación en el módulo de Part Design el process posee un árbol de jerarquías de objetos, como podemos

observar en la figura 2.20, en la parte izquierda vemos el árbol de trabajo del Process y al lado la estructura de

objetos para la programación en el Process.

Figura 2.20 Árbol de trabajo de CATIA en el módulo de Prismatic Machining(Process tree).Objetos del

Process

Los posibles scripts a desarrollar en éste módulo tendrán como resultado la realización de una serie

de acciones para configurar el proceso de mecanizado de una pieza.Por ejemplo la realización de un agujero en

el centro de una de las caras de una pieza mediante un script.Uno de los scripts que se pueden realizar en éste

módulo sería una macro que mediante su ejecución generara un código APT para el process actual abierto en

CATIA, omitiendo todos los pasos que tendría que hacer el usuario, por la simple ejecución del script.

Como se ha visto anteriormente, en CATIA se utiliza la programación orientada a objetos, todas las acciones

son realizadas a distintos objetos jerarquizados. A continuación realizamos una breve descripción de los

Page 48: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con CATIA V5

30

objetos que se manipulan en el Prismatic Machining.

Figura 2.21 Estructura del módulo de Machining

Vamos a analizar la estructura de programación orientada a objetos en éste módulo. La documentación sobre

la automatizción en éste módulo no es tan extensa como lo puede ser en otros módulos más utilizados de

CATIA, es por eso que para el análisis de éste módulo nos basamos en la navegación a través del CAA V5

Visual Basic help.En la estructura en árbol al hacer click en cualquier objeto se abrirá una ventana donde se

indica la estructura árbol de donde cuelga el objeto, índice de propiedades y métodos.

Como se observa en la figura 2.21 al objeto ManufacturingActivity se accede a través de un objeto

perteneciente al ProcessDocument, es uno de los objetos englobado en el objeto Activity.Se observa dentro de

ManufacturingActivity una lista de objetos para la configuración del proceso, part operations, como ejemplo la

asignación de un product y una máquina de mecanizado.

Para generar un código APT si nos guiamos por la estructura de la figura 2.21 debemos definir un objeto

ManufacturingGeneratorData y un objeto ManufacturingOuputGenerator, y usar el comando

InitFileGenerator.

Dim outputGen As ManufacturingOutputGenerator

...

Dim format, fileName As String

format = "APT"

fileName = "c:\myFile.txt"

Dim genData As ManufacturingGeneratorData

Page 49: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

31

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

outputGen.InitFileGenerator(format, fileName, genData)

Figura 2.22 Extracto de código del documento CATIA V5 Automation help

Figura 2.23 Ventana descripción del objeto Manufacturing Setup

La programación en éste módulo se plantea más ardua al tener una bibliografía más limitada que aborde la

automatización en éste módulo.En la figura 2.23 observamos la información obtenida vía CAA V5 Visual

Basic.

Page 50: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental
Page 51: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

33

3 AUTOMATIZACIÓN CON ABAQUS

baqus es un conjunto de potentes programas de simulación de ingeniería, basados en MEF el método

de elementos finitos, que pueden resolver problemas que van desde análisis lineales relativamente

simples hasta las simulaciones no lineales más desafiantes.

Abaqus contiene una extensa biblioteca de elementos que pueden modelar prácticamente cualquier geometría.

Tiene una lista igualmente extensa de modelos de materiales que pueden simular el comportamiento de la

mayoría de los materiales de ingeniería típicos incluyendo metales, caucho, polímeros, materiales compuestos,

hormigón armado, espumas triturables y resilientes y materiales geotécnicos como suelos y rocas. Diseñado

como una herramienta de simulación de propósito general, Abaqus puede usarse para estudiar más que

problemas estructurales (de estrés / desplazamiento). Puede simular problemas en áreas tan diversas como la

transferencia de calor, la difusión de masas, el manejo térmico de componentes eléctricos (análisis térmico-

eléctricos acoplados), la acústica, la mecánica de suelos (análisis de fluidos porosos acoplados), el análisis

piezoeléctrico, el análisis electromagnético y la dinámica de fluidos.

Abaqus ofrece una amplia gama de capacidades para la simulación de aplicaciones lineales y no lineales. Los

problemas con múltiples componentes se modelan asociando la geometría que define cada componente con los

modelos de material apropiados y especificando las interacciones de los componentes. En un análisis no lineal,

Abaqus elige automáticamente incrementos de carga y tolerancias de convergencia apropiados y los ajusta

continuamente durante el análisis para asegurar que se obtiene una solución precisa de manera eficiente.

3.1 Introducción a Abaqus CAE

Abaqus / CAE es el entorno completo de Abaqus que proporciona una interfaz simple y consistente para crear

modelos Abaqus, presentar y supervisar interactivamente los trabajos de Abaqus y evaluar los resultados de las

simulaciones de Abaqus. Abaqus / CAE se divide en módulos, donde cada módulo define un aspecto lógico

del proceso de modelado; Por ejemplo, definir la geometría, definir las propiedades del material y generar una

malla. A medida que pasa de módulo a módulo, construye el modelo. Cuando el modelo está completo,

Abaqus / CAE genera un archivo de entrada que se envía al producto de análisis de Abaqus. Abaqus / Standard

o Abaqus / Explicit lee el archivo de entrada generado por Abaqus / CAE, realiza el análisis, envía

información a Abaqus / CAE para permitirle monitorear el progreso del trabajo y genera una base de datos de

salida. Por último,se utiliza el módulo de visualización para leer la base de datos de salida y ver los resultados

de su análisis.

Abaqus trabaja con dos extensiones de archivo: *.cae para el archivo donde se encuentra/n el/los modelo/s y

*.odb para el archivo de resultados de un análisis. El programa no nos permite abrir simultáneamente varios

archivos de modelo, por lo que es recomendable generar distintos modelos en un único archivo *.cae para

poder, al abrir el único archivo, contar con los modelos y poder trabajar con todos ellos sin necesidad de cerrar

un archivo y abrir otro. En cuanto a los archivos de resultados, como se genera uno por cada análisis que se

ejecuta y dado que se pueden ejecutar varios análisis sobre un mismo modelo, Abaqus si permite la apertura de

distintos archivos de resultado en una misma sesión.

A

Page 52: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con Abaqus

34

Figura 3.1 Ventana de trabajo Abaqus/CAE

En la figura 3.1 se observa la separación entre los módulos del modelo (Model) y el módulo de visualización y

tratamiento de datos de los resultados de la resolución del problema mediante el progama MEF Abaqus

(Results).El Árbol Módelo muestra una descripción gráfica de su modelo y los objetos que contiene.Por otro

lado, el Árbol de Resultado muestra resultados de análisis de base de datos de la salida así como los datos

específicos y la posibilidad de representarlos enfrentados mostrando una relación X-Y. Es importante señalar

que Abaqus deja a responsabilidad del usuario el uso de unidades consistentes. Si queremos que los resultados

sean correctos hemos de tener cuidado a la hora de meter los datos de entrada en la unidad correspondiente

siguiendo una consistencia de unidades.

Dimensión SI SI (mm) US (ft) US (inch)

Longitud m mm

Fuerza N N lbf lbf

Masa Kg Tonelada Slug lbf s2/in

Tiempo s s s s

Tensiones Pa (N/m2) MPa(N/mm

2) lbf/ft

2 Psi(lbf/in

2)

Energía J mJ ft lbf in lbf

Densidad Kg/m3

Tonelada/mm3

Slug/ft3

lbf s2/in

4

Tabla 3.1 Sistemas de unidades consistentes

Page 53: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

35

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

En la pestaña de Model se configura el modelo, su geometría, material, condiciones de contorno del

problema…

A continuación hacemos una breve descripción de cada módulo.

3.1.1 Part

Éste módulo se utiliza para la creación de la geometría.las piezas se construyen a partir de geometrías

sencillas, partiendo de un sketch.También es possible la importación de una geometría generada con otro

software.Al crear un part como se observa en la Figura 3.2, las opciones que nos ofrece son: 3D,2D y

axialsimétrico.En cada una de ellas encontramos, además, variables como el tipo de part (deformable,rígido

discreto, rígido analítico, euleriano ) y la característica base (placa,cable, punto).

Figura 3.2 Opciones para modelado 3D(izquierda),2D (centro) y Axialsimétrico (derecha.)

3.1.2 Material

Se utiliza para definer las propiedades de los materiales de nuestros diferentes parts en nuestro

modelo.Se deben definir las propiedades del material necesarias para el análisis que queremos realizar.Las

mismas se encuentran clasificadas en “General” (o General, como la densidad), “Mechanical” (o Mecánicas,

como la elasticidad o plasticidad), “Thermal” (o Térmicas, como la conductividad o calor latente) y “Other” (u

Otras, como la permeabilidad, conductividad eléctrica).En la figura 3.3 podemos observar la ventana de

edición del material en la GUI de Abaqus/CAE.Cabe destacar que la introducción de parámetros mecánicos

tales como la Módulo de Young y el coefeciente de Poisson pueden ser importados de una tabla de datos en

diversos formatos como por ejemplo un archivo Excel.

Page 54: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con Abaqus

36

Figura 3.3 Cuadro de edición de un material

3.1.3 Section

En éste módulo se crean las secciones para asignar a cada part, generar los perfiles para secciones de

vigas, definir orientaciones, normales y tangentes para las distintas secciones, definir la inercia de una parte y

crear resortes y amortiguadores entre puntos o entre puntos y el suelo. Las secciones que podemos crear y

asignar a las distintas partes pueden ser del tipo sólidas, placas, vigas, fluidos y otras, según se muestra en la

Figura 3.4. En el caso de que se trabaje con secciones de viga se deberá, además, generar los perfiles de las

mismas. Para ello, Abaqus posee algunos perfiles predeterminados (por ejemplo, caños rectangulares o

circulares, perfiles I, T y L) permitiéndonos también definir perfiles arbitrarios o generalizados.

Figura 3.4 Creación de una sección solida (arriba izquierda),de placa (arriba,derecha),de viga

(abajo izquierda) u otra (abajo,derecha)

3.1.4 Assembly

En éste módulo se crean y ensamblan las instances (subdominios que componen el problema). Esto

nos permite definir el tipo de mallado que aplicaremos (dependiente o independiente) y asignarles a las

distintas partes una orientación, posición relativa, etc.

Si se trabaja con un modelo en el cual se presenta varias veces la misma pieza (por ejemplo, un reticulado en el

cual más de una barra tiene la misma longitud y sección), no es necesario generar una parte para cada una de

ellas, sino que Abaqus nos presenta la opción de crear una misma parte y luego ensamblarla más de una vez.

En cuanto a la creación de una instance, según se muestra en la fgigura 3.5, nos da las opciones para que,

luego, la malla se haga en la parte o en el modelo ensamblado. En el primer caso, la malla es del tipo

dependiente y todas las veces que la parte se haya ensamblado, tendrá la misma malla. En el segundo caso, la

malla es del tipo independiente, lo que significa que por más que se ensamble más de una vez una misma

parte, puede generarse una malla distinta para cada una de ellas. Esto nos puede ser útil en el caso de que

tengamos repetida una misma parte y necesitemos refinar el mallado en alguna de ellas.

Page 55: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

37

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Para crear una instance en la zona de trabajo del

Assembly clickamos en y aparecerá la

ventana de creación del Instance. Existen dos

tipos de Instance dependiendo de si el mallado

se realizará sobre el part,dependent, o si se

realizará sobre la propia instance.

Otros comandos elementales de éste módulo

son: Translate Instance.- Para posicionar

un instance respecta otro,desplazarlo respecto a

un punto del modelo.

Rotate Instance.- Para girar un part hasta

la

posición deseada.

Figura. 3.5 Ventana de edición del Módulo Assembly

3.1.5 Steps

Steps. - Nos permite generar y definir los distintos estados de carga y las variables asociadas a los

mismos que se incluirán en los resultados. Cada estado de carga se denomina “paso” o “step”, y pueden

generarse de manera secuencial (ejecutar un step al finalizar uno previo) o superponerse. Por defecto, cada

modelo cuenta con el step Inicial. Las distintas opciones que nos presenta Abaqus se clasifican según el

procedimiento, General o de Perturbación lineal. Dentro de los estados generales, las opciones que se

presentan son varias, por ejemplo, se puede configurar un análisis estático general, dinámico, de transferencia

de calor, geoestático, etc. Dentro de las opciones de Perturbación lineal los análisis son, entre otros, de

frecuencia o de perturbación lineal estática. En la figura 3.6 se muestra el cuadro de diálogo para la creación de

un step.

Figura. 3.6 Creación de un step

Page 56: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con Abaqus

38

3.1.6 Interactions

Interactions. -Sirve para especificar interacciones entre distintas regiones de un modelo. Dentro de

las interacciones que Abaqus soporta encontramos, por ejemplo, interacciones de contacto, fundaciones

elásticas, radiación desde o hacia un ambiente, ondas incidentes, impedancia acústica, restricciones de cuerpo

rígido, inercias, resortes, amortiguadores, etc. Para poder especificar una interacción, sea del tipo que sea,

necesitamos primero crear la propiedad de dicha interacción, según las opciones que se presentan en la figura

3.7. Luego de definido esto, podemos establecer la interacción, teniendo en cuenta que dependen de los

estados de carga, por lo que al momento de definirlas se debe seleccionar a qué step se aplica la misma y sólo

nos permitirá seleccionar interacciones compatibles con dicho step. En la figura 3.8 se muestra el cuadro de

diálogo para crear una interacción.

Figura. 3.7 Creación de una propiedad de interacción.

Figura. 3.8 Creación de una interacción.

3.1.7 Load

En este módulo se crean las cargas, condiciones de borde y campos que se aplicarán en cada estado

de carga. Todos estos elementos dependen del tipo de step que se defina, por lo que al momento de crear

alguna de ellas, se selecciona el step y se muestran las opciones compatibles con el mismo. En cuanto a las

condiciones de contorno, denominadas BC (por Boundary Condition) tenemos, por ejemplo, en un análisis

estático, condiciones de desplazamiento, rotación, velocidad, etc. Es importante también tener siempre

presente el sistema de coordenadas en el que se trabaja, ya que las condiciones de borde se aplicarán en las

direcciones que se indiquen. En la figura 3.9 se muestran las condiciones de borde disponibles para dos

estados de carga distintos. Respecto a las cargas, denominadas Load, también dependerán del tipo de step en el

cual se aplican. Abaqus ofrece una gran variedad de cargas donde las mismas pueden variar su amplitud y/o su

forma según se requiera. Por ejemplo, si se aplica una carga lineal, la misma puede ser constante, variar

linealmente o según funciones trigonométricas como el seno o coseno. En la figura 3.10 se muestran las

opciones de cargas para un análisis estático general.

Page 57: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

39

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Figura 3.9 Condiciones de contorno Mechanical y Otras

Figura. 3.10 Tipos de carga para un análisis estático general

3.1.8 Mesh

Genera la malla de elementos finitos en nuestro modelo. Para realizar el mallado, deberemos definir

opciones como el tipo de elemento (elementos de viga, de barra, de estados planos, termomecánicos, etc.), el

tipo de función de interpolación (lineal o cuadrática), el tamaño de elemento y la técnica de mallado. También

se pueden realizar optimizaciones de una malla, refinamiento en zonas donde se requiera un análisis más

exhaustivo o una verificación de la misma.

Page 58: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con Abaqus

40

Figura. 3.11 Menú de herramientas del módulo mesh

3.1.9 Job

En éste módulo se pueden crear, ejecutar y monitorear los distintos análisis sobre el modelo en el

que se trabaja. Cada uno de estos análisis dará como resultado, de ejecutarse correctamente y sin errores, un

archivo de resultados. Este módulo también nos permite monitorear el análisis durante su ejecución,

observando de esta manera la información que se admitió, las tareas que se están realizando, las advertencias

que Abaqus considere y, de existir, los errores que llevaron a que el programa aborte el análisis.

3.1.10 Visualization

Nos permite visualizar los resultados del análisis. Podremos entonces obtener diagramas de

tensiones, desplazamientos, solicitaciones, o cualquier otra variable que se incluyó en el análisis. Estos

diagramas pueden ser vectoriales o de contorno, donde se representan con distintos colores los valores de la

variable que se visualiza. También Abaqus permite realizar cortes en nuestras geometrías, configurar

animaciones que nos ayuden a visualizar la evolución de las variables, generar tablas tipo XY de datos y

graficar las mismas.

Figura. 3.12 Módulo de visualización de resultados

Page 59: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

41

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

3.2 Modelado del conformado de chapa

Los procesos de conformado de metales por deformación plástica comprenden un amplio grupo de

procesos de fabricación, en los cuales se usa la deformación plástica para cambiar las formas de las piezas

metálicas. En los procesos de conformado, las herramientas, usualmente estampas de conformación, ejercen

esfuerzos sobre la pieza de trabajo que las obligan a tomar la forma de la geometría de la estampa. Como

observamos en la figura 3.13 existen diferentes tipos de procesos de conformado por deformación plástica, en

nuestro caso no centraremos en el caso de modelado de un proceso de embutido.

Para la realización del conformado de chapa son necesarios cuatro elementos básicos:

1) Una chapa de metal.

2) Un sistema de sujeción de la chapa.

3) Una herramienta con punta semiésferica para los casos de doblado y embutición.

En este capítulo se va a realizar una descripción de como modelar un problema genérico de

conformado con el objetivo de analizar la deformación generada en la chapa mediante el proceso de

conformado. Para realizar el modelo vamos a recorrer los módulos de la pestaña model visto en el apartado

anterior.

Figura 3.13 Clasificación de los procesos de conformado

3.2.1 Definición geométrica del modelo

Como se ha mencionado antes, para el conformado son necesarios 3 elementos básicos, luego será

necesario modelar en Abaqus dichos elementos. Todos los parts deben de estar modelados siguinedo el mismo

Modeling Space del problema. En éste caso de estudio podría ser analizado como problema 2D plano o como

Page 60: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con Abaqus

42

axilsimétrico.Las configuraciones de cada element serán:

Chapa (Sheet).-La pieza a analizar en deformaciones será la chapa, luego la configuración

de éste Part deberá de ser de sólido deformable.

Punzón (Tool).- Al no ser de estudio la possible deformación causada en el Punzón,en éste

caso la configuración para éste elemento debe de ser de sólido rígido discreto.

Sistema de sujección de la chapa (Blankholder). - Encargado la sujección de la chapa la

configuración será de solido rígido discreto.

Tras elegir sus configuraciones y pulsar continuar en Abaqus se abre automáticamente el módulo sketch para

poder realizar la geometría del elemento a crear. En la figura 3.14 podemos ver los parts creados:

Figura 3.14 Part chapa (izquierda), Part punzón (centro) y Part Blankholder (derecha)

3.2.2 Definición del material

Una vez creados los parts, se define el material del que estará compuesta la chapa.Al realizar un

conformado, la pieza se somete a una deformación plástica, luego será necesario definir las propiedades del

material tanto en el rango elástico como en el plástico.En la Figura 3.15 se muestra a modo de ejemplo

ilustrativo la creación de un material,AA7075-O.

Figura 3.15 Ventanas de edición de un material en abaqus propiedades elásticas y plásticas

3.2.3 Definición de las propiedades de la chapa

Una vez creado el material es necesario asignar ese material a la part de la chapa, es decir definir la

sección de éste part. En el modelado de conformado solo será necesaria crear ésta sección. Ésta será

homogénea y de categoría Solid.Una vez creada la sección se la asignamos a la chapa, los demás elementos al

ser sólidos rígidos abaqus solo nos deja la opción de asignarle Inercia pero no sección.

Page 61: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

43

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Figura.3.16 Ventanas de edición de secciones

3.2.4 Mallado del modelo

Una vez definidos los parts, nos queda mallar el modelo. Se procede a mallar los tres elementos del

modelo. Mediante el commando Seed Part ( ) se procede a mallar cada part.Seleccionando la separación

entre semilla y posteriormente las caras del Part a mallar con esa separación.Para mallar seleccionamos el part

a mallar y en su árbol clickamos en el apartado mesh apareciendo el módulo Mesh en pantalla.

Figura.3.17 Mallado del Part Sheet en el Módulo Mesh

Page 62: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con Abaqus

44

Figura.3.18 Mallado del Part Blankholder en el Módulo Mesh

Figura.3.19 Mallado del Part Tool en el Módulo Mesh

3.2.5 Ensamblaje de parts

En éste modelado tendremos que crear 3 instances, uno para cada Part.Al realizar el mallado en el

part en el módulo assembly tan solo debemos posicionar los parts en el espacio para modelar el problema de

conformado.

Figura.3.20 Assembly del modelado del proceso de conformado de chapa

Page 63: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

45

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

3.2.6 Configuración de Steps

Abaqus por defecto siempre crea un step denominado Initial.Dicho step se usa para para las

condiciones de contorno, que serán propagadas en el siguiente Step, donde se aplica el movimiento del punzón

en vertical para simular el proceso de conformado. Además de la creación de un Step tenemos que editar

nuestro Field Output Request.En él se indica los datos que deseamos extraer del cálculo de nuestro problema,

por ejemplo tensiones, deformaciones y desplazamientos. En la Figura 3.21 vemos la creación del Step y en la

Figura 3.22 la conFiguración los datos de salida a obtener de nuestra simulación.

Figura.3.21Definición del Step

Figura.3.22Definición Field Output Request

3.2.7 Definción de las interacciones entre parts en el modelo

En los problemas de conformado de chapa exite un contacto tanto con la herramienta como con los

elementos de sujección de la chapa. Ésto se traduce en la simulación en abaqus en la creación de interacciones

entre los Parts.En éste caso las interacciones serán del tipo Surface to surface. Al crear las propiedades de

contacto por último será necesario crear las Interactions placa-punzón y placa-bankholder.

Page 64: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con Abaqus

46

Figura.3.23 Configuración Interaction Placa-Blankholder

Figura.3.24 Configuración Interaction Placa-Punzón

Page 65: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

47

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

3.2.8 Definición de condiciones de contorno del problema

Tras definir los contactos entre los parts del modelo queda por definir las condiciones de contorno

del problema. En un problema de embutición el punzón realiza un movimiento vertical descendente hacia la

chapa, suponiendo una velocidad constant del punzón. Para modelar ésto basta con crear una condición de

contorno de movimiento en la herramienta, aplicándola sobre el punto de referencia creado en ella. La otras

condiciones de contorno simularán al prensachapas, creando dos condiciones de empotramiento en la cara

superior e inferior de la chapa, en contacto con el blankholder.

Figura.3.25 Configuración Cargas y condiciones de contorno

3.2.9 ConFiguración Módulo Job

Una vez conFigurado nuestro campo de datos de salida y el modelado de nuestro problema,

generamos el job y ejecutaremos el análisis. Mientras que Abaqus realiza el cálculo es possible monitorizar su

trabajo y visualizar las posibles advertencias o errores que se puedan dar durante el cálculo del problema de

elementos infinitos planteado. Pinchando sobre el Job creado con el botón derecho del ratón y seleccionando

submit, Abaqus comenzará el cálculo del problema MEF.

Figura.3.26 Monitorización del Job

Page 66: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con Abaqus

48

3.2.10 Visualización de resultados

Una vez finalizado el Job se genera un archivo odb que contiene los resultados del análisis.En el

módulo de visualización podremos tener una representación del resultado final de nuestro problema.Según los

datos de salida que hayamos requerido en el apartado de Fiel Output Requests, en éste módulo podremos

visualizar los datos de tensiones que soporta material, deformaciones u otro dato que se haya requerido a

Abaqus a obtener de la simulación.

En las Figuras siguientes podemos ver distintas representaciones de datos tales como la tensiones de VMises

sufrida por la placa en el conformado y las tensiones plásticas equivalentes de cada nodo y desplazamientos.

Figura.3.27 Visualización del problema de conformado de chapa deformación final de la chapa

Figura.3.28 Visualización del problema de conformado de chapa Tensione de V Mises de la chapa

Page 67: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

49

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Figura.3.29 Visualización del problema de conformado de chapa valores de PEEQ (Equivalent plastic strain)

de la chapa

3.3 Abaqus Scripting

Cuando se utiliza la interfaz gráfica de usuario de Abaqus / CAE (GUI) para crear un modelo y

analizar sus resultados, los comandos son emitidos internamente por Abaqus / CAE después de cada

operación. Estos comandos reflejan la geometría que creó junto con las opciones y la conFiguración que

seleccionó en cada cuadro de diálogo. la GUI genera comandos en un lenguaje de programación orientado a

objetos llamado Python. Los comandos emitidos por la GUI se envían al núcleo de Abaqus / CAE. El kernel

interpreta los comandos y utiliza las opciones y sets para crear una representación interna de su modelo. El

Kernel es el cerebro detrás de abaqus / CAE. La GUI es la interfaz entre el usuario y el kernel.Vamos a poner

un ejemplo de como nos ayudaría un script simple en Abaqus.En la generación de simulaciones en Abaqus

puede que analices y simules productos de materiales distintos.Si cada vez que realices una simulación debes

introducir manualmente mediante el editor de materiales las propiedades del material.Una forma de

automatizar y ahorrar tiempo de escribir las propiedades de ese material tipo con el que realizas simulaciones

sería escribir una macro que realizara la tarea de crear los materiales necesarios para tus simulaciones.

Figura 3.30 Esquema de iteracción entre Abaqus Scripting Interface y Abaqus/CAE kernel

Page 68: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con Abaqus

50

Abaqus Scripting Interface le permite pasar por alto la interfaz gráfica de Abaqus / CAE y trabajar

directamente con el núcleo. El archivo que contiene los comandos Abaqus Scripting Interface se denomina

script. Se puede usar scripts para realizar las siguientes tareas:

Automatizar tareas repetitivas. - Por ejemplo, se puede generar un script que se ejecute cuando el

usuario inicie una sesión en Abaqus/CAE. Como ejemplo el script para crear una librería de

materiales mencionado anteriormente.

Para realizar un estudio paramétrico. - Se puede crear un script que modifique incrementalmente la

geometría de un part y analice los resultados del modelo. El mismo script puede leer los resultados de

la base de datos de salida, mostrarlos, y generar copias de cada análisis.

Crear y modificar las bases de datos del modelo y modelos que son creados interactivamente cuando

se trabaja con Abaqus/CAE.

Acceder a datos de una base de datos de salida. - Por ejemplo, se puede hacer un postprocesado

independiente de los resultados del análisis. Para ello puedes escribir tus datos en un .odb y usar el

módulo de Visualization de Abaqus/CAE para ver su contenido.

Antes de profundizar más en la realización de macros con Abaqus veámos los diferentes archivos que genera

Abaqus, su contenidoy el posterior uso para la creación de un script.

rpy.- replay file , todos los comandos de operación de modelado utilizados durante una sesión de Abaqus, are saved in this file

cae.- model database, contiene los modelos y los diferentes jobs jnl.- journal python file, éste documento contiene todos los comandos necesarios

para recrear el modelo CAE. Éste archivo será crucial en la generación de scripts como se verá más adelante.

rec.- recover file contiene comando para replicar la versión del mdb en la memoria.

Archivos generados por Abaqus cuando el análisis del job ha sido realizado:

inp.- archivo de abaqus de configuración de abaqus que es creado cuando un job ha sido completado, contiene toda la información necesaria para correr el análisis.

odb.- output database contiene los resultados de la simulación completa.Mediante el uso del step module output request manager es posible elegir las variables a visualizar y en que frame, captura de la simulación, en el módulo de visualización.

dat.- archivo de texto de salida el análisis del archivo *.inp.Contiene también los resultados de las variables de salida seleccionadas en la simulación durante el análisis.

msg.- Contiene mensajes de información o diagnóstico sobre el progreso de la solución del análisis.

fil.- contiene resultados del análisis en un formato neutro que puede ser leído y sobreescrito por un programa externo de post-procesado.

ods.- archivo del scratch output database. mdb.- Base de datos del modelo.

3.3.1 Programación orientada a objetos en Abaqus (Abaqus Object Model)

Como bien se ha dicho a principio de éste capítulo Python es un lenguaje de programación orientado a

objetos.En la figura 3.31 observamos los diferentes objectos y sus “hijos” la estructura de Abaqus. La jerarquía

de objetos y la relación entre ellos se denomina modelo de objetos de Abaqus.

Page 69: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

51

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Figura 3.31 Estructura del modelo de objetos en Abaqus

Un objeto en el modelo de objetos de abaqus puede clasificarse en:

Container.-Dicho objeto contiene a su vez objetos de un tipo. Un contenedor en Abaqus object model

puede ser un repositorio o una secuencia. Por ejemplo, el contenedor Stepses un repositorio que

contiene todos los steps en el análisis. Tu script usa el contenedor Step para acceder a un step

determinado.

Singular Object.- Objetos que no son contenedores se muestran como Singular Object en la figura

X.Ejemplos de objetos singurales son el objeto Session y el objeto Mdb.Solo hay un objeto Session y

un objeto Mdb en la estructura de objetos de Abaqus.

En la programación de scripts en Abaqus se usan comandos para acceder a los objetos a través de la jerarquía

de objetos. Veámos un ejemplo:

Cell4=mdb.models['Model-1']. parts['Sheet']. cells[4]

Código 11. Ejemplo uso de comandos para acceder a objetos

Cell4 es una variable a la que queremos asignar el valor de la celda con índice 4. Para acceder a ese objeto hay

que ir paso a paso en la estructura de Abaqus mdb → models→parts . Con ésta línea de código se ha asignado

el valor de la celda 4 del part denominado ‘Sheet’ correspondiente al model denominado ‘Model-1’.

Veamos otro ejemplo, en éste caso queremos crear un objeto Part

mdb. models['Model-1']. Part (name='Part-1',

dimensionality=THREE_D, type=DEFORMABLE_BODY)

Código 12. Ejemplo uso de comandos para crear un Part

En éste ejemplo vemos un comando (método) llamado Part. Dicho comando crea un objeto part en el

repositorio de parts. El comando Part necesita una serie de argumentos básicos, éstos aparecen entre paréntesis

como se observa en el código 12. En ambos códigos ejemplo están marcados en rojo los repositorios y en azul

el método. Como se observa empieza por mayúscula, esto nos puede servir de indicador cuando leamos un

código para diferenciar entre repositorios y métodos.

Page 70: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con Abaqus

52

Una herramienta de la que se ha hecho uso en éste proyecto ha sido el Abaqus Scripting Reference Manual, en

él podemos consultar los diferentes comandos que existen dentro de cada módulo de Abaqus.

Figura 3.32 Captura del Abaqus Scripting User’s Manual

Veamos ahora el procedimiento para crear un archivo script con Python.Al crear un modelo mediante la GUI

de Abaqus se genera un archivo *.jnl, como se ha mencionado, en él se almacenan los comandos utilizados por

el usuario para crear dicho modelo. Basta con copiar el archivo y guardarlo como extensión Python, (*.py).

Con cualquier editor de textos podrás modificar el archivo para crear un scritp. En éste proyecto el editor de

texto a utilizar ha sido NotePad++.

Page 71: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

53

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Figura 3.33 Extracto del inicio de un archivo *.jnl

Al comienzo del extracto observamos como se van llamando a las diferentes librerías propias de Abaqus, (part,

material,section…) a continuación vemos comandos utilizados en la creación del modelo.Ésto se hace debido

a que para acceder a objetos de Abaqus, que serán utilizados posteriormente en el código, tales como obejtos

del módulo Part y Sections, Abaqus extiende o aumenta el modelo de objetos importando módulos

adicionales.La estructura a seguir para importar un módulo es:

From (módulo de Abaqus) import *

El asterisco al final sirve para importar todos los objetos relacionados con dicho módulo. En la siguiente tabla

tenemos algunas de las librerías útiles en el desarrollo de scripts en Abaqus.

Módulo Funcionalidad en Abaqus/CAE

assembly Módulo de Assembly

datum Set de herramientas del Datum

interaction Módulo de Interaction

job Módulo de Job

load Módulo de Load

material Materiales en el módulo de Property

mesh Módulo de Mesh

part Módulo de Part

partition Set de herramientas del Partition

section Sections en el módulo de Property

sketch Módulo de Sketch

step Módulo de Step

visualization Módulo de Visualization

xyPlot Set de herramientas para X-Y (subapartado del

result)

Tabla 3.2 Librerías de Abaqus

En la línea 23 observamos el comando necesario para crear un Part. En éste caso se le ha asignado un nombre

y es un sólido deformable, en el capítulo siguiente desgranaremos en profundidad los comandos utilizados en

cada módulo.

Page 72: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con Abaqus

54

3.4 Programación de un proceso de conformado de chapa

Una vez introducida la programación orientada a objetos en Abaqus veamos cómo se aplicaría al

modelado de un proceso de conformado en chapa. Para ello veremos el código necesario para generar dicho

análisis y la utilización de los objetos y comandos en cada módulo de Abaqus.Comenzaremos por los módulos

necesarios para el modelado del análisis y terminaremos con la interpretación de resultados.

3.4.1 Modelado del ensayo

Como se observa en la figura 3.33, al comienzo de un archivo *jnl se encuentran las librerías que

contienen los objetos a utilizar en el desarrollo del código. Si bien un archivo *jnl podría ser utilizado como un

script, recordemos que en él son grabadas todas las operaciones realizadas por el usuario, incluyendo erratas,

eliminación y creación de parts, elementos para definir la geometría en el sketch etc… En un script se debe ser

lo más estructurado posible y evitar líneas de código innecesarias. Luego para cualquier script a realizar se

debe conocer de antemano qué librerías serán necesarias para su ejecución y colocarlas al principio de nuestro

script. En la figura 3.34 observamos las librerías necesarias para éste apartado.

Figura. 3.34 Importación de las librerías a utilizar en el script

Módulo Part

Veamos ahora los comandos a utilizar en éste módulo.En la Figura X Observamos la estructura del Part.

Figura. 3.35 Estructura del modelo de objetos en Part

En nuestro modelo tenemos que crear 3 parts correspondientes a la placa, la herramienta y el soporte. En la

figura 3.36 vemos un esquema de nuestro modelado del proceso de conformado.Los distintos parámetros

elegidos para las dimensiones de nuestros parts.

Page 73: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

55

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Figura. 3.36 Esquema del modelado del proceso de conformado

Vamos a comentar el código necesario y sus particularidades. En la figura 3.37 vemos el código para crear los

parts de nuestra herramienta y la chapa. Ambos comparten algunos comandos y estructura. En la primera parte

se desarrolla el código haciendo uso de comandos del módulo de Sketch.Dentro del “Model-1”, nombre

escogido por defecto para el modelo, vemos como se utiliza el comando Constrait Sketch para crear el Sketch

en el que configuraremos la geometría de el part en concreto. En la línea 23 se utiliza el comando del sketch

para crear un rectángulo, en concreto el que modelará la chapa de espesor 1.6mm en éste ejemplo. Es

importante indicar que las posiciones del “point1” y “point2” son posiciones con referencia el eje de

coordenadas asignado por Abaqus.

De la línea 25 a 28 primero se crea el Part de la chapa y después se asigna el sketch realizado al part creado

bajo el nombre de “Sheet”. Un comando que es importante reseñar es el que crea un punto de referencia. En

los parts solidos rígidos de nuestro modelo será útil crearlo.

Para modelar el proceso de conformado debemos simular un empotramietndo en los extremos de la chapa.Una

forma de empotrar la cara superior de la chapa es haciendo una partición de la chapa, y empotrando esa parte

de la chapa. Para realizar esto recurrimos al comando PartitionbFaceBySketch.recordemos que podemos

realizar manualmente una partición y localizar el comando en el archivo *jnl creado e implementarla en

nuestro script. Éste método nos facilitará el uso de comandos más específicos de un módulo.En la figura 3.33

observamos el código extraído de un archivo *jnl al realizar nuestro modelo sin usar el script.

Page 74: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con Abaqus

56

Figura. 3.37 Extracto de código para le generación de los parts del modelo

Page 75: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

57

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Figura. 3.38 Extracto de código para le generación de partición

Módulo Material and Section

La estructura para crear un objeto sigue siendo la misma en éste módulo. En éste módulo queremos

crear el material de la placa. Con el código→ mdb. models['Model-1']. Material(name='AA7075-O'), se crea

un material con nombre AA7075-O, vemos que el comando Método a usar para crear el material empieza por

mayúscula, palabra escrita en azul, como se explicó en el apartado anterior. Para introducir sus características

en el régimen elástico y Plástico se usan los comandos Elastic y Plastic respectivamente. Entre paréntesis, se

encuetra la variable con esos datos, dicha variable puede ser leída de un archivo de texto como se explicará en

ejemplo práctico aplicación de CAE a un proceso de rebordeado de agujero. Las siguientes líneas muestran la

creación de una sección con nombre ‘Section-AA7075-O’ y su posterior asignación al part de la chapa.

Figura. 3.39 Extracto de código para creación de material, sección y asignación de sección

Page 76: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con Abaqus

58

Módulo Mesh

Ya hemos definido parte del modelo,primero geométricamente, y luego añadiendo las propiedades

intrínsecas al part sobre el que se recogerán resultados, la chapa.Ahora hay que mallar cada uno de los parts de

nuestro modelo, elegimos el tamaño del mallado y generamos la malla. En la figura 3.40 vemos el código que

ejecuta Abaqus para realizar ésta acción.

Figura. 3.40 Extracto de código para mallar los parts

Módulo Assembly

Procedamos a posicionar nuestro modelo en el espacio, respecto a un eje de referencias guardando

las posiciones relativas entre parts. En la figura 3.41 vemos la estructura de objetos en éste modelo.

Figura. 3.41 Estructura del modelo de objetos del rootAssembly

Page 77: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

59

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Una vez mallado el modelo se procede a realizar el ensamblaje, posicionamos los parts en el espacio. Se elige

el eje de coordenadas para el conjunto y se crean las instances para cada part.

Figura. 3.42 Extracto de código perteneciente al assembly

Módulo Steps

Hay que generar el step donde se llevará a cabo el proceso de conformado.Luego se debe de crear un

objeto dentro del modelo ‘Model-1’ StaticStep, asignándole sus propiedades como el tiempo de duración del

step,nombre etc.. Usando el Abaqus Scripting Reference Manual, buscando el objeto que se crea, StaticStep

podemos ver los argumentos que requiere para ser generado.

Figura. 3.43 Extracto de código perteneciente a la creación del step y configuración de los datos de salida del

análisis

En la figura 3.43 vemos cómo se crea un Step estático y la creación de un campo de almacenamiento de datos

de salida del análisis. En el caso del código mostrado, se quieren obtener los valores de los desplazamientos de

los nodos de la cara superior e inferior de la chapa.

Page 78: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con Abaqus

60

Módulo Interactions

Debemos crear las condiciones de contacto que se dan en el conformado de la chapa. El contacto del

prensachapas (blankholder) y el contacto con la herramienta.Siempre que se tengan dudas de como crear

objetos o introducción de parámetros vía código, se recurre a realizar manualmente la operación y observar en

el archivo *.jnl el comando generado.En la figura 3.44 vemos el código correspondiente a la generación de los

contactos y sus propiedades, se observa como hemos creado una variable tools_friction en la que se ha

almacenado el coef de fricción a utilizar en el contacto herramienta-chapa.

Figura. 3.44 Extracto de código para la configuración de contactos en el modelo

Módulo Load

Antes de ejecutar el análisis y como último paso para definir el modelo, se crean las condiciones de

contorno. En nuestro caso no modelamos cargas, la deformación de la chapa será debida al desplazamiento del

punzón a velocidad constante. Se generan las condiciones de contorno, siendo las de encastre condiciones

iniciales y permanentes en el tiempo de la simulación. La condición de movimiento del punzón se dará en el

step del procesado, step 2.

Figura. 3.45 Extracto de código para la definición de las condiciones de contorno

Page 79: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

61

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Módulo Job

Por último, se crea el job y se ejecuta para obtener los resultados de nuestra simulación.Tras

ejecutarse Abaqus habrá generado un archivo con extensión *.odb.La fase de modelado de nuestro problema

ha terminado,el siguiente paso es la visualización de resultados.

Figura. 3.46 Extracto de código para definir el job

3.4.2 Interpretación de resultados (Módulo resultados Abaqus)

Módulo Visualization

Llegados a éste punto, ya solo queda visualizar los resultados de nuestro análisis, para ello Abaqus

CAE se sirve del módulo de Visaulization. El archivo con el que trabaja en éste módulo Abaqus es el creado

tras el cálculo del análisis, el Odb, que a su vez pertenece a un objeto mayo que es Session, que se crea al

arrancar el programa Abaqus.En el archivo odb se almacena tanto información sobre el modelo como los

resultados de nuestro análisis, (fieldOutputs, historyOutputs etc…) Dependiendo de los resultados que

querramos mostrar o extraer del análisis se utilizarán obejtos o comandos a elección del usuario.

Figura. 3.47 Estructura del modelo de objetos del odb

Page 80: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Automatización con Abaqus

62

Figura. 3.48 Estructura del modelo de objetos bajo el objeto session

En la figura 3.49 se muestra un ejemplo de código para visualización de resultados.

Figura. 3.49 Extracto de código para crear una ventana de visualización y mostrar resultados del análisis

Page 81: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

63

4 APLICACIÓN CAD/CAM A UN PROCESO DE

CONFORMADO INCREMENTAL EN 2 ETAPAS

4.1 Descripción del problema

Una vez desarrollada la metodología para realizar un script en un programa CAD como es CATIA

V5, vamos a ver una posible aplicación práctica de una macro.En el departamento de Ingeniería Mecánica y

Fabricación uno de los análisis que se están llevando a cabo es el análisis del Proceso de Conformado

Incremental en dos etapas aplicado al rebordeado de chapas.Ésta tecnología se encuentra aún en desarrollo,

siendo uno de los aspectos prioritarios una mejor comprensión de la mecánica del proceso y de los parámetros

que influyen en el notable incremento de conformabilidad que se dá mediante dicha tecnología.Para la

realización del conformado incremental de un solo punto (SPIF) son necesarios cuatro elementos básicos:

1) Una chapa de metal,

2) Un sistema de sujeción de la chapa,

3) Una herramienta con punta semiésferica,

4) Un centro de mecanizado CNC.

Las trayectorias de la herramienta durante el proceso son creadas mediante un programa CAM, en nuestro

caso CATIA V5, el proceso a seguir para obtenerlas es crear un Part con la geometría de la chapa en la

situación intermedia tras realizar la primera pasada en el caso de nuestro estudio, crear un process para

mecanizar la pieza en el workbench machining y generar un código APT o ISO con las trayectorias de la

herramienta. En la figura 4.1 observamos el esquema de un SPIF de una sola etapa y dos ejemplos de

trayectorias en dos etapas. Vemos un ejemplo de parametrización de trayectoria en la 1ª etapa de un

conformado en dos etapas, vamos a definir los parámetros:

A.-Se denomina a la pendiente del escalón

H.-Profundidad del punzón para realizar el escalón

W.-Diferencia entre los radios de los agujeros resultantes en las 2 pasadas de rebordeado.

R.-Radio del punzón

Page 82: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Aplicación CAD/CAM a un proceso de conformado incremental en 2 etapas

64

64

Figura 4.1 Boceto trayectorias de herramienta en SPIF y parametrización de trayectorias en conformado en

2 etapas

4.2 Metodología

La estrategia a seguir para los scripts creados en CATIA han sido el uso de la herramienta CATIA

grabar macro, para obtener los comandos utilizados por el usuario para realizar las acciones en CATIA.Para

los ejemplos de macros generadas para el workbench del Part Design se ha procedido a realizar un sketch

parametrizado, generar mediante shaft el modelo en 3D, todo ello grabando el procedimiento completo con la

herramienta Grabar Macro.

Page 83: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

65

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

4.2.1 Dibujar sketch parametrizado

En nuestro caso de estudio vamos a variar 3 parámetros para generar nuestra trayectoria, A, H yW,

dejando fijo el radio de nuestro punzón en nuestro caso R=6mm. En la figuras 4.2 y 4.3, vemos las relaciones

entre las dimensiones en nuestro modelo de trayectoria.

Figura 4.2 Esquema de definición de parámetros en nuestra aplicación

Figura 4.3 Restricciones geométricas de nuestro modelo y relación entre parámetros y variables

Una vez generado el procedimiento paramos el grabador de macros. Ya hemos generado un archivo

part para ser utilizado en el process como elemento a procesar.

Page 84: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Aplicación CAD/CAM a un proceso de conformado incremental en 2 etapas

66

66

Figura 4.4 Sketch trayectoria con parámetros A=30mm, W=5mm y H=7mm

Figura 4.5 Part generado Hole Flanging 2 pasadas (A=30mm,W=5mm y H=7mm)

4.2.2 Generar resto de modelo CAD/CAM

Para poder generar el código APT con las trayectorias de la herramienta para el conformado

incremental se tiene que crear un process. Dependiendo de los parámetros de A, W y H la trayectoria variará,

porque varía el part final que procesamos. En la figura 4.6 podemos observar el process creado. Se ha

realizado una sola part operation y una operación Multi-Axis Curve.Multi-Axis-Curve es otra operación de

mecanizado al igual que pocketing o Profile Contouring, para nuestra aplicación hemos configurado la

operación como se observan en las figuras 4.6, donde definimos la estrategia de la trayectoria,4.7, donde

seleccionamos la geometría a mecanizar,4.8, donde definimos velocidades de avance y de rotación y 4.9 donde

definimos macros de aproximación.

Page 85: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

67

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Figura 4.6 Configuración de estrategia de

trayectoria

Figura 4.7 Configuración geometría a mecanizar

Figura 4.8 Configuración del feed rate y spindle Figura 4.9 Configuración de macros de

aproximación

En la figura 4.10 vemos el process en el módulo de Prismatic Machining, como último paso

quedaría generar el código APT. Para ello tan solo tendrían que seguirse los pasos explicados en el apartado

2.3. Con lo realizado hasta ahora se habría completado los pasos a seguir por el usario para generar las

trayectorias del punzón de radio 6mm para otener una deformación en la chapa como la de la siguiente.

Page 86: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Aplicación CAD/CAM a un proceso de conformado incremental en 2 etapas

68

68

Figura 4.10 Imagen del process utilizado para la generación de trayectorias

4.2.3 Scripts

El proceso anterior lo tendría que hacer manualmente el usuario de principio a fin cada vez que

quisiera modificar alguno de los tres parámetros (A, W, H):

1) Modificar el sketch del part para cambiar el valor de las variables

2) Actualizar el part y guardarlo

3) Seleccionar el Nuevo part como elemento a procesar en el archivo process

4) Seleccionar la nueva geometría a procesar

5) Generar el código APT

El proceso de realizarlo para numerosos ensayos en laboratorio cambiando los parámetros, puede ser un

proceso repetitivo y eso lleva a la idea de pensar de automatizar de algún modo algunos de los pasos del

proceso.

Un script útil sería uno que modificara los parámetros según valores introducidos mediante ventanas

emergentes, evitando así realizar los pasos de seleccionar el sketch cambiar uno a uno los valores, cerrar

sketch y modificar el part. En soluciones propuestas ésta ha sido una de las implementadas.

Lo ideal sería los cinco pasos fueran ejecutados en un mismo script. Ésto se deja como posible proyectos de

futuro.

4.3 Soluciones propuestas

4.3.1 Macros en Part Design

A continuación, vamos a ver la solución en modo script que realiza los dos primeros pasos necesarios para la

generación de un nuevo part con los nuevos valores. El archivo sobre el que se ejecuta la macro es HF2ST-2D,

recordemos que el lenguaje de programación de CATIA V5 es visual basic y tenemos que darle dimensión a

las variables que aparezcan en el código. Observamos que lo que queremos modificar son los valores H,W y

A, la primera parte del código es tal y como se obtiene del grabador de Macros de Catia. Modificando el

código obtenido de la herramienta para insertar ventanas de toma de datos (Input box) que asignaran los datos

Page 87: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

69

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

a las dimensiones en el sketch, las dimensiones a modificar son angle1(A), length1 y length2.

Figura. 4.11 Macro 01-update-geometry

Macro muy sencilla que solo actualiza los valores de los parámetros geométricos. Requiere tener previamente

modelados tanto la pieza como el proceso. La macro se ejecuta con el modelo de pieza activo, pregunta al

usuario los nuevos valores de los parámetros y actualiza la geometría de la pieza.

Ventajas: muy sencillo de implementar y usar.

Inconvenientes: muy poca automatización.

Además de ésta macro se ha generado otra macro como alternativa a la introducción de valores mediante

ventanas emergentes. En dicha macro son 5 los parámetros que se modifican en el modelo R1,R2,W,H y A, en

la figura 4.1 vemos dichos parámetros representados en la parametrización de la trayectoria en la 1ª etapa.

tomando los valores de los parámetros directamente de una tabla con una o más filas. Las columnas incluyen,

además de los valores de los parámetros, un identificador de tipo texto. El resultado de la macro es un modelo

de pieza por cada fila de la tabla, siendo el nombre del archivo el identificador correspondiente con extensión

CATPart.Para ésta macro se usa el archivo HF2ST-Ri02.

Ventajas: ademas de sencillo, genera varias geometrias simultaneamente.

Inconvenientes: poca automatización

En el apédice B se detalla el código utilizado en ambas macros.

4.3.2 Macro en Prismatic Machining

Los pasos 3,4 y 5, al ser acciones llevadas a cabo en el process,se tienen que automatizar en el módulo de

Prismatic Machining.Durante la ejecución de éste proyecto no se ha podido seguir la metodología de grabar

macro y obtener comandos.Ésto ha hecho que no haya podido automatizarse los pasos 3 y 4.

Page 88: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Aplicación CAD/CAM a un proceso de conformado incremental en 2 etapas

70

70

Una de las macros interesantes en éste módulo sería la que generara automáticamente el apt y lo guardara en

un archivo. A continuación se muestra la solución sugerida para la realización de ésta tarea. Aún siguiendo las

instrucciones del manual CATIA V5 automation, ésta macro no ha podido ser ejecutada completamente al

generar errores.Ésta es una de las soluciones probadas, en el apéndice B se detallan otras soluciones

alternativas.

Figura 4.12 Macro generación de APT

4.4 Análisis y dicusión

Se han mostrado las soluciones diseñadas para la automatización en cada módulo de CATIA V5, objeto de

estudio en éste proyecto. Para la automatización en el módulo Part Design el resultado ha sido satisfactorio y

hemos eliminado dos de los 5 pasos del proceso para generar las trayectorias. Sin embargo, en el módulo de

Machining la tarea requiere un análisis más en profundidad de la programación y no es posible sacar

conclusiones utilizando la metodología de grabar acciones y leer el código grabado. No se ha conseguido

finalizar la automatización completa del proceso hasta la generación del archivo APT.

Figura 4.13 Visualización de las ventanas emergentes que aparecen al ejecutar la macro Macro 01-update-

geometry

Page 89: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

71

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Page 90: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Aplicación CAE a un proceso de rebordeado de agujero

72

72

5 APLICACIÓN CAE A UN PROCESO DE

REBORDEADO DE AGUJERO

5.1 Descripción del problema

Una vez desarrollada la metodología para realizar un script en un programa CAE como es Abaqus,

vamos a ver una posible aplicación práctica de una macro.En el departamento de Ingeniería Mecánica y

Fabricación uno de los análisis que se están llevando a cabo es el análisis del Proceso de Conformado

Incremental aplicado al rebordeado de chapas.Ésta tecnología se encuentra aún en desarrollo, siendo uno de

los aspectos prioritarios una mejor comprensión de la mecánica del proceso y de los parámetros que influyen

en el notable incremento de conformabilidad que se dá mediante dicha tecnología El estudio se centra en

analizar el proceso de Rebordeado de Agujeros (Hole Flanging) mediante conformado incremental. El

rebordeado de agujeros es un proceso muy conocido en la industria. Sin embargo, su conformado mediante la

tecnología de SPIF (Single Point Incremental Forming – SPIF) es muy reciente, dotando a dicho proceso de

una gran versatilidad y economía.Los análisis más actuales indican que los factores que más contribuyen en

retrasar el fallo en SPIF son: la flexión localizada debida a la curvatura de la herramienta, la tensión tangencial

y normal en el contacto chapa-herramienta, la compresión hidrostática y la variación cíclica de la deformación

debida a la sucesivas pasadas.

En éste proyecto vamos a limitarnos a la aplicación de una macro al estudio del espesor en la chapa

dependiendo de la curvatura de la herramienta, en el rebordeo de agujero mediante una sola pasada. Se quiere

estudiar la dependencia del espesor de la chapa tras una operación de rebordeado de agujero con la curvatura

del punzón, por consiguiente, tenemos un parámetro geométrico a variar en nuestra simulación del proceso. Lo

que podría suponer la realización de varios modelos en abaqus, variando el radio manualmente por cada

prueba, se puede plantear el uso de un script que, partiendo de unos parámetros de radio del punzón, en un

archivo txt, propiedades elásticas y plásticas del material, nos devuelva como resultado unas gráficas con el

espesor de la placa y su relación con las dimensiones del radio del punzón.

Figura 5.1 Esquema relación entre archivos en nuestra aplicación CAE

Page 91: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

73

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

5.2 Metodología

Para la creación de nuestra aplicación de scripting realizaremos manualmente un primer modelo de

nuestra simulación, posteriormente analizaremos su archivo *jnl generado para crear nuestro script con

comandos de Abaqus.Como se observa en la figura 5.1, en nuestra aplicación hacemos uso de 5 scripts:

func_auxiliar.py. -Es el script que alberga las dos funciones de lectura de datos de archivos

*.txt, que se usaran en los otros scripts.

pre4-fea-hole definition.py. - Script principal de la aplicación, en ella se ejecutan todos

salvo el scr8-draw-graph.py. Éste script es el encargado de llamar a pequeños scripts

necesarios para crear el modelo a analizar.

pre5-fea-results.py. – Genera el archivo odb y escribe los datos de desplazamientos de la

cara superior e inferior de la chapa para su posterior uso en el script que calcula el espesor.

scr7-calculate-sheet-thickness.py. - Con los datos de salida del análisis de Abaqus del

desplazamiento tanto de los nodos de la cara superior como de la inferior de la chapa calcula

el espesor de la chapa.

scr8-draw-graph.py. - Tiene como función pintar la gráfica con los datos obtenidos del

archivo gen4-thickness.

Al ejecutar el pre4-fea-hole definition.py el archivo generará archivos gen4-thickness-(radio del punzón) .csv,

tantos como diferentes radios de punzón hayamos metido en el archivo txt params, con los archivos obtenidos

el script scr8-draw-graph.py creará el archivo thickness.png en el que podremos observar la tendencia del

espesor de la chapa, con el radio de curvatura de la herramienta.

Figura 5.2 Archivos de entrada de datos a la aplicación CAE

En la figura 5.2 se muestran dos de los 3 archivos de entrada a nuestro script. En params.txt insertamos los

radios de curvatura y el nombre de las herramientas. Para las propiedades elásticas y plásticas de nuestro

material utilizamos AA7075O-Elastic.txt y AA7075O-Hollomon314n13.txt.

Antes de mostrar el modelo propuesto y las peculiaridades del código vamos a mostrar la estructura de lo

bloques de control de Python que han sido incluidos en la macro. A diferencia de visual basic en Python la

estructura de se delimita por el uso de sangría. Veamos la estructuras de los bucles If y For:

Figura 5.3 Estructura del If Figura 5.4 Estructura del for

En los ejemplos anteriores figura. 5.3 y 5.4, vemos la forma de terminar la línea de inicio de bucle if es usando

los dos puntos (‘:’) a diferencia del Visual Basic que utiliza la palabra ‘Then’.Para cerrar ambos tipos de

bucles tan solo es necesario quitar la sangría.

Page 92: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Aplicación CAE a un proceso de rebordeado de agujero

74

74

Para evitar un código muy largo del script pre4-fea-hole definition.py, el código de modelado geométrico y

configuraciones del modelo se ha ido dividiendo en pequeños scripts que se ejecutan en el pre4-fea-hole

definition.py. Dichos scripts están adjuntados en el Anexo C donde se recopilan todos los scripts de nuestra

aplicación CAE.En el apartado siguiente vermos extractos de algunos scripts que hayan sido adaptados para el

análisis.

5.3 Modelo propuesto

El material que se va a utilizar es una aleación de aluminio AA7075-O de 1.6 mm de espesor. La

letra O de la designación, señala que el material fue sometido a un estado de recocido. Luego como se ha

mencionado anteriormente los archivos correspondientes a las propiedades del material de la chapa

corresponden a un aluminio AA7075-O.

A continuación, vamos a exponer las consideraciones que se han realizado para modelar el problema de

rebordeo de agujero con Abaqus.

En Abaqus se pueden resolver problemas en 3D,2D y axilsimétricos. El problema rebordeado de chapa podría

modelarse como un problema en 3D, sin embargo, esto ocasiona grandes esperas para la obtención de datos

del análisis y dado que el objetivo de nuestro proyecto se centra en la aplicación de scripts, se opta por modelar

el problema de Hole Flanging como un problema axilsimétrico.

Figura 5.5 Esquemas del proceso de Hole Flanging en una sola etapa

En la figura 5.5 vemos los elementos que intervienen en el proceso de Hole Flanging.La decisión de estudiar el

análisis como axilsimétrico agiliza los cálculos del análisis para Abaqus y el modelado del problema. Es

conocido que, en los análisis de chapa bajo unas condiciones concretas, cargas aplicadas y condiciones de

contorno, se pueden resolver como problemas axilsimétricos.

Luego nuestro modelo en Abaqus que creará y analizará nuestro conjunto de scripts será axilsimétrico. En la

figura 5.6 vemos nuestro modelo creado en Abaqus con las dimensiones de la chapa y parámetros geométricos

que se utilizan en nuestro modelo.

Page 93: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

75

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Figura 5.6 Esquemas del proceso de Hole Flanging modelado en Abaqus

Como se observa en la figura anterior, el modelado de la herramienta también se ha simplificado, no siendo

enteramente la sección de un punzón semi-esférico.

El párametro a variar geométricamente en el modelo de la figura 5.6 será R_tool, en nuestro caso de estudio

variará entre los radios introducidos en params. Se plantearon dos soluciones para la ejecución automática de

los análisis para los distintos radios.

La primera solución posible sería la de crear tantos Models como distintos radios de herramienta

tuviéramos.La macro crearía los modelos y ejecutaría los distintos Jobs. Como ventaja tendría que solo habría

que modificar la geometría del tool, pero habría que estar activando y desactivando models.

La segunda solución posible es crear sobre un mismo Model todas las herramientas y a la hora de ejecutar los

job activar la condición de contorno de desplazamiento del punzón que corresponda. Por ejemplo si es el

análisis con radio de herramienta 10, tener solo activada la condición de desplazamiento en ese part.

Se ha decidido desarrollar el código de la macro optando por la segunda solución. Salvo algunas excepciones

que se desarrollarán, éste capítulo.

A continuación, vamos a comentar las partes más relevantes del código de la figura 5.7. Como se ha explicado

antes en todo script se debe empezar por la llamada a las librerías que se van a trabajar, en éste en concreto se

llama a las librerías de los módulos de modelado del problema más connectorBehavior y el módulo

Visualization.Las primeras líneas ejecutan la función auxiliar para la lectura de los archivos de entrada a la

aplicación, definiéndose también direcciones donde se almacenarán archivos intermedios y uno de los finales

A partir de ahí comienza la lectura de datos de los archivos externos y su almacenamiento en variables, R

contendrá los distintos radios de curvatura de la herramienta a analizar y tooling los nombres asignados a

dichas herramientas.A continuación observamos definiciones de parámetros geométricos de la figura

5.6.Avanzamos hasta el primer bucle for, como se ha comentado anteriormente generaremos tantas parts de

herramientas como radios de curvatura tengamos en el archivo params.txt, con lo cuál se opta por un bucle for

que recorra las listas R y tooling y asigne esos parámetros en la creación de los parts de herramientas.

Page 94: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Aplicación CAE a un proceso de rebordeado de agujero

76

76

Figura 5.7 Script pre4-fea-hole definition.py

Una vez creados los parts se leen los archivos que nos definirán los parámetros de nuestro material y se

asignarán a las variables tableElastic y tablePlastic, con el script m04_Material.py se crea el material. Al crear

varios parts referentes a radios curvatura de herramienta debemos introducir otro bucle for para mallar los parts

herramienta generados, esto será necesario también en el script de assembly, contacts y boundary conditions.

En éste último módulo destaca también que la trayectoria de la herramienta es leída de un archivo externo tool-

path-Z.csv.Para finalizar con los scripts para el modelado del problema ejecutamos dentro de un bucle for el

script para generar Jobs.Cada job llevará el nombre gen3-HF1st-R_tool donde R_tool indicará el radio de la

herramienta.

A continuación en las figuras siguientes se muestran los scripts de los módulos modificados y comentaremos

la solución seleccionada para activar y desactivar herramientas para que cada radio de curvatura tenga su

módulo job independiente, a pesar de éstar en el mismo modelo. En la Figura 5.13 vemos en el código del

script como, antes de iniciar la línea de comando genérica para crear un job, entramos en el objeto

boundaryConditions, y activamos el desplazamiento en u2, al finalizar el código volvemos a poner a cero el

desplazamiento en u2.Con ésto conseguimos que al correr el bucle for de la línea 76 de código de la Figura

5.7, se active el movimiento en una de las herramientas creadas, se analice el modelo con el movimiento de

sólo esa herramienta y se guarde en un job con el nombre de la herramienta activada, por ejemplo para la

herramienta con radio 6 se generará un job llamado gen3-HF1st-R_tool Tool_6.

Page 95: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

77

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Figura 5.8 Script creación parts de herramientas

Figura 5.9 Script del mallado del modelo

Figura 5.10 Script del Assembly

Page 96: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Aplicación CAE a un proceso de rebordeado de agujero

78

78

Figura 5.11 Script condiciones de contorno en Step 2

Figura 5.12 Script conFiguración de contactos entre chapa-herramienta y chapa-sistema de sujección

Figura 5.13 Script de creación de Jobs

Page 97: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

79

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

5.4 Análisis de resultados

Con los scripts ejecutados hasta ahora en Script pre4-fea-hole definition.py hemos los Jobs que

analizaremos en éste apartado. Según nuestro esquema de la figura 5.1 el siguiente script a ejecutar será pre5-

fea-results.py, tras su ejecución se habrán generado archivos con los datos XY de cada uno de los análisis,

desplazamientos tanto de la cara superio como de la cara inferior de la chapa.Éstos archivos serán argumentos

utilizados en el script scr7-calculate-sheet-thickness.py, el cual se ejecutará tantas veces como radios de

curvatura querramos analizar.Por último para obtener el archivo gráfico donde se comparen los espesores de

chapa en relación con el radio de curvatura, se ejecuta scr8-draw-graph.py. Éstos dos últimos scripts no

utilizan ya comandos internos de Abaqus, son archivos de Python puros y usan librerías específicas de Python

como math, numpy y maplotlib. Para consultar los códigos véase el Anexo C.

La ejecución da como resultado una gráfica, saquemos conclusiones de los análisis realizados.En la figura 5.14

se muestra la gráfica final obtenida tras ejecutar nuestra aplicación.Vemos el comportamiento del espesor de la

chapa dependiendo de los radios de curvatura de la herramienta.En éste caso se han aplicado 5 radios distintos,

los cuales habían sido utilizados en los ensayos realizados en taller por el departamento.Se observa que la

tendencia del espesor es muy similar y casi no se vé afectada al cambio de radio de curvatura de la

herramienta,Se toma con distancia cero el extremo izquierdo de la chapa en el modelo Abaqus de la figura 5.6,

así vemos que como era de esperar la zona con mejor espesor de la chapa se da en el punto de contacto de la

chapa con el chaflán del blankholder como se puede visualizar en la Figura 5.15.

Figura 5.14 Gráfica Hole-flanging en una sola pasada

Page 98: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Aplicación CAE a un proceso de rebordeado de agujero

80

80

Figura 5.15 Visualización del análisis para herramienta de radio de curvatura 10mm

Zona de espesor mínimo

Page 99: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

81

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

6 CONCLUSIONES Y TRABAJOS FUTUROS

En éste proyecto el estudio de automatización del proceso de conformado en chapa se ha dividido en dos

partes, por un lado, el estudio en un software CAD/CAM y por otro lado su desarrollo en un software CAE,

ambas aplicaciones han tenido como objetivo automatizar tareas en el análisis del proceso de conformado de

una chapa.

A continuación se presentan las conclusiones obtenidas en este trabajo y se proponen algunos posibles trabajos

futuros que pueden desarrollarse a partir de este proyecto.

6.1 Conclusiones

La finalidad del proyecto ha sido la implementación de macros tanto en CATIA V5 y Abaqus,que

ayuden en las tareas repetitivas que se dan durante los análisis realizados por el departamento de fabricación

del procesado de conformado de chapa.Ésta es solo una de las aplicaciones de la automatización mediante

macros, de hecho la utilización de macros está extendida en otros softwares como por ejemplo Excel, donde su

uso está más extendido y el acceso a la formación es más fácil.

Al final de la consecución de éste proyecto han sido varias las tareas u objetivos que se han

alcanzado, se ha obtenido un conocimiento general de la programación orientada a objetos tanto en CATIA V5

como en Abaqus, se han generado una serie de macros, aunque no de todas se han obtenido los resultados

esperados.La automatización del proceso de conformado incremental en dos etapas no ha podido ser completa.

Del análisis de un proceso de rebordeado de agujero se ha obtenido un script bastante completo para

el cálculo de las variaciones de espesor de la chapa en el flange. Con él se han adquirido conocimientos para

poder generar scritps que analicen simulaciones de problemas de MEF a partir de archivos de entrada y nos

devuelvan archivos de salida con los resultados que queremos extraer de la simulación, ahorrándonos tiempo

de procesado.

6.2 Trabajos futuros

Como trabajos futuros se puede pensar en la creación de una serie de scripts con el objtetivo de

realizar el análisis completo de un proceso de conformado de chapa, dada una tabla con parámetros

geométricos, el script ejecute scripts para actualizar los CAT part actualice el Process del procesado de chapa

y genere un código APT.Con dicho código mediante otro script ya ajeno a CATIA transforme ese código APT

en trayectorias de herramienta que puedan ser introducidas como archivos de lectura para realizar el análisis en

Abaqus.En dicho proyecto dado un modelo se crearía una aplicación formada por un conjunto de scripts que al

ejecutarse, obtienen de una maner más rápida y sin tanta interacción del usuario con los softwares CAD/CAM

y CAE, los análisis que se desean obtener, ya sean en forma de archivos de datos o gráficas.Un ejemplo de una

posible aplicación. se muestra en la figura 6.1.

Page 100: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

82

82

Figura 6.1Esquema del proceso de automatización de la tarea

Page 101: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

83

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

REFERENCIAS

[1] Emmet Ross, VB Scripting for CATIA V5.Segunda Edición

[2] Cristina Torrecillas. Introducción a la programación Visual Basic en

CATIA V5 Y V6 (no publicado)..

[3] http://www.esi2.us.es/~fabio/EjercicioCATIA.pdf

[4] http://www.esi2.us.es/~fabio/EjercicioCATIA.pdf

[4] http://auladeprogramacioncnc.blogspot.com.es/

[5] http://www.esi2.us.es/~fabio/EjercicioCATIA.pdf

[6] Zed A.Shaw. Aprenda a programar con Python

[7] Gautam M.Puri,Python Scripts for Abaqus

[8] J.T.B Overvelde.Learn Abaqus script in one hour

[9] http://ifcuriousthenlearn.com/blog/2015/04/02/Abaqus-FEA-Scripting-with-python/

[10] http://sergioariasfernandez.com/curso-on-line-de-abaqus/

[11] Abaqus Scripting guide

[12] Abaqus Scripting Refernce Manual

[13] Marcos C. Borrego Puche.Análisis del Proceso de Conformado Incremental Mono-Punto de Chapa y su

Aplicación al Rebordeado de Agujeros (Hole Flanging)

[14] http://catiadoc.free.fr/online/CAAScdBase/CAAMaiScriptHome.htm

Page 102: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

Glosario

84

84

GLOSARIO

ISO: International Organization for Standardization 4

UNE: Una Norma Española 4

STOCK: Bloque inicial paralelepípedo de material metálico del que se partirá para obtener la pieza definitiva

mediante sucesivas operaciones de retirada de material

APT: Automatically Programmed Tooling. Lenguaje de alto nivel para la definición de operaciones de

mecanizado en control numérico. Debe traducirse mediante un post procesador para generar el lenguaje

específico de la máquina, generalmente el ISO.

CONTROL NUMÉRICO (NC ó CN): Nos referiremos tanto al lenguaje como a la máquina que interpreta las

instrucciones del programa de mecanizado.

WORKBENCH: En CATIA V5, el contexto de trabajo con menús especializados para desarrollar una

determinada tarea o fase de concepción del producto.

SCKETCH: Es el Workbench de trabajo en dos dimensiones, a partir del que se extraen los perfiles y curvas

generatrices de la Figura tridimensional.

ANEXO A

a. Recomendaciones generales de modelado 3D en programas de diseño industrial

1. Es mejor primero construir, luego destruir y posteriormente realizar las operaciones de modificación puntual

del sólido como redondeo, chaflanes…Esto asegura tener el volumen máximo de la pieza cuanto antes,

además de unárbol de modelado ordenado y una simplificación clara de la pieza en el caso deque se tenga que

trabajar con la pieza simplificada. Si una pieza requiere de patrones o simetrías, los elementos del patrón

deberán ser considerados como subpiezas dentro de la misma pieza y se modelarán siguiendo

estarecomendación antes de ejecutar el patrón o simetría.

2. Aprovechamiento al máximo de los condicionantes geométricos de las piezas, es interesante de cara al

diseño de modelado tener claro los condicionantes geométricos de la pieza como simetrías, concentridades de

círculos, medidas que son el doble que otra, espesores constantes en diversas partes de la pieza etc… debiendo

acotar correctamente estos parámetros, emplear variables o establecer sus condicionantes geométricos.

3. Es preferible realizar perfiles sencillos.

4. No dejar grados de libertad, ni en las acotaciones de perfiles ni en las

restricciones de conjuntos.

5. Las piezas simétricas no deben ser modeladas solamente la mitad y generar la simetría o patrón a 180º (a

veces la simetría da problemas y el patrón puede resolver esos problemas), es recomendable tener un cuerpo

central común y sobre él mismo modelar una parte y luego realizar la simetría.

6. Cuando se empleen herramientas que requieran trayectorias o curvas guía, en la mayoría de casos es

preferible crear primero las trayectorias o guías y posteriormente, insertar los planos donde van los perfiles

definidos sobre esa trayectoria (por ejemplo, empleando plano perpendicular a curva).

7. Empleo de herramientas avanzadas siempre que se pueda y sea adecuado su empleo.

8. Respecto a la movilidad de conjuntos, si un conjunto es móvil, primero se definirá como fijo y cuando se

quiera estudiar su movilidad se irán anulando (que no eliminando, estas restricciones), así es posible volver a

activarlas para disponer de planos que partan del conjunto en una única posición.

Page 103: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

85

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

ANEXO B

En éste apéndice se recogen las macros realizadas durante la ejecución dde éstre proyecto en el entorno

CATIA V5.

a. Macros de Part Design: proceso de conformado incremental en 2 etapas

Macro script 1-update-geometry. CATScript

Language = "VBSCRIPT"

' Cambia los valores de los parametros en el sketch

' Parametros: R, A, W, H

' Ejecutar macro con CATPart activo pre2-deformed-sheet-2D

Sub CATMain()

Dim A, W, H As SingleDim Wmin, Wmax, Hmin, Hmax, L1, L2, pi As Single

pi = 3.141592654'

' Recupera parametros'

Set partDocument1 = CATIA.ActiveDocument

Set part1 = partDocument1.Part

Set bodies1 = part1.Bodies

Set body1 = bodies1.Item("PartBody")

Set shapes1 = body1.Shapes

Set shaft1 = shapes1.Item("Shaft.1")

Set sketch1 = shaft1.Sketch

Set constraints1 = sketch1.Constraints

Set constraint1 = constraints1.Item("R")

Set dimension1 = constraint1.Dimension

R = dimension1.Value

Set constraint2 = constraints1.Item("d0")

Set dimension2 = constraint2.Dimension

d0 = dimension2.Value

Set constraint3 = constraints1.Item("df")

Set dimension3 = constraint3.Dimension

df = dimension3.Value

'

' Recupera variables

Set constraint4 = constraints1.Item("A")

Page 104: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

ANEXO B

86

86

Set angle1 = constraint4.Dimension

Set constraint5 = constraints1.Item("W")

Set length1 = constraint5.Dimension

Set constraint6 = constraints1.Item("H")

Set length2 = constraint6.Dimension'

' Pregunta al usuario los nuevos valores de las variables

'

' Pendiente A

A = InputBox("Introduzca la pendiente del escalón, 30º < A < 80º (90º es la horizontal)", "Pendiente del

escalón A (º)", 80)

' Altura H

L2 = R * (A*pi/180)

Hmin = R

Hmax = (df-d0)/2 - L2 + R

H = InputBox("Introduzca cuánto tiene que bajar el punzón para realizar el escalón, " & Hmin & " < H < " &

Hmax, "Altura H (mm)", Hmin)

' Ancho W

L1 = H - R

Wmin = R * (1 - Cos(A*pi/180))

Wmax = ((df-d0)/2 - L1 - L2)*Sin(A*pi/180) + Wmin

W = InputBox("Introduzca la diferencia entre los radios de los agujeros resultantes en las 2 pasadas de

rebordeado, " & Wmin & " < W < " & Wmax, "Ancho W (mm)", Wmin)

' Actualiza variables'

angle1.Value = A

length1.Value = W

length2.Value = H

part1.Update

End Sub

Macro 02 apt.CATScript

'DESCRIPTION : Macro que genera archivos CATPart tantos como filas tenga el archivo

TablasModelos.xlsx

'COMMENTS : Parámetros H,W R1,R2 del partdesign archivo HF2ST-Ri02, abrir en dicho documento para

su correcto funcionamiento.

'Acciones a mejorar: Se guarden automáticamente los CATParts con nombre aparecido en la primera columna

de TablasModelos

Sub CATMain()

Page 105: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

87

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Dim partDocument1 As PartDocument

Set partDocument1 = CATIA.ActiveDocument

Dim part1 As Part

Set part1 = partDocument1.Part

Dim relations1 As Relations

Set relations1 = part1.Relations

'Modificacion para que funcione en cualquier pc

Dim UbiArch As String

UbiArch = CATIA.FileSelectionBox("Seleccione el archivo deseado", "*.xlsx", 0)

Dim designTable1 As DesignTable

Set designTable1 = relations1.CreateDesignTable("TablaModelos", "DesignTable created by Antonio

06/03/2016", False, UbiArch)

Dim bodies1 As Bodies

Set bodies1 = part1.Bodies

Dim body1 As Body

Set body1 = bodies1.Item("PartBody")

Dim shapes1 As Shapes

Set shapes1 = body1.Shapes

Dim shaft1 As Shaft

Set shaft1 = shapes1.Item("Shaft.1")

Dim sketch1 As Sketch

Set sketch1 = shaft1.Sketch

Dim constraints1 As Constraints

Set constraints1 = sketch1.Constraints

Dim constraint1 As Constraint

Set constraint1 = constraints1.Item("W")

Dim length1 As Length

Set length1 = constraint1.Dimension

designTable1.AddAssociation length1, "W"

Dim constraint2 As Constraint

Set constraint2 = constraints1.Item("A")

Dim angle1 As Angle

Page 106: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

ANEXO B

88

88

Set angle1 = constraint2.Dimension

designTable1.AddAssociation angle1, "A (degrees)"

Dim constraint3 As Constraint

Set constraint3 = constraints1.Item("R1")

Dim length2 As Length

Set length2 = constraint3.Dimension

designTable1.AddAssociation length2, "Ri"

Dim constraint4 As Constraint

Set constraint4 = constraints1.Item("R2")

Dim length3 As Length

Set length3 = constraint4.Dimension

designTable1.AddAssociation length3, "Re"

Dim constraint5 As Constraint

Set constraint5 = constraints1.Item("H")

Dim length4 As Length

Set length4 = constraint5.Dimension

designTable1.AddAssociation length4, "H"

Dim parameters1 As Parameters

Set parameters1 = part1.Parameters

Dim intParam1 As IntParam

Set intParam1 = parameters1.CreateInteger("Pieza ensayo", 0)

designTable1.AddAssociation intParam1, "Pieza ensayo"

designTable1.Configuration = 1 ' posible línea a eliminar

part1.Update

constraint2.AngleSector = catCstAngleSector0

Dim constraint6 As Constraint

Set constraint6 = constraints1.Item("Offset.160"

Dim length5 As Length

Set length5 = constraint6.Dimension

length5.Value = 16.774973

Dim constraint7 As Constraint

Set constraint7 = constraints1.Item("Offset.162")

Dim length6 As Length

Set length6 = constraint7.Dimension

length6.Value = 30.8

'%%%%---------------- 2ª Parte de la Macro generación de archivos--------------%%%%

Page 107: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

89

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Dim TablaModelos, configuracion, mbox, seleccion, i As Integer

Dim designTable2 As Relation

Set designTable2 = relations1.Item("TablaModelos")

'Se consulta el número de config o filas de la tabla de diseño

configuracion = designTable2.ConfigurationsNb

For i = 1 To configuracion

seleccion = i

designTable2.Configuration = seleccion

part1.Update

Dim ubicacion As String ' preguntamos la ubicación para el documento nuevo CATPart

ubicacion = CATIA.FileSelectionBox("Generación Archivo Nueva Superficie Final", _

" * .CATPart", CatFileSelectionModeSave)

On Error Resume Next

partDocument1.ExportData ubicacion, "CATPart" ' salvamos el documento

If Err.Number = 0 Then

MsgBox "El documento CATPart fue guardado en: " & ubicacion & ".CATPart"

End If

Next i

End Sub

Page 108: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

ANEXO B

90

90

b. Macros de Machining: proceso de conformado incremental en 2 etapas

Macro 03 apt.CATScript

Language = "VBSCRIPT"

‘ Genera el codigo APT

‘ Ejecutar macro con CATProcess activo

'Fuente original:

http://catiadoc.free.fr/online/CAAScdBase/CAAMaiScriptHome.htm

Sub CATMain()

Dim MfgDoc1 As Document

Set MfgDoc1 = CATIA.ActiveDocument

Dim ActivityRef As AnyObject

Set ActivityRef = MfgDoc1.GetItem("Process")

Dim Setup1 As ManufacturingSetup

If (ActivityRef.IsSubTypeOf("PhysicalActivity")) Then

Set childs = ActivityRef.ChildrenActivities

quantity = childs.Count

if quantity <= 0 then

Exit Sub

End if

NumberOfPO = 0

For I=1 To quantity

Set child = childs.Item(I

If (child.IsSubTypeOf("ManufacturingSetup")) Then

Set Setup1 = child

NumberOfPO = NumberOfPO +1

Exit For

End If

Next

End If

if NumberOfPO <= 0 then

Page 109: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

91

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

Exit Sub

End if

Set ProgramList = Setup1.Programs

Dim Program1 As ManufacturingProgram

Set Program1 = ProgramList.GetElement(1)

' A partir de aquí se siguen las instrucciones del manual:

' http://catiadoc.free.fr/online/CAAScdMaiTechArticles/CAAMaiTocManufacturingActivity.htm

' Se pretende generar el código a partir de Program1

'Dim outputGen As ManufacturingOutputGenerator

'Dim format, fileName As String

'format = "APT"

'fileName = "c:\myFile.txt"

'Dim genData As ManufacturingGeneratorData

'outputGen.InitFileGenerator(format, fileName, genData)

Dim format, filename As String

format = "APT"

fileName = "c:\zzz.aptsource"

filename = CATIA.FileSelectionBox("Generación Documento APT", "*.aptsource",

CatFileSelectionModeSave)

Dim genData As ManufacturingGeneratorData

outputGen.InitFileGenerator format, filename, genData

' PROBLEMA

' El código no se guarda al archivo especificado.

' Tampoco con este método (se supone innecesario, ya lo genera InitFileGenerator):

ANEXO C

En éste apéndice se recogen las macros realizadas en Abaqus durante la ejecución de éste proyecto.En el

primer apartado se mostrarán los scripts que ejecuta la script pre4-fea-hole definition.py.En los puntos

posteriores se mostrarán el resto de scripts que completan la aplicación.

Page 110: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

ANEXO C

92

92

a. Macros auxiliares modelado en python aplicación CAD/CAM a un proceso de rebordeado de agujero

func_auxiliar.py

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

"""

Auxiliary functions

"""

def get_data_from_file(filename):

"""

Returns a list of floats from a text file with spaces or tabs as delimiters

"""

with open(filename) as f:

coords = []

for line in f:

if line!="\n":

coord = []

for string in line.split():

number = float(string)

coord.append(number)

coords.append(coord)

#print(coords)

return coords

def get_text_from_file(filename):

"""

Returns a list of floats from a text file with spaces or tabs as delimiters

"""

with open(filename) as f:

coords = []

for line in f:

if line!="\n":

coord = []

for string in line.split():

coord.append(string)

coords.append(coord)

#print(coords)

Page 111: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

93

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

return coords

m01_Sheet.py

### PARTS ###

### PART: Sheet ###

mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=200.0)

mdb.models['Model-1'].sketches['__profile__'].sketchOptions.setValues(

viewStyle=AXISYM)

mdb.models['Model-1'].sketches['__profile__'].ConstructionLine(point1=(0.0,

-100.0), point2=(0.0, 100.0))

mdb.models['Model-1'].sketches['__profile__'].FixedConstraint(entity=

mdb.models['Model-1'].sketches['__profile__'].geometry[2])

mdb.models['Model-1'].sketches['__profile__'].rectangle(point1=(30.0, 0.0),

point2=(80.0, -1.6))

mdb.models['Model-1'].Part(dimensionality=AXISYMMETRIC, name='Sheet', type=

DEFORMABLE_BODY)

mdb.models['Model-1'].parts['Sheet'].BaseShell(sketch=

mdb.models['Model-1'].sketches['__profile__'])

del mdb.models['Model-1'].sketches['__profile__']

# Partition

mdb.models['Model-1'].ConstrainedSketch(gridSpacing=4.0, name='__profile__',

sheetSize=160.03, transform=

mdb.models['Model-1'].parts['Sheet'].MakeSketchTransform(

sketchPlane=mdb.models['Model-1'].parts['Sheet'].faces[0],

sketchPlaneSide=SIDE1, sketchOrientation=RIGHT, origin=(55.0, -0.8, 0.0)))

mdb.models['Model-1'].parts['Sheet'].projectReferencesOntoSketch(filter=

COPLANAR_EDGES, sketch=mdb.models['Model-1'].sketches['__profile__'])

mdb.models['Model-1'].sketches['__profile__'].Line(point1=(4.0, 0.8), point2=(

4.0, -0.8))

mdb.models['Model-1'].sketches['__profile__'].VerticalConstraint(addUndoState=

False, entity=mdb.models['Model-1'].sketches['__profile__'].geometry[7])

mdb.models['Model-1'].sketches['__profile__'].PerpendicularConstraint(

addUndoState=False, entity1=

mdb.models['Model-1'].sketches['__profile__'].geometry[2], entity2=

mdb.models['Model-1'].sketches['__profile__'].geometry[7])

mdb.models['Model-1'].sketches['__profile__'].CoincidentConstraint(

addUndoState=False, entity1=

Page 112: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

ANEXO C

94

94

mdb.models['Model-1'].sketches['__profile__'].vertices[4], entity2=

mdb.models['Model-1'].sketches['__profile__'].geometry[2])

mdb.models['Model-1'].sketches['__profile__'].CoincidentConstraint(

addUndoState=False, entity1=

mdb.models['Model-1'].sketches['__profile__'].vertices[5], entity2=

mdb.models['Model-1'].sketches['__profile__'].geometry[4])

mdb.models['Model-1'].sketches['__profile__'].HorizontalDimension(textPoint=(

13.8909530639648, -2.5391740322113), value=20.0, vertex1=

mdb.models['Model-1'].sketches['__profile__'].vertices[5], vertex2=

mdb.models['Model-1'].sketches['__profile__'].vertices[3])

mdb.models['Model-1'].parts['Sheet'].PartitionFaceBySketch(faces=

mdb.models['Model-1'].parts['Sheet'].faces.getSequenceFromMask(('[#1 ]', ),

), sketch=mdb.models['Model-1'].sketches['__profile__'])

del mdb.models['Model-1'].sketches['__profile__']

m02_Blankholder.py

### PART: Blankholder ###

mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=200.0)

mdb.models['Model-1'].sketches['__profile__'].sketchOptions.setValues(

viewStyle=AXISYM)

mdb.models['Model-1'].sketches['__profile__'].ConstructionLine(point1=(0.0,

-100.0), point2=(0.0, 100.0))

mdb.models['Model-1'].sketches['__profile__'].FixedConstraint(entity=

mdb.models['Model-1'].sketches['__profile__'].geometry[2])

mdb.models['Model-1'].sketches['__profile__'].rectangle(point1=(50.0, -t0),

point2=(80.0, -(t0 + blankholder_height)))

mdb.models['Model-1'].sketches['__profile__'].FilletByRadius(curve1=

mdb.models['Model-1'].sketches['__profile__'].geometry[6], curve2=

mdb.models['Model-1'].sketches['__profile__'].geometry[3], nearPoint1=(

58.6883964538574, -1.41037178039551), nearPoint2=(49.953296661377,

-6.41179847717285), radius=blankholder_radius)

mdb.models['Model-1'].Part(dimensionality=AXISYMMETRIC, name='Blankholder', type=

DISCRETE_RIGID_SURFACE)

mdb.models['Model-1'].parts['Blankholder'].BaseWire(sketch=

mdb.models['Model-1'].sketches['__profile__'])

del mdb.models['Model-1'].sketches['__profile__']

Page 113: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

95

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

# Reference point

mdb.models['Model-1'].parts['Blankholder'].ReferencePoint(point=

mdb.models['Model-1'].parts['Blankholder'].vertices[1])

m03_Tool1

### PART: Forming Tool 1 (for hole-flanging in 1 stage) ###

tool1_height= R_tool+1

Rf_up=Rf

Rf_bot= Rf-R_tool

tool1_width= Rf

mdb.models['Model-1'].ConstrainedSketch(name='__profile__', sheetSize=200.0)

mdb.models['Model-1'].sketches['__profile__'].sketchOptions.setValues(viewStyle=AXISYM)

mdb.models['Model-1'].sketches['__profile__'].ConstructionLine(point1=(0.0, -100.0), point2=(0.0, 100.0))

mdb.models['Model-1'].sketches['__profile__'].FixedConstraint(entity=mdb.models['Model-

1'].sketches['__profile__'].geometry[2])

mdb.models['Model-1'].sketches['__profile__'].Line(point1=(0.0, 1.0), point2=(tool1_width, 1.0))

mdb.models['Model-1'].sketches['__profile__'].HorizontalConstraint(

addUndoState=False, entity=

mdb.models['Model-1'].sketches['__profile__'].geometry[3])

mdb.models['Model-1'].sketches['__profile__'].Line(point1=(tool1_width, 1.0), point2=(tool1_width,

tool1_height + 1.0))

mdb.models['Model-1'].sketches['__profile__'].VerticalConstraint(addUndoState=

False, entity=mdb.models['Model-1'].sketches['__profile__'].geometry[4])

mdb.models['Model-1'].sketches['__profile__'].PerpendicularConstraint(

addUndoState=False, entity1=

mdb.models['Model-1'].sketches['__profile__'].geometry[3], entity2=

mdb.models['Model-1'].sketches['__profile__'].geometry[4])

mdb.models['Model-1'].sketches['__profile__'].Line(point1=(tool1_width, tool1_height + 1.0), point2=(0.0,

tool1_height + 1.0))

mdb.models['Model-1'].sketches['__profile__'].HorizontalConstraint(

addUndoState=False, entity=

mdb.models['Model-1'].sketches['__profile__'].geometry[5])

mdb.models['Model-1'].sketches['__profile__'].PerpendicularConstraint(

addUndoState=False, entity1=

mdb.models['Model-1'].sketches['__profile__'].geometry[4], entity2=

mdb.models['Model-1'].sketches['__profile__'].geometry[5])

mdb.models['Model-1'].sketches['__profile__'].FilletByRadius(curve1=

Page 114: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

ANEXO C

96

96

mdb.models['Model-1'].sketches['__profile__'].geometry[3], curve2=

mdb.models['Model-1'].sketches['__profile__'].geometry[4], nearPoint1=(

Rf_bot,1), nearPoint2=(Rf,

1+R_tool), radius=R_tool)

mdb.models['Model-1'].Part(dimensionality=AXISYMMETRIC, name=tool,

type=DISCRETE_RIGID_SURFACE)

mdb.models['Model-1'].parts[tooling[i]].BaseWire(sketch=mdb.models['Model-1'].sketches['__profile__'])

del mdb.models['Model-1'].sketches['__profile__']

# Reference point

mdb.models['Model-1'].parts[tooling[i]].ReferencePoint(point=(tool1_width - R_tool, 1.0, 0.0))

m04_Material.py

# Data from file: tableElastic, tablePlastic

mdb.models['Model-1'].Material(name='AA7075-O')

mdb.models['Model-1'].materials['AA7075-O'].Elastic(tableElastic)

mdb.models['Model-1'].materials['AA7075-O'].Plastic(tablePlastic)

# Section

mdb.models['Model-1'].HomogeneousSolidSection(material='AA7075-O', name=

'Section-AA7075-O', thickness=None)

# Section assignment

mdb.models['Model-1'].parts['Sheet'].SectionAssignment(offset=0.0, offsetField=

'', offsetType=MIDDLE_SURFACE, region=Region(

faces=mdb.models['Model-1'].parts['Sheet'].faces.getSequenceFromMask(mask=(

'[#3 ]', ), )), sectionName='Section-AA7075-O', thicknessAssignment=

FROM_SECTION)

m04_Sets.py

## SETS ###

# Sheet top and bottom surfaces

mdb.models['Model-1'].parts['Sheet'].Set(edges=

mdb.models['Model-1'].parts['Sheet'].edges.getSequenceFromMask(('[#2 ]', ),

), name='Set-Top-Surface')

mdb.models['Model-1'].parts['Sheet'].Set(edges=

mdb.models['Model-1'].parts['Sheet'].edges.getSequenceFromMask(('[#8 ]', ),

), name='Set-Bottom-Surface')

Page 115: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

97

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

m05_Mesh.py

sheet_mesh_size = 0.5

blankholder_mesh_size = 0.1

tools_mesh_size = 0.1

mdb.models['Model-1'].parts['Sheet'].seedPart(deviationFactor=0.1, size=sheet_mesh_size)

mdb.models['Model-1'].parts['Sheet'].generateMesh()

mdb.models['Model-1'].parts['Blankholder'].seedPart(deviationFactor=0.1, size=blankholder_mesh_size)

mdb.models['Model-1'].parts['Blankholder'].generateMesh()

for i in range(len(tooling)):

tool=tooling[i]

mdb.models['Model-1'].parts[tool].seedPart(deviationFactor=0.1, size=tools_mesh_size)

mdb.models['Model-1'].parts[tool].generateMesh()

m06_Assembly.py

### ASSEMBLY ###

mdb.models['Model-1'].rootAssembly.DatumCsysByThreePoints(coordSysType=

CYLINDRICAL, origin=(0.0, 0.0, 0.0), point1=(1.0, 0.0, 0.0), point2=(0.0,

0.0, -1.0))

mdb.models['Model-1'].rootAssembly.Instance(dependent=ON, name='Sheet-1', part=

mdb.models['Model-1'].parts['Sheet'])

mdb.models['Model-1'].rootAssembly.Instance(dependent=ON, name='Blankholder-1',

part=mdb.models['Model-1'].parts['Blankholder'])

for i in range(len(tooling)):

tool=tooling[i]

mdb.models['Model-1'].rootAssembly.Instance(dependent=ON, name=tool,

part=mdb.models['Model-1'].parts[tool]

m07_Steps_HF1stage.py

### STEPS ###

mdb.models['Model-1'].StaticStep(initialInc=1e-15, maxInc=0.1, maxNumInc=100000

, minInc=1e-25, name='Step-1-Forming', previous='Initial', timePeriod=10)

mdb.models['Model-1'].steps['Step-1-Forming'].setValues(nlgeom=ON)

Page 116: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

ANEXO C

98

98

# Field outputs: SETS for sheet top and bottom surfaces

mdb.models['Model-1'].FieldOutputRequest(createStepName='Step-1-Forming'

, frequency=LAST_INCREMENT, name='F-Output-Bottom-Surface', rebar=EXCLUDE, region=

mdb.models['Model-1'].rootAssembly.instances['Sheet-1'].sets['Set-Bottom-Surface']

, sectionPoints=DEFAULT, variables=('U', ))

mdb.models['Model-1'].FieldOutputRequest(createStepName='Step-1-Forming'

, frequency=LAST_INCREMENT, name='F-Output-Top-Surface', rebar=EXCLUDE,

region=

mdb.models['Model-1'].rootAssembly.instances['Sheet-1'].sets['Set-Top-Surface']

, sectionPoints=DEFAULT, variables=('U', ))

m08_Contacts.py

### CONTACTS ###

tools_friction = 0.3

# Contact properties

mdb.models['Model-1'].ContactProperty('ContactProp-Blankholder')

mdb.models['Model-1'].interactionProperties['ContactProp-Blankholder'].TangentialBehavior(

formulation=FRICTIONLESS)

mdb.models['Model-1'].interactionProperties['ContactProp-Blankholder'].NormalBehavior(

allowSeparation=ON, constraintEnforcementMethod=DEFAULT,

pressureOverclosure=HARD)

mdb.models['Model-1'].ContactProperty('ContactProp-Tool')

mdb.models['Model-1'].interactionProperties['ContactProp-Tool'].TangentialBehavior(

dependencies=0, directionality=ISOTROPIC, elasticSlipStiffness=None,

formulation=PENALTY, fraction=0.005, maximumElasticSlip=FRACTION,

pressureDependency=OFF, shearStressLimit=None, slipRateDependency=OFF,

table=((tools_friction, ), ), temperatureDependency=OFF)

mdb.models['Model-1'].interactionProperties['ContactProp-Tool'].NormalBehavior(

allowSeparation=ON, constraintEnforcementMethod=DEFAULT,

pressureOverclosure=HARD)

# Contacts

mdb.models['Model-1'].SurfaceToSurfaceContactStd(adjustMethod=NONE,

clearanceRegion=None, createStepName='Initial', datumAxis=None,

Page 117: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

99

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

initialClearance=OMIT, interactionProperty='ContactProp-Blankholder',

master=Region(

side1Edges=mdb.models['Model-1'].rootAssembly.instances['Blankholder-

1'].edges.getSequenceFromMask(

mask=('[#2 ]', ), ),

side2Edges=mdb.models['Model-1'].rootAssembly.instances['Blankholder-

1'].edges.getSequenceFromMask(

mask=('[#13 ]', ), )), name='Contact-Blankholder', slave=Region(

side1Edges=mdb.models['Model-1'].rootAssembly.instances['Sheet-1'].edges.getSequenceFromMask(

mask=('[#18 ]', ), )), sliding=FINITE, thickness=ON)

for i in range(len(tooling)):

tool=tooling[i]

mdb.models['Model-1'].SurfaceToSurfaceContactStd(adjustMethod=NONE,

clearanceRegion=None, createStepName='Initial', datumAxis=None,

initialClearance=OMIT, interactionProperty='ContactProp-Tool', master=

Region(

side2Edges=mdb.models['Model-1'].rootAssembly.instances[tool].edges.getSequenceFromMask(

mask=('[#7 ]', ), )), name='Contact'+ tool, slave=RegionsideEdges=mdb.models['Model-

1'].rootAssembly.instances['Sheet-1'].edges.getSequenceFromMask(

mask=('[#6 ]', ), )), sliding=FINITE, thickness=ON)

m09_BC-Initial.py

### BOUNDARY CONDITIONS ###

# STEP 1: Encastre

mdb.models['Model-1'].EncastreBC(createStepName='Initial', name=

'BC-1-Encastre-Blankholder', region=Region(referencePoints=(

mdb.models['Model-1'].rootAssembly.instances['Blankholder-1'].referencePoints[2], )))

mdb.models['Model-1'].EncastreBC(createStepName='Initial', name=

'BC-2-Encastre-Sheet', region=Region(

edges=mdb.models['Model-1'].rootAssembly.instances['Sheet-1'].edges.getSequenceFromMask(

mask=('[#40 ]', ), )))

m09_BC-HF1stage.py

### BOUNDARY CONDITIONS ###

# Amplitude: data_toolpath

# STEP 2: Un-encastre and move tool

mdb.models['Model1'].TabularAmplitude(data=data_toolpath,name='Amp1',smooth=SOLVER_DEFAULT,ti

Page 118: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

ANEXO C

100

100

meSpan=STEP)

for i in range(len(tooling)):

tool=tooling[i]

mdb.models['Model-1'].DisplacementBC(amplitude='Amp-1', createStepName=

'Step-1-Forming', distributionType=UNIFORM, fieldName='', fixed=OFF,

localCsys=None, name='BC-4-Move-'+tool, region=Region(referencePoints=(

mdb.models['Model-1'].rootAssembly.instances[tool].referencePoints[2], )), u1=0.0, u2=0.0, ur3=0.0)

m10_Job.py

## JOB AND CALCULATE ###

#Set the value of my BC in the current tool

mdb.models['Model-1'].boundaryConditions['BC-4-Move-'+tool].setValues(u2=1)

mdb.Job(atTime=None, contactPrint=OFF, description='', echoPrint=OFF,

explicitPrecision=SINGLE, getMemoryFromAnalysis=True, historyPrint=OFF,

memory=90, memoryUnits=PERCENTAGE, model='Model-1', modelPrint=OFF,

multiprocessingMode=DEFAULT, name=jobname,

nodalOutputPrecision=SINGLE, numCpus=4, numDomains=4, queue=None, scratch=

'', type=ANALYSIS, userSubroutine='', waitHours=0, waitMinutes=0)

mdb.jobs[jobname].submit(consistencyChecking=OFF)

mdb.jobs[jobname].waitForCompletion()

mdb.models['Model-1'].boundaryConditions['BC-4-Move-'+tool].setValues(u2=0)

b. Macro pre4-fea-hole definition.py

from part import *

from material import *

from section import *

from assembly import *

from step import *

from interaction import *

from load import *

from mesh import *

from job import *

from sketch import *

Page 119: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

101

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

from visualization import *

from connectorBehavior import *

#import os

dirPaths = "gen2-tool-path/"

dirFEA = "pre4-fea-definition/"

execfile(dirFEA + "func_auxiliar.py")

dirResults = 'gen4-sheet-thickness/'

params = get_text_from_file(dirFEA + "params.txt")

R = []

tooling = []

for i in range(len(params)):

R.append(float(params[i][0]))

tooling.append(params[i][1])

t0=1.6

tf=1.6

Rf = 50 - tf

blankholder_height = 25

blankholder_radius = 1

### PARTS ###

execfile(dirFEA + "m01_Sheet.py")

execfile(dirFEA + "m02_Blankholder.py")

for i in range(len(R)):

R_tool=R[i]

tool=tooling[i]

execfile(dirFEA + "m03_Tool1.py")

### MATERIAL AND SECTION ###

tableElastic = get_data_from_file(dirFEA + "AA7075O-Elastic.txt")

tablePlastic = get_data_from_file(dirFEA + "AA7075O-Hollomon314n13.txt")

execfile(dirFEA + "m04_Material.py")

### SETS ###

Page 120: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

ANEXO C

102

102

execfile(dirFEA + "m04_Sets.py")

### MESH ###

execfile(dirFEA + "m05_Mesh.py")

### ASSEMBLY ###

execfile(dirFEA + "m06_Assembly.py")

### STEPS AND FIELD OUTPUTS ###

execfile(dirFEA + "m07_Steps_HF1stage.py")

### CONTACTS ###

execfile(dirFEA + "m08_Contacts.py")

### BOUNDARY CONDITIONS ###

execfile(dirFEA + "m09_BC-Initial.py")

data_toolpath = get_data_from_file(dirPaths + "tool-path-Z.csv")

execfile(dirFEA + "m09_BC_HF1stage.py")

### JOB AND CALCULATE ###

for i in range(len(tooling)):

tool=tooling[i]

jobname = 'gen3-HF1st-R_tool' + tool

execfile(dirFEA + "m10_Job.py")

### OUTPUT ###

execfile("pre5-fea-results.py")

### Thickness calculation

for i in range(len(tooling)):

tool=tooling[i]

execfile("scr7-calculate-sheet-thickness.py")

execfile("scr8-draw-graph.py")

c. Macro pre5-fea-hole definition.py

dirResults = 'gen4-sheet-thickness/'

for i in range(len(tooling)):

tool=tooling[i]

jobname = 'gen3-HF1st-R_tool' + tool

odb_filename = jobname + '.odb'

image2 = dirResults + 'gen4-PEEQ-' + str(tool)

image3 = dirResults + 'gen4-SMises-' + str(tool)

top_displ_filename = dirResults + 'gen4-U-top-' + str(tool) + '.rpt'

bot_displ_filename = dirResults + 'gen4-U-bottom-' + str(tool) + '.rpt'

Page 121: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

103

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

# open modulus, create viewport and open odb

from abaqus import *

from abaqusConstants import *

session. Viewport (name='Viewport: 1', origin=(0.0, 0.0),

width=177.540267944336,height=127.15885925293)

session.viewports['Viewport: 1'].makeCurrent()

session.viewports['Viewport: 1'].maximize()

from caeModules import *

from driverUtils import executeOnCaeStartup

executeOnCaeStartup()

session.viewports['Viewport: 1'].partDisplay.geometryOptions.setValues(referenceRepresentation=ON)

o1 = session.openOdb(name=odb_filename)

session.viewports['Viewport: 1'].setValues(displayedObject=o1)

session.viewports['Viewport: 1'].odbDisplay.display.setValues(plotState=(CONTOURS_ON_DEF, )

# Plot the strain in the deformed sheet: PE Max. In-Plane Principal

# Plot options: 0-0.5

# Export image to file

session.viewports['Viewport: 1'].odbDisplay.setPrimaryVariable(variableLabel='PEEQ',

outputPosition=INTEGRATION_POINT, )

session.viewports['Viewport: 1'].odbDisplay.contourOptions.setValues(maxAutoCompute=OFF,

maxValue=0.8, minAutoCompute=OFF, minValue=0.0)

session.printToFile(fileName=image2, format=SVG, canvasObjects=(session.viewports['Viewport: 1'], ))

session.printToFile(fileName=image2, format=PNG, canvasObjects=(session.viewports['Viewport: 1'], ))

# Plot the Mises stress in the deformed sheet: S Mises

# Plot options: 0-220

# Export image to file

session.viewports['Viewport: 1'].setValues(displayedObject=o1)

session.viewports['Viewport: 1'].odbDisplay.setPrimaryVariable(variableLabel='S',

outputPosition=INTEGRATION_POINT, refinement=(INVARIANT, 'Mises'), )

session.viewports['Viewport: 1'].odbDisplay.contourOptions.setValues(maxAutoCompute=OFF,

maxValue=320, minAutoCompute=OFF, minValue=0.0)

session.printToFile(fileName=image3, format=SVG, canvasObjects=(session.viewports['Viewport: 1'], ))

session.printToFile(fileName=image3, format=PNG, canvasObjects=(session.viewports['Viewport: 1'], ))

# NODES SELECTION

# Tools > path > create > node list

session.Path(name='Path-Top-Surface', type=NODE_LIST, expression=(('SHEET-1', (3, '67:26:-1', )), ))

session.Path(name='Path-Bottom-Surface', type=NODE_LIST, expression=(('SHEET-1', (4, '70:111:1', )), ))

Page 122: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

ANEXO C

104

104

pthT = session.paths['Path-Top-Surface']

pthT = session.paths['Path-Top-Surface']

pthB = session.paths['Path-Bottom-Surface']

# Path-Top-Surface: get U1, U2

session.viewports['Viewport: 1'].odbDisplay.setPrimaryVariable(variableLabel='U', outputPosition=NODAL,

refinement=(COMPONENT, 'U1'))

session.XYDataFromPath(name='Top-U1', path=pthT, includeIntersections=False, shape=DEFORMED,

labelType=TRUE_DISTANCE)

session.XYDataFromPath(name='Bottom-U1', path=pthB, includeIntersections=False, shape=DEFORMED,

labelType=TRUE_DISTANCE)

session.viewports['Viewport: 1'].odbDisplay.setPrimaryVariable(variableLabel='U', outputPosition=NODAL,

refinement=(COMPONENT, 'U2'))

session.XYDataFromPath(name='Top-U2', path=pthT, includeIntersections=False, shape=DEFORMED,

labelType=TRUE_DISTANCE)

session.XYDataFromPath(name='Bottom-U2', path=pthB, includeIntersections=False, shape=DEFORMED,

labelType=TRUE_DISTANCE)

# Export to file

x0 = session.xyDataObjects['Top-U1']

x1 = session.xyDataObjects['Top-U2']

session.writeXYReport(fileName=top_displ_filename, appendMode=OFF, xyData=(x0, x1))

x2 = session.xyDataObjects['Bottom-U1']

x3 = session.xyDataObjects['Bottom-U2']

session.writeXYReport(fileName=bot_displ_filename, appendMode=OFF, xyData=(x2, x3))

d. Macro scr7-calculate-sheet-thickness.py

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

import math

def distance(p1, p2):

"""

Distance between two 2D-points

"""

return math.sqrt((p1[0] - p2[0])**2 + (p1[1] - p2[1])**2)

Page 123: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

105

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

def middle_point(p1, p2):

"""

Middle point between two 2D-points

"""

x = (p1[0] + p2[0])/2

y = (p1[1] + p2[1])/2

return x, y

def line(p1, p2):

"""

2D-line: A*x + B*y = C Returns coefficients A, B, -C

"""

A = (p1[1] - p2[1])

B = (p2[0] - p1[0])

C = (p1[0]*p2[1] - p2[0]*p1[1])

return A, B, -C

def intersection(L1, L2):

"""

Returns a 2D-point [x,y] or False if lines are parallel

"""

D = L1[0] * L2[1] - L1[1] * L2[0]

Dx = L1[2] * L2[1] - L1[1] * L2[2]

Dy = L1[0] * L2[2] - L1[2] * L2[0]

if D != 0:

x = Dx / D

y = Dy / D

return x, y

else:

return False

def perpendicular(L, p):

A = L[0]

B = L[1]

#C = L[2]

if A==0: # horizontal --> vertical

return 1, 0, p[0]

else:

Page 124: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

ANEXO C

106

106

if B==0: # vertical --> horizontal

return 0, 1, p[1]

else:

return -B, A, A*p[1] - B*p[0]

def average_distance(t1, t2, b1, b2):

"""

Calculates el average distace between two straight lines Lines are defined by end points t1-t2 and b1-b2

"""

m1 = middle_point(t1, b1)

m2 = middle_point(t2, b2)

lm = line(m1, m2)

mp = middle_point(m1, m2)

lp = perpendicular(lm, mp)

lt = line(t1, t2)

pt = intersection(lt, lp)

lb = line(b1, b2)

pb = intersection(lb, lp)

return distance(pt, pb)

def thickness(t, b):

"""

Arguments: 2 arrays for displacements of top and bottom surfacesm,since the initial undeformed sheet was

flat, U2 needs to be fitted.Thus, the bottom surface is fitted as U2 = U2 - t0.The 'average thickness' applied to

displacements yields a factor.Real thickness is calculated from t0 multiplied by the factor

"""

a = []

t0 = 1.6 # Initial undeformed sheet thickness

for i in range(len(t)-1):

t1 = t[i]

t2 = t[i+1]

b1 = b[i]

b2 = b[i+1]

b1[1] = b1[1] - t0

b2[1] = b2[1] - t0

#print(t1, t2, b1, b2)

a.append(t0 * average_distance(t1, t2, b1, b2))

return a

Page 125: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

107

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

def get_data(filename):

"""

Returns a list with data: U1, U2

"""

a = []

with open(filename) as f:

cont = 0

str = f.readline()

str = f.readline()

str = f.readline()

for line in f:

cont = cont+1

str = ' '.join(line.split()) # Collapse multiple spaces into one

if str !='':

x, u1, u2 = str.split()

u1 = round(float(u1), 3)

u2 = round(float(u2), 3)

a.append([u1, u2])

return a

def calculate_thickness(tool):

dirPaths = 'gen4-sheet-thickness/'

file_bot = dirPaths + 'gen4-U-bottom-' + str(tool) + '.rpt'

file_top = dirPaths + 'gen4-U-top-' + str(tool) + '.rpt'

file_thickness = dirPaths + 'gen4-thickness-' + str(tool) + '.csv'

data_bot = get_data(file_bot)

data_top = get_data(file_top)

t = thickness(data_top, data_bot)

f = open(file_thickness, 'w')

#f.write('U2_top, thickness\n')

for i in range(len(t)):

f.write('%.3f, %.3f\n' % (-data_top[i][1], t[i]))

f.close()

calculate_thickness(tool)

Page 126: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

ANEXO C

108

108

e. Macro scr8-draw-graph.py

#!/usr/bin/env python3

# -*- coding: utf-8 -*-

import numpy as np

import matplotlib.pyplot as plt

dirFEA = "pre4-fea-definition/"

dirPaths = 'gen4-sheet-thickness/'

dirGraphs = 'gen5-graph/'

def get_text_from_file(filename):

"""

Returns a list of floats from a text file with spaces or tabs as delimiters

"""

with open(filename) as f:

coords = []

for line in f:

if line!="\n":

coord = []

for string in line.split():

coord.append(string)

coords.append(coord)

return coords

#===============================================================

#===============================================================

params = get_text_from_file(dirFEA + "params.txt")

R = []

tooling = []

for i in range(len(params)):

R.append(params[i][0])

tooling.append(params[i][1])

plt.rcParams["figure.figsize"] = (4, 6)

Page 127: Proyecto Fin de Carrera Ingeniería Aeronáuticabibing.us.es/proyectos/abreproy/60419/fichero/PFC... · b. Macros módulo Machining aplicación AD/ AM a un proceso de conformado incremental

109

Programación de macros en CATIA V5 y Abaqus para el análisis de conformado de chapa

plt.rcParams["figure.figsize"] = (3.54, 5)

plt.rcParams["figure.figsize"] = (3.2, 3.3)

plt.rcParams["font.family"] = 'sans-serif'

plt.rcParams["font.sans-serif"] = 'Arial, Helvetica, sans-serif'

plt.rcParams["font.size"] = 12

plt.rcParams["figure.subplot.left"] = 0.24

plt.rcParams["figure.subplot.right"] = 0.95

plt.rcParams["figure.subplot.bottom"] = 0.13

plt.rcParams["figure.subplot.top"] = 0.97

plt.rcParams["axes.labelsize"] = 'medium'

plt.rcParams["legend.fontsize"] = 'medium'

fig, ax = plt.subplots()

for i in range(len(R)):

R_tool = R[i]

tool = tooling[i]

file = dirPaths + 'gen4-thickness-' + tool + '.csv'

x,y =np.loadtxt(file, unpack = True, delimiter = ',')

ax.plot(y, x, label=tool)

#plt.title('Hole-flanging by press working in 2 stages')

plt.ylabel('Distance along the flange')

plt.xlabel('Flange thickness')

plt.axis([0, 1.6, 0, 25])

plt.xticks((0, 0.4, 0.8, 1.2, 1.6))

ax.legend(loc='lower left', shadow=True, title='Tool radius (in mm)')

plt.savefig(dirGraphs + 'thickness.png', dpi=300, format='png')

plt.savefig(dirGraphs + 'thickness.svg', dpi=300, format='svg')