| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. |
| |
| KISTERS 3DViewStation: Unterstützung für 3D CAD Kollaboration mit Lieferanten, eine Pressemitteilung
|
Autor
|
Thema: Product als STEP-Dateien exportieren (10465 mal gelesen)
|
bgrittmann Moderator Konstrukteur
Beiträge: 12005 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 24. Aug. 2007 19:23 <-- editieren / zitieren --> Unities abgeben:
Servus Kann man beim Exportieren einer Baugruppe als STEP-Dateien (pro Part/Product eine Datei) den Dateinamen vorgeben? Hintergrund ist der, dass begründet durch das PDM-System der Dateiname von der Teil/Zeichnungsnummer abweicht. Die Zeichnungs/Teilenummer ist jedoch in den Properties abgelegt. Beim weitergeben von STEP-Dateien sollten jedoch die Dateien sinnvoll benannt sein. Oder geht das nur über den Umweg: Baugruppe laden -> für jedes Part extra "save as" (mit Anpassung der Dateinamen) -> Konvertieren der neuen Daten in STEP? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. [Diese Nachricht wurde von bgrittmann am 24. Aug. 2007 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tomtom1972 Mitglied dipl ing maschinenbau
Beiträge: 608 Registriert: 22.03.2005 NVidia Quadro K4000 Intel Xeon E5-1620, 64GB RAM Windows10 64bit R30 <= CATIA V5 > =R19
|
erstellt am: 28. Aug. 2007 07:14 <-- editieren / zitieren --> Unities abgeben: Nur für bgrittmann
Hallo, eine andere Frage: wie um alles in der Welt exportierst du denn Step- Daten, ohne den Dateinamen vorzugeben? Code: oDocument.ExportData("Dateiname", "stp") Gruß TomTom ------------------ tomtom1972 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: 28. Aug. 2007 07:38 <-- editieren / zitieren --> Unities abgeben:
Servus Tom Wenn man eine Baugruppe als STEP-Dateien (AP 214) exportiert kann man nur den Dateinamen der Baugruppe vorgeben, die Einzelteile und Unterbaugruppen werde automatisch benannt (Filename der Parts/Products). Ich hab inzwischen schon mal ein Makro zusammengebastelt: Code: 'Script zum Exportieren von Baugruppen im STEP-Format' 'Eigenschaften der Exportierung unter Tools -> Optionen einstellen' 'Dateinamen entspricht der Teilenummer'Language="VBSCRIPT" Public Output_folder as String Sub CATMain() 'Fehlermeldungen ausschalten' CATIA.DisplayFileAlerts = False 'Eingabefenster für Ausgabeverzeichnis' Output_folder = InputBox ("Bitte das Ausgabeverzeichnis eingeben mit abschliessendem '\'.","Eingabe","D:\temp\",500,1000) 'Start' Set oRoot = Catia.ActiveDocument Set oProducts = oRoot.Product.Products 'Rootbaugruppe speichern' Set RootBaugruppe = oRoot.Product OUTPUT = Output_folder & RootBaugruppe.Partnumber & ".CATProduct" oRoot.SaveAs(OUTPUT) 'Suche aufrufen' SUB_ProdScan oProducts 'STEP-Dateien auschreiben' AUSGABE = Output_folder & RootBaugruppe.Partnumber & ".stp" oRoot.ExportData AUSGABE, "stp" 'Fehlermeldunge einschalten' CATIA.DisplayFileAlerts = True 'Fertig Meldung' MsgBox "Baugruppe konvertiert. CATIA-Dateien könne im Ausgabeverzeichnis gelöscht werden." End Sub Sub SUB_ProdScan(oProducts) 'Baugruppe durchsuchen' For x = 1 To oProducts.Count Set oParentDoc = oProducts.Item(x).ReferenceProduct.Parent 'Parts' If TypeName(oParentDoc) = "PartDocument" Then 'Parts unter Teilenummer abspeichern' Dim Teil as Product Set Teil = oParentDoc.Product 'MsgBox VbLf & oParentDoc.Name' OUTPUT = Output_folder & Teil.PartNumber & ".CATPart" oParentDoc.SaveAs(OUTPUT) End if 'Baugruppen' If oProducts.Item(x).Products.Count > 0 Then 'Baugruppen unter Teilenummer abspeichern' Dim Baugruppe as Product Set Baugruppe = oParentDoc.Product OUTPUT = Output_folder & Baugruppe.PartNumber & ".CATProduct" oParentDoc.SaveAs(OUTPUT) 'für Unterbaugruppen die Suche aufrufen' SUB_ProdScan oProducts.Item(x).Products End If Next End Sub
Ist vielleicht nicht ganz korrekt und nicht gut Strukuriert (aus anderen Makros zusmmenkopiert), aber es funktioniert. Gruß Bernd
------------------ Warum einfach, wenn es auch kompliziert geht. 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: 29. Aug. 2007 07:54 <-- editieren / zitieren --> Unities abgeben:
Gutem Morgen Nachdem mein Makro im Testbetrieb schon gelaufen ist, bekomm ich an einem anderen Rechner die Fehlermeldung: "Das Verfahren SaveAs ist fehlgschlagen" in dieser Zeile:
Code: OUTPUT = Output_folder & Teil.PartNumber & ".CATPart" oParentDoc.SaveAs(OUTPUT)
Das speichern der Baugruppe mit SaveAS hat noch geklappt, beim abspeichern der Einzelteile gibt es dann Probleme. Hat jemand eine Idee an was es liegen könnte? Das Ausgabeverzeichnis ist vorhanden, Schreibzugriff bestehtn und die STEP-Lizenz (ST1) ist gezogen.Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. 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: 31. Aug. 2007 19:44 <-- editieren / zitieren --> Unities abgeben:
|
v5maler Mitglied
Beiträge: 96 Registriert: 16.12.2005
|
erstellt am: 12. Mrz. 2012 11:32 <-- editieren / zitieren --> Unities abgeben: Nur für bgrittmann
Ich hol das mal aus den Tiefen hervor ... Wir nutzen folgendes Script für die Ausgabe von ... Export - CATProduct + CATPart zu IGS.CATScript Export - CATProduct + CATPart zu STP.CATScript Code: 'Script zum Exportieren von V5-Parts und Produkten in IGES' 'Erstellt von Jens Hansen' 'Dieses Script ist kostenlos verfügbar und darf weder verkauft noch Angeboten werden' 'Adresse zum Download: http://catia.cad.de' Language="VBSCRIPT" Sub CATMain() folderinput = InputBox ("Wo befinden sich Ihre Daten ?","Eingabe","\\Server\_STP, IGS temp\",500,1000) folderoutput = InputBox ("Wohin soll gespeichert werden?","Eingabe","\\Server\_STP, IGS temp\_fertige Umwandlungen\",500,1000) Dim fs, f, f1, fc, s Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(folderinput) Set fc = f.Files For Each f1 in fc Dim PartDocument1 As Document Set documents1 = CATIA.Documents Dim document1 As Document PFADEINGABE = folderinput & f1.name Set PartDocument1 = CATIA.Documents.Open(PFADEINGABE) PFADAUSGABE = folderoutput & f1.name & ".igs" PartDocument1.ExportData PFADAUSGABE, "igs" s = s & f1.name s = s & vbCrLf
PartDocument1.Close Next 'Bei Bedarf kann eine Schlussnachricht eingeblendet werden, wo die umgewandelten Elemente aufgelistet sind. Hierfür in nachfolgender zeile die Hochkommas entfernen.' MsgBox "Umwandlung von CATProduct + CATPart zu IGS fertig!" & vbCrLf & s ' End Sub
Zwei Probleme:
1.) 723-00-20-008_WELLE.CATPart wird immer 723-00-20-008_WELLE.CATPart.igs sollte aber besser 723-00-20-008_WELLE.igs sein. 2.) Am Ende kommt immer der Fehler Ich bin mir nicht sicher warum das so ist. Kann mir jemand helfen? Ich wäre für jeden Tipp dankbar.
------------------ Es ist nichts zu dumm, es findet doch sein Publikum. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K.Siebert Mitglied Tech Zeichner
Beiträge: 415 Registriert: 19.05.2007 Win XP Catia V5 R19 Catia V5 R24
|
erstellt am: 12. Mrz. 2012 12:09 <-- editieren / zitieren --> Unities abgeben: Nur für bgrittmann
Hallo, zu 1) wenn du dieses änderst Code: PFADAUSGABE = folderoutput & f1.name & ".igs" PartDocument1.ExportData PFADAUSGABE, "igs"
In
Code: PFADAUSGABE = folderoutput & f1.PartName & ".igs" PartDocument1.ExportData PFADAUSGABE, "igs"
Sollte es gehen Zu 2) Code: .... PFADEINGABE = folderinput & f1.name On Err resume next Set PartDocument1 = CATIA.Documents.Open(PFADEINGABE)If Err then Msgbox “ Keíne weiteren Dokumente für Exportdaten vorhanden“ Exit sub End if .....
Ist Ungetestet edit: Tippfehler gefunden und verbessert (im Code ) ------------------ Sei Schlau bleib Dumm !!?!! [Diese Nachricht wurde von K.Siebert am 12. Mrz. 2012 editiert.] 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: 12. Mrz. 2012 12:14 <-- editieren / zitieren --> Unities abgeben:
Servus Zu 1): Du musst wohl den Namen um CATPart bzw CATProduct) kürzen. zB Datiname = left (f1.name, (len(f1.name)- 7))für Catparts, der Pfad muss dann wieder zusammengebaut werden. Zu 2): In dem Script fehlt eine Abfrage nach CATParts bzw CATProducts (If-then), aktuell wird versucht alle Dateien zu öffnen Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
v5maler Mitglied
Beiträge: 96 Registriert: 16.12.2005
|
erstellt am: 13. Mrz. 2012 10:25 <-- editieren / zitieren --> Unities abgeben: Nur für bgrittmann
@K.Siebert Also erstmals vielen Dank für die geopferte Zeit. Das muss jetzt einfach mal so gesagt werden. Leider funktioniert das nicht, weder 1 noch 2. Ich habe es so übernommen. @bgrittmann
Code: Datiname = left (f1.name, (len(f1.name)- 7))
muss wo genau hin?------------------ Es ist nichts zu dumm, es findet doch sein Publikum. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K.Siebert Mitglied Tech Zeichner
Beiträge: 415 Registriert: 19.05.2007 Win XP Catia V5 R19 Catia V5 R24
|
erstellt am: 13. Mrz. 2012 15:02 <-- editieren / zitieren --> Unities abgeben: Nur für bgrittmann
Hallo, ja Stimmt so sollte es aber gehen. Ist Getestet Code: Script zum Exportieren von V5-Parts und Produkten in IGES' 'Erstellt von Jens Hansen' 'Dieses Script ist kostenlos verfügbar und darf weder verkauft noch Angeboten werden' 'Adresse zum Download: http://catia.cad.de' Language="VBSCRIPT"Sub CATMain() folderinput_1 = CATIA.FileSelectionBox("Wo befinden sich Ihre Daten ?", "*.*", CatFileSelectionModeOpen) folderinput = Left(folderinput_1, InStrRev(folderinput_1, "\") - 0) 'Right Left Mid 'msgbox folderinput_1 folderoutput = InputBox ("Wohin soll gespeichert werden?","Eingabe","\\Server\xxxx\xxxx\",500,1000) Dim fs, f, f1, fc, s Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(folderinput) Set fc = f.Files For Each f1 in fc Dim PartDocument1 As Document Set documents1 = CATIA.Documents Dim document1 As Document PFADEINGABE = folderinput & f1.name On Error resume next Set PartDocument1 = CATIA.Documents.Open(PFADEINGABE) On Error resume next 'msgbox Name LoeschEndung = Left(f1, InStrRev(f1, ".CAT") - 1) 'msgbox LoeschEndung 'PFADAUSGABE = folderoutput & Name1 & ".igs" PFADAUSGABE = LoeschEndung & ".igs" PartDocument1.ExportData PFADAUSGABE, "igs" If Err then Msgbox "dieses Datei kann nicht exprotiert werden." End if s = s & f1.name s = s & vbCrLf
PartDocument1.Close Next 'Bei Bedarf kann eine Schlussnachricht eingeblendet werden, wo die umgewandelten Elemente aufgelistet sind. Hierfür in nachfolgender zeile die Hochkommas entfernen.' MsgBox "Umwandlung von CATProduct + CATPart zu IGS fertig!" & vbCrLf & s ' End Sub
edit: (msgbox ausgeklammert msgbox LoeschEndung) ------------------ Sei Schlau bleib Dumm !!?!! [Diese Nachricht wurde von K.Siebert am 13. Mrz. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
v5maler Mitglied
Beiträge: 96 Registriert: 16.12.2005
|
erstellt am: 14. Mrz. 2012 11:50 <-- editieren / zitieren --> Unities abgeben: Nur für bgrittmann
Also ich versteh jetzt gar nichts mehr... Fehler nun plötzlich in Zeile 11, was Code: 'msgbox folderinput_1
ist. Nehmen wir mal ich möchte das von
Code: \\Server01\a\
nach
Code: \\Server01\b\
erledigen, nicht das ich da den Pfad falsch eingefügt habe. ------------------ Es ist nichts zu dumm, es findet doch sein Publikum.
[Diese Nachricht wurde von v5maler am 14. Mrz. 2012 editiert.] 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: 14. Mrz. 2012 11:53 <-- editieren / zitieren --> Unities abgeben:
Servus Was ist bei dir Zeile 11? Welche Fehlermeldung kommt? Hast du mal den wert einer Varaibel mit der Augabe in einer MessageBox geprüft? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
v5maler Mitglied
Beiträge: 96 Registriert: 16.12.2005
|
erstellt am: 14. Mrz. 2012 12:00 <-- editieren / zitieren --> Unities abgeben: Nur für bgrittmann
Kommando zurück! Es war Zeile 1 ein "'" am Anfang hatte gefehlt. Was genau macht denn die ...
Code: folderinput_1 = CATIA.FileSelectionBox("Wo befinden sich Ihre Daten ?", "*.*", CatFileSelectionModeOpen)
*.* ist irgendwie ganz schlecht ... ------------------ Es ist nichts zu dumm, es findet doch sein Publikum. 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: 14. Mrz. 2012 12:05 <-- editieren / zitieren --> Unities abgeben:
Servus Bitte mal die Hilfe zu den Methoden durchlesen. *.* ist gesetzt dass du jede Datei asuwählen kannst, aus der gewählter Datei wird dann das Verzeichnis ermittelt (von hinten in die Brust ins Auge) Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
v5maler Mitglied
Beiträge: 96 Registriert: 16.12.2005
|
erstellt am: 14. Mrz. 2012 12:13 <-- editieren / zitieren --> Unities abgeben: Nur für bgrittmann
Das Problem ist ganz einfach. Ich bin kein Programmierer. Deshalb ja hier die Anfrage... Könnte man die alte Abfrage wieder mit einbauen? (Pfade als Beispiel)
Code: folderinput = InputBox ("Wo befinden sich Ihre Daten ?","Eingabe","\\Server01\A\",500,1000) folderoutput = InputBox ("Wohin soll gespeichert werden?","Eingabe","\\Server01\B\",500,1000)
Oder, was vielleicht auch gut wäre ... nur die Abfrage für *.CATProduct, *.CATPart. ------------------ Es ist nichts zu dumm, es findet doch sein Publikum. 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: 14. Mrz. 2012 12:15 <-- editieren / zitieren --> Unities abgeben:
Servus Was willst du nun: ein ganzen Verzeichnis konvertieren oder nur einzelne Dateien? Klar kann man die alte Abfrage wieder einbauen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
v5maler Mitglied
Beiträge: 96 Registriert: 16.12.2005
|
erstellt am: 14. Mrz. 2012 12:18 <-- editieren / zitieren --> Unities abgeben: Nur für bgrittmann
|
v5maler Mitglied
Beiträge: 96 Registriert: 16.12.2005
|
erstellt am: 16. Mrz. 2012 10:46 <-- editieren / zitieren --> Unities abgeben: Nur für bgrittmann
|
K.Siebert Mitglied Tech Zeichner
Beiträge: 415 Registriert: 19.05.2007 Win XP Catia V5 R19 Catia V5 R24
|
erstellt am: 16. Mrz. 2012 12:06 <-- editieren / zitieren --> Unities abgeben: Nur für bgrittmann
Hallo, einfach wieder Tauschen Code: folderinput_1 = CATIA.FileSelectionBox("Wo befinden sich Ihre Daten ?", "*.*", CatFileSelectionModeOpen) folderinput = Left(folderinput_1, InStrRev(folderinput_1, "\") - 0) 'Right Left Mid
durch dieses:
Code: folderinput = InputBox ("Wo befinden sich Ihre Daten ?","Eingabe","\\Server\_STP, IGS temp\",500,1000) folderoutput = InputBox ("Wohin soll gespeichert werden?","Eingabe","\\Server\_STP, IGS temp\_fertige Umwandlungen\",500,1000)
Ich bin auch Programmierer
------------------ Sei Schlau bleib Dumm !!?!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
v5maler Mitglied
Beiträge: 96 Registriert: 16.12.2005
|
erstellt am: 16. Mrz. 2012 12:41 <-- editieren / zitieren --> Unities abgeben: Nur für bgrittmann
Also irgendwie mag das überhaupt nicht... er möchte auch anderen Dateien die im Ordner sind umwandeln (Darin ist z.B. eine Verknüpfung auf das Script.), was fast in einer Endlosschleife hängen bleibt, weil er immer wieder alles überschreiben möchte ... Aktuell steht das drin:
Code: 'Script zum Exportieren von V5-Parts und Produkten in IGES' 'Erstellt von Jens Hansen' 'Dieses Script ist kostenlos verfügbar und darf weder verkauft noch Angeboten werden' 'Adresse zum Download: http://catia.cad.de' Language="VBSCRIPT"Sub CATMain() folderinput = InputBox ("Wo befinden sich Ihre Daten ?","Eingabe","\\Server01\PROJEKTE\_STP, IGS temp\",500,1000) folderoutput = InputBox ("Wohin soll gespeichert werden?","Eingabe","\\Server01\PROJEKTE\_STP, IGS temp\_fertige Umwandlungen\",500,1000) 'msgbox folderinput_1 'folderoutput = InputBox ("Wohin soll gespeichert werden?","Eingabe","\\Server01\PROJEKTE\_STP, IGS temp\_fertige Umwandlungen\",500,1000) Dim fs, f, f1, fc, s Set fs = CreateObject("Scripting.FileSystemObject") Set f = fs.GetFolder(folderinput) Set fc = f.Files For Each f1 in fc Dim PartDocument1 As Document Set documents1 = CATIA.Documents Dim document1 As Document PFADEINGABE = folderinput & f1.name On Error resume next Set PartDocument1 = CATIA.Documents.Open(PFADEINGABE) On Error resume next 'msgbox Name LoeschEndung = Left(f1, InStrRev(f1, ".CAT") - 1) 'msgbox LoeschEndung 'PFADAUSGABE = folderoutput & Name1 & ".igs" PFADAUSGABE = LoeschEndung & ".igs" PartDocument1.ExportData PFADAUSGABE, "igs" If Err then Msgbox "dieses Datei kann nicht exprotiert werden." End if s = s & f1.name s = s & vbCrLf
PartDocument1.Close Next 'Bei Bedarf kann eine Schlussnachricht eingeblendet werden, wo die umgewandelten Elemente aufgelistet sind. Hierfür in nachfolgender zeile die Hochkommas entfernen.' MsgBox "Umwandlung von CATProduct + CATPart zu IGS fertig!" & vbCrLf & s ' End Sub
------------------ Es ist nichts zu dumm, es findet doch sein Publikum. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
K.Siebert Mitglied Tech Zeichner
Beiträge: 415 Registriert: 19.05.2007 Win XP Catia V5 R19 Catia V5 R24
|
erstellt am: 16. Mrz. 2012 16:11 <-- editieren / zitieren --> Unities abgeben: Nur für bgrittmann
Hallo, Das Skript habe ich jetzt noch mal überarbeitet. Sollte funktionieren. Habe in dem Ordner zum Testen eine Zeichnung abgelegt. Diese macht Catia auf kann diese nicht Exportieren somit kommt eine Meldung (kann diese Datei nicht Exportieren) nach Bestätigung wird das Tool weiter ausgeführt Dieses Meldung sollte auch kommen wenn Catia die Datei nicht aufmachen kann. Die schleife so wie du beschieben hast, baust du dir wahrscheinlich selbst. Weil das Tool macht alle Dateien in dem Ordner auf und will diese dann exportieren. Da du in diesem Ordner auch die Verknüpfung hast will Catia natürlich auch diese aufmachen und Exportieren, somit ruft du das Tool immer wieder neu auf.
------------------ Sei Schlau bleib Dumm !!?!! Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
v5maler Mitglied
Beiträge: 96 Registriert: 16.12.2005
|
erstellt am: 19. Mrz. 2012 07:41 <-- editieren / zitieren --> Unities abgeben: Nur für bgrittmann
Guten Morgen, danke erst einmal dafür. Aber: - Dateiname wird korrekt erzeugt - Zielordner wird nicht benutzt (es landet im gleichen Ordner wie das originale File, "folderoutput" ist aber korrekt gesetzt) - kann man dem nur beibringen explizit _nur_ *.CATProduct und *.CATPart zu lesen, um das Problem mit den anderen Dateien zu lösen? Sicherlich sind das nur kleine Sachen, ich bekomme aber nicht wirklich hin. Pff ... ------------------ Es ist nichts zu dumm, es findet doch sein Publikum. 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: 19. Mrz. 2012 08:31 <-- editieren / zitieren --> Unities abgeben:
Servus Ich hab mal in meiner Makrosammlung gestöbert. Code: 'Script zum Exportieren von V5-Parts und Produkten in IGES' 'Erstellt von Bernd Grittmann'Language="VBSCRIPT" Sub CATMain() Dim Zielverzeichnis as String Dim Quellverzeichnis as String Dim FolBrowser Dim FileSystemObject Dim Verzeichnis as Folder Dim Dateien as Files Dim Datei as File Dim Dokument as Document Dim Counter as Integer Dim StrZiel as String 'Fehlermeldungen ausschalten' 'CATIA.DisplayFileAlerts = False 'Quellverzeichnis abfragen set ShellApp=CreateObject("Shell.Application") 'erzeuge ein neues Objekt "Shell Application" set FolBrowser=ShellApp.BrowseForFolder(0,"Bitte waehlen Sie das Quellverzeichnis aus:",16,17) If not FolBrowser is Nothing then 'wenn nicht Abbrechen gedrückt oder aus sonstigen Gründen 'nichts im Objekt "FolBrowser" steht, dann... Quellverzeichnis=FolBrowser.Self.Path '...speichere den Pfad d. Ordners in die Variable "Quellverzeichnis" End If If Quellverzeichnis = "" then MsgBox "Kein Quellverzeichnis gewählt. Das Makro wird abgebrochen." ,16 , "Abbruch" Exit Sub End If 'Zielverzeichnis abfragen set FolBrowser=ShellApp.BrowseForFolder(0,"Bitte waehlen Sie das Zielverzeichnis aus:",16,17) If not FolBrowser is Nothing then 'wenn nicht Abbrechen gedrückt oder aus sonstigen Gründen 'nichts im Objekt "FolBrowser" steht, dann... Zielverzeichnis=FolBrowser.Self.Path '...speichere den Pfad d. Ordners in die Variable "Zielverzeichnis" End If If Zielverzeichnis = "" then MsgBox "Kein Zielverzeichnis gewählt. Das Makro wird abgebrochen." ,16 , "Abbruch" Exit Sub End If 'Quellverzeichnis einlesen Set FileSystemObject = CreateObject("Scripting.FileSystemObject") Set Verzeichnis = FileSystemObject.GetFolder(Quellverzeichnis) Set Dateien = Verzeichnis.Files 'Dateien nach CATParts und CATProducts durchsuchen For Each Datei in Dateien if Right(Datei.name, 7) = "CATPart" or Right(Datei.name, 10) = "CATProduct" then Set Dokument = CATIA.Documents.Open(Datei.Path) StrZiel = Zielverzeichnis & "\" & Left(Datei.Name, InStrRev(Datei.name, ".CATP") -1 ) & ".igs" Dokument.ExportData StrZiel, "igs" Dokument.Close Counter = Counter + 1 End if next MsgBox "Es wurden " & Cstr(Counter) & " Dateien konvertiert." End Sub
Alternativ könntest d auch die Batch-Konvertierung unter Tools -> Dienstprogramme nutzen. Gruß Bernd
------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
v5maler Mitglied
Beiträge: 96 Registriert: 16.12.2005
|
erstellt am: 29. Mrz. 2012 15:02 <-- editieren / zitieren --> Unities abgeben: Nur für bgrittmann
Hallo Bernd, Danke für den Code. Aber: Warum kann man nicht auf Netzwerkpfade zugreifen? Oder: Könnte man von Ordner A nach Ordner B konvertieren, bzw, eben als Vorlage bereits die Pfade mit übergeben, damit man nicht jedes mal sich neu hin klicken muss? Diese wären aber dann auch auf UNC-Pfaden ... ------------------ Es ist nichts zu dumm, es findet doch sein Publikum. [Diese Nachricht wurde von v5maler am 29. Mrz. 2012 editiert.] [Diese Nachricht wurde von v5maler am 29. Mrz. 2012 editiert.] 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: 29. Mrz. 2012 17:05 <-- editieren / zitieren --> Unities abgeben:
Servus Netzwerkpfade: ändere folgende Zeile: set FolBrowser=ShellApp.BrowseForFolder(0,"Bitte waehlen Sie das Quellverzeichnis aus:",16,17) in set FolBrowser=ShellApp.BrowseForFolder(0,"Bitte waehlen Sie das Quellverzeichnis aus:",16,0) bzw äquivalent auch in der Zeile zur Auswahl des Zielverzeichnisses. Zum Pfad vorgeben (ungetestet): in KSieberts letztem Makro die Zeile: PFADAUSGABE = LoeschEndung & ".igs" in PFADAUSGABE = folderoutput & LoeschEndung & ".igs" ändern. Gruß Bernd PS: ggf muss du die beiden Scripte "verheiraten" um auch den Filter für CATPParts und CATProducts zu bekommen. ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
v5maler Mitglied
Beiträge: 96 Registriert: 16.12.2005
|
erstellt am: 30. Mrz. 2012 08:46 <-- editieren / zitieren --> Unities abgeben: Nur für bgrittmann
Zitat: Original erstellt von bgrittmann: PS: ggf muss du die beiden Scripte "verheiraten" um auch den Filter für CATPParts und CATProducts zu bekommen.
Das nicht, aber jetzt das ganze noch für DXF+PDF gleichzeitig, dann wäre das ganz gut. Für nur eine der beiden Endungen bekomme ich es hin. Allerdings wusste ich mir bei der Zeile Code: if Right(Datei.name, 7) = "CATDrawing" or Right(Datei.name, 10) = "CATDrawing" then
Nicht anders zu helfen, und hab die so drin stehen. Also für z.B. nur eine Ausgabe in PDF. PS: Wenn man auf "nein" geht wenn er fragt ob eine Datei überschrieben soll, komm ein Fehler in Linie 56.
Danke soweit. Edit: Ich denke mit ...
Code:
'Dateien nach CATParts und CATProducts durchsuchen For Each Datei in Dateien if Right(Datei.name, 7) = "CATDrawing" or Right(Datei.name, 10) = "CATDrawing" then Set Dokument = CATIA.Documents.Open(Datei.Path) StrZiel = Zielverzeichnis & "\" & Left(Datei.Name, InStrRev(Datei.name, ".CATD") -1 ) & ".pdf" Dokument.ExportData StrZiel, "pdf" StrZiel = Zielverzeichnis & "\" & Left(Datei.Name, InStrRev(Datei.name, ".CATD") -1 ) & ".dxf" Dokument.ExportData StrZiel, "dxf"
... schaut das schon mal ganz gut aus. Fehlt eigentlich nur noch der Fehler beim verneinen vom Überschreiben einer Datei. ------------------ Es ist nichts zu dumm, es findet doch sein Publikum. [Diese Nachricht wurde von v5maler am 30. Mrz. 2012 editiert.] [Diese Nachricht wurde von v5maler am 30. Mrz. 2012 editiert.] 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: 30. Mrz. 2012 14:37 <-- editieren / zitieren --> Unities abgeben:
Servus Wenn du keine bestehende Datei überschreiben willst könntest du die Funktion fFileExist von hier oder hier einbauen, und vor dem Konvertieren zunächst prüfen ob die Datei schon vorhanden ist. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. [Diese Nachricht wurde von bgrittmann am 30. Mrz. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
v5maler Mitglied
Beiträge: 96 Registriert: 16.12.2005
|
erstellt am: 17. Apr. 2012 10:53 <-- editieren / zitieren --> Unities abgeben: Nur für bgrittmann
Hallo nochmals, also die Sachen laufen soweit. Allerdings wäre nun doch eine Auswahl im ersten Schritt sinnvoller als einen ganzen Ordner zu konvertieren. Also Script Starten, Dateien mit Mehrauswahl auswählen, Zielordner Angeben, und los geht es ... Was genau müsste ich denn demnach abändern?
Code: 'Script zum Exportieren von V5-Parts und Produkten in STEP' 'Erstellt von Bernd Grittmann'Language="VBSCRIPT" Sub CATMain() Dim Zielverzeichnis as String Dim Quellverzeichnis as String Dim FolBrowser Dim FileSystemObject Dim Verzeichnis as Folder Dim Dateien as Files Dim Datei as File Dim Dokument as Document Dim Counter as Integer Dim StrZiel as String 'Fehlermeldungen ausschalten' 'CATIA.DisplayFileAlerts = False 'Quellverzeichnis abfragen set ShellApp=CreateObject("Shell.Application") 'erzeuge ein neues Objekt "Shell Application" set FolBrowser=ShellApp.BrowseForFolder(0,"Bitte waehlen Sie das Quellverzeichnis aus:",16,0) If not FolBrowser is Nothing then 'wenn nicht Abbrechen gedrückt oder aus sonstigen Gründen 'nichts im Objekt "FolBrowser" steht, dann... Quellverzeichnis=FolBrowser.Self.Path '...speichere den Pfad d. Ordners in die Variable "Quellverzeichnis" End If If Quellverzeichnis = "" then MsgBox "Kein Quellverzeichnis gewählt. Das Makro wird abgebrochen." ,16 , "Abbruch" Exit Sub End If 'Zielverzeichnis abfragen set FolBrowser=ShellApp.BrowseForFolder(0,"Bitte waehlen Sie das Zielverzeichnis aus:",16,0) If not FolBrowser is Nothing then 'wenn nicht Abbrechen gedrückt oder aus sonstigen Gründen 'nichts im Objekt "FolBrowser" steht, dann... Zielverzeichnis=FolBrowser.Self.Path '...speichere den Pfad d. Ordners in die Variable "Zielverzeichnis" End If If Zielverzeichnis = "" then MsgBox "Kein Zielverzeichnis gewählt. Das Makro wird abgebrochen." ,16 , "Abbruch" Exit Sub End If 'Quellverzeichnis einlesen Set FileSystemObject = CreateObject("Scripting.FileSystemObject") Set Verzeichnis = FileSystemObject.GetFolder(Quellverzeichnis) Set Dateien = Verzeichnis.Files 'Dateien nach CATParts und CATProducts durchsuchen For Each Datei in Dateien if Right(Datei.name, 7) = "CATPart" or Right(Datei.name, 10) = "CATProduct" then Set Dokument = CATIA.Documents.Open(Datei.Path) StrZiel = Zielverzeichnis & "\" & Left(Datei.Name, InStrRev(Datei.name, ".CATP") -1 ) & ".stp" Dokument.ExportData StrZiel, "stp" Dokument.Close Counter = Counter + 1 End if next MsgBox "Es wurden " & Cstr(Counter) & " Dateien konvertiert." End Sub
------------------ Es ist nichts zu dumm, es findet doch sein Publikum. 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: 17. Apr. 2012 18:24 <-- editieren / zitieren --> Unities abgeben:
Servus Hier findest du eine mögliche Lösung. Natürlich brauchst du die Listbox nicht der Array "Files" sollte die entsprechenden Pfade (oder nur die Dateinamen?) enthalten. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
v5maler Mitglied
Beiträge: 96 Registriert: 16.12.2005
|
erstellt am: 18. Apr. 2012 08:13 <-- editieren / zitieren --> Unities abgeben: Nur für bgrittmann
Hallo, danke für die Hilfe, aber was ich nun genau damit machen soll weiß ich nicht wirklich. Was genau soll ich denn gegen was austauschen? Im besten Fall ist eben unten im Explorer-Öffnen Menü vorab *.CATDrawing ausgewählt, bei z.B. dem PDF/DXF Script. Somit kann man dann nur eben *.CATDRawings per Mehrauswahl (STRG-Taste+Auswahl) auswählen und auf "Öffnen" gehen. Das wäre schon gut. ------------------ Es ist nichts zu dumm, es findet doch sein Publikum. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |