乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 89|回复: 8

[编程交流] 获取光标坐标

[复制链接]

2

主题

4

帖子

2

银币

初来乍到

Rank: 1

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

使用道具 举报

0

主题

269

帖子

279

银币

限制会员

铜币
-4
发表于 2022-7-5 23:32:23 | 显示全部楼层
在Lisp中,它是“grread”函数。
回复

使用道具 举报

54

主题

3755

帖子

3583

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
438
发表于 2022-7-5 23:40:41 | 显示全部楼层
  1. (cadr (grread t 15 0))
回复

使用道具 举报

2

主题

4

帖子

2

银币

初来乍到

Rank: 1

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

使用道具 举报

1

主题

7

帖子

6

银币

初来乍到

Rank: 1

铜币
5
发表于 2022-7-5 23:55:24 | 显示全部楼层
为什么必须使用(grread t 15 0),使用(grread t)返回相同的值。
(grread[track][allkeys[curtype]])
 
所有关键点仅在轨迹=零时有效。
回复

使用道具 举报

22

主题

55

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

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

使用道具 举报

15

主题

243

帖子

228

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
75
发表于 2022-7-6 00:09:05 | 显示全部楼层
我会看一看DynDraw计划,可能会提供一些见解。
回复

使用道具 举报

0

主题

99

帖子

99

银币

初来乍到

Rank: 1

铜币
0
发表于 2022-7-6 00:11:40 | 显示全部楼层
  1.     (progn
  2.    (if  
  3.      (setq pt1 (getpoint "\nSelect 1st point"))
  4.        (progn
  5.          (command "circle" pt1 4.0)
  6.          (while
  7.            (not (= (car (setq pt2 (grread t 15 0))) 3))
  8.            (redraw)
  9.            (if
  10.              (listp (setq pt2 (cadr pt2)))
  11.              (progn
  12.                (setq ang (angle pt1 pt2)
  13.                      pt3 (polar pt1 (+ ang (* pi 1.5)) 4.0)
  14.                      pt4 (polar pt1 (- ang (* pi 1.5)) 4.0))
  15.                (grdraw pt3 pt2 255 3)
  16.                (grdraw pt4 pt2 255 3)
  17.              )
  18.            )
  19.          )
  20.        )
  21.    )
  22.    (redraw)
  23.    (command "line" pt3 (cadr pt2) "")
  24.    (command "line" pt4 (cadr pt2) "")   
  25.    )        
  26.       
回复

使用道具 举报

22

主题

55

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
110
发表于 2022-7-6 00:19:43 | 显示全部楼层
早上好,Jdiala,
我的朋友,这是一件美丽的事情。很有魅力!
 
谢谢你的帮助。
 
迈克
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-11 00:19 , Processed in 1.363734 second(s), 70 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表