Usare la selezione sullo schermo per autocad in Delphi
- Details
- Category: Delphi
- Published on Friday, 09 December 2011 18:03
- Hits: 242
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;

