![]() |
【转帖】[求助][原创]曲线转多段线
[求助][原创]曲线转多段线
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->复合线功能,使用方面偏差较少,就是不知源码怎样? |
所有的时间均为北京时间。 现在的时间是 04:42 PM. |