Vítejte !   Přihlášení | Registrace
Hlavní menu
CATIA fórum.cz
Novinky
Seriál CATIA
Obecně o CAD
Novinky ze světa DS
Makra pro CATIA V5
Diskuse
Základy Catia
Ke stažení
Doporučujeme
Pracovní příležitosti
Reklama a kampaně
O fóru
Nápověda

Programujeme v .NET - 2.díl: COM reference a spojení s Catia

Publikováno: 22. října 2013 | Zobrazeno: 3092x
V dnešním dílu seriálu navážeme na první článek o VB.NET, kde jsme si ukázali vývojové prostředí Visual studia XE 2008, základní navigaci, vysvětlili si dva základní typy aplikací a předvedli, jak se vytvoři a uloží nový projekt typu Windows form application.

COM reference

Abychom mohli začít s vlastním programováním, je třeba udělat ještě velmi důležitou věc - vytvořit reference na potřebné COM objekty (popis na Wikipedii), pomocí kterých budeme Catii prostřednictvím makra ovládat.
Možná se ptáte, proč musíme něco takového dělat, v integrovaném VBA editoru se přece nic takového dělat nemusí. Ano, nemusí, a je to právě kvůli tomu, že VBA editor je integrovaný do prostředí Catia a tento krok se provede již při její instalaci. Ale nenechte se odratit, kromě této "nutnosti" u VB.NET nejdeme ve srovnání s VBA jen výhody.

Reference vytvoříme následovně. V solution exploreru klikneme pravým tlačítkem na vrcholový objekt ve stromu - MojeMakro - a z kontextového menu vybereme Properties. V Editoru se otevře další záložka, kde jsou přístupná další nastavení a vlastnosti projektu.

Sekce pro nastavení referencí

Zde dále vybereme sekci References, kde můžeme přidávat COM a .NET reference. Pro přidání referencí klikneme na tlačítko Add a z nabídky vybereme možnost Reference. Otevře se další okno s několika záložkami. Pro nás je důležitá druhá záložka COM, kde jsou k dispozici všechny reference dostupné v systému. Abyste se nemuseli trápit s tím, které z referencí vybrat (jen pro Catii je jich tu skoro 100), na dalším obrázku jsou označené barevně ty, které budeme potřebovat. Červenou barvou jsou označeny základní a bezpodmínečně nutné, modrou barvou pak ty pro nejčastěji používané moduly. Z některých názvů referencí se dá poznat, pro který modul jsou určené a budeme je tedy pro makro potřebovat, u některých to poznat není. Když hledáme referenci pro konkrétní modul a nevíme která to je, postupujeme metodou pokus-omyl. Přidáme referenci, otestujeme zda obsahuje objekty které potřebujeme, a pokud se netrefíme, zase ji odebereme.

Nutné reference pro základní moduly CATIA

Pro začátek vybereme pouze červeně označené. Ty nám budou stačit pro základní operace (práce s dokumenty, výběr, procházení sestav, ...). Pokud ale budeme chtít pracovat např. s modulem Part Design, musíme si navíc přidat COM objekt CATIA V5 Part Interfaces Object library, který obsahuje potřebné objekty (Body, GeoSety, Feature). Po potrzení výběru bychom v seznamu měli mít minimálně tyto čtyři reference.

Minimální potřebné reference pro přístup ke Catia

Pokud se podařilo, máme v tuto chvíli COM objekty nalinkované a můžeme se vrátit zpět do editoru kódu. Tady je potřeba udělat poslední věc, a sice říct naší aplikaci (třídě s formulářem), že tyto reference budeme používat. Deklarace se provede pomocí klíčového výrazu Imports úplně na začátku kódu.
' import CATIA COM objektu

Imports INFITF
Imports MECMOD
Imports ProductStructureTypeLib
Imports KnowledgewareTypeLib

Co když mám více verzí Catia?

Pokud máme nainstalováno více verzí Catia, vytvoří se reference z té verze, která je aktuálně registrovaná v systému. Většinou to je ta naposledy instalovaná (při instalaci se vždy registruje). Pokud máme jen jednu verzi, není třeba to řešit. U více verzí si můžeme vybrat, kterou použijeme pro kompilaci. Registrace se provede příkazem cnext.exe /regserver v adresáři /code/bin příslušné verze.
Můžete si také vytvořit makra speciálně kompilovaná pro konkrétní verze. K tomu stačí provést vždy před kompilací projektu provést přeregistraci na jinou verzi.
Ze zkušeností můžu říct, že makra kompilovaná na nižší verzi fungují bez problémů na vyšší verzi. Momentálně kompiluji na R19SP9 a na R20 i R21 makra fungují. COM objekty se ale přeci jen verzi od verze mění a kompatibilita není 100%.

Poznámka:V integrovaném VBA, máme vždy jistotu, že makro bude používat aktuální reference - editor je totiž spuštěný uvnitř Catia, takže používá reference právě této spuštěné verze.

Rutina pro spojení s Catia

Nyní máme připravené vše potřebné a můžeme se vrátit k samotnému programu. Ještě předtím si ale trochu poupravíme název třídy a titulek hlavního formuláře - podle obrázku. Titulek formuláře je jeho vlastnost Text, název třídy formu změníme ve stromu solution exploreru.

Přejmenování formu

Pro vlastní spojení s Catia musíme získat vrcholový objekt CATIA typu application. Nejprve si tedy vytvoříme potřebnou proměnou.
Dim CATIA As Application

Dále vytvoříme funkci, která se pokusí získat objekt Catia. Použijeme zde ošetření pomocí konstukce Try - Catch, které je nutné pro případ, že Catia není spuštěná - funkce GetObject selže. V tom případě vrátíme False.
' funkce pro spojeni s Catia

Function PripojCatia() As Boolean
Try
CATIA = GetObject(, "CATIA.Application")
Return True
Catch ex As Exception
Return False
End Try
End Function

Abychom si funkci mohli vyzkoušet, vytvoříme proceduru hlavního programu, která funkci PripojCatia použije a řekne nám, jestli je Catia spuštěná či nikoliv. Do formu přidáme tlačítko pojmenované Button_TestSpojeni, které bude hlavní program spouštět.
Kód hlavního bloku:
Sub TestSpojeni() Handles Button_TestSpojeni.Click

If PripojCatia() Then
MsgBox("CATIA je spuštěna.", MsgBoxStyle.Information, "COM")
Exit Sub
Else
MsgBox("CATIA není spuštěna!", MsgBoxStyle.Critical, "COM")
End If

' dalsi prikazy
' ...
End Sub

MsgBox s úspěšným hlášením o spojení
MsgBox s varovným hlášením, pokud se spojení nepodaří
A teď už to jen vyzkoušet. Spustíme makro a klikneme na tlačítko. Pokud je Catia spuštěná, měl by se objevit informační Message box, v opačném případě výstraha.
Pokud se připojení nedaří ani pokud je Catia spuštěná, může být příčina v nesprávné registraci. Pak stačí jen Catii znovu zaregistrovat, viz popis na začátku článku.

A to je celý postup. Catia je připojená a s objektem CATIA můžeme pracovat úplně stejně jako ve VBA.

Pro úplnost ještě celý kód:
' import CATIA COM objektu

Imports INFITF
Imports MECMOD
Imports ProductStructureTypeLib
Imports KnowledgewareTypeLib

Public Class MainForm
Dim CATIA As Application

Function PripojCatia() As Boolean
Try
CATIA = GetObject(, "CATIA.Application")
Return True
Catch ex As Exception
Return False
End Try
End Function

Sub TestSpojeni() Handles Button_TestSpojeni.Click
If PripojCatia() Then
MsgBox("CATIA je spuštěna.", MsgBoxStyle.Information, "COM")
Exit Sub
Else
MsgBox("CATIA není spuštěna!", MsgBoxStyle.Critical, "COM")
End If

' dalsi prikazy
' ...
End Sub
End Class


Autor článku: Jan Cinert

Příště: Vytvoření roletového menu s funkcí Window