CALCAD 发表于 2022-7-6 08:20:20

对象捕捉点值

有人知道有没有一种方法可以知道对象捕捉的位置,而不需要实际单击,例如,开始一条线或拾取圆心。我询问的原因是,我想知道是否有方法验证拾取的点实际上是捕捉点(以检测未遂事件)。

Lee Mac 发表于 2022-7-6 08:32:40

osnap函数。
 
用法示例:
 
http://lee-mac.com/drawgrid.html

ScribbleJ 发表于 2022-7-6 08:37:55

这有点模糊。为什么你点击的点不是被抓取的点?或者你说的“拾取点”是指你想要捕捉到的点,而不是附近的另一个点?

CALCAD 发表于 2022-7-6 08:45:25

ScribbleJ,
如果拾取框的大小很小(在拥挤的场地中可能需要),例如,您希望捕捉到交点,则在不放大和检查的情况下,可能很难判断您拾取的点是否实际捕捉到交点。我认为,在lisp例程中,如果我在拾取之前知道交点的位置(捕捉指示器所在的位置),我可以比较拾取点并验证位置是否一致。
 
李,
谢谢你的回复。我必须研究一下你们的dgrid程序,看看它如何适用于我的问题。

ScribbleJ 发表于 2022-7-6 08:49:30

我试图确定李的dgrid是如何应用的。
 
好吧,那么。。。
 
如果我正确理解了您的描述,那么在我看来,您的捕捉位置可能就是您的对象捕捉跟踪位置。是这样吗?(我认为这变成了一道数学题。)
 
lisp例程需要获取“捕捉”位置的变量,然后给您反馈,以便您检查所知道的位置是否正确。你怎么知道那个位置的正确坐标是多少?

BIGAL 发表于 2022-7-6 08:56:21

也许这将有助于您随时更改捕捉模式,只要键入变量OSMODE即可。
 
如果您只需要一个中心弧或圆,那么(setvar“osmode”4)在代码中使用多个捕捉也可以实现端+中+中心,再次只需查看osmode编号。
 
一个好主意是,在开始时保存osmode值,然后在结束时将其放回,这样用户的快照与启动时相同。

Lee Mac 发表于 2022-7-6 09:05:41

 
 
与其说“DGrid”程序是如何应用的,不如说我提供了一个示例,说明我如何在该程序中使用osnap函数来定位捕捉点。
 
捕捉到端点的更简单示例:
 
(defun c:test ( / pt )
   (if (setq pt (getpoint "\nPick Point: "))
       (progn
         (princ "\nOriginal Point: ")
         (princ pt)
         (princ "\nSnap to Endpoint: ")
         (princ (osnap pt "_end"))
       )
   )
   (princ)
)

CALCAD 发表于 2022-7-6 09:09:45

李,
对不起,我太笨了。我花了一段时间才看到它。osnap函数正是我所需要的。非常感谢。

Lee Mac 发表于 2022-7-6 09:18:52

不用道歉,很乐意帮忙

ScribbleJ 发表于 2022-7-6 09:21:47

 
我们都有这样的日子(不管我们承认与否)。我也在努力解决这个问题。另一方面,李显然很明白这一点。允许批判性思维帮助我们发现思维中的缺陷或弱点是很好的。
 
跌倒不是失败;拒绝起床是。
~中国谚语~
页: [1]
查看完整版本: 对象捕捉点值