Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de
  CATIA V5 Programmierung
  Überschreiben bestehender Dateien

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
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



Sehen Sie sich das Profil von Jannis1988 an!   Senden Sie eine Private Message an Jannis1988  Schreiben Sie einen Gästebucheintrag für Jannis1988

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von DanielFr. an!   Senden Sie eine Private Message an DanielFr.  Schreiben Sie einen Gästebucheintrag für DanielFr.

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Jannis1988 10 Unities + Antwort hilfreich

Hallo Jannis,

Unter dem Application-Objekt gibt es die Methode (Bool) DisplayFileAlerts. Diese schaltet die Fehlermeldung ab.

Aber du solltest dennoch über die FileFolder Objekt prüfen ob die Datei bereits existiert (ggf. Änderungsdatum). Dies ist wesentlich performanter (keine IO-Operationen der Festplatte)

------------------
MFG Daniel

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

HoBLila
Mitglied
Dipl.-Ing. (BA) praktische Informatik - Senior Entwickler CAx


Sehen Sie sich das Profil von HoBLila an!   Senden Sie eine Private Message an HoBLila  Schreiben Sie einen Gästebucheintrag für HoBLila

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Jannis1988 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von kernrot an!   Senden Sie eine Private Message an kernrot  Schreiben Sie einen Gästebucheintrag für kernrot

Beiträge: 21
Registriert: 20.10.2007

erstellt am: 01. Aug. 2012 16:10    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Jannis1988 10 Unities + Antwort hilfreich

Ganz einfach:
Code:

If CATIA.FileSystem.FileExists(sPath) Then
    Kill (sPath)
    End If

Beste Grüße
Kernrot

------------------
fa-b.de Dresden

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DanielFr.
Ehrenmitglied V.I.P. h.c.
Manager


Sehen Sie sich das Profil von DanielFr. an!   Senden Sie eine Private Message an DanielFr.  Schreiben Sie einen Gästebucheintrag für DanielFr.

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Jannis1988 10 Unities + Antwort hilfreich

Hallo,

Jedes Löschen / Neuschreiben der Datei sollte im geschilderten Fall vermieden werden. Wie bereits erörtert sind das alles IO-Operationen die den Cache und die Festplatte unnötig auslasten. Es geht hier immerhin um ein großes Produkt wie Jannis beschrieben hatte. Du solltest die Dateiattribute respektive den Save-Status der Teile erst prüfen (saved = true...nichts machen) und dann mit einem Select Case die zwei Fälle unterscheiden (Speichern / nicht speichern).

Einen Code kann fast jeder erzeugen...einen performanten nicht 

------------------
MFG Daniel

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Jannis1988
Mitglied



Sehen Sie sich das Profil von Jannis1988 an!   Senden Sie eine Private Message an Jannis1988  Schreiben Sie einen Gästebucheintrag für Jannis1988

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

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


Sehen Sie sich das Profil von DanielFr. an!   Senden Sie eine Private Message an DanielFr.  Schreiben Sie einen Gästebucheintrag für DanielFr.

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Jannis1988 10 Unities + Antwort hilfreich

Hallo Jannis,

So ganz verstehe ich das nicht. Was meinstdu mit Blättern? Bist du jetzt in einer CATDrawing? Wenn ja könntest du die Verlinkung auslesen und das zugehörige Produkt öffnen.

------------------
MFG Daniel

Systeminformation | Inoffizielle CATIA Hilfeseite | CATIA FAQ | Suche | TraceParts (Normteile...) | 3D Content Central (noch mehr Normteile...)

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

DasDon
Mitglied
Konstruktuer


Sehen Sie sich das Profil von DasDon an!   Senden Sie eine Private Message an DasDon  Schreiben Sie einen Gästebucheintrag für DasDon

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 02. Aug. 2012 20:21    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Jannis1988 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von Jannis1988 an!   Senden Sie eine Private Message an Jannis1988  Schreiben Sie einen Gästebucheintrag für Jannis1988

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities


Aufbau.JPG

 
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


Sehen Sie sich das Profil von bgrittmann an!   Senden Sie eine Private Message an bgrittmann  Schreiben Sie einen Gästebucheintrag für bgrittmann

Beiträge: 12054
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 03. Aug. 2012 12:39    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Jannis1988 10 Unities + Antwort hilfreich

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


Sehen Sie sich das Profil von DasDon an!   Senden Sie eine Private Message an DasDon  Schreiben Sie einen Gästebucheintrag für DasDon

Beiträge: 169
Registriert: 25.07.2011

R18 SP2. WIN

erstellt am: 03. Aug. 2012 15:07    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für Jannis1988 10 Unities + Antwort hilfreich

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



Sehen Sie sich das Profil von Jannis1988 an!   Senden Sie eine Private Message an Jannis1988  Schreiben Sie einen Gästebucheintrag für Jannis1988

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 oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Super Tipp dieser Threat, wieso konnte ich den nur übersehen?! Werd ich mir aufjedenfall mal genauer durchlesen! Danke Don 

------------------

http://www.xing.com/profile/Jannis_Kumelis

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2025 CAD.de | Impressum | Datenschutz