//=======================================================================
BRepMesh_CurveTessellator::BRepMesh_CurveTessellator(
const IMeshData::IEdgeHandle& theEdge,
- const IMeshTools_Parameters& theParameters,
- const Standard_Integer theMinPointsNb)
+ const IMeshTools_Parameters& theParameters)
: myDEdge(theEdge),
myParameters(theParameters),
myEdge(theEdge->GetEdge()),
- myCurve(myEdge),
- myMinPointsNb (theMinPointsNb)
+ myCurve(myEdge)
{
init();
}
const IMeshData::IEdgeHandle& theEdge,
const TopAbs_Orientation theOrientation,
const IMeshData::IFaceHandle& theFace,
- const IMeshTools_Parameters& theParameters,
- const Standard_Integer theMinPointsNb)
+ const IMeshTools_Parameters& theParameters)
: myDEdge(theEdge),
myParameters(theParameters),
myEdge(TopoDS::Edge(theEdge->GetEdge().Oriented(theOrientation))),
- myCurve(myEdge, theFace->GetFace()),
- myMinPointsNb (theMinPointsNb)
+ myCurve(myEdge, theFace->GetFace())
{
init();
}
myEdgeSqTol = BRep_Tool::Tolerance (myEdge);
myEdgeSqTol *= myEdgeSqTol;
- Standard_Integer aMinPntThreshold = 2;
+ Standard_Integer aMinPntNb = 2;
switch (myCurve.GetType())
{
case GeomAbs_Circle:
case GeomAbs_Ellipse:
case GeomAbs_Parabola:
case GeomAbs_Hyperbola:
- aMinPntThreshold = 4;
+ aMinPntNb = 4;
break;
default:
break;
}
- const Standard_Integer aMinPntNb = Max (myMinPointsNb, aMinPntThreshold); //OCC287
myDiscretTool.Initialize (myCurve,
myCurve.FirstParameter(), myCurve.LastParameter(),
aPreciseAngDef, aPreciseLinDef, aMinPntNb,
//! Constructor.
Standard_EXPORT BRepMesh_CurveTessellator(
const IMeshData::IEdgeHandle& theEdge,
- const IMeshTools_Parameters& theParameters,
- const Standard_Integer theMinPointsNb = 2);
+ const IMeshTools_Parameters& theParameters);
//! Constructor.
Standard_EXPORT BRepMesh_CurveTessellator (
const IMeshData::IEdgeHandle& theEdge,
const TopAbs_Orientation theOrientation,
const IMeshData::IFaceHandle& theFace,
- const IMeshTools_Parameters& theParameters,
- const Standard_Integer theMinPointsNb = 2);
+ const IMeshTools_Parameters& theParameters);
//! Destructor.
Standard_EXPORT virtual ~BRepMesh_CurveTessellator ();
const IMeshTools_Parameters& myParameters;
TopoDS_Edge myEdge;
BRepAdaptor_Curve myCurve;
- Standard_Integer myMinPointsNb;
GCPnts_TangentialDeflection myDiscretTool;
TopoDS_Vertex myFirstVertex;
TopoDS_Vertex myLastVertex;
//=======================================================================
Handle(IMeshTools_CurveTessellator) BRepMesh_EdgeDiscret::CreateEdgeTessellator(
const IMeshData::IEdgeHandle& theDEdge,
- const IMeshTools_Parameters& theParameters,
- const Standard_Integer theMinPointsNb)
+ const IMeshTools_Parameters& theParameters)
{
- return new BRepMesh_CurveTessellator(theDEdge, theParameters, theMinPointsNb);
+ return new BRepMesh_CurveTessellator(theDEdge, theParameters);
}
//=======================================================================
const IMeshData::IEdgeHandle& theDEdge,
const TopAbs_Orientation theOrientation,
const IMeshData::IFaceHandle& theDFace,
- const IMeshTools_Parameters& theParameters,
- const Standard_Integer theMinPointsNb)
+ const IMeshTools_Parameters& theParameters)
{
return theDEdge->GetSameParam() ?
- new BRepMesh_CurveTessellator(theDEdge, theParameters, theMinPointsNb) :
- new BRepMesh_CurveTessellator(theDEdge, theOrientation, theDFace, theParameters, theMinPointsNb);
+ new BRepMesh_CurveTessellator(theDEdge, theParameters) :
+ new BRepMesh_CurveTessellator(theDEdge, theOrientation, theDFace, theParameters);
}
//=======================================================================
//! Creates instance of free edge tessellator.
Standard_EXPORT static Handle(IMeshTools_CurveTessellator) CreateEdgeTessellator(
const IMeshData::IEdgeHandle& theDEdge,
- const IMeshTools_Parameters& theParameters,
- const Standard_Integer theMinPointsNb = 2);
+ const IMeshTools_Parameters& theParameters);
//! Creates instance of edge tessellator.
Standard_EXPORT static Handle(IMeshTools_CurveTessellator) CreateEdgeTessellator(
const IMeshData::IEdgeHandle& theDEdge,
const TopAbs_Orientation theOrientation,
const IMeshData::IFaceHandle& theDFace,
- const IMeshTools_Parameters& theParameters,
- const Standard_Integer theMinPointsNb = 2);
+ const IMeshTools_Parameters& theParameters);
//! Creates instance of tessellation extractor.
Standard_EXPORT static Handle(IMeshTools_CurveTessellator) CreateEdgeTessellationExtractor(
void operator()(const IMeshData::IEdgePtr& theDEdge) const
{
const IMeshData::IEdgeHandle aDEdge = theDEdge;
-
- Standard_Integer aPointsNb = aDEdge->GetCurve()->ParametersNb();
-
aDEdge->Clear(Standard_True);
aDEdge->SetDeflection(Max(aDEdge->GetDeflection() / 3., Precision::Confusion()));
- for (Standard_Integer aPCurveIt = 0; aPCurveIt < aDEdge->PCurvesNb(); ++aPCurveIt)
- {
- const IMeshData::IPCurveHandle& aPCurve = aDEdge->GetPCurve(aPCurveIt);
- const IMeshData::IFaceHandle aDFace = aPCurve->GetFace();
-
- // Check that outer wire contains 2 edges or less and add an additional point.
- const IMeshData::IWireHandle& aDWire = aDFace->GetWire(0);
- if (aDWire->EdgesNb() <= 2)
- {
- ++aPointsNb;
- break;
- }
- }
-
const IMeshData::IPCurveHandle& aPCurve = aDEdge->GetPCurve(0);
const IMeshData::IFaceHandle aDFace = aPCurve->GetFace();
Handle(IMeshTools_CurveTessellator) aTessellator =
BRepMesh_EdgeDiscret::CreateEdgeTessellator(
- aDEdge, aPCurve->GetOrientation(), aDFace,
- myParameters, aPointsNb);
+ aDEdge, aPCurve->GetOrientation(), aDFace, myParameters);
BRepMesh_EdgeDiscret::Tessellate3d(aDEdge, aTessellator, Standard_False);
BRepMesh_EdgeDiscret::Tessellate2d(aDEdge, Standard_False);
+puts "TODO 25044 ALL: SelfIntersectingWire"
+puts "TODO 25044 ALL: Number of triangles is equal to 0"
+
puts "======="
puts "0025044: BRepMesh tweaks"
puts "======="
+puts "TODO 25044 ALL: SelfIntersectingWire"
+puts "TODO 25044 ALL: Number of triangles is equal to 0"
+
puts "======="
puts "0025044: BRepMesh tweaks"
puts "======="
puts "======="
puts ""
-puts "TODO OCC25588 All: Not connected mesh inside face 893"
-puts "TODO OCC25588 All: Not connected mesh inside face 1094"
-
pload XDE
stepread [locate_data_file Median_cx-fs01_bicycle.stp] a *
puts "======="
puts ""
-restore [locate_data_file bug28500_shape_mesh_artifact.brep] result
+puts "TODO CR28500 ALL: Artifact in shaded view of the shape"
+puts "TODO CR30056 ALL: Meshing statuses: SelfIntersectingWire Failure Reused"
-tclean result
-incmesh result 0.01
+restore [locate_data_file bug28500_shape_mesh_artifact.brep] a
+
+incmesh a 0.01
vinit
vsetdispmode 1
-vdefaults -autoTriang 0
-vdisplay result
+vdisplay a
vfit
-set log [tricheck result]
-if { [llength $log] != 0 } {
- puts "Error : Mesh contains faulties"
+set x 150
+set y 150
+if { [checkcolor $x $y 0 1 0] == 1 } {
+ puts "Error: Artifact in shaded view of the shape"
}
checkview -screenshot -3d -path ${imagedir}/${test_image}.png
restore [locate_data_file bug32692.brep] s
incmesh s 0.01 -parallel
-checktrinfo s -nod 7389 -tri 7419 -empty 9 -face 309
+checktrinfo s -nod 7427 -tri 7457 -empty 9 -face 309
puts "============"
puts ""
+puts "REQUIRED All: Meshing statuses: SelfIntersectingWire Failure"
+
set viewname "vfront"
-set length 26411.2
+set length 26411.7
restore [locate_data_file bug23625_a1.brep] a
+
+# workaround bug 0031426 until fix
+vinit View1
+vdefaults -autoTriang 0
+incmesh a 7.6
+
COMPUTE_HLR $viewname $algotype