From a83d0e6121432fc87d527fb5844d46340b7771e2 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sun, 29 Apr 2018 11:38:15 +0200 Subject: [PATCH] support occ version < 7.0 for mesh flattening --- src/Mod/MeshPart/App/MeshFlattening.cpp | 31 +++++++++++++++++-------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/src/Mod/MeshPart/App/MeshFlattening.cpp b/src/Mod/MeshPart/App/MeshFlattening.cpp index f18da8dda2..245ed98b12 100644 --- a/src/Mod/MeshPart/App/MeshFlattening.cpp +++ b/src/Mod/MeshPart/App/MeshFlattening.cpp @@ -31,6 +31,7 @@ #include #include #include +#include #include #include @@ -146,8 +147,9 @@ FaceUnwrapper::FaceUnwrapper(const TopoDS_Face& face) const TColgp_Array1OfPnt2d &_uv_nodes = triangulation->UVNodes(); this->uv_nodes.resize(triangulation->NbNodes(), 2); i = 0; - for (gp_Pnt2d _uv_node: _uv_nodes) + for (Standard_Integer index = _uv_nodes.Lower(); index <= _uv_nodes.Upper(); ++index) { + const gp_Pnt2d& _uv_node = _uv_nodes.Value(index); this->uv_nodes.row(i) << _uv_node.X(), _uv_node.Y(); i++; } @@ -156,8 +158,9 @@ FaceUnwrapper::FaceUnwrapper(const TopoDS_Face& face) const TColgp_Array1OfPnt &_nodes = triangulation->Nodes(); this->xyz_nodes.resize(triangulation->NbNodes(), 3); i = 0; - for (gp_Pnt _node: _nodes) + for (Standard_Integer index = _nodes.Lower(); index <= _nodes.Upper(); ++index) { + gp_Pnt _node = _nodes.Value(index); this->xyz_nodes.row(i) << _node.X(), _node.Y(), _node.Z(); i++; } @@ -165,9 +168,10 @@ FaceUnwrapper::FaceUnwrapper(const TopoDS_Face& face) const Poly_Array1OfTriangle &_tris = triangulation->Triangles(); this->tris.resize(triangulation->NbTriangles(), 3); i = 0; - for (Poly_Triangle _tri: _tris) + for (Standard_Integer index = _tris.Lower(); index <= _tris.Upper(); ++index) { int n1, n2, n3; + Poly_Triangle _tri = _tris.Value(index); _tri.Get(n1, n2, n3); this->tris.row(i) << n1-1, n2-1, n3-1; i++; @@ -192,9 +196,16 @@ ColMat FaceUnwrapper::interpolateFlatFace(const TopoDS_Face& face) // extract xyz poles, knots, weights, degree const Handle(Geom_Surface) &_surface = BRep_Tool::Surface(face); const Handle(Geom_BSplineSurface) &_bspline = Handle(Geom_BSplineSurface)::DownCast(_surface); +#if OCC_VERSION_HEX < 0x070000 + TColStd_Array1OfReal _uknots(1, _bspline->NbUPoles() + _bspline->UDegree() + 1); + TColStd_Array1OfReal _vknots(1, _bspline->NbVPoles() + _bspline->VDegree() + 1); + _bspline->UKnotSequence(_uknots); + _bspline->VKnotSequence(_vknots); +#else const TColStd_Array1OfReal &_uknots = _bspline->UKnotSequence(); - const TColStd_Array1OfReal &_vknots = _bspline->VKnotSequence(); - + const TColStd_Array1OfReal &_vknots = _bspline->VKnotSequence(); +#endif + Eigen::VectorXd weights; weights.resize(_bspline->NbUPoles() * _bspline->NbVPoles()); long i = 0; @@ -206,16 +217,16 @@ ColMat FaceUnwrapper::interpolateFlatFace(const TopoDS_Face& face) i++; } } - + Eigen::VectorXd u_knots; Eigen::VectorXd v_knots; - u_knots.resize(_uknots.Size()); - v_knots.resize(_vknots.Size()); - for (long u=1; u <= _uknots.Size(); u++) + u_knots.resize(_uknots.Length()); + v_knots.resize(_vknots.Length()); + for (long u=1; u <= _uknots.Length(); u++) { u_knots[u - 1] = _uknots.Value(u); } - for (long v=1; v <= _vknots.Size(); v++) + for (long v=1; v <= _vknots.Length(); v++) { v_knots[v - 1] = _vknots.Value(v); }