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

Sketch / Unable to cast COM

UživatelPříspěvek
Pavel Krsek

Poslat zprávu | Profil
Datum: 18.12. 2019 | Zobrazeno: 5928x
Konfigurace CATIA: V5-6R2018

Text dotazu:
Dobrý den,
mám prosím dotaz ohledně chyby v kódu. Mám makro, které používáme už hodně dlouho. Nyní při přechodu na release 2018 se někdy objeví chybové hlášení u daného řádku:

Dim oSketch As Sketch = oPart.FindObjectByName(oSketchName)


sketch je mecmod.sketch

Hláška: System.InvalidCastException: 'Unable to cast COM object of type 'System.__ComObject' to interface type 'MECMOD.Sketch'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{EE3021B2-3B09-11D1-A26C-0000F87546FD}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).'

Nechápu proč chvilku to funguje správně a pak zase daná chyba. Má někdo nápad.



Ing Jan Cinert

Poslat zprávu | Profil
[#6756] | Publikováno: 18.12. 2019 - 09:38
Dobrý den,

používáte správné knihovny vzhledem k release Catie? Tohle je typická hláška, když se to nepotká.

Nevím z jakého release přecházíte na R28, ale může to být tím. Jinak by to znamenalo, že se do typy Sketch snažíte narvat jiný typ (což by se teoreticky mohlo stát, pokud by se použitý název objevil v modelu vícekrát).
Pavel Krsek

Poslat zprávu | Profil
[#6757] | Publikováno: 18.12. 2019 - 09:48
Dobrý den,
děkuji za rychlou reakci. Abych se přiznal, tak s těmi knihovnami celkem bojuji tj. ani nevím jak poznat, jaké knihovny aktuálně aplikace používá.
Měli jsme R2016 tzn. ve windows byly zaregistrovány tyto knihovny. Pak se doinstalovala R2018 tj. ve windows jsou nové tyto knihovny.
Při vytváření aplikace např. v R2016 se aktuální knihovny nakopírují do ....\obj\Debug\. Jak se vlastně správně překompiluje pak aplikace na nový release? To stačí otevřít danou aplikace ve VS a pak spustit znovu Build Solutions?
Pavel Krsek

Poslat zprávu | Profil
[#6758] | Publikováno: 18.12. 2019 - 09:50
.. ještě náhled na references k dané aplikaci.

Přiložené obrázky:

Ing Jan Cinert

Poslat zprávu | Profil
[#6761] | Publikováno: 18.12. 2019 - 11:02
Tohle je celkem téma...

Pokud budete používat COM reference, chce to po instalaci nejdříve přeregistrovat novější release (/unregserver na předchozí, /regserver na nový), a ve Visual studiu odebrat staré reference a vytvořit je znovu. Pak by to mělo fungovat.
Já ale i tak čas od času narážel na chyby, tak to teď dělám jinak.

Mám vytvořený jeden samostatný projekt, úplně prázdný, bez jakéhokoliv kódu, a v něm si vždy způsobem popsaným výše natahám všechny myslitelné COM reference (je jich ca 15, jen ty nejpoužívanější). Projekt buildnu, a uložím si vytvořené interopp dll do specifické složky (pro jednotlivé release).
U nových projektů či rekompilací pak používám tyhle knihovny, které už natahuju jako .NET (jsou to jen obálky s objektovou strukturou). Zatím vždy funkčnost na 100%.

Nedávno jsem to samé řešil s někým jiným, ten samý problém. Poskytl jsem svoje dll a úspěch se dostavil, tak to samé doporučuju i Vám. Knihovny v příloze - stačí je přidat jako typ NET a mělo by to fungovat - samozřejmě jen pro R28.

Přiložené soubory:
R28SP3HF13_dll.ZIP

Přiložené obrázky:

Pavel Krsek

Poslat zprávu | Profil
[#6763] | Publikováno: 18.12. 2019 - 11:07
Děkuji moc. Určitě to vyzkouším.
Jen si nejsem jistý, že to pomůže na můj problém. Pokud by chyby u řádku se sketch vyskočila pokaždé, tak bych tomu rozumněl, ale pokud to několikrát projde a pak zase ne, tak nevím.
Pavel Krsek

Poslat zprávu | Profil
[#6764] | Publikováno: 18.12. 2019 - 13:30
Ještě bych se prosím zeptal. Víte, jak se nechá poznat ve windows jaké jsou aktuálně zaregistrované knihovny - tím myslím, pro jaký release Catia?
A druhý dotaz - myslíte, že pokud použiji Vaše knihovny, ale my máme R28SP4 tak může být problém?

Děkuji.
Jakub Dědík

Poslat zprávu | Profil
[#6838] | Publikováno: 26.09. 2020 - 10:16
Ahoj Pavle,
právě zaregistrovanou Catii poznáš v registrech windows. Zkus hledat CATIA.Application a najdeš její UUID v

\HKEY_CLASSES_ROOT\CLSID\

v parametru LocalServer32 je pak cesta cnex.exe která se spustí pokud například v makru vytvoříš nový objekt CATIA.Application, nebo otevřeš nějakej catia soubor. To je právě Catie o které windows ví. A visual studio ti zobrazuje knihovny právě k ní.

S knihovnama problém být může a nemusí, je tam kvanta objektů a změny se nemusí týkat všech. Může to běžet a nemusí :D.

Osobně se vyplatí nebýt líný a na funkce makra si napsat test, který simuluje vstupy např od uživatele. Mít třeba i testové sestavy a soubory v catii a pokud to s těma knihovnama makrem projde tak je to ok, pokud ne víš že je problém s knihovnou a víš i kde.
Ing Jan Cinert

Poslat zprávu | Profil
[#6842] | Publikováno: 26.09. 2020 - 11:05
Uživatel odpovídá na příspěvek #6838:

Momentálně řeším problém s R28SP3HF27 u výkresů. Při volání objektu 2DFactory (kreslení geometrie ve výkresu) vznikne chyba a nejede přes to vlak. Tři dny jsem si hrál s různými knihovnami, protože na mém NTB vše OK,ale na stanicích ve firmě to nešlo.
Nakonec jsem ze zoufalství zkusil třířádkový CATSkript, které měl jen nakreslit čáru z 0,0 do 1,1 - a světe div se, ani to neprošlo, takže musí být chyba někde v instalaci. V jiné R28 (SP3HF25) to jede. U mě na obou HF a nezávisle na knihovnách, resp. i R28GA knihovny to obslouží všechno.

Občas je to na hlavu....
Jakub Dědík

Poslat zprávu | Profil
[#6844] | Publikováno: 26.09. 2020 - 11:13
Souhlasím , že dassault má velký štěstí, že jeho uživatelé nejsou vývojáři ale konstruktéři, pak jim prochází spoustu nedodělků v jejich softwarech. Osobně už jsem nabyl dojmu že pokud ti catie funguje, makra fungujou, nedělej s ní od instalace nic. Pokud SP ani HF neni potřeba kvůli datům, nechat to být :D.

Posledně mě dostala instalace R29GA ... kdy vyskočil prázdný error ještě než se instalátor spustil! Vůbec nechápu jak si to může dassault dovolit to pustit takto do světa .... Chyba byla v komponentě pro C++ protože instalátor neunesl to, že už byl nainstalovaný z dřívějška... pak byl v SP1 hotfix na celý problém ...
Ing Jan Cinert

Poslat zprávu | Profil
[#6846] | Publikováno: 26.09. 2020 - 14:22
No někdy je to k pláči. Třeba chování Union trimu od R28 je zcela mimo moje chápání...

Já kdysi slyšel, jak probíhá vývoj, který trvá (u nového release) ca 5 let. Dneska se tedy dávají dohromady požadavky, které by se měly objevit až v R35 (v roce 2025, to tu snad ještě V5 bude). Jenže za těch 5 let se spousta z toho stane neaktuálním,
to co by mělo přibýt hned bude teprve ve fázi sběru požadavků, a ještě se přimíchají chyby z přebíraní některých věcí ze starších releasů. Mezitím se 3x vymění marketingový tým a výsledek bude zase kočkopes, kdy se na oko objeví pár nových funkcí, ubyde nebo se zhorší pár stávajících a k tomu pár běžných bugů.


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.