V I S U A L I Z Z A D I S C U S S I O N E |
cantacad |
Inserito il - 27 ottobre 2012 : 11:41:09 Salve, googolando ho trovato alcune discussioni in cui per eseguire una determinata operazione, si assegna ad un pulsante una riga di testo che farà questa operazione. Per esempio con: (ssget "_X" (list (cons 8 (cdr (assoc 8 (entget (car (entsel "Selezionare un oggetto sul layer desiderato...."))))))))
dopo aver lanciato un comando si può selezionare tutti gli oggetti di un layer...
Domanda 1: questo modo di procedere è sempre Lisp? che differenza c'è tra un lisp?
|
13 U L T I M E R I S P O S T E (in alto le più recenti) |
cantacad |
Inserito il - 03 dicembre 2012 : 12:03:26 Ah capito! bello, così ho potuto confrontare! grazie |
Terminator |
Inserito il - 03 dicembre 2012 : 10:47:28 Altrettanto semplicemente:
(defun C:SVUOTA (/ att) (while (setq att(car(nentsel "\nSeleziona attributo: "))) (entmod (subst (cons 1 "")(assoc 1 (entget att))(entget att))) ) (princ) ) |
cantacad |
Inserito il - 03 dicembre 2012 : 09:52:22 Salve, mi insegnate una cosa, vorrei rendere questo lisp "continuo", praticamente in questo momento, dopo aver "svuotato" un attributo, bisogna ricaricarlo per proseguire, vorrei invece che finchè ad esempio non do il comando ESC, resti in attesa della selezione di un altro attributo, cosa devo aggiungere? Su un lisp che fa tutt'altra cosa ma ha più o meno questa "ricarica automatica" ho visto che c'è una riga con "while" ma non sono riuscito a modifcare questo lisp... Saluti! |
cantacad |
Inserito il - 02 novembre 2012 : 08:02:04 X Terminator...Santo subito!!!
X Arri...se serve vado a fare domande anche li! ha ha |
arri |
Inserito il - 01 novembre 2012 : 07:36:02 Messaggio inserito da Terminator
Molto semplicemente:
(defun C:SVUOTA (/ att) (setq att(car(nentsel "\nSeleziona attributo: "))) (entmod (subst (cons 1 "")(assoc 1 (entget att))(entget att))) (princ) )
La funzione entsel selezionerebbe il blocco, solo nentsel ha il potere di selezionare l'attributo e in generale una sottoentità...
bello !
l'ho segnalato anche qui
grazie Terminator
Hai terminato un'altra richiesta di cantacad |
Terminator |
Inserito il - 31 ottobre 2012 : 19:41:59 Molto semplicemente:
(defun C:SVUOTA (/ att) (setq att(car(nentsel "\nSeleziona attributo: "))) (entmod (subst (cons 1 "")(assoc 1 (entget att))(entget att))) (princ) )
La funzione entsel selezionerebbe il blocco, solo nentsel ha il potere di selezionare l'attributo e in generale una sottoentità...
PS: de nada, arri! In teoria era possibile risolvere il tutto con le solite funzioni vla, vlax,..., in questo caso però era molto più immediato con le funzioni AutoLISP puro. |
Aniello Annunziata |
Inserito il - 31 ottobre 2012 : 13:25:45 Se sai l'inglese questa è una vera bibbia sulla personalizzazione dell'ambiente di AutoCAD (comandi e personalizzazioni varie): http://www.upfrontezine.com/tailor/default.htm Se invece vuoi sapere di tutto e di più sul Lisp: http://www.afralisp.com
|
arri |
Inserito il - 31 ottobre 2012 : 08:13:30 Messaggio inserito da cantacad
ha ha, no no...speravo ci fosse la possibilità fi fare piccoli comandi senza sapere l'autolisp...ad esempio vorrei farmi un pulsante che "svuota" l'attributo che clicco...ho provato a cercare nel libro "il mio lisp" i vari pezzi della stringa per modificarla ma sono fermo a (ssget "_??????" (COSA CI SARA' QUI IN MEZZO??? (entsel "Selezionare un attributo da svuotare...."))))))))
Devo leggere qualcos'altro...googolando ho trovato questo, che valga la pena? http://www.ibs.it/code/9788848805551/piccini-claudio/lisp-trek-guida.html
Saluti
questo è pane per GP e Terminator |
cantacad |
Inserito il - 31 ottobre 2012 : 07:51:15 ha ha, no no...speravo ci fosse la possibilità fi fare piccoli comandi senza sapere l'autolisp...ad esempio vorrei farmi un pulsante che "svuota" l'attributo che clicco...ho provato a cercare nel libro "il mio lisp" i vari pezzi della stringa per modificarla ma sono fermo a (ssget "_??????" (COSA CI SARA' QUI IN MEZZO??? (entsel "Selezionare un attributo da svuotare...."))))))))
Devo leggere qualcos'altro...googolando ho trovato questo, che valga la pena? http://www.ibs.it/code/9788848805551/piccini-claudio/lisp-trek-guida.html
Saluti |
arri |
Inserito il - 29 ottobre 2012 : 10:54:45 Messaggio inserito da cantacad
ok grazie, allora sono da capo...niente lisp niente comandi extra! saluti
scommetto che era un tentativo di usarlo in LT |
cantacad |
Inserito il - 28 ottobre 2012 : 15:52:40 ok grazie, allora sono da capo...niente lisp niente comandi extra! saluti |
Giuseppe Mauro |
Inserito il - 28 ottobre 2012 : 09:01:51 Il lisp e' un linguaggio di programmazione Quella assegnata al pulsante li' e' una stringa Lisp. La riconosci per 2 motivi: 1) inizia e finisce con una parentesi 2) contiene istruzioni lisp Questa, in particolare dice: seleziona un oggetto di cui vuoi scegliere il layer -> di quell'oggetto ottieni la lista delle proprieta' -> isola la proprieta' layer -> seleziona tutti gli oggetti del disegno che corrispondo a questa proprieta' layer.
Stai assegnando ad un pulsante "un pezzo" di un programma lisp.
La differenza con un lisp completo e' che questa non la puoi lanciare con un comando apposito (che si definisce mediante la funzione defun) e che per essere assegnata ad un pulsante, non puo' essere piu lunga di una riga. Altra differenza e' che ogni volta la devi riscrivere daccapo (cosa di cui si occupa il pulsante), mentre il lisp programma lo carichi una volta e lo richiami con un semplice comando.
La stessa stringa lisp, la puoi anche dare da linea di comando. Autocad la accetta senza problemi.
|
arri |
Inserito il - 27 ottobre 2012 : 12:54:28 Messaggio di cantacad questo modo di procedere è sempre Lisp?
sì |