Standard_Real aRadius = 3.0;
Standard_Real aPitch = 1.0;
// the pcurve is a 2d line in the parametric space.
gp_Lin2d aLine2d(gp_Pnt2d(0.0, 0.0), gp_Dir2d(aRadius, aPitch));
Handle(Geom2d_TrimmedCurve) aSegment = GCE2d_MakeSegment(aLine2d, 0.0, M_PI * 2.0).Value();
Handle(Geom_ConicalSurface) aCylinder = new Geom_ConicalSurface(gp::XOY(), M_PI / 6.0, aRadius);
TopoDS_Edge aHelixEdge = BRepBuilderAPI_MakeEdge(aSegment, aCylinder, 0.0, 12.0 * M_PI).Edge();
Handle(AIS_Shape) aisHelix = new AIS_Shape(aHelixEdge);
aisHelix->SetColor(Quantity_Color(Quantity_NOC_BLUE));
myContext->Display(aisHelix, 1);
//创建网格
BRepMesh_IncrementalMesh SelectShapeMesher(aHelixEdge, 0.1);
//消隐线算法
Handle(HLRBRep_PolyAlgo) aPolyAlgo = new HLRBRep_PolyAlgo();
aPolyAlgo->Load(aHelixEdge);
aPolyAlgo->Projector(HLRAlgo_Projector(gp::XOY()));
aPolyAlgo->Update();
//转化
HLRBRep_PolyHLRToShape aPolyHLRToShape;
aPolyHLRToShape.Update(aPolyAlgo);
TopoDS_Shape ResultShape = aPolyHLRToShape.VCompound();
Handle(AIS_Shape) temp = new AIS_Shape(ResultShape);
myContext->Display(temp, 1);
基于OCC的阿基米德螺旋线
最新推荐文章于 2024-11-19 18:35:13 发布