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

Diskuse k článku Programujeme v .NET

Kompletní přehled příspěvků v tématu Diskuse k článku Programujeme v .NET řazený podle data jejich publikace na fóru.

UživatelPříspěvek
Josef Landa

Poslat zprávu | Profil
Datum: 5.11. 2013 | Zobrazeno: 12675x
Konfigurace CATIA: V5R20

Text dotazu:
Dobrý den,
rád bych přešel z VB6 do NET podle vašeho seriálu Programujeme v .NET.
Nainstaloval sem si poslední verzi VS Express 2013 for Desktop nalinkoval sem si základní COM reference a po napsání základních příkazů např:


Imports INFITF
Imports MECMOD
Imports ProductStructureTypeLib
Imports KnowledgewareTypeLib
Dim CATIA As Application

Public Class Form1
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
CATIA = GetObject(, "CATIA.Application")
MsgBox(CATIA.ActiveDocument.Name)
End Sub
End Class


a při pokusu o spuštění programu, mi to napíše hlášku viz. obrázek.

Poradíte mi prosím kde mohu dělat chybu?

Přiložené obrázky:

Josef Landa

Poslat zprávu | Profil
[#4232] | Publikováno: 05.11. 2013 - 10:08
oprava kodu:
Dim CATIA As Application
musí být asi v odstavci s: Public Class Form1
Ing Jan Cinert

Poslat zprávu | Profil
[#4233] | Publikováno: 05.11. 2013 - 10:44
Dobrý den,

VS kontroluje chyby (syntaxe, reference,...), zobrazuje je v seznamu a hlavně je podtrhává. Máte všechno dobře? Ta první chyba s deklarací proměnné mimo třídu musela být označená...

Hláška ukazuje na chybějící COM referenci. Jakou máte verzi Catia? R20?

Přiložené obrázky:

Ing Jan Cinert

Poslat zprávu | Profil
[#4235] | Publikováno: 05.11. 2013 - 10:54
Nebo si zkuste pro jistotu přeregistrovat Catii. Do instalačního adresáře .../code/bin a spustit cnext.exe /regserver.
Josef Landa

Poslat zprávu | Profil
[#4239] | Publikováno: 05.11. 2013 - 11:39
Používám V5R20
V obrázku v příloze je vidět, že kod nepodtrhává chyby a když začnu psát např. kod:
Dim CATIA As INFITF. tak normálně našeptává => Application, AnyObject atd.
Tu chybu s deklarací podtrhl, proto sem jí také dodatečně opravil.

Přiložené obrázky:

Josef Landa

Poslat zprávu | Profil
[#4240] | Publikováno: 05.11. 2013 - 11:58
Tak sem to vyřešil nasledovně:
Odebral sem COM referenci CATIA V5 InfInterfaces Object Library a nalinkoval sem referenci přes Browse... na Interop.INFITF.dll, který mám u dodaných programů od firmy, která je pro nás dělala.
Teď už to funguje...
Ing Jan Cinert

Poslat zprávu | Profil
[#4241] | Publikováno: 05.11. 2013 - 11:59
Já tedy nic nevidím... Dokud našeptává, tak nebere jako chybu. Když napíšete nějakou evidentní blbost, tak to musí podtrhnout a v Error listu napíše v čem je problém.

Může být problém v nějakém defaultním nastavením VS 2013 oproti VS 2008. Já jedu na 2008, nevím co může být jinak nastavené.

Jinak pokud použijete deklaraci Imports nemáte další typ se stejným názvem (např. Excel apod), už není třeba deklarovat typ proměnné přes Namespace, tj. stačí například jen
Dim CATIA As Application

Přiložené obrázky:

Josef Landa

Poslat zprávu | Profil
[#4242] | Publikováno: 05.11. 2013 - 12:17
Nevím jak je to možné, ale po přidání COM referencí mi to nakopírovalo do:
C:\Users\lnj\Documents\Visual Studio 2013\Projects\WindowsApplication2\WindowsApplication2\obj\Debug => Interop.INFITF.dll který měl velikost 165KB a když sem ho přepsal tím co sem měl u jiného programu velikost 172KB, tak to už funguje vpořádku.
Nejhorší na tom je to, že když založím nový projekt a znou přidám COM referene tak mi to zas přidá špatný, nebo poškozený Interop.INFITF.dll o velikosti 165KB. Jde to nějak opravit?
Ing Jan Cinert

Poslat zprávu | Profil
[#4243] | Publikováno: 05.11. 2013 - 13:23
Interop dll knihovny si vytváří VS samo podle aktuálně registrované Catie. Pokud jich máte instalováno víc, tak je vždy ta poslední instalovaná. Přeregistrace se provede postupem, který jsem popsal výše. Správně by se ještě měla odregistrovat ta stávající, a pak teprve registrovat ta požadovaná. Pokud to neuděláte, Catie si vždy natáhne registrovanou verzi - to se děje u Vás.

Je evidentní, že soubor který si berete z jiného projektu, je vytvořený z jiné verze než máte k dispozici. Já kompiluju pro R19, na vyšších releasech to zatím vždy (snad na jedinou výjimku) fungovalo bez problémů. Samozřejmě by to mělo být tak, že by makro mělo být zkompilované na ten release, na kterém má běžet.
Josef Landa

Poslat zprávu | Profil
[#4620] | Publikováno: 29.06. 2014 - 10:24
Dobrý den,
mám macro, které mi funguje ve vba a po vložení do vb.net a upravení se nemohu zbavit dvou chyb.

Formulář sem přejmenoval na UserForm1
A TreeView1 na Tree

Chyby jsou v těchto řádkách:
ByRef Tree As Treeview
tvwChild


Imports INFITF
Imports KnowledgewareTypeLib
Imports MECMOD
Imports PARTITF
Imports ProductStructureTypeLib
Imports SPATypeLib
Imports System.IO

Public Class UserForm1
Public CATIA As INFITF.Application

Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load

On Error Resume Next

Dim f As UserForm1
'Dim Tree As TreeView

f = New UserForm1
Tree = f.Tree

' Some variable declarations
Dim doc As Document
Dim rootProduct As Product

doc = CATIA.ActiveDocument
If doc Is Nothing Then
MsgBox("Please load a product - Then activate this function!")
Return
End If

rootProduct = doc.Product

visitProduct(rootProduct, "", Tree)

f.Show()

End Sub

Sub visitProduct(prod As Product, parentKey As String, ByRef Tree As Treeview)

On Error Resume Next

Dim children As Products
children = prod.Products

Dim i As Integer
Dim child As Product
Dim key As String
Dim label As String

label = prod.ReferenceProduct.Parent.Name & " (" & prod.Name & ")"
key = parentKey & "###" & prod.ReferenceProduct.Parent.Name & " (" & prod.Name & ")"
'label = prod.name
'key = parentKey & "###" & prod.name
'ImageList1.Enabled = True
'tree.ImageList = ImageList1
' MsgBox "key: " & key & " parent: " & parentKey

If parentKey = "" Then
Tree.Nodes.Add(, , key, label).Expanded = True
Else
Tree.Nodes.Add(parentKey, tvwChild, key, label).Expanded = True
'tree.Nodes.Item(1).Image = 1
End If

For i = 1 To children.Count
child = children.Item(i)
visitProduct(child, key, Tree)
Next
End Sub

End Class


Chyby jsou také v přiloženém obrázku

Můžete mi prosím poradit?
Děkuji.

Přiložené obrázky:



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.