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

VB2010 přechod z CATIA 32bit na 64bit

Kompletní přehled příspěvků v tématu VB2010 přechod z CATIA 32bit na 64bit řazený podle data jejich publikace na fóru.

UživatelPříspěvek
Břeťa Doležal

Poslat zprávu | Profil
Datum: 1.12. 2015 | Zobrazeno: 9837x
Konfigurace CATIA: R19

Text dotazu:
Mám nově instalovanou CATII R19 64bit na místo 32bit verze. Po přeinstalaci mi nefunguje GetObject fce.


Dim CATIA As Object = GetObject(, "CATIA.Application")


Chybová hláška: "Cannot create ActiveX component."

Máte prosím někdo zkušenosti, co s tímto provést? Následně bych potřeboval, aby mi zkompilované makro z VB2010 fungovalo na obou verzích CATIE R19 32bit i 64bit. Děkuji za případné rady.

Břeťa Doležal

Poslat zprávu | Profil
[#5499] | Publikováno: 01.12. 2015 - 09:46
Pátrám a asi to vypadá, že je nakopnutá instalace CATIE a že je třeba někde doplnit do Windowsu asi do registrů informaci o CATII. Nemáte někdo zkušenost co má být v registrech abych našel objekt CATIA.Application?

Koukám do HKEY_LOCAL_MACHINE\SOFTWARE\Classes a zde najdu Excel.Application, PowerPoint.Application, ale CATIA.Applciation nikde. Může být toto problém?

Ještě v rámci instalace mám nově R22 64bit a následně jsme prováděli cnext.exe / regserver v adresáři R19.
Ing Jan Cinert

Poslat zprávu | Profil
[#5501] | Publikováno: 01.12. 2015 - 14:02
Zkuste tenhle link, jsou tam témata kde se tohle už řešilo.

http://www.catia-forum.cz/forum/search.php?s=regserver&t=answer&c=one&f=normal

S kompilací pro 32/64 bit to není úplně jednoduché. Ono totiž ani není možné kompilovat globálně pro různé release. Něco funguje od R19 po R24 bez problémů, něbo se musí překompilovat už pro R21.

Vím jistě že od R22 se změnil název knihovny plošného modeláře, takže když se pracuje s plochami, musí se dělat více verzí.

Na 32bit verzi bych se skoro vykašlal, dneska se snad už nikde nepoužívá, resp. použití na 32bit systému mi (kromě nějakých historických důvodů) ani nedává smysl.

Jinak registrace je přes cnext.exe /regserver v adresáři požadovaného release. Možno předtím ještě odregistrovat vše ostatní, aby to bylo čisté (to samé jen unregserver).

Pokud v projektech používáte reference jako COM objekty, vždy se vážou k tomu co je zrovna registrované - pozor na to. Já jsem si vytvořil sady interopp dll pro každý release a použivát je pak již jako .NET reference (je to v podstatě jen struktura objektů a metod). Funguje to bezvadně a nemusím řešit co mám zrovna registrované, jen v projektu prohodím dll.
Břeťa Doležal

Poslat zprávu | Profil
[#5502] | Publikováno: 01.12. 2015 - 22:09
Registrace nebyla problém, cnext.exe /regserver znám již velmi dobře. Problém byl jinde, nešlo zachytit tu běžící Catii. V registrech mi úplně chyběli Catiovské třídy (Catia.Application) v umístění HKEY_LOCAL_MACHINE\SOFTWARE\Classes. Porovnával jsem si to na více stanicích. Vytváří definici těchto tříd, také příkaz cnext.exe /regserver. Nakonec jsme zkusili odinstalovat Catii a znovu instalovat. Jenže neproběhla už ani instalace. Takže komplet přeinstalace i se systémem, už na to měla stanice nárok po těch 3-4letech...
Tvorba těch sad interop dll je provedena tak, že jste si připojil všechny knihovny z Catie a ty se přenesli do adresáře k makru (standardně adresář \release\)? Potom si odkazujete na tyto dll a né na COM objekty? Není následně komplikované volání funkcí jako např. u Win API, že musím deklarovat funkci <DllImport, apod...?
Břeťa Doležal

Poslat zprávu | Profil
[#5503] | Publikováno: 01.12. 2015 - 22:11
Možná dobré téma pro článek, jak si usnadnit život s knihovnami - minimálně pro mě programátora amatéra.
Ing Jan Cinert

Poslat zprávu | Profil
[#5504] | Publikováno: 02.12. 2015 - 16:00
Nene, tak to nefunguje, resp. dělám to jinak. Zaregistruji příslušný release, propojím přes COM a pak provedu Build. Následně vezmu vytvořené interopp dll ve složce Release a ty si někam uložím - pro každý release mám extra sadu.

No a pak v novém projektu vyberu v referencích typ .NET a připojím tyto knihovny - funguje to a dělám to tak už asi dva roky. Při rekompilaci tak jen vyměním reference a znovu to Buildnu, a je hotovo.

Teoreticky se ani nemusí kompilovat - stačí jen nahradit dll za ta správná a s nimi makro distribuovat. Já ale vše pakuju do jednoho jediného exe souboru (jsou tací, kteří si myslí, že to k běhu makra stačí, a kopírují si jen exe soubor a pak se diví) a nakonec vše ještě obfuskuju. Takže já musím předtím mít vždy ta srávná dll.
Břeťa Doležal

Poslat zprávu | Profil
[#5621] | Publikováno: 10.02. 2016 - 12:30
Mohu mít dotaz ke slovu obfuskuji. Co tím míníte? Je tím míněná úprava kódu aby nešlo dekompilovat?
Pokud obfuskuji znamená něco jiného, tak se ještě ptám: Jak případně chráníte zdrojový kód? Jde toto provést přímo ve Visual Studiu? Existují nějaké freeware nástroje, které zabrání dekompilaci?
Ing Jan Cinert

Poslat zprávu | Profil
[#5623] | Publikováno: 10.02. 2016 - 12:52
Ano, obfuskace znamená de facto zašifrování kódu. Když se pak pokusíte o dekompilaci (.NET Reflector např.), dostanete sice zpátky jednotlivé class a jejich strukturu, ale názvy proměnných budou mít podobu rozsypaného čaje, takže absolutně nepoznáte, co se v kódu děje.

Já používám nástroj EazFuscator, do určité verze je free. Ten pracuje i s utilitou ILMerge, která umí jednotlivá interopp dll catie zapakovat do exe souboru (pak je distribuce jen s jedním souborem).

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.