From 6a76803095ada017a66865e7cc63bd4dd104bad0 Mon Sep 17 00:00:00 2001 From: Kevin Mihelich Date: Fri, 16 Sep 2016 00:08:37 +0000 Subject: [PATCH] community/opencascade to 6.9.1-3 --- community/opencascade/PKGBUILD | 7 +- community/opencascade/salome-occt-6.9.1.patch | 744 ++++++++++++++++++ 2 files changed, 749 insertions(+), 2 deletions(-) create mode 100644 community/opencascade/salome-occt-6.9.1.patch diff --git a/community/opencascade/PKGBUILD b/community/opencascade/PKGBUILD index 6c558e9bc..347eb80c0 100644 --- a/community/opencascade/PKGBUILD +++ b/community/opencascade/PKGBUILD @@ -11,18 +11,19 @@ highmem=1 pkgname=opencascade pkgver=6.9.1 -pkgrel=2 +pkgrel=3 pkgdesc="Open CASCADE Technology, 3D modeling & numerical simulation" arch=('i686' 'x86_64') url="http://www.opencascade.org" license=('custom') depends=('tk' 'mesa' 'libxmu' 'ftgl' 'vtk6') -source=("https://sources.archlinux.org/other/community/opencascade/opencascade-$pkgver.tgz" "env.sh" "opencascade.sh" "opencascade.conf" +source=("https://sources.archlinux.org/other/community/opencascade/opencascade-$pkgver.tgz" "env.sh" "opencascade.sh" "opencascade.conf" 'salome-occt-6.9.1.patch' 'arm.patch') md5sums=('7f2e645b5010d190c9bb35dc457f9a7c' 'a96f28ee7f4273ae1771ee033a2a3af3' 'd9368b8d348ced3ec4462012977552d2' '2924ecf57c95d25888f51071fdc72ad0' + '88db8e6b9afa132d1893bbb814250350' '79b004fccfc7bfbe21559a1d52f074c2') prepare() { @@ -34,6 +35,8 @@ prepare() { # fix for automake 1.13 sed -i -e 's/AM_CONFIG_HEADER/AC_CONFIG_HEADERS/' configure.ac + patch -i "$srcdir/salome-occt-6.9.1.patch" -p1 + ./build_configure sed -i 's/-mmmx -msse -msse2 -mfpmath=sse//g' configure diff --git a/community/opencascade/salome-occt-6.9.1.patch b/community/opencascade/salome-occt-6.9.1.patch new file mode 100644 index 000000000..d17557dc0 --- /dev/null +++ b/community/opencascade/salome-occt-6.9.1.patch @@ -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 + #include + #include ++#include + #include + #include + #include +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 + #include + #include ++#include + #include +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 + #include + #include ++#include + #include + #include + #include +@@ -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 . ++ 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 . ++ + 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 +- returns Wire from TopoDS ++ returns Wire from TopoDS + raises + DomainError from Standard +- ---Purpose: if the is undefined ++ ---Purpose: if the 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 and + 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 + #include + #include ++#include + + #include + +@@ -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