Newsgroup: it.comp.software.cad
Titolo: LISP - Taglia Intercetta - Approssimazione maggiore

Ciao a tutti,
ho un grosso problema LISP che non riesco a risolvere, spero vivamente in un 
vostro aiuto:
devo realizzare un comando LISP molto simile all'EXTRIM degli Express Tools, 
per tagliare tutto ciò che c'è all'interno di una polilinea più o meno 
complessa.
Per far questo ho le seguenti variabili
OGG1 --> polilinea di contorno
P1--> un punto sicuramente all'interno della polilinea
quindi faccio l'offset interno della polilinea di una distanza molto 
piccola, dopodichè mi calcolo e metto su una lista LISTAPUNTI tutte le 
coordinate della nuova polilinea generata dall'offset.
quindi procedo al taglio come segue:
  (command "_trim" OGG1 "" "_f")
  (foreach PP LISTAPUNTI (command PP))
  (command (car LISTAPUNTI
  (command "" "")
FUNZIONA TUTTO BENE!!!! ma solo se lo zoom è molto vicino alle operazioni di 
taglio. Purtroppo per colpa della forma della polilinea OGG1 lo zoom massimo 
ottenibile non è abbastanza per far eseguire il lavoro in modo corretto.
Insomma è possibile aumentare la precizione del comando TAGLIA INTERCETTA di 
AutoCAD senza dover interagire con gli ZOOM???
Voi come fate?
Ringrazio tutti in anticipo.
-- 
Emiliano - Webmaster di EmiCAD® - Tutto per AutoCAD e ProgeSOFT® IntelliCAD
e-mail:  
webm...@emicad.it
web:  
www.emicad.it
 

Verifica che OSMODE = 0 e prova con PICKBOX = 0
Marco

 Verifica che OSMODE = 0 e prova con PICKBOX = 0
Ciao Marco,
ti ringrazio il consiglio, ma il problema non si risolve, non so più cosa 
fare, mi sono fermato in un problema "banale" rispetto tutto il resto del 
lavoro!
Spero di riuscire (magari anche grazie all'aiuto del NG) a venirne fuori.
Ciao e grazie
Emiliano 

 ha scritto nel messaggio 
news:O3Dhe.899084$b5.39...@news3.tin.it...


 ha scritto nel messaggio 
news:NYThe.902487$b5.39...@news3.tin.it...


guarda, non sono proprio sicuro di avere capito il problema....
ma se è quello che dico io, succede quando è attiva la modalità "estensione"
del comando trim. Cioè autocad ti trimma gli oggetti anche in corrispondenza
dei vertici della polilinea selezionati e compresi nello zoom...
se invece non ho capito il problema....come non detto :))

Dovrebbe essere Chop.zip
-- 

 ha scritto nel messaggio 
news:Oopie.12768$795.3...@twister1.libero.it...


 Dovrebbe essere Chop.zip
L'ho trovato, ma penso esegua qualche operazione sui testi e non centra 
nulla con il Trim.
Ma non c'è una qualche variabile che permette di fare dei TRIM con opzione 
intercetta anche senza gli oggetti siano inclusi all'interno dello zoom 
corrente?
Ciao
Emiliano 

 corrente?
Mi pare che le ultime versioni 2005-2006 abbiano migliorato il comando
per questo problema.
Marco 

 per questo problema.
Sto usando AutoCAD2006....
Ciao e grazie
Emiliano 

 Cosa intendi per modalità "estensione"?
Credo si riferisca  alla possibilità, per trim ed extend, di prendere come
limiti di estensione/taglio non solo gli oggetti che
intersecano la linea da tagliare/estendere, ma anche tutti quelli che creano
intersezioni apparenti.
"Command:  TRIM
Current settings: Projection=UCS, Edge=None
Select cutting edges ...
Select objects or <select all>:
Select object to trim or shift-select to extend or
[Fence/Crossing/Project/Edge/eRase/Undo]: e
Enter an implied edge extension mode [Extend/No extend] <No extend>:
Sono sicuro che ora te lo ricorderai.

esatto....ora ditemi voi se ho azzeccato la domanda oppure no :))
mi sa di no :)
e vabbe.............


 e vabbe.............
Purtroppo no,
il problema sta nel fatto che devo utilizzare il comando TRIM tramite un 
comando in LISP.
Il comando va utilizzato con la funzione Intercetta (Fence in inglese), la 
quale però per funzionare correttamente ha bisogno che la polilinea elastica 
di intercetta sia completamente inclusa dentro lo zoom attuale (senza 
eseguire zoom successivi ovviamente). Capita spesso che lo zoom (per farcela 
stare tutta) sia talmente piccola che questa polilinea pur essendo distante 
di qualche unità da altri oggetti viene considerata intersecante e quindi 
taglia ciò che non dovrebbe tagliare....
Vorrei in qualche modo aumentare la precisione di AutoCAD, o risolvere il 
problema, ma penso non si possa fare.... sto infatti cercando altre 
soluzioni...
Ciao e comunque grazie.


Prova questo link:
http://www.timesaversforcad.com/free/Chop.zip
a me funziona.

soluzioni...
Io farei in un altro modo
Selezionereri la polilinea, troverei il bounding box, il rettangolo
che la contiene, e salverei in un selection set tutte le entità che
sono comprese, e poi le passerei al comando TAGLIA il selection set.
Saluti, Aniello
-- 
Aniello Annunziata
Content Director Manager
www.cadlandia.com
aniello.a...@cadlandia.com
Per rispondermi in privato, togli NOGARBAGE dall'indirizzo

 sono comprese, e poi le passerei al comando TAGLIA il selection set.
e qui come fai a tagliare la parte di entità che entra nella polilinea 
mantenendo quelle esterne? personalmente ho utilizzato le coordinate dei 
vertici della polilinea offsetati verso l'interno di una distanza 
piccolissima e quindi li ho passati all'opzione Fence del comando Taglia; 
però con i problemi di approssimazione che ho descritto nei precedenti 
post...
Ciao


 mantenendo quelle esterne? personalmente ho utilizzato le coordinate dei 
Beh, io è un po che uso il VBA, col VBA userei il Costrutto For Each:
For Each Entità in SSet
Poi attraverso il metodo GetIntersectionPoint, dell'oggetto Utilities,
controllerei se l'entità interseca la polilinea
E nel caso in cui ciò fosse vero, facilmente potrei calcolarmi un punto
dell'entità interna alla polilinea e lancerei il comando taglia con il
metodo Command dell'oggetto Utility.
Poichè è abbastanza facile tradurre questo in routine VL e VLX, a te
l'arduo lavoro!
-- 
Posted via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 l'arduo lavoro!
Vorrebbe dire buttare via tutto quello che ho fatto fino adesso!! :-((
In ogni caso ho risolto prendendo il LISP "extrim.lsp" degli express tools 
che ho adattato a mio piacimento e sembra funzionare correttamente anche se 
non ho capito come per questione di tempi....
Ciao e grazie comunque.


Vorrebbe dire buttare via tutto quello che ho fatto fino adesso!! :-((
No, perchč?
Usa le funzioni VL-VLA-VLX del VIsual Lisp... devi solo riuscire a
simulare in qualche modo il costrutto For Each del VBA, e non č
difficile
Crei un selection set, che č una lista
ne calcoli la lunghezza e fai una serie di CADR CADDR (ora non ricordo
bene le funzioni) per estrare il primo elemento della lista e tutto il
resto, e lo ripeti per la lunghezza della lista)
Poi con le funzioni del Visual Lisp puoi usare i metodi che ti ho
detto io..
