Hallo Liebe Community,
bevor ich mein Problem schildere, möchte ich mich erst mal, für all die Beiträge die mir die vergangenen Jahre viel geholfen haben, bedanken.
Leider habe ich nun ein Problem, dass ich mir so nicht ganz erklären kann und ich bin ehrlich gesagt am Ende - weshalb ich nun auch zum ersten mal hier einen Forumbeitrag erstelle.
Da in unserer Firma (KMU) oft Daten von Stp zu Catpart oder Stl konvertiert werden müssen und nicht alle Mitarbeiter (Verkauf, Vertrieb etc.) Zugang zu Catia (Catia V5 6R2018) haben, habe ich einen Converter geschrieben, der laufend an einem Rechner mit Catia schaut ob in den jeweiligen Ordnern in unserem Netzlaufwerk eine neue Datei zum Konvertieren ist. So können idealerweise alle Mitarbeiter schnell und unkompliziert via drag and drop Daten in andere Formate übersetzten ohne Catia bedienen zu müssen.
Der Converter an und für sich funktioniert einwandfrei und auch die Daten werden übersetzt. Das grosse Problem ist nun aber, dass diese übersetzten Daten korrekt umbenannt und abgespeichert werden, es aber eine .stp Datei erstellt die in Wirklichkeit immer noch ein .catpart ist - sprich die Datei wird nur umbenannt und nicht konvertiert. Dies zeigt sich auch an der Dateingrösse die vor und nach dem Konvertieren gleich gross ist. Der Name und die Eigenschaften werden als .stp angezeigt aber wenn die Datei wieder in Catia eingelesen wird, sind immer noch alle Datenstrukturen vorhanden. Beim öffnen mit einem .stp Viewer kommt eine Fehlermeldung, dass die Daten korrupt sind.
Nun meine Frage an euch: Weiss jemand von euch weshalb die Daten im Format .stp oder .stl nicht korrekt abgespeichert und nur "umbenannt" werden?
Getestete Funktionen: (habe beide Varianten als Anschauung im Code gelassen)
PartDocument1.ExportData
PartDocument1.SaveAs
Ich wäre euch super Dankbar wenn jemand einen Lösungsansatz dazu hätte.
Lieber Gruss
Folgi
Hier noch der Code:
Sub CATMain()
'**************************************************************************************************************************
'STP-Catia Converter
'Beschrieb: Das Tool Konvertiert aus den nachfolgenden Ordnern div Datentypen (Gemäss der Ordnerbeschriftung)
'Erstellt von: XXXXX XXXXX 10.07.2020
'Dokumentenverlauf:
'Stand 01, 10.07.2020 Schreiben von Basiscode
'Stand XX, DD.MM.JJJJ Änderungsbeschrieb
'**************************************************************************************************************************
'Definieren der Datentypen
Dim ende As Boolean
Dim cDir1 As String
Dim cDir2 As String
Dim cDir3 As String
Dim sPath1 As String
Dim sPath2 As String
Dim sPath3 As String
Dim Nameneu As String
Dim i As Integer
'Zuweisen von Default-Variabeln
ende = False
i = 0
'Eingabe der Ordnerpfade zum übersetzen- Bitte beachten, dass am Pfadende noch ein \ hinzugefügt werden muss!
'Ordnerpfad Step-CatPart
sPath1 = "I:\01_User\macro-step-catia\Step-CatPart\"
'Ordnerpfad CatPart-Step
sPath2 = "I:\01_User\macro-step-catia\CatPart-Step\"
'Ordnerpfad CatProduct-stp
sPath3 = "I:\01_User\macro-step-catia\CatProduct-stp\"
'Ordnerpfad CatPart-stl
sPath4 = "I:\01_User\macro-step-catia\CatPart-stl\"
'Userform einblenden
Konverter.Show vbModeless
'Aktualisierungsschleife bis ende = true
Do
'Display Aktualisierung einschalten
CATIA.RefreshDisplay = True
'Abbruch sobald userform geschlossen wird
If Konverter.Visible = False Then
ende = True
End If
'Display Aktualisierung ausschalten
CATIA.RefreshDisplay = fasle
'Suche nach einer Datei mit der gewünschten Datenendung im jeweiligen Ordner
'Bei dem CATProduct muss die endung mit ---.CATProduct enden.
'Dies dient dazu, dass bei einem ganzen Werkzeug mit einer Vielzahl an Zusammenbauten nur der gewünschte Zusammenbau übersetzt wird.
cDir1 = Dir(sPath1 & "*.stp")
cDir2 = Dir(sPath2 & "*.CATPart")
cDir3 = Dir(sPath3 & "*---.CATProduct")
cDir4 = Dir(sPath4 & "*.CATPart")
'Check ob es eine Datei zum Übersetzten in den Ordnern hat
If cDir1 = "" And cDir2 = "" And cDir3 = "" And cDir4 = "" Then
'wenn keine Datei vorhanden, wartet das Makro die Angegebene Zeit in hh:mm:ss
waitTill = Now() + TimeValue("00:00:02")
While Now() < waitTill
Wend
'Wenn neues stp vorhanden
ElseIf cDir1 <> "" Then
Set documents1 = CATIA.Documents
Set document1 = documents1.Open(sPath1 & cDir1)
Set PartDocument1 = CATIA.ActiveDocument
Nameneu = Replace(cDir1, ".stp", ".CATPart")
PartDocument1.SaveAs (sPath1 & Nameneu)
Set specsAndGeomWindow1 = CATIA.ActiveWindow
specsAndGeomWindow1.Close
Kill (sPath1 & cDir1)
'Wenn neues CATPart vorhanden
ElseIf cDir2 <> "" Then
Set documents1 = CATIA.Documents
Set document1 = documents1.Open(sPath2 & cDir2)
Set PartDocument1 = CATIA.ActiveDocument
Nameneu = Replace(cDir2, ".CATPart", ".stp")
PartDocument1.ExportData sPath2 & Nameneu, stp
Set specsAndGeomWindow1 = CATIA.ActiveWindow
specsAndGeomWindow1.Close
Kill (sPath2 & cDir2)
'Wenn neues CATProduct vorhanden
ElseIf cDir3 <> "" Then
Set documents1 = CATIA.Documents
Set document1 = documents1.Open(sPath3 & cDir3)
Set PartDocument1 = CATIA.ActiveDocument
Nameneu = Replace(cDir3, "---.CATProduct", ".stp")
PartDocument1.SaveAs (sPath3 & Nameneu)
Set specsAndGeomWindow1 = CATIA.ActiveWindow
specsAndGeomWindow1.Close
Kill (sPath3 & "*---.*")
'Wenn neues CATProduct vorhanden
ElseIf cDir4 <> "" Then
Set documents1 = CATIA.Documents
Set document1 = documents1.Open(sPath4 & cDir4)
Set PartDocument1 = CATIA.ActiveDocument
Nameneu = Replace(cDir4, ".CATPart", ".stl")
PartDocument1.ExportData sPath4 & Nameneu, stl
Set specsAndGeomWindow1 = CATIA.ActiveWindow
specsAndGeomWindow1.Close
Kill (sPath4 & cDir4)
End If
Loop Until ende = True
'Display Aktualisierung einschalten
CATIA.RefreshDisplay = True
'Userform ausblenden
Konverter.Hide
'Meldung wenn Makro abgebrochen wurde
MsgBox ("Makro wurde beendet, wenn benötigt den Konverter erneut starten")
End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP