Autore |
Discussione |
|
cantacad
Utente Master
662 Messaggi |
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?
|
|
arri
Utente Master
Regione: Lombardia
14951 Messaggi |
Inserito il - 27 ottobre 2012 : 12:54:28
|
Messaggio di cantacad questo modo di procedere è sempre Lisp?
sì |
|
|
Giuseppe Mauro
Amministratore
Regione: Campania
Prov.: Napoli
2705 Messaggi |
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.
|
|
|
cantacad
Utente Master
662 Messaggi |
Inserito il - 28 ottobre 2012 : 15:52:40
|
ok grazie, allora sono da capo...niente lisp niente comandi extra! saluti |
|
|
arri
Utente Master
Regione: Lombardia
14951 Messaggi |
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
Utente Master
662 Messaggi |
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
Utente Master
Regione: Lombardia
14951 Messaggi |
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 |
|
|
Aniello Annunziata
Amministratore
Regione: Campania
Prov.: Napoli
Città: San Giuseppe Vesuviano
2302 Messaggi |
|
Terminator
Utente Master
725 Messaggi |
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. |
Modificato da - Terminator in data 01 novembre 2012 11:28:49 |
|
|
arri
Utente Master
Regione: Lombardia
14951 Messaggi |
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 |
Modificato da - arri in data 01 novembre 2012 07:53:21 |
|
|
cantacad
Utente Master
662 Messaggi |
Inserito il - 02 novembre 2012 : 08:02:04
|
X Terminator...Santo subito!!!
X Arri...se serve vado a fare domande anche li! ha ha |
|
|
cantacad
Utente Master
662 Messaggi |
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! |
|
|
Terminator
Utente Master
725 Messaggi |
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
Utente Master
662 Messaggi |
Inserito il - 03 dicembre 2012 : 12:03:26
|
Ah capito! bello, così ho potuto confrontare! grazie |
|
|
|
Discussione |
|