Prochazeni sestavy
| Uživatel | Příspěvek | 
                      Pavel Krsek ![]() ![]() Poslat zprávu | Profil  | 
                         
                        Datum:
                        2.8. 2012
                         | Zobrazeno:  
                        16976x Konfigurace CATIA: Text dotazu: Dim MyProduct As Product Toto makro funguje OK - vymaze v aktivnim partu, productu vsechny parametry az na definovane vyjimky. Nyni potrebuji makro upravit tak, aby proslo celou sestavu a vymazalo dane parametry u vsech partu a productu - to se mi vubec, ale nedari. Mohl by nekdo poradit? Koukal jsem na tuto diskuzi (http://www.catia-forum.cz/forum/topic.php?topic_id=628), ale i kdyz zkousim modifikovat dane priklady, tak to stejne nejede.  | 
                           
                           Ing Jan Cinert ![]() Poslat zprávu | Profil  | 
                            [#3126]
                             | Publikováno: 
                            02.08. 2012 - 09:45 Na procházení sestavy stačí opravdu jednoduchá rekurze, jde jen o to, co bude parametrem funkce. Buď to může být produkt (top sestava) nebo kolekce (produkty v top sestavě). Každý způsob má svoje pro i proti.
 V každém případě potřebujete dvě funkce. První získá objekt top sestavy (nebo kolekci jejích podproduktů) a pak zavolá vlastní rekurzivní funkci, např takhle. ' hlavni fce Při tomto způsobu se musí buď v hlavní fci nebo v rekurzi s nějakou podmínkou zpracovat hlavní u sestava, kterou rekurze nezahrne. A to je celé, nic víc k procházení nepotřebujete. Kam si budete ukládat názvy nebo celé objekty a jejich počty už je na Vás. Struktura se dá i načíst do TreeView a pak se s ní dá pracovat, viz obrázek.  | 
                           
                           Pavel Krsek ![]() ![]() Poslat zprávu | Profil  | 
                            [#3129]
                             | Publikováno: 
                            02.08. 2012 - 10:57 Diky moc za pomoc,
 ale stejne na to koukam jako na prvni makro pred casem. 1) opravdu staci muj script doplnit na oznacene misto? (porad nerozumim jak funguje prikaz "explore" - to postupne aktivuje v sestave vsechny party a produkty?) 2) jak se necha osetrit vynechani hlavni sestavy v dane rekurzy?  | 
                           
                           Ing Jan Cinert ![]() Poslat zprávu | Profil  | 
                            [#3130]
                             | Publikováno: 
                            02.08. 2012 - 12:35 ad 1) To samozřejmě nestačí. Deklarace se musí přesunout do funkce Explore, pak bz to mělo fungovat. Explore neí příkaz, ale procedura (Sub), která v okamžiku, kdy právě procházená sestava obsahuje podstastavy, volá sama sebe - tomu se právě říká rekurze.
 ad 2) buď se dá do rekurzivní fce část kódu, která stejným způsobem jako oSubProduct zpracuje i oProduct, ale jen za podmínky, že je počet produktů rovný 1 (první procházený produkt se top sestava. Nebo se top sestava zpracuje v hlavním programu a rekurze se nemění..  | 
                           
                           Pavel Krsek ![]() ![]() Poslat zprávu | Profil  | 
                            [#3133]
                             | Publikováno: 
                            03.08. 2012 - 06:43 Diky za pomoc.
 Zkousel jsem zkousel, ale nakonec se nezdarilo. Nakonec jsem jeste zkusil uplne jednoduchy kod bez rekurze a volani podprocedury: Set LocDocs = CATIA.Documents For i = 1 To LocDocs.Count a to udela presne co jsem potreboval - tj. vymaze ve vsech parts a products parametry. Muzete mi prosim rici, jaky teda pak rozdil mezi timto a rekurzy? Diky.  | 
                           
                           Ing Jan Cinert ![]() Poslat zprávu | Profil  | 
                            [#3134]
                             | Publikováno: 
                            03.08. 2012 - 08:33 Tímto Vaším způsobem projdete všechny dokumenty a dostanete se na jejich User Defined properties (ale třeba už na na parametry). Rekurze prochází celou sestavu podle její struktury, tj. projde popořadě každou jednotlivou instanci partu a productu. Používá se třeba při sjednocení PartNumber a InstanceName (pak je to např. Soucast(Soucast.1) atd.) 
 Klasický příklad na rekurzi je třeba vytvoření kusovníku, kdy potřebujete počty jednotlivých instancí a jejich názvy. To jinak udělat nejde.  | 
                           
                           Josef Landa ![]() ![]() Poslat zprávu | Profil  | 
                            [#4752]
                             | Publikováno: 
                            25.09. 2014 - 18:47 Dobrý den,
 v příspěvku [#3126] máte náhled na načtenou strukturu do TreeView. Je možné sem dát jednoduchý příklad pro VB.NET? Děkuji.  | 
                           
                           Ing Jan Cinert ![]() Poslat zprávu | Profil  | 
                            [#4753]
                             | Publikováno: 
                            26.09. 2014 - 15:38 Tohle vytvoří strom s načtenými produkty. Stačí přidat rekurzi na procházení sestavy a předávat jí současně i příslušný Node.
 Předpokládá komponent TreView a v něm vložený top node. ' nacte seznam otevrenych sestav  | 
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.










                           

