明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: szx025

[提问] 选择集问题

[复制链接]
发表于 2023-7-26 15:48:29 | 显示全部楼层
本帖最后由 llsheng_73 于 2023-7-26 16:39 编辑

ssget"F"可能存在问题,给定的栏选坐标没有与要选择的目标相连,虽然肉眼看上去应该是相连的,比如在直线段起止点之间取两个点,理论上这两个点都是过直线的,但实际上由于实数精度问题,它们有可能并不在直线段上,当然,这个问题也不是绝对的,所以有时就可能抽疯。。。。
比如选定一条直线等分成10000份,以过等分点与已知直线的垂线作为栏选线进行选择,按说每次都应该能选到那个直线(因为栏选所用的点有一个是直线上的等分点),但实际上肯定会经常选不到目标,
下边一段测试代码选择直线后,在直线上取10000个等分点,计算栏选线来对直线进行栏选,分别记录选择成功与失败次数,不管直线怎么画,最后的结果总是接近一半一半

  1. (defun c:tt(/ e d i j p dis ang)
  2.   (if(setq e(ssget":E:S"'((0 . "line"))))
  3.     (progn(setq e(ssname e 0)d(*(vlax-curve-getendparam e)0.0001)dis 0 i 0 j 0
  4.                 ang(+(angle(vlax-curve-getstartpoint e)(vlax-curve-getendpoint e))(* pi 0.5)))
  5.       (while(setq dis(+ dis d)p(vlax-curve-getpointatparam e dis))
  6.         (if(ssget"F"(List p(polar p ang 1))'((0 . "line")))
  7.           (setq j(+ 1 j))
  8.            (setq i(+ i 1))))))
  9.   (List j i))

对于与栏选线相交的情况,需要保证被选择对象与栏选线不在虚部相交;
对于栏选线端点与被选对象似接触,建议适当延伸栏选线端点,在可控范围内变成与被选对象相交;
对于被选对象端点与栏选线似接触的情况就比较麻烦,建议对栏选线进行双向微距偏移把栏选线变成选择范围,用"CP"方式进行选择;


 楼主| 发表于 2023-7-27 09:41:00 | 显示全部楼层

谢谢院长的出手,但问题依旧,看来不是ZOOM到问题,

点评

上dwg文件测试  发表于 2023-7-27 14:17
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-17 00:37 , Processed in 0.203953 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表