Newsgroup: it.comp.software.cad
Titolo: LISP - Problemi di zoom

Ciao a tutti,
ho un problema con un semplice LISP che deve eseguire l'offset di un arco
rispetto il suo centro e rispetto l'esterno dell'arco stesso.
Per l'offset ho utilizzato la funzione COMMAND.
Il LISP funziona correttamente quando lo zoom inquadra bene la zona dove è
presente l'arco, ma se quest'ultimo non si vede bene oppure è addirittura
fuori dallo zoom, l'offset (pur non visualizzando nessun errore) non viene
eseguito; specialmente quando l'arco verso il gentro che dovrebbe generare
l'offset è molto piccolo ma comunque non nullo.
Di seguito la funzione:
(defun c:prova ()
   (setq ogg (car (entsel "\nSelezionare arco: ")))
   (setq largh (getdist "\nIndicare la larghezza offset: "))
   (setq angini (cdr (assoc 50 (entget ogg))))
   (setq raggio (cdr (assoc 40 (entget ogg))))
   (setq centro (cdr (assoc 10 (entget ogg))))
   (setq p1 (polar centro angini (+ raggio 100))) ;punto esterno all'arco
   (command "_offset" (/ largh 2) ogg centro ogg p1 "")
)
Come devo fare per evitare questo problema?
Ringrazio tutti in anticipo.
-- 
Emiliano - Webmaster di EmiCAD® - Tutto per AutoCAD e ProgeSOFT® IntelliCAD
e-mail:  
webm...@emicad.it
web:  
www.emicad.it

 ha scritto nel messaggio
news:Z2zvc.393337$rM4.16...@news4.tin.it...


 ha scritto nel messaggio
news:NDIvc.279495$hc5.12...@news3.tin.it...


> Ciao a tutti,
Ciao Emiliano
Innanzi tutto un messaggio subliminale: "è arrivato tutto - grazie
ottomila!" :-)
Ora andiamo al problema... se mi ricordo ancora qualcosa di AutoLISP! =
:-DDD
Non mi far scrivere codice... che "al volo" ricordo poco (lo usavo davvero
tanto tempo fa).
Ti do solo un'idea... :-)
Rammento che tali problemi capitavano anche con vecchie versione di AutoCAD.
In quei casi, le aggiravo brutalmente in questo modo:
1) duplicavo su se stessa l'entità selezionata
2) quindi ne modificavo i valori DXF con Entmod, ottenendo la nuova entità
desiderata.
L'operazione è piuttosto rapida e, tutto sommato, non fai altro che fare la
stessa cosa che fa il comando "offset": aggiungi una nuova entità al
disegno, impostandola con i parametri raccolti dal tuo file lisp.
Non usandolo da molto tempo, invece di usare il comando "Copy" per l'entità,
NON ricordo se in Autolisp c'è la possibilità di "creare" una nuova entità
partendo da "aria fritta" (come, invece, si può fare in VBA). Ma immagino si
possa fare...
--
Ciao da MioMao
__________________
* Prenditi un antivirus serio e controlla il tuo PC!
* Ecco dove puoi scaricare alcuni antivirus freeware (gratis!):
http://www.grisoft.com
 - 
http://www.free-av.com/index.htm
http://www.avast.com
 (italiano) - 
http://it.bitdefender.com
 (italiano)
* USALI * PROTEGGITI * USALI *

 possa fare...
Si può fare con ENTMAKE, ma è sicuramente più complesso di utilizzare la
funzione COMMAND.
Di solito utilizzo ENTMAKE quando ho necessità di accorciare i tempi di
elaborazione del LISP.
Se il LISP non ha problemi di pesantezza preferisco utilizzare la
semplicissima funzione COMMAND
Ciao e grazie.


 Si può fare con ENTMAKE,
ORPO!! :-))
Ecco un briciolo della mia memoria che riaffiora!!
= :-DDDD
Vediamo....
(vado a memoria, abbi pasiensa se sbaglio!)
;ti acchiappi l'arco...
(setq ogg (car (entsel "\nSelezionare arco: ")))
;registri la dimensione dell'offset (che sarà NEGATIVA se interna all'arco e
POSITIVA se esterna)
(setq largh (getreal "\nIndicare la larghezza offset <- se interna / + se
esterna>: "))
;ti copi brutalmente l'archetto...
(command "_copy" ogg "" '(0 0 0) '(0 0 0))
;fissi la tabella codici del primo arco
(setq ogg (entget ogg))
;fissi la tabella codici del secondo arco (l'ultimo oggetto creato)
(setq ogg2 (entget (entlast)))
;modifichi il codice 40 all'ultimo arco, con somma algebrica
(setq ogg2 (entmod (subst (cons 40 (+ (cdr (assoc 40 ogg)) largh))(assoc 40
ogg2) ogg2)))
;ridisegni il vecchio archetto sul monitor...
(entupd (cdr (assoc -1 ogg)))
(princ)
E via andare... :-)
Altrimenti, se vuoi usare il sistema del Entmake
(mumble... mumble....'azz...  non mi ricordo come si fa a creare una Nnuova
lista estraendo i dati dxf da una tabella esistente.. ahahhahaa)
Pasiensa, dai...
Ricordo che non è difficile....
MA NON MI RICORDO COME SI FA!
= :-DDDD
Btw, il primo metodo funzia.


 Btw, il primo metodo funzia.
:-))))))))))))))))))))))))))))))))))))))
Ciao e grazie
Emiliano

 ha scritto nel messaggio
news:Z2zvc.393337$rM4.16...@news4.tin.it...
