1) BRepFill_Generator and BRepOffsetAPI_ThruSections now supports 'non-destructive' mode for the input shapes (sections wires). The shape history of this algorithms also has been modified.
2) New test grids (based on the previous ones) has been added. This new cases uses locked shape as input arguments
3) mutable-flag has been added to 'thrusections' command
Surf = surface;
}
+//=======================================================================
+//function : CreateNewEdge
+//purpose :
+//=======================================================================
+static TopoDS_Edge CreateNewEdge(const TopoDS_Edge& theEdge, TopTools_DataMapOfShapeShape& theCopiedEdges,
+ const TopoDS_Wire& theWire, TopTools_IndexedMapOfShape& theModifWires)
+{
+ BRep_Builder aB;
+ TopoDS_Edge aNewEdge;
+ aNewEdge = TopoDS::Edge(theEdge.EmptyCopied());
+ TopoDS_Iterator it(theEdge);
+ for (;it.More(); it.Next())
+ aB.Add(aNewEdge, it.Value());
+ theCopiedEdges.Bind(theEdge, aNewEdge);
+ //
+ if (!theModifWires.Contains(theWire))
+ theModifWires.Add(theWire);
+ //
+ return aNewEdge;
+}
//=======================================================================
//function : BRepFill_Generator
//purpose :
//=======================================================================
-BRepFill_Generator::BRepFill_Generator()
+BRepFill_Generator::BRepFill_Generator() : myMutableInput (Standard_True)
{
}
B.MakeShell(myShell);
Standard_Integer Nb = myWires.Length();
+ TopTools_IndexedMapOfShape aModifWires; //indexed map for debugging
BRepTools_WireExplorer ex1,ex2;
+ Standard_Boolean aFirstWire = Standard_True;
Standard_Boolean wPoint1, wPoint2, uClosed = Standard_False, DegenFirst = Standard_False, DegenLast = Standard_False;
for ( Standard_Integer i = 1; i <= Nb-1; i++) {
while ( tantque ) {
TopoDS_Vertex V1f,V1l,V2f,V2l, Vf_toMap, Vl_toMap;
+ TopoDS_Edge anOrEd1 = TopoDS::Edge(ex1.Current());
+ TopoDS_Edge anOrEd2 = TopoDS::Edge(ex2.Current());
Standard_Boolean degen1
- = BRep_Tool::Degenerated(TopoDS::Edge(ex1.Current()));
+ = BRep_Tool::Degenerated(anOrEd1);
Standard_Boolean degen2
- = BRep_Tool::Degenerated(TopoDS::Edge(ex2.Current()));
+ = BRep_Tool::Degenerated(anOrEd2);
if ( degen1 ) {
- TopoDS_Shape aLocalShape = ex1.Current().EmptyCopied();
- Edge1 = TopoDS::Edge(aLocalShape);
-// Edge1 = TopoDS::Edge(ex1.Current().EmptyCopied());
-// aLocalShape = ex1.Current();
-// TopExp::Vertices(TopoDS::Edge(aLocalShape),V1f,V1l);
- TopExp::Vertices(TopoDS::Edge(ex1.Current()),V1f,V1l);
- V1f.Orientation(TopAbs_FORWARD);
- B.Add(Edge1,V1f);
- V1l.Orientation(TopAbs_REVERSED);
- B.Add(Edge1,V1l);
- B.Range(Edge1,0,1);
+ //if (!myOldNewShapes.IsBound(anOrEd1)) //?? multiple coping
+ {
+ TopoDS_Shape aLocalShape = anOrEd1.EmptyCopied();
+ Edge1 = TopoDS::Edge(aLocalShape);
+ // Edge1 = TopoDS::Edge(ex1.Current().EmptyCopied());
+ // aLocalShape = ex1.Current();
+ // TopExp::Vertices(TopoDS::Edge(aLocalShape),V1f,V1l);
+ TopExp::Vertices(anOrEd1,V1f,V1l);
+ V1f.Orientation(TopAbs_FORWARD);
+ B.Add(Edge1,V1f);
+ V1l.Orientation(TopAbs_REVERSED);
+ B.Add(Edge1,V1l);
+ B.Range(Edge1,0,1);
+ myOldNewShapes.Bind(anOrEd1, Edge1);
+ }
+ //else
+ // Edge1 = TopoDS::Edge(myOldNewShapes(anOrEd1));
}
else {
- TopoDS_Shape aLocalShape = ex1.Current();
- Edge1 = TopoDS::Edge(aLocalShape);
-// Edge1 = TopoDS::Edge(ex1.Current());
+ Edge1 = TopoDS::Edge(anOrEd1);
}
if ( degen2 ) {
- TopoDS_Shape aLocalShape = ex2.Current().EmptyCopied();
- Edge2 = TopoDS::Edge(aLocalShape);
-// Edge2 = TopoDS::Edge(ex2.Current().EmptyCopied());
- TopExp::Vertices(TopoDS::Edge(ex2.Current()),V2f,V2l);
- V2f.Orientation(TopAbs_FORWARD);
- B.Add(Edge2,V2f);
- V2l.Orientation(TopAbs_REVERSED);
- B.Add(Edge2,V2l);
- B.Range(Edge2,0,1);
+ //if (!myOldNewShapes.IsBound(anOrEd2))
+ {
+ TopoDS_Shape aLocalShape = anOrEd2.EmptyCopied();
+ Edge2 = TopoDS::Edge(aLocalShape);
+ // Edge2 = TopoDS::Edge(ex2.Current().EmptyCopied());
+ TopExp::Vertices(anOrEd2,V2f,V2l);
+ V2f.Orientation(TopAbs_FORWARD);
+ B.Add(Edge2,V2f);
+ V2l.Orientation(TopAbs_REVERSED);
+ B.Add(Edge2,V2l);
+ B.Range(Edge2,0,1);
+ myOldNewShapes.Bind(anOrEd2, Edge2);
+ }
+ //else
+ // Edge2 = TopoDS::Edge(myOldNewShapes(anOrEd2));
}
else {
- Edge2 = TopoDS::Edge(ex2.Current());
+ Edge2 = TopoDS::Edge(anOrEd2);
}
Standard_Boolean Periodic = (BRep_Tool::IsClosed(Edge1) || degen1) &&
Map.Bind(Vl_toMap, Edge4);
}
- // make the wire
-
- TopoDS_Wire W;
- B.MakeWire(W);
-
- if (! (degen1 && IType == 4))
- B.Add(W,Edge1);
- B.Add(W,Edge4);
- if (! (degen2 && IType == 4))
- B.Add(W,Edge2.Reversed());
- B.Add(W,Edge3);
-
- B.Add(Face,W);
-
- B.Add(myShell,Face);
+ if (!myMutableInput)
+ {
+ const TopoDS_Shape* aNewEd1 = myOldNewShapes.Seek(Edge1);
+ if (aNewEd1)
+ Edge1 = TopoDS::Edge(*aNewEd1);
+ else if (aFirstWire && !degen1 && (IType != 4 || BRep_Tool::SameParameter(Edge1) || BRep_Tool::SameRange(Edge1)))
+ Edge1 = CreateNewEdge(Edge1, myOldNewShapes, Wire1, aModifWires);
+
+ const TopoDS_Shape* aNewEd2 = myOldNewShapes.Seek(Edge2);
+ if (aNewEd2)
+ Edge2 = TopoDS::Edge(*aNewEd2);
+ else if (!degen2 && (IType != 4 || BRep_Tool::SameParameter(Edge2) || BRep_Tool::SameRange(Edge2)))
+ Edge2 = CreateNewEdge(Edge2, myOldNewShapes, Wire2, aModifWires);
+ }
- // complete myMap for edge1
- if (! (degen1 && IType == 4))
- {
- TopTools_ListOfShape Empty;
- if (!myMap.IsBound(Edge1)) myMap.Bind(Edge1,Empty);
- myMap(Edge1).Append(Face);
- }
-
// set the pcurves
-
Standard_Real T = Precision::Confusion();
if (IType != 4) //not plane
B.SameRange(Edge3,Standard_False);
B.SameRange(Edge4,Standard_False);
+ // make the wire
+
+ TopoDS_Wire W;
+ B.MakeWire(W);
+
+ if (! (degen1 && IType == 4))
+ B.Add(W,Edge1);
+ B.Add(W,Edge4);
+ if (! (degen2 && IType == 4))
+ B.Add(W,Edge2.Reversed());
+ B.Add(W,Edge3);
+
+ B.Add(Face,W);
+ B.Add(myShell,Face);
+
+ // complete myMap for edge1
+ if (! (degen1 && IType == 4))
+ {
+ TopTools_ListOfShape Empty;
+ if (!myMap.IsBound(Edge1)) myMap.Bind(Edge1,Empty);
+ myMap(Edge1).Append(Face);
+ }
+
tantque = ex1.More() && ex2.More();
if (wPoint1) tantque = ex2.More();
if (wPoint2) tantque = ex1.More();
}
+
+ aFirstWire = Standard_False;
+
+ }
+
+ //all vertices from myShell are the part of orig. section wires
+ //add edges from the myShell which can be safely updated to reshaper?? (i.e. already empty-copied/newly created)
+ if (myMutableInput)
+ BRepLib::SameParameter(myShell);
+ else
+ {
+ BRepLib::SameParameter(myShell, myReshaper );
+ myShell = TopoDS::Shell(myReshaper.Apply(myShell));
}
- BRepLib::SameParameter(myShell);
if (uClosed && DegenFirst && DegenLast)
myShell.Closed(Standard_True);
-}
+ //update wire's history
+ TopExp_Explorer anExpE;
+ for (int i = 1; i <= aModifWires.Extent(); i++)
+ {
+ const TopoDS_Shape& aCurW = aModifWires(i);
+ TopoDS_Wire aNewW;
+ B.MakeWire(aNewW);
+
+ anExpE.Init(aCurW, TopAbs_EDGE);
+ for (;anExpE.More();anExpE.Next())
+ {
+ const TopoDS_Shape& aCurE = anExpE.Current();
+ const TopoDS_Shape& aNSEdge = Modified(aCurE);
+ B.Add(aNewW, aNSEdge);
+ }
+
+ //
+ aNewW.Free(aCurW.Free());
+ aNewW.Modified(aCurW.Modified());
+ aNewW.Checked(aCurW.Checked());
+ aNewW.Orientable(aCurW.Orientable());
+ aNewW.Closed(aCurW.Closed());
+ aNewW.Infinite(aCurW.Infinite());
+ aNewW.Convex(aCurW.Convex());
+ //
+
+ myOldNewShapes.Bind(aCurW, aNewW);
+ }
+}
//=======================================================================
//function : GeneratedShapes
return myMap;
}
+//=======================================================================
+//function : Modified
+//purpose :
+//=======================================================================
+TopoDS_Shape BRepFill_Generator::Modified (const TopoDS_Shape& theShape) const
+{
+ const TopoDS_Shape* aDSh = myOldNewShapes.Seek(theShape);
+ TopoDS_Shape aNsh = aDSh ? *aDSh : theShape;
+ TopoDS_Shape aPrevSh;
+ do
+ {
+ aPrevSh = aNsh;
+ aNsh = myReshaper.Value(aNsh);
+ } while (aNsh != aPrevSh);
+ return aNsh;
+}
+
+//=======================================================================
+//function : IsModified
+//purpose :
+//=======================================================================
+Standard_Boolean BRepFill_Generator::IsModified (const TopoDS_Shape& theShape) const
+{
+ return myOldNewShapes.IsBound(theShape) || myReshaper.IsRecorded(theShape);
+}
+
+//=======================================================================
+//function : SetMutableInput
+//purpose :
+//=======================================================================
+void BRepFill_Generator::SetMutableInput(const Standard_Boolean IsMutableInput)
+{
+ myMutableInput = IsMutableInput;
+}
+//=======================================================================
+//function : GetMutableInput
+//purpose :
+//=======================================================================
+Standard_Boolean BRepFill_Generator::GetMutableInput() const
+{
+ return myMutableInput;
+}
#include <TopTools_SequenceOfShape.hxx>
#include <TopoDS_Shell.hxx>
#include <TopTools_DataMapOfShapeListOfShape.hxx>
+#include <TopTools_DataMapOfShapeShape.hxx>
#include <TopTools_ListOfShape.hxx>
+#include <BRepTools_ReShape.hxx>
class TopoDS_Wire;
class TopoDS_Shell;
class TopoDS_Shape;
-
//! Compute a topological surface ( a shell) using
//! generating wires. The face of the shell will be
//! ruled surfaces passing by the wires.
//! <SSection> of a section.
Standard_EXPORT const TopTools_ListOfShape& GeneratedShapes (const TopoDS_Shape& SSection) const;
+ //! Returns a modified shape
+ Standard_EXPORT TopoDS_Shape Modified (const TopoDS_Shape& theShape) const;
+
+ //! Check if shape have been modified
+ Standard_EXPORT Standard_Boolean IsModified (const TopoDS_Shape& theShape) const;
+ Standard_EXPORT void SetMutableInput(const Standard_Boolean IsMutableInput);
+
+ Standard_EXPORT Standard_Boolean GetMutableInput() const;
protected:
TopTools_SequenceOfShape myWires;
TopoDS_Shell myShell;
TopTools_DataMapOfShapeListOfShape myMap;
-
+ TopTools_DataMapOfShapeShape myOldNewShapes;
+ BRepTools_ReShape myReshaper;
+ Standard_Boolean myMutableInput;
};
#include <TopTools_IndexedDataMapOfShapeListOfShape.hxx>
#include <TopTools_ListIteratorOfListOfShape.hxx>
#include <BRepAdaptor_Surface.hxx>
+#include <TopTools_DataMapOfShapeReal.hxx>
+#include <TopTools_DataMapIteratorOfDataMapOfShapeReal.hxx>
+#include <BRepTools_ReShape.hxx>
//=======================================================================
//function : PreciseUpar
myDegen1(Standard_False), myDegen2(Standard_False)
{
myWCheck = Standard_True;
+ myMutableInput = Standard_True;
//----------------------------
myParamType = Approx_ChordLength;
myDegMax = 8;
myIsRuled = ruled;
myPres3d = pres3d;
myWCheck = Standard_True;
+ myMutableInput = Standard_True;
//----------------------------
myParamType = Approx_ChordLength;
myDegMax = 6;
void BRepOffsetAPI_ThruSections::CreateRuled()
{
Standard_Integer nbSects = myWires.Length();
- BRepFill_Generator aGene;
+ //?? should we clean myBFGenerator in some other places??
+ myBFGenerator.Nullify();
+ myBFGenerator = new BRepFill_Generator();
+ myBFGenerator->SetMutableInput(GetMutableInput());
// for (Standard_Integer i=1; i<=nbSects; i++) {
Standard_Integer i;
for (i=1; i<=nbSects; i++) {
- aGene.AddWire(TopoDS::Wire(myWires(i)));
+ myBFGenerator->AddWire(TopoDS::Wire(myWires(i)));
}
- aGene.Perform();
- TopoDS_Shell shell = aGene.Shell();
+ myBFGenerator->Perform();
+ TopoDS_Shell shell = myBFGenerator->Shell();
if (myIsSolid) {
TopoDS_Wire wire1 = TopoDS::Wire(myWires.First());
TopoDS_Wire wire2 = TopoDS::Wire(myWires.Last());
+
+ //myBFGenerator stores the same 'myWires'
+ if (myBFGenerator->IsModified(wire1))
+ wire1 = TopoDS::Wire(myBFGenerator->Modified(wire1));
+ if (myBFGenerator->IsModified(wire2))
+ wire2 = TopoDS::Wire(myBFGenerator->Modified(wire2));
+
myShape = MakeSolid(shell, wire1, wire2, myPres3d, myFirst, myLast);
}
TopTools_MapOfShape MapFaces;
if (degen2){
- TopoDS_Vertex Vdegen = TopExp::FirstVertex(TopoDS::Edge(edge2));
+ TopoDS_Vertex Vdegen = TopoDS::Vertex(myBFGenerator->Modified(TopExp::FirstVertex(TopoDS::Edge(edge2))));
for (it.Initialize(MV.FindFromKey(Vdegen)); it.More(); it.Next()) {
MapFaces.Add(it.Value());
}
}
else {
- for (it.Initialize(M.FindFromKey(edge2)); it.More(); it.Next()) {
+ for (it.Initialize(M.FindFromKey(myBFGenerator->Modified(edge2))); it.More(); it.Next()) {
MapFaces.Add(it.Value());
}
}
if (degen1) {
- TopoDS_Vertex Vdegen = TopExp::FirstVertex(TopoDS::Edge(edge1));
+ TopoDS_Vertex Vdegen = TopoDS::Vertex(myBFGenerator->Modified(TopExp::FirstVertex(TopoDS::Edge(edge1))));
for (it.Initialize(MV.FindFromKey(Vdegen)); it.More(); it.Next()) {
const TopoDS_Shape& Face = it.Value();
if (MapFaces.Contains(Face)) {
}
}
else {
- for (it.Initialize(M.FindFromKey(edge1)); it.More(); it.Next()) {
+ for (it.Initialize(M.FindFromKey(myBFGenerator->Modified(edge1))); it.More(); it.Next()) {
const TopoDS_Shape& Face = it.Value();
if (MapFaces.Contains(Face)) {
myEdgeFace.Bind(edge1, Face);
Done();
}
+ TopTools_DataMapOfShapeReal aVToTol;
TopExp_Explorer ex(myShape,TopAbs_EDGE);
while (ex.More()) {
- const TopoDS_Edge& CurE = TopoDS::Edge(ex.Current());
- B.SameRange(CurE, Standard_False);
- B.SameParameter(CurE, Standard_False);
- Standard_Real tol = BRep_Tool::Tolerance(CurE);
- BRepLib::SameParameter(CurE,tol);
+ const TopoDS_Edge& aCurE = TopoDS::Edge(ex.Current());
+ B.SameRange(aCurE, Standard_False);
+ B.SameParameter(aCurE, Standard_False);
+ Standard_Real aTol = BRep_Tool::Tolerance(aCurE);
+ if (myMutableInput)
+ BRepLib::SameParameter(aCurE,aTol);
+ else
+ {
+ //all edges from myShape can be safely updated/changed
+ //all vertices from myShape are the part of the original wires
+ Standard_Real aNewTol = -1;
+ BRepLib::SameParameter(aCurE, aTol, aNewTol, Standard_True);
+ if (aNewTol > 0)
+ {
+ TopoDS_Vertex aV1, aV2;
+ TopExp::Vertices(aCurE,aV1,aV2);
+ if (!aV1.IsNull())
+ {
+ const Standard_Real* anOldTol = aVToTol.Seek(aV1);
+ if (!anOldTol || (anOldTol && *anOldTol < aNewTol))
+ aVToTol.Bind(aV1,aNewTol);
+ }
+ if (!aV2.IsNull())
+ {
+ const Standard_Real* anOldTol = aVToTol.Seek(aV2);
+ if (!anOldTol || (anOldTol && *anOldTol < aNewTol))
+ aVToTol.Bind(aV2,aNewTol);
+ }
+ }
+ }
ex.Next();
}
+
+ if (!myMutableInput)
+ {
+ BRepTools_ReShape aReshaper;
+ TopTools_DataMapIteratorOfDataMapOfShapeReal itM(aVToTol);
+ for (;itM.More();itM.Next())
+ {
+ const TopoDS_Vertex& aVert = TopoDS::Vertex(itM.Key());
+ const Standard_Real& aNewToler = itM.Value();
+ if (BRep_Tool::Tolerance(aVert) < aNewToler)
+ {
+ TopoDS_Vertex aNVert = TopoDS::Vertex(aVert.EmptyCopied());
+ B.UpdateVertex(aNVert, aNewToler);
+ aReshaper.Replace(aVert, aNVert);
+ }
+ }
+ myShape = aReshaper.Apply(myShape);
+ //?? Modified(shape) is not present in this class
+ }
}
//=======================================================================
//we return the whole bunch of longitudinal edges
TopExp::MapShapesAndAncestors(myShape, TopAbs_VERTEX, TopAbs_EDGE, VEmap);
TopTools_IndexedMapOfShape Emap;
- const TopTools_ListOfShape& Elist = VEmap.FindFromKey(S);
+ TopoDS_Shape aNewS = S;
+ if (myIsRuled && !myBFGenerator.IsNull())
+ aNewS = myBFGenerator->Modified(S);
+ const TopTools_ListOfShape& Elist = VEmap.FindFromKey(aNewS);
TopTools_ListIteratorOfListOfShape itl(Elist);
for (; itl.More(); itl.Next())
{
//Comprehensive check for possible case of
//one vertex for start and end degenerated sections:
//we must take only outgoing or only ingoing edges
- if ((IsDegen[0] && S.IsSame(VV[0])) ||
- (IsDegen[1] && S.IsSame(VV[1])))
+ if ((IsDegen[0] && aNewS.IsSame(VV[0])) ||
+ (IsDegen[1] && aNewS.IsSame(VV[1])))
Emap.Add(anEdge);
}
}
TopExp::LastVertex(anEdge) : TopExp::FirstVertex(anEdge);
const TopTools_ListOfShape& EElist = VEmap.FindFromKey(aVertex);
TopTools_IndexedMapOfShape EmapOfSection;
- TopExp::MapShapes(myWires(IndOfSec), TopAbs_EDGE, EmapOfSection);
+ TopoDS_Shape aWsec = myWires(IndOfSec);
+ if (myIsRuled && !myBFGenerator.IsNull())
+ aWsec = myBFGenerator->Modified(aWsec);
+ TopExp::MapShapes(aWsec, TopAbs_EDGE, EmapOfSection);
TopoDS_Edge NextEdge;
for (itl.Initialize(EElist); itl.More(); itl.Next())
{
break;
}
+ if (myIsRuled && !myBFGenerator.IsNull())
+ FirstEdge = TopoDS::Edge(myBFGenerator->Modified(FirstEdge));
+
//Find the first longitudinal edge
TopoDS_Face FirstFace = TopoDS::Face(AllFaces(Eindex));
FirstFace.Orientation(TopAbs_FORWARD);
return myUseSmoothing;
}
+//=======================================================================
+//function : SetMutableInput
+//purpose :
+//=======================================================================
+void BRepOffsetAPI_ThruSections::SetMutableInput(const Standard_Boolean IsMutableInput)
+{
+ myMutableInput = IsMutableInput;
+}
+//=======================================================================
+//function : GetMutableInput
+//purpose :
+//=======================================================================
+Standard_Boolean BRepOffsetAPI_ThruSections::GetMutableInput() const
+{
+ return myMutableInput;
+}
#include <Standard_Integer.hxx>
#include <BRepBuilderAPI_MakeShape.hxx>
#include <TopTools_Array1OfShape.hxx>
+#include <NCollection_Handle.hxx>
class Standard_DomainError;
class TopoDS_Wire;
class TopoDS_Vertex;
class TopoDS_Shape;
class Geom_BSplineSurface;
-
+class BRepFill_Generator;
//! Describes functions to build a loft. This is a shell or a
//! solid passing through a set of sections in a given
//! Returns the Face generated by each edge of the first wire
Standard_EXPORT TopoDS_Shape GeneratedFace (const TopoDS_Shape& Edge) const;
+ Standard_EXPORT void SetMutableInput(const Standard_Boolean IsMutableInput);
+
//! Returns a list of new shapes generated from the shape
//! S by the shell-generating algorithm.
//! This function is redefined from BRepBuilderAPI_MakeShape::Generated.
//! S can be an edge or a vertex of a given Profile (see methods AddWire and AddVertex).
Standard_EXPORT virtual const TopTools_ListOfShape& Generated (const TopoDS_Shape& S) Standard_OVERRIDE;
-
+ Standard_EXPORT Standard_Boolean GetMutableInput() const;
+
protected:
Standard_Integer myDegMax;
Standard_Real myCritWeights[3];
Standard_Boolean myUseSmoothing;
-
+ Standard_Boolean myMutableInput;
+ NCollection_Handle<BRepFill_Generator> myBFGenerator;
};
Standard_Boolean check = Standard_True;
Standard_Boolean samenumber = Standard_True;
Standard_Integer index = 2;
- // Lecture option
+ // Lecture option
if (!strcmp(a[1],"-N")) {
if (n<7) return 1;
check = Standard_False;
Generator = 0;
}
Generator = new BRepOffsetAPI_ThruSections(issolid,isruled);
-
+ Standard_Boolean IsMutableInput = Standard_True;
Standard_Integer NbEdges = 0;
Standard_Boolean IsFirstWire = Standard_False;
for ( Standard_Integer i = index+2; i<= n-1 ; i++) {
+ if (!strcmp(a[i],"-save"))
+ {
+ IsMutableInput = Standard_False;
+ continue;
+ }
Standard_Boolean IsWire = Standard_True;
Shape = DBRep::Get(a[i], TopAbs_WIRE);
if (!Shape.IsNull())
- {
- Generator->AddWire(TopoDS::Wire(Shape));
- if (!IsFirstWire)
- IsFirstWire = Standard_True;
- else
- IsFirstWire = Standard_False;
- }
+ {
+ Generator->AddWire(TopoDS::Wire(Shape));
+ if (!IsFirstWire)
+ IsFirstWire = Standard_True;
+ else
+ IsFirstWire = Standard_False;
+ }
else
- {
- Shape = DBRep::Get(a[i], TopAbs_VERTEX);
- IsWire = Standard_False;
- if (!Shape.IsNull())
- Generator->AddVertex(TopoDS::Vertex(Shape));
- else
- return 1;
- }
+ {
+ Shape = DBRep::Get(a[i], TopAbs_VERTEX);
+ IsWire = Standard_False;
+ if (!Shape.IsNull())
+ Generator->AddVertex(TopoDS::Vertex(Shape));
+ else
+ return 1;
+ }
Standard_Integer cpt = 0;
TopExp_Explorer PE;
NbEdges = cpt;
else
if (IsWire && cpt != NbEdges)
- samenumber = Standard_False;
-
+ samenumber = Standard_False;
+
}
+ Generator->SetMutableInput(IsMutableInput);
+
check = (check || !samenumber);
Generator->CheckCompatibility(check);
002 not_solids
003 specific
004 bugs
-
+005 not_solids_locked006 solids_locked
+007 specific_locked
\ No newline at end of file
--- /dev/null
+restore [locate_data_file D1] w1
+restore [locate_data_file D1] w2
+ttranslate w2 0 20 0
+setflags w1 locked
+setflags w2 locked
+thrusections result 0 0 w1 w2 -save
+checkprops result -s 200
--- /dev/null
+restore [locate_data_file D2] w1
+restore [locate_data_file D4] w2
+ttranslate w2 0 20 0
+setflags w1 locked
+setflags w2 locked
+thrusections result 0 0 w1 w2 -save
+checkprops result -s 161.603
--- /dev/null
+restore [locate_data_file D4] w1
+restore [locate_data_file D1] w2
+ttranslate w2 0 20 0
+setflags w1 locked
+setflags w2 locked
+thrusections result 0 0 w1 w2 -save
+checkprops result -s 200
--- /dev/null
+restore [locate_data_file D5] w1
+restore [locate_data_file D4] w2
+ttranslate w2 0 20 0
+setflags w1 locked
+setflags w2 locked
+thrusections result 0 0 w1 w2 -save
+checkprops result -s 161.603
--- /dev/null
+restore [locate_data_file C2] w1
+restore [locate_data_file C1] w2
+ttranslate w2 0 0 40
+setflags w1 locked
+setflags w2 locked
+thrusections result 0 0 w1 w2 -save
+checkprops result -s 2513.27
--- /dev/null
+restore [locate_data_file C3] w1
+restore [locate_data_file C1] w2
+ttranslate w2 0 0 40
+setflags w1 locked
+setflags w2 locked
+thrusections result 0 0 w1 w2 -save
+checkprops result -s 2196.82
--- /dev/null
+restore [locate_data_file C4] w1
+restore [locate_data_file C1] w2
+ttranslate w2 0 0 40
+setflags w1 locked
+setflags w2 locked
+thrusections result 0 0 w1 w2 -save
+checkprops result -s 2513.27
--- /dev/null
+restore [locate_data_file C5] w1
+restore [locate_data_file C1] w2
+ttranslate w2 0 0 40
+setflags w1 locked
+setflags w2 locked
+thrusections result 0 0 w1 w2 -save
+checkprops result -s 2513.27
--- /dev/null
+restore [locate_data_file C6] w1
+restore [locate_data_file C1] w2
+ttranslate w2 0 0 40
+setflags w1 locked
+setflags w2 locked
+thrusections result 0 0 w1 w2 -save
+checkprops result -s 2196.82
--- /dev/null
+restore [locate_data_file C7] w1
+restore [locate_data_file C1] w2
+ttranslate w2 0 0 40
+setflags w1 locked
+setflags w2 locked
+thrusections result 0 0 w1 w2 -save
+checkprops result -s 2020.65
--- /dev/null
+restore [locate_data_file C8] w1
+restore [locate_data_file C1] w2
+ttranslate w2 0 0 40
+setflags w1 locked
+setflags w2 locked
+thrusections result 0 0 w1 w2 -save
+checkprops result -s 2020.65
--- /dev/null
+restore [locate_data_file C9] w1
+restore [locate_data_file C1] w2
+ttranslate w2 0 0 40
+setflags w1 locked
+setflags w2 locked
+thrusections result 0 0 w1 w2 -save
+checkprops result -s 1834.5
--- /dev/null
+restore [locate_data_file C10] w1
+restore [locate_data_file C1] w2
+ttranslate w2 0 0 40
+setflags w1 locked
+setflags w2 locked
+thrusections result 0 0 w1 w2 -save
+checkprops result -s 2020.65
--- /dev/null
+restore [locate_data_file C11] w1
+restore [locate_data_file C1] w2
+ttranslate w2 0 0 40
+setflags w1 locked
+setflags w2 locked
+thrusections result 0 0 w1 w2 -save
+checkprops result -s 2020.65
--- /dev/null
+restore [locate_data_file C12] w1
+restore [locate_data_file C1] w2
+ttranslate w2 0 0 40
+setflags w1 locked
+setflags w2 locked
+thrusections result 0 0 w1 w2 -save
+checkprops result -s 1834.5
--- /dev/null
+restore [locate_data_file C13] w1
+restore [locate_data_file C1] w2
+setflags w1 locked
+setflags w2 locked
+thrusections result 0 0 w1 w2 -save
+checkprops result -s 1295.31
--- /dev/null
+restore [locate_data_file C1] w1
+restore [locate_data_file C10] w2
+ttranslate w2 0 0 40
+setflags w1 locked
+setflags w2 locked
+thrusections result 0 0 w1 w2 -save
+checkprops result -s 2020.65
--- /dev/null
+restore [locate_data_file C3] w1
+restore [locate_data_file C11] w2
+ttranslate w2 0 0 40
+setflags w1 locked
+setflags w2 locked
+thrusections result 0 0 w1 w2 -save
+checkprops result -s 1690.09
--- /dev/null
+restore [locate_data_file C5] w1
+restore [locate_data_file C12] w2
+ttranslate w2 0 0 40
+setflags w1 locked
+setflags w2 locked
+thrusections result 0 0 w1 w2 -save
+checkprops result -s 1834.5
--- /dev/null
+restore [locate_data_file C7] w1
+restore [locate_data_file C13] w2
+setflags w1 locked
+setflags w2 locked
+thrusections result 0 0 w1 w2 -save
+checkprops result -s 762.417
--- /dev/null
+restore [locate_data_file C10] w1
+restore [locate_data_file C10] w2
+ttranslate w2 0 0 40
+setflags w1 locked
+setflags w2 locked
+thrusections result 0 0 w1 w2 -save
+checkprops result -s 1507.96
--- /dev/null
+restore [locate_data_file C12] w1
+restore [locate_data_file C11] w2
+ttranslate w2 0 0 40
+setflags w1 locked
+setflags w2 locked
+thrusections result 0 0 w1 w2 -save
+checkprops result -s 1314
--- /dev/null
+dall
+restore [locate_data_file buc60318.rle] w
+explode w W
+setflags w locked
+thrusections result 0 0 w_1 w_2 w_3 w_4 w_5 -save
+checkprops result -s 254109
--- /dev/null
+restore [locate_data_file cts21295_1.brep] f1
+restore [locate_data_file cts21295_2.brep] f2
+restore [locate_data_file cts21295_3.brep] f3
+explode f1 w
+explode f2 w
+explode f3 w
+setflags f1_1 locked
+setflags f2_1 locked
+setflags f3_1 locked
+thrusections result 1 0 f1_1 f2_1 f3_1 -save
+checkprops result -s 49757.1
--- /dev/null
+restore [locate_data_file cts21570_1.rle] w1
+restore [locate_data_file cts21570_2.rle] w2
+setflags w1 locked
+setflags w2 locked
+thrusections result 1 0 w1 w2 -save
+checkprops result -s 29817.5
--- /dev/null
+restore [locate_data_file cts21570_1.rle] w1
+restore [locate_data_file cts21570_2.rle] w2
+setflags w1 locked
+setflags w2 locked
+thrusections result 1 0 w2 w1 -save
+checkprops result -s 29817.5
--- /dev/null
+restore [locate_data_file cts21570_1.rle] w1
+restore [locate_data_file cts21570_2.rle] w2
+orientation w1 F
+setflags w1 locked
+setflags w2 locked
+thrusections result 1 0 w1 w2 -save
+checkprops result -s 29817.5
--- /dev/null
+restore [locate_data_file cts21570_1.rle] w1
+restore [locate_data_file cts21570_2.rle] w2
+orientation w1 F
+setflags w1 locked
+setflags w2 locked
+thrusections result 1 0 w2 w1 -save
+checkprops result -s 29817.5
--- /dev/null
+restore [locate_data_file cts21570_1.rle] w1
+restore [locate_data_file cts21570_2.rle] w2
+orientation w1 F
+orientation w2 R
+setflags w1 locked
+setflags w2 locked
+thrusections result 1 0 w1 w2 -save
+checkprops result -s 29817.5
--- /dev/null
+restore [locate_data_file cts21570_1.rle] w1
+restore [locate_data_file cts21570_2.rle] w2
+orientation w1 F
+orientation w2 R
+setflags w1 locked
+setflags w2 locked
+thrusections result 1 0 w2 w1 -save
+checkprops result -s 29817.5
--- /dev/null
+restore [locate_data_file cts21570_1.rle] w1
+restore [locate_data_file cts21570_2.rle] w2
+orientation w1 F
+orientation w2 R
+orientation w1 R
+setflags w1 locked
+setflags w2 locked
+thrusections result 1 0 w1 w2 -save
+checkprops result -s 29817.5
--- /dev/null
+restore [locate_data_file cts21570_1.rle] w1
+restore [locate_data_file cts21570_2.rle] w2
+orientation w1 F
+orientation w2 R
+orientation w1 R
+setflags w1 locked
+setflags w2 locked
+thrusections result 1 0 w2 w1 -save
+checkprops result -s 29817.5
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+#
+# * v3
+# | \
+# | \
+# | \
+# | \
+# | /* v2
+# | /
+# | / * v4, v5
+# | /
+# *
+# v1
+#
+
+vertex v1 0 0 0
+vertex v2 5 5 0
+vertex v3 0 10 0
+
+vertex v4 5 2.5 20
+vertex v5 5 2.5 -20
+
+edge e1 v1 v2
+edge e2 v2 v3
+edge e3 v3 v1
+
+wire w1 e1 e2 e3
+
+set issolid 0
+set isruled 1
+setflags w1 locked
+setflags v4 locked
+setflags v5 locked
+
+thrusections result ${issolid} ${isruled} v4 w1 v5 -save
+
+
+checkprops result -s 490.101
+
+checknbshapes result -vertex 5 -edge 9 -wire 6 -face 6 -shell 1 -solid 0 -compsolid 0 -compound 0 -shape 27
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+#
+# * v3
+# | \
+# | \
+# | \
+# | \
+# | /* v2
+# | /
+# | / * v4, v5
+# | /
+# *
+# v1
+#
+
+vertex v1 0 0 0
+vertex v2 5 5 0
+vertex v3 0 10 0
+
+vertex v4 5 2.5 20
+vertex v5 5 2.5 -20
+
+edge e1 v1 v2
+edge e2 v2 v3
+edge e3 v3 v1
+
+wire w1 e1 e2 e3
+
+setflags w1 locked
+setflags v4 locked
+setflags v5 locked
+
+set issolid 1
+set isruled 1
+thrusections result ${issolid} ${isruled} v4 w1 v5 -save
+
+
+checkprops result -s 490.101
+
+
+checknbshapes result -vertex 5 -edge 9 -wire 6 -face 6 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 28
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+#
+# * v3
+# | \
+# | \
+# | \
+# | \
+# | /* v2
+# | /
+# | / * v4, v5
+# | /
+# *
+# v1
+#
+
+vertex v1 0 0 0
+vertex v2 5 5 0
+vertex v3 0 10 0
+
+vertex v4 5 2.5 20
+vertex v5 5 2.5 -20
+
+edge e1 v1 v2
+edge e2 v2 v3
+edge e3 v3 v1
+
+wire w1 e1 e2 e3
+
+set issolid 0
+set isruled 0
+
+setflags w1 locked
+setflags v4 locked
+setflags v5 locked
+
+thrusections result ${issolid} ${isruled} v4 w1 v5 -save
+
+
+checkprops result -s 651.466
+
+checknbshapes result -vertex 2 -edge 9 -wire 3 -face 3 -shell 1 -solid 0 -compsolid 0 -compound 0 -shape 18
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+#
+# * v3
+# | \
+# | \
+# | \
+# | \
+# | /* v2
+# | /
+# | / * v4, v5
+# | /
+# *
+# v1
+#
+
+vertex v1 0 0 0
+vertex v2 5 5 0
+vertex v3 0 10 0
+
+vertex v4 5 2.5 20
+vertex v5 5 2.5 -20
+
+edge e1 v1 v2
+edge e2 v2 v3
+edge e3 v3 v1
+
+wire w1 e1 e2 e3
+
+setflags w1 locked
+setflags v4 locked
+setflags v5 locked
+
+
+set issolid 1
+set isruled 0
+thrusections result ${issolid} ${isruled} v4 w1 v5 -save
+
+
+checkprops result -s 651.466
+
+
+checknbshapes result -vertex 2 -edge 9 -wire 3 -face 3 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 19
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+#
+# * v2
+# / \
+# / \
+# / * \
+# / v4, v5 \
+# *----------------* v3
+# v1
+#
+
+vertex v1 0 0 0
+vertex v2 5 5 0
+vertex v3 10 0 0
+
+vertex v4 5 2.5 20
+vertex v5 5 2.5 -20
+
+edge e1 v1 v2
+edge e2 v2 v3
+edge e3 v3 v1
+
+wire w1 e1 e2 e3
+
+setflags w1 locked
+setflags v4 locked
+setflags v5 locked
+
+set issolid 1
+set isruled 1
+thrusections result ${issolid} ${isruled} v4 w1 v5 -save
+
+
+checkprops result -s 485.502
+
+
+checknbshapes result -vertex 5 -edge 9 -wire 6 -face 6 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 28
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+#
+# * v2
+# / \
+# / \
+# / * \
+# / v4, v5 \
+# *----------------* v3
+# v1
+#
+
+vertex v1 0 0 0
+vertex v2 5 5 0
+vertex v3 10 0 0
+
+vertex v4 5 2.5 20
+vertex v5 5 2.5 -20
+
+edge e1 v1 v2
+edge e2 v2 v3
+edge e3 v3 v1
+
+wire w1 e1 e2 e3
+
+set issolid 0
+set isruled 0
+
+setflags w1 locked
+setflags v4 locked
+setflags v5 locked
+
+thrusections result ${issolid} ${isruled} v4 w1 v5 -save
+
+
+checkprops result -s 646.621
+
+checknbshapes result -vertex 2 -edge 9 -wire 3 -face 3 -shell 1 -solid 0 -compsolid 0 -compound 0 -shape 18
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+#
+# * v2
+# / \
+# / \
+# / * \
+# / v4, v5 \
+# *----------------* v3
+# v1
+#
+
+vertex v1 0 0 0
+vertex v2 5 5 0
+vertex v3 10 0 0
+
+vertex v4 5 2.5 20
+vertex v5 5 2.5 -20
+
+edge e1 v1 v2
+edge e2 v2 v3
+edge e3 v3 v1
+
+wire w1 e1 e2 e3
+
+setflags w1 locked
+setflags v4 locked
+setflags v5 locked
+
+set issolid 1
+set isruled 0
+thrusections result ${issolid} ${isruled} v4 w1 v5 -save
+
+
+checkprops result -s 646.621
+
+
+checknbshapes result -vertex 2 -edge 9 -wire 3 -face 3 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 19
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+circle c1 0 0 0 10
+mkedge e1 c1
+wire w1 e1
+
+vertex v1 0 0 20
+vertex v2 0 0 -20
+
+set issolid 1
+set isruled 1
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+
+
+checkprops result -s 1404.96
+
+
+checknbshapes result -vertex 3 -edge 5 -wire 2 -face 2 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 14
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+circle c1 0 0 0 10
+mkedge e1 c1
+wire w1 e1
+
+vertex v1 0 0 20
+vertex v2 0 0 -20
+
+set issolid 0
+set isruled 0
+
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+
+
+checkprops result -s 1829.23
+
+checknbshapes result -vertex 2 -edge 3 -wire 1 -face 1 -shell 1 -solid 0 -compsolid 0 -compound 0 -shape 8
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+circle c1 0 0 0 10
+mkedge e1 c1
+wire w1 e1
+
+vertex v1 0 0 20
+vertex v2 0 0 -20
+
+set issolid 1
+set isruled 0
+
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+
+
+checkprops result -s 1829.23
+
+
+checknbshapes result -vertex 2 -edge 3 -wire 1 -face 1 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 9
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+circle c1 0 0 0 10
+mkedge e1 c1
+wire w1 e1
+
+vertex v1 40 0 20
+vertex v2 40 0 -20
+
+set issolid 1
+set isruled 1
+
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+
+
+checkprops result -s 2160.94
+
+
+checknbshapes result -vertex 3 -edge 5 -wire 2 -face 2 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 14
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+circle c1 0 0 0 10
+mkedge e1 c1
+wire w1 e1
+
+vertex v1 40 0 20
+vertex v2 40 0 -20
+
+set issolid 0
+set isruled 0
+
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+
+
+checkprops result -s 2556.25
+
+checknbshapes result -vertex 2 -edge 3 -wire 1 -face 1 -shell 1 -solid 0 -compsolid 0 -compound 0 -shape 8
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+circle c1 0 0 0 10
+mkedge e1 c1
+wire w1 e1
+
+vertex v1 40 0 20
+vertex v2 40 0 -20
+
+set issolid 1
+set isruled 0
+
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+
+
+checkprops result -s 2556.25
+
+
+checknbshapes result -vertex 2 -edge 3 -wire 1 -face 1 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 9
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+ellipse ellipse1 0 0 0 10 5
+mkedge e1 ellipse1
+wire w1 e1
+
+vertex v1 0 0 20
+vertex v2 0 0 -20
+
+set issolid 1
+set isruled 1
+
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+
+
+checkprops result -s 1021.13
+
+
+checknbshapes result -vertex 3 -edge 5 -wire 2 -face 2 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 14
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+set BugNumber OCC7166
+
+ellipse ellipse1 0 0 0 10 5
+mkedge e1 ellipse1
+wire w1 e1
+
+vertex v1 0 0 20
+vertex v2 0 0 -20
+
+set issolid 0
+set isruled 0
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+
+
+checkprops result -s 1346.42
+
+checknbshapes result -vertex 2 -edge 3 -wire 1 -face 1 -shell 1 -solid 0 -compsolid 0 -compound 0 -shape 8
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+ellipse ellipse1 0 0 0 10 5
+mkedge e1 ellipse1
+wire w1 e1
+
+vertex v1 0 0 20
+vertex v2 0 0 -20
+
+set issolid 1
+set isruled 0
+
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save }
+
+
+checkprops result -s 1346.42
+
+
+checknbshapes result -vertex 2 -edge 3 -wire 1 -face 1 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 9
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+ellipse ellipse1 0 0 0 10 5
+mkedge e1 ellipse1
+wire w1 e1
+
+vertex v1 40 0 20
+vertex v2 40 0 -20
+
+set issolid 1
+set isruled 1
+
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+
+
+checkprops result -s 1353.78
+
+
+checknbshapes result -vertex 3 -edge 5 -wire 2 -face 2 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 14
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+ellipse ellipse1 0 0 0 10 5
+mkedge e1 ellipse1
+wire w1 e1
+
+vertex v1 40 0 20
+vertex v2 40 0 -20
+
+set issolid 0
+set isruled 0
+
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+
+
+checkprops result -s 1683.87
+
+checknbshapes result -vertex 2 -edge 3 -wire 1 -face 1 -shell 1 -solid 0 -compsolid 0 -compound 0 -shape 8
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+ellipse ellipse1 0 0 0 10 5
+mkedge e1 ellipse1
+wire w1 e1
+
+vertex v1 40 0 20
+vertex v2 40 0 -20
+
+set issolid 1
+set isruled 0
+
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+
+
+checkprops result -s 1683.87
+
+
+checknbshapes result -vertex 2 -edge 3 -wire 1 -face 1 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 9
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+beziercurve bc1 5 5 5 0 5 -5 0 -5 -5 0 -5 5 0 5 5 0
+mkedge e1 bc1
+wire w1 e1
+
+vertex v1 0 0 20
+vertex v2 0 0 -20
+
+set issolid 1
+set isruled 1
+
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+
+
+checkprops result -s 449.295
+
+
+checknbshapes result -vertex 3 -edge 5 -wire 2 -face 2 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 14
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+beziercurve bc1 5 5 5 0 5 -5 0 -5 -5 0 -5 5 0 5 5 0
+mkedge e1 bc1
+wire w1 e1
+
+vertex v1 0 0 20
+vertex v2 0 0 -20
+
+set issolid 0
+set isruled 0
+
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+
+
+checkprops result -s 597.473
+
+checknbshapes result -vertex 2 -edge 3 -wire 1 -face 1 -shell 1 -solid 0 -compsolid 0 -compound 0 -shape 8
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+beziercurve bc1 5 5 5 0 5 -5 0 -5 -5 0 -5 5 0 5 5 0
+mkedge e1 bc1
+wire w1 e1
+
+vertex v1 0 0 20
+vertex v2 0 0 -20
+
+set issolid 1
+set isruled 0
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save }
+
+
+checkprops result -s 597.473
+
+
+checknbshapes result -vertex 2 -edge 3 -wire 1 -face 1 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 9
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+beziercurve bc1 5 5 5 0 5 -5 0 -5 -5 0 -5 5 0 5 5 0
+mkedge e1 bc1
+wire w1 e1
+
+vertex v1 40 0 20
+vertex v2 40 0 -20
+
+set issolid 1
+set isruled 1
+
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+
+
+checkprops result -s 740.079
+
+
+checknbshapes result -vertex 3 -edge 5 -wire 2 -face 2 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 14
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+beziercurve bc1 5 5 5 0 5 -5 0 -5 -5 0 -5 5 0 5 5 0
+mkedge e1 bc1
+wire w1 e1
+
+vertex v1 40 0 20
+vertex v2 40 0 -20
+
+set issolid 0
+set isruled 0
+
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+
+
+checkprops result -s 881.045
+
+checknbshapes result -vertex 2 -edge 3 -wire 1 -face 1 -shell 1 -solid 0 -compsolid 0 -compound 0 -shape 8
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+beziercurve bc1 5 5 5 0 5 -5 0 -5 -5 0 -5 5 0 5 5 0
+mkedge e1 bc1
+wire w1 e1
+
+vertex v1 40 0 20
+vertex v2 40 0 -20
+
+set issolid 1
+set isruled 0
+
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+
+
+checkprops result -s 881.045
+
+
+checknbshapes result -vertex 2 -edge 3 -wire 1 -face 1 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 9
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+pbsplinecurve pbc1 3 9 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 -1 0 0 1 -2 2 0 1 0 1 0 1 2 2 0 1 1 0 0 1 2 -2 0 1 0 -1 0 1 -2 -2 0 1
+mkedge e1 pbc1
+wire w1 e1
+
+vertex v1 0 0 20
+vertex v2 0 0 -20
+
+set issolid 1
+set isruled 1
+
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+
+
+checkprops result -s 245.485
+
+
+checknbshapes result -vertex 3 -edge 5 -wire 2 -face 2 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 14
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+pbsplinecurve pbc1 3 9 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 -1 0 0 1 -2 2 0 1 0 1 0 1 2 2 0 1 1 0 0 1 2 -2 0 1 0 -1 0 1 -2 -2 0 1
+mkedge e1 pbc1
+wire w1 e1
+
+vertex v1 0 0 20
+vertex v2 0 0 -20
+
+set issolid 0
+set isruled 0
+
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+
+
+checkprops result -s 327.161
+
+checknbshapes result -vertex 2 -edge 3 -wire 1 -face 1 -shell 1 -solid 0 -compsolid 0 -compound 0 -shape 8
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+pbsplinecurve pbc1 3 9 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 -1 0 0 1 -2 2 0 1 0 1 0 1 2 2 0 1 1 0 0 1 2 -2 0 1 0 -1 0 1 -2 -2 0 1
+mkedge e1 pbc1
+wire w1 e1
+
+vertex v1 0 0 20
+vertex v2 0 0 -20
+
+set issolid 1
+set isruled 0
+
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+
+
+checkprops result -s 327.161
+
+
+checknbshapes result -vertex 2 -edge 3 -wire 1 -face 1 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 9
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+pbsplinecurve pbc1 3 9 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 -1 0 0 1 -2 2 0 1 0 1 0 1 2 2 0 1 1 0 0 1 2 -2 0 1 0 -1 0 1 -2 -2 0 1
+mkedge e1 pbc1
+wire w1 e1
+
+vertex v1 40 0 20
+vertex v2 40 0 -20
+
+set issolid 0
+set isruled 1
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+
+
+checkprops result -s 400.925
+
+checknbshapes result -vertex 3 -edge 5 -wire 2 -face 2 -shell 1 -solid 0 -compsolid 0 -compound 0 -shape 13
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+pbsplinecurve pbc1 3 9 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 -1 0 0 1 -2 2 0 1 0 1 0 1 2 2 0 1 1 0 0 1 2 -2 0 1 0 -1 0 1 -2 -2 0 1
+mkedge e1 pbc1
+wire w1 e1
+
+vertex v1 40 0 20
+vertex v2 40 0 -20
+
+set issolid 1
+set isruled 1
+
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+
+
+checkprops result -s 400.925
+
+
+checknbshapes result -vertex 3 -edge 5 -wire 2 -face 2 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 14
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+pbsplinecurve pbc1 3 9 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 -1 0 0 1 -2 2 0 1 0 1 0 1 2 2 0 1 1 0 0 1 2 -2 0 1 0 -1 0 1 -2 -2 0 1
+mkedge e1 pbc1
+wire w1 e1
+
+vertex v1 40 0 20
+vertex v2 40 0 -20
+
+set issolid 0
+set isruled 0
+
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+
+
+checkprops result -s 478.063
+
+checknbshapes result -vertex 2 -edge 3 -wire 1 -face 1 -shell 1 -solid 0 -compsolid 0 -compound 0 -shape 8
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "TODO OCC7166 ALL: Error : The area of result shape is"
+
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+pbsplinecurve pbc1 3 9 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 -1 0 0 1 -2 2 0 1 0 1 0 1 2 2 0 1 1 0 0 1 2 -2 0 1 0 -1 0 1 -2 -2 0 1
+mkedge e1 pbc1
+wire w1 e1
+
+vertex v1 40 0 20
+vertex v2 40 0 -20
+
+set issolid 1
+set isruled 0
+
+setflags w1 locked
+setflags v1 locked
+setflags v2 locked
+
+catch {thrusections result ${issolid} ${isruled} v1 w1 v2 -save}
+
+
+checkprops result -s 422.859
+
+
+checknbshapes result -vertex 2 -edge 3 -wire 1 -face 1 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 9
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+#
+#
+#
+#
+#
+# v22 v21
+# *----------------------*
+# / \
+# / \
+# / v12 v11 \
+# / *---------------------* \
+# / | | \
+# / | | \
+# * v23 | * v3 | v28 *
+# | | | \ | |
+# | | | \ | |
+# | | | \ | |
+# | | | \ | |
+# | | | /* v2 | |
+# | | | / | |
+# | | | / | | * v4, v5
+# | | | / | |
+# | | * | |
+# | | v1 | |
+# | | | |
+# | | | |
+# * v24 | | v27 *
+# \ | | /
+# \ *---------------------* /
+# \ v13 v14 /
+# \ /
+# \ /
+# \ v25 v26 /
+# *----------------------*
+#
+#
+#
+
+set z1 40
+set z2 20
+set z3 0
+set z4 100
+
+# begining vertex
+vertex v4 55 2.5 ${z4}
+# ending vertex
+vertex v5 55 2.5 -${z4}
+
+# top triangle
+vertex v1 0 0 ${z1}
+vertex v2 5 5 ${z1}
+vertex v3 0 10 ${z1}
+
+edge e1 v1 v2
+edge e2 v2 v3
+edge e3 v3 v1
+
+wire w1 e1 e2 e3
+
+# top quadrangle
+vertex v11 15 15 ${z2}
+vertex v12 -15 15 ${z2}
+vertex v13 -15 -15 ${z2}
+vertex v14 15 -15 ${z2}
+
+edge e11 v11 v12
+edge e12 v12 v13
+edge e13 v13 v14
+edge e14 v14 v11
+
+wire w11 e11 e12 e13 e14
+
+# top octagon
+vertex v21 25 25 ${z3}
+vertex v22 -25 25 ${z3}
+vertex v23 -30 10 ${z3}
+vertex v24 -30 -10 ${z3}
+vertex v25 -25 -25 ${z3}
+vertex v26 25 -25 ${z3}
+vertex v27 30 -10 ${z3}
+vertex v28 30 10 ${z3}
+
+edge e21 v21 v22
+edge e22 v22 v23
+edge e23 v23 v24
+edge e24 v24 v25
+edge e25 v25 v26
+edge e26 v26 v27
+edge e27 v27 v28
+edge e28 v28 v21
+
+wire w21 e21 e22 e23 e24 e25 e26 e27 e28
+
+# bottom quadrangle
+vertex v111 15 15 -${z2}
+vertex v112 -15 15 -${z2}
+vertex v113 -15 -15 -${z2}
+vertex v114 15 -15 -${z2}
+
+edge e111 v111 v112
+edge e112 v112 v113
+edge e113 v113 v114
+edge e114 v114 v111
+
+wire w111 e111 e112 e113 e114
+
+# bottom triangle
+vertex v101 0 0 -${z1}
+vertex v102 5 5 -${z1}
+vertex v103 0 10 -${z1}
+
+edge e101 v101 v102
+edge e102 v102 v103
+edge e103 v103 v101
+
+wire w101 e101 e102 e103
+
+
+#
+set issolid 1
+set isruled 1
+
+setflags w1 locked
+setflags v4 locked
+setflags w11 locked
+setflags w21 locked
+setflags w111 locked
+setflags w101 locked
+setflags v5 locked
+
+thrusections result ${issolid} ${isruled} v4 w1 w11 w21 w111 w101 v5 -save
+
+
+checkprops result -s 12651.5
+
+
+checknbshapes result -vertex 57 -edge 121 -wire 66 -face 66 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 312
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "TODO OCC7166 ALL: Error : The area of result shape is"
+
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+#
+#
+#
+#
+#
+# v22 v21
+# *----------------------*
+# / \
+# / \
+# / v12 v11 \
+# / *---------------------* \
+# / | | \
+# / | | \
+# * v23 | * v3 | v28 *
+# | | | \ | |
+# | | | \ | |
+# | | | \ | |
+# | | | \ | |
+# | | | /* v2 | |
+# | | | / | |
+# | | | / | | * v4, v5
+# | | | / | |
+# | | * | |
+# | | v1 | |
+# | | | |
+# | | | |
+# * v24 | | v27 *
+# \ | | /
+# \ *---------------------* /
+# \ v13 v14 /
+# \ /
+# \ /
+# \ v25 v26 /
+# *----------------------*
+#
+#
+#
+
+set z1 40
+set z2 20
+set z3 0
+set z4 100
+
+# begining vertex
+vertex v4 55 2.5 ${z4}
+# ending vertex
+vertex v5 55 2.5 -${z4}
+
+# top triangle
+vertex v1 0 0 ${z1}
+vertex v2 5 5 ${z1}
+vertex v3 0 10 ${z1}
+
+edge e1 v1 v2
+edge e2 v2 v3
+edge e3 v3 v1
+
+wire w1 e1 e2 e3
+
+# top quadrangle
+vertex v11 15 15 ${z2}
+vertex v12 -15 15 ${z2}
+vertex v13 -15 -15 ${z2}
+vertex v14 15 -15 ${z2}
+
+edge e11 v11 v12
+edge e12 v12 v13
+edge e13 v13 v14
+edge e14 v14 v11
+
+wire w11 e11 e12 e13 e14
+
+# top octagon
+vertex v21 25 25 ${z3}
+vertex v22 -25 25 ${z3}
+vertex v23 -30 10 ${z3}
+vertex v24 -30 -10 ${z3}
+vertex v25 -25 -25 ${z3}
+vertex v26 25 -25 ${z3}
+vertex v27 30 -10 ${z3}
+vertex v28 30 10 ${z3}
+
+edge e21 v21 v22
+edge e22 v22 v23
+edge e23 v23 v24
+edge e24 v24 v25
+edge e25 v25 v26
+edge e26 v26 v27
+edge e27 v27 v28
+edge e28 v28 v21
+
+wire w21 e21 e22 e23 e24 e25 e26 e27 e28
+
+# bottom quadrangle
+vertex v111 15 15 -${z2}
+vertex v112 -15 15 -${z2}
+vertex v113 -15 -15 -${z2}
+vertex v114 15 -15 -${z2}
+
+edge e111 v111 v112
+edge e112 v112 v113
+edge e113 v113 v114
+edge e114 v114 v111
+
+wire w111 e111 e112 e113 e114
+
+# bottom triangle
+vertex v101 0 0 -${z1}
+vertex v102 5 5 -${z1}
+vertex v103 0 10 -${z1}
+
+edge e101 v101 v102
+edge e102 v102 v103
+edge e103 v103 v101
+
+wire w101 e101 e102 e103
+
+setflags v4 locked
+setflags w1 locked
+setflags w11 locked
+setflags w21 locked
+setflags w111 locked
+setflags w101 locked
+setflags v5 locked
+
+#
+set issolid 0
+set isruled 0
+thrusections result ${issolid} ${isruled} v4 w1 w11 w21 w111 w101 v5 -save
+
+
+checkprops result -s 56691.9
+
+checknbshapes result -vertex 2 -edge 33 -wire 11 -face 11 -shell 1 -solid 0 -compsolid 0 -compound 0 -shape 58
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "TODO OCC7166 ALL: Error : The area of result shape is"
+
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+#
+#
+#
+#
+#
+# v22 v21
+# *----------------------*
+# / \
+# / \
+# / v12 v11 \
+# / *---------------------* \
+# / | | \
+# / | | \
+# * v23 | * v3 | v28 *
+# | | | \ | |
+# | | | \ | |
+# | | | \ | |
+# | | | \ | |
+# | | | /* v2 | |
+# | | | / | |
+# | | | / | | * v4, v5
+# | | | / | |
+# | | * | |
+# | | v1 | |
+# | | | |
+# | | | |
+# * v24 | | v27 *
+# \ | | /
+# \ *---------------------* /
+# \ v13 v14 /
+# \ /
+# \ /
+# \ v25 v26 /
+# *----------------------*
+#
+#
+#
+
+set z1 40
+set z2 20
+set z3 0
+set z4 100
+
+# begining vertex
+vertex v4 55 2.5 ${z4}
+# ending vertex
+vertex v5 55 2.5 -${z4}
+
+# top triangle
+vertex v1 0 0 ${z1}
+vertex v2 5 5 ${z1}
+vertex v3 0 10 ${z1}
+
+edge e1 v1 v2
+edge e2 v2 v3
+edge e3 v3 v1
+
+wire w1 e1 e2 e3
+
+# top quadrangle
+vertex v11 15 15 ${z2}
+vertex v12 -15 15 ${z2}
+vertex v13 -15 -15 ${z2}
+vertex v14 15 -15 ${z2}
+
+edge e11 v11 v12
+edge e12 v12 v13
+edge e13 v13 v14
+edge e14 v14 v11
+
+wire w11 e11 e12 e13 e14
+
+# top octagon
+vertex v21 25 25 ${z3}
+vertex v22 -25 25 ${z3}
+vertex v23 -30 10 ${z3}
+vertex v24 -30 -10 ${z3}
+vertex v25 -25 -25 ${z3}
+vertex v26 25 -25 ${z3}
+vertex v27 30 -10 ${z3}
+vertex v28 30 10 ${z3}
+
+edge e21 v21 v22
+edge e22 v22 v23
+edge e23 v23 v24
+edge e24 v24 v25
+edge e25 v25 v26
+edge e26 v26 v27
+edge e27 v27 v28
+edge e28 v28 v21
+
+wire w21 e21 e22 e23 e24 e25 e26 e27 e28
+
+# bottom quadrangle
+vertex v111 15 15 -${z2}
+vertex v112 -15 15 -${z2}
+vertex v113 -15 -15 -${z2}
+vertex v114 15 -15 -${z2}
+
+edge e111 v111 v112
+edge e112 v112 v113
+edge e113 v113 v114
+edge e114 v114 v111
+
+wire w111 e111 e112 e113 e114
+
+# bottom triangle
+vertex v101 0 0 -${z1}
+vertex v102 5 5 -${z1}
+vertex v103 0 10 -${z1}
+
+edge e101 v101 v102
+edge e102 v102 v103
+edge e103 v103 v101
+
+wire w101 e101 e102 e103
+
+setflags v4 locked
+setflags w1 locked
+setflags w11 locked
+setflags w21 locked
+setflags w111 locked
+setflags w101 locked
+setflags v5 locked
+
+#
+set issolid 1
+set isruled 0
+thrusections result ${issolid} ${isruled} v4 w1 w11 w21 w111 w101 v5 -save
+
+
+checkprops result -s 56691.9
+
+
+checknbshapes result -vertex 2 -edge 33 -wire 11 -face 11 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 59
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+#
+#
+#
+#
+#
+# v22 v21
+# *----------------------*
+# / \
+# / \
+# / v12 v11 \
+# / *---------------------* \
+# / | | \
+# / | | \
+# * v23 | * v3 | v28 *
+# | | | \ | |
+# | | | \ | |
+# | | | \ | |
+# | | | \ | |
+# | | | /* v2 | |
+# | | | / | |
+# | | | / | | * v4, v5
+# | | | / | |
+# | | * | |
+# | | v1 | |
+# | | | |
+# | | | |
+# * v24 | | v27 *
+# \ | | /
+# \ *---------------------* /
+# \ v13 v14 /
+# \ /
+# \ /
+# \ v25 v26 /
+# *----------------------*
+#
+#
+#
+
+set z1 40
+set z2 20
+set z3 0
+set z4 100
+
+# begining vertex
+vertex v4 2.5 5 ${z4}
+# ending vertex
+vertex v5 2.5 5 -${z4}
+
+# top triangle
+vertex v1 0 0 ${z1}
+vertex v2 5 5 ${z1}
+vertex v3 0 10 ${z1}
+
+edge e1 v1 v2
+edge e2 v2 v3
+edge e3 v3 v1
+
+wire w1 e1 e2 e3
+
+# top quadrangle
+vertex v11 15 15 ${z2}
+vertex v12 -15 15 ${z2}
+vertex v13 -15 -15 ${z2}
+vertex v14 15 -15 ${z2}
+
+edge e11 v11 v12
+edge e12 v12 v13
+edge e13 v13 v14
+edge e14 v14 v11
+
+wire w11 e11 e12 e13 e14
+
+# top octagon
+vertex v21 25 25 ${z3}
+vertex v22 -25 25 ${z3}
+vertex v23 -30 10 ${z3}
+vertex v24 -30 -10 ${z3}
+vertex v25 -25 -25 ${z3}
+vertex v26 25 -25 ${z3}
+vertex v27 30 -10 ${z3}
+vertex v28 30 10 ${z3}
+
+edge e21 v21 v22
+edge e22 v22 v23
+edge e23 v23 v24
+edge e24 v24 v25
+edge e25 v25 v26
+edge e26 v26 v27
+edge e27 v27 v28
+edge e28 v28 v21
+
+wire w21 e21 e22 e23 e24 e25 e26 e27 e28
+
+# bottom quadrangle
+vertex v111 15 15 -${z2}
+vertex v112 -15 15 -${z2}
+vertex v113 -15 -15 -${z2}
+vertex v114 15 -15 -${z2}
+
+edge e111 v111 v112
+edge e112 v112 v113
+edge e113 v113 v114
+edge e114 v114 v111
+
+wire w111 e111 e112 e113 e114
+
+# bottom triangle
+vertex v101 0 0 -${z1}
+vertex v102 5 5 -${z1}
+vertex v103 0 10 -${z1}
+
+edge e101 v101 v102
+edge e102 v102 v103
+edge e103 v103 v101
+
+wire w101 e101 e102 e103
+
+setflags v4 locked
+setflags w1 locked
+setflags w11 locked
+setflags w21 locked
+setflags w111 locked
+setflags w101 locked
+setflags v5 locked
+
+
+#
+set issolid 1
+set isruled 1
+thrusections result ${issolid} ${isruled} v4 w1 w11 w21 w111 w101 v5 -save
+
+
+checkprops result -s 12301.8
+
+
+checknbshapes result -vertex 57 -edge 121 -wire 66 -face 66 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 312
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "TODO OCC7166 ALL: Error : The area of result shape is"
+
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+#
+#
+#
+#
+#
+# v22 v21
+# *----------------------*
+# / \
+# / \
+# / v12 v11 \
+# / *---------------------* \
+# / | | \
+# / | | \
+# * v23 | * v3 | v28 *
+# | | | \ | |
+# | | | \ | |
+# | | | \ | |
+# | | | \ | |
+# | | | /* v2 | |
+# | | | / | |
+# | | | / | | * v4, v5
+# | | | / | |
+# | | * | |
+# | | v1 | |
+# | | | |
+# | | | |
+# * v24 | | v27 *
+# \ | | /
+# \ *---------------------* /
+# \ v13 v14 /
+# \ /
+# \ /
+# \ v25 v26 /
+# *----------------------*
+#
+#
+#
+
+set z1 40
+set z2 20
+set z3 0
+set z4 100
+
+# begining vertex
+vertex v4 2.5 5 ${z4}
+# ending vertex
+vertex v5 2.5 5 -${z4}
+
+# top triangle
+vertex v1 0 0 ${z1}
+vertex v2 5 5 ${z1}
+vertex v3 0 10 ${z1}
+
+edge e1 v1 v2
+edge e2 v2 v3
+edge e3 v3 v1
+
+wire w1 e1 e2 e3
+
+# top quadrangle
+vertex v11 15 15 ${z2}
+vertex v12 -15 15 ${z2}
+vertex v13 -15 -15 ${z2}
+vertex v14 15 -15 ${z2}
+
+edge e11 v11 v12
+edge e12 v12 v13
+edge e13 v13 v14
+edge e14 v14 v11
+
+wire w11 e11 e12 e13 e14
+
+# top octagon
+vertex v21 25 25 ${z3}
+vertex v22 -25 25 ${z3}
+vertex v23 -30 10 ${z3}
+vertex v24 -30 -10 ${z3}
+vertex v25 -25 -25 ${z3}
+vertex v26 25 -25 ${z3}
+vertex v27 30 -10 ${z3}
+vertex v28 30 10 ${z3}
+
+edge e21 v21 v22
+edge e22 v22 v23
+edge e23 v23 v24
+edge e24 v24 v25
+edge e25 v25 v26
+edge e26 v26 v27
+edge e27 v27 v28
+edge e28 v28 v21
+
+wire w21 e21 e22 e23 e24 e25 e26 e27 e28
+
+# bottom quadrangle
+vertex v111 15 15 -${z2}
+vertex v112 -15 15 -${z2}
+vertex v113 -15 -15 -${z2}
+vertex v114 15 -15 -${z2}
+
+edge e111 v111 v112
+edge e112 v112 v113
+edge e113 v113 v114
+edge e114 v114 v111
+
+wire w111 e111 e112 e113 e114
+
+# bottom triangle
+vertex v101 0 0 -${z1}
+vertex v102 5 5 -${z1}
+vertex v103 0 10 -${z1}
+
+edge e101 v101 v102
+edge e102 v102 v103
+edge e103 v103 v101
+
+wire w101 e101 e102 e103
+
+setflags v4 locked
+setflags w1 locked
+setflags w11 locked
+setflags w21 locked
+setflags w111 locked
+setflags w101 locked
+setflags v5 locked
+
+
+#
+set issolid 0
+set isruled 0
+thrusections result ${issolid} ${isruled} v4 w1 w11 w21 w111 w101 v5 -save
+
+
+checkprops result -s 37693.9
+
+checknbshapes result -vertex 2 -edge 33 -wire 11 -face 11 -shell 1 -solid 0 -compsolid 0 -compound 0 -shape 58
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "TODO OCC7166 ALL: Error : The area of result shape is"
+
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+#
+#
+#
+#
+#
+# v22 v21
+# *----------------------*
+# / \
+# / \
+# / v12 v11 \
+# / *---------------------* \
+# / | | \
+# / | | \
+# * v23 | * v3 | v28 *
+# | | | \ | |
+# | | | \ | |
+# | | | \ | |
+# | | | \ | |
+# | | | /* v2 | |
+# | | | / | |
+# | | | / | | * v4, v5
+# | | | / | |
+# | | * | |
+# | | v1 | |
+# | | | |
+# | | | |
+# * v24 | | v27 *
+# \ | | /
+# \ *---------------------* /
+# \ v13 v14 /
+# \ /
+# \ /
+# \ v25 v26 /
+# *----------------------*
+#
+#
+#
+
+set z1 40
+set z2 20
+set z3 0
+set z4 100
+
+# begining vertex
+vertex v4 2.5 5 ${z4}
+# ending vertex
+vertex v5 2.5 5 -${z4}
+
+# top triangle
+vertex v1 0 0 ${z1}
+vertex v2 5 5 ${z1}
+vertex v3 0 10 ${z1}
+
+edge e1 v1 v2
+edge e2 v2 v3
+edge e3 v3 v1
+
+wire w1 e1 e2 e3
+
+# top quadrangle
+vertex v11 15 15 ${z2}
+vertex v12 -15 15 ${z2}
+vertex v13 -15 -15 ${z2}
+vertex v14 15 -15 ${z2}
+
+edge e11 v11 v12
+edge e12 v12 v13
+edge e13 v13 v14
+edge e14 v14 v11
+
+wire w11 e11 e12 e13 e14
+
+# top octagon
+vertex v21 25 25 ${z3}
+vertex v22 -25 25 ${z3}
+vertex v23 -30 10 ${z3}
+vertex v24 -30 -10 ${z3}
+vertex v25 -25 -25 ${z3}
+vertex v26 25 -25 ${z3}
+vertex v27 30 -10 ${z3}
+vertex v28 30 10 ${z3}
+
+edge e21 v21 v22
+edge e22 v22 v23
+edge e23 v23 v24
+edge e24 v24 v25
+edge e25 v25 v26
+edge e26 v26 v27
+edge e27 v27 v28
+edge e28 v28 v21
+
+wire w21 e21 e22 e23 e24 e25 e26 e27 e28
+
+# bottom quadrangle
+vertex v111 15 15 -${z2}
+vertex v112 -15 15 -${z2}
+vertex v113 -15 -15 -${z2}
+vertex v114 15 -15 -${z2}
+
+edge e111 v111 v112
+edge e112 v112 v113
+edge e113 v113 v114
+edge e114 v114 v111
+
+wire w111 e111 e112 e113 e114
+
+# bottom triangle
+vertex v101 0 0 -${z1}
+vertex v102 5 5 -${z1}
+vertex v103 0 10 -${z1}
+
+edge e101 v101 v102
+edge e102 v102 v103
+edge e103 v103 v101
+
+wire w101 e101 e102 e103
+
+setflags v4 locked
+setflags w1 locked
+setflags w11 locked
+setflags w21 locked
+setflags w111 locked
+setflags w101 locked
+setflags v5 locked
+
+
+#
+set issolid 1
+set isruled 0
+thrusections result ${issolid} ${isruled} v4 w1 w11 w21 w111 w101 v5 -save
+
+
+checkprops result -s 37693.9
+
+
+checknbshapes result -vertex 2 -edge 33 -wire 11 -face 11 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 59
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "TODO OCC7166 ALL: Error : is WRONG because number of "
+
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+pbsplinecurve pbc1 3 9 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 -1 0 0 1 -2 2 0 1 0 1 0 1 2 2 0 1 1 0 0 1 2 -2 0 1 0 -1 0 1 -2 -2 0 1
+mkedge e1 pbc1
+wire w1 e1
+
+#vertex v1 0 0 20
+#vertex v2 0 0 -20
+circle c1 0 0 20 0 0 -1 -1 1 0 0.1
+mkedge ec1 c1
+wire wc1 ec1
+
+circle c2 0 0 -20 0 0 -1 -1 1 0 0.1
+mkedge ec2 c2
+wire wc2 ec2
+
+set issolid 1
+set isruled 1
+
+setflags wc1 locked
+setflags w1 locked
+setflags wc2 locked
+
+#catch {thrusections result ${issolid} ${isruled} v1 w1 v2}
+catch {thrusections result ${issolid} ${isruled} wc1 w1 wc2 -save}
+
+
+checkprops result -s 256.875
+
+
+checknbshapes result -vertex 6 -edge 10 -wire 6 -face 6 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 30
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "TODO OCC7166 ALL: Faulty OCC7166 : result is not Closed shape"
+puts "TODO OCC7166 ALL: Error : is WRONG because number of "
+
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+pbsplinecurve pbc1 3 9 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 -1 0 0 1 -2 2 0 1 0 1 0 1 2 2 0 1 1 0 0 1 2 -2 0 1 0 -1 0 1 -2 -2 0 1
+mkedge e1 pbc1
+wire w1 e1
+
+#vertex v1 0 0 20
+#vertex v2 0 0 -20
+circle c1 0 0 20 0 0 -1 -1 1 0 0.1
+mkedge ec1 c1
+wire wc1 ec1
+
+circle c2 0 0 -20 0 0 -1 -1 1 0 0.1
+mkedge ec2 c2
+wire wc2 ec2
+
+set issolid 0
+set isruled 0
+
+setflags wc1 locked
+setflags w1 locked
+setflags wc2 locked
+
+#catch {thrusections result ${issolid} ${isruled} v1 w1 v2}
+catch {thrusections result ${issolid} ${isruled} wc1 w1 wc2 -save}
+
+
+checkprops result -s 332.724
+
+checknbshapes result -vertex 4 -edge 6 -wire 2 -face 2 -shell 1 -solid 0 -compsolid 0 -compound 0 -shape 15
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "TODO OCC7166 ALL: Error : is WRONG because number of "
+puts "TODO OCC7166 ALL: Error : The area of result shape is"
+
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+pbsplinecurve pbc1 3 9 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 -1 0 0 1 -2 2 0 1 0 1 0 1 2 2 0 1 1 0 0 1 2 -2 0 1 0 -1 0 1 -2 -2 0 1
+mkedge e1 pbc1
+wire w1 e1
+
+##vertex v1 0 0 20
+#vertex v2 0 0 -20
+circle c1 0 0 20 0 0 -1 -1 1 0 0.1
+mkedge ec1 c1
+wire wc1 ec1
+
+circle c2 0 0 -20 0 0 -1 -1 1 0 0.1
+mkedge ec2 c2
+wire wc2 ec2
+
+set issolid 1
+set isruled 0
+
+setflags wc1 locked
+setflags w1 locked
+setflags wc2 locked
+
+#catch {thrusections result ${issolid} ${isruled} v1 w1 v2 }
+catch {thrusections result ${issolid} ${isruled} wc1 w1 wc2 -save}
+
+
+checkprops result -s 314.974
+
+
+checknbshapes result -vertex 2 -edge 3 -wire 1 -face 1 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 9
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "TODO OCC7166 ALL: Error : is WRONG because number of "
+
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+pbsplinecurve pbc1 3 9 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 -1 0 0 1 -2 2 0 1 0 1 0 1 2 2 0 1 1 0 0 1 2 -2 0 1 0 -1 0 1 -2 -2 0 1
+mkedge e1 pbc1
+wire w1 e1
+
+#vertex v1 40 0 20
+#vertex v2 40 0 -20
+circle c1 40 0 20 0 0 -1 -1 1 0 0.1
+mkedge ec1 c1
+wire wc1 ec1
+
+circle c2 40 0 -20 0 0 -1 -1 1 0 0.1
+mkedge ec2 c2
+wire wc2 ec2
+
+set issolid 1
+set isruled 1
+
+setflags wc1 locked
+setflags w1 locked
+setflags wc2 locked
+
+
+#catch {thrusections result ${issolid} ${isruled} v1 w1 v2}
+catch {thrusections result ${issolid} ${isruled} wc1 w1 wc2 -save}
+
+
+checkprops result -s 419.166
+
+
+checknbshapes result -vertex 6 -edge 10 -wire 6 -face 6 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 30
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "TODO OCC7166 ALL: Faulty OCC7166 : result is not Closed shape"
+puts "TODO OCC7166 ALL: Error : is WRONG because number of "
+puts "TODO OCC7166 ALL: Error : The area of result shape is"
+
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+pbsplinecurve pbc1 3 9 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 -1 0 0 1 -2 2 0 1 0 1 0 1 2 2 0 1 1 0 0 1 2 -2 0 1 0 -1 0 1 -2 -2 0 1
+mkedge e1 pbc1
+wire w1 e1
+
+#vertex v1 40 0 20
+#vertex v2 40 0 -20
+circle c1 40 0 20 0 0 -1 -1 1 0 0.1
+mkedge ec1 c1
+wire wc1 ec1
+
+circle c2 40 0 -20 0 0 -1 -1 1 0 0.1
+mkedge ec2 c2
+wire wc2 ec2
+
+set issolid 0
+set isruled 0
+
+setflags wc1 locked
+setflags w1 locked
+setflags wc2 locked
+
+#catch {thrusections result ${issolid} ${isruled} v1 w1 v2}
+catch {thrusections result ${issolid} ${isruled} wc1 w1 wc2 -save}
+
+
+checkprops result -s 702.858
+
+checknbshapes result -vertex 4 -edge 6 -wire 2 -face 2 -shell 1 -solid 0 -compsolid 0 -compound 0 -shape 15
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "TODO OCC7166 ALL: Error : is WRONG because number of "
+puts "TODO OCC7166 ALL: Error : The area of result shape is"
+
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+pbsplinecurve pbc1 3 9 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 -1 0 0 1 -2 2 0 1 0 1 0 1 2 2 0 1 1 0 0 1 2 -2 0 1 0 -1 0 1 -2 -2 0 1
+mkedge e1 pbc1
+wire w1 e1
+
+#vertex v1 40 0 20
+#vertex v2 40 0 -20
+circle c1 40 0 20 0 0 -1 -1 1 0 0.1
+mkedge ec1 c1
+wire wc1 ec1
+
+circle c2 40 0 -20 0 0 -1 -1 1 0 0.1
+mkedge ec2 c2
+wire wc2 ec2
+
+set issolid 1
+set isruled 0
+
+setflags wc1 locked
+setflags w1 locked
+setflags wc2 locked
+
+#catch {thrusections result ${issolid} ${isruled} v1 w1 v2 }
+catch {thrusections result ${issolid} ${isruled} wc1 w1 wc2 -save}
+
+
+checkprops result -s 702.921
+
+
+checknbshapes result -vertex 4 -edge 6 -wire 4 -face 4 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 20
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "TODO OCC7166 ALL: Error : is WRONG because number of "
+
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+#
+#
+#
+#
+#
+# v22 v21
+# *----------------------*
+# / \
+# / \
+# / v12 v11 \
+# / *---------------------* \
+# / | | \
+# / | | \
+# * v23 | * v3 | v28 *
+# | | | \ | |
+# | | | \ | |
+# | | | \ | |
+# | | | \ | |
+# | | | /* v2 | |
+# | | | / | |
+# | | | / | | * v4, v5
+# | | | / | |
+# | | * | |
+# | | v1 | |
+# | | | |
+# | | | |
+# * v24 | | v27 *
+# \ | | /
+# \ *---------------------* /
+# \ v13 v14 /
+# \ /
+# \ /
+# \ v25 v26 /
+# *----------------------*
+#
+#
+#
+
+set z1 40
+set z2 20
+set z3 0
+set z4 100
+set z5 30
+set z6 10
+
+# begining vertex
+vertex v4 55 2.5 ${z4}
+# ending vertex
+vertex v5 55 2.5 -${z4}
+
+# top triangle
+vertex v1 0 0 ${z1}
+vertex v2 5 5 ${z1}
+vertex v3 0 10 ${z1}
+
+edge e1 v1 v2
+edge e2 v2 v3
+edge e3 v3 v1
+
+wire w1 e1 e2 e3
+
+# top beziercurve
+beziercurve bzc1 5 5 5 ${z5} 5 -5 ${z5} -5 -5 ${z5} -5 5 ${z5} 5 5 ${z5}
+mkedge ebzc1 bzc1
+wire wbzc1 ebzc1
+
+# top quadrangle
+vertex v11 15 15 ${z2}
+vertex v12 -15 15 ${z2}
+vertex v13 -15 -15 ${z2}
+vertex v14 15 -15 ${z2}
+
+edge e11 v11 v12
+edge e12 v12 v13
+edge e13 v13 v14
+edge e14 v14 v11
+
+wire w11 e11 e12 e13 e14
+
+# top pbsplinecurve
+pbsplinecurve pbc1 3 9 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 -1 0 ${z6} 1 -2 2 ${z6} 1 0 1 ${z6} 1 2 2 ${z6} 1 1 0 ${z6} 1 2 -2 ${z6} 1 0 -1 ${z6} 1 -2 -2 ${z6} 1
+mkedge epbc1 pbc1
+wire wpbc1 epbc1
+
+# octagon
+vertex v21 25 25 ${z3}
+vertex v22 -25 25 ${z3}
+vertex v23 -30 10 ${z3}
+vertex v24 -30 -10 ${z3}
+vertex v25 -25 -25 ${z3}
+vertex v26 25 -25 ${z3}
+vertex v27 30 -10 ${z3}
+vertex v28 30 10 ${z3}
+
+edge e21 v21 v22
+edge e22 v22 v23
+edge e23 v23 v24
+edge e24 v24 v25
+edge e25 v25 v26
+edge e26 v26 v27
+edge e27 v27 v28
+edge e28 v28 v21
+
+wire w21 e21 e22 e23 e24 e25 e26 e27 e28
+
+# bottom pbsplinecurve
+pbsplinecurve pbc2 3 9 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 -1 0 -${z6} 1 -2 2 -${z6} 1 0 1 -${z6} 1 2 2 -${z6} 1 1 0 -${z6} 1 2 -2 -${z6} 1 0 -1 -${z6} 1 -2 -2 -${z6} 1
+mkedge epbc2 pbc2
+wire wpbc2 epbc2
+
+# bottom quadrangle
+vertex v111 15 15 -${z2}
+vertex v112 -15 15 -${z2}
+vertex v113 -15 -15 -${z2}
+vertex v114 15 -15 -${z2}
+
+edge e111 v111 v112
+edge e112 v112 v113
+edge e113 v113 v114
+edge e114 v114 v111
+
+wire w111 e111 e112 e113 e114
+
+# bottom beziercurve
+beziercurve bzc2 5 5 5 -${z5} 5 -5 -${z5} -5 -5 -${z5} -5 5 -${z5} 5 5 -${z5}
+mkedge ebzc2 bzc2
+wire wbzc2 ebzc2
+
+# bottom triangle
+vertex v101 0 0 -${z1}
+vertex v102 5 5 -${z1}
+vertex v103 0 10 -${z1}
+
+edge e101 v101 v102
+edge e102 v102 v103
+edge e103 v103 v101
+
+wire w101 e101 e102 e103
+
+setflags v4 locked
+setflags w1 locked
+setflags wbzc1 locked
+setflags w11 locked
+setflags wpbc1 locked
+setflags wpbc2 locked
+setflags w111 locked
+setflags wbzc2 locked
+setflags w101 locked
+setflags v5 locked
+setflags w21 locked
+
+#
+set issolid 1
+set isruled 1
+#thrusections result ${issolid} ${isruled} v4 w1 w11 w21 w111 w101 v5
+thrusections result ${issolid} ${isruled} v4 w1 wbzc1 w11 wpbc1 w21 wpbc2 w111 wbzc2 w101 v5 -save
+
+
+checkprops result -s 12786.5
+
+
+checknbshapes result -vertex 101 -edge 209 -wire 110 -face 110 -shell 1 -solid 2 -compsolid 0 -compound 0 -shape 532
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+
--- /dev/null
+puts "============"
+puts "OCC7166"
+puts "============"
+puts ""
+#######################################################################
+# Improvement of API of ThruSection
+#######################################################################
+
+set BugNumber OCC7166
+
+#
+#
+#
+#
+#
+# v22 v21
+# *----------------------*
+# / \
+# / \
+# / v12 v11 \
+# / *---------------------* \
+# / | | \
+# / | | \
+# * v23 | * v3 | v28 *
+# | | | \ | |
+# | | | \ | |
+# | | | \ | |
+# | | | \ | |
+# | | | /* v2 | |
+# | | | / | |
+# | | | / | | * v4, v5
+# | | | / | |
+# | | * | |
+# | | v1 | |
+# | | | |
+# | | | |
+# * v24 | | v27 *
+# \ | | /
+# \ *---------------------* /
+# \ v13 v14 /
+# \ /
+# \ /
+# \ v25 v26 /
+# *----------------------*
+#
+#
+#
+
+set z1 40
+set z2 20
+set z3 0
+set z4 100
+set z5 30
+set z6 10
+
+# begining vertex
+vertex v4 2.5 5 ${z4}
+# ending vertex
+vertex v5 2.5 5 -${z4}
+
+# top triangle
+vertex v1 0 0 ${z1}
+vertex v2 5 5 ${z1}
+vertex v3 0 10 ${z1}
+
+edge e1 v1 v2
+edge e2 v2 v3
+edge e3 v3 v1
+
+wire w1 e1 e2 e3
+
+# top beziercurve
+beziercurve bzc1 5 5 5 ${z5} 5 -5 ${z5} -5 -5 ${z5} -5 5 ${z5} 5 5 ${z5}
+mkedge ebzc1 bzc1
+wire wbzc1 ebzc1
+
+# top quadrangle
+vertex v11 15 15 ${z2}
+vertex v12 -15 15 ${z2}
+vertex v13 -15 -15 ${z2}
+vertex v14 15 -15 ${z2}
+
+edge e11 v11 v12
+edge e12 v12 v13
+edge e13 v13 v14
+edge e14 v14 v11
+
+wire w11 e11 e12 e13 e14
+
+# top pbsplinecurve
+pbsplinecurve pbc1 3 9 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 -1 0 ${z6} 1 -2 2 ${z6} 1 0 1 ${z6} 1 2 2 ${z6} 1 1 0 ${z6} 1 2 -2 ${z6} 1 0 -1 ${z6} 1 -2 -2 ${z6} 1
+mkedge epbc1 pbc1
+wire wpbc1 epbc1
+
+# octagon
+vertex v21 25 25 ${z3}
+vertex v22 -25 25 ${z3}
+vertex v23 -30 10 ${z3}
+vertex v24 -30 -10 ${z3}
+vertex v25 -25 -25 ${z3}
+vertex v26 25 -25 ${z3}
+vertex v27 30 -10 ${z3}
+vertex v28 30 10 ${z3}
+
+edge e21 v21 v22
+edge e22 v22 v23
+edge e23 v23 v24
+edge e24 v24 v25
+edge e25 v25 v26
+edge e26 v26 v27
+edge e27 v27 v28
+edge e28 v28 v21
+
+wire w21 e21 e22 e23 e24 e25 e26 e27 e28
+
+# bottom pbsplinecurve
+pbsplinecurve pbc2 3 9 0 1 1 1 2 1 3 1 4 1 5 1 6 1 7 1 8 1 -1 0 -${z6} 1 -2 2 -${z6} 1 0 1 -${z6} 1 2 2 -${z6} 1 1 0 -${z6} 1 2 -2 -${z6} 1 0 -1 -${z6} 1 -2 -2 -${z6} 1
+mkedge epbc2 pbc2
+wire wpbc2 epbc2
+
+# bottom quadrangle
+vertex v111 15 15 -${z2}
+vertex v112 -15 15 -${z2}
+vertex v113 -15 -15 -${z2}
+vertex v114 15 -15 -${z2}
+
+edge e111 v111 v112
+edge e112 v112 v113
+edge e113 v113 v114
+edge e114 v114 v111
+
+wire w111 e111 e112 e113 e114
+
+# bottom beziercurve
+beziercurve bzc2 5 5 5 -${z5} 5 -5 -${z5} -5 -5 -${z5} -5 5 -${z5} 5 5 -${z5}
+mkedge ebzc2 bzc2
+wire wbzc2 ebzc2
+
+# bottom triangle
+vertex v101 0 0 -${z1}
+vertex v102 5 5 -${z1}
+vertex v103 0 10 -${z1}
+
+edge e101 v101 v102
+edge e102 v102 v103
+edge e103 v103 v101
+
+wire w101 e101 e102 e103
+
+setflags v4 locked
+setflags w1 locked
+setflags wbzc1 locked
+setflags w11 locked
+setflags wpbc1 locked
+setflags w21 locked
+setflags wpbc2 locked
+setflags w111 locked
+setflags wbzc2 locked
+setflags w101 locked
+setflags v5 locked
+
+#
+set issolid 1
+set isruled 1
+#thrusections result ${issolid} ${isruled} v4 w1 w11 w21 w111 w101 v5
+thrusections result ${issolid} ${isruled} v4 w1 wbzc1 w11 wpbc1 w21 wpbc2 w111 wbzc2 w101 v5 -save
+
+
+checkprops result -s 12436.8
+
+
+checknbshapes result -vertex 101 -edge 209 -wire 110 -face 110 -shell 1 -solid 1 -compsolid 0 -compound 0 -shape 532
+
+
+set index [lsearch [whatis result] Closed]
+if {$index == -1} {
+ puts "Faulty ${BugNumber} : result is not Closed shape"
+
+}
+
+