找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 4505|回复: 16

[每日一码] 【拓扑边界】带容差支持的BPOLY

[复制链接]

已领礼包: 40个

财富等级: 招财进宝

发表于 2018-4-5 20:01:10 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 newer 于 2018-4-5 20:10 编辑

XDRX API 2018.0328+版本,增强了几个求拓扑边界函数的功能,下面介绍支持带容差的构建边界函数
xdrx_geom_bpoly,设置容差,通过设置系统变量 "boundaryextendlength"的值达到,设置系统变量的函数是
xdrx_setvar

===================================================
(xdrx_setvar "boundaryextendlength" 100.0) ;;设置容差100,低于100的间隙自动封闭。

(xdrx_geom_bpoly <pt> [ss] [t])
参数:
pt  ----  点WCS
ss  ---   可选参数,选择集,不给,屏幕内实体作为选择集
t    ---   可选,给T,边界返回点表,否则创建边界多段线

容差BPOLY.gif

  1. (defun c:tt ()
  2.   (defun _callback (dynpt)
  3.     (redraw)
  4.     (setq pts (xdrx_geom_bpoly dynpt ss t))
  5.     (xdrx_grdraw 1 1 pts)
  6.   )
  7.   (if (setq ss (ssget))
  8.     (progn (xdrx_setvar "boundaryextendlength" 100.0)
  9.            (xdrx_pointmonitor "_callback")
  10.            (if (getpoint "\n移动鼠标:")
  11.              (progn (xdrx_hatch_make pts)
  12.                     (xdrx_setpropertyvalue
  13.                       (entlast)
  14.                       "color"
  15.                       2
  16.                       "patternname"
  17.                       (list 0 "ansi31")
  18.                       "patternscale"
  19.                       10.0
  20.                     )
  21.                     (xdrx_entity_redraw (entlast) 1)
  22.              )
  23.            )
  24.            (redraw)
  25.            (xdrx_pointmonitor)
  26.     )
  27.   )
  28.   (princ)
  29. )






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

已领礼包: 202个

财富等级: 日进斗金

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

使用道具 举报

已领礼包: 5060个

财富等级: 富甲天下

发表于 2018-5-30 09:08:56 来自手机 | 显示全部楼层
对于视图中大量的对象,bpoly会很慢,怎样解决
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5060个

财富等级: 富甲天下

发表于 2018-6-12 19:22:37 | 显示全部楼层
不知道为什么选择的对象多过50个就很卡。当然vlisp本身的(bpoly pt)函数也很慢,xdrx_geom_bpoly也就是多了一个容差功能吧。

点评

不知道你说的是BPOLY很慢,还是XDRDX_GEOM_BPOLY很慢,应用这个函数,你最好给选择集,别让API去构建满屏幕的选择集。 因为你总有处理的对象需要 用 (xdrx_geom_bpoly pt ss)  详情 回复 发表于 2018-6-12 20:26
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2018-6-12 20:26:54 | 显示全部楼层
xinxirong 发表于 2018-6-12 19:22
不知道为什么选择的对象多过50个就很卡。当然vlisp本身的(bpoly pt)函数也很慢,xdrx_geom_bpoly也就是多了 ...

不知道你说的是BPOLY很慢,还是XDRDX_GEOM_BPOLY很慢,应用这个函数,你最好给选择集,别让API去构建满屏幕的选择集。
因为你总有处理的对象需要,把不需要处理的,给过滤掉先。
用 (xdrx_geom_bpoly pt ss)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5060个

财富等级: 富甲天下

发表于 2018-6-13 06:48:05 来自手机 | 显示全部楼层
我是先构建满屏的ss(只把需要的图层保留),再(xdrx_geom_bpoly pt ss),很卡。另外,xdrx_geom_bpoly比较容易崩溃,提示5次xdrx_geom_bpoly出错后cad就挂了

点评

你是怎么使用的,单次使用? 还是类似GRREAD,点监视器鼠标动态的获取边界? 生成边界依赖于实体类型,把你的DWG传上来下看看。  详情 回复 发表于 2018-6-13 15:23
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2018-6-13 15:23:25 | 显示全部楼层
xinxirong 发表于 2018-6-13 06:48
我是先构建满屏的ss(只把需要的图层保留),再(xdrx_geom_bpoly pt ss),很卡。另外,xdrx_geom_bpoly比较容 ...

你是怎么使用的,单次使用? 还是类似GRREAD,点监视器鼠标动态的获取边界?
生成边界依赖于实体类型,把你的DWG传上来下看看。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 5060个

财富等级: 富甲天下

发表于 2018-6-13 17:23:09 | 显示全部楼层
本帖最后由 xinxirong 于 2018-6-13 17:25 编辑

请点击此处下载

查看状态:需购买或无权限

您的用户组是:游客

文件名称:测试xdrx_geom_bpoly.zip 
下载次数:32  文件大小:38.58 KB 
下载权限: 不限 以上  [免费赚D豆]


很小的图,对象不多。但grread的过程中就很慢,很卡。对了,我把容差设为200。这个应该影响不大吧?

点评

就向这个帖子里面的 http://bbs.xdcad.net/forum.php?mod=redirect&goto=findpost&ptid=716055&pid=3667134&fromuid=5280 不管鼠标怎么移动,也就鼠标在一个单元格内,才生成一次边界,就不卡了,如果不加  详情 回复 发表于 2018-6-13 17:59
改进下代码,你代码怎么写的,贴上来下。 向这种GRREAD,循环动态,再简单的,一秒也要执行N多次操作,这样的,你应该加入判断,鼠标点在上次生成的边界内的时候,不需要再求边界,直到出了上次的边界后,再生成  详情 回复 发表于 2018-6-13 17:53
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2018-6-13 17:53:29 | 显示全部楼层
xinxirong 发表于 2018-6-13 17:23
很小的图,对象不多。但grread的过程中就很慢,很卡。对了,我把容差设为200。这个应该影响不大吧?

改进下代码,你代码怎么写的,贴上来下。

向这种GRREAD,循环动态,再简单的,一秒也要执行N多次操作,这样的,你应该加入判断,鼠标点在上次生成的边界内的时候,不需要再求边界,直到出了上次的边界后,再生成次边界,这样就很少次生成边界了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2018-6-13 17:59:26 | 显示全部楼层
xinxirong 发表于 2018-6-13 17:23
很小的图,对象不多。但grread的过程中就很慢,很卡。对了,我把容差设为200。这个应该影响不大吧?

就向这个帖子里面的 http://bbs.xdcad.net/forum.php?m ... 34&fromuid=5280



                               
登录/注册后可看大图


不管鼠标怎么移动,也就鼠标在一个单元格内,才生成一次边界,就不卡了,如果不加判断,再简单的图形,一秒执行很多次取边界肯定要卡,也没必要。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 211个

财富等级: 日进斗金

发表于 2018-9-21 22:37:33 | 显示全部楼层
N版,这个带容差的真的不错,要是能批量生成闭合线就更好了。

点评

一个函数就行: (xdrx_geom_searchregions (ssget)) API关于拓扑造区的简化代码实现1 个回复 - 24 次查看以前论坛发布过“拓扑造区”的实现插件 下面是以前的代码实现,和下面的简化代码比,要啰嗦不少 随着  详情 回复 发表于 2018-9-21 23:03
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 40个

财富等级: 招财进宝

 楼主| 发表于 2018-9-21 23:03:30 | 显示全部楼层
sys1538 发表于 2018-9-21 22:37
N版,这个带容差的真的不错,要是能批量生成闭合线就更好了。

一个函数就行:
(xdrx_geom_searchregions (ssget))


                               
登录/注册后可看大图


API关于拓扑造区的简化代码实现
1 个回复 - 24 次查看
以前论坛发布过“拓扑造区”的实现插件 下面是以前的代码实现,和下面的简化代码比,要啰嗦不少 随着API功能的增强,下面是简化的代码实现。 API可以设置系统变量RegionsRemoveMax,可以在生成拓扑多边 ...
2018-7-12 13:40 - newer - XDRX_API应用

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

使用道具 举报

已领礼包: 19个

财富等级: 恭喜发财

发表于 2018-10-19 08:03:21 | 显示全部楼层
TIM截图20181019080112.jpg TIM截图20181019080104.jpg 版主,论坛上其他的插件,我复制保存代码都没问题,有一些提示编码格式有问题的,我把乱码的?替换成空格之后保存ANSI也可以了,但是这个插件,我试过各种方法了,但还是不行,在cad里面加载之后,但就是没有这个插件的命令。版主能否给我发一份保存好的lsp文件,我对比一下看看哪里出错了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 4个

财富等级: 恭喜发财

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

使用道具 举报

已领礼包: 4个

财富等级: 恭喜发财

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-22 01:47 , Processed in 0.323059 second(s), 67 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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