乐筑天下

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

[编程交流] OSNAP函数

[复制链接]

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 07:39:02 | 显示全部楼层
我不明白,(osnap)函数的行为就像真实的osnap:如果测试点最接近“u qua”捕捉,则,(osnap)将返回圆的象限点;若距离测试点最近的第一个捕捉距离圆心较近,则(osnap)将返回圆的圆心。。。测试取决于测试点-其相对于最近实体捕捉的位置。。。
回复

使用道具 举报

56

主题

284

帖子

231

银币

后起之秀

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

铜币
289
发表于 2022-7-6 07:44:26 | 显示全部楼层
我们讨论的一切都在一个循环中进行,而决策,函数在哪里
 
  1. (grread T 15 0)

 
主题:
 
http://www.cadtutor.net/forum/showthread.php?77110-vla移动和OSMODE问题。
回复

使用道具 举报

5

主题

1334

帖子

1410

银币

限制会员

铜币
-20
发表于 2022-7-6 07:48:18 | 显示全部楼层
我认为,在圆作为测试实体的情况下,应该考虑将孔径sys变量更改为更高的值,因为这个小代码为捕捉提供了不同的结果。。。
 
  1. (while (setq gr (grread t))
  2. (print (osnap (cadr gr) "_cen,_qua"))
  3. )

 
当光圈小时,这将只返回圆的象限点,但当您将光圈设置为更高的值(我最大值为50)时,上述代码也将返回象限点之间的值和圆中心的坐标。。。注意,主要捕捉将是零点,因为实体圆周围的空间比OSNAP孔径操作的空间更宽、更大。。。
回复

使用道具 举报

56

主题

284

帖子

231

银币

后起之秀

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

铜币
289
发表于 2022-7-6 07:51:29 | 显示全部楼层
孔径=10,不是预期结果,我将尝试5。
 
谢谢你的想法。
回复

使用道具 举报

56

主题

284

帖子

231

银币

后起之秀

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

铜币
289
发表于 2022-7-6 07:54:19 | 显示全部楼层
我找到了一个解决方案:
 
计算每个鼠标点和OSMODE所需列表之间的距离。根据此距离,进行区分:
 
  1.     (setq liosnap nil) ;_ end of setq
  2.     (foreach el litos (if (setq op (osnap p el))
  3.    (progn
  4.      (setq d (distance p op)  d (cond ((= el "_cen") (/ d 4.)) ((= el "_nea") (* d 10.)) (T d)) )
  5.      (setq liosnap (cons (list d op el) liosnap)) ))  ) ;_ end of f
  6.     (if liosnap
  7.      (setq liobs (car (vl-sort liosnap '(lambda (s1 s2) (< (car s1) (car s2)) ) ) )  op (nth 1 liobs)  mod (nth 2 liobs) ) ;_ end of setq
  8.      (setq op nil) ;_ end of setq
  9.     ) ;_ end of if liosnap

 
OSNAP的某些方式更“敏感”(qua,snow),因此必须加以抑制。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-10 12:22 , Processed in 0.414463 second(s), 71 queries .

© 2020-2025 乐筑天下

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