Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  CATIA V5 via COM-Schnittstelle - MatLab

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:  CATIA V5 via COM-Schnittstelle - MatLab (5325 mal gelesen)
Christrukteur
Mitglied
Ingenieur

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

Beiträge: 8
Registriert: 16.04.2010

CATIA V5R19 unter XP

erstellt am: 20. Apr. 2010 16: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

Hallo,

wir sind in einem reltiv aufwendigen und umfangreichen, irgendwann hoffentlich mal voll automatisiert laufenden, Tool auf die evtl. absurd wirkende Idee gekommen, CATIA von MatLab aus anzusteuern.
Das funktioniert ziemlich gut! Man muss nur die CATVBA-Befehle ein wenig übersetzen und es funzt praktisch alles. Natürlich muss man den Application-Server von CATIA vorher gestartet haben.

Hierbei sind allerdings Probleme entstanden:
ARRAYS!!! -> Wie funktionieren diese Dinger in CATIA genau? Jeder Versuch, ein Array über die COM-Schnittstelle zu befüllen oder gar zu erstellen scheitert! Hier ein Beispiel in CATScript:

Dim arrayOfVariantOfDouble1(8)
arrayOfVariantOfDouble1(0) = 0.0
arrayOfVariantOfDouble1(1) = 0.0
arrayOfVariantOfDouble1(2) = 0.0
arrayOfVariantOfDouble1(3) = -1.0
arrayOfVariantOfDouble1(4) = 0.0
arrayOfVariantOfDouble1(5) = 0.0
arrayOfVariantOfDouble1(6) = 0.0
arrayOfVariantOfDouble1(7) = 0.0
arrayOfVariantOfDouble1(8) = 1.0
sketch1.SetAbsoluteAxisData arrayOfVariantDouble1

Was ich in MatLab so umgesetzt hätte:

arrayOfVariantOfDouble1 = ([ 0.0 0.0 0.0 -1.0 0.0 0.0 0.0 0.0 1.0 ]');
feature('COM_PassSafeArrayByRef', 1);
sketch1.invoke('SetAbsoluteAxisData', arrayOfVariantOfDouble1);


Die Fehlermeldung sagt, hier wäre ein mismatch im array. Alle anderen Versuche wie ein double vors array zu setzen oder eben auch im vorneherein eine Dimension zu setzen schlugen fehl.
Hat jemand eine Idee, was man hier machen könnte?

Viele Grüße

Christof

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

Jens Hansen
Mitglied
Senior Consult


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

Beiträge: 1055
Registriert: 05.08.2000

Win7
CATIA V5 R19
VB.Net
C#

erstellt am: 20. Apr. 2010 23: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 Christrukteur 10 Unities + Antwort hilfreich

Hallo,
wie wird denn in Matlab ein Array "normalerweise" deklariert und gefüllt? Kannst du da mal ein einfaches Beispiel geben?

SG

Jens Hansen

------------------
Inoffizielle CATIA-Hilfeseite
Homepage von Jens Hansen
Kochbuch - CATIA V5 automatisieren

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: 21. Apr. 2010 09:36    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 Christrukteur 10 Unities + Antwort hilfreich

Auch VBA hat Probleme mit Arrays. 
Schuld ist zu einem Großen Teil Dassault, die mich scheinbar verwirren wollen, aber VBA an sich.

Beispielsweise geht es ja nicht die Methoden ByRef von klar definierten Objekten aufzurufen, die müssen dann als Object definiert sein.
Selbiges gilt oft für Übergabewerte, die vorallem bei Arrays oft Variant sein müssen (Ähnlich Split Operation).

Was Dassault aber auch noch macht, um das Chaos komplett zu gestalten ist, die Arrays öfter mal bei 1 statt 0 beginnen zu lassen.

Ich vermute also
- dass dein Sketch zu genau definiert ist oder
- dass dein Array nicht vom Typ Variant ist oder
- dass das Array vielleicht ByVal übergeben werden muss
- dass das Array eventuell nicht mit dem selben Index beginnt
- dass es vielleicht einen Größenunterschied in der Byte-begeung im RAM für Arrays gibt

Ein Variant sind glaube ich 32Byte.

Grundsätzlich sollte man über die COM-Schnittstelle mit jeder COM-Sprache arbeiten können. Ich bevorzuge VB, da ich dort den Vorteil habe, dass der Code ähnlich ist. Bzw. mache Neuerdings alles nurnoch mit CATVBA. Da das COM ist, greife ich lieber von der Seite auf die anderen programme wie Excel zu. 

Hoffe Dir wenigstens ein wenig geholfen zu haben.

------------------
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

Christrukteur
Mitglied
Ingenieur

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

Beiträge: 8
Registriert: 16.04.2010

CATIA V5R19 unter XP

erstellt am: 22. Jun. 2010 14:05    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

Vielen Dank für die Hilfe!
Ich habe das ganz in der Zwischenzeit über Python realisiert. Also startet sozusagen eine Python-Umgebung in der das Array erzeugt wird. Ein relativ schneller und effizienter Workaround. Wer hierzu mehr Input benötigt, kann mich jederzeit kontaktieren.

MfG

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

CabinMaster
Mitglied
Diplomingenieur L&R


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

Beiträge: 19
Registriert: 31.07.2009

Windows XP
Catia V5 R18
[und nein: Katja mag nur einen Prozessor zur Zeit benutzen]
Makro mit CATVBS

erstellt am: 09. Sep. 2010 09:47    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 Christrukteur 10 Unities + Antwort hilfreich

Ich würde bei Matlab lieber auf ASCII-Dateien setzen.
Also mit Matlab ASCII Dateien erstellen, diese dann mit CATIA auslesen.
Das habe ich mit CATVBS zum Exzess betrieben und es geht sehr gut.

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

phreak007
Mitglied
Student

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

Beiträge: 4
Registriert: 18.06.2008

CATIA V5R19
Windows XP

erstellt am: 16. Mai. 2011 11: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 Nur für Christrukteur 10 Unities + Antwort hilfreich

Ich muss das Thema nochmal hoch holen. Ich spiele momentan auch mit dem Gedanken, CATIA über MATLAB fernzusteuern. Wie genau sollten da die Befehle aussehen?

> h = actxserver ('CATIA.Application')

startet ja den CATIA-COM-Server, der nach etwa einer Minute

> h =
>
> COM.CATIA_Application

zurückliefert. Nun hatte ich versucht, mir die möglichen Befehle über

> hInt = h.interfaces

ausgeben zu lassen. Es wird aber nur

> hInt =
>
>      []

zurückgeliefert.

Bekomme ich überhaupt irgendwo eine Befehlsliste? Wie muss die Befehlssyntax aussehen? Der Befehl

> product2 = h.Documents.Add('Part')

funktioniert beispielsweise nicht:

> ??? No appropriate method, property, or field Documents for class COM.CATIA_Application.

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

ThomasJay
Mitglied
Dipl-Ing


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

Beiträge: 159
Registriert: 19.04.2011

CATIA V5 R19

erstellt am: 16. Jul. 2012 14:13    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 Christrukteur 10 Unities + Antwort hilfreich

WEnn ich cATIA über Matlab steuern kann, kann ich dann auch Geomterie aus CATIA auslesen, so dass ich zum Beispiel eine Fläche im CATIA wähle und dann mit dieser in Matlab arbeiten kann. Matlab müsste als die mathematische Formel hinter der Fläche erkennen. Ist so etwas möglich oder kann ich nur auf der Matlab-Seite Berechnungen ausführen und dann an CATIA übergeben um über Koordinaten GEometrie zu erzeugen?

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: 16. Jul. 2012 16:18    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 Christrukteur 10 Unities + Antwort hilfreich

Servus
IMHO kannst du nicht von extern auf die intern von CATIA verwendeten Formel für Flächen zugreifen.

Gruß
Bernd

PS: ggf geht das über CAA (sehr teuer und komplexer als VBA)

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

[Diese Nachricht wurde von bgrittmann am 16. Jul. 2012 editiert.]

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