search v geometrickem setu
Uživatel | Příspěvek |
jukom ![]() ![]() Poslat zprávu | Profil |
Datum:
6.1. 2015
| Zobrazeno:
9577x Konfigurace CATIA: V5 R19 Text dotazu: |
Ing Jan Cinert ![]() ![]() Poslat zprávu | Profil |
[#4871]
| Publikováno:
06.01. 2015 - 20:49 Dobrý den,
search se v těchto případech nedá moc omezit, vždy vám vyhledá všechno až úplně dolů. Použijte místo toho kolekci HybridShapes, což je vlastnost set a obsahuje všechny geometrické prvky kromě skic. Kolekce je pak seřazená podle pořadí geometrie ve stromu. Takže pak nějak takhle: For i = 1 To oSet.HybridShapes.Count |
jukom ![]() ![]() Poslat zprávu | Profil |
[#4872]
| Publikováno:
06.01. 2015 - 21:28 To som tiež preskúmal. Problém je, že ak sa nachádza nejaký osový kríž v geometrickom sete, ten nepovažuje za objekt hybridshape. Taktiež neberie v úvahu hromadný mirror, pattern atď - tieto objekty berie dokonca Catia ako hybridbody (ten istý ako geometrický set). Takže preto sa mi zdá najlepšia a najspolahlivejšia metóda pomocou search. |
Ing Jan Cinert ![]() ![]() Poslat zprávu | Profil |
[#4873]
| Publikováno:
07.01. 2015 - 09:14 Ano, tohle je velká slabina, že se strom v Partu nedá procházet stejně jako strom v sestavě. Nechci tvrdit na 100% že to nepůjde jen pomocí vyhledávací syntaxe, ale podle mě nejde z výběru vyloučit něco co je v jiném setu. Pak asi nezbývá nic jiného než si první - celkový výběr někam uložit (pole, kolekce) a pak z něj odebírat ty prvky, které se nacházejí uvnitř vnořených setů (ty vzniknou úplně stejně). Bude to možná o chvilku déle trvat, pokud bude geometrie víc, ale v principu by to takhle mělo jít. |
jukom ![]() ![]() Poslat zprávu | Profil |
[#4874]
| Publikováno:
07.01. 2015 - 10:11 Tento postup ma napadol, len zatial som nezistil akym sposobom odoberat zo setu prvky ktore patria do vnoreneho setu. Zatial som sa vybral cestou premenovania prvkov vo vnorenom sete a to tak, ze pridam priponu za nazov kazdeho prvku ktora bude u vsetkych prvkov tom danom sete rovnaka. A potom pustim opat vyhladavanie prvkov vo vybere:
(Part Design'.'Geometric feature' - 'Part Design'.'Geometric feature'.Name=*_XXX);sel Nepaci sa mi vsak moc zasah do partu a tiez este nevie ako dlho bude trvat prejdenie celeho partu. Nakoniec sa vsetky prvky premenuju nazad. Je pravda ze s tym odoberanim prvkov z kolekcie je to elegantnejsie. No ja tuto metodu viem pouzit zatial iba tak, ze pri dvoch kolekciach prechadzam postupne vsetky prvky prvej kolekcie so vsetkymi z tej druhej a hladam zhodu. To je pochopitelneý strsne zdlhave a neprakticke. Ak by bolo mozne spravit akoby kvazi odpocet tej kolekcie prvkov z vnorenej mnoziny od tej hlavnej, tak by to bolo super. uvitam kazdu radu. Dakujem uz aj za predosle rady |
Ing Jan Cinert ![]() ![]() Poslat zprávu | Profil |
[#4875]
| Publikováno:
07.01. 2015 - 14:05 Nevím v jakém prostředí programujete, ale v VB.NET je typ Dictionary, který se přímo nabízí. Nejprve do tohoto seznamu načtete všechny vyhledané feature, a pak budete postupně odebírat ty z vnořených setů. To by znamenalo pouze projít každý vnořený set.
Syntaxe by vypadala takto: Dim oDict As Dictionary(Of String, SelectedObject) |
Ing Jan Cinert ![]() ![]() Poslat zprávu | Profil |
[#4876]
| Publikováno:
07.01. 2015 - 14:48 Všechno zpět a zpátky na stromy....
Samozřejmě se dá hledat podle viditelnosti, resp. podle Atributu Shown . Takže pak stačí do vyhledávací syntaxe jen ..Visibility=Shown,sel to je celé. Samozřejmě předtím skrýt vnořené sety, ale to už je maličkost.
Už jsem to kdysi takto používal, jen si člověk hned nevzpomene :-) |
jukom ![]() ![]() Poslat zprávu | Profil |
[#4890]
| Publikováno:
12.01. 2015 - 19:02 Vďaka, cez atribut shown to funguje dobre a makro je aj relatívne rýchle. Ešte možno skúsim aj tú druhú variantu cez Dictionary. |
Ing Jan Cinert ![]() ![]() Poslat zprávu | Profil |
[#4891]
| Publikováno:
12.01. 2015 - 21:10 To ani nezkoušejte, tohle je absolutně nejjednodušší co může být. Druhý způsob by při větším počtu prvků trval zbytečně dlouho. |
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.