MantisBT - Open CASCADE | View Issue Details |
| ID | Project | Category | View Status | Date Submitted | Last Update | 0031296 | Open CASCADE | [OCCT] OCCT:Modeling Algorithms | public | 2020-01-13 14:09 | 2020-01-22 10:11 |
| Reporter | szy | | Assigned To | bugmaster | | Priority | normal | Severity | minor | | Status | closed | Resolution | no change required | | Platform | | OS | | OS Version | | Product Version | [OCCT] 7.4.0 | | Target Version | [OCCT] 7.5.0 | Fixed in Version | | | Test case number | |
| Summary | 0031296: Possible bug in BRepBuilderAPI_MakeFace | Description | Complaint from the customer.
"There is a critical bug that we saw in generating face from wire that includes segments constructed by 3 points arc. We managed to isolate this bug into the sample project in C++.
So, the wire itself is good, but the face is bad. The interesting/weird thing is that when we take the face and make a prism with (BRepPrimAPI_MakePrism) we get it good again.
We need a solution for that ASAP. Version 7.3 works well with this code."
| Steps To Reproduce | BRepBuilderAPI_MakeWire makeWire;
gp_Pnt2d P1(-103.26571872383029, 39.221900326227335);
gp_Pnt2d P2(-102.8970266913477, 38.772686946689618);
gp_Pnt2d P3(-102.34091531178649, 38.603966442024792);
gp_Pnt2d P4(-102.34091531178649, 37.603966442024792);
gp_Pnt2d P5(-103.45258251508518, 37.941238899401739);
gp_Pnt2d P6(-104.18959825634157, 38.83921689386225);
Handle(Geom2d_Curve) C = GCE2d_MakeArcOfCircle(P1, P2, P3).Value();
BRepBuilderAPI_MakeEdge2d makeEdge2D(C);
makeWire.Add(makeEdge2D.Edge());
makeEdge2D.Init(GCE2d_MakeSegment(P3, P4).Value());
makeWire.Add(makeEdge2D.Edge());
C = GCE2d_MakeArcOfCircle(P4, P5, P6).Value();
makeEdge2D.Init(C);
makeWire.Add(makeEdge2D.Edge());
makeEdge2D.Init(GCE2d_MakeSegment(P6, P1).Value());
makeWire.Add(makeEdge2D.Edge());
Handle(AIS_Shape) ais = new AIS_Shape(makeWire.Wire());
myAISContext->SetMaterial(ais, Graphic3d_NOM_ALUMINIUM, Standard_False);
myAISContext->SetDisplayMode(ais, 1, Standard_False);
myAISContext->Display(ais, Standard_True);
BRepBuilderAPI_MakeFace fb(makeWire.Wire());
ais = new AIS_Shape(fb.Face());
myAISContext->SetMaterial(ais, Graphic3d_NOM_BRONZE, Standard_False);
myAISContext->SetDisplayMode(ais, 1, Standard_False);
myAISContext->Display(ais, Standard_True);
| Additional information and documentation updates | | Tags | No tags attached. | Relationships | | Attached Files | |
| Issue History | Date Modified | Username | Field | Change | 2020-01-13 14:09 | szy | New Issue | | 2020-01-13 14:09 | szy | Assigned To | => msv | 2020-01-14 12:23 | utverdov | Assigned To | msv => ifv | 2020-01-14 14:32 | ifv | Note Added: 0089884 | | 2020-01-14 14:32 | ifv | Assigned To | ifv => msv | 2020-01-14 14:32 | ifv | Status | new => resolved | 2020-01-14 15:18 | msv | Note Added: 0089886 | | 2020-01-14 15:18 | msv | Assigned To | msv => bugmaster | 2020-01-14 15:18 | msv | Status | resolved => feedback | 2020-01-14 15:19 | msv | Resolution | open => no change required | 2020-01-22 10:11 | bugmaster | Status | feedback => closed |
Notes |
|
(0089884)
|
ifv
|
2020-01-14 14:32
|
|
The code has a drawback: edges has no 3d curves, so result face, as well as initial wire are wrong.
To fix this it is enough to build 3d curves by method BRepLib::BuildCurves3d(...):
TopoDS_Wire aWire = makeWire.Wire();
BRepLib::BuildCurves3d(aWire);
and use updated wire to build face:
BRepBuilderAPI_MakeFace fb(aWire); |
|
|
(0089886)
|
msv
|
2020-01-14 15:18
|
|
It is not a bug. Please close. |
|
|