Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Zugriff auf Part im 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:  Zugriff auf Part im Produkt (8242 mal gelesen)
hotschen
Mitglied



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

Beiträge: 15
Registriert: 11.09.2008

Catia V5r16

erstellt am: 23. Jun. 2009 12: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

Hallo zusammen.

Ich versuche mich gerade an der Makroprogrammierung für CATIA. Mit VBA für Excel und VB hatte ich eigentlich nie grosse Probleme. Bei Catia versteh ich ehrlich gesagt die Objekte nich.

Mein Anliegen:

Ist  ein Part geöffnet, soll dieses in ein neues Produkt eingefügt werden, ist ein Produkt offen, will ich Zugriff auf das erste Part im Produkt. Anschlissend will ich auf eine Ebene in einem bestimmten Set zugreifen, aber soweit bin ich noch nicht.

Mein bisheriger Code (zusammengefriemelt aus der Hilfe):

Code:

Sub CATMain()
   
'    Dim oPartDoc As Document
   
   
    Dim oProductDoc As Document
    Dim oRoot As Product
    Dim oRootCol As Products
    Dim oNewComponent As Product
   
    Set oPartDoc = CATIA.ActiveDocument
       
    If TypeName(oPartDoc) <> "ProductDocument" Then
        Set oProductDoc = CATIA.Documents.Add("Product")
        Set oRoot = oProductDoc.Product
        Set oRootCol = oRoot.Products
        Set oNewComponent = oRootCol.AddExternalComponent(oPartDoc)
    Else
        Set oProductDoc = oPartDoc
        Set oRoot = oProductDoc.Product
        Set oRootCol = oRoot.Products
        Set oPartDoc = oRootCol.Item(1)

    End If

    MsgBox oPartDoc.Name

End Sub


Was ich generell nicht verstehe ist der Aufbau
oProductDoc-->oRoot-->oRootCol

Wenn ich oPartDoc asl Document deklariere, bekomme ich eine Fehler, wenn ich das Part aus dem Produkt auslesen will. Ich vermute, weil ich einmal auf das Dokument und einmal auf die Instanz zugreifen will? Aber wie gesagt, genau dieser Zusammenhang ist mir ein Rätsel.

Es wäre schön, wenn mir jemand anhand des Codes kurz den Aufbau von Document, Partdocument, Product, Products etc erklären könnte.
Ich weiss, dafür ist das Forum eigentlich nicht da, aber vielleicht hat ja jemand doch Musse dafür.

Gruß hotschen

Edit: Nochwas...ich kann seit neuestem aus Catia keine VBA Makros mehr starten, nur über den Umweg per Editor. woran kann das liegen?

[Diese Nachricht wurde von hotschen am 23. Jun. 2009 editiert.]

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

zoltan.bekesi
Mitglied



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

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 23. Jun. 2009 19:33    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 hotschen 10 Unities + Antwort hilfreich

Hallo hotschen,

der Titel des Threads ist zwar irreführend, hier habe ich aber schon ziemlich ausführlich über die Struktur von Parts/Products geschrieben. Sehe dir das mal an, bzw. die V5Automation.chm. In letzteren ist die Objektstruktur von CATIA beschrieben.
Oder mache CATIA.ActiveDocument in VBA im Watchfenster auf.

Zu deine andere Frage: was ist die Fehlermeldung?

Gruß,
Zoltan

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

hotschen
Mitglied



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

Beiträge: 15
Registriert: 11.09.2008

Catia V5r16

erstellt am: 23. Jun. 2009 20: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 Zoltan,

vielen Dank für den Link, der bringt so einiges Licht ins Dunkle. Ich hatte zwar das Forum schon durchwälst, der Thread ist mir aber irgendwie durch die Lappen gegangen.

Die andere Frage bezüglich der VBA Makros hat sich wie von Geisterhand erledigt.
Ich konnte per ALT+F8 nur CATScript und VBScript dateien anwählen. VBA Projekte waren nicht möglich (auch kein Bibliotheken).
Wie gesagt, jetzt gehts komischerweise wieder, interessieren würde es mich aber dennoch was das war.

Gruß hotschen

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

zoltan.bekesi
Mitglied



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

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 23. Jun. 2009 21:32    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 hotschen 10 Unities + Antwort hilfreich

Hallo hotschen,

wenn du noch konkrete Fragen über die Objekte hast, kannst du stellen.
Tatsächlich ist der angegeben Thread ziemlich weit von der Titel gelaufen. Ich weiß nicht, wie man es jetzt berichtigen könnte.

Ich nehme an, du kennst den Combobox zur Auswahl von den aufgenommenen VBA-Projekte/Makroverzeichnisse oben im ALT+F8 Dialogbox und auch die Taste rechts oben, womit man die Projekte/Verzeichnisse aufnehmen kann.
Wenn ja, dann habe ich auch keine Ideen.

Gruß,
Zoltan

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

blackhawk
Mitglied
Student


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

Beiträge: 28
Registriert: 05.06.2009

erstellt am: 22. Jul. 2009 11:45    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 hotschen 10 Unities + Antwort hilfreich

Hallo,
habe gerade diesen Thread gefunden und habe ein ähnliches Problem.

Der Benutzer selektiert aus einem Produkt ein Part, mittels einer Aufforderung. Diese Selektion habe ich in einer Liste gespeichert und habe damit das Part ermittelt.
Mit diesem Part will ich weiterarbeiten, die Prozedur die das weiterverarbeitet, will aber kein Part haben sondern das Document.
Wie komme ich von diesem Part wieder auf das Document. Ich habe es mit Part.Parent versucht, allerdings scheint das nicht zu funktionieren.

Wie könnte man das lösen?

mfG

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

chung
Mitglied



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

Beiträge: 23
Registriert: 25.04.2007

MS Windows XP SP2; x86 3,72 GHz; 4GB RAM; NVIDIA Quadro FX 1400; CATIA V5 R17 SP7

erstellt am: 22. Jul. 2009 13:45    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 hotschen 10 Unities + Antwort hilfreich

Probiers mal damit:

   Set oProducts = DeinPart.Parent
   Set DeinPart = oProducts.Item(DeinPart.Name)
   Set DeinDocument = DeinPart.ReferenceProduct.Parent

Ich hab auch einiges rumprobiert, das hat dann geklappt.
Warum ich den Umweg brauche, weiss ich auch nicht.

Jürgen

[Diese Nachricht wurde von chung am 22. Jul. 2009 editiert.]

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

blackhawk
Mitglied
Student


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

Beiträge: 28
Registriert: 05.06.2009

erstellt am: 22. Jul. 2009 14: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 hotschen 10 Unities + Antwort hilfreich

Ok.

Und als was muss ich oProducts definieren?
[...]
Set p_part = Liste.Item(1).Value 'Die Liste liefert das selektierte Part
Liste.Clear

Dim oProducts As Products

  Set oProducts = p_part.Parent
  Set p_part = oProducts.Item(p_part.Name)
  Set Rueckgabefunktion = p_part.ReferenceProduct.Parent

So kommt bei mir ein Fehler. "Type mismatch"
Ich steig da nicht so richtig durch mit den Bezeichnern.
p_part ist definiert als MECMOD.Part
oProducts muss das als Products, Product, Productdocument definiert werden?
Die Rueckgabefunktion muss vom Typ document sein.

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

zoltan.bekesi
Mitglied



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

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 22. Jul. 2009 18:56    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 hotschen 10 Unities + Antwort hilfreich

Hallo blackhawk,

wenn p_part ein MECMOD.Part ist, dann die p_part.paren ein PartDocument. In VB.NET müsste die Funktion TypeName(p_part.parent) dieses auch zurückgeben.
Wie oben beschrieben, ist die Struktur logisch, aber man muss sich da etwas reindenken. Ich schlage dir vor, in VBA etwas mit der Struktur außeinanderzusetzen. Das Wissen kannst du dann auch unter .NET verwenden.

Gruß,
Zoltan

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

blackhawk
Mitglied
Student


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

Beiträge: 28
Registriert: 05.06.2009

erstellt am: 23. Jul. 2009 15:31    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 hotschen 10 Unities + Antwort hilfreich

Hab mit dem Watcher rausgefunden, dass das Parent von meinem Part tatsächlich ein Partdocument ist, also habe ich:

Dim oProducts as PartDocument

Allerdings in der nächsten Zeile kann dann das PartDocument kein Attribut "Item" haben!?

Ich hoffe ihr habt das richtig verstanden.
Normalerweise ist das Programm für Parts gedacht, wenn ich es aber jetzt auch anwenden will in Produkten, dann muss ich dem Benutzer erst die Möglichkeit geben das Part auszuwählen. Die Funktion die das ganze dann aber weiterverarbeitet muss vom Typ Document sein.

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

zoltan.bekesi
Mitglied



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

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 23. Jul. 2009 18:40    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 hotschen 10 Unities + Antwort hilfreich

Hallo blackhawk,

bitte stelle hier ein Stück deiner Code rein. So verstehe ich deine Frage nicht ganz. Vielleicht können wir dir dann auch helfen.

Gruß,
Zoltan

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

blackh4wk
Mitglied
Student

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

Beiträge: 3
Registriert: 09.10.2008

erstellt am: 23. Jul. 2009 20:17    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 hotschen 10 Unities + Antwort hilfreich

Private Function Rueckgabe() As Document
   
    Set Rueckgabe = Nothing

    Dim i As Long

    For i = 1 To CATIA.Documents.Count

        Dim p_Document As Document
        Set p_Document = CATIA.Documents.Item(i)
Set Rueckgabe=p_Document

        If (TypeName(p_Document) <> "PartDocument") Then GoTo Continue
       
        Dim p_PartDoc As MECMOD.PartDocument
        Set p_PartDoc = p_Document
        Dim p_Part As MECMOD.Part
        Set p_Part = p_PartDoc.Part
           

On Error GoTo Continue

Continue:
    On Error GoTo 0

'Bei diesem Teil komme ich nicht weiter, Hier soll jetzt das Part ausgewählt werden können über die Selektion und genau wie oben als Document zurückgegeben werden
'Wenn ich den Part auswähle und gebe ihn direkt an die Funktion zurück bringt er ja einen Typenfehler, deswegen muss ich irgendwie den 'Umweg übers Dokument schaffen.

Set Rueckgabe=p_Document
    Next i

End Function

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

zoltan.bekesi
Mitglied



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

Beiträge: 321
Registriert: 22.10.2006

Job:
CATIA V5R19 / XP 32bit
MS Office 2003
Microstation V8 2004 Edition
DELL Precision M6300

erstellt am: 24. Jul. 2009 19: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 Nur für hotschen 10 Unities + Antwort hilfreich

Hallo,

versuche es mal so für den fraglichen Teil:

Code:
dim SelElements(0)
SelElements(0) = "Part"
dim UserSel as string
UserSel = ActDoc.Selection.SelectElement2(SelElements, "Bla", True)
Dim p_Part As MECMOD.Part
If UserSel = "Normal" Then
    Set p_Part = Selection.Item(1).Value
    Set Rueckgabe = p_Part.Parent
End If

Gruß,
Zoltan

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



Techniker*in für Infrastrukturplanung und operatives Vertragsfirmenmanagement

Willst Du gemeinsam mit uns das 36.000 Kilometer lange Berliner Stromnetz fit halten, ausbauen und modernisieren? Willst Du Dich mit voller Kraft für unsere 3,7 Millionen Kund*innen und für eine nachhaltige Stadtgesellschaft engagieren?

Dann unterstütze uns zum nächstmöglichen Zeitpunkt als

Techniker*in für Infrastrukturplanung und operatives Vertragsfirmenmanagement

Anzeige ansehenProjektmanagement
blackhawk
Mitglied
Student


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

Beiträge: 28
Registriert: 05.06.2009

erstellt am: 27. Jul. 2009 11:50    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 hotschen 10 Unities + Antwort hilfreich

Herzlichen Dank vor allem dir zoltan. Es hat funktioniert mit einigen kleinen Änderungen bei der Selektion. Habe viel gelernt über die Struktur von CATIA von Part, Document, Partdocument, Productdocument & CO.
Hoffe der Beitrag hilft noch vielen anderen.

10 Units für euch.

MfG

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