Zobrazit plnou verzi příspěvku: Filtr výberu dle hladin vybraných objektů

johny
24.11.2009, 14:27

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

johny
24.11.2009, 15:30
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... 

alfred
24.11.2009, 16:04
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 ...
 

johny
24.11.2009, 16:28

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

alfred
24.11.2009, 16:34
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.

johny
24.11.2009, 17:10

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