; W tym przykładzie zajmiemy się bliżej przedstawieniem kilku podstawowych możliwości funkcji ssget, która pozala na pracę ze wskazaniami elementów
; mechanizm zbiorów wskazań służą łatwej manipulacji większą liczbą obiektów, pozwalają np wybrać z rysunku elementy spełniające określone kryteria. Może to być ograniczenia nażucone Użytkownikowi, Np jeśli chcemy wykonać określone operacje na blokach o określonej nazwie, natomiast w rysunku tych bloków jest wiele i Użytkownik decyduje które z nich mają być brane pod uwage możemy ograniczyć możliwe do wskazania bloki o określonej nazwie.
;Co więcej wybór obiektów może być automatyczny, z pominięciem ingerencji Użytkownika. Jeśli pierwszym z parametrów wywołania funkcji będzie litera "X" wybrane będą automatycznie wszyskie obiekty z bazy danych rysunku.
; Możemy wybierać i ograniczać wybór na wiele sposobów, kilka z nich przedstawię poniżej:

; Przykład1: Wybieranie wszystkich kreskowań o określonym wzorzez z określonej warstwy
(setq wybrane (ssget "X" '((0 . "HATCH") (2 . "ANGLE" ) (8 . "Layer3"))))
; Przykład ten wybierze wszystkie elementy, które spełniają wszystkie warunki.

; Przykład2: wybiera wszystkie linie i okręgi z aktualnego rysunku
; na zbiorach wskazań można też wykonywać operacje logiczne. Czyli np wybrać wszystkie elementy spełniające jeden z warunków. Wystarczy w tym przypadku użyć operatora "or"
(setq wybrane (ssget "X" '((-4 . "<or") (0 . "LINE") (0 . "CIRCLE") (-4 . "or>"))))
; użycie takiej konstrukcji jest możliwy tylko jeśli wartości filtrów są stałe. Jeśli w tym miejscu chcemy użyć zmiennych, konieczne jest przebudowanie struktury listy np:
;Przykład3:
(setq Typ1 "LINE" ; np typ odczytany z innego obiektu, lub wybrany przez użytkownika z okna
Typ2 "HATCH" )

(setq wybrane (ssget "X" (list(cons -4 "<or") (cons 0 Typ1) (cons 0 Typ2 ) (cons -4 "or>"))))

; Używanie funkcji ssget wymaga znajomości kodów DXF czyli liczb które reprezentują każdą z właściwości obiektu np
; 0 - typ obiektu
; 1 - tekst obiektu
; 2 - nazwa
; 6 - typ linii
; 8 - warstwa
; 62 - kolor
; może być taka sytuacja, że ten sam kod DXF ma różne znaczenia dla różnych obiektów. np: lub nie mieć wogóle znaczenia dla określonego obiektu. np
; 1 - treść dla obiektu typu tekst, tekst wielowierszowy, Atrybut definicja , wymiarowanie. Natomiast nie ma znaczenia dla linii, punktów, okręgów, brył 3d itp.
; 10 - współrzędne : dla punktu , punkt wstawienia dla bloku, tekstu, środek okręgu, punkt początkowy linii. punkt środkowy bryły
; 40 - Promień okręgu lub łuku, Wysokość tekstu, atrybutu, Szerokość polilinii.
; Znajoność kodów wszystkich właściwości nie jest konieczna. Aby w łatwy sposób poznać kod DXF właściwości możemy się posłużyć następującym kodem:
(entget(car(entsel)))
; po uruchomieniu tej prostej funkcji, Użytkownik zostanie poproszony o wskazanie jednego obiektu, a w jego wyniku, w pasku poleceń wyświetlą się właściwości zanaczonego obiektu właśnie w formacie kodów DXF. Przykładowy zrwot takiej funkcji może być następujący:
;Select object: ((-1 . <Entity name: 7ed52338>) (0 . "INSERT") (330 . <Entity name: 7ed50cf8>)
;(5 . "1FF") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0")
;(100 . "AcDbBlockReference") (66 . 1) (2 . "zxc") (10 1805.8 1371.04 0.0)
;(41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0)
;(210 0.0 0.0 1.0))
; do szczegółowego omówienia tego wyniku wrócę innym razem

; ssget daje nam jeszcze znacznie większe możliwości.
; i tak dla przykładu, jeśli chcemy wybrac bloki, Które leżą na warstwach np Warstwa1, Warstwa2, Warstwa3, ale już pominąć te, które są na warswach Warstwa, WarstwaA, WarstwaB, możeby posłużyć się następującą konstrukcją
(setq Wybrane(ssget "x" '((0 . "INSERT")(8 . "Layer#"))))
;Daje nam to możliwość pracy na wyrażeniach regularnych. Możemy znakiem * zastąpić dowolny ciąg znaków, znakiem # jedną liczbę, @ zastępuje dowolną literę, By poznać więcej możliwości wyrażeń regularych zapraszam do zapoznania z dokumentacją funkcji (wcmatch)
; Ostatnia funkcja, którą chciałbym przedstawić w tym przykładzie to sssetfirst. funkcja ta zaznacza listę elementów,
(sssetfirst Wybrane Wybrane)

;Temat zbiorów wskazań jest bardzo obszerny i w przyszłości z pewnością do niego wrócimy, dziś tylko zasygnalizowanie kilku podstawowych zastosowań.