RUTA MEMORIAS DE ÁFRICA CONFORT

Anexo I
Código de la Aplicación
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
Alejandro Martín Garrido
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
109
Anexo I
Código de la Aplicación
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()
Alejandro Martín Garrido
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
110
Anexo I
Código de la Aplicación
'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)
Alejandro Martín Garrido
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
111
Anexo I
Código de la Aplicación
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
Alejandro Martín Garrido
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
112
Anexo I
Código de la Aplicación
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
Alejandro Martín Garrido
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
113
Anexo I
Código de la Aplicación
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")
que permite abrir un explorador
Alejandro Martín Garrido
Alejandro Martín Garrido
'Aplicación propia de VBA
Aplicación para la generación y exportación CAD automática de planos en
Catia V5 a partir de ficheros Part
114
Anexo I
Código de la Aplicación
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
Alejandro Martín Garrido
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
115
Anexo I
Código de la Aplicación
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
Alejandro Martín Garrido
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
116
Anexo I
Código de la Aplicación
String)
'Creación de la colección de vistas
Dim BackGr As DrawingView
'Creación
Dim DrDib
Dim DrDis
Dim DrRev
de
As
As
As
las variables de texto
DrawingText
DrawingText
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
Alejandro Martín Garrido
Alejandro Martín Garrido
'Caso de tamaño A4
Aplicación para la generación y exportación CAD automática de planos en
Catia V5 a partir de ficheros Part
117
Anexo I
Código de la Aplicación
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
Alejandro Martín Garrido
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
118
Anexo I
Código de la Aplicación
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
Alejandro Martín Garrido
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
119
Anexo I
Código de la Aplicación
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
Alejandro Martín Garrido
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
120
Anexo I
Código de la Aplicación
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
Alejandro Martín Garrido
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
121
Anexo I
Código de la Aplicación
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
Alejandro Martín Garrido
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
122