Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Dateinamen auslesen

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:  Dateinamen auslesen (2580 mal gelesen)
richter2
Mitglied



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

Beiträge: 81
Registriert: 21.10.2009

erstellt am: 06. Nov. 2009 16:22    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,

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


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: 06. Nov. 2009 17:55    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 richter2 10 Unities + Antwort hilfreich

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



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

Beiträge: 81
Registriert: 21.10.2009

erstellt am: 09. Nov. 2009 13: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

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



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

Beiträge: 81
Registriert: 21.10.2009

erstellt am: 09. Nov. 2009 16: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,

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


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: 09. Nov. 2009 17:15    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 richter2 10 Unities + Antwort hilfreich

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



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

Beiträge: 81
Registriert: 21.10.2009

erstellt am: 10. Nov. 2009 08:53    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 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



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

Beiträge: 62
Registriert: 27.12.2008

CATIA V5 R16 SP3

erstellt am: 10. Nov. 2009 20:06    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 richter2 10 Unities + Antwort hilfreich

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



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

Beiträge: 81
Registriert: 21.10.2009

erstellt am: 11. Nov. 2009 08:34    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 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

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