dnedved 发表于 2014-3-11 15:42:12

求曲线转多段线程序……

本帖最后由 Gu_xl 于 2014-3-12 10:18 编辑

一直想要一个可以把曲线转化为多段线的工具,之前找了一个“xgqx2.VLX”(http://bbs.mjtd.com/forum.php?mod=viewthread&tid=68784),很满意,但由于有使用次数限制,所以只能作罢。
后来又找了一个(http://bbs.mjtd.com/forum.php?mod=viewthread&tid=93868),遗憾的是只对样条曲线有效,虽然按楼主的留言做了一些补充,但使用过程中经常出现无效的情况,且由于是以段数来分的,所以长线短线分的段数还要不停手工来试,等于是只能一条条操作,这些都劣于“xgqx2.VLX”。

由于本人是小白,只懂些皮毛中的皮毛,虽然努力尝试过,怎奈能力有限,特此求教。

说正事吧,希望程序能实现一下要求:
                                                
1、按长度等分曲线,如果可以选择智能分段(自动在弧度大的地方分                                             段较细弧度小的分的较大,显得圆润自然夹点又少)那当然最好了!
2、支持所有曲线(弧线、样条曲线、椭圆、圆),支持框选。
3、可以选择保留或不保留原线段。

最后,衷心感谢大神相助,在明经上学习了不少东西,也提高了工作效率,谢谢了!

Gu_xl 发表于 2014-3-11 15:42:13

(defun c:tt (/ d ss pl enl)
(setq d (getreal "\n输入弦高容差<0.5>"))
(if (null d)
    (setq d 0.5)
)
(while (setq ss (ssget '((0 . "*line,arc,circle,ellipse"))))
    (repeat (setq n (sslength ss))
      (setq e (ssname ss (setq n (1- n))))
      (setq pl (GXL-GETSAMPLET e d))
      (setq enl
             (list
               '(0 . "LWPOLYLINE")
               '(100 . "AcDbEntity")
               '(100 . "AcDbPolyline")
               (cons 90 (length pl))
             )
      )
      (setq enl (append enl (mapcar '(lambda (x) (cons 10 x)) pl)))
      (entmake enl)
      (entdel e)
    )
)
(princ)
)
GXL-GETSAMPLET函数见 按弦高限差值回返曲线拟合样本点

mandala 发表于 2014-3-11 16:58:55

不好意思回答。另外椭圆不拟合的话,怎么搞我也不知道。

dnedved 发表于 2014-3-11 17:26:42

mandala 发表于 2014-3-11 16:58 static/image/common/back.gif
不好意思回答。另外椭圆不拟合的话,怎么搞我也不知道。

明经其实有不少此类程序,有的是功能不全或不稳定,有的则是绑在一个大工具集里面,“xgqx2.VLX”是目前我使用过的最好用的,可惜有限制啊

xiaxiang 发表于 2014-3-12 09:12:17

请修改标题,去掉【Gu_xl】
小心gu版打你屁屁

freehand8008 发表于 2014-3-12 09:38:54

坛子里似乎有类似的帖子,楼主好好查查应该能有收获   10币来之不易 得省着使

kwok 发表于 2014-3-12 09:46:56

cadET自带的flatten就可以了,如果fl不了的如椭圆先偏移一点点(再偏回去),就成一般线了,最后再flatten,完美ok.

dnedved 发表于 2014-3-12 10:44:22

freehand8008 发表于 2014-3-12 09:38 static/image/common/back.gif
坛子里似乎有类似的帖子,楼主好好查查应该能有收获   10币来之不易 得省着使

除了xgqx2.VLX,没发现真正令人满意的,各论坛找了半年了。

dnedved 发表于 2014-3-12 12:56:07

Gu_xl 发表于 2014-3-12 11:00 static/image/common/back.gif
GXL-GETSAMPLET函数见 按弦高限差值回返曲线拟合样本点

G版V5!!!
我把您写的代码和”Gxl-GetSamplet.LSP“分别保存为两个LSP并加载。
体验了一下,十分给力,但也发现点问题
1.圆、椭圆不打断无法使用(错误: 参数类型错误: numberp: nil)
2.样条曲线当弯的很尖锐时会出现这样的情况

放大

再放大


3.所有的对象处理后都自动变为0层,不方便图层管理,如果可以保持原层就好了。

十分感谢G版的支援!!!

lucas_3333 发表于 2014-3-12 13:00:50

freehand8008 发表于 2014-3-12 09:38 static/image/common/back.gif
坛子里似乎有类似的帖子,楼主好好查查应该能有收获   10币来之不易 得省着使

老兄,有没那夸张吗?我给你10币你帮忙写个程序或者改个程序?试试?
页: [1] 2 3 4
查看完整版本: 求曲线转多段线程序……