pxt2015 发表于 2020-12-18 18:42:33

xdrx_pointmonitor用法疑问

本帖最后由 pxt2015 于 2020-12-19 11:03 编辑



(defun c:t ()
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(setq cvport (getvar "cvport"))
(xdrx_pointmonitor "callback2")
(setq pt (getpoint "\nPT:"))
(xdrx_pointmonitor)
(setvar "osmode" os)
(princ)
)
(defun callback2 (dynpt)
(redraw)
(print dynpt)
(dim-pt dynpt)
)
(defun dim-pt (P0 / KHigh ANG LST)
(setq k NIL)
(setq High (* (/ (getvar "viewsize") 30) 0.5 (sqrt 2)))
(setq      ANG (list 1.25 1.75 0.25 0.75)
      lst (mapcar '(lambda (n) (polar p0 (* n PI) High)) ANG)
)
(if k
    (progn (command "line" (CAR LST) (CADDR LST) "")
         (command "line" (CADR LST) (LAST LST) "")
    )
    (progn
      (redraw)
      (grdraw (CAR LST) (CADDR LST) 1 1)
      (grdraw (CADR LST) (LAST LST) 1 1)
    )
)
)
以上代码,当光标从窗口2移动到窗口3时,无法自动激活窗口3,请问如何解决?

Lisphk 发表于 2020-12-18 20:38:51

鼠标移动过去,但没激活窗口啊

pxt2015 发表于 2020-12-19 07:50:51

本帖最后由 pxt2015 于 2020-12-19 07:56 编辑

难点就在这里啊,当鼠标移到左边窗口,光标还在CAD窗口但不是当前激活的窗口,xdrx_pointmonitor不能取得鼠标坐标。如果能取得坐标,判断实时监视到的坐标是否在右边窗口外,可以用系统变量cvport激活左边窗口。

st788796 发表于 2020-12-20 00:47:35

可以使用xdrx_system_cursorpos 获取当前鼠标的屏幕坐标

不过 api 中没有 获取 AcDbViewportTableRecord 边框屏幕坐标方法

Lisphk 发表于 2020-12-20 19:56:25

pxt2015 发表于 2020-12-19 07:50
难点就在这里啊,当鼠标移到左边窗口,光标还在CAD窗口但不是当前激活的窗口,xdrx_pointmonitor不能取得鼠 ...

可以用监视器啊

a117034423 发表于 2021-1-6 05:12:45

人丑就要多读
页: [1]
查看完整版本: xdrx_pointmonitor用法疑问