Zobrazit plnou verzi příspěvku: Dyn.bloky-filtr
Peter M.
19.02.2008, 16:48
Help - jak aplikuji nejaky vyberovy filtr na Dynamicke bloky ??
Aplikuji ho stejně jako na obyčejné bloky.
Např. filtr - výběr bloků podle jména a dalších parametrů - nutno vyzkoušet.zdrk2008-02-19 17:21:09
Peter M.
20.02.2008, 11:05
No to prave nejde - nazvy dyn.blk se proste nedaji ve filtru urcit a navic neodpovidaji ulozenemu nazvu... nechapu to. Proste je musim vybirat manualne - to potesi, kdyz jich tam mam stovky.
Tak pomůže rychlý výběr (_Qselect), kde se zadá vyhledávat blok též podle jména.
Pracuje trochu jinak. Vyzkoušel jsem.
Na ten příkaz filtr se musím ještě podívat, používám ho teprve 14 dní.
Ja si též myslím, že ve filtru není žádné kritérium, které by rozpoznalo zda je to dynamický blok. Možná se ale mýlím a v novějších verzích tomu tak je.
Filtr bere dynamické bloky asi jako anonymní. Každá varianta bloku je samostatný blok (Uxxx ) proto je možná nenajde.
Peter M.
20.02.2008, 11:26
jj asi to bude ten problem, ale co stim ?? I kdyz zadam Uxxx i tak nic nenajde...
Hlavně těma xxx jsem myslel číslo, které si určí cad sám (vidím ho vždy, když čistím výkres po vymazaných blocích.
Ten rychlý výběr ale funguje.
Ferdinand
20.02.2008, 15:00
Kdysi jsem narazil taky na problém výběru Unnamed blocks, ale už si nepamatuji, jak se to vlastně řešilo...bylo to něco s hvězdičkou *
Vladimír Michl
20.02.2008, 23:04
Dynamické bloky používají vnitřně tzv. efektivní název (jinak se jeví jako nepojmenované bloky).
Příkaz [CMD]RVYBER[/CMD] (_QSELECT) s tím počítá, pro programové zpracování je potřeba název bloku převádět - viz např. tento kód:
[CODE](vl-load-com)(defun C:dynFilter (/ ss1 ss2 effname i)(setq ss1 (ssget))(setq effname (getstring "Dynamic block name: ") i 0 ss2 (ssadd))(repeat (sslength ss1) (if (and (vlax-property-available-p (vlax-ename->vla-object (ssname ss1 i)) 'IsDynamicBlock) (equal effname (vla-get-effectivename (vlax-ename->vla-object (ssname ss1 i)))) ) (setq ss2 (ssadd (ssname ss1 i) ss2)) ) (setq i (1+ i)))(command "._SELECT" ss2 "")(sssetfirst nil ss2)(princ))[/CODE]
Peter M.
21.02.2008, 11:51
No z toho moc chytry nejsem - - prikaz Rvyber s tim sice mozna pocita, ale User jako ja a spousta jinych Useru asi taky NE... achjo, takze nedelam nic spatne, Autocad to proste neumi
Vladimír Michl
21.02.2008, 11:56
Nerozumím - co je konečným cílem? Pokud chcete uživatelsky vybrat dyn.bloky daného jména (popř. jiných daných vlastností), použijte příkaz [CMD]RVYBER[/CMD]. Pokud byl dotaz směrován na programové filtrování, pomůže ten zaslaný LISP kód.
Peter M.
21.02.2008, 13:04
Uz tomu asi rozumim a zdase, ze je to castecne reseni... i kdyz to vybere vsechny d-bloky bez rozdilu jeho stavu (parametru) - i tak diky
co ma byt konecnym cilem?
Peter M.
21.02.2008, 16:08
Mam d-blok s parametrem viditelnosti a potrebuju aplikovat filtr vzdy na urcity symbol, ktery je zrovna viditelny. Priklad: d-blok s ruznymi velikostmi urciteho profilu a chci vybirat filtrem vzdy stejne zobrazene profily.
Vladimír Michl
21.02.2008, 17:02
Filtrování na stavy viditelnosti je už trochu komplikovanější, ale také to jde celkem snadno - viz upravený kód DynFilter.lsp (na BBS/VIP serveru).
nejak mi to neslo stahnout - hlasi to ze stranka nebyla nalezena.
Uz jsem na to prisel - odkaz je na spatne soubor "DYNFILTR.ZIP", ale spravne to ma byt "DYNFILTR.lsp"alfred2008-02-22 06:58:53
Vladimír Michl
22.02.2008, 08:46
oops - opraveno, pardon