community/opencascade to 6.9.1-3

This commit is contained in:
Kevin Mihelich 2016-09-16 00:08:37 +00:00
parent 6982e503aa
commit 6a76803095
2 changed files with 749 additions and 2 deletions

View file

@ -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

View file

@ -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