View Issue Details
ID | Project | Category | View Status | Date Submitted | Last Update |
---|---|---|---|---|---|
0029649 | Community | OCCT:Modeling Algorithms | public | 2018-03-26 17:12 | 2018-03-26 17:12 |
Reporter | vengelgardt | Assigned To | |||
Priority | normal | Severity | minor | ||
Status | new | Resolution | open | ||
Platform | Windows | OS | VC++ 2015 | ||
Product Version | 7.2.0 | ||||
Summary | 0029649: Sweeping circle with line-spline profile emits 'bad' shape | ||||
Description | Swept shape is of type shell and has faces. But faces has invalid topology (wires missing some edges). | ||||
Steps To Reproduce | Paste 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); | ||||
Tags | No tags attached. | ||||
Test case number | |||||
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 |