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
© Copyright 2024