找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 12008|回复: 93

[研讨] 曲线选择集交点打断的源码

[复制链接]
发表于 2013-8-23 11:01:26 | 显示全部楼层 |阅读模式

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

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

×
本帖最后由 LoveArx 于 2016-11-27 12:57 编辑

[ 本帖最后由 LoveArx 于 2016-11-27 12:51 编辑 ]\n\n通过两天的努力,自己写了个曲线选择集交点打断的代码,程序运行基本没问题,但是程序有一个Bug,我一直找不出来,这个bug是当曲线选择集中包含圆,打断时圆可以正常被打断,但是第二次再选中圆被打断后的圆弧进行打断,就会出现致命错误!是什么原因我一直搞不明白,请各位高手给支支招!
另外,曲线打断时计算交点时是每条曲线都和其他n-1条曲线计算了一次交点,计算了n*(n-1)次,按说应该可以只计算n*(n-1)/2次,已经计算过交点的就无需再计算,但是我不知道如何来写保存已经计算过的曲线和点,请给指点指点!下面是程序的全部源码:

2013.08.24更新,现在程序已经修正Bug,且支持容差打断!
游客,本帖隐藏的内容需要积分高于 30 才可浏览,您当前积分为 0





评分

参与人数 1D豆 +10 收起 理由
XDSoft + 10 很给力!经验;技术要点;资料分享奖!

查看全部评分

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

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-8-23 11:19:55 | 显示全部楼层
晓东API的函数XDRX_CURVE_INTERSECTBREAK对于楼主的同样情况,即打断的实体包含圆,第一次正常打断,再选择这些打断后实体,圆被打断后的圆弧会有丢失的现象,即有些圆弧不见了!不知是和原因?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-8-23 11:36:26 | 显示全部楼层
试试给getcliipcurves的曲线的参数排下序。

点评

(XDRX_CURVE_INTERSECTBREAK (ssget))打断如下图形,结果有问题: [attachimg]5028[/attachimg] 第二次打断,少了一段圆弧!  详情 回复 发表于 2013-8-23 11:48
计算参数前我已经用函数SortPointsOnCurve对点表排过序了!如不排序,打断的结果肯定是错误的!  详情 回复 发表于 2013-8-23 11:43
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2013-8-23 11:43:23 | 显示全部楼层
XDSoft 发表于 2013-8-23 11:36
试试给getcliipcurves的曲线的参数排下序。

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

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-8-23 11:48:15 | 显示全部楼层
XDSoft 发表于 2013-8-23 11:36
试试给getcliipcurves的曲线的参数排下序。

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

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-8-23 11:50:52 | 显示全部楼层
第二次打断,是在第一次的基础上再打断的吗?

点评

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

使用道具 举报

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

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-8-23 12:19:28 | 显示全部楼层
XDSoft 发表于 2013-8-23 11:50
第二次打断,是在第一次的基础上再打断的吗?

是的!

点评

箭头反过来,模拟出来了,你试试 (xdrx_curve_intersectbreak (ssget) 1) 和(xdrx_curve_intersectbreak (ssget) 1 t) 会遇到删除圆弧的情况不?  详情 回复 发表于 2013-8-23 12:51
在2008下,没有重复出你说的情况 [attachimg]5030[/attachimg]  详情 回复 发表于 2013-8-23 12:43
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-8-23 12:43:43 | 显示全部楼层

在2008下,没有重复出你说的情况

xdtb_intersectbreak.gif

点评

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

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-8-23 12:50:34 | 显示全部楼层
本帖最后由 牢固 于 2013-8-23 12:54 编辑
XDSoft 发表于 2013-8-23 12:43
在2008下,没有重复出你说的情况

我就是在CAD2008测试的!
从04~2013测试(xdrx_curve_intersectbreak (ssget))都是如此!

点评

呵呵,我在 08 下试了,和G版保持高度一致! 少了一个弧!  详情 回复 发表于 2013-8-23 12:55
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 145个

财富等级: 日进斗金

发表于 2013-8-23 12:51:35 | 显示全部楼层

箭头反过来,模拟出来了,你试试 (xdrx_curve_intersectbreak (ssget) 1) 和(xdrx_curve_intersectbreak (ssget) 1 t)  会遇到删除圆弧的情况不?

点评

2004加载8.20的API,在窗口以运行(xdrx_curve_intersectbreak (ssget)),然后新建dwg窗口,再运行(xdrx_curve_intersectbreak (ssget)),选择对象后,弹出窗口,点击n次确定后,选择的对象消失了: [attachimg]5032[/  详情 回复 发表于 2013-8-23 13:20
加了参数后偶尔也会出现丢失圆弧的情况!  详情 回复 发表于 2013-8-23 13:03
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2013-8-23 12:55:22 | 显示全部楼层
本帖最后由 Free-Lancer 于 2013-8-23 12:56 编辑
牢固 发表于 2013-8-23 12:50
我就是在CAD2008测试的!

呵呵,我在 08 下试了,和G版保持高度一致!
少了一个弧!

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

使用道具 举报

发表于 2013-8-23 13:00:51 | 显示全部楼层
05 下的没有问题
测试版本为 8.17

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

使用道具 举报

已领礼包: 344个

财富等级: 日进斗金

发表于 2013-8-23 13:03:08 | 显示全部楼层
XDSoft 发表于 2013-8-23 12:51
箭头反过来,模拟出来了,你试试 (xdrx_curve_intersectbreak (ssget) 1) 和(xdrx_curve_intersectbreak  ...

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

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

发表于 2013-8-23 13:13:51 | 显示全部楼层
发现一个问题,用0820版,一组的时候正确,在2012上第一次运行正常,第二次运行有的丢失有的不丢失!
brk.jpg
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-3-29 21:30 , Processed in 0.309957 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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