[发明专利]一种工件表面轮廓自适应离散方法在审
| 申请号: | 202210117507.X | 申请日: | 2022-02-08 |
| 公开(公告)号: | CN114491865A | 公开(公告)日: | 2022-05-13 |
| 发明(设计)人: | 张勇;蒋栓栓;葛家顺 | 申请(专利权)人: | 合肥工业大学 |
| 主分类号: | G06F30/17 | 分类号: | G06F30/17;G06F30/20 |
| 代理公司: | 石家庄嘉宏智信知识产权代理有限公司 13160 | 代理人: | 李兵 |
| 地址: | 230009 安徽省合*** | 国省代码: | 安徽;34 |
| 权利要求书: | 查看更多 | 说明书: | 查看更多 |
| 摘要: | |||
| 搜索关键词: | 一种 工件 表面 轮廓 自适应 离散 方法 | ||
1.一种工件表面轮廓自适应离散方法,其特征在于:所述工件表面轮廓自适应离散方法包括以下步骤:
S1:先进行模型的读取,首先定义读取文件的格式为STLControl_Reader;然后使用ReadFile()方法加载文件,文件读取成功返回True,否则返回false;接着转换CAD模型中的所有实体,转换为拓扑形状,模型数据储存到TopoDS_Shape类,数据储存到定义的拓扑类型的哈希表中;最后将TopoDS_Shape类型的对象转换为可交互操作的AIS_Shape类型的对象;
S2:再进行曲面的选取,利用OpenCASCADE可视化模块中的AIS_InteractiveContext类实现曲面的选取;首先通过AIS_InteractiveContext::ActivateStandardMode确定拾取的类型为TopAbs_FACE类型;然后通过AIS_InteractiveContext::SetSelected将选择的曲面加入到队列中,通过AIS_InteractiveContext::HightSelected对拾取的面进行高亮显示,建立TopoDS_shape类型的vector容器,通过AIS_InteractiveContext::SelectedShape从队列中取出拾取的面储存到vector容器中;
S3:之后进行环的选取,利用OpenCASCADE的建模数据模块中的TopExp类实现对环的选取;首先从TopoDS_shape的vdector数组中取出选取的曲面m_selshape,然后对TopExP::MapShape进行初始化,设定遍历操作的对象为m_selshape,遍历的类型为TopAbs_WIRE,遍历所得的所有环储存到TopTools_IndexedMapOfShape图中;利用OpenCASCADE的建模算法模块中的BRepGProp::LinearProperties计算遍历所得环的弧长,比较每一段弧长的大小,取得弧长最大环Max_wire;
S4:进行轮廓线的分段
首先对TopExP::MapShape进行初始化,设定遍历的操作对象为Max_wire,遍历的类型为TopAbs_EDGE,遍历所得的所有边储存到TopTools_IndexedMapOfShape图中;根据直线,圆弧,B样条曲线对遍历所得的所有边进行分类;首先确定所有边中的直线,空间中直线的表达式为:
p=p(u)=[x(u),y(u),z(u)],u∈[u0,un];
S5:通过BRepAdaptor_Curve获取直线的参数域,按照u0,(u0+un)/2,un对参数域进行划分,分别计算直线在u0,(u0+un)/2,un处的切向量;分别比较三处切向量的模长与向量角是否相等;如果三处的模长,向量角均相等,则获取的这条边为直线,计算直线在u0,un处的x,y,z值;否则进入下一个判断语句,判断其是否为圆弧;空间中圆弧的表达式为:
C=C(u)=[x(u),y(u)z(u)],u∈[u0,un];
S6:同样通过BRepAdaptor_Curve获取曲线的参数域,随机选取参数域中的参数值u0,u1,…,u5,计算x(u0),y(u0),z(u0)…x(un),y(un),z(un)等坐标值;通过这种方法我们随机获得了圆弧上六组坐标点的值;六组坐标点分别为:
P0(x0,y0,z0),P1(x1,y1,z1),p2(x2,y2,z2),…,P5(x5,y5,z5);取前三组坐标构成一段圆弧,后三组坐标构成一段圆弧,分别计算得到圆弧的圆心D0,D1,半径R0,R1;设定圆心的偏离误差qc=0.01,半径容许误差qr=0.001;比较圆心D1相对于D0的偏离是否在偏离误差内,比较R1相对于R0的误差是否在容许误差内;
S7:进行B样条曲线的离散,所述B样条曲线的离散为自适应的B样条曲线离散算法,采样点合理地分布在曲率变化不大和曲率变化较大的区域,满足轮廓的变化特征;
首先通过BRepAdaptor_Curve获取曲线的参数域,对曲线的参数域进行等参划分,根据等参划分所得的参数值计算B样条曲线上型值点的值;根据计算所得型值点的值反求B样条曲线的控制点Pi以及样条基函数Ni,k(t);通过积分法计算B样条曲线的弧长L;
S8:接着根据弧长的步长以及曲线的弧长L确定离散点的节点矢量t,进而确定离散点的位置;若要想求得节点矢量t,首先要确定节点t所在的节点区间,假定t为第n个离散点,第n-1个离散点对应的节点区间为[tm-1,tm),n个离散点,n个离散点到起点的弧长为Ln=n*s,
B样条曲线在[0,tm)上的弧长为如果则离散点t可能在节点区间[tm,tm+1)上;计算B样条曲线在[0,tm+1)上的弧长如果则离散点t在节点区间[tm,tm+1)上;
S9:接着遍历等弧长离散所得离散点,所有离散点储存到gp_pnt类型的容器中,从容器中依次取出两点对B样条曲线进行分段,假设有n个离散点,则B样条曲线被分为(n-1)段,分别取(n-1)段曲线的首端点P1,中点P3,末端点P2;
S10:最后依次取出分段曲线L1,L2...Ln-1,首先将曲线L1以及曲线的两端点压入栈中,然后记录曲线的两端点,接着判断栈是否为空,若为空输出采样点Pi,不为空计算当前曲线的中点,角度偏差θ和曲率偏差α,若θ>θb,α>αb,取曲线的中点,将曲线分成两段,继续压入栈中,若θ<θb,α<αb,判断栈是否为空。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于合肥工业大学,未经合肥工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202210117507.X/1.html,转载请声明来源钻瓜专利网。





