(defun c:ee (/ i j ss lenss eelist en obj zc lst1 lst n)				;任意曲线变多段线一般只用于椭圆;圆弧和样条曲线
  (VL-LOAD-COM)(setvar "cmdecho" 0)
  (setq ss (ssget '((0 . "ARC,SPLINE,ELLIPSE"))))
  (setq	lenss (sslength ss)
	i     0 eelist '()
  )
  (repeat lenss;外循环开始
    (setq en  (ssname ss i);取得图元名
	  obj (vlax-ename->vla-object en);转换为vla对象
    )
    (setq zc (vlax-curve-getdistatparam
	       obj
	       (vlax-curve-getendparam obj)
	     );求得图元周长
	  ;;;或者(setq zc(vlax-curve-getDistAtPoint obj (vlax-curve-getEndPoint obj)))
    )
    (setq j(- zc (fix zc)));取出周长的小数值
    (setq start(vlax-curve-getPointAtDist obj 0));取开始点
    (setq end(vlax-curve-getEndPoint obj)); 取结束点

    (repeat (fix zc);循环周长取整次刚好到端点
      (setq lst (vlax-curve-getPointAtDist obj j);取距开始点为j的点
	    lstlen (vlax-curve-getDistAtPoint obj lst);测量开始点到j点的距离
      )
      (setq
	  eelist (append eelist (list (list (nth 0 lst) (nth 1 lst))));加入到点集
      )
      (setq j (1+ j));递增1
    );内循环结束
    ;(setq eelist(reverse eelist))
    (command ".pline" "non" start);开始描点
    (foreach n eelist (command "non" n)(grdraw start n 1) (setq start n));模拟描红
    (COMMAND end "")(grdraw start end 1);描点结束
    (setq eelist '());清空点集
    (setq i (1+ i));下一个图元
  );外循环结束
  (princ)(princ)
)
;|程序对椭圆有效,但对圆弧和样条曲线不对,描出来的线会比实际的短1个距离,不知为什么,请各位帮忙修改下,谢谢;
;精度还算可以,当然还可以更精确,但速度也会相应变慢.|;
;另外为了加快速度,用 ActiveX 函数的vlaaddLightweightPolyline和entmake该怎么来写,没有找到相关实例,请指教!