' **************************************************************************************************** ' * Author: Shoutz000 * ' * Operational Area: XXX * ' * Built: 11.08.2015 * ' * Last Modifikation: 15.08.2015 * ' * Macro: 04_BOM_Check © * ' * Version: V-1.00 * ' * Icon: I_04_bBOM_Check * ' * * ' **************************************************************************************************** CATIA.StatusBar = "04_BOM_Check ©, Version 1.00" Language="VBSCRIPT" '---------------------------------------- '---------------------------------------- Sub CATMain() 'Fehlerbehandlung / Abfrage des aktiven Dokuments If CATIA.Windows.Count = 0 Then Box = MsgBox("Es wurde kein aktives Dokument identifiziert!!!" & vbLF & _ "---------------------------------------------------------" & vbLF & _ "Bitte öffnen Sie zuerst ein Dokument und starten Sie" & vbLF & _ "dann 04_BOM_Check © erneut.", 16, "Termination") Exit Sub End If Set oDoc = CATIA.ActiveDocument If TypeName(oDoc) <> "ProductDocument" Then Box = MsgBox("Es wurde kein aktives Product identifiziert!!!" & vbLF & _ "---------------------------------------------------------" & vbLF & _ "04_BOM_Check © wurde abgebrochen.", 16, "Termination") Exit Sub End If Set oProd = oDoc.Product oProd.ApplyWorkMode DESIGN_MODE WalkThroughTree oProd End Sub '---------------------------------------- '---------------------------------------- SUB WalkThroughTree(oParent) 'Struktur abarbeiten FOR iProduct = 1 TO oParent.Products.Count SET oChild = oParent.Products.Item(iProduct) IF oChild.Parameters.Count <> 0 THEN 'Parts an NameCheck übergeben und Products an WalkThroughTree IF oChild.Products.Count = 0 THEN NameCheck oChild.ReferenceProduct ELSE WalkThroughTree oChild.ReferenceProduct END IF END IF NEXT 'Products an NameCheck übergeben IF oParent.Products.Count > 0 THEN NameCheck oParent END IF END SUB '------------------------------------- '------------------------------------- SUB NameCheck(oProd) 'Namensprüfung der Prodcts Found = 0 CATIA.DisplayFileAlerts = False FOR EACH oDoc IN CATIA.Documents IF TYPENAME(oDoc) = "ProductDocument" THEN If Mid(oProd.PartNumber, 9, 1)="-" AND Mid(oProd.PartNumber, 11, 1)="-" AND Mid(oProd.PartNumber, 14, 1)="_" AND Mid(oProd.PartNumber, 17, 1)="_" AND Mid(oProd.PartNumber, 22, 1)="_" Then Exit Sub End If If Mid(oProd.PartNumber, 9, 1)="-" AND Mid(oProd.PartNumber, 11, 1)="-" AND Mid(oProd.PartNumber, 14, 1)="_" AND Mid(oProd.PartNumber, 18, 1)="_" AND Mid(oProd.PartNumber, 23, 1)="_" Then Exit Sub Else Found = Found + 1 DataExport oProd End If End If 'Namensprüfung der Parts IF TYPENAME(oDoc) = "PartDocument" THEN If Mid(oProd.PartNumber, 9, 1)="-" AND Mid(oProd.PartNumber, 11, 1)="-" AND Mid(oProd.PartNumber, 14, 1)="_" AND Mid(oProd.PartNumber, 17, 1)="_" AND Mid(oProd.PartNumber, 22, 1)="_" Then Exit Sub End If If Mid(oProd.PartNumber, 9, 1)="-" AND Mid(oProd.PartNumber, 11, 1)="-" AND Mid(oProd.PartNumber, 14, 1)="_" AND Mid(oProd.PartNumber, 17, 1)="_" AND Mid(oProd.PartNumber, 22, 1)="_" AND Mid(oProd.PartNumber, 26, 1)="_" Then Exit Sub Else Found = Found + 1 DataExport oProd End If End If 'TXT-Datei erstellen If Found = 1 Then CreateTXT End If Next 'TXT und Anwendung schließen oFile.Close Set oFile = Nothing Set oFSO = Nothing END SUB '---------------------------------------- '---------------------------------------- Sub CreateTXT Set oFSO = CreateObject("Scripting.FileSystemObject") Set oFile = oFSO.CreateTextFile("C:\Users\XXX\Desktop\TEST.txt", True) 'Schriftkopf erstellen oFile.WriteBlankLines 1 oFile.WriteLine "==============================================================ErrorLog=======================================================================" oFile.WriteLine " Projekt: " & "ProjektName" oFile.WriteLine " Datum: " & CStr(Date) oFile.WriteLine " Uhrzeit: " & CStr(Time) oFile.WriteLine " Ersteller: " & CATIA.SystemService.Environ("USERNAME") oFile.WriteLine "=============================================================================================================================================" oFile.WriteLine "| ErrorLog created with 04_BOM_Check V-1.00 |" oFile.WriteLine "=============================================================================================================================================" oFile.WriteBlankLines 1 oFile.WriteLine "+-------------------------------------------------------------------------------------------------------------------------------------------+" oFile.WriteLine "| Die Richtlinien von XXX verlangen folgende Benennungen (Deutsch): |" oFile.WriteLine "+-------------------------------------------------------------------------------------------------------------------------------------------+" oFile.WriteLine "| |" oFile.WriteLine "| Haupt-Baugruppe: 20150000-3-01_BG_1000_Name Bereich Pos.Nr.: 1000 - 9900 |" oFile.WriteLine "| Unter-Baugruppe: 20150000-3-01_BG_1001_Name Bereich Pos.Nr.: 1001 - 1099 |" oFile.WriteLine "| Schweißteil: 20150000-3-01_SWT_0001_Name Bereich Pos.Nr.: 0001 - 0099 |" oFile.WriteLine "| 20150000-3-01_ET_0001_001_Name Bereich Pos.Nr.: 0001_001 - 0001_999 |" oFile.WriteLine "| Einzelteil: 20150000-3-01_ET_0100_Name Bereich Pos.Nr.: 0100 - 0400 |" oFile.WriteLine "| Kaufteil: 20150000-3-01_KT_0400_Name Bereich Pos.Nr.: 0401 - 0600 |" oFile.WriteLine "| Normteil: 20150000-3-01_NT_0451_Name Bereich Pos.Nr.: 0601 - 0999 |" oFile.WriteLine "| |" oFile.WriteLine "+-------------------------------------------------------------------------------------------------------------------------------------------+" oFile.WriteLine "| Die Richtlinien von XXX verlangen folgende Benennungen (Englisch): |" oFile.WriteLine "+-------------------------------------------------------------------------------------------------------------------------------------------+" oFile.WriteLine "| |" oFile.WriteLine "| Haupt-Baugruppe: 20150000-3-01_ASM_1000_Name Bereich Pos.Nr.: 1000 - 9900 |" oFile.WriteLine "| Unter-Baugruppe: 20150000-3-01_ASM_1001_Name Bereich Pos.Nr.: 1001 - 1099 |" oFile.WriteLine "| Schweißteil: 20150000-3-01_WP_0001_Name Bereich Pos.Nr.: 0001 - 0099 |" oFile.WriteLine "| 20150000-3-01_SP_0001_001_Name Bereich Pos.Nr.: 0001_001 - 0001_999 |" oFile.WriteLine "| Einzelteil: 20150000-3-01_SP_0100_Name Bereich Pos.Nr.: 0100 - 0400 |" oFile.WriteLine "| Kaufteil: 20150000-3-01_PP_0400_Name Bereich Pos.Nr.: 0401 - 0600 |" oFile.WriteLine "| Normteil: 20150000-3-01_NP_0450_Name Bereich Pos.Nr.: 0601 - 0999 |" oFile.WriteLine "| |" oFile.WriteLine "+-------------------------------------------------------------------------------------------------------------------------------------------+" oFile.WriteBlankLines 2 oFile.WriteLine "=============================================================================================================================================" oFile.WriteLine "= Folgende Fehler sind in der Struktur enthalten: = " oFile.WriteLine "=============================================================================================================================================" oFile.WriteBlankLines 1 End Sub '---------------------------------------- '---------------------------------------- Sub DataExport(oProd, oFile) 'Daten in die TXT schreiben oFile.WriteLine " *** " & oProd.PartNumber & bCrLf End Sub '---------------------------------------- '----------------------------------------