Autor
|
Thema: Dateinamen auslesen (2580 mal gelesen)
|
richter2 Mitglied
Beiträge: 81 Registriert: 21.10.2009
|
erstellt am: 06. Nov. 2009 16:22 <-- editieren / zitieren --> Unities abgeben:
Hallo, folgendes Problem: Ich habe ein Catia - Produkt welches sich aus mehreren cgr - Files zusammensetzt. Im Ordner wo dieses Produkt gespeichert ist, sind auch die cgr- Files gespeichert und mit cgr1.cgr, cgr2.cgr usw. durchnummeriert bzw. gespeichert. Lade ich dieses Produkt erscheint aber natürlich im Stammbaum der Produktstruktur als Name der Parts nicht cgr1 cgr2 usw. sondern die Beschreibungen, welche bei den Eigenschaften unter der Teilenummer bzw. Exemplarname eingegeben sind. Diese kann ich auch problemlos mit ...Product.Partnumber auslesen. So weit so gut. Ich möchte nun aber auch die Dateinamen, also die Namen unter denen die Parts als cgr File gespeichert sind auslesen bzw. zumindest erstmal die Zuordnung wissen. Also in der Form das z.B. PartA cgr7.cgr und PartB cgr1.cgr ist. Wie kann ich diese Zuordnung ermitteln bzw. die Dateinamen der Parts auslesen? Habe es bisher irgendwie über FullName versucht, war aber nicht erfolgreich... Vielen Dank für eure Hilfe Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
tberger Mitglied Application Manager CATIA V5 / V6
Beiträge: 1385 Registriert: 13.01.2007 WIN 7 64bit V5R21SP3HF49 3DX/V6 R2016x
|
erstellt am: 06. Nov. 2009 17:55 <-- editieren / zitieren --> Unities abgeben: Nur für richter2
Hallo Klaus, du brauchst in der Rekursion des Products für das currentprod (=Item(i)) nur den partnameandpath = currentprod.GetMasterShapeRepresentationPathName auslesen, dann hast du darin den Namen des CATParts und den Pfad.
------------------ Grüße aus dem Rheinland Thomas +++++++++++++++++++++++++++++++++ CATIA - eine Laune der Natur ... "Phase 2 in CATIA V5" - www.tobeplus.de tberger@tobeplus.de Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
richter2 Mitglied
Beiträge: 81 Registriert: 21.10.2009
|
erstellt am: 09. Nov. 2009 13:02 <-- editieren / zitieren --> Unities abgeben:
Hallo Thomas, vielen Dank für die Antwort. Dies ist natürlich der Befehl den ich brauche. Bloß funktioniert der nicht. Folgend ein verienfachter Script Auszug: Function ProdScan() For x = 1 To oProducts.Count i = i + 1 Set oParentDoc = oProducts.Item(x) If oProducts.Item(x).Products.Count > 0 Then sheet2.Cells(i, 1) = oParentDoc.GetMasterShapeRepresentationPathName Call ProdScan() Else sheet2.Cells(i, 1) = oParentDoc.GetMasterShapeRepresentationPathName End If Next End Function Unabhängig von anderen Syntaxfehlern in obiger Schleife (die fubktioniert in bereits mit einer Vielzahl anderer Befehle in den Zweigen) wird der Befehl oParentDoc.GetMasterShapeRepresentationPathName eben nicht ausgeführt. Kann mir jemand sagen was ich falsch mache? Vielen Dank für eure Hilfe Klaus
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
richter2 Mitglied
Beiträge: 81 Registriert: 21.10.2009
|
erstellt am: 09. Nov. 2009 16:57 <-- editieren / zitieren --> Unities abgeben:
Hallo, hat sich jemand das Miniscript nochmal angeschaut? Und kann mir jemand weiter helfen? Bin immer noch etwas ratlos... Evtl. kann mir auch mal jemand ein kleines Beispielscript geben, wo das auslesen der Dateinamen (Pfade) bereitsfunktioniert. Wäre super wenn jemand noch etwas dazu weiß Danke und Gruß Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
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: 09. Nov. 2009 17:15 <-- editieren / zitieren --> Unities abgeben: Nur für richter2
Welches Fehler bringt denn der Debuger? ------------------ 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 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
richter2 Mitglied
Beiträge: 81 Registriert: 21.10.2009
|
erstellt am: 10. Nov. 2009 08:53 <-- editieren / zitieren --> Unities abgeben:
Hallo Henry, der Debuger bringt folgende Fehlermeldung: Laufzeitfehler '2147467259 (80004005)' Automatisierungsfehler Unbekannter Fehler Kannst du damit etwa anfangen? Viele Grüße Andreas P.S.: Ist Übrigens CatiaV5 R19 Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
pittyplatsh Mitglied
Beiträge: 62 Registriert: 27.12.2008 CATIA V5 R16 SP3
|
erstellt am: 10. Nov. 2009 20:06 <-- editieren / zitieren --> Unities abgeben: Nur für richter2
Mit welcher Fehlermeldung bricht CATIA denn ab? Habe es eben mal ausprobiert: Struktur: Produkt |_ CGR |_ Part |_ Produkt Code: Sub CATMain()Dim documentRoot As Document Set documentRoot = CATIA.ActiveDocument Dim productRoot As Product Set productRoot = documentRoot.Product MsgBox(productRoot.Products.Item(1).GetMasterShapeRepresentationPathName) MsgBox(productRoot.Products.Item(2).GetMasterShapeRepresentationPathName) MsgBox(productRoot.Products.Item(3).GetMasterShapeRepresentationPathName) End Sub
Beim CGR und dem Part bringt er mir den gewünschten Pfad, jedoch beim Produkt bricht er mit dem folgendem Fehler ab: "The methode GetMasterShapeRepresentationPathName failed." Probier also mal folgendes aus: Code: Function ProdScan()For x = 1 To oProducts.Count i = i + 1 Set oParentDoc = oProducts.Item(x) If oProducts.Item(x).Products.Count > 0 Then If Not TypeName(oProducts.Item(x)) = "Product" Then sheet2.Cells(i, 1) = oParentDoc.GetMasterShapeRepresentationPathName Else sheet2.Cells(i, 1) = oParentDoc.ReferenceProduct.Parent.FullName End If Call ProdScan() Else If Not TypeName(oProducts.Item(x)) = "Product" Then sheet2.Cells(i, 1) = oParentDoc.GetMasterShapeRepresentationPathName Else sheet2.Cells(i, 1) = oParentDoc.ReferenceProduct.Parent.FullName End If End If Next End Function
Grund: Ein Product ist nicht visualisierbar [Quote]The master shape representation is the object that gives a geometric shape and allows the visualization of the product. [...] or any other type of document that can be displayed.[/Code] Daher versagt hier auch diese Methode. Nun könntest du überall mit ReferenceProduct.Parent.FullName reingehen, doch leider besitzt ein CGR, im Gegensatz zu einem Part oder Produkt, kein Dokument. Also müsstest du hier herausfilter ob es sich um ein CGR handelt oder nicht. ReferenceProduct.Parent auf ein CGR gibt dir das übergeordnete Produkt wieder bei einem CGR, bei einem Produkt- oder Part-Dokument jedoch das darunter liegende Produkt/Part. Liebe Grüße, pitty Edit: Um den Dateinamen herauszubekommen würde ich mir den kompletten Pfad in einen String speichern. Diesen wird dann einer Funktion übergeben. Dort kannst du mit Len(String) die Anzahl der Zeichen ermitteln. Dann kannst du mit einer While-Schleife die Position des letzten "." und des letzten "\" auslesen und die Zeichen dazwischen sind dann der Dateiname. Um den Fall eines unbespeicherten Objektes mit abzudecken (es wird nur der Dateiname und kein Pfad ausgegeben) stellst du noch eine Abfrage rein ob die derzeitige Position 0 ist. Liebe Grüße, pitty [Diese Nachricht wurde von pittyplatsh am 10. Nov. 2009 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
richter2 Mitglied
Beiträge: 81 Registriert: 21.10.2009
|
erstellt am: 11. Nov. 2009 08:34 <-- editieren / zitieren --> Unities abgeben:
Hallo pitty, vielen Dank für die ausführliche Antwort. Genau das was du hier schreibst, hatte ich gestern dann bereits selbst rausgefunden und in meine Schleife eingebaut... Dennoch vielen Dank und vielleicht hilft es ja noch den ein oder anderen Nutzer... Viele Grüße Klaus Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |