[求助][原创]曲线转多段线
www.dimcax.com
defun c:ee () ;任意曲线变多段线一般只用于椭圆;圆弧和样条曲线
()( "cmdecho" 0)
( ss ( '((0 . "arc,spline,ellipse,*polyline"))))
( lenss ( ss)
i 0 eelist '()
)
( lenss;外循环开始
( en ( ss i);取得图元名
obj ( en);转换为vla对象
)
( wide(vla-get-constantwidth obj))
( "plinewid" wide)
( zc (
obj
( obj)
);求得图元周长
;;;或者( zc( obj ( obj)))
)
( j(- zc ( zc)));取出周长的小数值
( lst1( obj 0));取开始点
( ( zc);循环周长取整次刚好到端点
( lst ( obj j);取距开始点为j的点
lstlen ( obj lst);测量开始点到j点的距离
)
(
eelist ( eelist ( ( ( 0 lst) ( 1 lst))));加入到点集
)
( j ( j));递增1
);内循环结束
;( eelist( eelist))
( lst2( obj))
(
eelist ( eelist ( ( ( 0 lst2) ( 1 lst2))));加入到点集
)
( ".pline" "non" lst1);开始描点
( n eelist ( "non" n)( lst1 n 1) ( lst1 n));模拟描红
( "" );描点结束
( eelist '());清空点集
( i ( i));下一个图元
);外循环结束
()()
)
它山之石,可以攻玉。
学以致用,用而知之。
d
用定数/定距等分对任意线等分得到需要的点,然后将这些点坐标输出即可。
这样精度可以自控,简单实用。
d
谢谢各位的指点,又改了一下,如果是圆弧可以描得一样,用了pl-a-s
通过工具菜单->加载应用程序 可加载该程序,然后可直接在命令行输入相关命令运行。如需要每次启动时均加载该程序,则可以将该文件放在启动组中。
文件预览:
d
感谢楼主,但是对圆形好像无效啊?有没有办法?
d
将曲线,包括折线光滑后的曲线,转换为折线的难点在点的合理分布,即直线段与原曲线的最大偏差满足要求且大致相等,而不是等距分布。
至于圆和圆弧,直接按满足精度的的角度差取点即可。
d
其实在cass6.0以上版本里,已集成了spline->复合线功能,使用方面偏差较少,就是不知源码怎样?