Hot News:

Mit Unterstützung durch:

  Foren auf CAD.de (alle Foren)
  CATIA V5 Programmierung
  CATIA V5 und C++

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 und C++ (3093 mal gelesen)
tonka
Mitglied



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

Beiträge: 59
Registriert: 18.07.2006

erstellt am: 20. Nov. 2006 19: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

Hy @ all

Weiß jemand von euch wie ich ein CATIA Makro mit C++.NET (2005) programmiere. Möchte erstmal nur einen 3D Punkt zeichnen. Mit VB.net geht das ohne Probleme, Verweis einfügen und normales Makro programmieren. In C++ kann ich zwar den Verweis einfügen, weiß aber nicht recht wie ich das am besten deklariere und dann die Funktionen von CATIA anspreche.

MFG
Tonka

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

tonka
Mitglied



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

Beiträge: 59
Registriert: 18.07.2006

erstellt am: 22. Nov. 2006 07: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

Hat keiner von euch eine idee???

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

Axel.Strasser
Ehrenmitglied V.I.P. h.c.
Selbstständig im Bereich PLM/CAx



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

Beiträge: 4107
Registriert: 12.03.2001

Früher war vieles gut, und das wäre es heute immer noch, wenn man die Finger davon gelassen hätte!

erstellt am: 22. Nov. 2006 09:23    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 tonka 10 Unities + Antwort hilfreich

Hast Du mal geschaut in Richtung CAA, da CAA Basis ja C++ ist kommst Du da vielleicht weiter. Vielleicht siehst Du da Methoden, aber wissen tue ich es nicht.

Axel

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

dr
Mitglied
CAD-/PLM-Entwickler und -Berater


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

Beiträge: 87
Registriert: 30.10.2001

erstellt am: 27. Nov. 2006 14:27    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 tonka 10 Unities + Antwort hilfreich

Hi,

Sorry, falls diese Antwort etwas spät kommt - ich lese nicht allzu regelmässig in den Foren herum...

Wenn Du Catia V5 via C++ ansprechen möchtest, ist der Weg über CAA tatsächlich der einfachste.
Aber natürlich nicht der einzige.
Falls Du einfach nur die Automation-Schnittstelle verwenden möchtest (sprich: wenn Dir die in VB verfügbare Catia V5 Funktionalität ausreicht), kannst Du's auch mit C++ machen - ohne CAA und teure CAA Lizenzen.

Ist aber natürlich komplizierter als mit VB.
Der Grund ist, dass die Automation-Schnittstelle COM als Middleware (also praktisch als Kommunikationsmedium) verwendet. Und VB ist nun mal so aufgebaut, dass COM Objekte gewissermaßen 'native' sind.

Wenn Du Dich intensiver mit COM beschäftigst, kannst Du die COM-Schnittstellen aber mit praktisch jeder beliebigen Sprache verwenden.

------------------
--
Danny Reinhold
Reinhold Software Services

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

tonka
Mitglied



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

Beiträge: 59
Registriert: 18.07.2006

erstellt am: 27. Nov. 2006 14: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

Hallo

Hätteest du vielleicht ein Beispiel, wie man mit c++ die API ansprechen kann, z.B. Punkt oder Linie. Habe in einigen Sprachen schon die APIs angesprochen, nur mit c++ happerts.

Danke
MfG
Tonka

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

dr
Mitglied
CAD-/PLM-Entwickler und -Berater


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

Beiträge: 87
Registriert: 30.10.2001

erstellt am: 28. Nov. 2006 09:38    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 tonka 10 Unities + Antwort hilfreich

Hallo tonka,

Ein Beispiel für CV5 habe ich gerade nicht - und da es recht viel Aufwand bedeutet, bastle ich jetzt auch keins. Sorry.

Aber falls Ihr unbedingt mit C++ und ohne CAA arbeiten möchtet, solltet Ihr Euch ohnehin eine intensivere COM-Schulung gönnen.
(Kann ich übrigens gerne anbieten...    )

------------------
--
Danny Reinhold
Reinhold Software Services

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: 28. Nov. 2006 10: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 tonka 10 Unities + Antwort hilfreich

Hallo,
für den externen Zugriff hier mal ein kleines Beispiel; allerdings in C#. Für C++ müsste es dann eine entsprechende Methode geben

-----------------------------------------------------------

object CatiaApp = null;
object CatiaDoc = null;
object Doc = null;

CatiaApp = Marshal.GetActiveObject("CATIA.Application");
//Ausschalten der Userinteraktion
object[] Wert = new object[1]{"False"};
object DisplayFileAlerts = CatiaApp.GetType().InvokeMember("DisplayFileAlerts", BindingFlags.SetProperty, null, CatiaApp, Wert);

//Catia über LateBinding #######################################################
try
{
CatiaDoc = CatiaApp.GetType().InvokeMember("Documents", BindingFlags.GetProperty, null, CatiaApp, null );
object[] part = new object[1]{"Part"};
Doc = CatiaDoc.GetType().InvokeMember("Add", BindingFlags.InvokeMethod | BindingFlags.OptionalParamBinding, null, CatiaDoc, part);
}
catch
{
return;
}

//Erstellen eines neuen geöffneten Körpers
try
{ //Geöffneten Körper hinzufügen
object Part = Doc.GetType().InvokeMember("Part", BindingFlags.GetProperty, null, Doc, null );
object openbodies = Part.GetType().InvokeMember("HybridBodies", BindingFlags.GetProperty, null, Part, null );
object openbody = openbodies.GetType().InvokeMember("Add", BindingFlags.InvokeMethod | BindingFlags.OptionalParamBinding, null, openbodies, null);
object[] openbodyname = new object[1]{"ImportedPoints"};
object obname = openbody.GetType().InvokeMember("Name", BindingFlags.SetProperty, null, openbody, openbodyname);

//Punkte erzeugen; Punktkoordinaten im Array "punkte"
object HybridShapeFactory = Part.GetType().InvokeMember("HybridShapeFactory", BindingFlags.GetProperty, null, Part, null );
for(int i = 0; i< punkte.GetUpperBound(0); i++)
{
object[] coord = new object[3]{punkte.GetValue(i,0), punkte.GetValue(i,1),punkte.GetValue(i,2)};
object point = HybridShapeFactory.GetType().InvokeMember("AddNewPointCoord", BindingFlags.InvokeMethod | BindingFlags.OptionalParamBinding, null, HybridShapeFactory, coord);
object[] addpoint = new object[1]{point};
object AppendHybridShape = openbody.GetType().InvokeMember("AppendHybridShape", BindingFlags.InvokeMethod | BindingFlags.OptionalParamBinding, null, openbody, addpoint);
}

object Update = Part.GetType().InvokeMember("Update", BindingFlags.InvokeMethod | BindingFlags.OptionalParamBinding, null, Part, null);

}
catch
{
return;
}
--------------------------------------------------------

Jens

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

tonka
Mitglied



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

Beiträge: 59
Registriert: 18.07.2006

erstellt am: 29. Nov. 2006 10:23    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!

Danke, der Code klappt super 

Eine kleine Frage habe ich noch. Mit der Zeile...

Doc = CatiaDoc.GetType().InvokeMember("Add", BindingFlags.InvokeMethod | BindingFlags.OptionalParamBinding, null, CatiaDoc, part);

... wird ein neuer Part erstellt, wie kann ich den Namen des erzeugten Parts ändern, alles was ich versucht habe wurde zwar kompiliert, aber der Part wurde nicht umbenannt.

MfG
Tonka

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: 29. Nov. 2006 21: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 tonka 10 Unities + Antwort hilfreich

Hallo Tonka,
folgender c#-code schreibt die Teilenummer eines Parts um:
-------------------------------------
object PartProduct = Doc.GetType().InvokeMember("Product", BindingFlags.GetProperty, null, Doc, null );

//Teilenummer ändern
object[] TeileName = new object[1]{"neuer_Teilename"};
object Name = PartProduct.GetType().InvokeMember("PartNumber", BindingFlags.SetProperty, null, PartProduct, TeileName);
------------------------------------------------

Jens 

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

tonka
Mitglied



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

Beiträge: 59
Registriert: 18.07.2006

erstellt am: 30. Nov. 2006 07:38    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 Danke Jens, hat super geklappt

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