关于vla-offset的疑问
本帖最后由 czcxxx 于 2015-9-30 12:17 编辑为什么用vla-offset偏移lwpolyline时有向内偏移也有向外偏移?
代码如下:
(setq enpl (car (entsel)))
(setq enplosa (vla-offset(vlax-ename->vla-object enpl) -2))
cad图如下:
图中多段线已经删除重复,每个多段线已经删除重复点同向点,所谓同向点是我自定义的,解释如下图1.gif
http://bbs.mjtd.com/xwb/images/bgimg/icon_logo.png 该贴已经同步到 czcxxx的微博
左侧为没有同向点,右侧有同向点。
lwpolyline全部闭合。
当采用上述代码后,部分lwpolyline 向外偏移,如图中2.gif箭头所示。
查了lwpolyline的方向,好像与顺向、逆向无关。
不知原因何在?
敬请高手指点!!!
谢谢!!!!
目的是为了裁切线段在lwpolyline内的部分
思路:
1、先按原lwpolyline向内偏移得lwpolylineoffset,获得lwpolylineoffset的点集,
2、当点集的首点与尾点不同时,在点集尾部加个首点,
3、然后以此点集用trim "ff"方式裁切掉线段在lwpolyline内的部分
对于1、,方式一:
采用command offset 加质心点方式得到的lwpolylineoffset全部是向内偏移,
且全部能正常运行,就是有点慢。
对于1、,方式二:
采用vla-offset方式则有部分lwpolylineoffset 为外偏移
不知原因何在??????
还遇到一个问题:
采用( command "trim" lwpolyline "f" p1 p2 "" "") 循环裁切,
对于少量向外偏移的lwpolylineoffset ,竟然是部分裁切lwpolyline内的,部分
裁切lwpolyline外的,很是奇怪!!!!
(用方式一时,同样的代码无问题)
代码如下: 内外(偏移距离的正负)是由 pline 的整体走向决定(顺、逆时针) 本帖最后由 czcxxx 于 2015-9-30 12:40 编辑
谢谢:ivde
经过仔细检查,确实如你所言:内外(偏移距离的正负)是由 pline 的整体走向决定(顺、逆时针)
加了判断方向的子函数,ok了。
谢谢!!!!
见66.gif
奇怪的是:部分外偏的lwpolyline 在裁切时,会出现全不裁,部分裁的现象????,应该是全部裁切才对啊!!!!
当图过于密集时不能有正确结果,如何解决???
如下图:见5.gif
请高手指教,谢谢!! trim 命令中 点参数前面加 "_none" 判断方向的子函数,方便共享一下么,我正好研究到这了,谢谢 顶一个 (setq Ret Val(vla-Offset Object Distance))
Arc,Circle,Ellipse,Line,LightweightPolyline,Polyline,
Object |Spline,Xline
这个方法所适用的对象
双精度;只可输入;对象的偏移距离。偏移可以是正数或
负数,但不可以等于零。如果偏移是负值,则被解释为进
Distance|行“较小“弯曲的偏移(也就是说,如果是弧,则会向”距离
小于“开始弯曲的半径弯曲)。如果”较小“没有意义,则它
会在较小的X、Y、和ZWCS座标的方向偏移
变体(对象的数组)
Rctval(返回值)|偏移后新建立的对象数组
页:
[1]