Autor
|
Thema: Saveas Problem (346 / mal gelesen)
|
Sylas Mitglied
Beiträge: 322 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: 11780 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: 322 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: 11780 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 >>)
|