Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  .SaveAs von komplettem Produkt

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
Autor Thema:  .SaveAs von komplettem Produkt (1560 mal gelesen)
mycon
Mitglied



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

Beiträge: 58
Registriert: 14.02.2011

Catia V5R19

erstellt am: 03. Jun. 2011 21: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

Hi,

ich versuch mich gerade an einem Makro in .NET, das ein komplettes .CATProduct mit allem was darin ist in ein neues leeres Verzeichnis zu speichern mit der .SaveAs Methode.

Dazu habe ich jetzt in einer ListView für jede im Produkt vorkommende Datei eine Auflistung gemacht. Dort ist u.a. die PartNumber und der derzeitige Dateiname aufgelistet.
In der Liste ist jedes Part/Product nur 1x vorhanden, auch wenn es mehrfach verbaut ist.

Dann gehe ich mit einer For each schleife durch die Liste, weise das Document mit Blabla = Catia.Documents.Item("Part1.CATPart") zu, wobei Part1.CATPart natürlich aus der Listview kommt, was auch ein Produkt sein kann.
Das ganze 2x, zuerst für alles was typename(blabla) <> "ProductDocument" ist, danach alle Produkte.

Allerdings kommen dann nur die Parts ins neue Verzeichnis, selbst die nicht komplett, es fehlen teilweise welche.
Von den Produkten, selbst vom Hauptprodukt, ist keine Spur.
Schaue ich nach dem "Export" in das SaveManagement von Catia, stehen aber alle Pfade korrekt drin, nur die die nicht im neuen Ordner sind stehen noch auf "Modified".
Beim Export sagt er im Direktfenster nach jedem .SaveAs
Eine Ausnahme (erste Chance) des Typs "System.Runtime.InteropServices.COMException" ist in Microsoft.VisualBasic.dll aufgetreten.
Aber die Datei speichert er dennoch (für Parts zumindest meistens)

Weiss jemand Rat?

Und ist es eigentlich egal in welcher Reihenfolge ich die Unterprodukte speicher?

[Diese Nachricht wurde von mycon am 03. Jun. 2011 editiert.]

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

tberger
Mitglied
Application Manager CATIA V5 / V6


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

Beiträge: 1385
Registriert: 13.01.2007

WIN 7 64bit
V5R21SP3HF49
3DX/V6 R2016x

erstellt am: 04. Jun. 2011 09:30    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 mycon 10 Unities + Antwort hilfreich

Hallo mycon,

wenn du verlinkte Parts hast (mit CCP bzw. Kontextlink) und die nicht in deiner Baugruppe, aber im Speicher sind (sichtbar in der Baugruppenverwaltung), dann kannst du diese mit deiner Baum-Schleifen-Methode nicht sichern.

Du könntest, sofern du "nur" die eine Baugruppe geladen hast dann auch über die Collection "Ducuments" über alle Document - Objekte durchgehen und diese wie du auch beschrieben hast je nachdem ob Part oder Product sichern.

Ich hatte das mal aufgebaut und in zwei Laufrunden zuerst die Parts, dann die Baugruppen gesichert (da sonst wieder die Baugruppen "modified" sind). Dabei musste ich feststellen, dass die verlinkten Parts dann wieder "modified" waren. Dieses kann nur mit einem gleichzeitigen Save gelöst werden (war zumindest mein damaliger Ansatz).

Dazu gibt es z.B. das etwas verpöhnte aber doch erfolgreiche StartCommand("Save All").

------------------
Grüße aus dem Thurgau
Thomas

+++++++++++++++++++++++++++++++++

CATIA - eine Laune der Natur ...

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

mycon
Mitglied



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

Beiträge: 58
Registriert: 14.02.2011

Catia V5R19

erstellt am: 04. Jun. 2011 13:01    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

hm, gibt es keine alternative?
Ich würde nur ungern duch alle geladenen Dokumente gehen, da man dann immer gezwungen wäre alles andere zu schließen.

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

mycon
Mitglied



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

Beiträge: 58
Registriert: 14.02.2011

Catia V5R19

erstellt am: 05. Jun. 2011 10:24    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

Ok, ich habe es jetzt zum funktionieren gebracht.
Ganz glücklich bin ich mit der Methode allerdings nicht.
Catia scheint hier etwas instabil zu sein.
Wenn ich mit einer Schleife durch alle Produkte gehe, dann erkennt er auch Parts als Products an und sichert es auch teilweise als .CatProduct ab in kombination mit einer Fehlermeldung im Direktfenster von VS.
Das lässt sich nur umgehen, indem ich es nicht speichere, sobald ein Fehler auftrat.
Das gleiche Problem habe ich dann am ende um alle auf "Modified" stehende Dokumente zu sichern.
Statt der StartCommand Methode geh ich nochmal mit einer 3. Schleife durch, das unterdrückt die Frage "Wollen Sie x Dokumente sichern?" und ist auch Sprachunabhängig.

Leider kommt es auch hier zu kuriosen Fehlern, daher muss ich das so machen:

Code:
        Err.Clear()
        For Each itm In LV_Elements.Items
            CatX = Catia.Documents.Item(itm.SubItems.Item(2).Text) 'itm = "Blupp.CATPart"
            If Err.Number = 0 Then
                If Not CatX.saved Then
                     CatX.Save()
                End If
            End If
            Err.Clear()
        Next


Alles in allem funktioniert es so, bin nur nicht ganz glücklich darüber das ich so unsauber arbeiten muss. Falls jemand einen Tipp hat wie man es besser lösen kann, wäre toll  


Edit:
Ich habe gerade festgestellt das im Produkt verbaute .cgr's nicht mit gespeichert werden.
Die sind nichtmal im SaveManagement aufgelistet.
Gibt es einen Weg von denen den richtigen Dateiname auszulesen?
Wenn im auf das cgr in den Properties schaue, steht dort nur das Mutterprodukt.CATProduct als Dateiname, ich brauche aber den richtigen Namen wie z.b. Blabla.cgr
Das gleiche Problem habe ich bei .model's
Kennt jemand eine Lösung?

[Diese Nachricht wurde von mycon am 05. Jun. 2011 editiert.]

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

Starbirth
Mitglied
Konstrukteur


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

Beiträge: 119
Registriert: 22.10.2009

erstellt am: 06. Jun. 2011 12:38    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 mycon 10 Unities + Antwort hilfreich

Hallo mycon,
brauchst du die Funktion unbedingt als Makro?
Wenn dem nicht so sein sollte, wollte ich kurz erwähnt haben, dass es eine CATIA eigene Funktion gibt die sehr genau das macht was du in deinem ersten Beitrag beschreibst.

Nennt sich im englischen "Send to... Directory". im Deutschen also etwa "An Ordner Senden/Senden an... Ordner".

Du findest die Funktion unter "File"/"Datei".

Wenn du die Funktion auswählst erhältst du im oberen Fenster eine Liste aller Daten die kopiert werden können (wenn du ein Produkt geöffnet hast, sind das alle Daten die in dem Produkt enthalten sind), diese übernimmst du mit einem Klick auf den Doppelpfeil komplett in die untere Liste. ganz unten wähltst du noch den Zielortner aus und los gehts.
Auch CGRs sollten so mitgenommen werden, ebenso eventuell verlinkte Konstruktioonstabellen etc.

Evtl. hilft das ja schon.

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)2023 CAD.de | Impressum | Datenschutz