明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 862|回复: 7

[提问] 使用(ssget "F" (list pt1 pt2))能不能过滤掉块内标注和填充

[复制链接]
发表于 2024-4-3 15:53:42 | 显示全部楼层 |阅读模式
5明经币
本帖最后由 xiaocainiao 于 2024-4-3 20:13 编辑
  1. (setq pt1 (getpoint))
  2. (setq pt2 (getpoint pt1))
  3. (setq ss (ssget "F" (list pt1 pt2)))
  4. (setq int_list ())
  5. (setq ssdata (ssnamex ss))
  6. (foreach x ssdata
  7.   (foreach y
  8.     (cdddr x)
  9.     (setq int_list (cons (trans (cadr y) 0 1) int_list))
  10.   )
  11. )
想请教一下论坛的各位大神!


使用上方的代码可以获取两点连线与块内图元的交点、

但是我想过滤掉标注和填充、就是只保留与直线或多段线的交点坐标;

现在的办法是通过已获取的交点坐标、配合(nentselp pt)来判断这个点接触的块内图元是不是标注或填充、

但这样判断有个问题、就是pt这个点的位置上、可能会有重叠对象、就是同时存在直线和填充、这就导致判断出错了。

所以想请教大家!有没有其他方法可以过滤掉标注和填充的交点



"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-4-3 16:03:59 | 显示全部楼层
直接的方法就是,炸开块再绘制一条直线,求该直线与块内非标注和填充的交点,再删除炸开的块
回复

使用道具 举报

发表于 2024-4-3 16:34:10 来自手机 | 显示全部楼层
试试 ssget  f 后面加 filter 过滤能不能行。
回复

使用道具 举报

 楼主| 发表于 2024-4-3 16:59:13 | 显示全部楼层
Bao_lai 发表于 2024-4-3 16:34
试试 ssget  f 后面加 filter 过滤能不能行。

谢谢!这个不行的、加了过滤就选不到图块了
回复

使用道具 举报

 楼主| 发表于 2024-4-3 17:01:06 | 显示全部楼层
ssyfeng 发表于 2024-4-3 16:03
直接的方法就是,炸开块再绘制一条直线,求该直线与块内非标注和填充的交点,再删除炸开的块

大神!还有其他方法吗、炸开这个应该不行的、因为有时候是参照块、无法分解
回复

使用道具 举报

发表于 2024-4-3 18:36:52 | 显示全部楼层
其他方法:
读取块内为什么需要炸开呢?表记录不就是了.
把块内图元储存进list的时候过滤.
然后你就会想扫描线和每个图元求交?量小可以,量大糟糕...需要包围盒过滤..
交点重复不可怕,通过有序性剔除就好了.
回复

使用道具 举报

 楼主| 发表于 2024-4-3 18:40:42 | 显示全部楼层
你有种再说一遍 发表于 2024-4-3 18:36
其他方法:
读取块内为什么需要炸开呢?表记录不就是了.
把块内图元储存进list的时候过滤.

谢谢!貌似有点复杂、我好好捋捋
回复

使用道具 举报

 楼主| 发表于 2024-4-3 19:38:07 | 显示全部楼层
你有种再说一遍 发表于 2024-4-3 18:36
其他方法:
读取块内为什么需要炸开呢?表记录不就是了.
把块内图元储存进list的时候过滤.

刚刚想到一个简单方法、就是临时隐藏块内填充、隐藏以后再nentselp一下就行了、测试可行
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-29 10:20 , Processed in 0.173185 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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