社区
图形处理/算法
帖子详情
读取CAD的DXF文件中的SPLINE 样条曲线数据 求绘制此曲线的算法与实现
xgc2067598
2010-11-10 03:14:59
如题,大家帮帮忙啊
...全文
2419
29
打赏
收藏
读取CAD的DXF文件中的SPLINE 样条曲线数据 求绘制此曲线的算法与实现
如题,大家帮帮忙啊
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用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)
mfc+cpp+提取
cad
dxf
样条
曲线
并生成轨迹点(不含
读取
cad
内容)
借鉴https://blog.csdn.net/swety_gxy/article/details/54631325,自己没多大本事。
dxf
读取
文件
读取
dxf
文件
,包括直线,多义线,圆,圆弧和
样条
曲线
CAD
中
的
spline
详解
从
dxf
文件
中
提取点、直线、圆、弧等元素比较简单,但是
Spline
的处理比较麻烦。经过一段时间探索总结一下成果。
全面掌握
DXF
文件
的
读取
与显示技术
在本章
中
,我们深入了解了AutoLISP、C++和.NET等编程语言在
DXF
文件
处理
中
的应用。每种语言和图形库都有其特定的优势和适用场景。AutoLISP在Auto
CAD
定制
中
占据优势,C++以其性能著称,而.NET则提供了易用性和灵活性。选择合适的工具将大大提高
DXF
处理项目的效率和质量。在下一章
中
,我们将探索实用工具在
DXF
文件
处理
中
的作用,包括如何利用这些工具解决日常的
DXF
处理任务。在进行
DXF
文件
处理时,编程不是唯一的解决方案。存在多种实用工具可以简化
DXF
文件
的处理和管理。
使用C#从
DXF
文件
中
提取圆形坐标
本文还有配套的精品资源,点击获取 简介:
DXF
文件
是用于二维绘图
数据
交换的格式,C#可利用net
Dxf
库处理
DXF
文件
以
读取
圆坐标。本教程介绍如何安装并使用net
Dxf
库来解析
DXF
文件
中
的圆形实体,以及如何将
读取
到的圆心坐标和半径
绘制
到图形界面上。涉及步骤包括加载
DXF
文件
、遍历实体、筛选圆形、
绘制
圆形坐标,并介绍了如何更新UI以显示坐标。 1. C#
读取
DXF
文件
...
图形处理/算法
19,472
社区成员
50,678
社区内容
发帖
与我相关
我的任务
图形处理/算法
VC/MFC 图形处理/算法
复制链接
扫一扫
分享
社区描述
VC/MFC 图形处理/算法
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章