Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Dokumentnamen aus assembly

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:  Dokumentnamen aus assembly (1152 mal gelesen)
HeinHein
Mitglied
Dipl Ing Maschinenbau


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

Beiträge: 44
Registriert: 16.02.2012

cgr und models Namen ermitteln

erstellt am: 18. Jun. 2013 14:57    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,

ich versuche verzweifelt aus einem Assembly die Dokumentnamen der enthaltenen Subassemblies und CATParts zu ermitteln.

Bisher klappt bei mir nur

for x =1 to CATIA.Documents.Count
  filename=CATIA.Documents.Item(x).Name
next

Mit CATIA.Documents werden aber alle geoeffneten Catia Dokumente angesprochen und genau das will ich nicht.

Wer kann mir helfen?

Gruss HeinHein

------------------
HeinHein

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: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 18. Jun. 2013 17:52    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 HeinHein 10 Unities + Antwort hilfreich

Servus
Bitte Systeminfo ausfüllen.
Dafür musst du die Products deines Products, und dessen Unterbaugruppen abarbeiten (siehe zb hier).
Dabei über .ReferenceProduct.Parent das Dokument auslesen (Achtung bei mehrfach verbauten Teilen wird dir auch mehrfach das Document ausgegeben).
Oder, falls Lizenz vorhanden, kannst du auch SendTo (siehe zB. hier) die Dokumente direkt auslesen.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

HeinHein
Mitglied
Dipl Ing Maschinenbau


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

Beiträge: 44
Registriert: 16.02.2012

cgr und models Namen ermitteln

erstellt am: 18. Jun. 2013 18: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

Joop,  vielen Dank  für die Antwort.

Gruss Volker

------------------
HeinHein

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

HeinHein
Mitglied
Dipl Ing Maschinenbau


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

Beiträge: 44
Registriert: 16.02.2012

cgr und models Namen ermitteln

erstellt am: 03. Jul. 2013 22:14    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,

ich versuche über eine rekursive Funktion alle Namen und Speicherorte eines Assemblys zu ermitteln.
Das klappt auch für CATParts und CATProducts.

Wenn ich aber eine CGR-Datei im Assembly habe ignoriert meine Funktion das einfach.
So wie ich die Sache verstehe ist doch das einzig entscheidende, ob das Funktionsargument vom NameTyp Product ist.
Wenn nicht müsste ich doch über GetMasterRepresentationPathName den Dateinamen erhalten oder     


Kann mir jemand mal die Schwachstelle in meiner Funktion zeigen?

PS: Bitte nicht über meine Kommentare im Code wundern. Bin noch auf Anfaengerniveau.

Gruss Hein

Code:
getDocumentsOfAssy m_objActiveDocument.Product

Function getDocumentsOfAssy(currProduct)
dim f_fileNameSingleName 'file name without path = key
dim f_a 'loop
'++++++ Treading of parent ++++++++++++++++++++++++++++
If TypeName(currProduct) = "Product" Then
'get file name and full path
f_fileNameSingleName=currProduct.ReferenceProduct.Parent.Name
addRegisterDocumentOfAssy f_fileNameSingleName' key
Else
MsgBox "Test no product -> name: " & currProduct.GetMasterShapeRepresentationPathName
End If'TypeName(currProduct.Products.Item(f_a)) = "Product"

'++++++ Treading of children ++++++++++++++++++++++++++++
for f_a = 1 to currProduct.Products.Count
If TypeName(currProduct.Products.Item(f_a)) = "Product" Then
'get file name and its full path
f_fileNameSingleName=currProduct.Products.Item(f_a).ReferenceProduct.Parent.Name
addRegisterDocumentOfAssy f_fileNameSingleName' key
'Rekursion
call getDocumentsOfAssy(currProduct.Products.Item(f_a).Products.Item(f_a))'Rekursion
Else
MsgBox "Test no product -> name: " & currProduct.Products.Item(f_a).GetMasterShapeRepresentationPathName
End If'TypeName(currProduct.Products.Item(f_a)) = "Product"
Next'for f_a=1 to currProduct.Products.Count
End Function'getDocumentsOfAssy


------------------
HeinHein

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: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 03. Jul. 2013 23:00    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 HeinHein 10 Unities + Antwort hilfreich

Servus
Bitte Systeminfo ergänzen.
Was mir auffällt: du rufts die Rekursion auf, ohne zu prüfen, ob ein Product (das kann auch ein Part sein) auch wirklich Unter-Products hat (zB If oProduct.Poroducts.count > 0 then)
Um ein cgr von ein Part/Product zu unterscheiden kannst du folgenden Code verwenden:
Code:
For Each oProduct In RootProduct.Products
    If oProduct.ReferenceProduct.Parent Is RootProduct.Parent Then 'bei ein cgr ist das Parent des Referenzdocments der Instanz gleich der Root-ProdcutDocument
        StrPath = oProduct.GetMasterShapeRepresentationPathName
    Else
        StrPath = oProduct.ReferenceProduct.Parent.FullName
    End If
Next
Ich bin mir aber nicht sicher was, jetzt bei einer Komponente passiert.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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

HeinHein
Mitglied
Dipl Ing Maschinenbau


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

Beiträge: 44
Registriert: 16.02.2012

cgr und models Namen ermitteln

erstellt am: 04. Jul. 2013 07: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

Hallo Bernd,

V5 R16
BS: Windows XP

vielen dank für den Hinweis.
Nach meinem Verständnis erfolgt die Prüfung hinsichtlich Unterprodukts, insofern, da die Rekursion nur innerhalb der
Schleife "for f_a = 1 to currProduct.Products.Count" erfolgt.

Habe ich da einen Denkfehler?

Gruss Hein

------------------
HeinHein

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: 11780
Registriert: 30.11.2006

CATIA V5R19

erstellt am: 04. Jul. 2013 08:02    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 HeinHein 10 Unities + Antwort hilfreich

Servus
Du arbeitest mit der Schelife über currProduct.Products alle Unterprodukte (also Einzelteile und Unterbaugruppen), allerdings rufst du die Funktion "getDocumentsOfAssy" auch bei Einzelteilen auf (currProduct.Products.Item liefert auch bei Einzelteilen ein Product zurück).
Schau dir das mal mit einer kleinen Testbaugruppe im Watchfenster an.

Gruß
Bernd

------------------
Warum einfach, wenn es auch kompliziert geht.

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