Реклама i
Стань нашим партнером - зарабатывай с нами!
| Правила | Регистрация | Пользователи | Сообщения за день |  Справка по форуму | Файлообменник |

Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > как отловить нажатие правой кнопки мышки?

как отловить нажатие правой кнопки мышки?

Ответ
Поиск в этой теме
Непрочитано 10.09.2012, 08:28 #1
как отловить нажатие правой кнопки мышки?
loginovskiy
 
Регистрация: 31.10.2011
Сообщений: 31

Я выбираю объекты (примитивы) и выполняю некоторые действия с ними в цикле.
При этом, если при выборе промахиваюсь, то остаюсь в цикле и продолжаю до тех пор пока
не выберу или не нажму Esc. Но хочется завершать не по Esc а нажатием правой кнопки.
Но в этом случае получаю nil как и при промахе. Нужно как то различать пустой выбор от нажати правой кнопки.
Можно конечно через reactor, но уверен что это делается проще. HELP плиз.
Просмотров: 3633
 
Непрочитано 10.09.2012, 08:41
#2
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Покажите ваш загадочный код, тогда можно будет что-то посоветовать
gomer вне форума  
 
Непрочитано 10.09.2012, 08:51
#3
Лиспер


 
Регистрация: 11.10.2010
Сообщений: 980


Возможно, поможет ERRNO
__________________
(/= RegDate StartReadDate)
Лиспер вне форума  
 
Автор темы   Непрочитано 10.09.2012, 08:53
#4
loginovskiy


 
Регистрация: 31.10.2011
Сообщений: 31


Ни какого загадочного кода, он прост и даже м.б. с точки зрения хороших программистов примитивен, не ругайте пж-лста
(DEFUN FLIP ( / i) ;;ôóíêöèÿ ïåðåñòðîéêè äèàãîíàëè ÷åòûðåõóãîëüíèêà
(vl-load-com)

(setq ent nil)
(While (= ent nil);;ïîêà íå áóäåò âûáðàíà
(setq ent (entsel "\nÂûáåðè äèàãîíàëü: "))
)

(if (/= ent nil) (progn ;;âûáðàòü ðàìêîé ÷òî áû âûáðàëèñü âñå - èõ ì.á. 1, 2 ëèáî áîëüøå ïðè îøèáêå â ÄÅËÎÍÅ
(RAMKA (cadr ent) 2);;ðàèêó âûáîðà
(setq nab (ssget "_C" vu nu '((0 . "3dface"))))
(if (/= nab nil) (progn
(setq kol_3df (sslength nab))
(cond
((= kol_3df 1) (progn (Alert "Çäåñü íåò âòîðîãî òðåóãîëüíèêà!!!") (EXIT)))
((> kol_3df 2) (progn (Alert "Çäåñü òðåóãîëüíèêîâ áîëüøå 2-õ, î÷åâèäíî îøèáêà â òðèàíãóëÿöèè") (EXIT)))
((= kol_3df 2) (SEL=>LIST))
)
));;if (progn
(print sp_3df);;ñïèñîê âñåõ âûáðàííûõ 3df <èìÿ . êîîðäèíàòû>

(log_FLIP);;

));;(if (/= ent nil)
)
;;==============================================================
loginovskiy вне форума  
 
Непрочитано 10.09.2012, 09:04
#5
Do$

AutoCAD/Civil3D LISP/C#
 
Регистрация: 15.08.2008
Санкт-Петербург
Сообщений: 1,702
Отправить сообщение для Do$ с помощью Skype™


Вы хоть читайте, что выкладываете.
Do$ вне форума  
 
Непрочитано 10.09.2012, 09:23
#6
Олег (jr.)

специалист по околачиванию грушевых деревьев
 
Регистрация: 14.09.2004
Pietari, Venäjä
Сообщений: 813


Цитата:
Сообщение от loginovskiy Посмотреть сообщение
Я выбираю объекты (примитивы) и выполняю некоторые действия с ними в цикле.
При этом, если при выборе промахиваюсь, то остаюсь в цикле и продолжаю до тех пор пока
не выберу или не нажму Esc. Но хочется завершать не по Esc а нажатием правой кнопки.
Но в этом случае получаю nil как и при промахе. Нужно как то различать пустой выбор от нажати правой кнопки.
Можно конечно через reactor, но уверен что это делается проще. HELP плиз.
Возьми за основу, два примера


Код:
[Выделить все]
;;;Copyright (c)2005 - Marc'Antonio Alessi, Italy - All rights reserved
; http://xoomer.virgilio.it/alessi

(defun ALE_EntSelFilter (PrmStr FltLst / FlgSlt EntNam)
  (setvar "ERRNO" 0)
  (princ "\n_ ")
  (prompt (setq PrmStr (strcat "\n" PrmStr ": ")))
  (if
    (while (not FlgSlt)
      (if (setq EntNam (ssget "_:E:S" FltLst))
(not (setq FlgSlt T))
(if (= 52 (getvar "ERRNO"))
  (setq FlgSlt T)
  (alert
   ;; (strcat "\nUd no entendio lo que le pedi, pruebe de nuevo!"    PrmStr )

   (strcat "\nYou did not understood what I ask for , try it again!"   PrmStr)
    )
  ) ;_if
) ;_if
      ) ;_while
     (not (princ "\nFunction cancelled. "))
     (ssname EntNam 0)
     ) ;_if
  ) ;_defun
;;Пример вызова:
;;(ALE_EntSelFilter "Seleccione la poly del terreno" '((0 .
"POLYLINE") (100 . "AcDb3dPolyline")))

;;=============================================;;


;;SMadsen as posted: Tue Apr 05, 2005 3:46 am
(while 
  (not 
    (progn 
      (setvar "errno" 0)                ; must pre set the errno to 0 
      (setq ename (vl-catch-all-apply 'entsel '("\nSelect Object: "))) 
      (cond 
        ((vl-catch-all-error-p ename) 
         (prompt "\nEscape was pressed") 
         T 
        ) 
        ((= (getvar "errno") 52) 
         (prompt "\nEnter Key Pressed, Good Bye. ") 
         T 
        ) 
        ((null ename) 
         (prompt "\nNothing selected. ") ; returns nil 
        ) 
        ((= (cdr (assoc 0 (entget (car ename)))) "ARC") 
         (prompt "\nObject is an Arc, Try again.") 
        ) 
        ((= (cdr (assoc 0 (entget (car ename)))) "LINE") 
         (prompt "\nObject is a Line, Try again.") 
        ) 
        ((vl-string-search "TEXT" 
                           (cdr (assoc 0 (entget (car ename)))) 
         ) 
         ;;  text or Mtext or Rtext 
         (prompt "\nObject is text, Try again.") 
        ) 
        (T 
         ;;   no match 
         (prompt "\nYou got something else, Good Bye. ") 
         T                              ; allow exit from loop 
        ) 
      ) 
    ) 
  ) 
)
~'o'~
Олег (jr.) вне форума  
 
Непрочитано 10.09.2012, 09:31
#7
gomer

строю, ломаю
 
Регистрация: 03.04.2008
Украина
Сообщений: 5,515


Цитата:
Сообщение от Лиспер Посмотреть сообщение
Возможно, поможет ERRNO
поможет,
Код:
[Выделить все]
 (while (and (null (setq ent (entsel)))
	    (= 7
	       (getvar 'ERRNO)
	    )

       )
  (alert "\nПромазал!")

)
gomer вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > как отловить нажатие правой кнопки мышки?

Размещение рекламы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Не работает двойное нажатие средней кнопки мыши. at0m13 AutoCAD 2 23.11.2011 18:32
В меню правой кнопки мыши неактивны строки вставки из буфера обмена Vova Баги и пожелания в Autodesk 1 15.11.2009 17:13
Дополнительные кнопки у мышки duki_001 AutoCAD 9 13.10.2008 06:17
повтор нажатия пользовательской кнопки Enter-ом или правой кнопкой мыши Victorovich Программирование 6 05.06.2008 12:05