Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Name von Parts 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:  Name von Parts auslesen (967 mal gelesen)
nadde
Mitglied
Studentin


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

Beiträge: 13
Registriert: 14.05.2014

CATIA V5R20
Microsoft Visual Studio 2010
MATAB R2013b

erstellt am: 05. Jun. 2014 10:12    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

Hey!

Ich arbeite gerade an meiner Bachelorarbeit und muss die Namen der Bauteile eines Produkts in Catia auslesen. Ich habe dafür eine Funktion in Visual Studio geschrieben, auf dich ich über die CatiaLinkLibrary in Matlab zugreifen will.

Zweck meiner Funktion ist folgender: Ich habe in Catia ein Produkt aus 3 Parts erstellt. Nun will ich die Namen dieser Parts auslesen, wenn das Produkt geöffnet ist.
So sieht der Code bisher aus:

Function getPartname() As Object
        ' Datentyp Object oder String??

        Dim PartnameArray() As String
        Dim productDocument As ProductDocument
        productDocument = CATIA.ActiveDocument

        Dim product As Product
        product = productDocument.Product

        Dim children As Products
        children = product.Products

        Dim NumberofParts As Integer
        NumberofParts = children.Count
        MsgBox(NumberofParts)             

        Dim partDocument As MECMOD.PartDocument       
        partDocument = children.Parent


        If TypeName(partDocument) = "PartDocument" Then
            MsgBox(partDocument.Name)
        End If


        Dim RefProduct As Product
        Dim iPartname As Integer
        iPartname = 0


        For Each product In children

            If product.children.Count > 0 Then
                getPartname()

            Else
                RefProduct = product.ReferenceProduct
                If TypeName(RefProduct.Parent) = "PartDocument" Then

                    PartnameArray(iPartname) = RefProduct.Parent.Name

                    MsgBox(RefProduct.Parent.Name)

                    iPartname = iPartname + 1
                End If
            End If
        Next

        MsgBox(PartnameArray(0))
        MsgBox(PartnameArray(1))
        MsgBox(PartnameArray(2))

        Return PartnameArray
    End Function


Die erste Fehlermeldung lautet: Error using CatiaLink/getPartname (line 993)
Message: Das COM-Objekt des Typs "System.__ComObject" kann nicht in den Schnittstellentyp "MECMOD.PartDocument" umgewandelt werden. Dieser Vorgang
konnte nicht durchgeführt werden, da der QueryInterface-Aufruf an die COM-Komponente für die Schnittstelle mit der IID
"{818C8B33-806B-0000-0280-030D3B000000}" aufgrund des folgenden Fehlers nicht durchgeführt werden konnte: Schnittstelle nicht unterstützt
(Ausnahme von HRESULT: 0x80004002 (E_NOINTERFACE)).
Source: CatiaLinkLibrary

Welchen Datentyp brauche ich in der Zeile "Dim partDocument As MECMOD.PartDocument"?
Seht ihr sonst noch Fehler?

Ich danke euch jetzt schon für eure Hilfe, denn ich kenne mich mit Visual Studio noch nicht so gut aus 

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: 05. Jun. 2014 11:08    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 nadde 10 Unities + Antwort hilfreich

Servus
Willkommen im Forum.
"children.Parent" liefert dir nicht das PartDocument der Instanz zurück sondern das Product des Rootproducts. Es sollte eigentlich so funktionieren wie du es weiter unten im Code hast (.product.ReferenceProduct)

Gruß
Bernd

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

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

nadde
Mitglied
Studentin


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

Beiträge: 13
Registriert: 14.05.2014

CATIA V5R20
Microsoft Visual Studio 2010
MATAB R2013b

erstellt am: 05. Jun. 2014 13: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

Danke für deine schnelle Antwort 
Wenn ich den Teil weglasse, kommt eine andere Fehlermeldung:

Error using CatiaLink/getPartname (line 993)
Message: Der öffentliche Member children für den Typ Product wurde nicht gefunden.
Source: Microsoft.VisualBasic

Was ist an der Initialisierung falsch oder habe ich etwas vergessen?

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: 05. Jun. 2014 15: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 Nur für nadde 10 Unities + Antwort hilfreich

Servus
Warum der Aufruf nicht funktioniert weiß ich nicht (ggf Call davor stellen).
Aber:
Du ruft die Funktion rekursiv aus, aber du übergibst nichts? Also wird bei Rootpruct begonnen (Endloschleife). Das kann IMHO nicht funktionieren. Such dir mal hier im Forum ein Beispiel zur Rekursion.

Gruß
Bernd

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

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

K.Siebert
Mitglied
Tech Zeichner


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

Beiträge: 415
Registriert: 19.05.2007

Win XP
Catia V5 R19
Catia V5 R24

erstellt am: 05. Jun. 2014 23:54    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 nadde 10 Unities + Antwort hilfreich

Hallo,
Diese HP hat mir immer sehr gut geholfen.

Alle Dokument-Instanzen des aktiven Products in ein Array schaufeln (über Selection Search)

------------------
Sei Schlau bleib Dumm !!?!!

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