Newsgroup: it.comp.software.cad
Titolo: LISP e comando UNDEFINE

Scusate ma la guida in linea non mi sembra molto chiara sull'argomento in 
oggetto.
Vorrei modificare la funzione PURGE di AutoCAD in modo che prima di 
visualizzare la finestra di dialogo compia alcune operazioni (ad es. un 
semplice "alert".
Ho scritto:
(defun c:purge ()
   (alert "ATTENZIONE")
   (command "_.purge")
)
(command "_undefine" "purge")
Risultato:
- quando avvio il comando "purge" digitandolo da tastiera compare l'alert e 
poi invece di apparire la finestra di dialogo mi appaioni le opzioni da riga 
dei comandi.
- se digito "elimina" si avvia il comando di AutoCAD con la sua finestra di 
dialogo e se ne frega che ho ridefinito il comando. E quello che è ancora 
più strano è che anche il comando "purge" che era quasi ridefinito adesso è 
tornato quello di AutoCAD.
Ho provato varie combinazioni, con "_", con "_." con "." ma non ne esco 
fuori!
Potete darmi qualche dritta?
Grazie 

 2D Parametric for 2000-2008 <
(strcat "I like " (substr (ver) 8 4) "!")
--

per far sapare se hai risolto il problema...
Grazie Marco.
Purtroppo non ho risolto il problema...
con il codice da te consigliato, che a parte (initdia) era praticamente 
uguale ad una delle varie prove, mi trovo con questo risultato:
Avvio PURGE <-- Tutto ok
Avvio _PURGE <-- Mi avvia il comando di AutoCAD e non quello ridefinito e 
sostuitisce quello da me definito in PURGE con quello di AutoCAD
Avvio ELIMINA <-- Mi avvia il comando di AutoCAD e non quello ridefinito e 
sostuitisce quello da me definito in PURGE con quello di AutoCAD
Quindi se l'utente preme File-->Utilitï¿½ Disegno-->Elimina oltre ad 
utilizzare il comando di default di AutoCAD ridefinisce il mio nuovo 
comando!
Le prove le stï¿½ facendo con AutoCAD 2008 ita.
E' possibile ridefinire tutti i comandi che utilizzano il PURGE, tranne per 
ovvi motivi il ".PURGE"?
Grazie 

 )
era questa, non so proprio cosa avrei dovuto
rispondere solo per differenziarmi dal tuo codice;
Initdia ERA LA SOLUZIONE.
%%
Ora la mia proposta ï¿œ questa:
(defun c:elimina ( )
  (alert "ATTENZIONE")
  (initdia)
  (command "_.purge" "_.undefine" "_purge")
)
(defun c:-elimina ( )
  (alert "ATTENZIONE")
  (command "_.purge")
)
(command
  "_.undefine" "elimina" "_.undefine" "-elimina"
)
e vediamo se riusciremo a sapere se funziona
e se lo comunicherai anche a Constantin (altro NG).


 e se lo comunicherai anche a Constantin (altro NG).
Scusa ma questa affermazione mi � sembrata un po' polemica, anche se spero 
di aver capito male, vista la mia stima nei tuoi confronti.
Purtroppo, come ho detto, non ho la possibilit� di provare subito i vostri 
consigli e quindi di rispondere.
Spero che per essere "educato" io possa rispondere entro qualche giorno e 
non per forza entro qualche ora dalla risposta.
Grazie 

 Ok (initdia) risolveva il primo problema ma non il secondo:
Mi dispiace ma questa risposta non mi piace per niente.
Il secondo problema al momento della risposta non c'era
perciï¿œ  non poteva essere affrontato.
Per oggi mi fermo qua.
Alla prossima.

 Per oggi mi fermo qua.
Scusami Marco,
non capisco perch� questa polemica. Ti garantisco che non � assolutamente 
mio interesse far polemica specialmente con te che aiuti spesso e 
gratuitamente i partecimenti di questo e altri NG. E ti ringrazio per 
questo!
Nel mio primo messaggio a questo NG ho scritto:
"Risultato:
- quando avvio il comando "purge" digitandolo da tastiera compare l'alert e
poi invece di apparire la finestra di dialogo mi appaioni le opzioni da riga
dei comandi.
- se digito "elimina" si avvia il comando di AutoCAD con la sua finestra di
dialogo e se ne frega che ho ridefinito il comando. E quello che � ancora
pi� strano � che anche il comando "purge" che era quasi ridefinito adesso �
tornato quello di AutoCAD."
Era il risultato che ottenevo con il mio codice che tentavo di far 
funzionare.
Il primo risultato evidenziava il problema della finestra di dialogo.
Il secondo risultato (probabilmente non chiaro) voleva evidenziare il fatto 
che comunque il comando "elimina" digitato in italiano non veniva ridefinito 
e anzi una volta avviato comprometteva anche il comando ridefinito in 
inglese.
Spero di riuscire a riprendermi la tua stima perch� non capisco cosa posso 
aver fatto per farti "arrabbiare"...
Ciao e buon lavoro 

 )
Ok, grazie al tuo aiuto e a quello dell'altro NG sono riuscito a scrivere il 
seguente codice che funziona sia in AutoCAD Italiano ed Inglese.
Purtroppo nelle altre localicazzioni quando viene avviato il comando nella 
lingua localizzata non sar� ridefinito.
(command "_.undefine" "_purge")
(command "_.undefine" "_-purge")
(defun c:purge ( )
  (alert "ATTENZIONE")
  (initdia)
  (command "_.purge" "_.undefine" "_purge")
)
(defun c:elimina ( )
  (alert "ATTENZIONE")
  (initdia)
  (command "_.purge" "_.undefine" "_purge")
)
(defun c:-elimina ( )
  (alert "ATTENZIONE")
  (command "_.purge" "_.undefine" "_purge")
)
(defun c:-purge ( )
  (alert "ATTENZIONE")
  (command "_.purge" "_.undefine" "_purge")
)
(defun c:_-purge ( )
  (alert "ATTENZIONE")
  (command "_.purge" "_.undefine" "_purge")
)
Grazie. 


 
 Dalla Guida per sviluppatori di Autocad.
Uso dei reattori (reactors,
  In questa lezione vengono fornite informazioni sui reattori e su come unirli
agli eventi ed alle entit� di disegno. I reattori fanno s� che AutoCAD�
notifichi all'applicazione che si � verificato un determinato evento. Ad
esempio, se un utente sposta un'entit� che � stata unita ad un reattore
dall'applicazione, viene visualizzato un avviso relativo allo spostamento
effettuato. � possibile programmare l'attivazione di ulteriori operazioni,
ad esempio lo spostamento delle altre entit� associate a quella spostata
dall'utente oppure l'aggiornamento di un'etichetta del testo che registra le
informazioni della revisione sulla caratteristica del disegno modificata. In
pratica, � come impostare l'applicazione con un controllo a distanza
indicando ad AutoCAD di inviare un segnale acustico all'applicazione al
verificarsi di un evento.
LI sto studiando da poco, e sono veramente potenti; peccato che manchi una
documentazione esauriente in rete, anche se esistono parecchi esempi, poco e
male documentati.
Qualcosa si trova in 
http://www.afralisp.net/
.
Ho gettato solo un sasso nello stagno.
--------------------------------
Inviato via 
http://arianna.libero.it/usenet/

 Ho gettato solo un sasso nello stagno.
Li conosco, anche se non li mai utilizzati.
Non mi sembra per� che servino per risolvere il mio problema iniziale.
Comuenque grazie.