| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für CATIA & Co. | | |  | KISTERS 3DViewStation: Neuer Strukturvergleich ab sofort verfügbar, eine Pressemitteilung
|
Autor
|
Thema: Saveas Problem (395 / mal gelesen)
|
Sylas Mitglied
 
 Beiträge: 349 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 28. Dez. 2021 15:44 <-- editieren / zitieren --> Unities abgeben:         
Hallo Zusammen! Ich habe gerade ein Problemmit SaveAs  Ich versuche jedes Part in der Baum mit SaveAs und Product.PartNumber speichern. Alles funct wunderschon, bis zur Zeit, wenn ein PartNumber mit z.B. ".1" endest Dann das Part ist nicht mehr als catpart gespeichert, sonder als File mit ".1" Dateiendung. Kann mir jemand helfen wie kann ich das lösen? Danke im Voraus Lucas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12054 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 28. Dez. 2021 15:50 <-- editieren / zitieren --> Unities abgeben:          Nur für Sylas
Servus Lucas Wie sieht dein Code für das SaveAs (und die Herstellung des Dateinamens aus)? Ggf reicht das Angeben mit Dateiendung bei SaveAs aus. Was machst du wenn Umlaute oder andere Sonderzeichen in der PartNumber vorkommen? Gruß Bernd
------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Sylas Mitglied
 
 Beiträge: 349 Registriert: 19.11.2012 Dell Precision T3500 Intel Xeon W3550 @ 3,07 GHz 12 GB RAM CATIA V5 R28
|
erstellt am: 28. Dez. 2021 18:11 <-- editieren / zitieren --> Unities abgeben:         
Zitat: Original erstellt von bgrittmann: Servus LucasWie sieht dein Code für das SaveAs (und die Herstellung des Dateinamens aus)? Ggf reicht das Angeben mit Dateiendung bei SaveAs aus. Was machst du wenn Umlaute oder andere Sonderzeichen in der PartNumber vorkommen? Gruß Bernd
Hallo Bernd Ich tausche Polnische Buchstaben (und anders) mit: Code:
Public Function RemoveNonASCII(str As String) As String Dim i As Integer For i = 1 To Len(str) If Not (AscW(Mid(str, i, 1)) = 61 Or (AscW(Mid(str, i, 1)) >= 48 And AscW(Mid(str, i, 1)) <= 57) Or (AscW(Mid(str, i, 1)) >= 65 And AscW(Mid(str, i, 1)) <= 90) Or AscW(Mid(str, i, 1)) = 95 Or (AscW(Mid(str, i, 1)) >= 97 And AscW(Mid(str, i, 1)) <= 122)) Then 'It's an ASCII character Select Case AscW(Mid(str, i, 1)) '----------------------------------------------------------------ZNAKI POLSKIE----------------------------------------------------- Case 260 'Mid(RemoveNonASCII, i, 1) = ChrW(261) str = Replace(str, ChrW(260), "A") Case 261 'Mid(RemoveNonASCII, i, 1) = ChrW(261) str = Replace(str, ChrW(261), "a") Case 262 'Mid(str, i, 1) = ChrW(263) str = Replace(str, ChrW(262), "C") Case 263 'Mid(str, i, 1) = ChrW(263) str = Replace(str, ChrW(263), "c") Case 280 'Mid(str, i, 1) = ChrW(281) str = Replace(str, ChrW(280), "E") Case 281 'Mid(str, i, 1) = ChrW(281) str = Replace(str, ChrW(281), "e") Case 323 'Mid(str, i, 1) = ChrW(324) str = Replace(str, ChrW(323), "N") Case 324 'Mid(str, i, 1) = ChrW(324) str = Replace(str, ChrW(324), "n") Case 211 'Mid(str, i, 1) = ChrW(243) str = Replace(str, ChrW(211), "O") Case 243 'Mid(str, i, 1) = ChrW(243) str = Replace(str, ChrW(243), "o") Case 321 'Mid(str, i, 1) = ChrW(322) str = Replace(str, ChrW(321), "L") Case 322 'Mid(str, i, 1) = ChrW(322) str = Replace(str, ChrW(322), "l") Case 346 'Mid(str, i, 1) = ChrW(347) str = Replace(str, ChrW(346), "S") Case 347 'Mid(str, i, 1) = ChrW(347) str = Replace(str, ChrW(347), "s") Case 379 'Mid(str, i, 1) = ChrW(380) str = Replace(str, ChrW(379), "Z") Case 380 'Mid(str, i, 1) = ChrW(380) str = Replace(str, ChrW(380), "z") Case 377 'Mid(str, i, 1) = ChrW(378) str = Replace(str, ChrW(377), "Z") Case 378 'Mid(str, i, 1) = ChrW(378) str = Replace(str, ChrW(378), "z") '----------------------------------------------------------------ZNAKI SPECJALNE----------------------------------------------------- Case 32 str = Replace(str, ChrW(32), "_") Case 248 'Mid(str, i, 1) = ChrW(378) str = Replace(str, ChrW(248), "D") 'Case Else 'str = Replace(str, Mid(str, i, 1), "_") End Select End If Next i RemoveNonASCII = str End Function
und spiechern unter mit:
Code:
Function zapisz(Product As Product, sPath As String) Set oDoc = Product.ReferenceProduct.Parent sName = RemoveNonASCII(Product.PartNumber) If Not CATIA.FileSystem.FileExists(sPath & sName) = True Then If Left(Right(sName, 2), 1) = "." Then sName = sName & ".CATPart" End If oDoc.SaveAs (sPath & sName) Else sStatus = MsgBox("Złożenie o tej nazwie istnieje już na dysku! Chcesz ręcznie zmienić nazwę?", vbOKCancel, "Plik o tej nazwie już istnieje!") If sStatus = "Yes" Then sName = InputBox("Podaj nową, unikalną nazwę pliku: ", "Nowa nazwa pliku", sName & ".1") Else sStatus2 = MsgBox("Przerwano na życzenie użytkownika", vbOKOnly, "Anuluj") End If End If End Function
Das Problem mit Namen habe ich mit:
Code: If Left(Right(sName, 2), 1) = "." Then sName = sName & ".CATPart" End If
gelöst. Was noch funct nict ist das hier:
Code:
If Not CATIA.FileSystem.FileExists(sPath & sName) = True Then If Left(Right(sName, 2), 1) = "." Then sName = sName & ".CATPart" End If oDoc.SaveAs (sPath & sName) Else sStatus = MsgBox("Złożenie o tej nazwie istnieje już na dysku! Chcesz ręcznie zmienić nazwę?", vbOKCancel, "Plik o tej nazwie już istnieje!") If sStatus = "Yes" Then sName = InputBox("Podaj nową, unikalną nazwę pliku: ", "Nowa nazwa pliku", sName & ".1") Else sStatus2 = MsgBox("Przerwano na życzenie użytkownika", vbOKOnly, "Anuluj") End If End If
Die Makro soll der Benutzer sagen, das der Datei existiert schon und wie soll die neue Instanz gespiechert sein. Aber es sieht mir aus, dass so wie so, es einfach speicherst uber die existierte Datei . Ich hoffe das mein Deutsch is gut genug zu die Erklarung  Gruss Lucas Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
bgrittmann Moderator Konstrukteur
       
 Beiträge: 12054 Registriert: 30.11.2006 CATIA V5R19
|
erstellt am: 28. Dez. 2021 18:27 <-- editieren / zitieren --> Unities abgeben:          Nur für Sylas
Servus Zitat: If Left(Right(sName, 2), 1) = "." Then
Was passiert wenn die Ziffernfolge am Ende zweistellig wird? MsgBox liefert dir nicht "Yes" zurück. (am besten einfach mal per MsgBox den sStatus ausgeben lassen) Also zb if sStatus = 1 oder if sStatus = vbOK prüfen Gruß Bernd PS: muss bei FileExists nicht auch die Dateiendung mit geprüft werden? ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |