mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-09-03 14:10:33 +03:00
0029234: BRepOffsetAPI_NormalProjection produces INTERNAL edges and vertices
Make the algorithm BRepOffsetAPI_NormalProjection use section operation instead of common to get the edge-result of projection to be in face restrictions. Correct Boolean operation algorithm to produce correctly oriented result in the case of common between face and edge. The algorithm ShapeUpgrade_UnifySameDomain has been patched to correctly gather same domain faces in a compound. The TCL script snowflake.tcl has been corrected to get rid of dependence on the order of edges in the result of Boolean operation.
This commit is contained in:
@@ -24,7 +24,7 @@
|
||||
#include <BRepAdaptor_Surface.hxx>
|
||||
#include <BRepAlgo_NormalProjection.hxx>
|
||||
#include <BRepAlgo_SequenceOfSequenceOfInteger.hxx>
|
||||
#include <BRepAlgoAPI_Common.hxx>
|
||||
#include <BRepAlgoAPI_Section.hxx>
|
||||
#include <BRepLib_MakeEdge.hxx>
|
||||
#include <BRepLib_MakeVertex.hxx>
|
||||
#include <BRepLib_MakeWire.hxx>
|
||||
@@ -481,9 +481,9 @@ void BRepAlgo_NormalProjection::SetDefaultParams()
|
||||
if (!Degenerated) {
|
||||
// Perform Boolean COMMON operation to get parts of projected edge
|
||||
// inside the face
|
||||
BRepAlgoAPI_Common aCommon(Faces->Value(j), prj);
|
||||
if (aCommon.IsDone()) {
|
||||
const TopoDS_Shape& aRC = aCommon.Shape();
|
||||
BRepAlgoAPI_Section aSection(Faces->Value(j), prj);
|
||||
if (aSection.IsDone()) {
|
||||
const TopoDS_Shape& aRC = aSection.Shape();
|
||||
//
|
||||
TopExp_Explorer aExpE(aRC, TopAbs_EDGE);
|
||||
for (; aExpE.More(); aExpE.Next()) {
|
||||
|
Reference in New Issue
Block a user