找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

楼主: Gxiaofeng

[求助]:如何打断光滑曲线?

[复制链接]
发表于 2004-5-13 12:46:23 | 显示全部楼层
希望高人能够指点一下,我也遇到过这样的情况!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-17 15:29:58 | 显示全部楼层
我现在正被这个问题所困扰,难道没有解决的办法吗
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-17 21:31:47 | 显示全部楼层
对于一般曲线,都可以用getSplitCurves切断,但对于AcDb2dPolyline、AcDb3dPolyline这两种曲线(或许还有其他的),用这个函数断不开(但求交点没问题),而AcDbPolyline曲线经过pedit命令的“F”或“S”选项处理过后,它就变成了AcDb2dPolyline(不信大家可以用list命令看一下它的DXF名称的变化)。对这种情况的处理,我是将它用handOverTo转换成AcDbSpline后再处理,就没问题了,而且线形上差别不大,可以满足实际需要。
在使用getSplitCurves时大家注意一下,不论用点集断开还是参数集断开(对应于getSplitCurves的两种形式),都应先将点集或参数集转换为距离集(getDistAtPoint或getDistAtParam),然后要对距离集进行升序排序,之后再转换回来。这样才能保证给getSplitCurves传入的断点参数有序,从而保证结果的正确性。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-18 18:54:31 | 显示全部楼层
18楼说得很好,我也是在这里看到一位仁兄说可以用explode函数分解,我试了一下确实可以,分解成直线后再连接起来就成了一般的二维多段线,这样就可以用getsplitcurves打断了,而且线形不变,我想cad的trim命令也是这样实现的,因为trim过的拟合曲线也是变成一般的二维多段线。
顺便向各位请教一下,为什么acedssget函数只能检索lwpolyline的扩展数据,而所有其它类型的实体的扩展数据acedssget检索不到呢?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-19 12:46:42 | 显示全部楼层
我对ARX不是很熟悉,不过大致了解楼主的意思.
我也遇到过这种情况,就是比较复杂的曲线,比如说样条曲线.和另一条曲线相交时,外观上是肯定相交的,都是平面的.不存在三维情况.但是你捕捉不到它的交点.这种情况并不少见.
我们的一个解决方法是,把这个曲线OFFSET一个距离出去,再把该曲线删除,再把偏置出去的线条OFFSET回来,就可以求到交点.
不知道对编程有没有启示.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-9-19 22:32:02 | 显示全部楼层
我完全赞同楼上各位的看法。CAD中确实有许多漏洞,而且在ARX编程时不易察觉。我在用intersectWith求交点时也遇到过类似情况。
根据这些现象,似乎可以得出一定结论:
1、AutoCAD中的某些命令存在“盲区”,将导致命令执行不干净彻底甚至产生多义性。
2、产生“盲区”的主要原因是浮点数的精度不够。

正如大家所说,在AutoCAD中只能用复制、偏移等经验办法解决。
如果进行ARX编程时遇到,可以试一试提高浮点数精度、避开“盲区”等方法,看看能否解决。
期待大家进行试验总结,并提供更好的解决办法来分享。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

 楼主| 发表于 2005-9-22 20:07:38 | 显示全部楼层
最初由 Hellow 发布
[B]对于一般曲线,都可以用getSplitCurves切断,但对于AcDb2dPolyline、AcDb3dPolyline这两种曲线(或许还有其他的),用这个函数断不开(但求交点没问题),而AcDbPolyline曲线经过pedit命令的“F”或“S”选项处理过?.. [/B]


18楼的这位兄弟.你试过转换成AcDbSpline没问题吗?
getSplitCurves是几何库基类的成员,不是有同样的效果吗?
"我是将它用handOverTo转换成AcDbSpline后再处理,就没问题了,而且线形上差别不大,可以满足实际需要"这就是说还是有变化的,CAD是BREAK是如何把打断开的呢?

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

使用道具 举报

发表于 2006-8-19 07:24:35 | 显示全部楼层
我在想,采用这些方法打断曲线后,曲线的的数量将增加,而且形状也必然会发生变化,不知道曲线的ID会作什么样的调整?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-10-25 21:01:06 | 显示全部楼层
用getProjectedCurve()将封闭的3d多义线投影到另一个平面实体上,然后求交点,求出后将交点返回到原3d多义线上去就可以了。
我把求得的交点按距起点远近排好序后,用getSplitCurves()最后一段曲线应该是最后一个顶点与起点间的曲线,但是结果却是最后一个顶点与坐标原点间的曲线,请问是怎么回事?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-10-26 13:42:08 | 显示全部楼层
用pe命令S拟合过多义线,可直接用expllode进行打断.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2008-12-26 10:24:41 | 显示全部楼层
我试了一下,使用getSplitCurves时,如果是三维多线段,拟合不拟合都不会出错,如果是二维多线段,只有在二次或三次拟合时才出错,如果是曲线拟合,也不会出错,可能是getSplitCurves本身有问题,不知道能不能先将二维多线段先把拟合去掉,打断后把得到的实体再拟合一下
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-9-24 06:29 , Processed in 0.414124 second(s), 49 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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