Usare la selezione sullo schermo per autocad in Delphi

In questo articolo vedremo come richiedere all'utente un selezione di oggetti sullo schermo, per poi utilizzarli a piacere.

Come prima cosa do per scontato la connessione ad Autocad, infatti come prima cosa occorre sempre essere connessi all'applicazione per poterla usare.
Dato che usaremo alcuni oggetti "complessi" per facilitare la lettura del codice, come IAcadEntity e IAcadSelectionsets, la connessione all'applicazione deve essere fatta tramite la libreria TLB (autocad_TLB.pas).

Il primo passo è quello di connettersi ai SelectionSets del documento aperto ed in uso.

Dopo di che occorre verificare che non esista una selezione di nome "temp", dato che creare una selezione con lo stesso nome di una già esistente provocherebbe un errore.

procedura CancellaSelezione;
var 
 Poly, Mspace : OleVariant;
 filterType,filterData:olevariant;
 sel:IAcadEntity;
 selSet:IAcadSelectionSets;
begin
 //usa le selezioni del documento corrente
 selSet:=Autocad.ActiveDocument.SelectionSets;
 
 //se ve ne sono, deve eliminate quella usata dal programma
 if selSet.Count>0 then
   selSet.Item('TEMP').Delete;
 //crea la nuova selezione 
 selSet.Add('TEMP');
 
 //imposta il filtro si selezione a qualsiasi oggetto
 filterType:=VarArrayCreate([0,0],varSmallint);
 filterData:=VarArrayCreate([0,0],varVariant);
 filterType[0]:=0;
 filterData[0]:= '*';
 
 //richiede la selezione all'utente
 selSet.Item('TEMP').SelectOnScreen(filterType,filterData);
 
 //se è stato selezionato uno o più elementi, ne cancella il primo
 if selSet.Item('TEMP').Count>0 then begin
   sel := selSet.Item('TEMP').Item(0);
   sel.delete;
 end;
 
 //elimina la selezione
 selSet.Item('TEMP').Delete;
end;
Compago