Autor
|
Thema: Filename = PartNumber? (6978 mal gelesen)
|
Makronizer Mitglied Dipl.-Ing Maschinenbau-Integrierte Produktentwicklung
Beiträge: 51 Registriert: 15.09.2009
|
erstellt am: 15. Sep. 2009 13:58 <-- editieren / zitieren --> Unities abgeben:
Hallo liebe Freunde des Makroprogrammierens, wie Ihr feststellt, bin ich neu hier. Auch meine Makrokenntnisse würde ich eher als bescheiden bezeichnen. Während meiner Diplomarbeit habe ich mich mit Makros beschäftigt, jedoch eher nebenbei. Nun zu meinem Problem: Ich habe ein Makro geschrieben, welches die PartNumber der Products und Parts in einer beliebigen Struktur abändert. Dies funktioniert soweit ganz gut, nun will ich es soweit abändern, das die neue Partnumber gleichzeitig auch Filename wird... Meine Überlegungen dahingegend drehen sich im Kreis: Eine Möglichkeit wäre anlegen eines neuen Ordners und dann über den Befehl Send To die Dateien kopieren und umbenennen. Erscheint mir aber zu umständlich... Habe mehrere Stunden mit der Suchfunktion verbracht und nichts gefunden. Bin für jede Hilfe dankbar. Gruß Makronizer
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
IIYTII Mitglied
Beiträge: 85 Registriert: 30.05.2007 Catia V5 R19 Programmierung unter CATvba
|
erstellt am: 15. Sep. 2009 14:12 <-- editieren / zitieren --> Unities abgeben: Nur für Makronizer
Hi Makronizer, geht das in die Richtung von Tabellenbauteilen? Du hast ja geschrieben, dass dein Makro die Partnumber des Produktes und Parts abändert. D.h. irgendwo müssen ja die Informationen stehen, wie das Part/Product heißen soll. Wenn du diese Nummer in einen String speicherst und dann die Funktion Catia.Savetofile benutzt mit der variablen Partnummer im Pfad, dann speichert es automatisch dein neues Part ab. Willst du einen haufen Parts/Producte umbenennen und abspeichern, dann musst du eine Schleife aufbauen. Ich habe früher mal so ein Macro geschrieben, was Tabellenbaugruppen aufbaut. Gesteuert von einer Excel Liste konnte man damit Pneumatikzylinder, die beispielsweise aus 3 Parts bestehen, automatisch erstellen. Auch das Abspeichern funktionierte vollautomatisch. Geht das in die Richtung oder habe ich dich falsch verstanden? [Diese Nachricht wurde von IIYTII am 15. Sep. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Makronizer Mitglied Dipl.-Ing Maschinenbau-Integrierte Produktentwicklung
Beiträge: 51 Registriert: 15.09.2009
|
erstellt am: 15. Sep. 2009 14:20 <-- editieren / zitieren --> Unities abgeben:
Hallo YT, das ging ja mal fix... Ja, ich möchte ein A...voll Parts und Products umbenennen, bzw einen Teil der Benennung. Da die "alten" Parts ja noch die alte Bezeichnung im FileName haben, will ich diesen natürlich auch abändern. Da es sich aber um eine riesige Datenmenge handelt, erscheint mir die Funktion SendTo nicht sonderlich ratsam, da die alten Datein dann doch per Hand gelöscht werden müssen. Die Schleife ist durch die Umbenennung ja schon vorhanden. Eine Schleife für die Parts und eine für die Products. Daher dachte ich, gibt es vllt so eine Art "Replace"-Befehl, der die umgenannten Dateien mit neuem Namen abspeichert und den alten löscht... Hoffe du verstehst nun, was ich meine... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
IIYTII Mitglied
Beiträge: 85 Registriert: 30.05.2007 Catia V5 R19 Programmierung unter CATvba
|
erstellt am: 15. Sep. 2009 14:32 <-- editieren / zitieren --> Unities abgeben: Nur für Makronizer
Ja genau, mit replace habe ich mein Tabellenbaugruppenmakro auch aufgebaut. Ich glaube das Problem was du hast ist, dass du die neuen Teile nicht so einfach außerhalb von CATIA über die alten überschreiben kannst, wegen der UUID. Das Product sagt: Das heißt zwar wie das alte Teil, da ist aber nicht das alte drin? Der Befehl zum ersetzen lautet: Code: Dim Neu As Product Dim Alt As ProductSet Alt = Liste.Item(1) Set Neu = Liste.ReplaceComponent(Alt, Verzeichniseingabe & Teil(1) & Format(1), True)
Das habe ich noch in meiner verstaubten Makrokiste gefunden. Verzeichniseingabe ist bei mir eine extra Variable gewesen, aus der die neuen Dateien kommen. Dann kommt die Teilenummer und dann das Format, denn mit dem Makro konnte ich auch Producte in Producte einbauen. Ein Problem was ich früer hatte war, dass ich Liste.Item(X) nicht variable aufbauen konnte. D.h. er meckerte, denn die Zahl als Variable eingegeben wurde. Sehr unschön das, vllt. findest du ja einen Weg... Ich hoffe das hilft dir erstmal weiter... [Diese Nachricht wurde von IIYTII am 15. Sep. 2009 editiert.] [Diese Nachricht wurde von IIYTII am 15. Sep. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Makronizer Mitglied Dipl.-Ing Maschinenbau-Integrierte Produktentwicklung
Beiträge: 51 Registriert: 15.09.2009
|
erstellt am: 15. Sep. 2009 14:41 <-- editieren / zitieren --> Unities abgeben:
Wenn ich das also richtig verstehe, dann sollte ich in die jeweilige Schleife ein "automatisiertes" Save As einbauen, dann durch ReplaceComponent alt durch neu ersetzen (auch wenn nur die PartNumber sich ändert) und dann die alte Datei löschen? Wäre sicher eine Möglichkeit... ich hoffe das SaveAs macht mir da keinen Strich durch die automatisierte Rechnung... Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
IIYTII Mitglied
Beiträge: 85 Registriert: 30.05.2007 Catia V5 R19 Programmierung unter CATvba
|
erstellt am: 15. Sep. 2009 14:50 <-- editieren / zitieren --> Unities abgeben: Nur für Makronizer
Ich hatte jetzt daran gedacht, das du die neuen Teile, mit den geänderten Partnummern, bereits durch z.B. den CATIA Catalog Editor ausgeschüttet hattest und nun nur noch die alten Parts durch die neuen ersetzen musst. Oder war das jetzt die richtige Antwort zur falschen Frage von mir? :-D Save as sollte dir jedoch keinen Strich durch die Rechnung machen. Wenn du die UUID behalten willst, solltest du aber mit "Neu aus" arbeiten Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Makronizer Mitglied Dipl.-Ing Maschinenbau-Integrierte Produktentwicklung
Beiträge: 51 Registriert: 15.09.2009
|
erstellt am: 15. Sep. 2009 14:56 <-- editieren / zitieren --> Unities abgeben:
An den Parts ändert sich ja nichts, außer die Teilenummer... diese Teilenummer ist auch im Filename vorhanden. Der wird aber leider nicht automatisch mit abgeändert. Lasse ich also einen normalen Save drüber laufen, habe ich zwar die Partnumber geändert, jedoch nicht den Filename. Ich hoffe, ich habe es nun verständlich erklärt. :-D Die Alternative wäre von Hand: Properties->Partnumber ändern->Save As-> Namen ändern-> ReplaceComponent->eventuelle Verlinkungen umhängen An den Parts ändert sich nichts, ist also quasi nur eine reine Namensänderung in der PartNumber und entsprechend im Filename. 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: 15. Sep. 2009 15:09 <-- editieren / zitieren --> Unities abgeben: Nur für Makronizer
|
Makronizer Mitglied Dipl.-Ing Maschinenbau-Integrierte Produktentwicklung
Beiträge: 51 Registriert: 15.09.2009
|
erstellt am: 16. Sep. 2009 12:38 <-- editieren / zitieren --> Unities abgeben:
|
Makronizer Mitglied Dipl.-Ing Maschinenbau-Integrierte Produktentwicklung
Beiträge: 51 Registriert: 15.09.2009
|
erstellt am: 18. Sep. 2009 08:36 <-- editieren / zitieren --> Unities abgeben:
Da ich bisher nur Makros gesehen habe, die die PartNumber aus dem FileName beziehen, stelle ich nun ein Makro online, welches den entgegengesetzten Fall darstellt. PartNumber wird ausgelesen und anschließend wird das Part, Product, Drawing, cgr in einem seperaten Ordner unter neuem Namen Abgespeichert. Hoffe, es kann dem Einen oder anderen behilflich sein. Sub Speichern()
Dim Eingabe Eingabe = "S:\..." Eingabe = InputBox ("Bitte geben Sie den Öffnungs Ort ein.", "Alle Parts/Products Öffnen", Eingabe) If (Eingabe = "") Then Msgbox "Keinen Pfad angegeben", vbInformation, makroname + " " + Version Exit Sub End If Ausgabe = InputBox ("Bitte geben Sie den Zielordnerein.", "Alle", Eingabe) If (Ausgabe = "") Then Msgbox "Keinen Pfad angegeben", vbInformation, makroname + " " + Version Exit Sub End If CATIA.DisplayFileAlerts = False Dim oFileSystem Set oFileSystem = CATIA.FileSystem Dim oFolder ' Verzeichnisname für CATIA-Part ------------------------------------------------------------------------- Set oFolder = oFileSystem.GetFolder (Eingabe) Dim FileSep FileSep = oFileSystem.FileSeparator Dim i Dim j Dim oFile Dim oActiveDoc For i = 1 To oFolder.Files.Count Set oFile = oFolder.Files.Item(i) If Right(oFile.Name, 10) = "CATProduct" Then Set oActiveDoc = CATIA.Documents.Open(oFolder.Path + FileSep + oFile.Name) Dim document Dim splitname Set document = CATIA.ActiveDocument splitname = document.Product.PartNumber oActiveDoc.SaveAs (Ausgabe & "\" & splitname & ".CATProduct") oActiveDoc.Close End If 'For i = 1 To oFolder.Files.Count 'Set oFile = oFolder.Files.Item(i) If Right(oFile.Name, 7) = "CATPart" Then Set oActiveDoc = CATIA.Documents.Open(oFolder.Path + FileSep + oFile.Name) Set document = CATIA.ActiveDocument splitname = document.Product.PartNumber oActiveDoc.SaveAs (Ausgabe & "\" & splitname & ".CATPart") oActiveDoc.Close End If If Right(oFile.Name, 10) = "CATDrawing" Then Set oActiveDoc = CATIA.Documents.Open(oFolder.Path + FileSep + oFile.Name) Set document = CATIA.ActiveDocument splitname = document.Product.PartNumber oActiveDoc.SaveAs (Ausgabe & "\" & splitname & ".CATDrawing") oActiveDoc.Close End If If Right(oFile.Name, 3) = "cgr" Then Set oActiveDoc = CATIA.Documents.Open(oFolder.Path + FileSep + oFile.Name) Set document = CATIA.ActiveDocument splitname = document.Product.PartNumber oActiveDoc.SaveAs (Ausgabe & "\" & splitname & ".cgr") oActiveDoc.Close End If Next CATIA.DisplayFileAlerts = True End Sub
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: 18. Sep. 2009 08:52 <-- editieren / zitieren --> Unities abgeben: Nur für Makronizer
Servus Dir ist bewusst, dass beim öffnen der neuen Products diese die Einzelteile nicht mehr findet (da diese umbenannt wurden)? Zum das zu verhindern müsstest du die oberste Baugruppe öffnen und nun rekursiv zuerst alle Parts und dann alle Products umspeichern. Gruß Bernd EDIT: Ich hatte schon mal so was ähnliches zusammen gebastelt (siehe hier). Müsstest du auf deinen Fall umbauen (Export nach STEP entfernen) ------------------ Warum einfach, wenn es auch kompliziert geht. [Diese Nachricht wurde von bgrittmann am 18. Sep. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Makronizer Mitglied Dipl.-Ing Maschinenbau-Integrierte Produktentwicklung
Beiträge: 51 Registriert: 15.09.2009
|
erstellt am: 18. Sep. 2009 15:37 <-- editieren / zitieren --> Unities abgeben:
|
thomau96 Mitglied Konstrukteur
Beiträge: 43 Registriert: 18.10.2005 Catia V5 R19
|
erstellt am: 23. Sep. 2009 14:04 <-- editieren / zitieren --> Unities abgeben: Nur für Makronizer
Hallo, ich möchte mich kurz an dieses Thema anhängen. Gibt es bereits eine Möglichkeit, die Dateinamen aller Parts eines Produkts und dessen Unterprodukte gemäß der Partnumber (Filename = Partnumber) umzubenennen? Bis jetzt konnte ich leider nur Makros finden, welche nach dem Prinzip Partnumber = Filename arbeiten, jedoch noch nicht umgekehrt. Vielen Dank vorab Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Makronizer Mitglied Dipl.-Ing Maschinenbau-Integrierte Produktentwicklung
Beiträge: 51 Registriert: 15.09.2009
|
erstellt am: 23. Sep. 2009 14:06 <-- editieren / zitieren --> Unities abgeben:
|
thomau96 Mitglied Konstrukteur
Beiträge: 43 Registriert: 18.10.2005 Catia V5 R19
|
erstellt am: 23. Sep. 2009 14:10 <-- editieren / zitieren --> Unities abgeben: Nur für Makronizer
|