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
 AutoLISP
 Passare una combinazione CTRL+ in lisp

Nota: Devi essere registrato per poter inserire un messaggio.
Per registrarti, clicca qui. La Registrazione è semplice e gratuita!

Larghezza finestra:
Nome Utente:
Password:
Modo:
Formato: GrassettoCorsivoSottolineatoBarrato Aggiungi Spoiler Allinea a  SinistraCentraAllinea a Destra Riga Orizzontale Inserisci linkInserisci EmailInserisci FlashInserisci Immagine Inserisci CodiceInserisci CitazioneInserisci Lista
   
Icona Messaggio:              
             
Messaggio:

  * Il codice HTML è OFF
* Il Codice Forum è ON

Faccine
Felice [:)] Davvero Felice [:D] Caldo [8D] Imbarazzato [:I]
Goloso [:P] Diavoletto [):] Occhiolino [;)] Clown [:o)]
Occhio Nero [B)] Palla Otto [8] Infelice [:(] Compiaciuto [8)]
Scioccato [:0] Arrabbiato [:(!] Morto [xx(] Assonnato [|)]
Bacio [:X] Approvazione [^] Disapprovazione [V] Domanda [?]
Seleziona altre faccine

    
 
   

V I S U A L I Z Z A    D I S C U S S I O N E
Giuseppe Mauro Inserito il - 16 ottobre 2014 : 16:10:47
Non so se qualcuno usa il lisp con i comandi CTX ed STX di Lee Mac.
Semplicemente mediante CTX al primo click si copia il "valore" di un testo, dal secondo in poi, si sostituisce qualsiasi testo esistente cliccato con il valore del testo copiato.

Ho provato a fare questo tra un testo ed una cella, ed (ovviamente) non funziona. Ma poiche' mi era comodo (e mi serviva in tempi ultrarapidi) mi sono scritto una procedurina molto grezza, che preleva il valore del testo cliccato e lo inserisce nella cella dove successivamente clicco.

(defun c:CTXT ()
(repeat 5000
(setq TESTO (cdr (assoc '1 (entget (car (entsel "\nSelezionare testo: "))))))
(setq TESTO (strcat TESTO))
(command "tabledit" pause TESTO)
) ;;chiusura repeat
) ;;chiusura defun
(princ "\nusare CTXT")


Il codice funziona mendiante l'utilizzo brutale del command e non mi sono soffermato né a reperire il valore della cella mediante entget né la posizione del cursore in fase di click etc.

Ha pero' 2 difetti.
1) il valore del testo copiato si aggiunge al valore della cella esistente (tipo strcat)
2) con stringhe tipo "1g" il valore della cella diventa magicamente 90.000 (fa una conversione non voluta in valore angolare)

Per ovviare rapidamente al problema di cui al punto 1) basterebbe passare al comando "tabledit" un CTRL+A che gli dice di selezionare l'intero valore cella, che sarebbe poi sostituito dal valore di TESTO.
Ma come si passa una combinazione CTRL+tasto ad un comando via LISP?

Per il secondo problema non ne sono venuto a capo...
14   U L T I M E    R I S P O S T E    (in alto le più recenti)
arri Inserito il - 11 giugno 2015 : 12:22:37
prego
aforza Inserito il - 11 giugno 2015 : 12:05:16
Ciao

come faiiiiiiiiiiiiiiiii

ok ottimo

------------------------------------------------------------------------

(defun c:clip1 () ;correzione del nome da clip a clip1
(vla-GetEntity (vla-get-utility (vla-get-activedocument (vlax-get-acad-object))) 'bloc nil "\nSelezionare blocco: ")
(setq nom-bl (vla-get-Layer bloc)) ------------------RIGA MODIFICATA -----------------------
(setq html (vlax-create-object "htmlfile") result (vlax-invoke (vlax-get (vlax-get html 'ParentWindow) 'ClipBoardData) 'setData "Text" nom-bl)) ;_end_setq
(vlax-release-object html)
)

SCUSATE SE NON L'HO SISTEMATO AL 100%

-----------------------------------------------------------------------------------------

GRAZIE

Ciao
arri Inserito il - 10 giugno 2015 : 21:49:19
http://www.cadlandia.com/topic.asp?TOPIC_ID=14108&whichpage=2
aforza Inserito il - 10 giugno 2015 : 14:56:02
<div align="center" id="quote2"><table class="quote"><tr><td class="quotetd"></td></tr><tr><td class="quotetd2"><span class="quotetext">Messaggio inserito da Terminator


Questo dovrebbe fare al caso tuo, si è parlato in un post di tanto tempo fa.

;;;**************************CTEXTC***********************************
;;; La stringa come argomento è già disponibile per un Incolla (CTRL-V)

(defun ctextc (stringa / html result)
 (if (= (type stringa) 'STR)
  (progn
   (setq html	(vlax-create-object "htmlfile")
	 result	(vlax-invoke
		 (vlax-get (vlax-get html 'ParentWindow) 'ClipBoardData)
		 'setData
		 "Text"
		 stringa
		)
   )
   (vlax-release-object html)
   result
  )
  nil
 )
)

</span></td></tr></table></div align="center" id="quote2">

Ciao

@Terminator: a me serve proprio una cosa simile, rendere disponibile sul ctrl+v il nome di un layer perché passo da un file all'altro e metto il nome del layer di un oggetto selezionato su un testo esistente.
A quale discussione ti riferisci perché non la trovo.

Grazie
Ciao

Giuseppe Mauro Inserito il - 16 ottobre 2014 : 21:52:44
Messaggio inserito da Terminator

Oops, sto invecchiando, chissà perché mi sono fissato con la tabella di Excel...


Gallina vecchia fa buon brodo...
Il vino quando invecchia migliora...
Terminator Inserito il - 16 ottobre 2014 : 20:16:03
Oops, sto invecchiando, chissà perché mi sono fissato con la tabella di Excel...
arri Inserito il - 16 ottobre 2014 : 19:08:43
prego
Giuseppe Mauro Inserito il - 16 ottobre 2014 : 18:58:52
Arri.....

come al solito sei un mito! E' esattamente cio' che mi serviva, qualche click in piu (ma magari mi modifico io il listato), ma fa esattamente cio' che mi serve.

Grazie
Giuseppe Mauro Inserito il - 16 ottobre 2014 : 18:50:41
Messaggio inserito da Terminator

Quando clicchi il testo, prelevi la stringa e diventa disponibile per un CTRL+V. Sono i camandi ActiveX extra-AutoCAD.


Max, io il valore lo prelevo, ma non mi serve poi incollarlo con un CTRL+V.
Con tabledit io edito la cella nella quale clicco, ma per impostazioni di default dell'editor la stringa che immetto (il valore della stringa) viene immessa all'inizio dell'esistente.
Se riuscissi a passare al comando tabledit un CRTL+A, questo mi selezionerebbe l'intero valore esistente della cella, e lo sostituirei con il mio valore stringa.
Ma non riesco a passare via command un codice CTRL+A che da tastiera funziona tranquillamente
arri Inserito il - 16 ottobre 2014 : 18:12:31
prova questo

http://www.cadlandia.com/topic.asp?TOPIC_ID=14684
Terminator Inserito il - 16 ottobre 2014 : 17:55:55
Quando clicchi il testo, prelevi la stringa e diventa disponibile per un CTRL+V. Sono i camandi ActiveX extra-AutoCAD.
Giuseppe Mauro Inserito il - 16 ottobre 2014 : 17:51:15
non ho mica capito come integrarlo del quel lisp.
Perché agisce un file html? La tabella viene vista come un file html?
Terminator Inserito il - 16 ottobre 2014 : 17:22:59

Questo dovrebbe fare al caso tuo, si è parlato in un post di tanto tempo fa.

;;;**************************CTEXTC***********************************
;;; La stringa come argomento è già disponibile per un Incolla (CTRL-V)

(defun ctextc (stringa / html result)
 (if (= (type stringa) 'STR)
  (progn
   (setq html	(vlax-create-object "htmlfile")
	 result	(vlax-invoke
		 (vlax-get (vlax-get html 'ParentWindow) 'ClipBoardData)
		 'setData
		 "Text"
		 stringa
		)
   )
   (vlax-release-object html)
   result
  )
  nil
 )
)
Giuseppe Mauro Inserito il - 16 ottobre 2014 : 16:35:59
Aggiungo altri risultati di test.

Il codice che io copio è sempre un numero + 1 lettera minuscola (2a, 5g, 7f etc)
Ebbene inseriti in una cella brutalmente, queste lettere si trasformano in valori di formattazione.
il suffisso a genera un formato ora, quello g diventa un angolo etc.

Mistero.

TuttoCAD Forum © 2001-2010 CADLandia Torna all'inizio della Pagina
Pagina generata in 0,27 secondi.