基于OCC的阿基米德螺旋线

 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);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值