Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  Zugriff auf Parameter eines Catparts

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 Parameter eines Catparts (3441 mal gelesen)
cl10b
Mitglied
Student


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

Beiträge: 93
Registriert: 07.08.2010

erstellt am: 31. Jul. 2013 18:37    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


strukturbaum.png

 
Hallo,

ich versuche gerade aus vb.net die Parameter eines Modells zu ändern. Das klappt aber nur eingeschränkt. Ich kann problemlos auf Objekte zugreifen, die sich in der obersten Ebene des Strukturbaums befinden:

CATIA.Documents.Item("Test.CATProduct").Product.Parameters.Item("Testparameter").Value=xxx

bzw.

CATIA.Documents.Item("Test.CATPart").Parts.Parameters.Item("Testparameter").Value=xxx

klappt wunderbar.

Ich kriege es jedoch nicht hin, auf ein Part zuzugreifen, welches sich nochmal unterhalb eines Products befindet. Wie kommt man da ran?

Zur Verdeutlichung anbei ein Bild meines Strukturbaumes:

Auf den Parameter Enabled kann ich ohne Probleme zugreifen. An die Parameter von HullBody komme ich allerdings nicht heran...

[Diese Nachricht wurde von cl10b am 31. Jul. 2013 editiert.]

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

cl10b
Mitglied
Student


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

Beiträge: 93
Registriert: 07.08.2010

Catia v5 R21
OS: Win7pro SP1 64Bit
CPU:i5-2500
Ram:16Gb
Grafik: AMD Radeon HD 6700

erstellt am: 02. Aug. 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

Das bisher jegliche Resonanz ausbleibt, möchte ich nochmal im Detail auf mein Anliegen eingehen, zumal ich glaube, dass mein Problem nicht besonders exotisch ist...

Ich steuere aus VB.net heraus ein parametrisches CATIA Modell. Unter dem eigentlichen Rootproduct befinden sich munter gemischt weitere Products und Parts, die auch noch untereinander verschachtelt sein können:

nach dem Muster:

Root
-ProductX
-ProductY
-PartA
-PartB
-ProductZ
--PartC    (PartC befindet sich "in" ProductZ)

Alle Products und Parts sind parametrisch aufgebaut und haben jeweils ein eigenes ParameterSet, welches dem Product bzw. Part hierarchisch untergeordnet ist.


In meiner VB-Anwendung hole ich mir eine laufende CATIA-Instanz (bzw. erstelle eine neue Instanz) mit:

Try
   CATIA = GetObject(, "CATIA.Application")
Catch ex As Exception
   Try
      CATIA = CreateObject("CATIA.Application")
      CATIA.Visible = True
   Catch ex2 As Exception
      MsgBox("CATIA konnte nicht gefunden werden")
   End Try
End Try


Danach lade ich meine Datei mit:

CATIA.Documents.Open(Pfad)

Bis hier funktioniert auch alles problemlos.

Möchte ich nun die Parameter meiner Objekte ändern, kann ich das mittels

CATIA.Documents.Item("ProductX.CATProduct").Product.Parameters.Item("Testparameter").Value=xxx

bzw.

CATIA.Documents.Item("PartA.CATPart").Part.Parameters.Item("Testparameter").Value=xxx

ohne Probleme machen.

Ich scheitere jedoch daran ein Part anzusprechen, dass selber nochmal unterhalb eines Products liegt, also eine Konstruktion ala

CATIA.Documents.Item("ProductZ.CATProduct").Product.Item("PartC.CATPart").Part.Parameters.Item("Testparameter").Value=xxx

führt zum COMException Fehler.

Ich habe schon versucht den Makrorecorder zu benutzen, der spuckt aber ebenfalls nur Code aus, der nichtmal innerhalb Catia-VBA funktioniert.

Ich könnte jetzt natürlich meine Parameter alle in der oberste Hierarchie-Ebene zu verschieben, da es aber sehr viele Parameter sind, ginge dadurch eine Menge Übersicht verloren.

Es muss doch einen Weg geben, an die untergeordneten Bauteile heranzukommen...!

------------------
lg Christian

[Diese Nachricht wurde von cl10b am 02. Aug. 2013 editiert.]

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: 02. Aug. 2013 15: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 cl10b 10 Unities + Antwort hilfreich

Servus
Da bietest es sich an mal mit dem Watch-Fenster die Struktur der Objekte zu betrachten (und die Doku zu studieren). zB:
Code:
Sub CATMain()

Dim oDoc As ProductDocument
Set oDoc = CATIA.ActiveDocument

Dim RootProduct As Product
Set RootProduct = oDoc.Product

Dim oChildProduct As Product
Set oChildProduct = RootProduct.Products.Item(1) ' oder per Exeplarnamen .item("PartA.1")

Dim oChildDoc As Document
Set oChildDoc = oChildProduct.ReferenceProduct.Parent

Dim oPart As part
Set oPart = oChildDoc.part

Dim oParameter As Parameter
Set oParameter = oPart.Parameters.Item("Masse")

oParameter.Value = 5

End Sub


Gruß
Bernd

PS: Hast du dir schon mal ein Buch zu CATIA-Makroprogrammierung angeschaut?

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

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



Technischer Produktdesigner oder Technischer Zeichner (m/w/d)
Du teilst unsere Leidenschaft für Innovationen und Technologien und willst dich den Herausforderungen der Zukunft stellen? Dann komme zu FERCHAU Rosenheim: Wir realisieren spannende Projekte für namhafte Kunden in allen Technologien und für verschiedene Branchen. Ready for the next Level? Dann bist DU bei uns genau richtig!

Technischer Produktdesigner oder Technischer Zeichner (m/w/d)
Anzeige ansehenTechnischer Zeichner, Bauzeichner
cl10b
Mitglied
Student


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

Beiträge: 93
Registriert: 07.08.2010

erstellt am: 08. Aug. 2013 14: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 Bernd,

Danke für deinen Beitrag! Leider konnte ich damit auch keine Lösung zusammenschustern.

Wenn ich deinen Code mal umformuliere (ich finde die etablierte Form der CATIA-VB-Syntax unlesbar...), steht dort:

Code:

CATIA.ActiveDocument.Product.Products.Item("PartA.1").ReferenceProduct.Parent.Part.Parameters.Item("Masse").Value = 5

Nicht gerade das, was ich mir unter einer intuitiv nachvollziehbaren Klassenhierarchie vorstelle (das ist keine Kritik an deinem Beitrag!).

Interessanter Weise spuckt der Macrorecorder ein ganz ähnliches Konstrukt aus, dass dann aber nicht mal funktioniert, selbst wenn ich die Baumhierarchie stark vereinfache.
D. Ziethens Buch zur Makroprogrammierung brachte mich ebenfalls nicht weiter.

Ich habe nun durch Ausprobieren ein Konstrukt gefunden, dass meinen Wünschen genügt:

Code:

CATIA.Documents.Item("x.CATPart").Product.Parameters.Item("ParameterName").Value=xxx

bzw.

CATIA.Documents.Item("x.CATProduct").Product.Parameters.Item("ParameterName").Value=xxx


Damit kann ich jeden beliebigen Parameter, unabhängig wie tief verschachtelt er im Baum auch sei, ansprechen.

Vielleicht begreife ich die CATIA-Klassenstruktur ja doch noch eines Tages, derzeit geht sie mir einfach nur auf den Geist. Wohl vor allem, da ich derzeit viel in VisualStudio arbeite und der Aufbau sowie die Dokumentation des NET-Frameworks einfach vorbildlich sind.


------------------
lg Christian

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