社区
图形处理/算法
帖子详情
读取CAD的DXF文件中的SPLINE 样条曲线数据 求绘制此曲线的算法与实现
xgc2067598
2010-11-10 03:14:59
如题,大家帮帮忙啊
...全文
2688
29
打赏
收藏
读取CAD的DXF文件中的SPLINE 样条曲线数据 求绘制此曲线的算法与实现
如题,大家帮帮忙啊
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
29 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
geruiguang
2012-07-31
打赏
举报
回复
能不能给我发一份啊,谢谢了,现在正在研究这个
867519280@qq.com
zhaoyong1105
2012-07-11
打赏
举报
回复
小弟也在摸索,楼主能否发份代码,不胜感激
1044369245@qq.com
swmnet
2012-06-24
打赏
举报
回复
楼主可否也发发份代码。。谢谢!在下也在摸索。。。
swmnet@126.com
cuiyaer
2012-02-28
打赏
举报
回复
楼主能否发份代码。。谢谢!
Jorry721
2011-08-19
打赏
举报
回复
楼主能否发份代码给我?多谢
453436534@qq.com
csuchen6
2011-06-13
打赏
举报
回复
楼主已完成?能否发份代码给我?多谢
190523797@qq.com
LIUKUN1106
2011-05-23
打赏
举报
回复
麻烦你也帮我发一份代码吧 谢谢了 liukun1106@126.com
xgc2067598
2010-11-16
打赏
举报
回复
非常感谢 buluori 的大力支持! 结贴了 基本完成了
xgc2067598
2010-11-12
打赏
举报
回复
好的 我已经发你右键了
buluori
2010-11-11
打赏
举报
回复
改成NURBS 要在 取点的 d布尔算法那函数里 加权值 的
CRPoint CRSpline::Dbordv(double u, int iDegree)
/*
输入参数:
k表示次数,l表示相异节点个数,u表示参数值,t[l]表示相异节点数组,r[l]表示重复度数组,
d[dim][kl]表示所涉及的控制顶点。
输出参数:
p表示B样条曲线上参数为u值的一点
*/
{
int k = Knot_Index(u) - iDegree; //相关节点的起始点索引号
if(k < 0)
return CRPoint(0,0);
CArray<double,double> dt0,dt1, dw;
dt0.SetSize(iDegree + 1);
dt1.SetSize(iDegree + 1);
dw.SetSize(iDegree + 1); //权值
for(int i = 0;i <= iDegree;i++)
{
dw[i] = m_pW[k + i];
dt0[i] = dw[i] * m_pCtrlPtList[k + i].x;
dt1[i] = dw[i] * m_pCtrlPtList[k + i].y;
}
for(int II = 1;II <= iDegree;II++)
{
for(int j = 0;j <= iDegree - II;j++)
{
double denom,alpha;
denom = Knot_Value(j+iDegree+1+k) - Knot_Value(j+II+k);
if(fabs(denom) <= 1e-5)
alpha = 0.0;
else
alpha = (u - Knot_Value(j+II+k))/denom;
dt0[j] = (1.0 - alpha) * dt0[j] + alpha * dt0[j+1];
dt1[j] = (1.0 - alpha) * dt1[j] + alpha * dt1[j+1];
dw[j] = (1.0 - alpha) * dw[j] + alpha * dw[j+1]; //权值
}
}
CRPoint p;
p.x = dt0.GetAt(0) / dw.GetAt(0); //权值
p.y = dt1.GetAt(0) / dw.GetAt(0);
return p;
}
buluori
2010-11-11
打赏
举报
回复
对,曲线逼近那里 也要改下,他用的步进值好像是du为 0.1 的,太绝对了, 用2分法去切要好点
hn13723899236
2010-11-11
打赏
举报
回复
给我也发一份代码吧
xgc2067598
2010-11-11
打赏
举报
回复
你发的那份代码 曲线逼近的算法 很不柔和,autocad里面 6个控制点 画出来的两个波段都是很柔和的
不过还是要谢谢你 不知道如何使得更加柔和 据我所致 autocad里面的样条曲线时 NURBS的算法貌似
xgc2067598
2010-11-11
打赏
举报
回复
好的 xgc2067598@163.com
buluori
2010-11-11
打赏
举报
回复
有没有邮箱,发段例子给你把,只要把里面的 哈特利-贾德方法 算法,改下就可以了, 加入 权值, 节点的计算用DXF读取的值替换掉
buluori
2010-11-11
打赏
举报
回复
通讯工具在公司用起来不方便,公司禁止,有事可以邮件留言
xgc2067598
2010-11-11
打赏
举报
回复
朋友可否加QQ 或者MSN 来交流下 这里效率太慢
我的QQ 123504023
MSN xgc2067598@hotmail.com
请注明 NURBS
xgc2067598
2010-11-11
打赏
举报
回复
Dj * Nj,k一般样条曲线, 而 NURBS用的是 Wj * Dj * Nj,k / Wj * Nj,k 能解释下么 我对算法的公式不是很了解 而且公式体现在程序的那一块里
buluori
2010-11-11
打赏
举报
回复
而且用的公式是不一样的 例子里用的公式是 Dj * Nj,k一般样条曲线, 而 NURBS用的是 Wj * Dj * Nj,k / Wj * Nj,k
buluori
2010-11-11
打赏
举报
回复
不,cad里面省略是因为我们在画spline的时候没有去编辑控制点权值的值,默认都是1的,所以生成DXF的时候cad会自动省略掉,一旦用户编辑过spline的权值,DXF里就会有权值这组数据了,所以你如果不想以后解析出来的曲线变形的话就在程序里加入进去
加载更多回复(8)
CAD
中
的
spline
详解
本文围绕
CAD
中
的
Spline
展开,介绍了基本公式,包括有理
样条
曲线
、B
样条
曲线
及混合函数。通过
CAD
样条
实例,阐述
绘制
spline
、参数方程、计算混合函数和节点向量等内容。还探讨了
绘制
自己的
spline
,分析已知量和边界条件,给出从拟合点计算控制点的方法,以
实现
曲线
绘制
。
CAD
的
DXF
之C#net
Dxf
解析
本文详细介绍了
DXF
文件
格式的解析方法,利用net
Dxf
开源工具
实现
DXF
数据
的高效提取,包括圆、
样条
曲线
、标注等元素的
读取
,并提供具体代码示例。
从
dxf
文件
中
提取
spline
曲线
该博客介绍从
dxf
文件
中
提取
spline
曲线
的方法。使用lib
Dxf
解析
dxf
文件
提取图形元素,用open_Nurbs进行
spline
曲线
计算。展示了
CAD
绘制
与程序显示的
曲线
效果,给出main.cpp代码及对lib
DXF
的简单封装,还计划尝试自己写
spline
解析。
MFC+C++
实现
CAD
DXF
样条
曲线
提取与轨迹点生成(不包含
CAD
内容
读取
)
本文介绍如何使用MFC和C++解析
DXF
文件
中
的
SPLINE
实体,提取NURBS控制点、节点向量和权重等参数,通过De Boor
算法
与自适应细分生成高精度轨迹点,并在MFC框架下
实现
可视化
绘制
。技术涵盖
DXF
结构分析、NURBS建模与工程应用,适用于数控加工与机器人路径规划。
基于lib
dxf
rw库
读取
样条
曲线
并离散为点
在
CAD
与CAM领域,
DXF
文件
广泛用于存储矢量图形信息,
样条
曲线
的
读取
与离散化很重要。本文基于lib
dxf
rw库
实现
此功能,介绍了库的特点,分析代码
实现
,包括
文件
读取
、
样条
曲线
验证、离散化处理、De Boor
算法
及曲率计算,提高了计算效率,为后续任务提供基础
数据
。
图形处理/算法
19,464
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章