| |
| KISTERS 3DViewStation WebViewer: Sichere 3D-Visualisierung - jederzeit und überall, eine Pressemitteilung
|
Autor
|
Thema: makro für stücklistenformat (5057 mal gelesen)
|
glat3 Mitglied technischer zeichner
Beiträge: 5 Registriert: 18.06.2009 CATIA R18
|
erstellt am: 25. Jan. 2010 20:21 <-- editieren / zitieren --> Unities abgeben:
Hi. Hab mir ein Makro geschrieben, dass mir ein neues vordefiniertes stücklisten format einfügt. Mein Problem ist das ich diese format überall hinspeichern kann wo ich möchte. Nur bei den Befehl für speichern unter kommt immer eine Fehlermeldung. Hier ist das Makro: Sub CATMain() Dim productDocument1 As ProductDocument Set productDocument1 = CATIA.ActiveDocument Dim product1 As Product Set product1 = productDocument1.Product Dim assemblyConvertor1 As AssemblyConvertor Set assemblyConvertor1 = product1.GetItem("BillOfMaterial") Dim arrayOfVariantOfBSTR1(6) arrayOfVariantOfBSTR1(0) = "Quantity" arrayOfVariantOfBSTR1(1) = "Part Number" arrayOfVariantOfBSTR1(2) = "Revision" arrayOfVariantOfBSTR1(3) = "Definition" arrayOfVariantOfBSTR1(4) = "CONSTRUCTION -THK" arrayOfVariantOfBSTR1(5) = "CONSTRUCTION DENSITY" arrayOfVariantOfBSTR1(6) = "PART-WEIGHT (KG)" Set assemblyConvertor1Variant = assemblyConvertor1 assemblyConvertor1Variant.SetCurrentFormat arrayOfVariantOfBSTR1 Dim arrayOfVariantOfBSTR2(6) arrayOfVariantOfBSTR2(0) = "Quantity" arrayOfVariantOfBSTR2(1) = "Part Number" arrayOfVariantOfBSTR2(2) = "Revision" arrayOfVariantOfBSTR2(3) = "Definition" arrayOfVariantOfBSTR2(4) = "CONSTRUCTION -THK" arrayOfVariantOfBSTR2(5) = "CONSTRUCTION DENSITY" arrayOfVariantOfBSTR2(6) = "PART-WEIGHT (KG)" Set assemblyConvertor1Variant = assemblyConvertor1 assemblyConvertor1Variant.SetSecondaryFormat arrayOfVariantOfBSTR2 Dim assemblyConvertor2 As AssemblyConvertor Set assemblyConvertor2 = product1.GetItem("BillOfMaterial") Dim arrayOfVariantOfBSTR3(6) arrayOfVariantOfBSTR3(0) = "Quantity" arrayOfVariantOfBSTR3(1) = "Part Number" arrayOfVariantOfBSTR3(2) = "Revision" arrayOfVariantOfBSTR3(3) = "Definition" arrayOfVariantOfBSTR3(4) = "CONSTRUCTION -THK" arrayOfVariantOfBSTR3(5) = "CONSTRUCTION DENSITY" arrayOfVariantOfBSTR3(6) = "PART-WEIGHT (KG)" Set assemblyConvertor2Variant = assemblyConvertor2 assemblyConvertor2Variant.SetCurrentFormat arrayOfVariantOfBSTR3 Dim arrayOfVariantOfBSTR4(6) arrayOfVariantOfBSTR4(0) = "Quantity" arrayOfVariantOfBSTR4(1) = "Part Number" arrayOfVariantOfBSTR4(2) = "Revision" arrayOfVariantOfBSTR4(3) = "Definition" arrayOfVariantOfBSTR4(4) = "CONSTRUCTION -THK" arrayOfVariantOfBSTR4(5) = "CONSTRUCTION DENSITY" arrayOfVariantOfBSTR4(6) = "PART-WEIGHT (KG)" Set assemblyConvertor2Variant = assemblyConvertor2 assemblyConvertor2Variant.SetSecondaryFormat arrayOfVariantOfBSTR4 Dim assemblyConvertor3 As AssemblyConvertor Set assemblyConvertor3 = product1.GetItem("BillOfMaterial") Dim arrayOfVariantOfBSTR5(6) arrayOfVariantOfBSTR5(0) = "Quantity" arrayOfVariantOfBSTR5(1) = "Part Number" arrayOfVariantOfBSTR5(2) = "Revision" arrayOfVariantOfBSTR5(3) = "Definition" arrayOfVariantOfBSTR5(4) = "CONSTRUCTION -THK" arrayOfVariantOfBSTR5(5) = "CONSTRUCTION DENSITY" arrayOfVariantOfBSTR5(6) = "PART-WEIGHT (KG)" Set assemblyConvertor3Variant = assemblyConvertor3 assemblyConvertor3Variant.SetCurrentFormat arrayOfVariantOfBSTR5 Dim arrayOfVariantOfBSTR6(6) arrayOfVariantOfBSTR6(0) = "Quantity" arrayOfVariantOfBSTR6(1) = "Part Number" arrayOfVariantOfBSTR6(2) = "Revision" arrayOfVariantOfBSTR6(3) = "Definition" arrayOfVariantOfBSTR6(4) = "CONSTRUCTION -THK" arrayOfVariantOfBSTR6(5) = "CONSTRUCTION DENSITY" arrayOfVariantOfBSTR6(6) = "PART-WEIGHT (KG)" Set assemblyConvertor3Variant = assemblyConvertor3 assemblyConvertor3Variant.SetSecondaryFormat arrayOfVariantOfBSTR6 Dim strVerzeichnis As String Dim strDateiname As String strVerzeichnis = "K:\CAD\0Projekt_Air\" strDateiname = Application.GetSaveAsFilename(InitialFileName:=strVerzeichnis, _ FileFilter:="Microsoft Excel-Arbeitsmappe (*.xls), *.xls") Select Case strDateiname Case False Exit Sub Case Else assemblyConvertor2.[Print] "XLS", "W:01", product1 End Select End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 25. Jan. 2010 20:36 <-- editieren / zitieren --> Unities abgeben: Nur für glat3
Servus Willkommen im Form. Bitte Systeminfo ausfüllen. Welche Fehlermeldung kommt denn? Wo wird bei dir Application gesetzt? Woher hast du den Befehl GetSaveAsFilename? Gibt es den in CATIA? Schon mal im Watch-Fenster im VBA-Editor den Code debugged? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Ehrenmitglied V.I.P. h.c. Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 26. Jan. 2010 09:45 <-- editieren / zitieren --> Unities abgeben: Nur für glat3
Hallo, also der erste Teil deines Scripts stimmt ja noch aber unten das mit dem Speichern das kommt vorne und hinten nicht hin. Sieht mir aus als hättest du es aus einem Excel VBA Script rauskopiert. Eine Seelect Case Anweisung muss nicht immer true und false sein. Bei dir müsstest du abfragen ob der String leer ist (Case "" und Case <> "" oder Case else). Hier mal ein funktionierendes CATScript. Kannst ja mal im VBA Editor (in CATIA) Debuggen und schauen was genau mit den Variablen passiert. Code:
Sub CATMain() '***Deklarationen Dim intDoc As ProductDocument Dim intProd As Product Dim intAssConvertor Dim intSettingArrayStr(6) Dim intSafePathStr As String Dim MsgFileNameStr As String Dim MsgFilePathStr As String '***BillOfMaterial Object holen Set intDoc = CATIA.ActiveDocument Set intProd = intDoc.Product Set intAssConvertor = intProd.GetItem("BillOfMaterial") '***Einstallungen der Stückliste definieren intSettingArrayStr(0) = "Quantity" intSettingArrayStr(1) = "Part Number" intSettingArrayStr(2) = "Revision" intSettingArrayStr(3) = "Definition" intSettingArrayStr(4) = "CONSTRUCTION -THK" intSettingArrayStr(5) = "CONSTRUCTION DENSITY" intSettingArrayStr(6) = "PART-WEIGHT (KG)" '***Einstellungen an Object weitergeben intAssConvertor.SetSecondaryFormat intSettingArrayStr '***Speichern Dialog öffnen intSafePathStr = GetTheSafePath If intSafePathStr = "" Then MsgBox "Sie haben das Speichern der Stückliste abgebrochen!" + Chr(10) + "Das Makro wird beendet", vbExclamation, "Abbruch durch Anwender" Exit Sub End If '***Speicherabfrage On Error Resume Next intAssConvertor.[Print] "XLS", intSafePathStr, intProd If Err.Number <> 0 Then MsgBox "Es ist ein Fehler beim speichern der Strückliste aufgetretten!" + Chr(10) + "Bitte stellen Sie sicher das sie ausreichend Rechte auf den gewählten Speicherpfad besitzen", vbCritical, _ "Fehler beim speichern" Exit Sub Else MsgBox "Das Makro wurde erfolgreich beendet" + Chr(10) + "Die Stückliste würde mit folgenden Einstellungen gespeichert" + Chr(10) + Chr(10) + _ "Dateipfad: " & intSafePathStr, vbInformation, "Makro erfolgreich beendet" End If End Sub Private Function GetTheSafePath() As String '***Deklarationen Dim intFilterStr As String Dim intFileNameStr As String intFilterStr = "*.xls" '***Dialog anzeigen intFileNameStr = CATIA.FileSelectionBox("Bitte Speicherort und Speichername der Stückliste angeben", intFilterStr, CatFileSelectionModeSave) If intFileNameStr <> "" Then GetTheSafePath = intFileNameStr & Right(intFilterStr, 4) Else GetTheSafePath = "" End If End Function
------------------ MFG Daniel Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...) Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cyzed Mitglied Ingenieur
Beiträge: 55 Registriert: 27.10.2009
|
erstellt am: 27. Jan. 2010 08:03 <-- editieren / zitieren --> Unities abgeben: Nur für glat3
hmm, bei mir funktioniert irgendwie nicht...die Excel-Datei wird nach der Speicherabfrage nicht abgespeichert...kann das sein, dass die Funktion "GetTheSafePath" keinen Rückgabewert herausgibt? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 27. Jan. 2010 08:27 <-- editieren / zitieren --> Unities abgeben: Nur für glat3
Servus Also bei mir läuft das Makro durch. Hast du Zugriff auf das Verzeichnis? Welche Excel-Version hast du (vielleicht gibt es mal wieder Probleme mit Excel 2007) Gruß Bernd PS: Bitte Systeminfo ausfüllen. ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
cyzed Mitglied Ingenieur
Beiträge: 55 Registriert: 27.10.2009
|
erstellt am: 27. Jan. 2010 10:35 <-- editieren / zitieren --> Unities abgeben: Nur für glat3
|
DanielFr. Ehrenmitglied V.I.P. h.c. Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 27. Jan. 2010 11:07 <-- editieren / zitieren --> Unities abgeben: Nur für glat3
|
glat3 Mitglied technischer zeichner
Beiträge: 5 Registriert: 18.06.2009 CATIA R18
|
erstellt am: 27. Jan. 2010 19:07 <-- editieren / zitieren --> Unities abgeben:
Danke erst mal für die Antworten. Nur leider funktioniert das Makro nicht ganz. Immer wenn ich speichern möchte kommt die Fehler Meldung mit haben sie die berächtigung dafür. Was könnte der Grund dafür sein, wieso es nicht funkt. Das Makro, welches du hier reingestellt, ist das gesamt Makro oder muss ich noch was dazu fügen? Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Ehrenmitglied V.I.P. h.c. Manager
Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 28. Jan. 2010 08:27 <-- editieren / zitieren --> Unities abgeben: Nur für glat3
|
Thomas Harmening Ehrenmitglied V.I.P. h.c. Arbeiter ツ
Beiträge: 2897 Registriert: 06.07.2001 NX 10 Win 7
|
erstellt am: 28. Jan. 2010 12:47 <-- editieren / zitieren --> Unities abgeben: Nur für glat3
|