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

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

Как считать координаты курсора относительно окна AutoCAD?

Ответ
Поиск в этой теме
Непрочитано 11.12.2006, 15:32 #1
Как считать координаты курсора относительно окна AutoCAD?
Spirit
 
Тюмень
Регистрация: 30.11.2006
Сообщений: 2

Можно ли получить координаты курсора относительно экрана, а не текущей СК?
Просмотров: 5497
 
Непрочитано 11.12.2006, 15:34
#2
Кулик Алексей aka kpblc
Moderator

LISP, C# (ACAD 200[9,12,13,14])
 
Регистрация: 25.08.2003
С.-Петербург
Сообщений: 40,000


через (grread) и (trans), наверное...
__________________
Моя библиотека lisp-функций
---
Обращение ко мне - на "ты".
Все, что сказано - личное мнение.
Кулик Алексей aka kpblc вне форума  
 
Непрочитано 24.10.2007, 21:41
#3
Goodwin S.G.

AutoCAD, 3d Max
 
Регистрация: 11.04.2006
Ульяновск
Сообщений: 23
<phrase 1=


"Кулик Алексей aka kpblc", не работают (grread) и (trans). Как ещё можно узнать координаты?
__________________
Кузен
Goodwin S.G. вне форума  
 
Непрочитано 25.10.2007, 08:36
#4
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от Goodwin S.G. Посмотреть сообщение
"Кулик Алексей aka kpblc", не работают (grread) и (trans). Как еще можно узнать координаты?
Странно, у всех работают, а у вас не работают...
Может вы не так делаете? grread - возвращает координаты в текущей координатной системе, trans, переводит из любой координатной системы в любую...

Кстати, может вы имели в виду не систему координат, параллельную экрану, а именно в пикселах окна?
Елпанов Евгений вне форума  
 
Непрочитано 25.10.2007, 08:50
#5
Елпанов Евгений

программист
 
Регистрация: 20.12.2005
Москва
Сообщений: 1,439
Отправить сообщение для Елпанов Евгений с помощью Skype™


Цитата:
Сообщение от Spirit Посмотреть сообщение
Можно ли получить координаты курсора относительно экрана, а не текущей СК?
Посмотри мой старенький пример. Здесь отрисовываются часики, всегда в плоскости экрана и всегда одного размера, относительно высоты экрана в автокаде. Будут вопросы - спрашивай...
Код:
[Выделить все]
(defun c:clo (/ A1 GR I S)
  ;;  ElpanovEvgeniy, Russia, Moscow, 2006
  ;;  Clock that show time in the screen
  ;;  Re: clock 
  ;;  « Reply #10 on: 09-09-2006, 11:28:31 »
  ;;  http://www.theswamp.org/index.php?topic=8969.msg152367#msg152367
  (setq a1 (/ pi 30))
  (while (= (car (setq gr (grread nil 5 1))) 5)
    (setq s  (/ (getvar "viewsize") 8.)
          gr (trans (cadr gr) 1 3)
          i  0
    ) ;_  setq
    (redraw)
    (grvecs ;SS
      '(2 (-0.01 0.) (1. 0.))
      ((lambda (a)
         ((lambda (c s x y sc)
            (list (list c (- s) 0. x) (list s c 0. y) (list 0. 0. sc 0.) '(0. 0. 0. 1.))
          ) ;_  lambda
           (* (cos a) s)
           (* (sin a) s)
           (car gr)
           (cadr gr)
           s
         )
       ) ;_  lambda
        (- (/ pi 2.) (* (/ pi 30.) (atof (menucmd "M=$(edtime,$(getvar,date),SS.MSEC)"))))
      )
    ) ;_  grvecs
    (grvecs ;MM
      '(3 (-0.01 0.)    (0.8 0.)
        3 (-0.01 -0.01) (0.6 -0.01)
        3 (-0.01 0.01)  (0.6 0.01)
        3 (-0.01 -0.02) (0.4 -0.02)
        3 (-0.01 0.02)  (0.4 0.02)
        3 (0.4 -0.02)   (0.8 0.)
        3 (0.4 0.02)    (0.8 0.)
       )
      ((lambda (a)
         ((lambda (c s x y sc)
            (list (list c (- s) 0. x) (list s c 0. y) (list 0. 0. sc 0.) '(0. 0. 0. 1.))
          ) ;_  lambda
           (* (cos a) s)
           (* (sin a) s)
           (car gr)
           (cadr gr)
           s
         )
       ) ;_  lambda
        (- (/ pi 2.) (* (/ pi 30.) (atoi (menucmd "M=$(edtime,$(getvar,date),MM)"))))
      )
    ) ;_  grvecs
    (grvecs ;H
      '(1 (-0.01 0.)    (0.5 0.)
        1 (-0.01 -0.01) (0.4 -0.01)
        1 (-0.01 0.01)  (0.4 0.01)
        1 (-0.01 -0.02) (0.3 -0.02)
        1 (-0.01 0.02)  (0.3 0.02)
        1 (-0.01 -0.03) (0.2 -0.03)
        1 (-0.01 0.03)  (0.2 0.03)
        1 (0.2 -0.03)   (0.5 0.)
        1 (0.2 0.03)    (0.5 0.)
       )
      ((lambda (a)
         ((lambda (c s x y sc)
            (list (list c (- s) 0. x) (list s c 0. y) (list 0. 0. sc 0.) '(0. 0. 0. 1.))
          ) ;_  lambda
           (* (cos a) s)
           (* (sin a) s)
           (car gr)
           (cadr gr)
           s
         )
       ) ;_  lambda
        (- (/ pi 2.)
           (* (/ pi 6.)
              (+ (atoi (menucmd "M=$(edtime,$(getvar,date),H)"))
                 (/ (atoi (menucmd "M=$(edtime,$(getvar,date),MM)")) 60.)
              ) ;_  +
           ) ;_  *
        ) ;_  -
      )
    ) ;_  grvecs
    (repeat 4
      (grvecs
        '(6 (0.8 0.)     (0.82 0.02)
          6 (0.82 0.02)  (1. 0.02)
          6 (1. 0.02)    (1. -0.02)
          6 (1. -0.02)   (0.82 -0.02)
          6 (0.82 -0.02) (0.8 0.)
         )
        ((lambda (c s x y sc)
           (list (list c (- s) 0. x) (list s c 0. y) (list 0. 0. sc 0.) '(0. 0. 0. 1.))
         ) ;_  lambda
          (* (cos (* a1 i)) s)
          (* (sin (* a1 i)) s)
          (car gr)
          (cadr gr)
          s
        )
      ) ;_  grvecs
      (repeat 3
        (grvecs
          '(5 (1. 0.01) (0.92 0.01) 5 (1. -0.01) (0.92 -0.01)5 (0.92 0.01)(0.89 0.) 5 (0.92 -0.01)(0.89 0.))
          ((lambda (c s x y sc)
             (list (list c (- s) 0. x) (list s c 0. y) (list 0. 0. sc 0.) '(0. 0. 0. 1.))
           ) ;_  lambda
            (* (cos (* a1 i)) s)
            (* (sin (* a1 i)) s)
            (car gr)
            (cadr gr)
            s
          )
        ) ;_  grvecs
        (repeat 5
          (grvecs
            '(3 (-0.25 1.2) (0 1.3) 3 (0 1.3) (0.25 1.2) 3 (0.25 1.2) (0 1.1) 3 (0 1.1) (-0.25 1.2))
            ((lambda (c s x y sc)
               (list (list c (- s) 0. (+ s s (* s 0.5) x))
                     (list s c 0. y)
                     (list 0. 0. sc 0.)
                     '(0. 0. 0. 1.)
               ) ;_  list
             ) ;_  lambda
              (* (cos (* a1 i 1)) s)
              (* (sin (* a1 i 1)) s)
              (car gr)
              (cadr gr)
              s
            )
          ) ;_  grvecs
          (grvecs
            '(5 (0.9 0) (1 0)); 5 (1.05 -0.9) (1.05 0.9)
            ((lambda (c s x y sc)
               (list (list c (- s) 0. x) (list s c 0. y) (list 0. 0. sc 0.) '(0. 0. 0. 1.))
             ) ;_  lambda
              (* (cos (* a1 i)) s)
              (* (sin (* a1 i)) s)
              (car gr)
              (cadr gr)
              s
            )
          ) ;_  grvecs
          (setq i (1+ i))
        ) ;_  repeat
      ) ;_  repeat
    ) ;_  repeat
  ) ;_  while
  (redraw)
)
Елпанов Евгений вне форума  
Ответ
Вернуться   Форум DWG.RU > Программное обеспечение > Программирование > Как считать координаты курсора относительно окна AutoCAD?

Размещение рекламы
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск