1
0
mirror of https://git.dev.opencascade.org/repos/occt.git synced 2025-08-19 13:40:49 +03:00

0029523: Problem with BRepOffsetAPI_MakeEvolved

1. New class BRepFill_Voluved has been created in order to provide new OCCT-algorithm combining BRepFill_PipeShell and BOPAlgo_MakerVolume.

2. The interface of DRAW-command "evolved" has been corrected.

3. DRAW-command "evolvedsolid" has been deleted. Currently it can be replaced with DRAW-command "evolved" with specific options.

4. Some test cases have been corrected.

5. Testgrid "evolved" has been created.
This commit is contained in:
nbv
2018-03-06 13:31:18 +03:00
parent 4dff80e12a
commit 570c74d4f7
48 changed files with 2542 additions and 79 deletions

View File

@@ -692,7 +692,7 @@ void BRepFill_PipeShell::SetForceApproxC1(const Standard_Boolean ForceApproxC1)
//function : Build
//purpose : Construct the Shell and the history
//=======================================================================
Standard_Boolean BRepFill_PipeShell::Build()
Standard_Boolean BRepFill_PipeShell::Build()
{
Standard_Boolean Ok;
Standard_Real FirstS, LastS;
@@ -746,8 +746,9 @@ void BRepFill_PipeShell::SetForceApproxC1(const Standard_Boolean ForceApproxC1)
MkSw.SetTolerance(myTol3d, myBoundTol, 1.e-5, myTolAngular);
MkSw.SetAngularControl(angmin, angmax);
MkSw.SetForceApproxC1(myForceApproxC1);
MkSw.SetBounds(TopoDS::Wire(myFirst),
TopoDS::Wire(myLast));
MkSw.SetBounds(TopoDS::Wire(myFirst),
TopoDS::Wire(myLast));
GeomAbs_Shape theContinuity = GeomAbs_C2;
if (myTrihedron == GeomFill_IsDiscreteTrihedron)
theContinuity = GeomAbs_C0;

View File

@@ -168,6 +168,10 @@ public:
Standard_EXPORT void Simulate (const Standard_Integer NumberOfSection, TopTools_ListOfShape& Sections);
//! Builds the resulting shape (redefined from MakeShape).
//! If theIsToCheckValidity == FALSE then BRepFill_Sweep algorithm
//! is allowed to create invalid faces (having self-interferences).
//! It is considered for them that such faces will be processed and
//! fixed by the high-level algorithms
Standard_EXPORT Standard_Boolean Build();
//! Transform the sweeping Shell in Solid.

View File

@@ -914,7 +914,7 @@ static Standard_Boolean Filling(const TopoDS_Shape& EF,
// Control the direction of the rotation
Standard_Boolean ToReverseResult = Standard_False;
gp_Vec d1u;
d1u = Surf->DN(0, (f1+l1)/2, 1, 0);
d1u = Surf->DN(0, aPrm[aMaxIdx], 1, 0);
if (d1u.Angle(TangentOnPart1) > M_PI/2) { //Invert everything
ToReverseResult = Standard_True;
/*
@@ -1815,8 +1815,6 @@ BRepFill_Sweep::BRepFill_Sweep(const Handle(BRepFill_SectionLaw)& Section,
const Standard_Boolean WithKPart) :
isDone(Standard_False),
KPart(WithKPart)
{
mySec = Section;
myLoc = Location;
@@ -3353,7 +3351,8 @@ TopoDS_Shape BRepFill_Sweep::Tape(const Standard_Integer Index) const
// Filling
B = Filling(It1.Value(), myFaces->Value(ii, I1),
It2.Value(), myFaces->Value(ii, I2),
myVEdgesModified, myTol3d, Axe, T1, Bord1, Bord2, FF);
myVEdgesModified, myTol3d, Axe, T1,
Bord1, Bord2, FF);
if (B) {
myAuxShape.Append(FF);

View File

@@ -80,7 +80,7 @@ public:
//! to be C0.
Standard_EXPORT void SetForceApproxC1 (const Standard_Boolean ForceApproxC1);
//! Build the Sweeep Surface
//! Build the Sweep Surface
//! Transition define Transition strategy
//! Approx define Approximation Strategy
//! - GeomFill_Section : The composed Function Location X Section
@@ -118,13 +118,6 @@ public:
protected:
private:
Standard_EXPORT Standard_Boolean CorrectApproxParameters();
Standard_EXPORT Standard_Boolean BuildWire (const BRepFill_TransitionStyle Transition);
@@ -142,6 +135,13 @@ private:
Standard_EXPORT void RebuildTopOrBottomEdge (const TopoDS_Edge& aNewEdge, TopoDS_Edge& anEdge, TopTools_MapOfShape& ReversedEdges) const;
private:
Standard_Boolean isDone;
Standard_Boolean KPart;
Standard_Real myTol3d;
@@ -168,7 +168,6 @@ private:
TopoDS_Wire FirstShape;
TopoDS_Wire LastShape;
};

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,106 @@
// Created on: 2018-03-14
// Created by: Nikolai BUKHALOV
// Copyright (c) 1999-2018 OPEN CASCADE SAS
//
// This file is part of Open CASCADE Technology software library.
//
// This library is free software; you can redistribute it and/or modify it under
// the terms of the GNU Lesser General Public License version 2.1 as published
// by the Free Software Foundation, with special exception defined in the file
// OCCT_LGPL_EXCEPTION.txt. Consult the file LICENSE_LGPL_21.txt included in OCCT
// distribution for complete text of the license and disclaimer of any warranty.
//
// Alternatively, this file may be used under the terms of Open CASCADE
// commercial license or contractual agreement.
#ifndef _BRepFill_Voluved_HeaderFile
#define _BRepFill_Voluved_HeaderFile
#include <Standard.hxx>
#include <Standard_DefineAlloc.hxx>
#include <Standard_Handle.hxx>
#include <TopoDS_Compound.hxx>
#include <TopoDS_Wire.hxx>
#include <TopTools_IndexedMapOfShape.hxx>
#include <TopTools_ListOfShape.hxx>
class BOPAlgo_MakerVolume;
//! Constructs an evolved volume from a spine (wire or face)
//! and a profile ( wire).
class BRepFill_Voluved
{
public:
DEFINE_STANDARD_ALLOC
Standard_EXPORT BRepFill_Voluved() :myErrorStatus(BRepFill_Voluved_Empty),
myFuzzyValue(0.0)
{
}
Standard_EXPORT void Perform(const TopoDS_Wire& theSpine, const TopoDS_Wire& theProfile, const Standard_Real theTolerance, const Standard_Boolean theSolidReq = Standard_True);
Standard_Boolean IsDone(unsigned int* theErrorCode = 0) const
{
if (theErrorCode)
*theErrorCode = myErrorStatus;
return (myErrorStatus == BRepFill_Voluved_OK);
}
//! returns the resulting shape.
const TopoDS_Shape& Shape() const
{
return myResult;
}
protected:
Standard_EXPORT void PerformSweep();
Standard_EXPORT void GetLids();
Standard_EXPORT void BuildSolid();
Standard_EXPORT void RemoveExcessSolids(const TopTools_ListOfShape& theLSplits,
TopoDS_Shape& theShape,
TopTools_ListOfShape& theArgsList,
BOPAlgo_MakerVolume& theMV);
Standard_EXPORT void ExtractOuterSolid(TopoDS_Shape& theShape,
TopTools_ListOfShape& theArgsList);
Standard_EXPORT void GetSpineAndProfile(const TopoDS_Wire& theSpine,
const TopoDS_Wire& theProfile);
private:
enum
{
BRepFill_Voluved_Empty = 0,
BRepFill_Voluved_NotPlanarSpine,
BRepFill_Voluved_SweepError,
BRepFill_Voluved_NoLids,
BRepFill_Voluved_NotSolid,
BRepFill_Voluved_NotVolume,
BRepFill_Voluved_OK = UINT_MAX
} myErrorStatus;
TopoDS_Wire mySpine;
TopoDS_Wire myProfile;
TopoDS_Shape myPipeShell;
TopoDS_Compound myTopBottom; // Lids can be split on several faces
TopoDS_Shape myResult;
Standard_Real myFuzzyValue;
};
#endif // _BRepFill_Voluved_HeaderFile

View File

@@ -83,3 +83,5 @@ BRepFill_TrimShellCorner.hxx
BRepFill_TrimSurfaceTool.cxx
BRepFill_TrimSurfaceTool.hxx
BRepFill_TypeOfContact.hxx
BRepFill_Voluved.cxx
BRepFill_Voluved.hxx

View File

@@ -22,6 +22,8 @@
#include <TopoDS_Face.hxx>
#include <TopoDS_Shape.hxx>
#include <TopoDS_Wire.hxx>
#include <TopoDS_Iterator.hxx>
#include <TopoDS.hxx>
//=======================================================================
//function : BRepOffsetAPI_MakeEvolved
@@ -43,19 +45,29 @@ BRepOffsetAPI_MakeEvolved::BRepOffsetAPI_MakeEvolved(const TopoDS_Wire& Spin
const Standard_Boolean AxeProf,
const Standard_Boolean Solid,
const Standard_Boolean ProfOnSpine,
const Standard_Real Tol)
const Standard_Boolean theIsVolume,
const Standard_Real Tol)
{
gp_Ax3 Axis(gp_Pnt(0.,0.,0.),
gp_Dir(0.,0.,1.),
gp_Dir(1.,0.,0.));
if (theIsVolume)
{
myVolume.Perform(Spine, Profil, Tol);
}
else
{
gp_Ax3 Axis(gp_Pnt(0., 0., 0.),
gp_Dir(0., 0., 1.),
gp_Dir(1., 0., 0.));
if ( !AxeProf) {
Standard_Boolean POS;
BRepFill::Axe(Spine,Profil,Axis,POS,Tol);
if (ProfOnSpine && !POS) return;
if (!AxeProf)
{
Standard_Boolean POS;
BRepFill::Axe(Spine, Profil, Axis, POS, Max(Tol, Precision::Confusion()));
if (ProfOnSpine && !POS) return;
}
myEvolved.Perform(Spine, Profil, Axis, Join, Solid);
}
myEvolved.Perform(Spine,Profil,Axis,Join,Solid);
Build();
Done();
}
@@ -72,20 +84,31 @@ BRepOffsetAPI_MakeEvolved::BRepOffsetAPI_MakeEvolved(const TopoDS_Face& Spin
const Standard_Boolean AxeProf,
const Standard_Boolean Solid,
const Standard_Boolean ProfOnSpine,
const Standard_Real Tol)
const Standard_Boolean theIsVolume,
const Standard_Real Tol)
{
gp_Ax3 Axis(gp_Pnt(0.,0.,0.),
gp_Dir(0.,0.,1.),
gp_Dir(1.,0.,0.));
if (theIsVolume)
{
myVolume.Perform(TopoDS::Wire(TopoDS_Iterator(Spine).Value()), Profil, Tol);
}
else
{
gp_Ax3 Axis(gp_Pnt(0., 0., 0.),
gp_Dir(0., 0., 1.),
gp_Dir(1., 0., 0.));
if ( !AxeProf) {
Standard_Boolean POS;
BRepFill::Axe(Spine,Profil,Axis,POS,Tol);
if (ProfOnSpine && !POS) return;
if (!AxeProf)
{
Standard_Boolean POS;
BRepFill::Axe(Spine, Profil, Axis, POS, Max(Tol, Precision::Confusion()));
if (ProfOnSpine && !POS) return;
}
myEvolved.Perform(Spine, Profil, Axis, Join, Solid);
}
myEvolved.Perform(Spine,Profil,Axis,Join,Solid);
Build();
Done();
}
@@ -107,8 +130,16 @@ const BRepFill_Evolved& BRepOffsetAPI_MakeEvolved::Evolved() const
void BRepOffsetAPI_MakeEvolved::Build()
{
myShape = myEvolved.Shape();
if (myEvolved.IsDone()) Done();
if (myEvolved.IsDone())
{
myShape = myEvolved.Shape();
}
else if (myVolume.IsDone())
{
myShape = myVolume.Shape();
}
Done();
}

View File

@@ -22,6 +22,7 @@
#include <Standard_Handle.hxx>
#include <BRepFill_Evolved.hxx>
#include <BRepFill_Voluved.hxx>
#include <BRepBuilderAPI_MakeShape.hxx>
#include <GeomAbs_JoinType.hxx>
#include <Standard_Boolean.hxx>
@@ -66,7 +67,7 @@ public:
Standard_EXPORT BRepOffsetAPI_MakeEvolved();
Standard_EXPORT BRepOffsetAPI_MakeEvolved(const TopoDS_Wire& Spine, const TopoDS_Wire& Profil, const GeomAbs_JoinType Join = GeomAbs_Arc, const Standard_Boolean AxeProf = Standard_True, const Standard_Boolean Solid = Standard_False, const Standard_Boolean ProfOnSpine = Standard_False, const Standard_Real Tol = 0.0000001);
Standard_EXPORT BRepOffsetAPI_MakeEvolved(const TopoDS_Wire& Spine, const TopoDS_Wire& Profil, const GeomAbs_JoinType Join/* = GeomAbs_Arc*/, const Standard_Boolean AxeProf/* = Standard_True*/, const Standard_Boolean Solid/* = Standard_False*/, const Standard_Boolean ProfOnSpine/* = Standard_False*/, const Standard_Boolean theIsVolume, const Standard_Real Tol/* = Precision::Confusion()*/);
//! These constructors construct an evolved shape by sweeping the profile
//! Profile along the spine Spine.
@@ -88,7 +89,7 @@ public:
//! axis passing along the vertex and the normal to the
//! plane of the spine. At present, this is the only
//! construction type implemented.
Standard_EXPORT BRepOffsetAPI_MakeEvolved(const TopoDS_Face& Spine, const TopoDS_Wire& Profil, const GeomAbs_JoinType Join = GeomAbs_Arc, const Standard_Boolean AxeProf = Standard_True, const Standard_Boolean Solid = Standard_False, const Standard_Boolean ProfOnSpine = Standard_False, const Standard_Real Tol = 0.0000001);
Standard_EXPORT BRepOffsetAPI_MakeEvolved(const TopoDS_Face& Spine, const TopoDS_Wire& Profil, const GeomAbs_JoinType Join/* = GeomAbs_Arc*/, const Standard_Boolean AxeProf/* = Standard_True*/, const Standard_Boolean Solid/* = Standard_False*/, const Standard_Boolean ProfOnSpine/* = Standard_False*/, const Standard_Boolean theIsVolume, const Standard_Real Tol/* = Precision::Confusion()*/);
Standard_EXPORT const BRepFill_Evolved& Evolved() const;
@@ -118,9 +119,8 @@ protected:
private:
BRepFill_Evolved myEvolved;
BRepFill_Voluved myVolume;
};

View File

@@ -33,8 +33,6 @@
//purpose :
//=======================================================================
BRepOffsetAPI_MakePipeShell::BRepOffsetAPI_MakePipeShell(const TopoDS_Wire& Spine)
{
myPipe = new (BRepFill_PipeShell) (Spine);
SetTolerance();
@@ -255,7 +253,7 @@ void BRepOffsetAPI_MakePipeShell::SetMaxSegments(const Standard_Integer NewMaxSe
//function :Build()
//purpose :
//=======================================================================
void BRepOffsetAPI_MakePipeShell::Build()
void BRepOffsetAPI_MakePipeShell::Build()
{
Standard_Boolean Ok;
Ok = myPipe->Build();

View File

@@ -211,7 +211,7 @@ public:
//! discontinuities are treated like round
//! corner. The corner is treated as rotation
//! of the profile around an axis which
//! passes through the point of the spine?s
//! passes through the point of the spine's
//! fracture. This axis is based on cross
//! product of directions tangent to the
//! adjacent segments of the spine at their common point.
@@ -276,7 +276,6 @@ private:
Handle(BRepFill_PipeShell) myPipe;
};

View File

@@ -237,33 +237,84 @@ Standard_Integer evolved(Draw_Interpretor& di, Standard_Integer n, const char**
if ( n < 4 ) return 1;
Standard_Boolean IsAFace = Standard_False;
Standard_Boolean Solid = (!strcmp(a[0],"evolvedsolid"));
Standard_Boolean Solid = Standard_False;
Standard_Boolean isVolume = Standard_False;
Standard_Boolean hasToComputeAxes = Standard_False;
Standard_Real aTolerance = 0.0;
TopoDS_Shape Base;
TopoDS_Wire Prof;
for (Standard_Integer i = 2; i < n; i++)
{
if (a[i][0] != '-')
{
di << "Error: wrong option!\n";
return 1;
}
if (!Solid && !strcmp(a[i], "-solid"))
{
Solid = Standard_True;
continue;
}
switch (a[i][1])
{
case 's':
{
Base = DBRep::Get(a[++i], TopAbs_WIRE, Standard_False);
if (Base.IsNull())
{
Base = DBRep::Get(a[i], TopAbs_FACE, Standard_False);
IsAFace = Standard_True;
}
}
break;
case 'p':
{
Prof = TopoDS::Wire(DBRep::Get(a[++i], TopAbs_WIRE, Standard_False));
}
break;
case 'v':
{
isVolume = Standard_True;
}
break;
case 'a':
{
hasToComputeAxes = Standard_True;
}
break;
case 't':
{
aTolerance = Draw::Atof(a[++i]);
}
break;
default:
di << "Error: Unknown option!\n";
break;
}
}
TopoDS_Shape Base = DBRep::Get(a[2],TopAbs_WIRE,Standard_False);
if ( Base.IsNull()) {
Base = DBRep::Get(a[2],TopAbs_FACE,Standard_False);
IsAFace = Standard_True;
if (Base.IsNull() || Prof.IsNull())
{
di << "Error: Null-shapes are not allowed\n";
return 1;
}
if ( Base.IsNull()) return 1;
TopoDS_Shape InpuTShape(DBRep::Get(a[3],TopAbs_WIRE,Standard_False));
TopoDS_Wire Prof = TopoDS::Wire(InpuTShape);
// TopoDS_Wire Prof =
// TopoDS::Wire(DBRep::Get(a[3],TopAbs_WIRE,Standard_False));
if ( Prof.IsNull()) return 1;
TopoDS_Shape Volevo = IsAFace ? BRepOffsetAPI_MakeEvolved(TopoDS::Face(Base),
Prof, GeomAbs_Arc, !hasToComputeAxes,
Solid, Standard_False, isVolume, aTolerance) :
BRepOffsetAPI_MakeEvolved(TopoDS::Wire(Base),
Prof, GeomAbs_Arc, !hasToComputeAxes,
Solid, Standard_False, isVolume, aTolerance);
if (IsAFace) {
TopoDS_Shape Volevo
= BRepOffsetAPI_MakeEvolved(TopoDS::Face(Base),Prof,GeomAbs_Arc,n == 4,Solid);
DBRep::Set(a[1],Volevo);
}
else {
TopoDS_Shape Volevo
= BRepOffsetAPI_MakeEvolved(TopoDS::Wire(Base),Prof,GeomAbs_Arc,n == 4,Solid);
DBRep::Set(a[1],Volevo);
}
DBRep::Set(a[1],Volevo);
return 0;
}
@@ -785,7 +836,11 @@ static Standard_Integer buildsweep(Draw_Interpretor& di,
Sweep->SetTransitionMode(Transition);
}
// Reading solid ?
if ((n>cur) && (!strcmp(a[cur],"-S")) ) mksolid = Standard_True;
if ((n > cur) && (!strcmp(a[cur], "-S")))
{
mksolid = Standard_True;
++cur;
}
// Calcul le resultat
Sweep->Build();
@@ -979,10 +1034,6 @@ void BRepTest::SweepCommands(Draw_Interpretor& theCommands)
"evolved , no args to get help",
__FILE__,evolved,g);
theCommands.Add("evolvedsolid",
"evolved , no args to get help",
__FILE__,evolved,g);
theCommands.Add("pruled",
"pruled result Edge1/Wire1 Edge2/Wire2",
__FILE__,pruled,g);

View File

@@ -117,7 +117,7 @@ LocOpe_DPrism::LocOpe_DPrism(const TopoDS_Face& Spine,
myProfile = BRepLib_MakeWire(myProfile1,myProfile2,myProfile3);
myDPrism.Perform(mySpine,myProfile,gp::XOY());
myDPrism.Perform(mySpine,myProfile,gp::XOY(), GeomAbs_Arc, Standard_False);
if (myDPrism.IsDone()) {
@@ -370,7 +370,7 @@ LocOpe_DPrism::LocOpe_DPrism(const TopoDS_Face& Spine,
myProfile1 = BRepLib_MakeEdge(Vert4, Vert1);
myProfile = BRepLib_MakeWire(myProfile1,myProfile2,myProfile3);
myDPrism.Perform(mySpine,myProfile,gp::XOY());
myDPrism.Perform(mySpine,myProfile,gp::XOY(), GeomAbs_Arc, Standard_False);
if (myDPrism.IsDone()) {

View File

@@ -142,7 +142,8 @@ public:
PAppend(pNew, theIter);
}
//! Append another list at the end
//! Append another list at the end.
//! After this operation, theOther list will be cleared.
void Append (NCollection_List& theOther)
{
if (this == &theOther || theOther.Extent()<1)

View File

@@ -165,15 +165,19 @@ void math_NewtonMinimum::Perform(math_MultipleVarFunctionWithHessian& F,
Standard_Real aMult = RealLast();
for(Standard_Integer anIdx = 1; anIdx <= myLeft.Upper(); anIdx++)
{
const Standard_Real anAbsStep = Abs(TheStep(anIdx));
if (anAbsStep < gp::Resolution())
continue;
if (suivant->Value(anIdx) < myLeft(anIdx))
{
Standard_Real aValue = Abs(precedent->Value(anIdx) - myLeft(anIdx)) / Abs(TheStep(anIdx));
Standard_Real aValue = Abs(precedent->Value(anIdx) - myLeft(anIdx)) / anAbsStep;
aMult = Min (aValue, aMult);
}
if (suivant->Value(anIdx) > myRight(anIdx))
{
Standard_Real aValue = Abs(precedent->Value(anIdx) - myRight(anIdx)) / Abs(TheStep(anIdx));
Standard_Real aValue = Abs(precedent->Value(anIdx) - myRight(anIdx)) / anAbsStep;
aMult = Min (aValue, aMult);
}
}

View File

@@ -8,7 +8,7 @@ checkshape b
restore [locate_data_file pro19424b.brep] p
checkshape p
if [catch {evolved result b p o } catch_result] {
if [catch {evolved result -s b -p p -a } catch_result] {
puts "Faulty PRO19424 : function EVOLVED works wrongly"
} else {
puts "PRO19424 OK: function EVOLVED works properly"

View File

@@ -8,4 +8,4 @@ puts ""
restore [locate_data_file OCC26470-ClosedWire.brep] a
restore [locate_data_file OCC26470-wprof1.brep] b
evolved res a b o
evolved res -s a -p b -a

View File

@@ -8,5 +8,5 @@ puts ""
restore [locate_data_file OCC26470-ClosedWire.brep] a
restore [locate_data_file OCC26470-wprof2.brep] b
evolved res a b o
evolved res -s a -p b -a
checkshape res

13
tests/evolved/begin Normal file
View File

@@ -0,0 +1,13 @@
# To prevent loops limit to 10 minutes
cpulimit 60
if { [array get Draw_Groups "TOPOLOGY Feature commands"] == "" } {
pload TOPTEST
}
if { [info exists imagedir] == 0 } {
set imagedir .
}
if { [info exists test_image ] == 0 } {
set test_image photo
}

2
tests/evolved/end Normal file
View File

@@ -0,0 +1,2 @@
# to end a test script
puts "TEST COMPLETED"

View File

@@ -0,0 +1 @@
set subgroup evolved

View File

@@ -0,0 +1,11 @@
puts "========"
puts "OCC26470"
puts "========"
puts ""
##################################################
# BRepFill_Evolved: exception and invalid result
##################################################
restore [locate_data_file OCC26470-ClosedWire.brep] a
restore [locate_data_file OCC26470-wprof1.brep] b
evolved res -s a -p b -a

View File

@@ -0,0 +1,12 @@
puts "========"
puts "OCC26470"
puts "========"
puts ""
##################################################
# BRepFill_Evolved: exception and invalid result
##################################################
restore [locate_data_file OCC26470-ClosedWire.brep] a
restore [locate_data_file OCC26470-wprof2.brep] b
evolved res -s a -p b -a
checkshape res

View File

@@ -0,0 +1,20 @@
puts "=========="
puts "PRO19424"
puts "=========="
restore [locate_data_file pro19424a.brep] b
checkshape b
restore [locate_data_file pro19424b.brep] p
checkshape p
if [catch {evolved result -s b -p p -a } catch_result] {
puts "Faulty PRO19424 : function EVOLVED works wrongly"
} else {
puts "PRO19424 OK: function EVOLVED works properly"
}
checkprops result -s 246.506
checkshape result
checkview -display result -2d -path ${imagedir}/${test_image}.png

2
tests/evolved/grids.list Normal file
View File

@@ -0,0 +1,2 @@
001 evolved
002 voluved

View File

@@ -0,0 +1 @@
FAILED /\bFaulty\b/ bad shape

View File

@@ -0,0 +1,24 @@
puts "=========="
puts "OCC29523"
puts "=========="
profile p F -1 10 TT -1 -1 C 1 90 TT 10 -1 W
polyline t -1 -1 0 0 -1.5 5
evolved result -s p -p t -a -solid -v
checkprops result -s 268.774 -v 245.265
checkshape result
checknbshapes result -solid 1 -shell 1
if {[regexp "Faulties" [bopargcheck result]]} {
puts "Error: bopargcheck has found some faulties in res2"
}
checkmaxtol result -ref 1.5e-7
smallview
don result sw tw
fit
checkview -screenshot -2d -path ${imagedir}/${test_image}.png

View File

@@ -0,0 +1,24 @@
puts "=========="
puts "OCC29523"
puts "=========="
polyline p 0 0 0 0 10 0 20 10 0 20 0 0 13 0 0 13 5 0 6 5 0 6 0 0 0 0 0
polyline t -2 2 0 0 2 5 0 2 10 1 2 10 1 2 0 -2 2 0
evolved result -s p -p t -a -solid -v
checkprops result -s 1649.58 -v 1023.79
checkshape result
checknbshapes result -solid 1 -shell 1
if {[regexp "Faulties" [bopargcheck result]]} {
puts "Error: bopargcheck has found some faulties in res2"
}
checkmaxtol result -ref 1.5e-7
smallview
don result sw tw
fit
checkview -screenshot -2d -path ${imagedir}/${test_image}.png

View File

@@ -0,0 +1,24 @@
puts "=========="
puts "OCC29523"
puts "=========="
polyline p 0 0 0 0 10 0 20 10 0 20 0 0 13 0 0 13 5 0 6 5 0 6 0 0 0 0 0
polyline t -1 2 0 0 1 5 0 1 10 0.5 0.5 10 0.5 0.5 0
evolved result -s p -p t -a -solid -v
checkprops result -s 1803.56 -v 532.942
checkshape result
checknbshapes result -solid 1 -shell 1
if {[regexp "Faulties" [bopargcheck result]]} {
puts "Error: bopargcheck has found some faulties in res2"
}
checkmaxtol result -ref 5.0e-6
smallview
don result sw tw
fit
checkview -screenshot -2d -path ${imagedir}/${test_image}.png

View File

@@ -0,0 +1,25 @@
puts "=========="
puts "OCC29523"
puts "=========="
profile p X 10 Y 2 X -10 W
polyline t -1 1 0 1 1 10
evolved result -s p -p t -a -solid -v
checkprops result -s 287.517 -v 211.903
checkshape result
checknbshapes result -solid 1 -shell 1
# See issue #0029657
#if {[regexp "Faulties" [bopargcheck result]]} {
# puts "Error: bopargcheck has found some faulties in res2"
#}
checkmaxtol result -ref 1.5e-007
smallview
don result sw tw
fit
checkview -screenshot -2d -path ${imagedir}/${test_image}.png

View File

@@ -0,0 +1,24 @@
puts "=========="
puts "OCC29523"
puts "=========="
profile p X 10 Y 2 X -10 W
polyline t -1 1 0 1.2 1 10
evolved result -s p -p t -a -solid -v
checkprops result -s 266.546 -v 192.639
checkshape result
checknbshapes result -solid 1 -shell 1
if {[regexp "Faulties" [bopargcheck result]]} {
puts "Error: bopargcheck has found some faulties in res2"
}
checkmaxtol result -ref 1.5e-7
smallview
don result sw tw
fit
checkview -screenshot -2d -path ${imagedir}/${test_image}.png

View File

@@ -0,0 +1,25 @@
puts "=========="
puts "OCC29523"
puts "=========="
# Different results in command "evolved" with and without "-v"
profile p X 10 Y 2 X -10 W
profile t O 0 1 0 P 0 1 0 0 0 1 X 5 T -1 2 WW
evolved result -s p -p t -a -solid -v
checkprops result -s 137.58 -v 80.9221
checkshape result
checknbshapes result -solid 1 -shell 1
if {[regexp "Faulties" [bopargcheck result]]} {
puts "Error: bopargcheck has found some faulties in res2"
}
checkmaxtol result -ref 0.00011504480776721356
smallview
don result p t
fit
checkview -screenshot -2d -path ${imagedir}/${test_image}.png

View File

@@ -0,0 +1,28 @@
puts "=========="
puts "OCC29523"
puts "=========="
# Result contains intersected faces
profile p X 15 C 1 90 Y 5 X -7 Y -2 C -1 90 X -8 W
profile t O 0 1 0 P 0 1 0 0 0 1 X 5 T -1 2 WW
evolved result -s p -p t -a -solid -v
checkprops result -s 308.284 -v 195.169
checkshape result
checknbshapes result -solid 1 -shell 1
if {[regexp "Faulties" [bopargcheck result]]} {
puts "Error: bopargcheck has found some faulties in res2"
}
checkmaxtol result -ref 1.5e-7
regexp {Tolerance MAX=([-0-9.+eE]+)} [tolerance result] full toler
checkreal MAXTOL $toler 1.5e-7 0.0 0.1
smallview
don result sw tw
fit
checkview -screenshot -2d -path ${imagedir}/${test_image}.png

View File

@@ -0,0 +1,25 @@
puts "=========="
puts "OCC29523"
puts "=========="
# Different results with and without "-v"; internal/intersecting faces created
profile p X 10 Y 2 X -10 W
profile t O 0 1 0 P 0 1 0 0 0 1 X 2 RR -45 C 1 90 T -1 2 WW
evolved result -s p -p t -a -solid -v
checkprops result -s 129.967 -v 70.6801
checkshape result
checknbshapes result -solid 1 -shell 1
if {[regexp "Faulties" [bopargcheck result]]} {
puts "Error: bopargcheck has found some faulties in res2"
}
checkmaxtol result -ref 3.25e-007
smallview
don result sw tw
fit
checkview -screenshot -2d -path ${imagedir}/${test_image}.png

View File

@@ -0,0 +1,25 @@
puts "=========="
puts "OCC29523"
puts "=========="
# Solids are correctly built but r_1 should be eliminated as junk
profile p X 10 Y 2 X -10 W
profile t O 0 1 0 P 0 1 0 0 0 1 RR 30 C -10 60 WW
evolved result -s p -p t -a -solid -v
checkprops result -s 308.284 -v 195.169
checkshape result
checknbshapes result -solid 1 -shell 1
if {[regexp "Faulties" [bopargcheck result]]} {
puts "Error: bopargcheck has found some faulties in res2"
}
checkmaxtol result -ref 1.5e-7
smallview
don result sw tw
fit
checkview -screenshot -2d -path ${imagedir}/${test_image}.png

View File

@@ -0,0 +1,26 @@
puts "=========="
puts "OCC29523"
puts "=========="
restore [locate_data_file bug29523_cut_extrudewire00.brep] sw
restore [locate_data_file bug29523_cut_toolwire00.brep] tw
evolved result -s sw -p tw -solid -a -v
checkprops result -s 1.94263e+010 -v 6.2718e+013
checkshape result
checknbshapes result -solid 1 -shell 1
if {[regexp "Faulties" [bopargcheck result]]} {
puts "Error: bopargcheck has found some faulties in res2"
}
checkmaxtol result -ref 0.00013577499521488808
smallview
don result sw tw
fit
checkview -screenshot -2d -path ${imagedir}/${test_image}.png

View File

@@ -0,0 +1,26 @@
puts "=========="
puts "OCC29523"
puts "=========="
restore [locate_data_file bug29523_cut_extrudewire01.brep] sw
restore [locate_data_file bug29523_cut_toolwire01.brep] tw
evolved result -s sw -p tw -solid -a -v
checkprops result -s 2.18924e+011 -v 2.47705e+014
checkshape result
checknbshapes result -solid 1 -shell 1
if {[regexp "Faulties" [bopargcheck result]]} {
puts "Error: bopargcheck has found some faulties in res2"
}
checkmaxtol result -ref 1.0e-7
smallview
don result sw tw
fit
checkview -screenshot -2d -path ${imagedir}/${test_image}.png

View File

@@ -0,0 +1,26 @@
puts "=========="
puts "OCC29523"
puts "=========="
restore [locate_data_file bug29523_cut_extrudewire02.brep] sw
restore [locate_data_file bug29523_cut_toolwire02.brep] tw
evolved result -s sw -p tw -solid -a -v
checkprops result -s 2.18616e+011 -v 2.46411e+014
checkshape result
checknbshapes result -solid 1 -shell 1
if {[regexp "Faulties" [bopargcheck result]]} {
puts "Error: bopargcheck has found some faulties in res2"
}
checkmaxtol result -ref 1.6e-5
smallview
don result sw tw
fit
checkview -screenshot -2d -path ${imagedir}/${test_image}.png

View File

@@ -0,0 +1,26 @@
puts "=========="
puts "OCC29523"
puts "=========="
restore [locate_data_file bug29523_cut_extrudewire03.brep] sw
restore [locate_data_file bug29523_cut_toolwire03.brep] tw
evolved result -s sw -p tw -solid -a -v
checkprops result -s 3.02832e+010 -v 4.97434e+013
checkshape result
checknbshapes result -solid 1 -shell 1
if {[regexp "Faulties" [bopargcheck result]]} {
puts "Error: bopargcheck has found some faulties in res2"
}
checkmaxtol result -ref 7.0e-7
smallview
don result sw tw
fit
checkview -screenshot -2d -path ${imagedir}/${test_image}.png

View File

@@ -0,0 +1,26 @@
puts "=========="
puts "OCC29523"
puts "=========="
restore [locate_data_file bug29523_cut_extrudewire04.brep] sw
restore [locate_data_file bug29523_cut_toolwire04.brep] tw
evolved result -s sw -p tw -solid -a -v
checkprops result -s 1.94263e+010 -v 6.2718e+013
checkshape result
checknbshapes result -solid 1 -shell 1
if {[regexp "Faulties" [bopargcheck result]]} {
puts "Error: bopargcheck has found some faulties in res2"
}
checkmaxtol result -ref 0.00013577500067185611
smallview
don result sw tw
fit
checkview -screenshot -2d -path ${imagedir}/${test_image}.png

View File

@@ -0,0 +1,26 @@
puts "=========="
puts "OCC29523"
puts "=========="
restore [locate_data_file bug29523_cut_extrudewire05.brep] sw
restore [locate_data_file bug29523_cut_toolwire05.brep] tw
evolved result -s sw -p tw -solid -a -v
checkprops result -s 2.84249e+010 -v 8.95554e+013
checkshape result
checknbshapes result -solid 1 -shell 1
if {[regexp "Faulties" [bopargcheck result]]} {
puts "Error: bopargcheck has found some faulties in res2"
}
checkmaxtol result -ref 4.4607852024588505e-007
smallview
don result sw tw
fit
checkview -screenshot -2d -path ${imagedir}/${test_image}.png

View File

@@ -0,0 +1,26 @@
puts "=========="
puts "OCC29523"
puts "=========="
restore [locate_data_file bug29523_cut_extrudewire06.brep] sw
restore [locate_data_file bug29523_cut_toolwire06.brep] tw
evolved result -s sw -p tw -solid -a -v
checkprops result -s 1.99565e+011 -v 6.75431e+014
checkshape result
checknbshapes result -solid 1 -shell 1
if {[regexp "Faulties" [bopargcheck result]]} {
puts "Error: bopargcheck has found some faulties in res2"
}
checkmaxtol result -ref 4.7e-6
smallview
don result sw tw
fit
checkview -screenshot -2d -path ${imagedir}/${test_image}.png

View File

@@ -0,0 +1,28 @@
puts "=========="
puts "OCC29523"
puts "=========="
cpulimit 100
restore [locate_data_file bug29523_cut_extrudewire07.brep] sw
restore [locate_data_file bug29523_cut_toolwire07.brep] tw
evolved result -s sw -p tw -solid -a -v
checkprops result -s 1.99565e+011 -v 6.75431e+014
checkshape result
checknbshapes result -solid 1 -shell 1
if {[regexp "Faulties" [bopargcheck result]]} {
puts "Error: bopargcheck has found some faulties in res2"
}
checkmaxtol result -ref 4.7e-6
smallview
don result sw tw
fit
checkview -screenshot -2d -path ${imagedir}/${test_image}.png

View File

@@ -0,0 +1,28 @@
puts "=========="
puts "OCC29523"
puts "=========="
cpulimit 100
restore [locate_data_file bug29523_cut_extrudewire08.brep] sw
restore [locate_data_file bug29523_cut_toolwire08.brep] tw
evolved result -s sw -p tw -solid -a -v
checkprops result -s 1.99565e+011 -v 6.75431e+014
checkshape result
checknbshapes result -solid 1 -shell 1
if {[regexp "Faulties" [bopargcheck result]]} {
puts "Error: bopargcheck has found some faulties in res2"
}
checkmaxtol result -ref 4.7e-6
smallview
don result sw tw
fit
checkview -screenshot -2d -path ${imagedir}/${test_image}.png

View File

@@ -0,0 +1 @@
set subgroup voluved

View File

@@ -0,0 +1,11 @@
puts "========"
puts "OCC26470"
puts "========"
puts ""
##################################################
# BRepFill_Evolved: exception and invalid result
##################################################
restore [locate_data_file OCC26470-ClosedWire.brep] a
restore [locate_data_file OCC26470-wprof1.brep] b
evolved res -s a -p b -a -v

View File

@@ -0,0 +1,12 @@
puts "========"
puts "OCC26470"
puts "========"
puts ""
##################################################
# BRepFill_Evolved: exception and invalid result
##################################################
restore [locate_data_file OCC26470-ClosedWire.brep] a
restore [locate_data_file OCC26470-wprof2.brep] b
evolved res -s a -p b -a -v
checkshape res

View File

@@ -0,0 +1,20 @@
puts "=========="
puts "PRO19424"
puts "=========="
restore [locate_data_file pro19424a.brep] b
checkshape b
restore [locate_data_file pro19424b.brep] p
checkshape p
if [catch {evolved result -s b -p p -a -v } catch_result] {
puts "Faulty PRO19424 : function EVOLVED works wrongly"
} else {
puts "PRO19424 OK: function EVOLVED works properly"
}
checkprops result -s 246.506
checkshape result
checkview -display result -2d -path ${imagedir}/${test_image}.png