fonseca 发表于 2022-7-5 23:18:38

获取光标坐标

大家好,我正在用VBA编写一个例程,该例程需要经常监视当前光标坐标,而用户无需选择任何点。就像状态栏左下角显示的坐标一样,我似乎无法通过编程方式访问它。我搜索了与光标位置相关的ACAD函数,但没有找到任何函数。如果我转向Windows API,我肯定会有一个解决方案,但我需要的是ACAD坐标中的位置,而不是像素。。。任何关于如何在VBA中实现这一点的想法(或者LISP,我不知道,但肯定会找到一种使用方法…)

CarlB 发表于 2022-7-5 23:32:23

在Lisp中,它是“grread”函数。

alanjt 发表于 2022-7-5 23:40:41

(cadr (grread t 15 0))

fonseca 发表于 2022-7-5 23:43:58

谢谢你们俩的提示。
 
但现在还有另一个问题:如何处理VBA的返回值?如果我没有弄错的话,从VBA调用LISP例程的唯一方法是SendCommand,它似乎是一个单向函数。
 
我是否坚持用LISP编写整个例程?这将是一个小问题,因为当我已经在VBA中解决了所有例程(除了光标坐标的事情…)时,我需要一些时间来掌握这种语言的工作原理

codered8x 发表于 2022-7-5 23:55:24

为什么必须使用(grread t 15 0),使用(grread t)返回相同的值。
(grread])
 
所有关键点仅在轨迹=零时有效。

spiker7221 发表于 2022-7-5 23:59:19

 
 
下午好AlanJt
 
我正在学习GRREAD和GRDRAW命令,但我被卡住了。
以您的示例为基础。。。。。我有一个圆(pt1),线从四边形(pt3)和四边形(pt4)到用户选择的给定点(pt2)。
 
当用户选择pt2时,有没有办法显示2条重影线?当我尝试你的例子时,它只是把虚线从pt3和pt4放到pt1。甚至可以实时捕获pt2吗。。。。一、 E.我的光标位置?我的最终结果是,当用户选择第二个点作为目标和所有三个对象的旋转时,显示圆和两条虚线。也许我会从这些点上画出实际的线。但是,当我移动光标时,如何使每行的端点发生变化?
 
谢谢你的帮助,
迈克在达拉斯
 
(progn
       (setq pt1 (getpoint "\nSelect 1st point"))
       (command "circle" pt1 4.0)
       (setq pt2 (getpoint pt1 "\nSelect 2nd point"))
;      (princ "\nSlect 2nd point")
;      (setq pt2 (cadr (grread t 15 0)))
       (setq ang (angle pt1 pt2))
      
       (setq pt3 (polar pt1 (+ ang (* pi 1.5)) 4.0))
       (grdraw pt3 pt2 255 3)
;      (command "line" pt1 pt3 "");test point
       (command "line" pt3 pt2 "")
      
       (setq pt4 (polar pt1 (- ang (* pi 1.5)) 4.0))
       (grdraw pt4 pt2 255 3)
;      (command "line" pt1 pt4 "");test point
       (command "line" pt4 pt2 "")
   );end progn

Bhull1985 发表于 2022-7-6 00:09:05

我会看一看DynDraw计划,可能会提供一些见解。

jdiala 发表于 2022-7-6 00:11:40

    (progn
   (if
   (setq pt1 (getpoint "\nSelect 1st point"))
       (progn
         (command "circle" pt1 4.0)
         (while
         (not (= (car (setq pt2 (grread t 15 0))) 3))
         (redraw)
         (if
             (listp (setq pt2 (cadr pt2)))
             (progn
               (setq ang (angle pt1 pt2)
                     pt3 (polar pt1 (+ ang (* pi 1.5)) 4.0)
                     pt4 (polar pt1 (- ang (* pi 1.5)) 4.0))
               (grdraw pt3 pt2 255 3)
               (grdraw pt4 pt2 255 3)
             )
         )
         )
       )
   )
   (redraw)
   (command "line" pt3 (cadr pt2) "")
   (command "line" pt4 (cadr pt2) "")   
   )      
      

spiker7221 发表于 2022-7-6 00:19:43

早上好,Jdiala,
我的朋友,这是一件美丽的事情。很有魅力!
 
谢谢你的帮助。
 
迈克
页: [1]
查看完整版本: 获取光标坐标