Zobrazit plnou verzi příspěvku: Filtr výberu dle hladin vybraných objektů
Zdravim,dělám si jednoduchý filtr na výběr objektů.Pointa je takováto: (1) spustím filtr - (2) vyberu objekty pro určení hladin - (3) vyberu objekty pro další příkaz - (4) spustím příkaz (např. copy)(defun C:FR ( / ss-flt hld index) (princ "\nVyber objekty pro filtr hladin <nic=aktuální>:") (setq ss-flt (ssget) index 0 hld "") (if ss-flt (progn (setq n (sslength ss-flt)) (repeat n (setq hld (strcat hld "," (cdr (assoc 8 (entget (ssname ss-flt index)))))) (setq index (+ 1 index)))) (setq hld (getvar "CLAYER"))) (cadr (sssetfirst nil (ssget (list (cons 8 hld))))))Ten program je obdobou prográmku dle tipu 6364 http://www.cadforum.cz/cadforum/qaID.asp?tip=6364 jen chci, aby těch hladin bylo možné i víc než jedna. Program dělá co potřebuju, ale s jedním nepřirozeným detailem - že výběr v kroku 3 musím neprve ukončit (enter) a pak teprve spustit příkaz, který pracuje s tímto výberem. Asi to je jen detail, ale jednoduše je to nepřirozené... a už se vidím, kolikrát se zapomenu a nekliknu. dík
johny2009-11-24 14:37:38
Vladimír Michl
24.11.2009, 14:57
Není to náhodou to co dělá utilita SELLAY?
Viz:
http://www.cadforum.cz/cadforum/qaID.asp?tip=5447
Jj, pravda. Dokonce jsem ji i kdysi stáhnul a zkoušel... ale nezvykl jsem si na tu převrácenou logiku - vybírej a pak filtruj...
Máte dvakrát (SSGET)Poprvé vybírátePodruhé jste také nezadal "sel-method" tak vybíráte znovu.Kdybyste si to projel debugrem, tak Vám je to hned jasné.Řešení - u druhého (ssget) zadejte způsob výběru - "sel-method" .Např. (cadr (sssetfirst nil (ssget "X" (list (cons 8 hld)))))
Vladimír Michl
24.11.2009, 16:08
Ne, v SELLAY se nefiltruje, ale rovnou vybírá hladina ukázáním na "příklady" objektů. Buď můžete objekty vybrat předem - např.:
SELLAY ... POSUN
nebo během příkazu:
POSUN 'SELLAY ...
No myslim, že to je asi správně...první výběr je jen pro určení filtrovaných hladin (těch zůstávajích)druhý pak už pro výběr objektů... na který bude aplikován filtr sel-methodu pro druhý výběr bych nechal obyčejnou - běžně oknem
johny2009-11-24 16:35:02
Pak tedy nerozumim co chcete. Pokud chcete vybirat vic entit v prvnim vyberu pak je jasne, ze toto vybirani musite ukoncit odkliknutim. Pokud by jste vybiral jinou metodou - napriklad jednu entitu pak si prislusne nastavte "sel-method" u prvniho vyberu (ssget). To same pro druhou selekci.
To p. MichlAsi je to jenom o slovech. SELLAYS i můj program, v obou případech se vybírají příklady objektů, které pak zůstanou. Rozdíl je v pořadí. Já vyberu nejdřív příklady a pak samotné objekty (mám nad nimi aktuální vizuálni kontrolu), kdyžto SELLAYS naopak (filtr aplikuje se "naslepo"). To alfred:S prvním výběrem máte pravdu a já s tím nemám problém. Problém, který řeším souvisí s tím druhým výběrem. Tady tento bych nechtěl ukončovat entrem, páč při normální práci to taky neděláte - jednoduše se ten výběr ukončí se spuštěním následujícího příkazu (kopie, posun)... Asi je to opravdu chiméra... jednoduše enter musí zůstat. Díky za snahu.
johny2009-11-24 18:28:25