Autore |
Discussione |
|
Giuseppe Mauro
Amministratore
Regione: Campania
Prov.: Napoli
2704 Messaggi |
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...
|
|
Giuseppe Mauro
Amministratore
Regione: Campania
Prov.: Napoli
2704 Messaggi |
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. |
|
|
Terminator
Utente Master
725 Messaggi |
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
Amministratore
Regione: Campania
Prov.: Napoli
2704 Messaggi |
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
Utente Master
725 Messaggi |
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. |
|
|
arri
Utente Master
Regione: Lombardia
14951 Messaggi |
|
Giuseppe Mauro
Amministratore
Regione: Campania
Prov.: Napoli
2704 Messaggi |
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 |
|
|
Giuseppe Mauro
Amministratore
Regione: Campania
Prov.: Napoli
2704 Messaggi |
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 |
|
|
arri
Utente Master
Regione: Lombardia
14951 Messaggi |
Inserito il - 16 ottobre 2014 : 19:08:43
|
prego
|
|
|
Terminator
Utente Master
725 Messaggi |
Inserito il - 16 ottobre 2014 : 20:16:03
|
Oops, sto invecchiando, chissà perché mi sono fissato con la tabella di Excel... |
|
|
Giuseppe Mauro
Amministratore
Regione: Campania
Prov.: Napoli
2704 Messaggi |
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... |
|
|
aforza
Utente Master
Regione: Italia
Prov.: Padova
Città: Cavarzere(VE)-Monselice(PD)
1798 Messaggi |
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
|
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 |
|
|
arri
Utente Master
Regione: Lombardia
14951 Messaggi |
|
aforza
Utente Master
Regione: Italia
Prov.: Padova
Città: Cavarzere(VE)-Monselice(PD)
1798 Messaggi |
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
|
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 |
|
|
arri
Utente Master
Regione: Lombardia
14951 Messaggi |
Inserito il - 11 giugno 2015 : 12:22:37
|
prego
|
|
|
|
Discussione |
|