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
 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  

Giuseppe Mauro
Amministratore



Regione: Campania
Prov.: Napoli


2704 Messaggi

Inserito il - 16 ottobre 2014 : 16:10:47  Mostra Profilo Invia a Giuseppe Mauro un Messaggio Privato  Rispondi Quotando
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...

Giuseppe Mauro
Amministratore



Regione: Campania
Prov.: Napoli


2704 Messaggi

Inserito il - 16 ottobre 2014 : 16:35:59  Mostra Profilo Invia a Giuseppe Mauro un Messaggio Privato  Rispondi Quotando
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.
Torna all'inizio della Pagina

Terminator
Utente Master



725 Messaggi

Inserito il - 16 ottobre 2014 : 17:22:59  Mostra Profilo Invia a Terminator un Messaggio Privato  Rispondi Quotando

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
 )
)
Torna all'inizio della Pagina

Giuseppe Mauro
Amministratore



Regione: Campania
Prov.: Napoli


2704 Messaggi

Inserito il - 16 ottobre 2014 : 17:51:15  Mostra Profilo Invia a Giuseppe Mauro un Messaggio Privato  Rispondi Quotando
non ho mica capito come integrarlo del quel lisp.
Perché agisce un file html? La tabella viene vista come un file html?
Torna all'inizio della Pagina

Terminator
Utente Master



725 Messaggi

Inserito il - 16 ottobre 2014 : 17:55:55  Mostra Profilo Invia a Terminator un Messaggio Privato  Rispondi Quotando
Quando clicchi il testo, prelevi la stringa e diventa disponibile per un CTRL+V. Sono i camandi ActiveX extra-AutoCAD.
Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 16 ottobre 2014 : 18:12:31  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
prova questo

http://www.cadlandia.com/topic.asp?TOPIC_ID=14684
Torna all'inizio della Pagina

Giuseppe Mauro
Amministratore



Regione: Campania
Prov.: Napoli


2704 Messaggi

Inserito il - 16 ottobre 2014 : 18:50:41  Mostra Profilo Invia a Giuseppe Mauro un Messaggio Privato  Rispondi Quotando
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
Torna all'inizio della Pagina

Giuseppe Mauro
Amministratore



Regione: Campania
Prov.: Napoli


2704 Messaggi

Inserito il - 16 ottobre 2014 : 18:58:52  Mostra Profilo Invia a Giuseppe Mauro un Messaggio Privato  Rispondi Quotando
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
Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 16 ottobre 2014 : 19:08:43  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
prego
Torna all'inizio della Pagina

Terminator
Utente Master



725 Messaggi

Inserito il - 16 ottobre 2014 : 20:16:03  Mostra Profilo Invia a Terminator un Messaggio Privato  Rispondi Quotando
Oops, sto invecchiando, chissà perché mi sono fissato con la tabella di Excel...
Torna all'inizio della Pagina

Giuseppe Mauro
Amministratore



Regione: Campania
Prov.: Napoli


2704 Messaggi

Inserito il - 16 ottobre 2014 : 21:52:44  Mostra Profilo Invia a Giuseppe Mauro un Messaggio Privato  Rispondi Quotando
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...
Torna all'inizio della Pagina

aforza
Utente Master


Regione: Italia
Prov.: Padova
Città: Cavarzere(VE)-Monselice(PD)


1798 Messaggi

Inserito il - 10 giugno 2015 : 14:56:02  Mostra Profilo  Rispondi Quotando
<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


Andrea Forza

CadWorx 2014 & Plant3D AutoCAD 2014 su Seven 64bit - Dell Vostro i7 ram 8gb - doppio monitor Hanns-g 22"

Modificato da - aforza in data 10 giugno 2015 15:02:39
Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 10 giugno 2015 : 21:49:19  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
http://www.cadlandia.com/topic.asp?TOPIC_ID=14108&whichpage=2
Torna all'inizio della Pagina

aforza
Utente Master


Regione: Italia
Prov.: Padova
Città: Cavarzere(VE)-Monselice(PD)


1798 Messaggi

Inserito il - 11 giugno 2015 : 12:05:16  Mostra Profilo  Rispondi Quotando
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

Andrea Forza

CadWorx 2014 & Plant3D AutoCAD 2014 su Seven 64bit - Dell Vostro i7 ram 8gb - doppio monitor Hanns-g 22"

Modificato da - aforza in data 11 giugno 2015 14:04:40
Torna all'inizio della Pagina

arri
Utente Master


Regione: Lombardia


14951 Messaggi

Inserito il - 11 giugno 2015 : 12:22:37  Mostra Profilo Invia a arri un Messaggio Privato  Rispondi Quotando
prego
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,35 secondi.