明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2332|回复: 6

[求助]如何光顺样条曲线

[复制链接]
发表于 2004-8-27 19:50:00 | 显示全部楼层 |阅读模式
我是搞造船的,在图纸中常用到样条曲线,但如何光顺是个不易解决的问题,因为这涉及到一些复杂的数学计算,超出我的能力。哪位朋友有能力帮助的,请不吝指教。
发表于 2004-8-27 20:01:00 | 显示全部楼层
什么才是“光顺”的标准
发表于 2004-8-27 20:59:00 | 显示全部楼层
我去年有写过. 找不到. 写个新的. 下面是代码: ;编写: BDYCAD
;日期:2004-08-27
(DEFUN c:test (/ splss dist i a b splp b1 e)
(setvar "cmdecho" 0)(setq osm (getvar "osmode"))
(setvar "osmode" 0)
(PRINC "\n请选择要光顺的曲线:")
(setq splss (ssget '((0 . "SPLINE"))))
(setq dist 3); 固定曲线光顺的节距, 用户自定改用这句(setq dist (getreal "\n输入光顺系数:"))
(setq i 0 )
(vl-cmdf ".undo" "g")
(repeat (sslength splss)
(setq a (ssname splss i))
(vl-cmdf ".measure" a dist)
(setq b (ssget "p") n 0)
(setq splp (list(vlax-curve-getPointAtParam a (vlax-curve-getstartparam a))))
(repeat (sslength b)
(setq b1 (cdr(assoc 10(entget (ssname b n)))))
(setq splp (append splp (list b1)) n (1+ n)))
(setq splp (append splp (list (vlax-curve-getPointAtParam a (vlax-curve-getEndParam a)))))
(vl-cmdf ".spline")
(mapcar '(lambda(e) (vl-cmdf e)) splp)
(vl-cmdf "" "" "" )
(vl-cmdf ".erase" b "")
(vl-cmdf ".erase" a "")
(setq i (1+ i)))
(vl-cmdf ".undo" "e")
(setvar "osmode" osm)(setvar "cmdecho" 1)
(princ))

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2004-8-27 21:34:00 | 显示全部楼层
nurbs曲线本来就是一种光顺的数学方法,你的程序好象只是为得到曲线点的数据,其实型线最终还是polyline,并且是line而非arc,只不过点的个数很多而已,关键是三向光顺的问题
发表于 2004-9-8 10:42:00 | 显示全部楼层
建议用catia,里面有这方面的模块。自己编写这种软件需要很深的数学基础,不太现实。
发表于 2004-9-8 20:14:00 | 显示全部楼层
改变spline控制点的权重,可以控制光顺度
发表于 2004-9-9 08:23:00 | 显示全部楼层
无痕说的是. 只是在我这个行业里面几乎是用spline来工作. 要求的光顺处理也象我上面那个程序的做法的. 所以曲线的光顺在不同的行业自然有不同的要求啦.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-18 17:27 , Processed in 0.191687 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表