View Issue Details

IDProjectCategoryView StatusLast Update
0029649CommunityOCCT:Modeling Algorithmspublic2018-03-26 17:12
Reportervengelgardt Assigned Tomsv 
PrioritynormalSeverityminor 
Status newResolutionopen 
PlatformWindowsOSVC++ 2015 
Product Version7.2.0 
Summary0029649: Sweeping circle with line-spline profile emits 'bad' shape
DescriptionSwept shape is of type shell and has faces. But faces has invalid topology (wires missing some edges).
Steps To ReproducePaste to CModelingDoc::OnWire() and include BRepOffsetAPI_MakePipeShell

TopoDS_Wire profile;

    {

        const gp_Ax2 axis(gp_Pnt(-0.15, 0, 0), gp_Vec(0, 0, 1));
        BRepBuilderAPI_MakeEdge edge_maker(gp_Circ(axis, 0.1));
        BRepBuilderAPI_MakeWire wire_maker;

        wire_maker.Add(edge_maker.Edge());

        profile = wire_maker.Wire();
    }

    TopoDS_Wire path;

    {
        BRep_Builder builder;
        TColStd_Array1OfReal knots(1, 5);
        knots(1) = 0;
        knots(2) = 0.5;
        knots(3) = 0.834183371529676032096745;
        knots(4) = 1.16779311506992100611058;
        knots(5) = 1.55241841099978783447;
        TColgp_Array1OfPnt poles(1, 7);
        poles(1) = gp_Pnt(-0.14, 0, -0.5);
        poles(2) = gp_Pnt(-0.131694509357839523167044, 0, -0.599585362986007952557088);
        poles(3) = gp_Pnt(-0.162361303578500759670078, 0, -0.943530025540892380853109);
        poles(4) = gp_Pnt(-0.0944058869557409252593061, 0, -1.37866292965340697662668);
        poles(5) = gp_Pnt(0.32856212575002941012059, 0, -1.3869473003213965700553);
        poles(6) = gp_Pnt(0.556115678569026772315453, -0, -1.23659945590728770348221);
        poles(7) = gp_Pnt(0.6, 0, -1);
        TColStd_Array1OfInteger mults(1, 5);
        mults(1) = 4;
        mults(2) = 1;
        mults(3) = 1;
        mults(4) = 1;
        mults(5) = 4;
        bool is_periodic = 0;
        int degree = 3;
        Handle(Geom_BSplineCurve) spl = new Geom_BSplineCurve(poles, knots, mults, degree, is_periodic);

        TopoDS_Vertex verts[3];

        builder.MakeVertex(verts[0], gp_Pnt(-0.14, 0, 0), Precision::Confusion());
        builder.MakeVertex(verts[1], gp_Pnt(-0.14, 0, -0.5), Precision::Confusion());
        builder.MakeVertex(verts[2], gp_Pnt(0.6, 0, -1), Precision::Confusion());


        BRepBuilderAPI_MakeEdge line_e(verts[0], verts[1]);
        BRepBuilderAPI_MakeEdge spl_e(spl, verts[1], verts[2]);
        BRepBuilderAPI_MakeWire wire_maker;

        wire_maker.Add(line_e.Edge());
        wire_maker.Add(spl_e.Edge());

        path = wire_maker.Wire();
    }

    BRepOffsetAPI_MakePipeShell sweep(path);

    sweep.SetTransitionMode(BRepBuilderAPI_TransitionMode::BRepBuilderAPI_RightCorner);
    sweep.Add(profile, Standard_False, Standard_False);
    sweep.Build();

    Handle(AIS_Shape) ais_profile = new AIS_Shape(profile);
    myAISContext->SetColor(ais_profile,Quantity_NOC_GREEN,Standard_False);
    myAISContext->Display(ais_profile,Standard_False);

    Handle(AIS_Shape) ais_path = new AIS_Shape(path);
    myAISContext->SetColor(ais_path,Quantity_NOC_GREEN,Standard_False);
    myAISContext->Display(ais_path,Standard_False);

    Handle(AIS_Shape) ais_prism = new AIS_Shape(sweep.Shape());
    myAISContext->SetColor(ais_prism,Quantity_NOC_RED,Standard_False);
    myAISContext->SetTransparency(ais_prism, 0.6, Standard_False);
    myAISContext->Display(ais_prism,Standard_False);
TagsNo tags attached.
Test case number

Attached Files

  • c119e-clip-14kb.png (14,211 bytes)

Activities

vengelgardt

2018-03-26 17:12

reporter  

c119e-clip-14kb.png (14,211 bytes)

Issue History

Date Modified Username Field Change
2018-03-26 17:12 vengelgardt New Issue
2018-03-26 17:12 vengelgardt Assigned To => msv
2018-03-26 17:12 vengelgardt File Added: c119e-clip-14kb.png