TuttoCAD Forum

TuttoCAD Forum
[ Home | Registrati | Discussioni Attive | Discussioni Recenti | Segnalibro | Msg privati | Sondaggi Attivi | Utenti | Album Fotografico | Download | | Cerca | FAQ ]
Nome Utente:
Password:
Salva Password
Password Dimenticata?

 Tutti i Forum
 1 - TuttoCAD Software
 AutoCAD
 Pulsanti con istruzioni assegnate
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
I seguenti utenti stanno leggendo questo Forum Qui c'è:
Autore Discussione Precedente Discussione Discussione Successiva  

cantacad
Utente Master



662 Messaggi

Inserito il - 27 ottobre 2012 : 11:41:09  Mostra Profilo Invia a cantacad un Messaggio Privato  Rispondi Quotando
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  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
Messaggio di cantacad
questo modo di procedere è sempre Lisp?


Torna all'inizio della Pagina

Giuseppe Mauro
Amministratore



Regione: Campania
Prov.: Napoli


2705 Messaggi

Inserito il - 28 ottobre 2012 : 09:01:51  Mostra Profilo Invia a Giuseppe Mauro un Messaggio Privato  Rispondi Quotando
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.
Torna all'inizio della Pagina

cantacad
Utente Master



662 Messaggi

Inserito il - 28 ottobre 2012 : 15:52:40  Mostra Profilo Invia a cantacad un Messaggio Privato  Rispondi Quotando
ok grazie, allora sono da capo...niente lisp niente comandi extra! saluti
Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 29 ottobre 2012 : 10:54:45  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
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
Torna all'inizio della Pagina

cantacad
Utente Master



662 Messaggi

Inserito il - 31 ottobre 2012 : 07:51:15  Mostra Profilo Invia a cantacad un Messaggio Privato  Rispondi Quotando
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
Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 31 ottobre 2012 : 08:13:30  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
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
Torna all'inizio della Pagina

Aniello Annunziata
Amministratore



Regione: Campania
Prov.: Napoli
Città: San Giuseppe Vesuviano


2302 Messaggi

Inserito il - 31 ottobre 2012 : 13:25:45  Mostra Profilo Invia a Aniello Annunziata un Messaggio Privato  Rispondi Quotando
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

Aniello Annunziata
Staff di CADLandia
www.cadlandia.com
aniello.annunziata@cadlandia.com
Torna all'inizio della Pagina

Terminator
Utente Master



725 Messaggi

Inserito il - 31 ottobre 2012 : 19:41:59  Mostra Profilo Invia a Terminator un Messaggio Privato  Rispondi Quotando
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
Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 01 novembre 2012 : 07:36:02  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
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
Torna all'inizio della Pagina

cantacad
Utente Master



662 Messaggi

Inserito il - 02 novembre 2012 : 08:02:04  Mostra Profilo Invia a cantacad un Messaggio Privato  Rispondi Quotando
X Terminator...Santo subito!!!

X Arri...se serve vado a fare domande anche li! ha ha
Torna all'inizio della Pagina

cantacad
Utente Master



662 Messaggi

Inserito il - 03 dicembre 2012 : 09:52:22  Mostra Profilo Invia a cantacad un Messaggio Privato  Rispondi Quotando
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!
Torna all'inizio della Pagina

Terminator
Utente Master



725 Messaggi

Inserito il - 03 dicembre 2012 : 10:47:28  Mostra Profilo Invia a Terminator un Messaggio Privato  Rispondi Quotando
Altrettanto semplicemente:

(defun C:SVUOTA (/ att)
(while (setq att(car(nentsel "\nSeleziona attributo: ")))
(entmod (subst (cons 1 "")(assoc 1 (entget att))(entget att)))
)
(princ)
)
Torna all'inizio della Pagina

cantacad
Utente Master



662 Messaggi

Inserito il - 03 dicembre 2012 : 12:03:26  Mostra Profilo Invia a cantacad un Messaggio Privato  Rispondi Quotando
Ah capito! bello, così ho potuto confrontare! grazie
Torna all'inizio della Pagina
  Discussione Precedente Discussione Discussione Successiva  
 Nuova Discussione  Rispondi
 Versione Stampabile Bookmark this Topic Aggiungi Segnalibro
Vai a:
TuttoCAD Forum © 2001-2010 CADLandia Torna all'inizio della Pagina
Pagina generata in 0,71 secondi.