CATDUA
Uživatel | Příspěvek |
Petr ![]() ![]() Poslat zprávu | Profil |
Datum:
5.12. 2015
| Zobrazeno:
9916x Konfigurace CATIA: Catia V5 R24 SP4 HF22 Text dotazu: |
Ing Jan Cinert ![]() ![]() Poslat zprávu | Profil |
[#5514]
| Publikováno:
05.12. 2015 - 20:37 Dobrý den,
co myslíte tím "staré linky"? Neexistující reference? To CATDUA asi ani nedovede, protože to souvisí se strukturou sestavy, která není při čištění ovlivněna. CATDUA řeší pouze vnitřní chyby v modelu. Chybějící reference je možné odstranit (pokud to chcete opravdu udělat) pomocí jednoduchého makra, které rekurzivně prochází sestavou, a pokud narazí na instanci s chybějící referencí, odstraní ji. |
Petr ![]() ![]() Poslat zprávu | Profil |
[#5515]
| Publikováno:
06.12. 2015 - 10:03 Dobrý den,
ano myslím tím neexistující reference. Myslel jsem si že to CATDUA dokáže, že je to jen otázka nastavení. Jak by takové makro vypadalo? Na foru jsem žádnou podobnou diskuzi nenašl.. Zkusím se podívat ještě na zahraniční fora. Děkuji |
Petr ![]() ![]() Poslat zprávu | Profil |
[#5516]
| Publikováno:
06.12. 2015 - 10:06 Našel jsme jiné makro, k které dokáže zpětně nalinkovat chybějící díly.
https://www.youtube.com/watch?v=vCcIIgpLPUs V mém příadě mi ale nepomůže, já potřebuji chybějící linky odstranit. |
Ing Jan Cinert ![]() ![]() Poslat zprávu | Profil |
[#5517]
| Publikováno:
06.12. 2015 - 11:50 Zkuste tohle. Je to funkce jedné komplexní utility pro klonování sestav, kdy se musí nejprve chybějící reference odstranit. Vstupem funkce je produkt vrcholové sestavy sestavy.
Je to psané pro VB.NET, pro použití jako CATScript si budete muset nahradit ošetření Try ... Catch pomocí standardního OnError ..., jinak to funguje spolehlivě. ' rekurzivne prochazi sestavu a odebira produkty bez reference |
Petr ![]() ![]() Poslat zprávu | Profil |
[#5518]
| Publikováno:
06.12. 2015 - 13:41 Děkuji hned to vyzkouším. |
Petr ![]() ![]() Poslat zprávu | Profil |
[#5519]
| Publikováno:
06.12. 2015 - 14:52 Upravil jsem kod pro visual basic viz. dole. Když ho ale sputim, tak mě smaže všechny party a produkty...
|
Ing Jan Cinert ![]() ![]() Poslat zprávu | Profil |
[#5520]
| Publikováno:
06.12. 2015 - 18:14 No jasně, za ErrorHandler1 změníte RefValid na false, proto to pokaždé smaže instanci. Musíte si lépe pohrát s ošetřením chyby. Ta právě vznikne, pokud neexistuje vlastnost parent dané instance (to je vlastní soubor). |
Petr ![]() ![]() Poslat zprávu | Profil |
[#5523]
| Publikováno:
08.12. 2015 - 17:47 Dobrý den, jakou funkci přesně plní příkaz
Catch ex As ExceptionDěkuji |
Petr ![]() ![]() Poslat zprávu | Profil |
[#5524]
| Publikováno:
08.12. 2015 - 18:12 Dobrý den, už se mi to podařilo rozchodit, ale makro mi prochází pouze jednu úroveň. Když mám v produktu další product, tak v něm už chybějící linky na party neodstraní.
Sub CATMain() |
Ing Jan Cinert ![]() ![]() Poslat zprávu | Profil |
[#5525]
| Publikováno:
08.12. 2015 - 22:29 Máte to trochu zmatené. Dejte úplně pryč proměnnou RefValid, nebo ji použijte tak jak je myšleno. Na začátku se zjišťuje, jestli je reference platná tím, že se porovnává jeji rodič (soubor), zda je Nothing. To klidně můžete nahradit třeba zjištěním jeho názvu (.Parent.Name). Jenže ve skriptu to shoří, tak tam správně máte On Error...
Pak zjistíte kód chyby, a pokud je <> 0, už můžete odebrat instanci. To je ale třeba znovu ošetřit, protože tam chyba vzniká pokaždé, o když se instance odebere. Na konci už se jen spouští rekurze, pokud produkt obsahuje podprodukty (= pokud jde o podsestavu). Podle mě vám to druhé On Error přeskočí zbytek kódu. Dejte si tam message box, abyste zjistit zda se část kódu s rekurzí vykoná. PS: Try - Catch je běžné ošetření potencionálních chyb. Try |
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.