• このフォーラムは、www.cad3d.it/forum1 - イタリアのデザインコミュニティの機械翻訳です。いくつかの用語は正しく翻訳されていません。

lispの左マウスボタンの圧力をシミュレートする

christian_96

Guest
buongiorno a tutti e buona domenica :smile:
qualche buon'anima sarebbe in grado di spiegarmi come si potrebbe simulare la pressione del tasto sinistro del mouse in un listato di autolisp?
sono giorni che cerco su interne ma non riesco a trovare una soluzione...

grazie mille in anticipo

p.s.: so che esiste la il comando grread ma non riesco a farlo funzionare
 
riassumendo velocemente:

a) mi trovo in un ciclo while che si ripete n°volte indefinite, affinché non si verifichi la condizione.

b) per il momento, durante il ciclo l'operatore (tramite la funzione getkword) può solamente dare tre input:

1. continuare il ciclo, tramite la pressione del tasto "c";
2. annullare l'ultima operazione, tramite la pressione del tasto "a";
3. terminare il ciclo, tramite la pressione del tasto "t".

c) per rendere il lisp più efficace e pratico da utilizzare avrei la necessità che la funzione "1" (citata precedentemente) venga sostituita dalla pressione del tasto sinistro.
 
dipende da che interfaccia vuoi che abbia il comando:
con getkword l'input avviene solo da tastiera mentre a schermo viene visualizzato il puntatore a croce,
con grread viene visualizzato il riquadro di selezione e puoi sia selezionare che digitare.

vedi la differenza tra queste funzioni

getkword
Code:
(defun c:tt ()
    (setq a t)
    (while a
        (initget "c a t")
        (setq a (getkword "\ndigitare opzione : "))
        (cond
            (  (= a nil) (setq a "c")(prompt a) )
            (  (= a "t") (setq a nil) )
        )
    )
    (princ)
)

grread
Code:
(defun c:yy ()
    (setq a t)    
    (while a
        (princ "\ndigitare opzione : ")
        (setq a (cadr (grread nil 14 2)))
        (cond
            (  (or (= a 65) (= a 67))  (setq a "a") (princ a) ) 
            (  (or (= a 67) (= a 99))  (setq a "c") (princ a) )
            (  (or (= a 84) (= a 116)) (setq a nil) )
            (  (= 'list (type a)) (setq a "c") (prompt a) )
            ( t (setq a t) (princ "\opzione non valida") )
        )
    )
    (princ)
)
 
mi sono dimenticato di specificare che la prima funzione (getkword) necessita di invio perché venga restituito "c"
sorry...
 
ho provato il listato che mi hai indicato ma non fa proprio al mio caso:frown:
mi chiedo se è possibile impostare nella condizoni di getkword la pressione del tasto sinistro del mouse, ovvero anzichè premere il tasto "c" premo il tasto sinistro del mouse
 
; ritorna t se tasto mouse 1 premuto
(defun pressmouse(/ loop cod)
(prompt "\nmouse 1 per continuare: ")
(setq loop t)
(while loop
(setq cod (car (grread t 8)))
(if (= cod 3) ; mouse 1
(setq loop nil)
)
)
t
)

esempio:
(pressmouse) attende il click del tasto mouse 1 per continuare

bye
 
sarebbe perfetto come codice, solo che non posso usarlo con getkword perchè non mi da la possibilità di scegliere le altre opzioni
 
(defun pressmouseandkey(/ a b loop cod)
(prompt " continua(mouse 1 o c) annulla termina ")
(setq loop t)
(while loop
(setq a (grread t 2))
(setq b (cadr a))
(if (= b -1)
(setq cod 0)
(setq cod (car a))
)
(if (= cod 2)
(progn
(cond
((or (= b 65) (= b 97)) (setq loop nil cod "a"))
((or (= b 67) (= b 99)) (setq loop nil cod "c"))
((or (= b 84) (= b 116)) (setq loop nil cod "t"))
)
)
)
; mouse button 1
(if (= cod 3) (setq loop nil cod "c"))
)
cod
)

bye
 
un approfondimento della discussione richiesta da christian_96

il file lisp è la nuova funzione personalizzabile.
il file zip contiene la funzione spiegata nel dettaglio.

bye
 

Attachments

Forum statistics

Threads
46,674
Messages
380,976
Members
2
Latest member
loop80
このフォーラムは、www.cad3d.it/forum1 - イタリアのデザインコミュニティの機械翻訳です。いくつかの用語は正しく翻訳されていません。

Members online

No members online now.
Back
Top