求曲线转多段线程序……
本帖最后由 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、可以选择保留或不保留原线段。
最后,衷心感谢大神相助,在明经上学习了不少东西,也提高了工作效率,谢谢了! (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 static/image/common/back.gif
不好意思回答。另外椭圆不拟合的话,怎么搞我也不知道。
明经其实有不少此类程序,有的是功能不全或不稳定,有的则是绑在一个大工具集里面,“xgqx2.VLX”是目前我使用过的最好用的,可惜有限制啊 请修改标题,去掉【Gu_xl】
小心gu版打你屁屁 坛子里似乎有类似的帖子,楼主好好查查应该能有收获 10币来之不易 得省着使 cadET自带的flatten就可以了,如果fl不了的如椭圆先偏移一点点(再偏回去),就成一般线了,最后再flatten,完美ok. freehand8008 发表于 2014-3-12 09:38 static/image/common/back.gif
坛子里似乎有类似的帖子,楼主好好查查应该能有收获 10币来之不易 得省着使
除了xgqx2.VLX,没发现真正令人满意的,各论坛找了半年了。 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版的支援!!! freehand8008 发表于 2014-3-12 09:38 static/image/common/back.gif
坛子里似乎有类似的帖子,楼主好好查查应该能有收获 10币来之不易 得省着使
老兄,有没那夸张吗?我给你10币你帮忙写个程序或者改个程序?试试?