Vytisknout stránku | Zavřít okno

Filtr výberu dle hladin vybraných objektů

Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: CAD programování
Popis fóra: Otázky programování - nadstavby a utility pro CAD a GIS aplikace Autodesk (VBA, AutoLISP, ARX/C++, .Net, JavaScript, Python, MEL...)
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=9833
Datum vytištění: 13.čer.2026 v 02:24


Téma: Filtr výberu dle hladin vybraných objektů
Odeslal: johny
Předmět: Filtr výberu dle hladin vybraných objektů
Datum odeslání: 24.lis.2009 v 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 - 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



Odpovědi:
Odeslal: Vladimír Michl
Datum odeslání: 24.lis.2009 v 14:57
Není to náhodou to co dělá utilita SELLAY?
 
Viz:
http://www.cadforum.cz/cadforum/qaID.asp?tip=5447 - http://www.cadforum.cz/cadforum/qaID.asp?tip=5447


-------------
Vladimír Michl (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz emea.support.arkance.world)


Odeslal: johny
Datum odeslání: 24.lis.2009 v 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... 


Odeslal: alfred
Datum odeslání: 24.lis.2009 v 16:04
Máte dvakrát (SSGET)
Poprvé vybíráte
Podruhé 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)))))


Odeslal: Vladimír Michl
Datum odeslání: 24.lis.2009 v 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 ...
 


-------------
Vladimír Michl (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz emea.support.arkance.world)


Odeslal: johny
Datum odeslání: 24.lis.2009 v 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


Odeslal: alfred
Datum odeslání: 24.lis.2009 v 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.


Odeslal: johny
Datum odeslání: 24.lis.2009 v 17:10
To p. Michl
Asi 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.



Vytisknout stránku | Zavřít okno