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 ??

zdrk
19.02.2008, 17:18
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.

zdrk
20.02.2008, 11:21
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í.

PepaR
20.02.2008, 11:21
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.

zdrk
20.02.2008, 11:24
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...

zdrk
20.02.2008, 13:45
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

alfred
21.02.2008, 14:41
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).

alfred
22.02.2008, 06:56
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