[求助][原创]曲线转多段线
本帖最后由 作者 于 2008-10-26 9:47:47 编辑 <br /><br /> <p>最近写一个曲线转多段线的程序,但出来的效果不完美,请各位指点下,代码见附件:</p> 郁闷,竟然无人问津 <p>不知道这个有什么用</p><p>是不是只有出切割指令时候能用到</p> luyu9635发表于2008-10-26 9:46:00static/image/common/back.gif;|程序虽能运行,但描出来的线会比实际的短1个距离,不知为什么,请各位帮忙修改下,谢谢;<p>是不是因为去掉了小数的原因.</p> <p>看下这个:</p><p>(defun c:ee () ;任意曲线变多段线一般只用于椭圆;圆弧和样条曲线<br/> (VL-LOAD-COM)(setvar "cmdecho" 0)<br/> (setq ss (ssget '((0 . "ARC,*LINE,ELLIPSE"))))<br/> (setq lenss (sslength ss)<br/> i 0 eelist '()<br/> )<br/> (repeat lenss;外循环开始<br/> (setq en (ssname ss i);取得图元名<br/> obj (vlax-ename->vla-object en);转换为vla对象<br/> )<br/> (setq ;zc (vlax-curve-getendparam obj)<br/> j 1 );求得图元周长<br/> (setq zc(vlax-curve-getDistAtPoint obj (vlax-curve-getEndPoint obj)))<br/> <br/> ;(setq j(- zc (fix zc)));取出周长的小数值<br/> (setq lst1(vlax-curve-getPointAtDist obj 0));取开始点<br/> (repeat (fix zc);循环周长取整次刚好到端点<br/> ;(setq ePt (vlax-safearray->list (vlax-variant-value (vla-get-coordinate obj j))))<br/> (setq lst (vlax-curve-getPointAtDist obj j);取距开始点为j的点<br/> ; lstlen (vlax-curve-getDistAtPoint obj lst);测量开始点到j点的距离<br/> )<br/> (setq eelist (append eelist (list lst)));加入到点集<br/> (setq j (1+ j));递增1<br/> );内循环结束<br/> ;(setq eelist(reverse eelist))<br/> (setq eelist (append eelist (list (vlax-curve-getEndPoint obj))))<br/> (command ".pline" "non" lst1);开始描点<br/> (foreach n eelist (command "non" n)(grdraw lst1 n 1) (setq lst1 n));模拟描红<br/> (COMMAND "");描点结束<br/> (setq eelist '());清空点集<br/> (setq i (1+ i));下一个图元<br/> );外循环结束<br/> (princ)<br/>)</p> 能不能增加线段的控制数量啊?这样就更OK了 phoenixdjq发表于2008-10-27 8:28:00static/image/common/back.gif不知道这个有什么用是不是只有出切割指令时候能用到
<p>对,我就是要用来对付切割的,自己改好了</p> 如果改进能切割线段数量就更加好了 <p>9楼的问题也可见以下位置:</p><p><a href="http://www.mjtd.com/BBS/index.asp" style="CURSOR: hand;">明经CAD社区</a> → <a href="http://bbs.mjtd.com/forum.php?mod=forumdisplay&fid=22">工程篇</a> → <a href="http://bbs.mjtd.com/forum.php?mod=forumdisplay&fid=8&page=1">机械工程</a> → [原创]任意曲线转换成多段线程序 </p><p><a href="http://bbs.mjtd.com/forum.php?mod=viewthread&tid=68784">http://bbs.mjtd.com/forum.php?mod=viewthread&tid=68784</a></p><p></p>
页:
[1]
2