[arch-commits] Commit in opencascade/trunk (3 files)
Florian Pritz
bluewind at archlinux.org
Fri Sep 23 14:50:24 UTC 2016
Date: Friday, September 23, 2016 @ 14:50:23
Author: bluewind
Revision: 190212
Fix FS#50829 - [opencascade] 6.9.1-3 breaks FreeCAD
upgpkg: opencascade 6.9.1-7
Added:
opencascade/trunk/salome-occt-6.9.1.patch
Modified:
opencascade/trunk/PKGBUILD
Deleted:
opencascade/trunk/salome-occt-6.9.1.patch
-------------------------+
PKGBUILD | 10
salome-occt-6.9.1.patch | 1488 +++++++++++++++++++++++-----------------------
2 files changed, 752 insertions(+), 746 deletions(-)
Modified: PKGBUILD
===================================================================
--- PKGBUILD 2016-09-23 14:10:27 UTC (rev 190211)
+++ PKGBUILD 2016-09-23 14:50:23 UTC (rev 190212)
@@ -4,7 +4,7 @@
# Contributor: Michele Mocciola <mickele>
pkgname=opencascade
pkgver=6.9.1
-pkgrel=3
+pkgrel=7
pkgdesc="Open CASCADE Technology, 3D modeling & numerical simulation"
arch=('i686' 'x86_64')
url="http://www.opencascade.org"
@@ -17,6 +17,10 @@
'2924ecf57c95d25888f51071fdc72ad0'
'88db8e6b9afa132d1893bbb814250350')
+# This works around a bug that is corrected in OCCT 7.0.0
+export CCFLAGS+=" -O2 -fno-delete-null-pointer-checks"
+export CXXFLAGS+=" -O2 -fno-delete-null-pointer-checks"
+
prepare() {
cd "$srcdir/$pkgname-$pkgver"
@@ -26,6 +30,7 @@
# fix for automake 1.13
sed -i -e 's/AM_CONFIG_HEADER/AC_CONFIG_HEADERS/' configure.ac
+ # Included in OCCT 7.0.0
patch -i "$srcdir/salome-occt-6.9.1.patch" -p1
./build_configure
@@ -37,7 +42,8 @@
# fix build with vtk 6.3.0
CXXFLAGS+=' -DvtkFloatingPointType=double'
- ./configure --disable-debug --enable-production \
+ # Change to --enable-production with OCCT 7.0.0
+ ./configure --disable-debug --disable-production \
--with-vtk-library=/opt/vtk6/lib/ --with-vtk-include=/opt/vtk6/include/vtk/ \
--prefix=/opt/$pkgname
make
Deleted: salome-occt-6.9.1.patch
===================================================================
--- salome-occt-6.9.1.patch 2016-09-23 14:10:27 UTC (rev 190211)
+++ salome-occt-6.9.1.patch 2016-09-23 14:50:23 UTC (rev 190212)
@@ -1,744 +0,0 @@
-diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/drv/BRepFill/BRepFill_Pipe.jxx OCCT-6.9.1p1_SRC/drv/BRepFill/BRepFill_Pipe.jxx
---- OCCT-6.9.1_SRC/drv/BRepFill/BRepFill_Pipe.jxx 2015-09-25 17:35:58.000000000 +0300
-+++ OCCT-6.9.1p1_SRC/drv/BRepFill/BRepFill_Pipe.jxx 2016-04-26 16:10:42.000000000 +0300
-@@ -4,6 +4,7 @@
- #include <StdFail_NotDone.hxx>
- #include <TopoDS_Wire.hxx>
- #include <TopoDS_Shape.hxx>
-+#include <TopTools_ListOfShape.hxx>
- #include <TopoDS_Face.hxx>
- #include <TopoDS_Edge.hxx>
- #include <TopoDS_Vertex.hxx>
-diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/drv/BRepOffsetAPI/BRepOffsetAPI_MakePipe.jxx OCCT-6.9.1p1_SRC/drv/BRepOffsetAPI/BRepOffsetAPI_MakePipe.jxx
---- OCCT-6.9.1_SRC/drv/BRepOffsetAPI/BRepOffsetAPI_MakePipe.jxx 2015-09-25 17:36:04.000000000 +0300
-+++ OCCT-6.9.1p1_SRC/drv/BRepOffsetAPI/BRepOffsetAPI_MakePipe.jxx 2016-04-26 16:10:47.000000000 +0300
-@@ -1,4 +1,5 @@
- #include <TopoDS_Wire.hxx>
- #include <TopoDS_Shape.hxx>
- #include <BRepFill_Pipe.hxx>
-+#include <TopTools_ListOfShape.hxx>
- #include <BRepOffsetAPI_MakePipe.hxx>
-diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/inc/BRepFill_Pipe.hxx OCCT-6.9.1p1_SRC/inc/BRepFill_Pipe.hxx
---- OCCT-6.9.1_SRC/inc/BRepFill_Pipe.hxx 2015-09-25 17:35:58.000000000 +0300
-+++ OCCT-6.9.1p1_SRC/inc/BRepFill_Pipe.hxx 2016-04-26 16:10:42.000000000 +0300
-@@ -18,6 +18,7 @@
- #include <TopTools_MapOfShape.hxx>
- #include <BRepFill_DataMapOfShapeHArray2OfShape.hxx>
- #include <Standard_Integer.hxx>
-+#include <TopTools_DataMapOfShapeListOfShape.hxx>
- #include <GeomAbs_Shape.hxx>
- #include <GeomFill_Trihedron.hxx>
- #include <Standard_Boolean.hxx>
-@@ -28,6 +29,7 @@
- class StdFail_NotDone;
- class TopoDS_Wire;
- class TopoDS_Shape;
-+class TopTools_ListOfShape;
- class TopoDS_Face;
- class TopoDS_Edge;
- class TopoDS_Vertex;
-@@ -65,6 +67,9 @@
-
- Standard_EXPORT const TopoDS_Shape& LastShape() const;
-
-+ //! Returns the list of shapes generated from the shape <S>.
-+ Standard_EXPORT void Generated (const TopoDS_Shape& S, TopTools_ListOfShape& L) ;
-+
- //! Returns the face created from an edge of the spine
- //! and an edge of the profile.
- //! if the edges are not in the spine or the profile
-@@ -131,6 +136,7 @@
- Standard_Integer myCurIndexOfSectionEdge;
- TopoDS_Shape myFirst;
- TopoDS_Shape myLast;
-+ TopTools_DataMapOfShapeListOfShape myGenMap;
- Standard_Integer myDegmax;
- Standard_Integer mySegmax;
- GeomAbs_Shape myContinuity;
-diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/inc/BRepOffsetAPI_MakePipe.hxx OCCT-6.9.1p1_SRC/inc/BRepOffsetAPI_MakePipe.hxx
---- OCCT-6.9.1_SRC/inc/BRepOffsetAPI_MakePipe.hxx 2015-09-25 17:36:04.000000000 +0300
-+++ OCCT-6.9.1p1_SRC/inc/BRepOffsetAPI_MakePipe.hxx 2016-04-26 16:10:47.000000000 +0300
-@@ -18,6 +18,7 @@
- class TopoDS_Wire;
- class TopoDS_Shape;
- class BRepFill_Pipe;
-+class TopTools_ListOfShape;
-
-
- //! Describes functions to build pipes.
-@@ -68,6 +69,8 @@
- //! Returns the TopoDS Shape of the top of the prism.
- Standard_EXPORT TopoDS_Shape LastShape() ;
-
-+ Standard_EXPORT virtual const TopTools_ListOfShape& Generated (const TopoDS_Shape& S) ;
-+
- Standard_EXPORT TopoDS_Shape Generated (const TopoDS_Shape& SSpine, const TopoDS_Shape& SProfile) ;
-
- Standard_EXPORT Standard_Real ErrorOnSurface() const;
-diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/src/BRepFill/BRepFill_Pipe.cdl OCCT-6.9.1p1_SRC/src/BRepFill/BRepFill_Pipe.cdl
---- OCCT-6.9.1_SRC/src/BRepFill/BRepFill_Pipe.cdl 2015-09-16 18:27:02.000000000 +0300
-+++ OCCT-6.9.1p1_SRC/src/BRepFill/BRepFill_Pipe.cdl 2016-04-26 15:51:10.000000000 +0300
-@@ -15,11 +15,11 @@
- -- commercial license or contractual agreement.
-
-
--class Pipe from BRepFill
-+class Pipe from BRepFill
-
- ---Purpose: Create a shape by sweeping a shape (the profile)
- -- along a wire (the spine).
-- --
-+ --
- -- For each edge or vertex from the spine the user
- -- may ask for the shape generated from each subshape
- -- of the profile.
-@@ -28,38 +28,40 @@
-
- HArray2OfShape from TopTools,
- MapOfShape from TopTools,
-+ ListOfShape from TopTools,
- DataMapOfShapeHArray2OfShape from BRepFill,
-+ DataMapOfShapeListOfShape from TopTools,
- LocationLaw from BRepFill,
- Shape from TopoDS,
- Face from TopoDS,
- Wire from TopoDS,
- Edge from TopoDS,
-- Vertex from TopoDS,
-+ Vertex from TopoDS,
- Pnt from gp,
- Trsf from gp,
- Shape from GeomAbs,
- Trihedron from GeomFill
-
- raises
-- DomainError from Standard,
-+ DomainError from Standard,
- NotDone from StdFail
-
- is
-
- Create returns Pipe from BRepFill;
--
-- Create ( Spine : Wire from TopoDS;
-+
-+ Create ( Spine : Wire from TopoDS;
- Profile : Shape from TopoDS;
- aMode : Trihedron from GeomFill = GeomFill_IsCorrectedFrenet;
- ForceApproxC1 : Boolean from Standard = Standard_False;
-- GeneratePartCase : Boolean from Standard = Standard_False)
-+ GeneratePartCase : Boolean from Standard = Standard_False)
- returns Pipe from BRepFill;
--
-- Perform (me : in out; Spine : Wire from TopoDS;
-+
-+ Perform (me : in out; Spine : Wire from TopoDS;
- Profile : Shape from TopoDS;
-- GeneratePartCase : Boolean from Standard = Standard_False)
-+ GeneratePartCase : Boolean from Standard = Standard_False)
- is static;
--
-+
- Spine(me) returns Shape from TopoDS
- ---C++ : return const &
- is static;
-@@ -74,7 +76,7 @@
-
- ErrorOnSurface (me)
- returns Real from Standard;
--
-+
- FirstShape(me) returns Shape from TopoDS
- ---C++ : return const &
- is static;
-@@ -83,27 +85,30 @@
- ---C++ : return const &
- is static;
-
-+ Generated(me: in out; S: Shape from TopoDS; L: in out ListOfShape from TopTools);
-+ ---Purpose: Returns the list of shapes generated from the shape <S>.
-+
- Face(me : in out; ESpine, EProfile : Edge from TopoDS)
- returns Face from TopoDS
- ---Purpose: Returns the face created from an edge of the spine
- -- and an edge of the profile.
- raises
-- DomainError from Standard
-+ DomainError from Standard
- ---Purpose: if the edges are not in the spine or the profile
--
-+
- is static;
--
-+
- Edge(me : in out; ESpine : Edge from TopoDS; VProfile : Vertex from TopoDS)
- returns Edge from TopoDS
- ---Purpose: Returns the edge created from an edge of the spine
- -- and a vertex of the profile.
- raises
-- DomainError from Standard
-+ DomainError from Standard
- ---Purpose: if the edge or the vertex are not in the spine or
- -- the profile.
--
-+
- is static;
--
-+
- Section(me; VSpine : Vertex from TopoDS)
- returns Shape from TopoDS
- ---Purpose: Returns the shape created from the profile at the
-@@ -111,50 +116,50 @@
- raises
- DomainError from Standard
- ---Purpose: if the vertex is not in the Spine
-- is static;
--
--
-- PipeLine(me : in out; Point : Pnt from gp)
-+ is static;
-+
-+
-+ PipeLine(me : in out; Point : Pnt from gp)
- ---Purpose: Create a Wire by sweeping the Point along the <spine>
-- returns Wire from TopoDS
-+ returns Wire from TopoDS
- raises
- DomainError from Standard
-- ---Purpose: if the <Spine> is undefined
-+ ---Purpose: if the <Spine> is undefined
- is static;
-
-
- --
- -- Private methods
-- --
--
-- MakeShape(me : in out; S : Shape from TopoDS;
-+ --
-+
-+ MakeShape(me : in out; S : Shape from TopoDS;
- FirstShape, LastShape : Shape from TopoDS)
- returns Shape from TopoDS
- ---Purpose: Auxiliary recursive method used to build the
-- -- result.
-+ -- result.
- is static private;
-
-
-- FindEdge(me; S : Shape from TopoDS;
-- E : Edge from TopoDS;
-- Init : in out Integer)
-+ FindEdge(me; S : Shape from TopoDS;
-+ E : Edge from TopoDS;
-+ Init : in out Integer)
- ---Purpose: Auxiliary recursive method used to find the edge's index
- returns Integer
- is static private;
-
-- FindVertex(me; S : Shape from TopoDS;
-- V : Vertex from TopoDS;
-- Init : in out Integer)
-+ FindVertex(me; S : Shape from TopoDS;
-+ V : Vertex from TopoDS;
-+ Init : in out Integer)
- returns Integer
-- is static private;
--
-+ is static private;
-+
- DefineRealSegmax(me : in out)
-- is static private;
--
-+ is static private;
-+
- RebuildTopOrBottomFace(me; aFace: Shape from TopoDS;
- IsTop: Boolean from Standard)
-- is static private;
--
-+ is static private;
-+
- ShareFaces(me: in out; theShape: Shape from TopoDS;
- theInitialFacesLen: Integer;
- theInitialEdgesLen: Integer;
-@@ -164,30 +169,31 @@
- -- Returns the shared shape. If theShape is not modified this
- -- method returns it.
- returns Shape from TopoDS
-- is static private;
--
-+ is static private;
-+
- fields
- mySpine : Wire from TopoDS;
- myProfile : Shape from TopoDS;
-- myShape : Shape from TopoDS;
-- myTrsf : Trsf from gp;
-+ myShape : Shape from TopoDS;
-+ myTrsf : Trsf from gp;
- myLoc : LocationLaw from BRepFill;
-- mySections: HArray2OfShape from TopTools;
-- myFaces : HArray2OfShape from TopTools;
-- myEdges : HArray2OfShape from TopTools;
-- myReversedEdges : MapOfShape from TopTools;
-+ mySections: HArray2OfShape from TopTools;
-+ myFaces : HArray2OfShape from TopTools;
-+ myEdges : HArray2OfShape from TopTools;
-+ myReversedEdges : MapOfShape from TopTools;
- myTapes : DataMapOfShapeHArray2OfShape from BRepFill;
- myRails : DataMapOfShapeHArray2OfShape from BRepFill;
- myCurIndexOfSectionEdge : Integer from Standard;
-- myFirst : Shape from TopoDS;
-- myLast : Shape from TopoDS;
--
-+ myFirst : Shape from TopoDS;
-+ myLast : Shape from TopoDS;
-+ myGenMap : DataMapOfShapeListOfShape from TopTools;
-+
- myDegmax : Integer from Standard;
- mySegmax : Integer from Standard;
- myContinuity : Shape from GeomAbs;
- myMode : Trihedron from GeomFill;
- myForceApproxC1 : Boolean from Standard;
--
-+
- myErrorOnSurf : Real from Standard;
--
-+
- end Pipe;
-diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/src/BRepFill/BRepFill_Pipe.cxx OCCT-6.9.1p1_SRC/src/BRepFill/BRepFill_Pipe.cxx
---- OCCT-6.9.1_SRC/src/BRepFill/BRepFill_Pipe.cxx 2015-09-16 18:27:02.000000000 +0300
-+++ OCCT-6.9.1p1_SRC/src/BRepFill/BRepFill_Pipe.cxx 2016-04-26 15:51:10.000000000 +0300
-@@ -69,6 +69,38 @@
- static Standard_Boolean Affich = 0;
- #endif
-
-+// ---------------------------------------------------------------------------------
-+// static function: UpdateMap
-+// purpose:
-+// ---------------------------------------------------------------------------------
-+static Standard_Boolean UpdateMap(const TopoDS_Shape& theKey,
-+ const TopoDS_Shape& theValue,
-+ TopTools_DataMapOfShapeListOfShape& theMap)
-+{
-+ if(!theMap.IsBound(theKey))
-+ {
-+ TopTools_ListOfShape thelist;
-+ theMap.Bind(theKey, thelist);
-+ }
-+ TopTools_ListOfShape& aList = theMap.ChangeFind(theKey);
-+ TopTools_ListIteratorOfListOfShape anIt(aList);
-+ Standard_Boolean found = Standard_False;
-+
-+ for(; anIt.More(); anIt.Next())
-+ {
-+ if(theValue.IsSame(anIt.Value()))
-+ {
-+ found = Standard_True;
-+ break;
-+ }
-+ }
-+
-+ if(!found)
-+ aList.Append(theValue);
-+
-+ return !found;
-+}
-+
- static void ReverseModifiedEdges(TopoDS_Shape& aShape,
- TopTools_MapOfShape& Emap)
- {
-@@ -374,6 +406,47 @@
- return myLast;
- }
-
-+//=======================================================================
-+//function : Generated
-+//purpose :
-+//=======================================================================
-+void BRepFill_Pipe::Generated(const TopoDS_Shape& theShape,
-+ TopTools_ListOfShape& theList)
-+{
-+ theList.Clear();
-+
-+ if (theShape.IsSame(myProfile))
-+ theList.Append(myShape);
-+ else
-+ {
-+ if (theShape.ShapeType() == TopAbs_FACE ||
-+ theShape.ShapeType() == TopAbs_WIRE)
-+ {
-+ if(myGenMap.IsBound(theShape))
-+ theList = myGenMap.Find(theShape);
-+ }
-+ else if (theShape.ShapeType() == TopAbs_EDGE)
-+ {
-+ TopoDS_Iterator itw(mySpine);
-+ for (; itw.More(); itw.Next())
-+ {
-+ const TopoDS_Edge& aSpineEdge = TopoDS::Edge(itw.Value());
-+ const TopoDS_Shape& aFace = Face(aSpineEdge, TopoDS::Edge(theShape));
-+ theList.Append(aFace);
-+ }
-+ }
-+ else if (theShape.ShapeType() == TopAbs_VERTEX)
-+ {
-+ TopoDS_Iterator itw(mySpine);
-+ for (; itw.More(); itw.Next())
-+ {
-+ const TopoDS_Edge& aSpineEdge = TopoDS::Edge(itw.Value());
-+ const TopoDS_Shape& anEdge = Edge(aSpineEdge, TopoDS::Vertex(theShape));
-+ theList.Append(anEdge);
-+ }
-+ }
-+ }
-+}
-
- //=======================================================================
- //function : Face
-@@ -640,6 +713,7 @@
- MkSw.Build( myReversedEdges, myTapes, myRails,
- BRepFill_Modified, myContinuity, GeomFill_Location, myDegmax, mySegmax );
- result = MkSw.Shape();
-+ UpdateMap(TheS.Located(myProfile.Location()), result, myGenMap);
- myErrorOnSurf = MkSw.ErrorOnSurface();
-
- Handle(TopTools_HArray2OfShape) aSections = MkSw.Sections();
-@@ -662,6 +736,7 @@
- MkSw.Build( myReversedEdges, myTapes, myRails,
- BRepFill_Modified, myContinuity, GeomFill_Location, myDegmax, mySegmax );
- result = MkSw.Shape();
-+ UpdateMap(TheS.Located(myProfile.Location()), result, myGenMap);
- myErrorOnSurf = MkSw.ErrorOnSurface();
- //Correct <myFirst> and <myLast>
- ReverseModifiedEdges(myFirst, myReversedEdges);
-@@ -769,6 +844,7 @@
- BS.Add(solid,TopoDS::Shell(aLocalShape));
- // BS.Add(solid,TopoDS::Shell(result.Reversed()));
- }
-+ UpdateMap(TheS.Located(myProfile.Location()), solid, myGenMap);
- return solid;
- }
- else {
-diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/src/BRepOffsetAPI/BRepOffsetAPI_MakePipe.cdl OCCT-6.9.1p1_SRC/src/BRepOffsetAPI/BRepOffsetAPI_MakePipe.cdl
---- OCCT-6.9.1_SRC/src/BRepOffsetAPI/BRepOffsetAPI_MakePipe.cdl 2015-09-16 18:27:03.000000000 +0300
-+++ OCCT-6.9.1p1_SRC/src/BRepOffsetAPI/BRepOffsetAPI_MakePipe.cdl 2016-04-26 15:51:11.000000000 +0300
-@@ -36,8 +36,8 @@
- ListOfShape from TopTools
-
- is
--
--
-+
-+
- Create( Spine : Wire from TopoDS;
- Profile : Shape from TopoDS )
- ---Purpose: Constructs a pipe by sweeping the shape Profile along
-@@ -52,7 +52,7 @@
- -- Standard_DomainError if the profile is a solid or a
- -- composite solid.
- returns MakePipe from BRepOffsetAPI;
--
-+
- Create( Spine : Wire from TopoDS;
- Profile : Shape from TopoDS;
- aMode : Trihedron from GeomFill;
-@@ -72,7 +72,7 @@
- Build(me : in out)
- is redefined;
- ---Purpose: Builds the resulting shape (redefined from MakeShape).
-- ---Level: Public
-+ ---Level: Public
-
-
- FirstShape (me : in out)
-@@ -84,6 +84,11 @@
- ---Purpose: Returns the TopoDS Shape of the top of the prism.
- returns Shape from TopoDS;
-
-+ Generated (me: in out; S: Shape from TopoDS)
-+ returns ListOfShape from TopTools
-+ is redefined;
-+ ---C++: return const &
-+ ---Level: Public
-
- Generated (me: in out; SSpine, SProfile : Shape from TopoDS)
- ---Level: Public
-@@ -99,4 +104,4 @@
-
- myPipe : Pipe from BRepFill;
-
--end MakePipe;
-+end MakePipe;
-diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/src/BRepOffsetAPI/BRepOffsetAPI_MakePipe.cxx OCCT-6.9.1p1_SRC/src/BRepOffsetAPI/BRepOffsetAPI_MakePipe.cxx
---- OCCT-6.9.1_SRC/src/BRepOffsetAPI/BRepOffsetAPI_MakePipe.cxx 2015-09-16 18:27:03.000000000 +0300
-+++ OCCT-6.9.1p1_SRC/src/BRepOffsetAPI/BRepOffsetAPI_MakePipe.cxx 2016-04-26 15:51:11.000000000 +0300
-@@ -109,14 +109,23 @@
- return myPipe.LastShape();
- }
-
-+//=======================================================================
-+//function : Generated
-+//purpose : standard method
-+//=======================================================================
-+const TopTools_ListOfShape& BRepOffsetAPI_MakePipe::Generated(const TopoDS_Shape& S)
-+{
-+ myPipe.Generated(S, myGenerated);
-+ return myGenerated;
-+}
-
- //=======================================================================
- //function : Generated
--//purpose :
-+//purpose : returns generated elementary subshape
- //=======================================================================
-
--TopoDS_Shape BRepOffsetAPI_MakePipe::Generated (const TopoDS_Shape& SSpine,
-- const TopoDS_Shape& SProfile)
-+TopoDS_Shape BRepOffsetAPI_MakePipe::Generated(const TopoDS_Shape& SSpine,
-+ const TopoDS_Shape& SProfile)
- {
- if (SProfile.ShapeType () == TopAbs_EDGE) {
- return myPipe.Face (TopoDS::Edge (SSpine), TopoDS::Edge (SProfile));
-diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/src/QABugs/QABugs_19.cxx OCCT-6.9.1p1_SRC/src/QABugs/QABugs_19.cxx
---- OCCT-6.9.1_SRC/src/QABugs/QABugs_19.cxx 2015-09-16 18:27:29.000000000 +0300
-+++ OCCT-6.9.1p1_SRC/src/QABugs/QABugs_19.cxx 2016-04-26 15:51:28.000000000 +0300
-@@ -53,6 +53,7 @@
- #include <GeomFill_Trihedron.hxx>
- #include <BRepOffsetAPI_MakePipe.hxx>
- #include <Standard_Atomic.hxx>
-+#include <TopTools_ListIteratorOfListOfShape.hxx>
-
- #include <Standard_Version.hxx>
-
-@@ -4306,6 +4307,95 @@
- return 0;
- }
-
-+//========================================================================
-+//function : OCC27065
-+//purpose : Tests overloaded method "Generated" of BRepOffsetAPI_MakePipe
-+//========================================================================
-+static Standard_Integer OCC27065(Draw_Interpretor& di,
-+ Standard_Integer n, const char** a)
-+{
-+ if (n < 3) return 1;
-+ BRep_Builder BB;
-+
-+ TopoDS_Shape SpineShape = DBRep::Get(a[1],TopAbs_WIRE);
-+ if ( SpineShape.IsNull()) return 1;
-+ TopoDS_Wire Spine = TopoDS::Wire(SpineShape);
-+
-+ TopoDS_Shape Profile = DBRep::Get(a[2]);
-+ if ( Profile.IsNull()) return 1;
-+
-+ BRepOffsetAPI_MakePipe aPipeBuilder(Spine, Profile);
-+ if (!aPipeBuilder.IsDone())
-+ {
-+ di << "Error: failed to create pipe\n";
-+ return 1;
-+ }
-+
-+ TopExp_Explorer Explo(Profile, TopAbs_SHELL);
-+ TopoDS_Shape aShape;
-+ TopTools_ListIteratorOfListOfShape itl;
-+ if (Explo.More())
-+ {
-+ aShape = Explo.Current();
-+ TopoDS_Compound res1;
-+ BB.MakeCompound(res1);
-+ itl.Initialize(aPipeBuilder.Generated(aShape));
-+ for (; itl.More(); itl.Next())
-+ BB.Add(res1, itl.Value());
-+ DBRep::Set("res_shell", res1);
-+ }
-+
-+ Explo.Init(Profile, TopAbs_FACE);
-+ if (Explo.More())
-+ {
-+ aShape = Explo.Current();
-+ TopoDS_Compound res2;
-+ BB.MakeCompound(res2);
-+ itl.Initialize(aPipeBuilder.Generated(aShape));
-+ for (; itl.More(); itl.Next())
-+ BB.Add(res2, itl.Value());
-+ DBRep::Set("res_face", res2);
-+ }
-+
-+ Explo.Init(Profile, TopAbs_WIRE);
-+ if (Explo.More())
-+ {
-+ aShape = Explo.Current();
-+ TopoDS_Compound res3;
-+ BB.MakeCompound(res3);
-+ itl.Initialize(aPipeBuilder.Generated(aShape));
-+ for (; itl.More(); itl.Next())
-+ BB.Add(res3, itl.Value());
-+ DBRep::Set("res_wire", res3);
-+ }
-+
-+ Explo.Init(Profile, TopAbs_EDGE);
-+ if (Explo.More())
-+ {
-+ aShape = Explo.Current();
-+ TopoDS_Compound res4;
-+ BB.MakeCompound(res4);
-+ itl.Initialize(aPipeBuilder.Generated(aShape));
-+ for (; itl.More(); itl.Next())
-+ BB.Add(res4, itl.Value());
-+ DBRep::Set("res_edge", res4);
-+ }
-+
-+ Explo.Init(Profile, TopAbs_VERTEX);
-+ if (Explo.More())
-+ {
-+ aShape = Explo.Current();
-+ TopoDS_Compound res5;
-+ BB.MakeCompound(res5);
-+ itl.Initialize(aPipeBuilder.Generated(aShape));
-+ for (; itl.More(); itl.Next())
-+ BB.Add(res5, itl.Value());
-+ DBRep::Set("res_vertex", res5);
-+ }
-+
-+ return 0;
-+}
-+
- void QABugs::Commands_19(Draw_Interpretor& theCommands) {
- const char *group = "QABugs";
-
-@@ -4397,5 +4487,9 @@
-
- theCommands.Add ("OCC26313", "OCC26313 result shape", __FILE__, OCC26313, group);
-
-+ theCommands.Add ("OCC27065",
-+ "OCC27065 spine profile",
-+ __FILE__, OCC27065, group);
-+
- return;
- }
-diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/src/SelectMgr/SelectMgr_SelectionManager.cxx OCCT-6.9.1p1_SRC/src/SelectMgr/SelectMgr_SelectionManager.cxx
---- OCCT-6.9.1_SRC/src/SelectMgr/SelectMgr_SelectionManager.cxx 2015-09-16 18:27:36.000000000 +0300
-+++ OCCT-6.9.1p1_SRC/src/SelectMgr/SelectMgr_SelectionManager.cxx 2016-04-26 15:51:32.000000000 +0300
-@@ -687,6 +687,7 @@
- for(theObject->Init(); theObject->More(); theObject->Next())
- {
- const Handle(SelectMgr_Selection)& aSelection = theObject->CurrentSelection();
-+ aSelection->UpdateStatus (SelectMgr_TOU_Full);
- Standard_Integer aSelMode = aSelection->Mode();
-
- for (TColStd_MapIteratorOfMapOfTransient aSelectorIter (mySelectors); aSelectorIter.More(); aSelectorIter.Next())
-@@ -697,10 +698,10 @@
- ClearSelectionStructures (theObject, aSelMode, aCurSelector);
- theObject->RecomputePrimitives(aSelMode);
- RestoreSelectionStructures (theObject, aSelMode, aCurSelector);
-+ aSelection->UpdateStatus (SelectMgr_TOU_None);
-+ aSelection->UpdateBVHStatus (SelectMgr_TBU_None);
- }
- }
-- aSelection->UpdateStatus (SelectMgr_TOU_None);
-- aSelection->UpdateBVHStatus (SelectMgr_TBU_None);
- }
- }
-
-diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/tests/bugs/modalg_6/bug27065_1 OCCT-6.9.1p1_SRC/tests/bugs/modalg_6/bug27065_1
---- OCCT-6.9.1_SRC/tests/bugs/modalg_6/bug27065_1 1970-01-01 03:00:00.000000000 +0300
-+++ OCCT-6.9.1p1_SRC/tests/bugs/modalg_6/bug27065_1 2016-04-26 14:43:27.000000000 +0300
-@@ -0,0 +1,24 @@
-+puts "============"
-+puts "OCC27065"
-+puts "============"
-+puts ""
-+###############################
-+## BRepOffsetAPI_MakePipe misses definition of virtual method Generated()
-+###############################
-+
-+pload QAcommands
-+
-+restore [locate_data_file bug24840_comp.brep] sh
-+explode sh
-+OCC27065 sh_1 sh_2
-+fit
-+
-+checknbshapes res_shell -vertex 56 -edge 130 -wire 99 -face 99 -shell 24 -solid 24 -compsolid 1 -compound 1 -shape 434
-+
-+checknbshapes res_face -vertex 8 -edge 12 -wire 6 -face 6 -shell 1 -solid 1 -compsolid 0 -compound 1 -shape 35
-+
-+checknbshapes res_wire -vertex 8 -edge 12 -wire 4 -face 4 -shell 1 -solid 0 -compsolid 0 -compound 1 -shape 30
-+
-+checknbshapes res_edge -vertex 4 -edge 4 -wire 1 -face 1 -shell 0 -solid 0 -compsolid 0 -compound 1 -shape 11
-+
-+checknbshapes res_vertex -vertex 2 -edge 1 -wire 0 -face 0 -shell 0 -solid 0 -compsolid 0 -compound 1 -shape 4
-diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/tests/bugs/modalg_6/bug27065_2 OCCT-6.9.1p1_SRC/tests/bugs/modalg_6/bug27065_2
---- OCCT-6.9.1_SRC/tests/bugs/modalg_6/bug27065_2 1970-01-01 03:00:00.000000000 +0300
-+++ OCCT-6.9.1p1_SRC/tests/bugs/modalg_6/bug27065_2 2016-04-26 14:43:27.000000000 +0300
-@@ -0,0 +1,28 @@
-+puts "============"
-+puts "OCC27065"
-+puts "============"
-+puts ""
-+###############################
-+## BRepOffsetAPI_MakePipe misses definition of virtual method Generated()
-+###############################
-+
-+pload QAcommands
-+
-+restore [locate_data_file bug23903_base.brep] base
-+restore [locate_data_file bug23903_path.brep] sp
-+explode base
-+shape pr Sh
-+add base_1 pr
-+add base_2 pr
-+OCC27065 sp pr
-+fit
-+
-+checknbshapes res_shell -vertex 2 -edge 5 -wire 3 -face 3 -shell 2 -solid 2 -compsolid 1 -compound 1 -shape 19
-+
-+checknbshapes res_face -vertex 2 -edge 4 -wire 2 -face 2 -shell 1 -solid 1 -compsolid 0 -compound 1 -shape 13
-+
-+checknbshapes res_wire -vertex 2 -edge 4 -wire 2 -face 2 -shell 1 -solid 0 -compsolid 0 -compound 1 -shape 12
-+
-+checknbshapes res_edge -vertex 2 -edge 3 -wire 1 -face 1 -shell 0 -solid 0 -compsolid 0 -compound 1 -shape 8
-+
-+checknbshapes res_vertex -vertex 1 -edge 1 -wire 0 -face 0 -shell 0 -solid 0 -compsolid 0 -compound 1 -shape 3
-diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/tests/bugs/vis/bug26870 OCCT-6.9.1p1_SRC/tests/bugs/vis/bug26870
---- OCCT-6.9.1_SRC/tests/bugs/vis/bug26870 1970-01-01 03:00:00.000000000 +0300
-+++ OCCT-6.9.1p1_SRC/tests/bugs/vis/bug26870 2016-04-26 15:52:06.000000000 +0300
-@@ -0,0 +1,37 @@
-+puts "============"
-+puts "CR26870"
-+puts "============"
-+puts ""
-+
-+##########################################################################################
-+puts "Visualization - deactivated selections are not updated after object's re-computation"
-+##########################################################################################
-+
-+pload VISUALIZATION MODELING
-+
-+vinit
-+box b 1 1 1
-+vdisplay b
-+vfit
-+
-+vselmode b 2 1
-+vselmode b 4 1
-+vselmode b 4 0
-+
-+box b 3 3 3
-+vdisplay b
-+vfit
-+
-+vselmode 4 1
-+
-+# pick a point onto previously computed face
-+vmoveto 80 265
-+if {[vreadpixel 90 206 name] == "CYAN1 1"} {
-+ puts "ERROR: previously computed entities are highlighted! Selection mode 4 was not updated after redisplaying the box."
-+}
-+# pick a point onto box
-+if {[vreadpixel 29 216 name] == "YELLOW 1"} {
-+ puts "ERROR: the box's face is not highlighted! Selection mode 4 was not updated after redisplaying the box."
-+}
-+
-+set only_screen 1
Added: salome-occt-6.9.1.patch
===================================================================
--- salome-occt-6.9.1.patch (rev 0)
+++ salome-occt-6.9.1.patch 2016-09-23 14:50:23 UTC (rev 190212)
@@ -0,0 +1,744 @@
+diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/drv/BRepFill/BRepFill_Pipe.jxx OCCT-6.9.1p1_SRC/drv/BRepFill/BRepFill_Pipe.jxx
+--- OCCT-6.9.1_SRC/drv/BRepFill/BRepFill_Pipe.jxx 2015-09-25 17:35:58.000000000 +0300
++++ OCCT-6.9.1p1_SRC/drv/BRepFill/BRepFill_Pipe.jxx 2016-04-26 16:10:42.000000000 +0300
+@@ -4,6 +4,7 @@
+ #include <StdFail_NotDone.hxx>
+ #include <TopoDS_Wire.hxx>
+ #include <TopoDS_Shape.hxx>
++#include <TopTools_ListOfShape.hxx>
+ #include <TopoDS_Face.hxx>
+ #include <TopoDS_Edge.hxx>
+ #include <TopoDS_Vertex.hxx>
+diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/drv/BRepOffsetAPI/BRepOffsetAPI_MakePipe.jxx OCCT-6.9.1p1_SRC/drv/BRepOffsetAPI/BRepOffsetAPI_MakePipe.jxx
+--- OCCT-6.9.1_SRC/drv/BRepOffsetAPI/BRepOffsetAPI_MakePipe.jxx 2015-09-25 17:36:04.000000000 +0300
++++ OCCT-6.9.1p1_SRC/drv/BRepOffsetAPI/BRepOffsetAPI_MakePipe.jxx 2016-04-26 16:10:47.000000000 +0300
+@@ -1,4 +1,5 @@
+ #include <TopoDS_Wire.hxx>
+ #include <TopoDS_Shape.hxx>
+ #include <BRepFill_Pipe.hxx>
++#include <TopTools_ListOfShape.hxx>
+ #include <BRepOffsetAPI_MakePipe.hxx>
+diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/inc/BRepFill_Pipe.hxx OCCT-6.9.1p1_SRC/inc/BRepFill_Pipe.hxx
+--- OCCT-6.9.1_SRC/inc/BRepFill_Pipe.hxx 2015-09-25 17:35:58.000000000 +0300
++++ OCCT-6.9.1p1_SRC/inc/BRepFill_Pipe.hxx 2016-04-26 16:10:42.000000000 +0300
+@@ -18,6 +18,7 @@
+ #include <TopTools_MapOfShape.hxx>
+ #include <BRepFill_DataMapOfShapeHArray2OfShape.hxx>
+ #include <Standard_Integer.hxx>
++#include <TopTools_DataMapOfShapeListOfShape.hxx>
+ #include <GeomAbs_Shape.hxx>
+ #include <GeomFill_Trihedron.hxx>
+ #include <Standard_Boolean.hxx>
+@@ -28,6 +29,7 @@
+ class StdFail_NotDone;
+ class TopoDS_Wire;
+ class TopoDS_Shape;
++class TopTools_ListOfShape;
+ class TopoDS_Face;
+ class TopoDS_Edge;
+ class TopoDS_Vertex;
+@@ -65,6 +67,9 @@
+
+ Standard_EXPORT const TopoDS_Shape& LastShape() const;
+
++ //! Returns the list of shapes generated from the shape <S>.
++ Standard_EXPORT void Generated (const TopoDS_Shape& S, TopTools_ListOfShape& L) ;
++
+ //! Returns the face created from an edge of the spine
+ //! and an edge of the profile.
+ //! if the edges are not in the spine or the profile
+@@ -131,6 +136,7 @@
+ Standard_Integer myCurIndexOfSectionEdge;
+ TopoDS_Shape myFirst;
+ TopoDS_Shape myLast;
++ TopTools_DataMapOfShapeListOfShape myGenMap;
+ Standard_Integer myDegmax;
+ Standard_Integer mySegmax;
+ GeomAbs_Shape myContinuity;
+diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/inc/BRepOffsetAPI_MakePipe.hxx OCCT-6.9.1p1_SRC/inc/BRepOffsetAPI_MakePipe.hxx
+--- OCCT-6.9.1_SRC/inc/BRepOffsetAPI_MakePipe.hxx 2015-09-25 17:36:04.000000000 +0300
++++ OCCT-6.9.1p1_SRC/inc/BRepOffsetAPI_MakePipe.hxx 2016-04-26 16:10:47.000000000 +0300
+@@ -18,6 +18,7 @@
+ class TopoDS_Wire;
+ class TopoDS_Shape;
+ class BRepFill_Pipe;
++class TopTools_ListOfShape;
+
+
+ //! Describes functions to build pipes.
+@@ -68,6 +69,8 @@
+ //! Returns the TopoDS Shape of the top of the prism.
+ Standard_EXPORT TopoDS_Shape LastShape() ;
+
++ Standard_EXPORT virtual const TopTools_ListOfShape& Generated (const TopoDS_Shape& S) ;
++
+ Standard_EXPORT TopoDS_Shape Generated (const TopoDS_Shape& SSpine, const TopoDS_Shape& SProfile) ;
+
+ Standard_EXPORT Standard_Real ErrorOnSurface() const;
+diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/src/BRepFill/BRepFill_Pipe.cdl OCCT-6.9.1p1_SRC/src/BRepFill/BRepFill_Pipe.cdl
+--- OCCT-6.9.1_SRC/src/BRepFill/BRepFill_Pipe.cdl 2015-09-16 18:27:02.000000000 +0300
++++ OCCT-6.9.1p1_SRC/src/BRepFill/BRepFill_Pipe.cdl 2016-04-26 15:51:10.000000000 +0300
+@@ -15,11 +15,11 @@
+ -- commercial license or contractual agreement.
+
+
+-class Pipe from BRepFill
++class Pipe from BRepFill
+
+ ---Purpose: Create a shape by sweeping a shape (the profile)
+ -- along a wire (the spine).
+- --
++ --
+ -- For each edge or vertex from the spine the user
+ -- may ask for the shape generated from each subshape
+ -- of the profile.
+@@ -28,38 +28,40 @@
+
+ HArray2OfShape from TopTools,
+ MapOfShape from TopTools,
++ ListOfShape from TopTools,
+ DataMapOfShapeHArray2OfShape from BRepFill,
++ DataMapOfShapeListOfShape from TopTools,
+ LocationLaw from BRepFill,
+ Shape from TopoDS,
+ Face from TopoDS,
+ Wire from TopoDS,
+ Edge from TopoDS,
+- Vertex from TopoDS,
++ Vertex from TopoDS,
+ Pnt from gp,
+ Trsf from gp,
+ Shape from GeomAbs,
+ Trihedron from GeomFill
+
+ raises
+- DomainError from Standard,
++ DomainError from Standard,
+ NotDone from StdFail
+
+ is
+
+ Create returns Pipe from BRepFill;
+-
+- Create ( Spine : Wire from TopoDS;
++
++ Create ( Spine : Wire from TopoDS;
+ Profile : Shape from TopoDS;
+ aMode : Trihedron from GeomFill = GeomFill_IsCorrectedFrenet;
+ ForceApproxC1 : Boolean from Standard = Standard_False;
+- GeneratePartCase : Boolean from Standard = Standard_False)
++ GeneratePartCase : Boolean from Standard = Standard_False)
+ returns Pipe from BRepFill;
+-
+- Perform (me : in out; Spine : Wire from TopoDS;
++
++ Perform (me : in out; Spine : Wire from TopoDS;
+ Profile : Shape from TopoDS;
+- GeneratePartCase : Boolean from Standard = Standard_False)
++ GeneratePartCase : Boolean from Standard = Standard_False)
+ is static;
+-
++
+ Spine(me) returns Shape from TopoDS
+ ---C++ : return const &
+ is static;
+@@ -74,7 +76,7 @@
+
+ ErrorOnSurface (me)
+ returns Real from Standard;
+-
++
+ FirstShape(me) returns Shape from TopoDS
+ ---C++ : return const &
+ is static;
+@@ -83,27 +85,30 @@
+ ---C++ : return const &
+ is static;
+
++ Generated(me: in out; S: Shape from TopoDS; L: in out ListOfShape from TopTools);
++ ---Purpose: Returns the list of shapes generated from the shape <S>.
++
+ Face(me : in out; ESpine, EProfile : Edge from TopoDS)
+ returns Face from TopoDS
+ ---Purpose: Returns the face created from an edge of the spine
+ -- and an edge of the profile.
+ raises
+- DomainError from Standard
++ DomainError from Standard
+ ---Purpose: if the edges are not in the spine or the profile
+-
++
+ is static;
+-
++
+ Edge(me : in out; ESpine : Edge from TopoDS; VProfile : Vertex from TopoDS)
+ returns Edge from TopoDS
+ ---Purpose: Returns the edge created from an edge of the spine
+ -- and a vertex of the profile.
+ raises
+- DomainError from Standard
++ DomainError from Standard
+ ---Purpose: if the edge or the vertex are not in the spine or
+ -- the profile.
+-
++
+ is static;
+-
++
+ Section(me; VSpine : Vertex from TopoDS)
+ returns Shape from TopoDS
+ ---Purpose: Returns the shape created from the profile at the
+@@ -111,50 +116,50 @@
+ raises
+ DomainError from Standard
+ ---Purpose: if the vertex is not in the Spine
+- is static;
+-
+-
+- PipeLine(me : in out; Point : Pnt from gp)
++ is static;
++
++
++ PipeLine(me : in out; Point : Pnt from gp)
+ ---Purpose: Create a Wire by sweeping the Point along the <spine>
+- returns Wire from TopoDS
++ returns Wire from TopoDS
+ raises
+ DomainError from Standard
+- ---Purpose: if the <Spine> is undefined
++ ---Purpose: if the <Spine> is undefined
+ is static;
+
+
+ --
+ -- Private methods
+- --
+-
+- MakeShape(me : in out; S : Shape from TopoDS;
++ --
++
++ MakeShape(me : in out; S : Shape from TopoDS;
+ FirstShape, LastShape : Shape from TopoDS)
+ returns Shape from TopoDS
+ ---Purpose: Auxiliary recursive method used to build the
+- -- result.
++ -- result.
+ is static private;
+
+
+- FindEdge(me; S : Shape from TopoDS;
+- E : Edge from TopoDS;
+- Init : in out Integer)
++ FindEdge(me; S : Shape from TopoDS;
++ E : Edge from TopoDS;
++ Init : in out Integer)
+ ---Purpose: Auxiliary recursive method used to find the edge's index
+ returns Integer
+ is static private;
+
+- FindVertex(me; S : Shape from TopoDS;
+- V : Vertex from TopoDS;
+- Init : in out Integer)
++ FindVertex(me; S : Shape from TopoDS;
++ V : Vertex from TopoDS;
++ Init : in out Integer)
+ returns Integer
+- is static private;
+-
++ is static private;
++
+ DefineRealSegmax(me : in out)
+- is static private;
+-
++ is static private;
++
+ RebuildTopOrBottomFace(me; aFace: Shape from TopoDS;
+ IsTop: Boolean from Standard)
+- is static private;
+-
++ is static private;
++
+ ShareFaces(me: in out; theShape: Shape from TopoDS;
+ theInitialFacesLen: Integer;
+ theInitialEdgesLen: Integer;
+@@ -164,30 +169,31 @@
+ -- Returns the shared shape. If theShape is not modified this
+ -- method returns it.
+ returns Shape from TopoDS
+- is static private;
+-
++ is static private;
++
+ fields
+ mySpine : Wire from TopoDS;
+ myProfile : Shape from TopoDS;
+- myShape : Shape from TopoDS;
+- myTrsf : Trsf from gp;
++ myShape : Shape from TopoDS;
++ myTrsf : Trsf from gp;
+ myLoc : LocationLaw from BRepFill;
+- mySections: HArray2OfShape from TopTools;
+- myFaces : HArray2OfShape from TopTools;
+- myEdges : HArray2OfShape from TopTools;
+- myReversedEdges : MapOfShape from TopTools;
++ mySections: HArray2OfShape from TopTools;
++ myFaces : HArray2OfShape from TopTools;
++ myEdges : HArray2OfShape from TopTools;
++ myReversedEdges : MapOfShape from TopTools;
+ myTapes : DataMapOfShapeHArray2OfShape from BRepFill;
+ myRails : DataMapOfShapeHArray2OfShape from BRepFill;
+ myCurIndexOfSectionEdge : Integer from Standard;
+- myFirst : Shape from TopoDS;
+- myLast : Shape from TopoDS;
+-
++ myFirst : Shape from TopoDS;
++ myLast : Shape from TopoDS;
++ myGenMap : DataMapOfShapeListOfShape from TopTools;
++
+ myDegmax : Integer from Standard;
+ mySegmax : Integer from Standard;
+ myContinuity : Shape from GeomAbs;
+ myMode : Trihedron from GeomFill;
+ myForceApproxC1 : Boolean from Standard;
+-
++
+ myErrorOnSurf : Real from Standard;
+-
++
+ end Pipe;
+diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/src/BRepFill/BRepFill_Pipe.cxx OCCT-6.9.1p1_SRC/src/BRepFill/BRepFill_Pipe.cxx
+--- OCCT-6.9.1_SRC/src/BRepFill/BRepFill_Pipe.cxx 2015-09-16 18:27:02.000000000 +0300
++++ OCCT-6.9.1p1_SRC/src/BRepFill/BRepFill_Pipe.cxx 2016-04-26 15:51:10.000000000 +0300
+@@ -69,6 +69,38 @@
+ static Standard_Boolean Affich = 0;
+ #endif
+
++// ---------------------------------------------------------------------------------
++// static function: UpdateMap
++// purpose:
++// ---------------------------------------------------------------------------------
++static Standard_Boolean UpdateMap(const TopoDS_Shape& theKey,
++ const TopoDS_Shape& theValue,
++ TopTools_DataMapOfShapeListOfShape& theMap)
++{
++ if(!theMap.IsBound(theKey))
++ {
++ TopTools_ListOfShape thelist;
++ theMap.Bind(theKey, thelist);
++ }
++ TopTools_ListOfShape& aList = theMap.ChangeFind(theKey);
++ TopTools_ListIteratorOfListOfShape anIt(aList);
++ Standard_Boolean found = Standard_False;
++
++ for(; anIt.More(); anIt.Next())
++ {
++ if(theValue.IsSame(anIt.Value()))
++ {
++ found = Standard_True;
++ break;
++ }
++ }
++
++ if(!found)
++ aList.Append(theValue);
++
++ return !found;
++}
++
+ static void ReverseModifiedEdges(TopoDS_Shape& aShape,
+ TopTools_MapOfShape& Emap)
+ {
+@@ -374,6 +406,47 @@
+ return myLast;
+ }
+
++//=======================================================================
++//function : Generated
++//purpose :
++//=======================================================================
++void BRepFill_Pipe::Generated(const TopoDS_Shape& theShape,
++ TopTools_ListOfShape& theList)
++{
++ theList.Clear();
++
++ if (theShape.IsSame(myProfile))
++ theList.Append(myShape);
++ else
++ {
++ if (theShape.ShapeType() == TopAbs_FACE ||
++ theShape.ShapeType() == TopAbs_WIRE)
++ {
++ if(myGenMap.IsBound(theShape))
++ theList = myGenMap.Find(theShape);
++ }
++ else if (theShape.ShapeType() == TopAbs_EDGE)
++ {
++ TopoDS_Iterator itw(mySpine);
++ for (; itw.More(); itw.Next())
++ {
++ const TopoDS_Edge& aSpineEdge = TopoDS::Edge(itw.Value());
++ const TopoDS_Shape& aFace = Face(aSpineEdge, TopoDS::Edge(theShape));
++ theList.Append(aFace);
++ }
++ }
++ else if (theShape.ShapeType() == TopAbs_VERTEX)
++ {
++ TopoDS_Iterator itw(mySpine);
++ for (; itw.More(); itw.Next())
++ {
++ const TopoDS_Edge& aSpineEdge = TopoDS::Edge(itw.Value());
++ const TopoDS_Shape& anEdge = Edge(aSpineEdge, TopoDS::Vertex(theShape));
++ theList.Append(anEdge);
++ }
++ }
++ }
++}
+
+ //=======================================================================
+ //function : Face
+@@ -640,6 +713,7 @@
+ MkSw.Build( myReversedEdges, myTapes, myRails,
+ BRepFill_Modified, myContinuity, GeomFill_Location, myDegmax, mySegmax );
+ result = MkSw.Shape();
++ UpdateMap(TheS.Located(myProfile.Location()), result, myGenMap);
+ myErrorOnSurf = MkSw.ErrorOnSurface();
+
+ Handle(TopTools_HArray2OfShape) aSections = MkSw.Sections();
+@@ -662,6 +736,7 @@
+ MkSw.Build( myReversedEdges, myTapes, myRails,
+ BRepFill_Modified, myContinuity, GeomFill_Location, myDegmax, mySegmax );
+ result = MkSw.Shape();
++ UpdateMap(TheS.Located(myProfile.Location()), result, myGenMap);
+ myErrorOnSurf = MkSw.ErrorOnSurface();
+ //Correct <myFirst> and <myLast>
+ ReverseModifiedEdges(myFirst, myReversedEdges);
+@@ -769,6 +844,7 @@
+ BS.Add(solid,TopoDS::Shell(aLocalShape));
+ // BS.Add(solid,TopoDS::Shell(result.Reversed()));
+ }
++ UpdateMap(TheS.Located(myProfile.Location()), solid, myGenMap);
+ return solid;
+ }
+ else {
+diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/src/BRepOffsetAPI/BRepOffsetAPI_MakePipe.cdl OCCT-6.9.1p1_SRC/src/BRepOffsetAPI/BRepOffsetAPI_MakePipe.cdl
+--- OCCT-6.9.1_SRC/src/BRepOffsetAPI/BRepOffsetAPI_MakePipe.cdl 2015-09-16 18:27:03.000000000 +0300
++++ OCCT-6.9.1p1_SRC/src/BRepOffsetAPI/BRepOffsetAPI_MakePipe.cdl 2016-04-26 15:51:11.000000000 +0300
+@@ -36,8 +36,8 @@
+ ListOfShape from TopTools
+
+ is
+-
+-
++
++
+ Create( Spine : Wire from TopoDS;
+ Profile : Shape from TopoDS )
+ ---Purpose: Constructs a pipe by sweeping the shape Profile along
+@@ -52,7 +52,7 @@
+ -- Standard_DomainError if the profile is a solid or a
+ -- composite solid.
+ returns MakePipe from BRepOffsetAPI;
+-
++
+ Create( Spine : Wire from TopoDS;
+ Profile : Shape from TopoDS;
+ aMode : Trihedron from GeomFill;
+@@ -72,7 +72,7 @@
+ Build(me : in out)
+ is redefined;
+ ---Purpose: Builds the resulting shape (redefined from MakeShape).
+- ---Level: Public
++ ---Level: Public
+
+
+ FirstShape (me : in out)
+@@ -84,6 +84,11 @@
+ ---Purpose: Returns the TopoDS Shape of the top of the prism.
+ returns Shape from TopoDS;
+
++ Generated (me: in out; S: Shape from TopoDS)
++ returns ListOfShape from TopTools
++ is redefined;
++ ---C++: return const &
++ ---Level: Public
+
+ Generated (me: in out; SSpine, SProfile : Shape from TopoDS)
+ ---Level: Public
+@@ -99,4 +104,4 @@
+
+ myPipe : Pipe from BRepFill;
+
+-end MakePipe;
++end MakePipe;
+diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/src/BRepOffsetAPI/BRepOffsetAPI_MakePipe.cxx OCCT-6.9.1p1_SRC/src/BRepOffsetAPI/BRepOffsetAPI_MakePipe.cxx
+--- OCCT-6.9.1_SRC/src/BRepOffsetAPI/BRepOffsetAPI_MakePipe.cxx 2015-09-16 18:27:03.000000000 +0300
++++ OCCT-6.9.1p1_SRC/src/BRepOffsetAPI/BRepOffsetAPI_MakePipe.cxx 2016-04-26 15:51:11.000000000 +0300
+@@ -109,14 +109,23 @@
+ return myPipe.LastShape();
+ }
+
++//=======================================================================
++//function : Generated
++//purpose : standard method
++//=======================================================================
++const TopTools_ListOfShape& BRepOffsetAPI_MakePipe::Generated(const TopoDS_Shape& S)
++{
++ myPipe.Generated(S, myGenerated);
++ return myGenerated;
++}
+
+ //=======================================================================
+ //function : Generated
+-//purpose :
++//purpose : returns generated elementary subshape
+ //=======================================================================
+
+-TopoDS_Shape BRepOffsetAPI_MakePipe::Generated (const TopoDS_Shape& SSpine,
+- const TopoDS_Shape& SProfile)
++TopoDS_Shape BRepOffsetAPI_MakePipe::Generated(const TopoDS_Shape& SSpine,
++ const TopoDS_Shape& SProfile)
+ {
+ if (SProfile.ShapeType () == TopAbs_EDGE) {
+ return myPipe.Face (TopoDS::Edge (SSpine), TopoDS::Edge (SProfile));
+diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/src/QABugs/QABugs_19.cxx OCCT-6.9.1p1_SRC/src/QABugs/QABugs_19.cxx
+--- OCCT-6.9.1_SRC/src/QABugs/QABugs_19.cxx 2015-09-16 18:27:29.000000000 +0300
++++ OCCT-6.9.1p1_SRC/src/QABugs/QABugs_19.cxx 2016-04-26 15:51:28.000000000 +0300
+@@ -53,6 +53,7 @@
+ #include <GeomFill_Trihedron.hxx>
+ #include <BRepOffsetAPI_MakePipe.hxx>
+ #include <Standard_Atomic.hxx>
++#include <TopTools_ListIteratorOfListOfShape.hxx>
+
+ #include <Standard_Version.hxx>
+
+@@ -4306,6 +4307,95 @@
+ return 0;
+ }
+
++//========================================================================
++//function : OCC27065
++//purpose : Tests overloaded method "Generated" of BRepOffsetAPI_MakePipe
++//========================================================================
++static Standard_Integer OCC27065(Draw_Interpretor& di,
++ Standard_Integer n, const char** a)
++{
++ if (n < 3) return 1;
++ BRep_Builder BB;
++
++ TopoDS_Shape SpineShape = DBRep::Get(a[1],TopAbs_WIRE);
++ if ( SpineShape.IsNull()) return 1;
++ TopoDS_Wire Spine = TopoDS::Wire(SpineShape);
++
++ TopoDS_Shape Profile = DBRep::Get(a[2]);
++ if ( Profile.IsNull()) return 1;
++
++ BRepOffsetAPI_MakePipe aPipeBuilder(Spine, Profile);
++ if (!aPipeBuilder.IsDone())
++ {
++ di << "Error: failed to create pipe\n";
++ return 1;
++ }
++
++ TopExp_Explorer Explo(Profile, TopAbs_SHELL);
++ TopoDS_Shape aShape;
++ TopTools_ListIteratorOfListOfShape itl;
++ if (Explo.More())
++ {
++ aShape = Explo.Current();
++ TopoDS_Compound res1;
++ BB.MakeCompound(res1);
++ itl.Initialize(aPipeBuilder.Generated(aShape));
++ for (; itl.More(); itl.Next())
++ BB.Add(res1, itl.Value());
++ DBRep::Set("res_shell", res1);
++ }
++
++ Explo.Init(Profile, TopAbs_FACE);
++ if (Explo.More())
++ {
++ aShape = Explo.Current();
++ TopoDS_Compound res2;
++ BB.MakeCompound(res2);
++ itl.Initialize(aPipeBuilder.Generated(aShape));
++ for (; itl.More(); itl.Next())
++ BB.Add(res2, itl.Value());
++ DBRep::Set("res_face", res2);
++ }
++
++ Explo.Init(Profile, TopAbs_WIRE);
++ if (Explo.More())
++ {
++ aShape = Explo.Current();
++ TopoDS_Compound res3;
++ BB.MakeCompound(res3);
++ itl.Initialize(aPipeBuilder.Generated(aShape));
++ for (; itl.More(); itl.Next())
++ BB.Add(res3, itl.Value());
++ DBRep::Set("res_wire", res3);
++ }
++
++ Explo.Init(Profile, TopAbs_EDGE);
++ if (Explo.More())
++ {
++ aShape = Explo.Current();
++ TopoDS_Compound res4;
++ BB.MakeCompound(res4);
++ itl.Initialize(aPipeBuilder.Generated(aShape));
++ for (; itl.More(); itl.Next())
++ BB.Add(res4, itl.Value());
++ DBRep::Set("res_edge", res4);
++ }
++
++ Explo.Init(Profile, TopAbs_VERTEX);
++ if (Explo.More())
++ {
++ aShape = Explo.Current();
++ TopoDS_Compound res5;
++ BB.MakeCompound(res5);
++ itl.Initialize(aPipeBuilder.Generated(aShape));
++ for (; itl.More(); itl.Next())
++ BB.Add(res5, itl.Value());
++ DBRep::Set("res_vertex", res5);
++ }
++
++ return 0;
++}
++
+ void QABugs::Commands_19(Draw_Interpretor& theCommands) {
+ const char *group = "QABugs";
+
+@@ -4397,5 +4487,9 @@
+
+ theCommands.Add ("OCC26313", "OCC26313 result shape", __FILE__, OCC26313, group);
+
++ theCommands.Add ("OCC27065",
++ "OCC27065 spine profile",
++ __FILE__, OCC27065, group);
++
+ return;
+ }
+diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/src/SelectMgr/SelectMgr_SelectionManager.cxx OCCT-6.9.1p1_SRC/src/SelectMgr/SelectMgr_SelectionManager.cxx
+--- OCCT-6.9.1_SRC/src/SelectMgr/SelectMgr_SelectionManager.cxx 2015-09-16 18:27:36.000000000 +0300
++++ OCCT-6.9.1p1_SRC/src/SelectMgr/SelectMgr_SelectionManager.cxx 2016-04-26 15:51:32.000000000 +0300
+@@ -687,6 +687,7 @@
+ for(theObject->Init(); theObject->More(); theObject->Next())
+ {
+ const Handle(SelectMgr_Selection)& aSelection = theObject->CurrentSelection();
++ aSelection->UpdateStatus (SelectMgr_TOU_Full);
+ Standard_Integer aSelMode = aSelection->Mode();
+
+ for (TColStd_MapIteratorOfMapOfTransient aSelectorIter (mySelectors); aSelectorIter.More(); aSelectorIter.Next())
+@@ -697,10 +698,10 @@
+ ClearSelectionStructures (theObject, aSelMode, aCurSelector);
+ theObject->RecomputePrimitives(aSelMode);
+ RestoreSelectionStructures (theObject, aSelMode, aCurSelector);
++ aSelection->UpdateStatus (SelectMgr_TOU_None);
++ aSelection->UpdateBVHStatus (SelectMgr_TBU_None);
+ }
+ }
+- aSelection->UpdateStatus (SelectMgr_TOU_None);
+- aSelection->UpdateBVHStatus (SelectMgr_TBU_None);
+ }
+ }
+
+diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/tests/bugs/modalg_6/bug27065_1 OCCT-6.9.1p1_SRC/tests/bugs/modalg_6/bug27065_1
+--- OCCT-6.9.1_SRC/tests/bugs/modalg_6/bug27065_1 1970-01-01 03:00:00.000000000 +0300
++++ OCCT-6.9.1p1_SRC/tests/bugs/modalg_6/bug27065_1 2016-04-26 14:43:27.000000000 +0300
+@@ -0,0 +1,24 @@
++puts "============"
++puts "OCC27065"
++puts "============"
++puts ""
++###############################
++## BRepOffsetAPI_MakePipe misses definition of virtual method Generated()
++###############################
++
++pload QAcommands
++
++restore [locate_data_file bug24840_comp.brep] sh
++explode sh
++OCC27065 sh_1 sh_2
++fit
++
++checknbshapes res_shell -vertex 56 -edge 130 -wire 99 -face 99 -shell 24 -solid 24 -compsolid 1 -compound 1 -shape 434
++
++checknbshapes res_face -vertex 8 -edge 12 -wire 6 -face 6 -shell 1 -solid 1 -compsolid 0 -compound 1 -shape 35
++
++checknbshapes res_wire -vertex 8 -edge 12 -wire 4 -face 4 -shell 1 -solid 0 -compsolid 0 -compound 1 -shape 30
++
++checknbshapes res_edge -vertex 4 -edge 4 -wire 1 -face 1 -shell 0 -solid 0 -compsolid 0 -compound 1 -shape 11
++
++checknbshapes res_vertex -vertex 2 -edge 1 -wire 0 -face 0 -shell 0 -solid 0 -compsolid 0 -compound 1 -shape 4
+diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/tests/bugs/modalg_6/bug27065_2 OCCT-6.9.1p1_SRC/tests/bugs/modalg_6/bug27065_2
+--- OCCT-6.9.1_SRC/tests/bugs/modalg_6/bug27065_2 1970-01-01 03:00:00.000000000 +0300
++++ OCCT-6.9.1p1_SRC/tests/bugs/modalg_6/bug27065_2 2016-04-26 14:43:27.000000000 +0300
+@@ -0,0 +1,28 @@
++puts "============"
++puts "OCC27065"
++puts "============"
++puts ""
++###############################
++## BRepOffsetAPI_MakePipe misses definition of virtual method Generated()
++###############################
++
++pload QAcommands
++
++restore [locate_data_file bug23903_base.brep] base
++restore [locate_data_file bug23903_path.brep] sp
++explode base
++shape pr Sh
++add base_1 pr
++add base_2 pr
++OCC27065 sp pr
++fit
++
++checknbshapes res_shell -vertex 2 -edge 5 -wire 3 -face 3 -shell 2 -solid 2 -compsolid 1 -compound 1 -shape 19
++
++checknbshapes res_face -vertex 2 -edge 4 -wire 2 -face 2 -shell 1 -solid 1 -compsolid 0 -compound 1 -shape 13
++
++checknbshapes res_wire -vertex 2 -edge 4 -wire 2 -face 2 -shell 1 -solid 0 -compsolid 0 -compound 1 -shape 12
++
++checknbshapes res_edge -vertex 2 -edge 3 -wire 1 -face 1 -shell 0 -solid 0 -compsolid 0 -compound 1 -shape 8
++
++checknbshapes res_vertex -vertex 1 -edge 1 -wire 0 -face 0 -shell 0 -solid 0 -compsolid 0 -compound 1 -shape 3
+diff -Naur --exclude=CVS --exclude=.git --exclude=samples --exclude=cmake --exclude=Makefile.am --exclude=CMakeLists.txt --exclude=adm OCCT-6.9.1_SRC/tests/bugs/vis/bug26870 OCCT-6.9.1p1_SRC/tests/bugs/vis/bug26870
+--- OCCT-6.9.1_SRC/tests/bugs/vis/bug26870 1970-01-01 03:00:00.000000000 +0300
++++ OCCT-6.9.1p1_SRC/tests/bugs/vis/bug26870 2016-04-26 15:52:06.000000000 +0300
+@@ -0,0 +1,37 @@
++puts "============"
++puts "CR26870"
++puts "============"
++puts ""
++
++##########################################################################################
++puts "Visualization - deactivated selections are not updated after object's re-computation"
++##########################################################################################
++
++pload VISUALIZATION MODELING
++
++vinit
++box b 1 1 1
++vdisplay b
++vfit
++
++vselmode b 2 1
++vselmode b 4 1
++vselmode b 4 0
++
++box b 3 3 3
++vdisplay b
++vfit
++
++vselmode 4 1
++
++# pick a point onto previously computed face
++vmoveto 80 265
++if {[vreadpixel 90 206 name] == "CYAN1 1"} {
++ puts "ERROR: previously computed entities are highlighted! Selection mode 4 was not updated after redisplaying the box."
++}
++# pick a point onto box
++if {[vreadpixel 29 216 name] == "YELLOW 1"} {
++ puts "ERROR: the box's face is not highlighted! Selection mode 4 was not updated after redisplaying the box."
++}
++
++set only_screen 1
More information about the arch-commits
mailing list