无痕 发表于 2004-5-30 16:37:00

[讨论]一起来编一个单向offset

RetVal = object.Offset(Distance)



Object


Arc, Circle, Ellipse, Line, LightweightPolyline, Polyline, Spline, XLine<BR>使用该方法的对象。


Distance


Double[双精度]; 仅用于输入<BR>该方法中的“Distance”是用来指定偏移距离的。 偏移可以是正值或负值,但不能等于0。如果偏移为负值,这意味着将得到更“小”的曲线 (例如,一个圆以负值偏移后的得到的圆的半径将会比原对象半径小). 如果“小”没有意义,则AutoCAD将向小的X,Y,Z WCS坐标方向偏移。如果偏移距离无效,则返回错误。<BR>[明经通道特别提示]对于的 LightweightPolyline 和 Polyline 对象,曲线有顺时针方向和逆时针方向,对于顺时针方向,距离值为正值时为向内偏移,距离值为负值时为向外偏移。对于逆时针时刚好相反。对于自相交的多段线的偏移方向需要自己慢慢实践了。 <BR><BR>RetVal


Variant[变体] (对象数组)<BR>可以以原始对象来偏移出一系列的新曲线对象。


讨论:一起来编一个单向offset,让distance &gt;0 时,pl线无关时针方向,总是得到面积更大方向的偏移实体(向外偏移)。反之,。。。

雪山飞狐_lzh 发表于 2004-5-30 17:14:00

<FONT color=#000000>就是要判断LightweightPolyline 和 Polyline 的点的顺序的问题吧?</FONT>



<FONT color=#000000>好像没这么简单?</FONT>





把偏移以后的曲线与前一个曲线比较一下不就可以了,如果长度小,就反方向做偏移

meflying 发表于 2004-5-30 17:39:00

这种怎么算?而且SPLINE OFFSET后可能产生多条曲线


无痕 发表于 2004-5-30 18:00:00

这个可以这么判断:


如果偏移为负值,这意味着将得到更“小”的曲线 (例如,一个圆以负值偏移后的得到的圆的半径将会比原对象半径小). 如果“小”没有意义,则AutoCAD将向小的X,Y,Z WCS坐标方向偏移。


如下图:红线是dist&gt;0时候的偏移效果

无痕 发表于 2004-5-30 18:04:00

不过这个问题可能比较复杂,还是约定在“闭合曲线”的范围里面吧

mccad 发表于 2004-5-30 21:17:00

也就是说对偏移方法的完善吧。让它不论是哪种曲线都会按照负值向小的方向偏移。

spring 发表于 2004-5-31 09:10:00

没搞明白无痕说的是要哪种效果,传个演示的上来看看是不是这个意思


晕 700KB 的附件上传不上来吗??最大可以上传多大的

spring 发表于 2004-5-31 09:19:00




分成两个文件了

雪山飞狐_lzh 发表于 2004-5-31 10:43:00

好像和你的演示无关,是指曲线的Offset方法


不过如果是单纯的封闭曲线Offset方法的改进就稍微简单点了

无痕 发表于 2004-6-1 00:28:00

其他情况得要先有个界定,比如自相交的,有的向内offset,面积反而变大,dist&gt;0时候应该按什么来偏移,需要个大家比较认同的界定方法。这里仅举一例来说明,如果要做适应范围更广的,最好先对各种情况有个统一的界定方法。
页: [1]
查看完整版本: [讨论]一起来编一个单向offset