mirror of
https://git.dev.opencascade.org/repos/occt.git
synced 2025-08-24 13:50: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:
@@ -747,7 +747,8 @@ void BRepFill_PipeShell::SetForceApproxC1(const Standard_Boolean ForceApproxC1)
|
|||||||
MkSw.SetAngularControl(angmin, angmax);
|
MkSw.SetAngularControl(angmin, angmax);
|
||||||
MkSw.SetForceApproxC1(myForceApproxC1);
|
MkSw.SetForceApproxC1(myForceApproxC1);
|
||||||
MkSw.SetBounds(TopoDS::Wire(myFirst),
|
MkSw.SetBounds(TopoDS::Wire(myFirst),
|
||||||
TopoDS::Wire(myLast));
|
TopoDS::Wire(myLast));
|
||||||
|
|
||||||
GeomAbs_Shape theContinuity = GeomAbs_C2;
|
GeomAbs_Shape theContinuity = GeomAbs_C2;
|
||||||
if (myTrihedron == GeomFill_IsDiscreteTrihedron)
|
if (myTrihedron == GeomFill_IsDiscreteTrihedron)
|
||||||
theContinuity = GeomAbs_C0;
|
theContinuity = GeomAbs_C0;
|
||||||
|
@@ -168,6 +168,10 @@ public:
|
|||||||
Standard_EXPORT void Simulate (const Standard_Integer NumberOfSection, TopTools_ListOfShape& Sections);
|
Standard_EXPORT void Simulate (const Standard_Integer NumberOfSection, TopTools_ListOfShape& Sections);
|
||||||
|
|
||||||
//! Builds the resulting shape (redefined from MakeShape).
|
//! 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();
|
Standard_EXPORT Standard_Boolean Build();
|
||||||
|
|
||||||
//! Transform the sweeping Shell in Solid.
|
//! Transform the sweeping Shell in Solid.
|
||||||
|
@@ -914,7 +914,7 @@ static Standard_Boolean Filling(const TopoDS_Shape& EF,
|
|||||||
// Control the direction of the rotation
|
// Control the direction of the rotation
|
||||||
Standard_Boolean ToReverseResult = Standard_False;
|
Standard_Boolean ToReverseResult = Standard_False;
|
||||||
gp_Vec d1u;
|
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
|
if (d1u.Angle(TangentOnPart1) > M_PI/2) { //Invert everything
|
||||||
ToReverseResult = Standard_True;
|
ToReverseResult = Standard_True;
|
||||||
/*
|
/*
|
||||||
@@ -1815,8 +1815,6 @@ BRepFill_Sweep::BRepFill_Sweep(const Handle(BRepFill_SectionLaw)& Section,
|
|||||||
const Standard_Boolean WithKPart) :
|
const Standard_Boolean WithKPart) :
|
||||||
isDone(Standard_False),
|
isDone(Standard_False),
|
||||||
KPart(WithKPart)
|
KPart(WithKPart)
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
mySec = Section;
|
mySec = Section;
|
||||||
myLoc = Location;
|
myLoc = Location;
|
||||||
@@ -3353,7 +3351,8 @@ TopoDS_Shape BRepFill_Sweep::Tape(const Standard_Integer Index) const
|
|||||||
// Filling
|
// Filling
|
||||||
B = Filling(It1.Value(), myFaces->Value(ii, I1),
|
B = Filling(It1.Value(), myFaces->Value(ii, I1),
|
||||||
It2.Value(), myFaces->Value(ii, I2),
|
It2.Value(), myFaces->Value(ii, I2),
|
||||||
myVEdgesModified, myTol3d, Axe, T1, Bord1, Bord2, FF);
|
myVEdgesModified, myTol3d, Axe, T1,
|
||||||
|
Bord1, Bord2, FF);
|
||||||
|
|
||||||
if (B) {
|
if (B) {
|
||||||
myAuxShape.Append(FF);
|
myAuxShape.Append(FF);
|
||||||
|
@@ -80,7 +80,7 @@ public:
|
|||||||
//! to be C0.
|
//! to be C0.
|
||||||
Standard_EXPORT void SetForceApproxC1 (const Standard_Boolean ForceApproxC1);
|
Standard_EXPORT void SetForceApproxC1 (const Standard_Boolean ForceApproxC1);
|
||||||
|
|
||||||
//! Build the Sweeep Surface
|
//! Build the Sweep Surface
|
||||||
//! Transition define Transition strategy
|
//! Transition define Transition strategy
|
||||||
//! Approx define Approximation Strategy
|
//! Approx define Approximation Strategy
|
||||||
//! - GeomFill_Section : The composed Function Location X Section
|
//! - GeomFill_Section : The composed Function Location X Section
|
||||||
@@ -118,13 +118,6 @@ public:
|
|||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private:
|
|
||||||
|
|
||||||
|
|
||||||
Standard_EXPORT Standard_Boolean CorrectApproxParameters();
|
Standard_EXPORT Standard_Boolean CorrectApproxParameters();
|
||||||
|
|
||||||
Standard_EXPORT Standard_Boolean BuildWire (const BRepFill_TransitionStyle Transition);
|
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;
|
Standard_EXPORT void RebuildTopOrBottomEdge (const TopoDS_Edge& aNewEdge, TopoDS_Edge& anEdge, TopTools_MapOfShape& ReversedEdges) const;
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Standard_Boolean isDone;
|
Standard_Boolean isDone;
|
||||||
Standard_Boolean KPart;
|
Standard_Boolean KPart;
|
||||||
Standard_Real myTol3d;
|
Standard_Real myTol3d;
|
||||||
@@ -168,7 +168,6 @@ private:
|
|||||||
TopoDS_Wire FirstShape;
|
TopoDS_Wire FirstShape;
|
||||||
TopoDS_Wire LastShape;
|
TopoDS_Wire LastShape;
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
1700
src/BRepFill/BRepFill_Voluved.cxx
Normal file
1700
src/BRepFill/BRepFill_Voluved.cxx
Normal file
File diff suppressed because it is too large
Load Diff
106
src/BRepFill/BRepFill_Voluved.hxx
Normal file
106
src/BRepFill/BRepFill_Voluved.hxx
Normal 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
|
@@ -83,3 +83,5 @@ BRepFill_TrimShellCorner.hxx
|
|||||||
BRepFill_TrimSurfaceTool.cxx
|
BRepFill_TrimSurfaceTool.cxx
|
||||||
BRepFill_TrimSurfaceTool.hxx
|
BRepFill_TrimSurfaceTool.hxx
|
||||||
BRepFill_TypeOfContact.hxx
|
BRepFill_TypeOfContact.hxx
|
||||||
|
BRepFill_Voluved.cxx
|
||||||
|
BRepFill_Voluved.hxx
|
@@ -22,6 +22,8 @@
|
|||||||
#include <TopoDS_Face.hxx>
|
#include <TopoDS_Face.hxx>
|
||||||
#include <TopoDS_Shape.hxx>
|
#include <TopoDS_Shape.hxx>
|
||||||
#include <TopoDS_Wire.hxx>
|
#include <TopoDS_Wire.hxx>
|
||||||
|
#include <TopoDS_Iterator.hxx>
|
||||||
|
#include <TopoDS.hxx>
|
||||||
|
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
//function : BRepOffsetAPI_MakeEvolved
|
//function : BRepOffsetAPI_MakeEvolved
|
||||||
@@ -43,19 +45,29 @@ BRepOffsetAPI_MakeEvolved::BRepOffsetAPI_MakeEvolved(const TopoDS_Wire& Spin
|
|||||||
const Standard_Boolean AxeProf,
|
const Standard_Boolean AxeProf,
|
||||||
const Standard_Boolean Solid,
|
const Standard_Boolean Solid,
|
||||||
const Standard_Boolean ProfOnSpine,
|
const Standard_Boolean ProfOnSpine,
|
||||||
const Standard_Real Tol)
|
const Standard_Boolean theIsVolume,
|
||||||
|
const Standard_Real Tol)
|
||||||
{
|
{
|
||||||
gp_Ax3 Axis(gp_Pnt(0.,0.,0.),
|
if (theIsVolume)
|
||||||
gp_Dir(0.,0.,1.),
|
{
|
||||||
gp_Dir(1.,0.,0.));
|
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) {
|
if (!AxeProf)
|
||||||
Standard_Boolean POS;
|
{
|
||||||
BRepFill::Axe(Spine,Profil,Axis,POS,Tol);
|
Standard_Boolean POS;
|
||||||
if (ProfOnSpine && !POS) return;
|
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();
|
Build();
|
||||||
Done();
|
Done();
|
||||||
}
|
}
|
||||||
@@ -72,20 +84,31 @@ BRepOffsetAPI_MakeEvolved::BRepOffsetAPI_MakeEvolved(const TopoDS_Face& Spin
|
|||||||
const Standard_Boolean AxeProf,
|
const Standard_Boolean AxeProf,
|
||||||
const Standard_Boolean Solid,
|
const Standard_Boolean Solid,
|
||||||
const Standard_Boolean ProfOnSpine,
|
const Standard_Boolean ProfOnSpine,
|
||||||
const Standard_Real Tol)
|
const Standard_Boolean theIsVolume,
|
||||||
|
const Standard_Real Tol)
|
||||||
{
|
{
|
||||||
gp_Ax3 Axis(gp_Pnt(0.,0.,0.),
|
if (theIsVolume)
|
||||||
gp_Dir(0.,0.,1.),
|
{
|
||||||
gp_Dir(1.,0.,0.));
|
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) {
|
if (!AxeProf)
|
||||||
Standard_Boolean POS;
|
{
|
||||||
BRepFill::Axe(Spine,Profil,Axis,POS,Tol);
|
Standard_Boolean POS;
|
||||||
if (ProfOnSpine && !POS) return;
|
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();
|
Build();
|
||||||
|
Done();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@@ -107,8 +130,16 @@ const BRepFill_Evolved& BRepOffsetAPI_MakeEvolved::Evolved() const
|
|||||||
|
|
||||||
void BRepOffsetAPI_MakeEvolved::Build()
|
void BRepOffsetAPI_MakeEvolved::Build()
|
||||||
{
|
{
|
||||||
myShape = myEvolved.Shape();
|
if (myEvolved.IsDone())
|
||||||
if (myEvolved.IsDone()) Done();
|
{
|
||||||
|
myShape = myEvolved.Shape();
|
||||||
|
}
|
||||||
|
else if (myVolume.IsDone())
|
||||||
|
{
|
||||||
|
myShape = myVolume.Shape();
|
||||||
|
}
|
||||||
|
|
||||||
|
Done();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -22,6 +22,7 @@
|
|||||||
#include <Standard_Handle.hxx>
|
#include <Standard_Handle.hxx>
|
||||||
|
|
||||||
#include <BRepFill_Evolved.hxx>
|
#include <BRepFill_Evolved.hxx>
|
||||||
|
#include <BRepFill_Voluved.hxx>
|
||||||
#include <BRepBuilderAPI_MakeShape.hxx>
|
#include <BRepBuilderAPI_MakeShape.hxx>
|
||||||
#include <GeomAbs_JoinType.hxx>
|
#include <GeomAbs_JoinType.hxx>
|
||||||
#include <Standard_Boolean.hxx>
|
#include <Standard_Boolean.hxx>
|
||||||
@@ -66,7 +67,7 @@ public:
|
|||||||
|
|
||||||
Standard_EXPORT BRepOffsetAPI_MakeEvolved();
|
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
|
//! These constructors construct an evolved shape by sweeping the profile
|
||||||
//! Profile along the spine Spine.
|
//! Profile along the spine Spine.
|
||||||
@@ -88,7 +89,7 @@ public:
|
|||||||
//! axis passing along the vertex and the normal to the
|
//! axis passing along the vertex and the normal to the
|
||||||
//! plane of the spine. At present, this is the only
|
//! plane of the spine. At present, this is the only
|
||||||
//! construction type implemented.
|
//! 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;
|
Standard_EXPORT const BRepFill_Evolved& Evolved() const;
|
||||||
|
|
||||||
@@ -118,9 +119,8 @@ protected:
|
|||||||
private:
|
private:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
BRepFill_Evolved myEvolved;
|
BRepFill_Evolved myEvolved;
|
||||||
|
BRepFill_Voluved myVolume;
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@@ -33,8 +33,6 @@
|
|||||||
//purpose :
|
//purpose :
|
||||||
//=======================================================================
|
//=======================================================================
|
||||||
BRepOffsetAPI_MakePipeShell::BRepOffsetAPI_MakePipeShell(const TopoDS_Wire& Spine)
|
BRepOffsetAPI_MakePipeShell::BRepOffsetAPI_MakePipeShell(const TopoDS_Wire& Spine)
|
||||||
|
|
||||||
|
|
||||||
{
|
{
|
||||||
myPipe = new (BRepFill_PipeShell) (Spine);
|
myPipe = new (BRepFill_PipeShell) (Spine);
|
||||||
SetTolerance();
|
SetTolerance();
|
||||||
|
@@ -211,7 +211,7 @@ public:
|
|||||||
//! discontinuities are treated like round
|
//! discontinuities are treated like round
|
||||||
//! corner. The corner is treated as rotation
|
//! corner. The corner is treated as rotation
|
||||||
//! of the profile around an axis which
|
//! 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
|
//! fracture. This axis is based on cross
|
||||||
//! product of directions tangent to the
|
//! product of directions tangent to the
|
||||||
//! adjacent segments of the spine at their common point.
|
//! adjacent segments of the spine at their common point.
|
||||||
@@ -276,7 +276,6 @@ private:
|
|||||||
|
|
||||||
Handle(BRepFill_PipeShell) myPipe;
|
Handle(BRepFill_PipeShell) myPipe;
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@@ -237,33 +237,84 @@ Standard_Integer evolved(Draw_Interpretor& di, Standard_Integer n, const char**
|
|||||||
|
|
||||||
if ( n < 4 ) return 1;
|
if ( n < 4 ) return 1;
|
||||||
Standard_Boolean IsAFace = Standard_False;
|
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;
|
||||||
|
}
|
||||||
|
|
||||||
TopoDS_Shape Base = DBRep::Get(a[2],TopAbs_WIRE,Standard_False);
|
switch (a[i][1])
|
||||||
if ( Base.IsNull()) {
|
{
|
||||||
Base = DBRep::Get(a[2],TopAbs_FACE,Standard_False);
|
case 's':
|
||||||
IsAFace = Standard_True;
|
{
|
||||||
|
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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
if ( Base.IsNull()) return 1;
|
|
||||||
|
|
||||||
TopoDS_Shape InpuTShape(DBRep::Get(a[3],TopAbs_WIRE,Standard_False));
|
if (Base.IsNull() || Prof.IsNull())
|
||||||
TopoDS_Wire Prof = TopoDS::Wire(InpuTShape);
|
{
|
||||||
// TopoDS_Wire Prof =
|
di << "Error: Null-shapes are not allowed\n";
|
||||||
// TopoDS::Wire(DBRep::Get(a[3],TopAbs_WIRE,Standard_False));
|
return 1;
|
||||||
if ( Prof.IsNull()) return 1;
|
}
|
||||||
|
|
||||||
if (IsAFace) {
|
TopoDS_Shape Volevo = IsAFace ? BRepOffsetAPI_MakeEvolved(TopoDS::Face(Base),
|
||||||
TopoDS_Shape Volevo
|
Prof, GeomAbs_Arc, !hasToComputeAxes,
|
||||||
= BRepOffsetAPI_MakeEvolved(TopoDS::Face(Base),Prof,GeomAbs_Arc,n == 4,Solid);
|
Solid, Standard_False, isVolume, aTolerance) :
|
||||||
DBRep::Set(a[1],Volevo);
|
BRepOffsetAPI_MakeEvolved(TopoDS::Wire(Base),
|
||||||
}
|
Prof, GeomAbs_Arc, !hasToComputeAxes,
|
||||||
else {
|
Solid, Standard_False, isVolume, aTolerance);
|
||||||
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;
|
return 0;
|
||||||
}
|
}
|
||||||
@@ -785,7 +836,11 @@ static Standard_Integer buildsweep(Draw_Interpretor& di,
|
|||||||
Sweep->SetTransitionMode(Transition);
|
Sweep->SetTransitionMode(Transition);
|
||||||
}
|
}
|
||||||
// Reading solid ?
|
// 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
|
// Calcul le resultat
|
||||||
Sweep->Build();
|
Sweep->Build();
|
||||||
@@ -979,10 +1034,6 @@ void BRepTest::SweepCommands(Draw_Interpretor& theCommands)
|
|||||||
"evolved , no args to get help",
|
"evolved , no args to get help",
|
||||||
__FILE__,evolved,g);
|
__FILE__,evolved,g);
|
||||||
|
|
||||||
theCommands.Add("evolvedsolid",
|
|
||||||
"evolved , no args to get help",
|
|
||||||
__FILE__,evolved,g);
|
|
||||||
|
|
||||||
theCommands.Add("pruled",
|
theCommands.Add("pruled",
|
||||||
"pruled result Edge1/Wire1 Edge2/Wire2",
|
"pruled result Edge1/Wire1 Edge2/Wire2",
|
||||||
__FILE__,pruled,g);
|
__FILE__,pruled,g);
|
||||||
|
@@ -117,7 +117,7 @@ LocOpe_DPrism::LocOpe_DPrism(const TopoDS_Face& Spine,
|
|||||||
|
|
||||||
myProfile = BRepLib_MakeWire(myProfile1,myProfile2,myProfile3);
|
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()) {
|
if (myDPrism.IsDone()) {
|
||||||
@@ -370,7 +370,7 @@ LocOpe_DPrism::LocOpe_DPrism(const TopoDS_Face& Spine,
|
|||||||
myProfile1 = BRepLib_MakeEdge(Vert4, Vert1);
|
myProfile1 = BRepLib_MakeEdge(Vert4, Vert1);
|
||||||
|
|
||||||
myProfile = BRepLib_MakeWire(myProfile1,myProfile2,myProfile3);
|
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()) {
|
if (myDPrism.IsDone()) {
|
||||||
|
@@ -142,7 +142,8 @@ public:
|
|||||||
PAppend(pNew, theIter);
|
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)
|
void Append (NCollection_List& theOther)
|
||||||
{
|
{
|
||||||
if (this == &theOther || theOther.Extent()<1)
|
if (this == &theOther || theOther.Extent()<1)
|
||||||
|
@@ -165,15 +165,19 @@ void math_NewtonMinimum::Perform(math_MultipleVarFunctionWithHessian& F,
|
|||||||
Standard_Real aMult = RealLast();
|
Standard_Real aMult = RealLast();
|
||||||
for(Standard_Integer anIdx = 1; anIdx <= myLeft.Upper(); anIdx++)
|
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))
|
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);
|
aMult = Min (aValue, aMult);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (suivant->Value(anIdx) > myRight(anIdx))
|
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);
|
aMult = Min (aValue, aMult);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -8,7 +8,7 @@ checkshape b
|
|||||||
restore [locate_data_file pro19424b.brep] p
|
restore [locate_data_file pro19424b.brep] p
|
||||||
checkshape 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"
|
puts "Faulty PRO19424 : function EVOLVED works wrongly"
|
||||||
} else {
|
} else {
|
||||||
puts "PRO19424 OK: function EVOLVED works properly"
|
puts "PRO19424 OK: function EVOLVED works properly"
|
||||||
|
@@ -8,4 +8,4 @@ puts ""
|
|||||||
|
|
||||||
restore [locate_data_file OCC26470-ClosedWire.brep] a
|
restore [locate_data_file OCC26470-ClosedWire.brep] a
|
||||||
restore [locate_data_file OCC26470-wprof1.brep] b
|
restore [locate_data_file OCC26470-wprof1.brep] b
|
||||||
evolved res a b o
|
evolved res -s a -p b -a
|
||||||
|
@@ -8,5 +8,5 @@ puts ""
|
|||||||
|
|
||||||
restore [locate_data_file OCC26470-ClosedWire.brep] a
|
restore [locate_data_file OCC26470-ClosedWire.brep] a
|
||||||
restore [locate_data_file OCC26470-wprof2.brep] b
|
restore [locate_data_file OCC26470-wprof2.brep] b
|
||||||
evolved res a b o
|
evolved res -s a -p b -a
|
||||||
checkshape res
|
checkshape res
|
||||||
|
13
tests/evolved/begin
Normal file
13
tests/evolved/begin
Normal 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
2
tests/evolved/end
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
# to end a test script
|
||||||
|
puts "TEST COMPLETED"
|
1
tests/evolved/evolved/begin
Normal file
1
tests/evolved/evolved/begin
Normal file
@@ -0,0 +1 @@
|
|||||||
|
set subgroup evolved
|
11
tests/evolved/evolved/bug26470_1
Normal file
11
tests/evolved/evolved/bug26470_1
Normal 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
|
12
tests/evolved/evolved/bug26470_2
Normal file
12
tests/evolved/evolved/bug26470_2
Normal 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
|
20
tests/evolved/evolved/pro19424
Normal file
20
tests/evolved/evolved/pro19424
Normal 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
2
tests/evolved/grids.list
Normal file
@@ -0,0 +1,2 @@
|
|||||||
|
001 evolved
|
||||||
|
002 voluved
|
1
tests/evolved/parse.rules
Normal file
1
tests/evolved/parse.rules
Normal file
@@ -0,0 +1 @@
|
|||||||
|
FAILED /\bFaulty\b/ bad shape
|
24
tests/evolved/voluved/AGT001
Normal file
24
tests/evolved/voluved/AGT001
Normal 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
|
24
tests/evolved/voluved/AGT002
Normal file
24
tests/evolved/voluved/AGT002
Normal 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
|
24
tests/evolved/voluved/AGT003
Normal file
24
tests/evolved/voluved/AGT003
Normal 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
|
25
tests/evolved/voluved/AGT004
Normal file
25
tests/evolved/voluved/AGT004
Normal 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
|
24
tests/evolved/voluved/AGT005
Normal file
24
tests/evolved/voluved/AGT005
Normal 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
|
25
tests/evolved/voluved/AGT006
Normal file
25
tests/evolved/voluved/AGT006
Normal 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
|
28
tests/evolved/voluved/AGT007
Normal file
28
tests/evolved/voluved/AGT007
Normal 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
|
25
tests/evolved/voluved/AGT008
Normal file
25
tests/evolved/voluved/AGT008
Normal 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
|
25
tests/evolved/voluved/AGT009
Normal file
25
tests/evolved/voluved/AGT009
Normal 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
|
26
tests/evolved/voluved/HMC001
Normal file
26
tests/evolved/voluved/HMC001
Normal 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
|
||||||
|
|
26
tests/evolved/voluved/HMC002
Normal file
26
tests/evolved/voluved/HMC002
Normal 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
|
||||||
|
|
26
tests/evolved/voluved/HMC003
Normal file
26
tests/evolved/voluved/HMC003
Normal 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
|
||||||
|
|
26
tests/evolved/voluved/HMC004
Normal file
26
tests/evolved/voluved/HMC004
Normal 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
|
||||||
|
|
26
tests/evolved/voluved/HMC005
Normal file
26
tests/evolved/voluved/HMC005
Normal 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
|
||||||
|
|
26
tests/evolved/voluved/HMC006
Normal file
26
tests/evolved/voluved/HMC006
Normal 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
|
||||||
|
|
26
tests/evolved/voluved/HMC007
Normal file
26
tests/evolved/voluved/HMC007
Normal 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
|
||||||
|
|
28
tests/evolved/voluved/HMC008
Normal file
28
tests/evolved/voluved/HMC008
Normal 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
|
||||||
|
|
28
tests/evolved/voluved/HMC009
Normal file
28
tests/evolved/voluved/HMC009
Normal 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
|
||||||
|
|
1
tests/evolved/voluved/begin
Normal file
1
tests/evolved/voluved/begin
Normal file
@@ -0,0 +1 @@
|
|||||||
|
set subgroup voluved
|
11
tests/evolved/voluved/bug26470_1
Normal file
11
tests/evolved/voluved/bug26470_1
Normal 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
|
12
tests/evolved/voluved/bug26470_2
Normal file
12
tests/evolved/voluved/bug26470_2
Normal 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
|
20
tests/evolved/voluved/pro19424
Normal file
20
tests/evolved/voluved/pro19424
Normal 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
|
||||||
|
|
Reference in New Issue
Block a user