Autor
|
Thema: automatisches speichen (3310 mal gelesen)
|
Struppi0909 Mitglied Konstrukteur
Beiträge: 18 Registriert: 27.05.2010 Win XP Pro SP3 P4; 2,40GHz; 4GB GeForce 9800GT;512MB CatiaV5R19SP3
|
erstellt am: 19. Aug. 2010 13:26 <-- editieren / zitieren --> Unities abgeben:
Hallo ich habe hier im Forum ein Makro gefunden zum automatischen abspeichern von Dateien. Es funktioniert auch super für meine Bauteile. Nur leider bekomme ich es nicht hin, das Makro so umzuschreiben, das das Makro mir den Dateinamen z.B. 1111.22.catpart beibehält. Das Makro benennt immer den Dateinamen 1111.22.catpart um, in 1111.22 und dadurch wird die Datei ohne Extender abgespeichert bzw. der Extender ist plötzlich .22 und daurch unbrauchbar. Ich stell das Makro mal hier rein, vielleicht kann mir jemand helfen? '_____________Abfrage Selektierte Elemente_____________________________________________ Dim UserSelektion As Selection Set productDocument1 = CATIA.ActiveDocument Set UserSelektion = productDocument1.Selection UserSelektion.Search "(CATAsmSearch.Part+(CATAsmSearch.Product)),all"
For I = 1 to UserSelektion.Count Name = (UserSelektion.Item(I).Value.ReferenceProduct.Name) 'Name = (UserSelektion.Item(I).Value.Name) 'product1.PartNumber -->original
'__________________________________________________________________________________ '_____________Zuordnung____________________________________________________________ VAR_pfad = Eingabe Set productDocument1 = CATIA.ActiveDocument Datei = VAR_pfad & Strich & Name '__________________________________________________________________________________ '_____________Abfrage Selektierte Elemente zum Speichen_________________________________ Dim SelectedProduct As Product Set SelectedProduct = CATIA.ActiveDocument.Selection.Item2(I).Value Dim doc As Document Set doc = SelectedProduct.ReferenceProduct.Parent '__________________________________________________________________________________ '_____________Speicher Befehl Selektierte Elemente ______________________________________ CATIA.DisplayFileAlerts = False doc.SaveAs Datei Next End Sub ------------------ Gruß Struppi 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: 19. Aug. 2010 14:11 <-- editieren / zitieren --> Unities abgeben: Nur für Struppi0909
Servus Du musst in der Zeile mit dem Pfad den Dokumententyp mit angeben: Datei = VAR_pfad & Strich & Name & ".CATPart"Allerdings funktioniert dass nur bei Parts richtig. (Abfrage CATPart oder CATProduct erforderlich) Was hast du mit dem Skript vor? Warum verwendest du nicht einfach "Strg + S" in der Baugruppe? Oder aktivierst die automatische Sicherung (zB alle 20min)? Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. [Diese Nachricht wurde von bgrittmann am 19. Aug. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
RSchulz Moderator² Head of CAD, Content & Collaboration / IT-Manager
Beiträge: 5541 Registriert: 12.04.2007 @Work Lenovo P510 Xeon E5-1630v4 64GB DDR4 Quadro P2000 256GB PCIe SSD 512GB SSD SmarTeam V5-6 R2016 Sp04 CATIA V5-6 R2016 Sp05 E3.Series V2019 Altium Designer/Concord 19 Win 10 Pro x64
|
erstellt am: 19. Aug. 2010 14:14 <-- editieren / zitieren --> Unities abgeben: Nur für Struppi0909
|
Struppi0909 Mitglied Konstrukteur
Beiträge: 18 Registriert: 27.05.2010 Win XP Pro SP3 P4; 2,40GHz; 4GB GeForce 9800GT;512MB CatiaV5R19SP3
|
erstellt am: 19. Aug. 2010 14:44 <-- editieren / zitieren --> Unities abgeben:
Hallo Rick, richtig ich benutze dieses script zum Speichern der kompletten Struktur in einen anderen Pfad. Ich habe diese Zeile geändert: Name = (UserSelektion.Item(I).Value.ReferenceProduct.Name) in Name = (UserSelektion.Item(I).Value.ReferenceProduct.Fullname) leider bekomme ich eine Fehlermeldung --> Objekt...unterstützt diese Eigenschaft oder Methode nicht. Ich hoffe ich habe es in die richtige Zeile geschrieben, da ich mich mit der Programmierung von Makros nicht so gut aus kenne. ------------------ Gruß Struppi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Lusilnie Mitglied
Beiträge: 1486 Registriert: 13.07.2005
|
erstellt am: 20. Aug. 2010 00:47 <-- editieren / zitieren --> Unities abgeben: Nur für Struppi0909
Hallo Struppi0909, ich nehme mal an, Du bist hier eine Ebene zu weit oben. Wenn ich es richtig interpretiere, liest Du mit ".Name" die PartNumber aus, doch Du willst eigntlich den Dateinamen. Den würdest du aber mit erst "UserSelektion.Item(I).Value.ReferenceProduct.Parent.Name" bekommen. Daher ist dann auch die Fehlermeldung erklärbar, da es korrekt "UserSelektion.Item(I).Value.ReferenceProduct.Parent.FullName" lauten sollte. Bitte überprüfe dies mal! mfg, Lusilnie
------------------ Alle Aussagen zu DassaultSystemes-Produkten sind sehr optimistisch, selbst diese!!! frei nach größeren Geistern Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Struppi0909 Mitglied Konstrukteur
Beiträge: 18 Registriert: 27.05.2010 Win XP Pro SP3 P4; 2,40GHz; 4GB GeForce 9800GT;512MB CatiaV5R19SP3
|
erstellt am: 04. Okt. 2010 13:33 <-- editieren / zitieren --> Unities abgeben:
Hallo Lusilnie, ja mit ".Name" möchte ich die PartNumber auslesen und speichern. Es wird auch gespeichert, aber bei manchen Parts z.B. 2021.46.025.20.catpart wird die Datei ohne Extender gespeichert, also ohne *.catpart. Dadurch ist meine Datei danach unbrauchbar. Ich muß die PartNumber auslesen, da mein "Umbenennungsmakro(suchen und ersetzen)", nur die PartNumber ändert.Und mit diesem Makro wollte ich den Dateinamen aus der PartNumber speichern lassen. Mit ".Parent" wird nur der Dateiname ausgelesen, da dieser noch nicht umbenannt ist, siehe Umbenennungsmakro, werden meine Parts wieder mit den alten Namen gespeichert. Was mich wundert ist das ich z.B. Parts habe ohne "viele" Punkte im Datei/PartName und dort funktioniert es. Wo könnte der/mein Fehler liegen? ------------------ Gruß Struppi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Struppi0909 Mitglied Konstrukteur
Beiträge: 18 Registriert: 27.05.2010 Win XP Pro SP3 P4; 2,40GHz; 4GB GeForce 9800GT;512MB CatiaV5R19SP3
|
erstellt am: 06. Okt. 2010 13:05 <-- editieren / zitieren --> Unities abgeben:
|
Konstrukt1352 Mitglied
Beiträge: 30 Registriert: 28.09.2010 CATIA V5R19 Windows XP 32-bit 4 GB RAM 64GB SSD GTS 250 SpaceNavigator
|
erstellt am: 06. Okt. 2010 13:51 <-- editieren / zitieren --> Unities abgeben: Nur für Struppi0909
|
Struppi0909 Mitglied Konstrukteur
Beiträge: 18 Registriert: 27.05.2010 Win XP Pro SP3 P4; 2,40GHz; 4GB GeForce 9800GT;512MB CatiaV5R19SP3
|
erstellt am: 06. Okt. 2010 14:12 <-- editieren / zitieren --> Unities abgeben:
Diese Prob taucht nur bei den CATParts auf. Meine CATProducts beinhalten keine "Punkte" in der PartNumber bzw im Instancename. Es ist egal wo ein "Punkt" sich im Partnumber befindet. Am Anfang, in der Mitte oder am Ende, jedesmal beim umbenennen wird mein Extender dadurch nicht mitgespeichert und dadurch unbrauchbar. Andere Dokumenttypen wie z.B Drawings etc. interessieren mich nicht da sie keine "Punkte" im Namen enthalten. Für mich sind nur die CATParts interessant. ------------------ Gruß Struppi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Konstrukt1352 Mitglied
Beiträge: 30 Registriert: 28.09.2010 CATIA V5R19 Windows XP 32-bit 4 GB RAM 64GB SSD GTS 250 SpaceNavigator
|
erstellt am: 06. Okt. 2010 14:40 <-- editieren / zitieren --> Unities abgeben: Nur für Struppi0909
|
Struppi0909 Mitglied Konstrukteur
Beiträge: 18 Registriert: 27.05.2010 Win XP Pro SP3 P4; 2,40GHz; 4GB GeForce 9800GT;512MB CatiaV5R19SP3
|
erstellt am: 06. Okt. 2010 14:47 <-- editieren / zitieren --> Unities abgeben:
|
Konstrukt1352 Mitglied
Beiträge: 30 Registriert: 28.09.2010 CATIA V5R19 Windows XP 32-bit 4 GB RAM 64GB SSD GTS 250 SpaceNavigator
|
erstellt am: 06. Okt. 2010 14:52 <-- editieren / zitieren --> Unities abgeben: Nur für Struppi0909
Hallo nochmal, also, falls du an einem "kleinen dreckigen" Workaround interessiert bist: 1. Erstelle dir in diesem Verzeichnis eine Datei mit dem Namen "batch.bat" 2. Rechtsklick darauf und "Bearbeiten" 3. Füge da folgendes ein: "for /f "delims=" %%i in ('dir /s /b *.') do ren "%%i" *.CATPart" 4. Das "catpart" am Ende ist dann die Dateiendung, die alle Dateien ohne irgendeine Endung erhalten. Diese kannst du anpassen, wie du das möchstest 5. Speichern und Doppelklicken, die Batch-Datei durchläuft alle Unterverzeichnisse und benennt alle Dateien ohne Endung um. Beispiel: Datei "xyz" wird zu "xyz.CATPart" Es hilft natürlich nicht beim eigentlichen problem, aber falls du unter Zeitdruck stehst (wer tut das nicht?) hilfts vielleicht fürs Erste. Viele Grüße, Konstrukt
[Diese Nachricht wurde von Konstrukt1352 am 06. Okt. 2010 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Struppi0909 Mitglied Konstrukteur
Beiträge: 18 Registriert: 27.05.2010 Win XP Pro SP3 P4; 2,40GHz; 4GB GeForce 9800GT;512MB CatiaV5R19SP3
|
erstellt am: 06. Okt. 2010 15:19 <-- editieren / zitieren --> Unities abgeben:
Ich stehe ja auf "kleine dreckige" Workaround's, aber leider kein Erfolg mit der batch datei. Problem besteht darin das z.B. die Datei 111.22.catpart in 111.22 gespeichert wird, sprich der Extender .catpart wird zu.22 Wenn ich die Dateien händisch wieder in *.catpart ändere oder mit batch datei, verliert Catia die Verlinkung im CATProdukt und es wird nach der Datei 111.22.catpart gesucht die ja nicht mehr vorhanden ist da sie ja Catia selbst in 111.22 geändert hat
------------------ Gruß Struppi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Konstrukt1352 Mitglied
Beiträge: 30 Registriert: 28.09.2010 CATIA V5R19 Windows XP 32-bit 4 GB RAM 64GB SSD GTS 250 SpaceNavigator
|
erstellt am: 06. Okt. 2010 15:24 <-- editieren / zitieren --> Unities abgeben: Nur für Struppi0909
Hallo, ah ok, jetzt verstehe ich dein Problem richtig Das war mir vorher nicht so ganz klar, ich dachte, die Dateien werden einfach nur ohne Endung gespeichert. Ok, dann müssen wir wohl doch direkt am Makro ansetzen ------------------ Viele Grüße, Konstrukt Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Struppi0909 Mitglied Konstrukteur
Beiträge: 18 Registriert: 27.05.2010 Win XP Pro SP3 P4; 2,40GHz; 4GB GeForce 9800GT;512MB CatiaV5R19SP3
|
erstellt am: 06. Okt. 2010 15:56 <-- editieren / zitieren --> Unities abgeben:
Was mir aufgefallen ist, nachdem das makro durchgelaufen ist und ich danach auf save management gehe ist bei dem obersten Produkt unter Status modifiziert angegeben. Ich natürlich "save" und "propagate directory" und siehe da catia schreibt wieder den Extender .CATParts hinter jedes Part, nochmal abspeichern und alles ist wieder OK. Was ich nicht verstehe warum schreibt Catia mir erst die Parts ohne Extender und danach wieder mit??? Die falschen Dateien ohne Extender werde ich wohl händisch löschen müssen, aber das ist das kleinste Prob, aber wie passiert so etwas? Ich hänge mal die drei Speicherstände als jpg an. P.S. So funktioniert es jetzt trotzdem und ich kann damit vorerst leben, außer es hat noch jemand eine bessere Idee. ------------------ Gruß Struppi Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Struppi0909 Mitglied Konstrukteur
Beiträge: 18 Registriert: 27.05.2010 Win XP Pro SP3 P4; 2,40GHz; 4GB GeForce 9800GT;512MB CatiaV5R19SP3
|
erstellt am: 06. Okt. 2010 16:05 <-- editieren / zitieren --> Unities abgeben:
|
roccat Mitglied Konstrukteur
Beiträge: 172 Registriert: 19.02.2010 WinXP/Win7 Office XP/2007 Catia V5 R16-R19, VB6.0, VBA, BASCOM-AVR VB .Net 2010
|
erstellt am: 07. Okt. 2010 23:39 <-- editieren / zitieren --> Unities abgeben: Nur für Struppi0909
Hallo Struppi, ich hab das mal mit folgenden Code getestet und bei mir gabs keine Probleme, obwohl ich Punkte im Dateinamen nich sonderlich toll finde. Die zweite Schleife ist notwendig, da es sein kann das erst das Product und dann die Parts gespeichert werden und somit das Product den neuen Pfad der Parts noch nicht gespeichert hat und wieder "modified" wird. Darum zum Schluß alle Dokumente nochmal checken und mit Save speichern. Wie du selber schon feststellen konntest: Zitat: Was mir aufgefallen ist, nachdem das makro durchgelaufen ist und ich danach auf save management gehe ist bei dem obersten Produkt unter Status modifiziert angegeben.
Code: Sub Speichern()Dim MyDocuments As Documents Dim MyDocument As Document Dim sPath As String Set MyDocuments = CATIA.Documents sPath = "C:\Temp\Test3\" CATIA.DisplayFileAlerts = False 'alle Parts und Products Speichern For Each MyDocument In MyDocuments Select Case TypeName(MyDocument) Case "PartDocument" MyDocument.SaveAs sPath & MyDocument.Part.Name & ".CATPart" Case "ProductDocument" MyDocument.SaveAs sPath & MyDocument.Product.PartNumber & ".CATProduct" End Select Next 'Prüfen ob alle Parts und Products gespeichert wurden, wenn nicht nochmal speichern For Each MyDocument In MyDocuments If TypeName(MyDocument) = "PartDocument" Or TypeName(MyDocument) = "ProductDocument" Then If MyDocument.Saved = False Then MyDocument.Save End If End If Next CATIA.DisplayFileAlerts = True MsgBox "Struktur in " & sPath & " gespeichert.", vbOKOnly, "Hinweis" End Sub
mfG Mario Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Konstrukt1352 Mitglied
Beiträge: 30 Registriert: 28.09.2010 CATIA V5R19 Windows XP 32-bit 4 GB RAM 64GB SSD GTS 250 SpaceNavigator
|
erstellt am: 11. Okt. 2010 07:50 <-- editieren / zitieren --> Unities abgeben: Nur für Struppi0909
Hallo roccat, liest sich nach einer sehr guten Lösung. Wenn der Threadersteller das mal getestet hat und uns Rückmeldung gibt fände ichs natürlich noch besser ------------------ Viele Grüße, Konstrukt Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |