Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Automatisierter .stp / .stl Konverter für Catia - Hilfe!

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
Autor Thema:  Automatisierter .stp / .stl Konverter für Catia - Hilfe! (1400 mal gelesen)
Folgi
Mitglied
Entwicklungsing.

Sehen Sie sich das Profil von Folgi an!   Senden Sie eine Private Message an Folgi  Schreiben Sie einen Gästebucheintrag für Folgi

Beiträge: 3
Registriert: 18.08.2020

Catia V5 6R2018

erstellt am: 18. Aug. 2020 10:20    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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

Lionel Hutz
Mitglied



Sehen Sie sich das Profil von Lionel Hutz an!   Senden Sie eine Private Message an Lionel Hutz  Schreiben Sie einen Gästebucheintrag für Lionel Hutz

Beiträge: 363
Registriert: 26.03.2014

CATIA V5 R20

erstellt am: 18. Aug. 2020 10:31    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Folgi 10 Unities + Antwort hilfreich

Probier mal bei "Nameneu" die Dateiendung weg zu lassen.
Mit  PartDocument1.ExportData sPath2 & Nameneu, stp definierst du ja bereits das Ausgabeformat.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

bgrittmann
Moderator
Konstrukteur


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 18. Aug. 2020 10:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Folgi 10 Unities + Antwort hilfreich

Servus

Hast du die entsprechenden Lizenzen für STEP und STL gezogen?

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Folgi
Mitglied
Entwicklungsing.

Sehen Sie sich das Profil von Folgi an!   Senden Sie eine Private Message an Folgi  Schreiben Sie einen Gästebucheintrag für Folgi

Beiträge: 3
Registriert: 18.08.2020

Catia V5 6R2018

erstellt am: 18. Aug. 2020 11:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Vielen dank Lionel, es hat tatsächlich geklappt mit deinem Tipp! 

danke auch dir Bernd für die Hilfe, an der Lizenz lag es glücklicherweise nicht.

Für alle die das Makro auch verwenden möchten wäre hier noch der funktionierende Code:


'**************************************************************************************************************************
'STP-Catia Converter
'Beschrieb: Das Tool konvertiert aus den nachfolgenden Ordnern div Datentypen (Gemäss der Ordnerbeschriftung)

'Erstellt von: Folgi 10.07.2020

'Dokumentenverlauf:
'Stand 01, 10.07.2020 Schreiben von Basiscode
'Stand 02, 18.08.2020 Beheben von Bug - Speichern mit ExportData ohne die Dateiendung im Nameneu
'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.ExportData sPath1 & Nameneu, CATPart
        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", "")
        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", "")
        PartDocument1.ExportData sPath3 & Nameneu, "stp"
        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", "")
        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, bitte den Konverter erneut starten")

End Sub

Userform Konverter ist nur eine userform mit dem Text:

Der Konverter ist aktiv!
Zum Beednen dieses Fenster schliesssen und einige Sekunden warten.

Viel Spass dabei!

Gruss
Folgi

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Lionel Hutz
Mitglied



Sehen Sie sich das Profil von Lionel Hutz an!   Senden Sie eine Private Message an Lionel Hutz  Schreiben Sie einen Gästebucheintrag für Lionel Hutz

Beiträge: 363
Registriert: 26.03.2014

CATIA V5 R20

erstellt am: 18. Aug. 2020 11:46    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Folgi 10 Unities + Antwort hilfreich

PartDocument1.SaveAs ist auf jeden Fall nicht angebracht um ein anderes Dateiformat zu erhalten.
Das ist vorgesehen eine Datei unter einem anderen Namen abzuspeichern und weiter zu verwenden.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Lionel Hutz
Mitglied



Sehen Sie sich das Profil von Lionel Hutz an!   Senden Sie eine Private Message an Lionel Hutz  Schreiben Sie einen Gästebucheintrag für Lionel Hutz

Beiträge: 363
Registriert: 26.03.2014

CATIA V5 R20

erstellt am: 18. Aug. 2020 12:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Folgi 10 Unities + Antwort hilfreich

und jetzt widerspreche ich mir gleich mal:
Wenn du eine step-Datei geladen hast (1. Fall), dann hat Catia diese Datei bereits in Catia-Daten konvertiert.
Dann solltest du tatsächlich PartDocument1.SaveAs verwenden, dies wiederum aber ohne die Dateiendung vorzugeben. Catia entscheidet, ob es Part oder Product vorfindet und entsprechend speichert.

In welcher Sprache ist das Makro geschrieben? Der Kill-Befehl kommt mir zum ersten Mal unter.
Und wenn es mit dem Kill-Befehl nicht geht dann halt so (ungetestet):

Code:
Sub Kill(strFileToDel)
Set oFSO = CreateObject("Scripting.FileSystemObject")
 
If oFSO.FileExists(strFileToDel) Then oFSO.DeleteFile(strFileToDel)
        End If
End Sub

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Folgi
Mitglied
Entwicklungsing.

Sehen Sie sich das Profil von Folgi an!   Senden Sie eine Private Message an Folgi  Schreiben Sie einen Gästebucheintrag für Folgi

Beiträge: 3
Registriert: 18.08.2020

Catia V5 6R2018

erstellt am: 18. Aug. 2020 13:57    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Danke für die Hinweise.
Mit dem oben verwendeten Code funktioniert nun alles und ich denke, dass ich das so belasse. Ja das mit dem .stp zu .CATPart ist mir auch aufgefallen, da dies von Beginn an funktioniert hatte als ich den SaveAs befehl verwendet hatte - was ja eigentlich auch Sinn macht.

Ich habe das Makro mit dem VBA (alt+F11) Editor geschrieben. Der Kill befehl löscht mir die alte Datei, sodass das Makro nur einmal die Datei übersetzt (Funktioniert also einwandfrei). Die Anwender müssen aber beachten, dass dadurch das Original verloren geht - was bei copy paste aber nicht weiter schlimm ist.

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz