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
Vytvořit téma
Koncepty
Seznam oblíbených
Soukromé zprávy
Pravidla
Live CHAT
VIP žádost
Základy Catia
Ke stažení
Doporučujeme
Pracovní příležitosti
Reklama a kampaně
O fóru
Nápověda

Makro v .NET chybějící instance objectu

UživatelPříspěvek
Hovorka

Poslat zprávu | Profil
Datum: 12.6. 2015 | Zobrazeno: 9379x
Konfigurace CATIA: V5 R24

Text dotazu:
Dobrý den, mám vytvořené funkční makro na výběr bodů ve VBA. Nyní se jej snažím převést do .NET (MS Visual Studio Expres 2013). Bohužel stále se mi to nedaří a hlásí mi to : "Odkaz na objekt není nastaven na instanci objektu".
Přikládám část funkčního kódu z VBA:


Private Sub Bod_Click()

Set oPartDoc = CATIA.ActiveDocument.Part
Set oHBs = oPartDoc.HybridBodies

Set TheSPAWorkbench = CATIA.ActiveDocument.GetWorkbench("SPAWorkbench")

Set Selection = CATIA.ActiveDocument.Selection
ReDim InputObjectType(0)
InputObjectType(0) = "Point"

ObjSel = Selection.SelectElement2(InputObjectType, "Select something", False)

Set Selection = CATIA.ActiveDocument.Selection
Set Element = Selection.Item(1)
Set Point = Element.Value
Set spoint = Point
'Zjistim aktualni nazev setu kde je bod
Dim nazevSetu As String
nazevSetu = Element.Value.Parent.Parent.Name
'Write PointData to Excel Sheet
Point.GetCoordinates coords
.
.

"

Jak to mám správně převést do .NET ? Momentálně skončím hned na cca 8 řádku...:

Imports INFITF

Imports MECMOD
Imports ProductStructureTypeLib
Imports PARTITF
Public Class CatiaTest
Dim CATIA As Application
Dim oPartDoc As Part
oPartDoc = CATIA.ActiveDocument.Part
Dim oSelection As Selection
oSelection = CATIA.ActiveDocument.Selection.Item(0)

.
.

Děkuji mnohokrát za radu.
Hovorka

Ing Jan Cinert

Poslat zprávu | Profil
[#5243] | Publikováno: 12.06. 2015 - 22:06
Dobrý den,

doporučuju si přečíst články v rubrice Seriál CATIA o programování v .NET. Jsou zde popsané základní a nutné kroky, které je třeba provést navíc proti integrovanému VBA.

Chyba je zcela zřejmá, protože se odkazujete na objekt CATIA, který má v tu chvíli hodnotu Nothing. Je třeba nejprve přes funkci GetObject() tuto instanci vytvořit. Vše je podrobně popsáno v článcích (stačilo jen chvíli hledat :-))

Navíc tam máte hned neošetřenou výjimku, protože když zrovna nebude otevřený žádný dokument, nebo nebude typu Part, také vám to spadne (oPart = CATIA.ActiveDocument.Part)
Hovorka

Poslat zprávu | Profil
[#5244] | Publikováno: 15.06. 2015 - 10:03
Dobrý den,
OK, máte pravdu. Všechny příspěvky k .NET jsem si četl před časem a procházel jsem i spoustu dalších příspěvků na internetu a nemohl jsem tu chybu najít. Moje první reakce na Vaši odpověď byla také : "Vždyť to tam mám... ". Ale pak jsem si prošel celý svůj kód a zjistil jsem, že v rámci zjednodušení při ladění, jsem zrovna tuhle část kódu přeskakoval.. :(
Jinak s dalšími vyjimkami samozřejmě počítám. Mám to připravené tak, abych musel vždy mít zapnutou CATIi a v ní aktivní Part.
Děkuji tedy za rychlou odpověď a přeji hezký den.
Hovorka


Uživatel nepřihlášen

Pro zobrazení obsahu stránky / provedení akce (vytvoření nového téma, napsání odpovědi do diskuse apod.) musíte být přihlášeni.