创建通过一组曲线和点的曲面,眼镜片设计和加工软件
在我们一般人的认知中,眼镜片无非就是近视眼睛片、老花眼镜片,或者平光镜片。而真正进入这个行业,才了解到原来眼镜片会有这么多的种类,面型除了球光、散光,还有环焦、离焦、渐进、非球等,还有各种功能的镀膜。
所有类型镜片制作的第一步,就是要把面型加工出来,比如在一个毛坯片上加工出近似500度,散光600度。现有加工用机床中,高端的是进口的国外机床,如劳尔,中低端即使国产的也很少。而面型设计软件和加工数据生成cad、cam软件
更是了了无几,完全被收费昂贵的国外品牌控制。中国作为眼睛片第一大生产国,镜片行业竟然没有有竞争力的软硬件产品,感觉不可思议。
两年前我们开发了一款中端镜片铣磨设备,在克服了各种困难后,现在终于可以放心销售了,同时也获得了用户的好评。
下面是软件的几个界面的截图:
下面是加工过程的截图:
在开发这个cad/cam过程中,首要的是根据设定的参数,构建镜片曲面。球光散光环焦镜片是通过0度和90度曲线插补出一个曲面,下面是我使用Opencascade创建环焦面型的核心代码。
1.样条曲线1(0度)
使用occ函数GeomAPI_Interpolate,有一组点创建一个样条曲线。
2.样条曲线2(90度)
同样使用occ函数GeomAPI_Interpolate,有一组点创建一个样条曲线。
3.样条曲线3(最外圈边界)
根据给定参数,计算出边界的插补点(没1度计算一个点)。也是使用GeomAPI_Interpolate创建一个样条曲线。
4.创建曲面
GeomPlate_BuildPlateSurface BPSurf(3, 15, 2); Handle(BRepAdaptor_HCurve) C1 = new BRepAdaptor_HCurve(BRepAdaptor_Curve(BRepBuilderAPI_MakeEdge(aBSpline1))); Handle(BRepFill_CurveConstraint) Cont1 = new BRepFill_CurveConstraint(C1, 0); BPSurf.Add(Cont1); Handle(BRepAdaptor_HCurve) C2 = new BRepAdaptor_HCurve(BRepAdaptor_Curve(BRepBuilderAPI_MakeEdge(aBSpline2))); Handle(BRepFill_CurveConstraint) Cont2 = new BRepFill_CurveConstraint(C2, 0); BPSurf.Add(Cont2); Handle(BRepAdaptor_HCurve) C3 = new BRepAdaptor_HCurve(BRepAdaptor_Curve(BRepBuilderAPI_MakeEdge(aBSpline3))); Handle(BRepFill_CurveConstraint) Cont3 = new BRepFill_CurveConstraint(C3, 0); BPSurf.Add(Cont3); BPSurf.Perform(); Standard_Integer MaxSeg = 9; Standard_Integer MaxDegree = 8; Standard_Integer CritOrder = 0; Standard_Real dmax, Tol = 0.0001; Handle(GeomPlate_Surface) PSurf = BPSurf.Surface(); dmax = Max(0.0001, 10 * BPSurf.G0Error()); GeomPlate_MakeApprox Mapp(PSurf, Tol, MaxSeg, MaxDegree, dmax, CritOrder); aBSplineSurface = Mapp.Surface();