找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 6219|回复: 32

[选择集] (XD::Pickset:PolyFence)构建多段线选择集

[复制链接]

已领礼包: 51个

财富等级: 招财进宝

发表于 2013-8-20 12:29:32 | 显示全部楼层 |阅读模式
函数发布
函数名称: XD::Pickset:PolyFence
调用格式: (XD::Pickset:PolyFence e filter)
参数说明: e --- 多段线
filter --- 过滤表,如: '((0 . "circle"))
返回值: 表 (多段线内的实体选集 多段线上的实体选集 多段线外的实体选集)
函数简介: 构建多段线选择集
函数来源: 原创
函数作者: Lispboy
适用版本: XDRX API 
最后更新时间: 2013-08-20
备注: -
演示图片: -

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 Lispboy 于 2013-8-20 13:22 编辑

  1. ;|
  2. 构建多段线选择集
  3. 参数:
  4.    e --- 多段线
  5.    filter --- 过滤表,如: '((0 . "circle"))
  6. 返回值:
  7.    表 (多段线内的实体选集  多段线上的实体选集 多段线外的实体选集)
  8. |;
  9. (defun XD::Pickset:PolyFence (e filter / pts ss1 ss2 ss3)
  10.   (xdrx_ucson)
  11.   (if (setq pts (xdrx_getsamplept e))
  12.     (progn
  13.       (setq tf (apply
  14.                  'xdrx_document_isptoutscreen
  15.                  (XD::Pnts:Ucs2Wcs pts)
  16.                )
  17.       )
  18.       (if tf
  19.         (progn
  20.           (xdrx_document_viewsave)
  21.           (setq box (xdrx_entity_box e))
  22.           (xdrx_document_AssureInCurrentView (trans (car box) 1 0) (trans (caddr box) 1 0))
  23.         )
  24.       )
  25.       (setq ss1 (ssget "f" pts filter)
  26.             ss1 (ssdel e ss1)
  27.             ss2 (ssget "wp" pts filter)
  28.             ss3 (ssget "x")
  29.             ss3 (xdrx_pickset_subtract ss3 ss2)
  30.             ss3 (xdrx_pickset_subtract ss3 ss1)
  31.       )
  32.       (if tf
  33.         (xdrx_document_viewres)
  34.       )
  35.       (setq ss3 (list ss2 ss1 ss3))
  36.     )
  37.   )
  38.   (xdrx_ucsoff)
  39.   ss3
  40. )




测试代码,删除多段线上和内的实体
  1. (defun c:tt()
  2.    (if (setq e (car (xdrx_entsel "\n选取一条多段线<退出>:" '((0 . "*POLYLINE")))))
  3.       (progn
  4.          (setq ss (XD::Pickset:PolyFence e nil))
  5.          (xdrx_entity_delete (car ss))
  6.          (xdrx_entity_delete (cadr ss))
  7.       )
  8.    )
  9.    (princ)
  10. )


论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2013-8-20 12:33:12 | 显示全部楼层
上午翻了好几遍在手册上也没有找到这个 smaplept 在哪,还以为取消或者更名了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

 楼主| 发表于 2013-8-20 12:41:05 | 显示全部楼层
Free-Lancer 发表于 2013-8-20 12:33
上午翻了好几遍在手册上也没有找到这个 smaplept 在哪,还以为取消或者更名了!

我都不知道新手册没,一直用,顺手就写了,这么好的函数不会取消吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 6530个

财富等级: 富甲天下

发表于 2013-8-20 12:52:57 | 显示全部楼层
两点意见:
1. 不必返回框外的选择集,一般没有什么意义,即使有需要,构造也比较简单。
2. 增加框选的选项,在实体很多(比如地形图)时,对一个大选择集操作远比分步对小选择集处理要快得多。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 1268个

财富等级: 财源广进

发表于 2013-8-20 12:54:19 来自手机 | 显示全部楼层
可见范围内不就是 CP 选项吗?要排除自己来自: Android客户端
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

 楼主| 发表于 2013-8-20 13:17:07 | 显示全部楼层
st788796 发表于 2013-8-20 12:54
可见范围内不就是 CP 选项吗?要排除自己

程序已经排除自己了,ssdel
多段线不全在屏幕内,屏幕外的选不到。

代码修改了,重新下载吧。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 51个

财富等级: 招财进宝

 楼主| 发表于 2013-8-20 13:25:47 | 显示全部楼层
本帖最后由 Lispboy 于 2013-8-20 13:28 编辑
ll_j 发表于 2013-8-20 12:52
两点意见:
1. 不必返回框外的选择集,一般没有什么意义,即使有需要,构造也比较简单。
2. 增加框选的选 ...

1、测试过,几十万的实体,全选构建选择集遍历实体,API就几毫秒的时间,很快的。
构建选择集的速度可以不用考虑。

之所以构建之外的,有不少时候应用需要。作为通用函数还是纳入进来吧。

2、这个函数是针对有多段线时候的,从多段线获得顶点表,没有框选的需要。

3、以后程序可以考虑加个顶点表参数。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-8-20 14:31:58 | 显示全部楼层
为了说明问题,画的夸张些
ssgetf.jpg
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-8-20 15:59:29 | 显示全部楼层
Free-Lancer 发表于 2013-8-20 14:31
为了说明问题,画的夸张些

弧线本身模拟的就不合格嘛{:soso_e113:}

如果要眼睛都看不出折线和弧线有区别了,你这些实体就插不进去了,非要硬插入,那么多段线能看清楚的时候,你这些插入的实体就看不见了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 182个

财富等级: 日进斗金

发表于 2013-8-21 23:38:00 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 182个

财富等级: 日进斗金

发表于 2013-8-21 23:38:38 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-8-21 23:48:31 | 显示全部楼层
kcad2010 发表于 2013-8-21 23:38
有没有办法让此函数可以选择用vla函数画的图形也可以选择?
因为小弟不想让程式画图过程给使用人看到 ...

你这个问题选不到和这个函数无关,是你用VLA创建的圆并没有“真正”进数据库有关,因为构建选择集是基于显示坐标系的,你redraw下实体或者屏幕后,再试下。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-8-21 23:53:31 | 显示全部楼层
本帖最后由 newer 于 2013-8-21 23:59 编辑
kcad2010 发表于 2013-8-21 23:38
有没有办法让此函数可以选择用vla函数画的图形也可以选择?
因为小弟不想让程式画图过程给使用人看到 ...

另外,不想让COMMAND命令执行过程让人家看到,你可以设置系统变量cmdecho=0就解决了。
再另外,你画圆也可以用API函数,(xdrx_cirlce_make 圆心 半径)

API现在基本上实体都提供MAKE函数了
xdrx_line_make
xdrx_polyline_make
xdrx_text_make
xdrx_mtext_make
xdrx_circle_makexdrx_block_make
xdrx_dimension_MakeAlign
xdrx_dimension_MakeRotate
xdrx_dimension_Make3PAng
xdrx_dimension_Make2LAng
xdrx_dimension_MakeRadial
xdrx_dimension_MakeDiametric
xdrx_dimension_MakeOrdinate
xdrx_table_make
xdrx_wipeout_make
xdrx_hatch_make
xdrx_textstyle_make
xdrx_slide_make
xdrx_group_make

上面这些MAKE够你用了吧。

如果你发现手册里面没有的,还想生成的实体,你可以去API论坛提交申请,让老大给你加上。

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 182个

财富等级: 日进斗金

发表于 2013-8-21 23:59:05 | 显示全部楼层
提示: 作者被禁止或删除 内容自动屏蔽
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

发表于 2013-8-22 00:01:18 | 显示全部楼层
kcad2010 发表于 2013-8-21 23:59
我就是不想让别看到我画的这个图,程式完成后要自动删除的.
我的意思是不想让别人看到我画过这个圆.但在 ...

那你这个圆显示出来吗?

你中间临时画的?

ACAD速度很快的,只要你在一个程序里面,你中间画过什么,马上删除的画,屏幕上是看不到的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-6 07:20 , Processed in 0.388242 second(s), 68 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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