| |
 | CATIA V5 Grundkurs | Einsteiger - 5 Std. 15 Min 48 |
| |
 | KISTERS 3DViewStation mit neuer Zerschneidefunktionen und erweitertem PMI-Support, eine Pressemitteilung
|
Autor
|
Thema: Überschreiben bestehender Dateien (3239 mal gelesen)
|
Jannis1988 Mitglied

 Beiträge: 27 Registriert: 19.07.2012 Intel(R) Xeon(R) CPU X5575 @ 3.07 GHz 15.9 GB RAM Catia B19SP06HF57
|
erstellt am: 01. Aug. 2012 15:50 <-- editieren / zitieren --> Unities abgeben:         
Hallo miteinander, Ich habe ein großes Product mit vielen beinhalteten Parts. Oftmals wiederholen sich die Part Bezeichnungen (Bsp. Normteile). Da mein Makro in einem Zug durchlaufen soll, es aber immer wieder bei gleichen Bezeichnungen stehen bleibt und mich nach einer Bestätigung zum Überschreiben erzwingt (The item xxxx already exists. Do you want it to be overwritten?), frage ich mich wie man das evtl. umgehen kann? Soll ich eine Abfrage integrieren ob dieses Part vorhanden ist und das vorher löschen und wieder neu anlegen lassen? Wie geht man sowas an? Danke für alle Tipps!! -------------------------------- Hier der Code: Sub Parts_sichern() Set oRoot = CATIA.ActiveDocument Set oProducts = oRoot.Product.Products zaehl = oProducts.Count For i = 1 To zaehl Set pd1 = CATIA.ActiveDocument N = oProducts.Item(i).Name Typ = oProducts.Name Typ = Right(Typ, Len(Typ) - InStr(Typ, ".")) 'Abfrage Product oder Part If Not oProducts.Item(i).Products.Count > 0 Then Set selection1 = pd1.Selection 'Selektieren und übergeben selection1.Clear Set p1 = pd1.Product Set p2 = oProducts.Item(N) selection1.Add p2 selection1.Copy Set documents1 = CATIA.Documents 'Neues product öffnen Set productDocument1 = documents1.Add("Product") Set Product1 = productDocument1.Product Set selection2 = productDocument1.Selection selection2.Clear selection2.Add Product1 selection2.Paste sPath = "\\:C\XYZ" & N & ".CATPart" **** HIER VORHANDENSEIN ABFRAGEN UND LÖSCHEN???? **** productDocument1.SaveAs sPath End If Next End Sub
[Diese Nachricht wurde von Jannis1988 am 01. Aug. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Ehrenmitglied V.I.P. h.c. Manager
     
 Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 01. Aug. 2012 16:07 <-- editieren / zitieren --> Unities abgeben:          Nur für Jannis1988
|
HoBLila Mitglied Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx
   
 Beiträge: 1118 Registriert: 29.05.2008 DELL PRECISION T3500 Intel(R) Xeon(R) CPU W3540 @ 2.93GHz 12285 MB RAM NVIDIA Quadro FX 1800 Microsoft Windows 7 Enterprise Service Pack 1 CATIA V5 R19 SP09 HF69 VB6.5 CAA RADE CDC
|
erstellt am: 01. Aug. 2012 16:09 <-- editieren / zitieren --> Unities abgeben:          Nur für Jannis1988
Hast Du das Teil offen? Möchtest Du es wirklich überschreiben oder nur speichern? Wenn Überschreiben und nicht offen, dann würde ich es vorher löschen. Hol Dir vom CATIA das FileSystemObject, also CATIA.FileSystem Dieses hat die Methode Exits(), welcher Du einen Pfad übergeben kannst und ich glaube FileExists() für Dateien, genau das gleiche. Damit prüfen, wenn existiert, dann Methode zum Löschen (ich glaube Delete), auch vom FileSystemObject aufrufen. Edit: Daniel war wieder zeitgleich, aber schneller, ich lass mein gesagtes dennoch stehen. ------------------ Mit freundlichen Grüßen, Henry Schneider alias Lila Es gibt einen ewigen Wettkampf zwischen der Natur und den Ingenieuren: Die Ingenieure versuchen, immer idioten-sicherere Systeme zu bauen, die Natur versucht, immer bessere Idioten zu bauen Xing [Diese Nachricht wurde von HoBLila am 01. Aug. 2012 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
kernrot Mitglied

 Beiträge: 21 Registriert: 20.10.2007
|
erstellt am: 01. Aug. 2012 16:10 <-- editieren / zitieren --> Unities abgeben:          Nur für Jannis1988
|
DanielFr. Ehrenmitglied V.I.P. h.c. Manager
     
 Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 01. Aug. 2012 16:31 <-- editieren / zitieren --> Unities abgeben:          Nur für Jannis1988
|
Jannis1988 Mitglied

 Beiträge: 27 Registriert: 19.07.2012 Intel(R) Xeon(R) CPU X5575 @ 3.07 GHz 15.9 GB RAM Catia B19SP06HF57
|
erstellt am: 02. Aug. 2012 13:04 <-- editieren / zitieren --> Unities abgeben:         
Danke für die schnellen Antworten! Die Methode mit dem .Filesystem halte ich für sehr nützlich, schonmal vielen Dank dafür. Nebenbei ist noch ein anderes Problem aufgetaucht, das ich hier in den Raum stellen möchte: Meine gezogenen Parts sind nicht seperat abgespeichert, sonder enthalten immernoch eine Verlinkung zum Datenmanagementsystem. Diese Verlinkung verhindert das filebasierte Speichern der einzelnen Parts! Deshalb die neue Frage, es es möglich diese umgekehrt rekursiv anzusprechen? Das heißt von den Blättern aus den Kompletten Stammbaum durchzusuchen. Wie würde die Schleife aussehen? Hat jemand Erfahrung damit? Viele Grüße und Danke für die Hilfe. Zur Übersicht: ----------------------------------------------- Product | |___Part mit Attributen (Koordinaten, etc.) ----> Diese spreche ich an | | | |___Part seperat ----> diese Ebene will ich ansprechen | |___nächstes Part mit Attributen ....
------------------ <a href="http://www.xing.com/profile/Jannis_Kumelis" target="_blank" rel="me"></a> Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DanielFr. Ehrenmitglied V.I.P. h.c. Manager
     
 Beiträge: 2506 Registriert: 10.08.2005 HP Compaq 8710w, Intel Core Duo T7700, 2,40 Ghz, 3GB RAM, Windows XP Professionel @32bit, Quadro FX 1600M, CATIA V5 R19 SP3
|
erstellt am: 02. Aug. 2012 16:49 <-- editieren / zitieren --> Unities abgeben:          Nur für Jannis1988
|
DasDon Mitglied Konstruktuer
 
 Beiträge: 169 Registriert: 25.07.2011 R18 SP2. WIN
|
erstellt am: 02. Aug. 2012 20:21 <-- editieren / zitieren --> Unities abgeben:          Nur für Jannis1988
Moin moin, ich glabue es soll "bottom-up" gespeichert werden.
Code: Sub TreeWalk(oProd) FOR EACH oChild IN oProd.Products IF oChild.Counts > 0 THEN 'SEND PRODUCT TO TREEWALK TreeWalk oChild ELSE 'SEND TO SAVE SaveSub oChild END IF NEXT SaveSub oProd END Sub
So Ähnlich würde ich es aufbauen. Product kinder an schauen ob sie Kinder haben, wenn ja, deren kinder anschauen etc. Wenn nein part speichern. Solbald alle kinder gespeichert wurde, wir das PARENT gespeichert. Gruß, Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jannis1988 Mitglied

 Beiträge: 27 Registriert: 19.07.2012 Intel(R) Xeon(R) CPU X5575 @ 3.07 GHz 15.9 GB RAM Catia B19SP06HF57
|
erstellt am: 03. Aug. 2012 12:32 <-- editieren / zitieren --> Unities abgeben:         
Hallo Daniel ich meinte mit den Blättern die letzten Elemente im Stammbaum, sorry für meine schlechte Umschreibung. DasDon, die Idee ist gut leider werden dadurch aber nicht die letzten Elemente, also die Parts alleine angegriffen. (Bild dabei zur Erklärung) Auch die Versuche alle Elemente im Design Mode zu laden erst dannach anzugreifen sind gescheitert.(oProducts.Item(i).ApplyWorkMode (CatWorkModeType.DESIGN_MODE)? Ideen? Grüße 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: 03. Aug. 2012 12:39 <-- editieren / zitieren --> Unities abgeben:          Nur für Jannis1988
Servus Bitte Systeminfo ausfüllen. Ich empfehle dir mit dem VBA-Editor zu arbeiten, dann kannst du auch im Objetktbrowser die Struktur deiner Objekte näher betrachten. Vermutlich musst du mit .ReferenceDocument bzw .ReferenceDocument.Part (je nach de was du ansprechen willst) auf die "Unterelemente" deiner Products (also alles was in einen CATProduct eingebaut ist) und auf deren Part/PartDocumente zugreifen. Gruß Bernd ------------------ Warum einfach, wenn es auch kompliziert geht. Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
DasDon Mitglied Konstruktuer
 
 Beiträge: 169 Registriert: 25.07.2011 R18 SP2. WIN
|
erstellt am: 03. Aug. 2012 15:07 <-- editieren / zitieren --> Unities abgeben:          Nur für Jannis1988
Moin Jannis, wie willst du sie "angreifen"? Was meinst du damit? Mein Code speichert auch nicht die Dateien sonderen Zeigt wie man sich durch dem Baum durcharbeiten könnte. Ausserdem fehlen viele Bauteile. Die element die beim Treewalk "angefasst" werden sind Products Objekte. Diese haben nicht die Methode SaveAs, mann kann das (mMn) nur mit Documents machen. Wie man Products beim Treewalk mit SaveAs speichern könnte, kannst du hier nach Lesen und die Code Teile zusammen bauen: Makro zum automatischen umbenennen von Datei- und Partnamen Gruß, Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Jannis1988 Mitglied

 Beiträge: 27 Registriert: 19.07.2012 Intel(R) Xeon(R) CPU X5575 @ 3.07 GHz 15.9 GB RAM Catia B19SP06HF57
|
erstellt am: 03. Aug. 2012 21:35 <-- editieren / zitieren --> Unities abgeben:         
|