14
109 Anexo I Código de la Aplicación Alejandro Martín Garrido Aplicación para la generación y exportación CAD automática de planos en Catia V5 a partir de ficheros Part Anexo I Código de la Aplicación A continuación se desarrolla el código completo de la aplicación ordenado por los módulos que lo componen. Se encuentra en orden alfabético y comentado en algunas líneas. A_Dra_Form '######################################################### '# PFC: Aplicación para la generación y exportación CAD # '# automática de planos en Catia V5 a partir de # '# ficheros Part # '# Autor: Alejandro MARTIN GARRIDO # '# Tutora: Cristina TORRECILLAS LOZANO # '######################################################### Private Sub UserForm_Initialize() 'Establecemos las entradas preconfiguradas desde el archivo TXT Dim precon() As String precon = L_txt 'matriz de caracteres generada 'Configuramos los textos con límite de caracteres TextBox1.Text = Left(precon(0), 21) TextBox1.MaxLength = 21 TextBox2.Text = Left(precon(1), 21) TextBox2.MaxLength = 21 TextBox3.Text = Left(precon(2), 21) TextBox3.MaxLength = 21 TextBox4.Text = Left(precon(3), 18) TextBox4.MaxLength = 18 TextBox5.Text = Left(precon(4), 25) TextBox5.MaxLength = 25 TextBox9.Text = precon(5) TextBox6 = Date 'Fecha de la realización TextBox7 = Date TextBox8 = Date End Sub 'Selección de la ruta de salida de los CATDrawings y archivos asociados Private Sub CommandButton5_Click() Dim ruta As String ruta = Ob_Dir TextBox9.Text = ruta & "\" End Sub 'Establecimiento de la configuración Private Sub CommandButton3_Click() 'Variables de control de proceso Dim Ax As String Dim Bo_pdf As Boolean Dim Bo_dwg As Boolean Dim Bo_th As Boolean

Anexo I Código de la Aplicación - Universidad de Sevillabibing.us.es/proyectos/abreproy/60198/descargar_fichero/...Dim Vistas3 As DrawingViews Vistas3 = Hoja3.Views Dim EjesI As

  • Upload
    others

  • View
    2

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Anexo I Código de la Aplicación - Universidad de Sevillabibing.us.es/proyectos/abreproy/60198/descargar_fichero/...Dim Vistas3 As DrawingViews Vistas3 = Hoja3.Views Dim EjesI As

109

Anexo I Código de la Aplicación

Alejandro Martín Garrido Aplicación para la generación y exportación CAD automática de planos en

Catia V5 a partir de ficheros Part

Alejandro Martín Garrido

Anexo I Código de la Aplicación

A continuación se desarrolla el código completo de la aplicación ordenado por los módulos

que lo componen. Se encuentra en orden alfabético y comentado en algunas líneas.

A_Dra_Form

'#########################################################

'# PFC: Aplicación para la generación y exportación CAD #

'# automática de planos en Catia V5 a partir de #

'# ficheros Part #

'# Autor: Alejandro MARTIN GARRIDO #

'# Tutora: Cristina TORRECILLAS LOZANO #

'#########################################################

Private Sub UserForm_Initialize()

'Establecemos las entradas preconfiguradas desde el archivo TXT

Dim precon() As String

precon = L_txt 'matriz de caracteres generada

'Configuramos los textos con límite de caracteres

TextBox1.Text = Left(precon(0), 21)

TextBox1.MaxLength = 21

TextBox2.Text = Left(precon(1), 21)

TextBox2.MaxLength = 21

TextBox3.Text = Left(precon(2), 21)

TextBox3.MaxLength = 21

TextBox4.Text = Left(precon(3), 18)

TextBox4.MaxLength = 18

TextBox5.Text = Left(precon(4), 25)

TextBox5.MaxLength = 25

TextBox9.Text = precon(5)

TextBox6 = Date 'Fecha de la realización

TextBox7 = Date

TextBox8 = Date

End Sub

'Selección de la ruta de salida de los CATDrawings y archivos

asociados

Private Sub CommandButton5_Click()

Dim ruta As String

ruta = Ob_Dir

TextBox9.Text = ruta & "\"

End Sub

'Establecimiento de la configuración

Private Sub CommandButton3_Click()

'Variables de control de proceso

Dim Ax As String

Dim Bo_pdf As Boolean

Dim Bo_dwg As Boolean

Dim Bo_th As Boolean

Page 2: Anexo I Código de la Aplicación - Universidad de Sevillabibing.us.es/proyectos/abreproy/60198/descargar_fichero/...Dim Vistas3 As DrawingViews Vistas3 = Hoja3.Views Dim EjesI As

110

Anexo I Código de la Aplicación

Alejandro Martín Garrido Aplicación para la generación y exportación CAD automática de planos en

Catia V5 a partir de ficheros Part

Alejandro Martín Garrido

Dim Bo_GenA As Boolean

Dim Ej_Pr As Boolean

Dim Ej_In As Boolean

'Relacionamos las variables y los datos del formulario

Bo_pdf = OptionButton3.Value

Bo_dwg = OptionButton6.Value

Bo_th = OptionButton1.Value

Bo_GenA = OptionButton8.Value

'Sistema de ejes

Ej_Pr = CheckBox1.Value

Ej_In = CheckBox2.Value

'Mensaje de Error si no se elige ninguna opción de ejes

If Ej_Pr = False And Ej_In = False Then

at1 = MsgBox("Tiene que seleccionar al menos uno de los dos

sistemas de ejes para la realización del dibujo.", vbExclamation,

"Atención")

If at1 = vbOK Then Exit Sub

End If

'Selección del modelo de plantilla (tamaño)

Dim UbiDra As String

If Bo_th = False Then

UbiDra = "C:\CATIA_Macros\Dr_A3.CATDrawing"

Else

UbiDra = "C:\CATIA_Macros\Dr_A4.CATDrawing"

End If

'## Fin de la configuración del proceso ##

'Ocultamos el formulario

A_Dra_Form.Hide()

'Variables de control para el bucle

Dim DirPart As String

Dim DirPartm() As String

Dim DirPro() As String

'Abre el cuadro de selección del archivo deseado

Dim UbiArch As String

UbiArch = CATIA.FileSelectionBox("Seleccione el archivo deseado",

"*.CATPart;*.CATProduct", 0)

If UbiArch = "" Then

Exit Sub 'Si se selecciona "Cancelar" el módulo se detiene

Else

'Activación del archivo de trabajo seleccionado para generar

la lista de piezas

Dim Doc1s As Documents

Dim Doc1 As Document

Doc1s = CATIA.Documents

Doc1 = Doc1s.Open(UbiArch)

Doc1 = CATIA.ActiveDocument

'Obtenemos la lista de piezas

DirPartm() = LisPa0()

Page 3: Anexo I Código de la Aplicación - Universidad de Sevillabibing.us.es/proyectos/abreproy/60198/descargar_fichero/...Dim Vistas3 As DrawingViews Vistas3 = Hoja3.Views Dim EjesI As

111

Anexo I Código de la Aplicación

Alejandro Martín Garrido Aplicación para la generación y exportación CAD automática de planos en

Catia V5 a partir de ficheros Part

Alejandro Martín Garrido

'Cerramos el archivo de trabajo una vez obtenida la lista de piezas

Doc1.Close()

'Bucle con el módulo de Auto_Draw que genera los planos

For i = 0 To UBound(DirPartm)

DirPart = DirPartm(i) 'selector de la pieza

Call A_Dra0.A_Dra_1(DirPart, UbiDra, Bo_th, TextBox1.Text,

TextBox2.Text, TextBox3.Text, TextBox4.Text, TextBox5.Text,

TextBox6.Text, TextBox7.Text, TextBox8.Text, Ej_In, Ej_Pr, Bo_pdf,

Bo_dwg, Bo_GenA, TextBox9.Text)

Next

MsgBox("Enhorabuena, el proceso ha finalizado con éxito.",

vbOKOnly, "Fin del Proceso")

End If

End 'Fin del proceso

End Sub

'Opciones del botón Cancelar

Private Sub CommandButton4_Click()

response = MsgBox("¿Desea cerrar el programa?", vbOKCancel +

vbQuestion, "Atención")

If response = vbOK Then End

End Sub

A_Dra

Public Sub A_Dra_1(ByVal UbiPart As String, ByVal UbiDra As String,

ByVal TH As Boolean, ByVal TextBox1 As String, ByVal TextBox2 As

String, ByVal TextBox3 As String, ByVal TextBox4 As String, ByVal

TextBox5 As String, ByVal TextBox6 As String, ByVal TextBox7 As

String, ByVal TextBox8 As String, ByVal Ej_In As Boolean, ByVal Ej_Eu

As Boolean, ByVal opdf As Boolean, ByVal odwg As Boolean, ByVal

Bo_GenDim As Boolean, ByVal DirSave As String) '()

'Establecemos los documentos de trabajao

Dim docs As Documents

Dim PartDoc As Document

Dim oPartDir As String

docs = CATIA.Documents

oPartDir = UbiPart

PartDoc = docs.Open(oPartDir)

PartDoc.Activate()

'Obtenemos la escala a través de su módulo específo

Dim V As Object

Dim esc As Double

Dim escIso As Double

Dim Dir_eje As Double

V = F_Esc_1(TH)

Page 4: Anexo I Código de la Aplicación - Universidad de Sevillabibing.us.es/proyectos/abreproy/60198/descargar_fichero/...Dim Vistas3 As DrawingViews Vistas3 = Hoja3.Views Dim EjesI As

112

Anexo I Código de la Aplicación

Alejandro Martín Garrido Aplicación para la generación y exportación CAD automática de planos en

Catia V5 a partir de ficheros Part

Alejandro Martín Garrido

esc = V(9)

escIso = 0.75 * esc 'Reducimos la escala para la vista isométrica

'Generamos los nombres para el cajetín que faltan

Dim NomPart As String

Dim NomPart2 As String

Dim NomPro As String

NomPart = PartDoc.Name

NomPart2 = Left(NomPart, Len(NomPart) - 8) 'nombre de la pieza

'Se va a comentar el proceso para ejes 0XYZ, el proceso de inerciales

es semejante (sólo se varían los nombres)

'Proceso para ejes clásicos

If Ej_Eu = True Then

'Generamos el nuevo archivo CATDrawing a partir del modelo

Dim DrDoc As DrawingDocument

Dim oDr_dir As String

DrDoc = docs.NewFrom(UbiDra)

'Renombramos el archivo generado

DrDoc.SaveAs(DirSave & NomPart2 & "_Eu.CATDrawing")

DrDoc.Update()

'Establecemos las hojas de trabajo, las vistas y la escala

Dim Hojas As DrawingSheets

Hojas = DrDoc.Sheets

Dim Hoja As DrawingSheet

Hoja = Hojas.ActiveSheet

Hoja.Scale2 = esc

Dim Vistas As DrawingViews

Vistas = Hoja.Views

'Definimos la matriz de direccionalidad del dibujo [v1|v2|v3]

Dim Mat_Eu As Object

Mat_Eu = Array(1, 0, 0, 0, 1, 0, 0, 0, 1)

'Añadimos vistas de dibujo a través del módulo Dib

Call Dib.oDib(Mat_Eu, TH, esc, escIso, PartDoc, Vistas)

'Bucle creador de dimensiones automatizadas

If Bo_GenDim = True Then

Hoja.GenerateDimensions()

Else

End If

'Relleno del Cajetín a través de Dr_Back

Call Dr_Back.Dr_Back(TH, TextBox1, TextBox2, TextBox3,

TextBox4, TextBox5, TextBox6, TextBox7, TextBox8, NomPart2)

DrDoc.Update()

'Exportación en pdf o DWG

Dim spdf As String

Dim sdwg As String

spdf = DirSave & NomPart2 & "_Eu.pdf"

sdwg = DirSave & NomPart2 & "_Eu.dwg"

If opdf = True Then

DrDoc.ExportData(spdf, "pdf")

End If

Page 5: Anexo I Código de la Aplicación - Universidad de Sevillabibing.us.es/proyectos/abreproy/60198/descargar_fichero/...Dim Vistas3 As DrawingViews Vistas3 = Hoja3.Views Dim EjesI As

113

Anexo I Código de la Aplicación

Alejandro Martín Garrido Aplicación para la generación y exportación CAD automática de planos en

Catia V5 a partir de ficheros Part

Alejandro Martín Garrido

If odwg = True Then

DrDoc.ExportData(sdwg, "dwg")

End If

'Finalización del proceso:

DrDoc.Update() 'actualización

DrDoc.Save() 'salvado

DrDoc.Close() 'cierre

End If

'Proceso para ejes Inerciales

If Ej_In = True Then

Dim DrDocI As DrawingDocument

Dim oDr_dirI As String

DrDocI = docs.NewFrom(UbiDra)

DrDocI.SaveAs(DirSave & NomPart2 & "_EI.CATDrawing")

DrDocI.Update()

Dim Hojas3 As DrawingSheets

Hojas3 = DrDocI.Sheets

Dim Hoja3 As DrawingSheet

Hoja3 = Hojas3.ActiveSheet

Hoja3.Scale2 = esc

Dim Vistas3 As DrawingViews

Vistas3 = Hoja3.Views

Dim EjesI As Object

EjesI = Ej_Pri_0()

Call Dib.oDib(EjesI, TH, esc, escIso, PartDoc, Vistas3)

If Bo_GenDim = True Then

Hoja3.GenerateDimensions()

Else

End If

Call Dr_Back.Dr_Back(TH, TextBox1, TextBox2, TextBox3,

TextBox4, TextBox5, TextBox6, TextBox7, TextBox8, NomPart2)

DrDocI.Update()

Dim spdfI As String

Dim sdwgI As String

spdfI = DirSave & NomPart2 & "_EI.pdf"

sdwgI = DirSave & NomPart2 & "_EI.dwg"

If opdf = True Then

DrDocI.ExportData(spdfI, "pdf")

End If

If odwg = True Then

DrDocI.ExportData(sdwgI, "dwg")

End If

DrDocI.Update()

DrDocI.Save()

DrDocI.Close()

Else

Page 6: Anexo I Código de la Aplicación - Universidad de Sevillabibing.us.es/proyectos/abreproy/60198/descargar_fichero/...Dim Vistas3 As DrawingViews Vistas3 = Hoja3.Views Dim EjesI As

114

Anexo I Código de la Aplicación

Alejandro Martín Garrido Aplicación para la generación y exportación CAD automática de planos en

Catia V5 a partir de ficheros Part

Alejandro Martín Garrido

End If

'Cerramos el archivo Part

PartDoc.Close()

End Sub

A_Draw

Public Sub CATMain() 'Establece Catia como programa de trabajo

A_Dra_Form.Show() 'Ejecuta el formulario

End

End Sub

An_BB

Public Sub F_AnBB()

'Establecemos el documento de trabajo

Dim PartDoc As PartDocument

Dim part1 As Part

PartDoc = CATIA.ActiveDocument

part1 = PartDoc.Part

'Definimos la colección de parámetros del documento

Dim Params As Parameters

'Establece el documento activo como seleccionado

Dim selecc As Selection

selecc = CATIA.ActiveDocument.Selection

selecc.Add(part1)

'Ejecuta el comando interno para el documento seleecionado

CATIA.StartCommand("Measure Inertia")

End Sub

Cam_Dir

Public Function Ob_Dir() As String

Dim Dir_G As String 'Ruta de salida

Dim Tit As String 'Cadena de mensaje

Tit = "Seleccione una carpeta por favor" 'mensaje de orden

On Error Resume Next 'por si el usuario pulsa {esc} y no

selecciona nada

With CreateObject("shell.application") 'Aplicación propia de VBA

que permite abrir un explorador

Page 7: Anexo I Código de la Aplicación - Universidad de Sevillabibing.us.es/proyectos/abreproy/60198/descargar_fichero/...Dim Vistas3 As DrawingViews Vistas3 = Hoja3.Views Dim EjesI As

115

Anexo I Código de la Aplicación

Alejandro Martín Garrido Aplicación para la generación y exportación CAD automática de planos en

Catia V5 a partir de ficheros Part

Alejandro Martín Garrido

Dir_G = .BrowseForFolder(0, Titulo, 0, "c:").Items.Item.Path

'Comando que establece la ruta seleccionada

End With : On Error GoTo 0 'Comando de error

If Dir_G = "" Then

'En caso de no seleccionar nada, se abre un mensaje de cancelación

MsgBox("No se ha seleccionado ninguna carpeta.", , "Operación

cancelada")

Else

End If

Ob_Dir = Dir_G 'establecemos el valor de la variable

End Function

Dib

Public Sub oDib(ByVal oEj As Object, ByVal TH As Boolean, ByVal esc As

Double, ByVal escIso As Double, ByVal PartDoc As Document, ByVal

Vistas As DrawingViews)

'Definición de las vistas del dibujo - Alzado, Planta, Perfil e

Isométrica

Dim oV_Alz As DrawingView

Dim oV_Pla As DrawingView

Dim oV_Per As DrawingView

Dim VisIso As DrawingView

If TH = True Then 'Caso A4

'Configuramos las variables de la vista

'Establecemos el nombre, la localización y la escala

oV_Alz = Vistas.Add("Alzado")

oV_Alz.X = 57.5

oV_Alz.Y = 229

oV_Alz.Scale2 = esc

oV_Pla = Vistas.Add("Planta")

oV_Pla.X = 57.5

oV_Pla.Y = 112

oV_Pla.Scale2 = esc

oV_Per = Vistas.Add("Perfil")

oV_Per.X = 162.5

oV_Per.Y = 229

oV_Per.Scale2 = esc

VisIso = Vistas.Add("IsoXYZ")

VisIso.X = 162.5

VisIso.Y = 112

VisIso.Scale2 = escIso

Else 'Caso A3

oV_Alz = Vistas.Add("Alzado")

oV_Alz.X = 112.5

oV_Alz.Y = 224

Page 8: Anexo I Código de la Aplicación - Universidad de Sevillabibing.us.es/proyectos/abreproy/60198/descargar_fichero/...Dim Vistas3 As DrawingViews Vistas3 = Hoja3.Views Dim EjesI As

116

Anexo I Código de la Aplicación

Alejandro Martín Garrido Aplicación para la generación y exportación CAD automática de planos en

Catia V5 a partir de ficheros Part

Alejandro Martín Garrido

oV_Alz.Scale2 = esc

oV_Pla = Vistas.Add("Planta")

oV_Pla.X = 112.5

oV_Pla.Y = 114

oV_Pla.Scale2 = esc

oV_Per = Vistas.Add("Perfil")

oV_Per.X = 307.5

oV_Per.Y = 224

oV_Per.Scale2 = esc

VisIso = Vistas.Add("IsoXYZ")

VisIso.X = 307.5

VisIso.Y = 114

VisIso.Scale2 = escIso

End If

'Objetos generadores de vistas

Dim GValzado As DrawingViewGenerativeBehavior

Dim GVplanta As DrawingViewGenerativeBehavior

Dim GVperfil As DrawingViewGenerativeBehavior

Dim GViso As DrawingViewGenerativeBehavior

'Se define para cada vista su comportamiento

GValzado = oV_Alz.GenerativeBehavior

GValzado.Document = PartDoc 'Pieza dibujada

GValzado.DefineFrontView(oEj(3), oEj(4), oEj(5), oEj(6), oEj(7),

oEj(8)) 'v2;v3 - Dirección de los ejes

GValzado.Update() 'Actualización de la vista

GVplanta = oV_Pla.GenerativeBehavior

GVplanta.Document = PartDoc

GVplanta.DefineFrontView(oEj(3), oEj(4), oEj(5), -oEj(0), -oEj(1),

-oEj(2)) 'v2;-v1

GVplanta.Update()

GVperfil = oV_Per.GenerativeBehavior

GVperfil.Document = PartDoc

GVperfil.DefineFrontView(-oEj(0), -oEj(1), -oEj(2), oEj(6),

oEj(7), oEj(8)) '-v1;v3

GVperfil.Update()

GViso = VisIso.GenerativeBehavior

GViso.Document = PartDoc

'v1+v2 y v1+v3

GViso.DefineIsometricView(oEj(0) + oEj(6), oEj(1) + oEj(7), oEj(2)

+ oEj(8), oEj(6) + oEj(3), oEj(7) + oEj(4), oEj(8) + oEj(5))

GViso.Update()

End Sub

Dr_Back

Public Sub Dr_Back(ByVal TH As Boolean, ByVal TextBox1 As String,

ByVal TextBox2 As String, ByVal TextBox3 As String, ByVal TextBox4 As

String, ByVal TextBox5 As String, ByVal TextBox6 As String, ByVal

TextBox7 As String, ByVal TextBox8 As String, ByVal NomPart2 As

Page 9: Anexo I Código de la Aplicación - Universidad de Sevillabibing.us.es/proyectos/abreproy/60198/descargar_fichero/...Dim Vistas3 As DrawingViews Vistas3 = Hoja3.Views Dim EjesI As

117

Anexo I Código de la Aplicación

Alejandro Martín Garrido Aplicación para la generación y exportación CAD automática de planos en

Catia V5 a partir de ficheros Part

Alejandro Martín Garrido

String)

'Creación de la colección de vistas

Dim BackGr As DrawingView

'Creación de las variables de texto

Dim DrDib As DrawingText

Dim DrDis As DrawingText

Dim DrRev As DrawingText

Dim DrFech1 As DrawingText

Dim DrFech2 As DrawingText

Dim DrFech3 As DrawingText

Dim DrPro As DrawingText

Dim DrEmp As DrawingText

Dim DrPieza As DrawingText

'Activamos el archivo previamente abierto

DrDoc = CATIA.ActiveDocument

'Activamos modo Background

BackGr = DrDoc.Sheets.ActiveSheet.Views.Item(2)

'Rellenamos según el tamaño de la hoja

If TH = False Then 'Caso de tamaño A3

'Creamos el texto en la vista BackGr posicionado

'Configuración de la forma y orientación

'Proceso análogo para el resto

DrDib = BackGr.Texts.Add(TextBox1, 251, 51)

DrDib.SetFontSize(0, 0, 3)

DrDib.AnchorPosition = catMiddleLeft

DrDis = BackGr.Texts.Add(TextBox2, 251, 45)

DrDis.SetFontSize(0, 0, 3)

DrDis.AnchorPosition = catMiddleLeft

DrRev = BackGr.Texts.Add(TextBox3, 251, 39)

DrRev.SetFontSize(0, 0, 3)

DrRev.AnchorPosition = catMiddleLeft

DrFech1 = BackGr.Texts.Add(TextBox6, 301, 51)

DrFech1.SetFontSize(0, 0, 1.8)

DrFech1.AnchorPosition = catMiddleLeft

DrFech2 = BackGr.Texts.Add(TextBox7, 301, 45)

DrFech2.SetFontSize(0, 0, 1.8)

DrFech2.AnchorPosition = catMiddleLeft

DrFech3 = BackGr.Texts.Add(TextBox8, 301, 39)

DrFech3.SetFontSize(0, 0, 1.8)

DrFech3.AnchorPosition = catMiddleLeft

DrPro = BackGr.Texts.Add(TextBox4, 282, 33)

DrPro.SetFontSize(0, 0, 3)

DrPro.AnchorPosition = catMiddleLeft

DrEmp = BackGr.Texts.Add(TextBox5, 280, 20)

DrEmp.SetFontSize(0, 0, 5)

DrEmp.AnchorPosition = catMiddleLeft

DrPieza = BackGr.Texts.Add(NomPart2, 325, 46)

DrPieza.SetFontSize(0, 0, 4)

DrPieza.AnchorPosition = catMiddleLeft

Else 'Caso de tamaño A4

Page 10: Anexo I Código de la Aplicación - Universidad de Sevillabibing.us.es/proyectos/abreproy/60198/descargar_fichero/...Dim Vistas3 As DrawingViews Vistas3 = Hoja3.Views Dim EjesI As

118

Anexo I Código de la Aplicación

Alejandro Martín Garrido Aplicación para la generación y exportación CAD automática de planos en

Catia V5 a partir de ficheros Part

Alejandro Martín Garrido

DrDib = BackGr.Texts.Add(TextBox1, 31, 51)

DrDib.SetFontSize(0, 0, 3)

DrDib.AnchorPosition = catMiddleLeft

DrDis = BackGr.Texts.Add(TextBox2, 31, 45)

DrDis.SetFontSize(0, 0, 3)

DrDis.AnchorPosition = catMiddleLeft

DrRev = BackGr.Texts.Add(TextBox3, 31, 39)

DrRev.SetFontSize(0, 0, 3)

DrRev.AnchorPosition = catMiddleLeft

DrFech1 = BackGr.Texts.Add(TextBox6, 91, 51)

DrFech1.SetFontSize(0, 0, 1.8)

DrFech1.AnchorPosition = catMiddleLeft

DrFech2 = BackGr.Texts.Add(TextBox7, 91, 45)

DrFech2.SetFontSize(0, 0, 1.8)

DrFech2.AnchorPosition = catMiddleLeft

DrFech3 = BackGr.Texts.Add(TextBox8, 91, 39)

DrFech3.SetFontSize(0, 0, 1.8)

DrFech3.AnchorPosition = catMiddleLeft

DrPro = BackGr.Texts.Add(TextBox4, 62, 33)

DrPro.SetFontSize(0, 0, 3)

DrPro.AnchorPosition = catMiddleLeft

DrEmp = BackGr.Texts.Add(TextBox5, 60, 20)

DrEmp.SetFontSize(0, 0, 5)

DrEmp.AnchorPosition = catMiddleLeft

DrPieza = BackGr.Texts.Add(NomPart2, 120, 50)

DrEmp.SetFontSize(0, 0, 4)

DrEmp.AnchorPosition = catMiddleLeft

End If

End Sub

Ej_Pri

Public Function Ej_Pri_0() As Object

'Establecemenos el documento de trabajo

Dim oPartDoc1 As PartDocument

Dim oPart1 As Part

oPartDoc1 = CATIA.ActiveDocument

oPart1 = oPartDoc1.Part

'Creamos y activamos el entorno específico para usar Inertia

Dim EntornoSPA As Workbench

EntornoSPA = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")

'Definimos la colección y el objeto de Inertia

Dim oInercias As Inertias

Dim oInercia As Inertia

oInercias = EntornoSPA.Inertias

oInercia = oInercias.Add(oPart1)

'Establecemos la variable de ejes

Page 11: Anexo I Código de la Aplicación - Universidad de Sevillabibing.us.es/proyectos/abreproy/60198/descargar_fichero/...Dim Vistas3 As DrawingViews Vistas3 = Hoja3.Views Dim EjesI As

119

Anexo I Código de la Aplicación

Alejandro Martín Garrido Aplicación para la generación y exportación CAD automática de planos en

Catia V5 a partir de ficheros Part

Alejandro Martín Garrido

Dim oEjesPrin(8) As Object

oInercia.GetPrincipalAxes(oEjesPrin)

Ej_Pri_0 = oPrinAxes 'Igualamos el valor de la variable

End Function

F_Esc

Public Function F_Esc_1(ByVal TH As Boolean) As Object

'Definición y activación del archivo Part

Dim Vect(10) As Object

Dim PartDoc1 As PartDocument

PartDoc1 = CATIA.ActiveDocument

Dim part1 As Part

part1 = PartDoc1.Part

Call F_AnBB0.F_AnBB() 'Obtención de los tamaños de la pieza

'Definimos la colección de parámetros del documento

Dim Params As Parameters

Params = part1.Parameters

BBLx = Params.Item("BBLx")

BBLy = Params.Item("BBLy")

BBLz = Params.Item("BBLz")

'Convertir los valores de los parámetros

Vect(0) = Params.Item("A1x")

Vect(1) = Params.Item("A1y")

Vect(2) = Params.Item("A1z")

Vect(3) = Params.Item("A2x")

Vect(4) = Params.Item("A2y")

Vect(5) = Params.Item("A2z")

Vect(6) = Params.Item("A3x")

Vect(7) = Params.Item("A3y")

Vect(8) = Params.Item("A3z")

'Selección del tamaño para crear la escala.

'Por configuración de la pieza, si la densidad es constante no es

necesario realizar este desarrollo.

'Se va a dejar por si existiera el caso de piezas con densidad

variable.

'Se considera de partida que el máximo está en 0X y luego cambiamos si

es necesario

Tam_max = BBLx

Tam_med = BBLy

If BBLx.Value >= BBLy.Value Then

If BBLx.Value >= BBLz.Value Then

If BBLy.Value >= BBLz.Value Then

Else

Tam_med = BBLz

End If

Page 12: Anexo I Código de la Aplicación - Universidad de Sevillabibing.us.es/proyectos/abreproy/60198/descargar_fichero/...Dim Vistas3 As DrawingViews Vistas3 = Hoja3.Views Dim EjesI As

120

Anexo I Código de la Aplicación

Alejandro Martín Garrido Aplicación para la generación y exportación CAD automática de planos en

Catia V5 a partir de ficheros Part

Alejandro Martín Garrido

Else

Tam_max = BBLz

Tam_med = BBLx

End If

Else

If BBLy.Value >= BBLz.Value Then

If BBLx.Value >= BBLz.Value Then

Tam_max = BBLy

Tam_med = BBLx

Else

Tam_max = BBLy

Tam_med = BBLz

End If

Else

Tam_max = BBLz

Tam_med = BBLy

End If

End If

'Selección del espacio de la hoja dedicado al dibujo

If TH = True Then 'Opción A4 de 80x80 mm

Ai = Params.CreateDimension("Ai", "Length", 80)

Ai2 = Params.CreateDimension("Ai2", "Length", 80)

Else 'Opción A3 de 190x105 mm

Ai = Params.CreateDimension("Ai", "Length", 190) 'Ancho

Ai2 = Params.CreateDimension("Ai2", "Length", 105) 'Alto

End If

'Creación de la proporcionalidad

tmx = Tam_max.Value

Tme = Tam_med.Value 'Respecto al alto en A3

Aii = Ai.Value

esc1 = Aii / tmx 'Si la escala es mayor de 1 es de ampliación

Aii2 = Ai2.Value

esc2 = Aii2 / Tme

'Escala más restrictiva para el dibujo (sólo funcional para A3)

If esc1 <= 1 Then

If esc2 <= 1 Then

If esc1 < esc2 Then

esc = esc1

Else

esc = esc2

End If

Else

esc = esc1

End If

Else

If esc2 <= 1 Then

esc = esc2

Else

If esc1 < esc2 Then

esc = esc1

Else

esc = esc2

Page 13: Anexo I Código de la Aplicación - Universidad de Sevillabibing.us.es/proyectos/abreproy/60198/descargar_fichero/...Dim Vistas3 As DrawingViews Vistas3 = Hoja3.Views Dim EjesI As

121

Anexo I Código de la Aplicación

Alejandro Martín Garrido Aplicación para la generación y exportación CAD automática de planos en

Catia V5 a partir de ficheros Part

Alejandro Martín Garrido

End If

End If

End If

'Seleccionamos escalas normalizadas para el dibujo UNE-EN ISO 5455

Une = Array(1, 2, 5, 10, 20, 50, 100, 200, 500, 1000, 2000, 5000,

10000, 20000, 50000, 100000) ' valores de Reducción (16)

'Algoritmo discriminador de escalas adecuadas para ampliación o

reducción

'Escala de Ampliación

If esc > 1 Then

For i = 0 To UBound(Une)

If Une(i) <= esc Then

escf = Une(i)

Else

i = UBound(Une)

End If

Next i

Vect(9) = escf

'Escala natural

ElseIf esc = 1 Then Vect(9) = 1

'Escala de Reducción

Else

For k = 0 To UBound(Une)

uneR = 1 / Une(k)

If esc <= uneR Then

Else

escf = uneR

k = UBound(Une) 'Escala encontrada, finaliza el bucle

End If

Next k

Vect(9) = escf

End If

F_Esc_1 = Vect

End Function

Lect_txt

Public Function L_txt() As String()

'Definición de variables de texto

Dim otxtruta As String

Dim olin As String

Dim prueba As String

otxtruta = "C:\CATIA_Macros\Datos_Caj.txt" 'Ruta del archivo TXT

Open otxtruta For Binary As #1 'Config. de la lectura del archivo

'Creación de la matriz de datos con la información del TXT

Page 14: Anexo I Código de la Aplicación - Universidad de Sevillabibing.us.es/proyectos/abreproy/60198/descargar_fichero/...Dim Vistas3 As DrawingViews Vistas3 = Hoja3.Views Dim EjesI As

122

Anexo I Código de la Aplicación

Alejandro Martín Garrido Aplicación para la generación y exportación CAD automática de planos en

Catia V5 a partir de ficheros Part

Alejandro Martín Garrido

Line Input #1, olin

Dim lineas

lineas = Split(olin, " ; ")

'Comprobación de error

If UBound(lineas) > 5 Then

MsgBox("El archivo TXT no está bien configurado. Por favor

siga las instrucciones del manual de usuario", vbCritical, "Error en

la configuración del archivo TXT")

End

Else

L_txt = lineas 'Matriz con las entradas preconfiguradas

Close #1

End If

End Function

LisPa

Public Function LisPa0() As String()

'Activamos el documento de trabajo y su colección

Dim Doc1 As Document

Dim Doc1s As Documents

Doc1s = CATIA.Documents

'Creamos la lista de rutas para las piezas

Dim Lis() As String 'Matriz de texto con las rutas (sin tamaño

predefinido)

For i = 1 To Doc1s.Count 'Bucle de creación de la lista

ReDim Preserve Lis(i) 'Redimensionamiento de la lista para

cada entrada nueva

Lis(i) = Doc1s.Item(i).FullName 'Ruta del documento en la

entrada correpondiente

Next

'Rehacemos la lista para quedarnos sólo con los archivos tipo

*.CATPart y sin que se repitan

Dim LisPart() As String 'Nueva lista sin archivos repetidos

j = 0

'Bucle de filtro

For i = 2 To UBound(Lis)

If Right(Lis(i), 4) = "Part" Then 'Selecciona sólo los

archivos tipo Part

ReDim Preserve LisPart(j) 'Redimensiona la nueva lista

LisPart(j) = Lis(i) 'Los incorpora a la lista nueva

j = j + 1

Else

End If

Next

LisPa0 = LisPart

End Function