1
0
mirror of https://git.FreeBSD.org/ports.git synced 2025-01-05 06:27:37 +00:00

cad/freecad: update to 0.19.4

Notes:
  https://github.com/FreeCAD/FreeCAD/releases/tag/0.19.4

Also switch back to current opencascade to make this port actually
installable in the presence of other ports
This commit is contained in:
Christoph Moench-Tegeder 2022-03-03 22:08:54 +01:00
parent 03f7dd327e
commit d25a7563aa
14 changed files with 941 additions and 5 deletions

View File

@ -1,5 +1,5 @@
PORTNAME= FreeCAD
DISTVERSION= 0.19.3
DISTVERSION= 0.19.4
# use these for bugfixes/snapshots
# DISTVERSION= 0.18-16093 # git rev-list --count
# DISTVERSIONSUFFIX= -g690774c0e
@ -22,7 +22,7 @@ LIB_DEPENDS= libexpat.so:textproc/expat2 \
libpng.so:graphics/png \
libtiff.so:graphics/tiff \
libvtksys-${VTK_VER}.so:math/vtk${VTK_VER:R} \
libTKernel.so:cad/opencascade740 \
libTKernel.so:cad/opencascade \
libxerces-c.so:textproc/xerces-c3 \
libboost_thread.so:devel/boost-libs \
libarea.so:devel/libarea \

View File

@ -1,3 +1,3 @@
TIMESTAMP = 1646330977
SHA256 (FreeCAD-FreeCAD-0.19.3_GH0.tar.gz) = 568fa32a9601693ff9273f3a5a2e825915f58b2455ffa173bc23f981edecd07d
SIZE (FreeCAD-FreeCAD-0.19.3_GH0.tar.gz) = 296986058
TIMESTAMP = 1646236843
SHA256 (FreeCAD-FreeCAD-0.19.4_GH0.tar.gz) = e40a1c343956e13c56cc8578d025ae83d68d9d20acda1732953bc8a3883e9722
SIZE (FreeCAD-FreeCAD-0.19.4_GH0.tar.gz) = 296990652

View File

@ -0,0 +1,477 @@
commit 74639da997d5f2e53f001d9f256be86ceee901f5
Author: wmayer <wmayer@users.sourceforge.net>
Date: Sat Oct 9 13:49:02 2021 +0200
OCCT: port FreeCAD sources to version 7.6
SMESH is not yet ported
Although FreeCAD code compiles with OCCT 7.6 it doesn't work at the moment
diff --git src/Mod/Drawing/App/DrawingExport.cpp src/Mod/Drawing/App/DrawingExport.cpp
index b87891ed50..7572be417c 100644
--- src/Mod/Drawing/App/DrawingExport.cpp
+++ src/Mod/Drawing/App/DrawingExport.cpp
@@ -64,10 +64,7 @@
#include <BRep_Tool.hxx>
#include <BRepAdaptor_CompCurve.hxx>
-#include <BRepAdaptor_HCompCurve.hxx>
#include <Approx_Curve3d.hxx>
-#include <BRepAdaptor_HCurve.hxx>
-#include <BRepAdaptor_HCurve.hxx>
#include <Geom_BSplineCurve.hxx>
#include <Geom_BezierCurve.hxx>
#include <GeomConvert_BSplineCurveToBezierCurve.hxx>
@@ -75,11 +72,19 @@
#include <Geom2d_BSplineCurve.hxx>
#include <BRepLProp_CLProps.hxx>
#include <Standard_Failure.hxx>
+#include <Standard_Version.hxx>
+#if OCC_VERSION_HEX < 0x070600
+#include <BRepAdaptor_HCurve.hxx>
+#endif
#include "DrawingExport.h"
#include <Base/Tools.h>
#include <Base/Vector3D.h>
+#if OCC_VERSION_HEX >= 0x070600
+using BRepAdaptor_HCurve = BRepAdaptor_Curve;
+#endif
+
using namespace Drawing;
using namespace std;
diff --git src/Mod/Drawing/App/ProjectionAlgos.cpp src/Mod/Drawing/App/ProjectionAlgos.cpp
index 9afae7e9c0..da03d49057 100644
--- src/Mod/Drawing/App/ProjectionAlgos.cpp
+++ src/Mod/Drawing/App/ProjectionAlgos.cpp
@@ -61,10 +61,7 @@
#include <BRepMesh_IncrementalMesh.hxx>
#include <BRepLib.hxx>
#include <BRepAdaptor_CompCurve.hxx>
-#include <BRepAdaptor_HCompCurve.hxx>
#include <Approx_Curve3d.hxx>
-#include <BRepAdaptor_HCurve.hxx>
-#include <BRepAdaptor_HCurve.hxx>
#include <Geom_BSplineCurve.hxx>
#include <Geom_BezierCurve.hxx>
#include <GeomConvert_BSplineCurveToBezierCurve.hxx>
diff --git src/Mod/Import/App/ImpExpDxf.cpp src/Mod/Import/App/ImpExpDxf.cpp
index 09827bd928..dcd88ef138 100644
--- src/Mod/Import/App/ImpExpDxf.cpp
+++ src/Mod/Import/App/ImpExpDxf.cpp
@@ -29,7 +29,6 @@
#include <Approx_Curve3d.hxx>
#include <BRepAdaptor_Curve.hxx>
-#include <BRepAdaptor_HCurve.hxx>
#include <BRep_Builder.hxx>
#include <BRepBuilderAPI_MakeEdge.hxx>
#include <BRepBuilderAPI_MakeVertex.hxx>
@@ -47,6 +46,7 @@
#include <gp_Pnt.hxx>
#include <gp_Dir.hxx>
#include <gp_Vec.hxx>
+#include <Standard_Version.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Edge.hxx>
#include <TopoDS_Vertex.hxx>
@@ -55,6 +55,9 @@
#include <TopExp_Explorer.hxx>
#include <TopoDS_Edge.hxx>
#include <TColgp_Array1OfPnt.hxx>
+#if OCC_VERSION_HEX < 0x070600
+#include <BRepAdaptor_HCurve.hxx>
+#endif
#include <Base/Console.h>
#include <Base/Parameter.h>
@@ -68,6 +71,10 @@
using namespace Import;
+#if OCC_VERSION_HEX >= 0x070600
+using BRepAdaptor_HCurve = BRepAdaptor_Curve;
+#endif
+
//******************************************************************************
// reading
diff --git src/Mod/Part/App/GeomPlate/CurveConstraintPyImp.cpp src/Mod/Part/App/GeomPlate/CurveConstraintPyImp.cpp
index 3271f3651a..b63227d537 100644
--- src/Mod/Part/App/GeomPlate/CurveConstraintPyImp.cpp
+++ src/Mod/Part/App/GeomPlate/CurveConstraintPyImp.cpp
@@ -24,10 +24,13 @@
#include "PreCompiled.h"
#ifndef _PreComp_
# include <GeomAdaptor_Curve.hxx>
-# include <GeomAdaptor_HCurve.hxx>
# include <Geom2dAdaptor_Curve.hxx>
-# include <Geom2dAdaptor_HCurve.hxx>
# include <Standard_Failure.hxx>
+# include <Standard_Version.hxx>
+# if OCC_VERSION_HEX < 0x070600
+# include <GeomAdaptor_HCurve.hxx>
+# include <Geom2dAdaptor_HCurve.hxx>
+# endif
#endif
#include "GeomPlate/CurveConstraintPy.h"
@@ -76,6 +79,16 @@ int CurveConstraintPy::PyInit(PyObject* args, PyObject* kwds)
return -1;
}
+#if OCC_VERSION_HEX >= 0x070600
+ Handle(Adaptor3d_Curve) hCurve;
+ if (curve->getTypeId().isDerivedFrom(GeomTrimmedCurve::getClassTypeId())) {
+ GeomTrimmedCurve* trim = static_cast<GeomTrimmedCurve*>(curve);
+ hCurve = new GeomAdaptor_Curve(handle, trim->getFirstParameter(), trim->getLastParameter());
+ }
+ else {
+ hCurve = new GeomAdaptor_Curve(handle);
+ }
+#else
Handle(Adaptor3d_HCurve) hCurve;
if (curve->getTypeId().isDerivedFrom(GeomTrimmedCurve::getClassTypeId())) {
GeomTrimmedCurve* trim = static_cast<GeomTrimmedCurve*>(curve);
@@ -86,6 +99,7 @@ int CurveConstraintPy::PyInit(PyObject* args, PyObject* kwds)
GeomAdaptor_Curve adapt(handle);
hCurve = new GeomAdaptor_HCurve(adapt);
}
+#endif
ptr.reset(new GeomPlate_CurveConstraint(hCurve, order, nbPts, tolDist, tolAng, tolCurv));
}
@@ -212,11 +226,15 @@ PyObject* CurveConstraintPy::curve3d(PyObject *args)
return nullptr;
try {
- Handle(Adaptor3d_HCurve) hAdapt = getGeomPlate_CurveConstraintPtr()->Curve3d();
+ auto hAdapt = getGeomPlate_CurveConstraintPtr()->Curve3d();
if (hAdapt.IsNull())
Py_Return;
+#if OCC_VERSION_HEX >= 0x070600
+ const Adaptor3d_Curve& a3d = *hAdapt;
+#else
const Adaptor3d_Curve& a3d = hAdapt->Curve();
+#endif
std::unique_ptr<GeomCurve> ptr(Part::makeFromCurveAdaptor(a3d));
return ptr->getPyObject();
}
@@ -282,6 +300,16 @@ PyObject* CurveConstraintPy::setProjectedCurve(PyObject *args)
return nullptr;
}
+#if OCC_VERSION_HEX >= 0x070600
+ Handle(Adaptor2d_Curve2d) hCurve;
+ if (handle->IsKind(STANDARD_TYPE(Geom2d_TrimmedCurve))) {
+ Handle(Geom2d_TrimmedCurve) aTC (Handle(Geom2d_TrimmedCurve)::DownCast (handle));
+ hCurve = new Geom2dAdaptor_Curve(handle, aTC->FirstParameter(), aTC->LastParameter());
+ }
+ else {
+ hCurve = new Geom2dAdaptor_Curve(handle);
+ }
+#else
Handle(Adaptor2d_HCurve2d) hCurve;
if (handle->IsKind(STANDARD_TYPE(Geom2d_TrimmedCurve))) {
Handle(Geom2d_TrimmedCurve) aTC (Handle(Geom2d_TrimmedCurve)::DownCast (handle));
@@ -292,6 +320,7 @@ PyObject* CurveConstraintPy::setProjectedCurve(PyObject *args)
Geom2dAdaptor_Curve adapt(handle);
hCurve = new Geom2dAdaptor_HCurve(adapt);
}
+#endif
getGeomPlate_CurveConstraintPtr()->SetProjectedCurve(hCurve, tolU, tolV);
Py_Return;
@@ -308,11 +337,15 @@ PyObject* CurveConstraintPy::projectedCurve(PyObject *args)
return nullptr;
try {
- Handle(Adaptor2d_HCurve2d) hAdapt = getGeomPlate_CurveConstraintPtr()->ProjectedCurve();
+ auto hAdapt = getGeomPlate_CurveConstraintPtr()->ProjectedCurve();
if (hAdapt.IsNull())
Py_Return;
+#if OCC_VERSION_HEX >= 0x070600
+ const Adaptor2d_Curve2d& a2d = *hAdapt;
+#else
const Adaptor2d_Curve2d& a2d = hAdapt->Curve2d();
+#endif
std::unique_ptr<Geom2dCurve> ptr(Part::makeFromCurveAdaptor2d(a2d));
return ptr->getPyObject();
}
diff --git src/Mod/Part/App/Geometry.cpp src/Mod/Part/App/Geometry.cpp
index e6d6396ca9..1d1d67d4f0 100644
--- src/Mod/Part/App/Geometry.cpp
+++ src/Mod/Part/App/Geometry.cpp
@@ -51,7 +51,6 @@
# include <Geom_RectangularTrimmedSurface.hxx>
# include <Geom_SurfaceOfRevolution.hxx>
# include <Geom_SurfaceOfLinearExtrusion.hxx>
-# include <GeomAdaptor_HCurve.hxx>
# include <GeomAPI_Interpolate.hxx>
# include <GeomConvert.hxx>
# include <GeomConvert_CompCurveToBSplineCurve.hxx>
@@ -101,6 +100,9 @@
# include <GeomAPI_ExtremaCurveCurve.hxx>
# include <ShapeConstruct_Curve.hxx>
# include <LProp_NotDefined.hxx>
+# if OCC_VERSION_HEX < 0x070600
+# include <GeomAdaptor_HCurve.hxx>
+# endif
# include <ctime>
# include <cmath>
@@ -144,6 +146,9 @@
#include "Geometry.h"
+#if OCC_VERSION_HEX >= 0x070600
+using GeomAdaptor_HCurve = GeomAdaptor_Curve;
+#endif
using namespace Part;
diff --git src/Mod/Part/App/PartFeatures.cpp src/Mod/Part/App/PartFeatures.cpp
index 2dc503bdf2..4d9e1fc0f9 100644
--- src/Mod/Part/App/PartFeatures.cpp
+++ src/Mod/Part/App/PartFeatures.cpp
@@ -25,9 +25,7 @@
#ifndef _PreComp_
# include <BRepFill.hxx>
# include <BRepAdaptor_Curve.hxx>
-# include <BRepAdaptor_HCurve.hxx>
# include <BRepAdaptor_CompCurve.hxx>
-# include <BRepAdaptor_HCompCurve.hxx>
# include <BRepLib_MakeWire.hxx>
# include <Geom_BSplineSurface.hxx>
# include <TopoDS.hxx>
@@ -43,7 +41,7 @@
# include <TopExp_Explorer.hxx>
# include <TopoDS.hxx>
# include <Precision.hxx>
-# include <Adaptor3d_HCurve.hxx>
+# include <memory>
#endif
@@ -170,22 +168,18 @@ App::DocumentObjectExecReturn *RuledSurface::execute(void)
if (Orientation.getValue() == 0) {
// Automatic
- Handle(Adaptor3d_HCurve) a1;
- Handle(Adaptor3d_HCurve) a2;
+ std::unique_ptr<Adaptor3d_Curve> a1;
+ std::unique_ptr<Adaptor3d_Curve> a2;
if (!isWire) {
- BRepAdaptor_Curve adapt1(TopoDS::Edge(S1));
- BRepAdaptor_Curve adapt2(TopoDS::Edge(S2));
- a1 = new BRepAdaptor_HCurve(adapt1);
- a2 = new BRepAdaptor_HCurve(adapt2);
+ a1 = std::make_unique<BRepAdaptor_Curve>(TopoDS::Edge(S1));
+ a2 = std::make_unique<BRepAdaptor_Curve>(TopoDS::Edge(S2));
}
else {
- BRepAdaptor_CompCurve adapt1(TopoDS::Wire(S1));
- BRepAdaptor_CompCurve adapt2(TopoDS::Wire(S2));
- a1 = new BRepAdaptor_HCompCurve(adapt1);
- a2 = new BRepAdaptor_HCompCurve(adapt2);
+ a1 = std::make_unique<BRepAdaptor_CompCurve>(TopoDS::Wire(S1));
+ a2 = std::make_unique<BRepAdaptor_CompCurve>(TopoDS::Wire(S2));
}
- if (!a1.IsNull() && !a2.IsNull()) {
+ if (a1 && a2) {
// get end points of 1st curve
Standard_Real first, last;
first = a1->FirstParameter();
diff --git src/Mod/Part/App/TopoShapeFacePyImp.cpp src/Mod/Part/App/TopoShapeFacePyImp.cpp
index ea6cd98bdf..63e8bead74 100644
--- src/Mod/Part/App/TopoShapeFacePyImp.cpp
+++ src/Mod/Part/App/TopoShapeFacePyImp.cpp
@@ -493,6 +493,15 @@ PyObject* TopoShapeFacePy::getUVNodes(PyObject *args)
return Py::new_reference_to(list);
}
+#if OCC_VERSION_HEX >= 0x070600
+ for (int i=1; i<=mesh->NbNodes(); i++) {
+ gp_Pnt2d pt2d = mesh->UVNode(i);
+ Py::Tuple uv(2);
+ uv.setItem(0, Py::Float(pt2d.X()));
+ uv.setItem(1, Py::Float(pt2d.Y()));
+ list.append(uv);
+ }
+#else
const TColgp_Array1OfPnt2d& aNodesUV = mesh->UVNodes();
for (int i=aNodesUV.Lower(); i<=aNodesUV.Upper(); i++) {
gp_Pnt2d pt2d = aNodesUV(i);
@@ -501,6 +510,7 @@ PyObject* TopoShapeFacePy::getUVNodes(PyObject *args)
uv.setItem(1, Py::Float(pt2d.Y()));
list.append(uv);
}
+#endif
return Py::new_reference_to(list);
}
diff --git src/Mod/Part/App/TopoShapeWirePyImp.cpp src/Mod/Part/App/TopoShapeWirePyImp.cpp
index 95c1aff681..a1f32d6d03 100644
--- src/Mod/Part/App/TopoShapeWirePyImp.cpp
+++ src/Mod/Part/App/TopoShapeWirePyImp.cpp
@@ -344,9 +344,9 @@ PyObject* TopoShapeWirePy::approximate(PyObject *args, PyObject *kwds)
return 0;
try {
BRepAdaptor_CompCurve adapt(TopoDS::Wire(getTopoShapePtr()->getShape()));
- Handle(Adaptor3d_HCurve) hcurve = adapt.Trim(adapt.FirstParameter(),
- adapt.LastParameter(),
- tol2d);
+ auto hcurve = adapt.Trim(adapt.FirstParameter(),
+ adapt.LastParameter(),
+ tol2d);
Approx_Curve3d approx(hcurve, tol3d, GeomAbs_C0, maxseg, maxdeg);
if (approx.IsDone()) {
return new BSplineCurvePy(new GeomBSplineCurve(approx.Curve()));
diff --git src/Mod/Part/Gui/TaskCheckGeometry.cpp src/Mod/Part/Gui/TaskCheckGeometry.cpp
index 5de7c16920..aaef13d9d0 100644
--- src/Mod/Part/Gui/TaskCheckGeometry.cpp
+++ src/Mod/Part/Gui/TaskCheckGeometry.cpp
@@ -711,8 +711,10 @@ int TaskCheckGeometryResults::goBOPSingleCheck(const TopoDS_Shape& shapeIn, Resu
#if OCC_VERSION_HEX >= 0x060900
#if OCC_VERSION_HEX < 0x070500
BOPCheck.SetProgressIndicator(theProgress);
-#else
+#elif OCC_VERSION_HEX < 0x070600
BOPCheck.SetProgressIndicator(theScope);
+#else
+ Q_UNUSED(theScope)
#endif // 0x070500
#else
Q_UNUSED(theProgress);
@@ -740,7 +742,7 @@ int TaskCheckGeometryResults::goBOPSingleCheck(const TopoDS_Shape& shapeIn, Resu
Base::TimeInfo start_time;
#endif
-BOPCheck.Perform();
+ BOPCheck.Perform();
#ifdef FC_DEBUG
float bopAlgoTime = Base::TimeInfo::diffTimeF(start_time,Base::TimeInfo());
diff --git src/Mod/Part/Gui/ViewProviderExt.cpp src/Mod/Part/Gui/ViewProviderExt.cpp
index 77cefbe3e0..8a52f1701b 100644
--- src/Mod/Part/Gui/ViewProviderExt.cpp
+++ src/Mod/Part/Gui/ViewProviderExt.cpp
@@ -1150,16 +1150,25 @@
// cycling through the poly mesh
+#if OCC_VERSION_HEX < 0x070600
const Poly_Array1OfTriangle& Triangles = mesh->Triangles();
const TColgp_Array1OfPnt& Nodes = mesh->Nodes();
TColgp_Array1OfDir Normals (Nodes.Lower(), Nodes.Upper());
+#else
+ int numNodes = mesh->NbNodes();
+ TColgp_Array1OfDir Normals (1, numNodes);
+#endif
if (NormalsFromUV)
getNormals(actFace, mesh, Normals);
for (int g=1;g<=nbTriInFace;g++) {
// Get the triangle
Standard_Integer N1,N2,N3;
+#if OCC_VERSION_HEX < 0x070600
Triangles(g).Get(N1,N2,N3);
+#else
+ mesh->Triangle(g).Get(N1,N2,N3);
+#endif
// change orientation of the triangle if the face is reversed
if ( orient != TopAbs_FORWARD ) {
@@ -1169,7 +1178,11 @@
}
// get the 3 points of this triangle
+#if OCC_VERSION_HEX < 0x070600
gp_Pnt V1(Nodes(N1)), V2(Nodes(N2)), V3(Nodes(N3));
+#else
+ gp_Pnt V1(mesh->Node(N1)), V2(mesh->Node(N2)), V3(mesh->Node(N3));
+#endif
// get the 3 normals of this triangle
gp_Vec NV1, NV2, NV3;
@@ -1246,7 +1259,11 @@
// rare cases where some points are only referenced by the polygon
// but not by any triangle. Thus, we must apply the coordinates to
// make sure that everything is properly set.
+#if OCC_VERSION_HEX < 0x070600
gp_Pnt p(Nodes(nodeIndex));
+#else
+ gp_Pnt p(mesh->Node(nodeIndex));
+#endif
if (!identity)
p.Transform(myTransf);
verts[index].setValue((float)(p.X()),(float)(p.Y()),(float)(p.Z()));
diff --git src/Mod/Path/App/AppPathPy.cpp src/Mod/Path/App/AppPathPy.cpp
index 6e0c72d2f5..ce912b4474 100644
--- src/Mod/Path/App/AppPathPy.cpp
+++ src/Mod/Path/App/AppPathPy.cpp
@@ -49,10 +49,7 @@
#include <TopExp_Explorer.hxx>
#include <gp_Lin.hxx>
#include <BRep_Tool.hxx>
-#include <BRepAdaptor_CompCurve.hxx>
-#include <BRepAdaptor_HCompCurve.hxx>
-#include <Approx_Curve3d.hxx>
-#include <BRepAdaptor_HCurve.hxx>
+#include <BRepAdaptor_Curve.hxx>
#include "CommandPy.h"
#include "PathPy.h"
diff --git src/Mod/TechDraw/App/Geometry.cpp src/Mod/TechDraw/App/Geometry.cpp
index b6c3637137..59a92d7e51 100644
--- src/Mod/TechDraw/App/Geometry.cpp
+++ src/Mod/TechDraw/App/Geometry.cpp
@@ -28,13 +28,13 @@
#include <BRepAdaptor_Curve.hxx>
#include <BRep_Tool.hxx>
#include <BRepTools.hxx>
-#include <BRepAdaptor_HCurve.hxx>
#include <BRepLib.hxx>
#include <BRepBuilderAPI_MakeVertex.hxx>
#include <BRepBuilderAPI_MakeEdge.hxx>
#include <BRepBuilderAPI_MakeWire.hxx>
#include <BRepBuilderAPI_MakeFace.hxx>
#include <BRepExtrema_DistShapeShape.hxx>
+#include <BRepLProp_CLProps.hxx>
#include <Precision.hxx>
#include <GCPnts_AbscissaPoint.hxx>
#include <gce_MakeCirc.hxx>
@@ -58,14 +58,16 @@
#include <GeomLProp_CLProps.hxx>
#include <GeomAPI_ProjectPointOnCurve.hxx>
#include <Poly_Polygon3D.hxx>
+#include <Standard_Version.hxx>
#include <TopoDS.hxx>
#include <TopoDS_Edge.hxx>
#include <TopExp.hxx>
#include <TopExp_Explorer.hxx>
#include <TColgp_Array1OfPnt2d.hxx>
#include <TColgp_Array1OfPnt.hxx>
-#include <BRepLProp_CLProps.hxx>
-
+#if OCC_VERSION_HEX < 0x070600
+#include <BRepAdaptor_HCurve.hxx>
+#endif
#include <cmath>
#endif // #ifndef _PreComp_
@@ -86,6 +88,10 @@
using namespace TechDraw;
using namespace std;
+#if OCC_VERSION_HEX >= 0x070600
+using BRepAdaptor_HCurve = BRepAdaptor_Curve;
+#endif
+
#define GEOMETRYEDGE 0
#define COSMETICEDGE 1
#define CENTERLINE 2

View File

@ -0,0 +1,10 @@
--- src/3rdParty/salomesmesh/src/SMESH/SMESH_Mesh.cpp.orig 2022-01-30 21:22:20.383703000 +0100
+++ src/3rdParty/salomesmesh/src/SMESH/SMESH_Mesh.cpp 2022-01-30 21:22:56.240456000 +0100
@@ -64,7 +64,6 @@
#include <GEOMUtils.hxx>
-#undef _Precision_HeaderFile
#include <BRepBndLib.hxx>
#include <BRepPrimAPI_MakeBox.hxx>
#include <Bnd_Box.hxx>

View File

@ -0,0 +1,22 @@
--- src/Mod/Fem/App/FemConstraint.cpp.orig 2022-02-04 00:04:15.767125000 +0100
+++ src/Mod/Fem/App/FemConstraint.cpp 2022-02-04 00:04:38.270409000 +0100
@@ -36,8 +36,6 @@
# include <BRepAdaptor_Curve.hxx>
# include <GCPnts_AbscissaPoint.hxx>
# include <Adaptor3d_IsoCurve.hxx>
-# include <Adaptor3d_HSurface.hxx>
-# include <BRepAdaptor_HSurface.hxx>
# include <BRepAdaptor_Surface.hxx>
# include <GProp_GProps.hxx>
# include <BRepGProp.hxx>
@@ -248,8 +246,8 @@
gp_Pnt center;
// Get an estimate for the number of arrows by finding the average length of curves
- Handle(Adaptor3d_HSurface) hsurf;
- hsurf = new BRepAdaptor_HSurface(surface);
+ Handle(Adaptor3d_Surface) hsurf;
+ hsurf = new BRepAdaptor_Surface(surface);
Adaptor3d_IsoCurve isoc(hsurf);
try {

View File

@ -0,0 +1,11 @@
--- src/Mod/Fem/App/FemConstraintFixed.cpp.orig 2022-02-03 23:52:01.569143000 +0100
+++ src/Mod/Fem/App/FemConstraintFixed.cpp 2022-02-03 23:52:36.672029000 +0100
@@ -32,8 +32,6 @@
#include <BRepAdaptor_Surface.hxx>
#include <GCPnts_AbscissaPoint.hxx>
#include <Adaptor3d_IsoCurve.hxx>
-#include <Adaptor3d_HSurface.hxx>
-#include <BRepAdaptor_HSurface.hxx>
#include <GProp_GProps.hxx>
#include <BRepGProp.hxx>
#include <TopoDS_Vertex.hxx>

View File

@ -0,0 +1,52 @@
--- src/Mod/MeshPart/App/MeshFlattening.cpp.orig 2022-02-03 23:13:33.919226000 +0100
+++ src/Mod/MeshPart/App/MeshFlattening.cpp 2022-02-03 23:30:59.747315000 +0100
@@ -141,37 +141,37 @@
if (triangulation.IsNull())
throw std::runtime_error("null triangulation in face construction");
+ Standard_Integer numNodes = triangulation->NbNodes();
+ Standard_Integer numTriangles = triangulation->NbTriangles();
+
// compute uv coordinates
if (triangulation->HasUVNodes())
{
- const TColgp_Array1OfPnt2d &_uv_nodes = triangulation->UVNodes();
- this->uv_nodes.resize(triangulation->NbNodes(), 2);
+ this->uv_nodes.resize(numNodes, 2);
i = 0;
- for (Standard_Integer index = _uv_nodes.Lower(); index <= _uv_nodes.Upper(); ++index)
+ for (Standard_Integer index = 1; index <= numNodes; ++index)
{
- const gp_Pnt2d& _uv_node = _uv_nodes.Value(index);
+ const gp_Pnt2d& _uv_node = triangulation->UVNode(index);
this->uv_nodes.row(i) << _uv_node.X(), _uv_node.Y();
i++;
}
}
//
- const TColgp_Array1OfPnt &_nodes = triangulation->Nodes();
- this->xyz_nodes.resize(triangulation->NbNodes(), 3);
+ this->xyz_nodes.resize(numNodes, 3);
i = 0;
- for (Standard_Integer index = _nodes.Lower(); index <= _nodes.Upper(); ++index)
+ for (Standard_Integer index = 1; index <= numNodes; ++index)
{
- gp_Pnt _node = _nodes.Value(index);
+ gp_Pnt _node = triangulation->Node(index);
this->xyz_nodes.row(i) << _node.X(), _node.Y(), _node.Z();
i++;
}
- const Poly_Array1OfTriangle &_tris = triangulation->Triangles();
- this->tris.resize(triangulation->NbTriangles(), 3);
+ this->tris.resize(numTriangles, 3);
i = 0;
- for (Standard_Integer index = _tris.Lower(); index <= _tris.Upper(); ++index)
+ for (Standard_Integer index = 1; index <= numTriangles; ++index)
{
int n1, n2, n3;
- Poly_Triangle _tri = _tris.Value(index);
+ Poly_Triangle _tri = triangulation->Triangle(index);
_tri.Get(n1, n2, n3);
this->tris.row(i) << n1-1, n2-1, n3-1;
i++;

View File

@ -0,0 +1,21 @@
--- src/Mod/PartDesign/Gui/ViewProviderAddSub.cpp.orig 2022-03-03 20:43:05.599798000 +0100
+++ src/Mod/PartDesign/Gui/ViewProviderAddSub.cpp 2022-03-03 21:06:11.466643000 +0100
@@ -194,8 +194,7 @@
// cycling through the poly mesh
const Poly_Array1OfTriangle& Triangles = mesh->Triangles();
- const TColgp_Array1OfPnt& Nodes = mesh->Nodes();
- TColgp_Array1OfDir Normals (Nodes.Lower(), Nodes.Upper());
+ TColgp_Array1OfDir Normals (1, nbNodesInFace);
getNormals(actFace, mesh, Normals);
for (int g=1;g<=nbTriInFace;g++) {
@@ -211,7 +210,7 @@
}
// get the 3 points of this triangle
- gp_Pnt V1(Nodes(N1)), V2(Nodes(N2)), V3(Nodes(N3));
+ gp_Pnt V1(mesh->Node(N1)), V2(mesh->Node(N2)), V3(mesh->Node(N3));
// get the 3 previewNormals of this triangle
gp_Dir NV1(Normals(N1)), NV2(Normals(N2)), NV3(Normals(N3));

View File

@ -0,0 +1,19 @@
--- src/Mod/PartDesign/Gui/ViewProviderTransformed.cpp.orig 2022-03-03 21:21:36.816245000 +0100
+++ src/Mod/PartDesign/Gui/ViewProviderTransformed.cpp 2022-03-03 21:22:41.559121000 +0100
@@ -285,7 +285,6 @@
// cycling through the poly mesh
const Poly_Array1OfTriangle& Triangles = mesh->Triangles();
- const TColgp_Array1OfPnt& Nodes = mesh->Nodes();
for (int g=1; g <= nbTriInFace; g++) {
// Get the triangle
Standard_Integer N1,N2,N3;
@@ -299,7 +298,7 @@
}
// get the 3 points of this triangle
- gp_Pnt V1(Nodes(N1)), V2(Nodes(N2)), V3(Nodes(N3));
+ gp_Pnt V1(mesh->Node(N1)), V2(mesh->Node(N2)), V3(mesh->Node(N3));
// transform the vertices to the place of the face
if (!identity) {

View File

@ -0,0 +1,29 @@
--- src/Mod/Part/App/AppPartPy.cpp.orig 2022-01-30 22:29:02.026790000 +0100
+++ src/Mod/Part/App/AppPartPy.cpp 2022-01-30 22:50:54.044159000 +0100
@@ -804,14 +804,26 @@
const TopAbs_Orientation anOrientation = currentFace.Orientation();
bool flip = (anOrientation == TopAbs_REVERSED);
if (!facets.IsNull()) {
+#if OCC_VERSION_HEX < 0x070600
const TColgp_Array1OfPnt& nodes = facets->Nodes();
const Poly_Array1OfTriangle& triangles = facets->Triangles();
for (int i = 1; i <= triangles.Length(); i++) {
+#else
+ int nbtri = facets->NbTriangles();
+ for (int i = 1; i <= nbtri; i++) {
+#endif
Standard_Integer n1,n2,n3;
+#if OCC_VERSION_HEX < 0x070600
triangles(i).Get(n1, n2, n3);
gp_Pnt p1 = nodes(n1);
gp_Pnt p2 = nodes(n2);
gp_Pnt p3 = nodes(n3);
+#else
+ facets->Triangle(i).Get(n1, n2, n3);
+ gp_Pnt p1 = facets->Node(n1);
+ gp_Pnt p2 = facets->Node(n2);
+ gp_Pnt p3 = facets->Node(n3);
+#endif
p1.Transform(loc.Transformation());
p2.Transform(loc.Transformation());
p3.Transform(loc.Transformation());

View File

@ -0,0 +1,45 @@
--- src/Mod/Part/App/Tools.cpp.orig 2022-02-03 20:59:16.862252000 +0100
+++ src/Mod/Part/App/Tools.cpp 2022-02-03 21:43:13.008464000 +0100
@@ -25,10 +25,9 @@
# include <cassert>
# include <gp_Pln.hxx>
# include <gp_Lin.hxx>
-# include <Adaptor3d_HCurveOnSurface.hxx>
# include <Geom_BSplineSurface.hxx>
# include <Geom_Plane.hxx>
-# include <GeomAdaptor_HCurve.hxx>
+# include <GeomAdaptor_Curve.hxx>
# include <GeomAPI_IntSS.hxx>
# include <Geom_Line.hxx>
# include <Geom_Point.hxx>
@@ -98,8 +97,8 @@
return found;
}
-/*! The objects in \a theBoundaries must be of the type Adaptor3d_HCurveOnSurface or
-GeomAdaptor_HCurve or Geom_Point indicating type of a constraint. Otherwise an exception
+/*! The objects in \a theBoundaries must be of the type Adaptor3d_CurveOnSurface or
+GeomAdaptor_Curve or Geom_Point indicating type of a constraint. Otherwise an exception
Standard_TypeMismatch is thrown.
If the \a theBoundaries list is empty then Standard_ConstructionError is thrown.
@@ -138,15 +137,15 @@
assert (0);
Standard_ConstructionError::Raise ("Tools::makeSurface()");
}
- else if (aCur->IsKind (STANDARD_TYPE (Adaptor3d_HCurveOnSurface))) {
+ else if (aCur->IsKind (STANDARD_TYPE (Adaptor3d_CurveOnSurface))) {
//G1 constraint
- Handle(Adaptor3d_HCurveOnSurface) aHCOS (Handle(Adaptor3d_HCurveOnSurface)::DownCast (aCur));
+ Handle(Adaptor3d_CurveOnSurface) aHCOS (Handle(Adaptor3d_CurveOnSurface)::DownCast (aCur));
Handle (GeomPlate_CurveConstraint) aConst = new GeomPlate_CurveConstraint (aHCOS, 1 /*GeomAbs_G1*/,aNbPnts, aTol3d, anAngTol, aCurvTol);
aPlateBuilder.Add (aConst);
}
- else if (aCur->IsKind (STANDARD_TYPE (GeomAdaptor_HCurve))) {
+ else if (aCur->IsKind (STANDARD_TYPE (GeomAdaptor_Curve))) {
//G0 constraint
- Handle(GeomAdaptor_HCurve) aHC (Handle(GeomAdaptor_HCurve)::DownCast (aCur));
+ Handle(GeomAdaptor_Curve) aHC (Handle(GeomAdaptor_Curve)::DownCast (aCur));
Handle (GeomPlate_CurveConstraint) aConst = new GeomPlate_CurveConstraint (aHC, 0 /*GeomAbs_G0*/, aNbPnts, aTol3d);
aPlateBuilder.Add (aConst);
}

View File

@ -0,0 +1,146 @@
--- src/Mod/Part/App/TopoShape.cpp.orig 2022-02-03 21:51:04.000000000 +0100
+++ src/Mod/Part/App/TopoShape.cpp 2022-02-03 22:55:05.882488000 +0100
@@ -38,8 +38,6 @@
# include <BRep_Tool.hxx>
# include <BRepAdaptor_Curve.hxx>
# include <BRepAdaptor_CompCurve.hxx>
-# include <BRepAdaptor_HCurve.hxx>
-# include <BRepAdaptor_HCompCurve.hxx>
# include <BRepAdaptor_Surface.hxx>
# include <BRepAlgoAPI_Common.hxx>
# include <BRepAlgoAPI_Cut.hxx>
@@ -1122,10 +1120,10 @@
// check orientation
TopAbs_Orientation orient = aFace.Orientation();
+ nbTriInFace = aPoly->NbTriangles();
// cycling through the poly mesh
const Poly_Array1OfTriangle& Triangles = aPoly->Triangles();
- const TColgp_Array1OfPnt& Nodes = aPoly->Nodes();
- for (int i=1;i<=nbTriInFace;i++) {
+ for (int i=1; i<=nbTriInFace; i++) {
// Get the triangle
Standard_Integer N1,N2,N3;
Triangles(i).Get(N1,N2,N3);
@@ -1137,9 +1135,9 @@
N2 = tmp;
}
- gp_Pnt V1 = Nodes(N1);
- gp_Pnt V2 = Nodes(N2);
- gp_Pnt V3 = Nodes(N3);
+ gp_Pnt V1 = aPoly->Node(N1);
+ gp_Pnt V2 = aPoly->Node(N2);
+ gp_Pnt V3 = aPoly->Node(N3);
// transform the vertices to the place of the face
if (!identity) {
@@ -1193,6 +1191,7 @@
std::vector<Base::Vector3f> vertices;
Standard_Integer nbNodesInFace;
+ Standard_Integer nbNodesInTria;
// triangulation succeeded?
if (!aPoly.IsNull()) {
@@ -1233,16 +1232,14 @@
// getting size and create the array
nbNodesInFace = aPoly->NbNodes();
+ nbNodesInTria = aPolyTria->NbNodes();
vertices.resize(nbNodesInFace);
- const TColStd_Array1OfInteger& indices = aPoly->Nodes();
- const TColgp_Array1OfPnt& Nodes = aPolyTria->Nodes();
-
gp_Pnt V;
int pos = 0;
// go through the index array
- for (Standard_Integer i=indices.Lower();i <= indices.Upper();i++) {
- V = Nodes(indices(i));
+ for (Standard_Integer i=1; i<=nbNodesInTria; i++) {
+ V = aPolyTria->Node(i);
V.Transform(myTransf);
vertices[pos++].Set((float)(V.X()),(float)(V.Y()),(float)(V.Z()));
}
@@ -2215,12 +2212,20 @@
if (this->_Shape.IsNull())
Standard_Failure::Raise("Cannot sweep along empty spine");
+#if OCC_VERSION_HEX >= 0x070600
+ Handle(Adaptor3d_Curve) myPath;
+ if (this->_Shape.ShapeType() == TopAbs_EDGE) {
+ const TopoDS_Edge& path_edge = TopoDS::Edge(this->_Shape);
+ myPath = new BRepAdaptor_Curve(path_edge);
+ }
+#else
Handle(Adaptor3d_HCurve) myPath;
if (this->_Shape.ShapeType() == TopAbs_EDGE) {
const TopoDS_Edge& path_edge = TopoDS::Edge(this->_Shape);
BRepAdaptor_Curve path_adapt(path_edge);
myPath = new BRepAdaptor_HCurve(path_adapt);
}
+#endif
//else if (this->_Shape.ShapeType() == TopAbs_WIRE) {
// const TopoDS_Wire& path_wire = TopoDS::Wire(this->_Shape);
// BRepAdaptor_CompCurve path_adapt(path_wire);
@@ -3401,10 +3406,10 @@
Domain domain;
// copy the points
- const TColgp_Array1OfPnt& points = theTriangulation->Nodes();
- domain.points.reserve(points.Length());
- for (int i = 1; i <= points.Length(); i++) {
- gp_Pnt p = points(i);
+ int nbptintria = theTriangulation->NbNodes();
+ domain.points.reserve(nbptintria);
+ for (int i = 1; i <= nbptintria; i++) {
+ gp_Pnt p = theTriangulation->Node(i);
p.Transform(loc.Transformation());
Standard_Real X, Y, Z;
p.Coord (X, Y, Z);
@@ -3414,11 +3419,11 @@
// copy the triangles
const TopAbs_Orientation anOrientation = face.Orientation();
bool flip = (anOrientation == TopAbs_REVERSED);
- const Poly_Array1OfTriangle& faces = theTriangulation->Triangles();
- domain.facets.reserve(faces.Length());
- for (int i = 1; i <= faces.Length(); i++) {
+ int nbtri = theTriangulation->NbTriangles();
+ domain.facets.reserve(nbtri);
+ for (int i = 1; i <= nbtri; i++) {
Standard_Integer N1, N2, N3;
- faces(i).Get(N1, N2, N3);
+ theTriangulation->Triangle(i).Get(N1, N2, N3);
Facet tria;
tria.I1 = N1-1; tria.I2 = N2-1; tria.I3 = N3-1;
@@ -3774,8 +3779,8 @@
const TColgp_Array1OfPnt& Nodes = aPoly->Nodes();
gp_Pnt V;
- for (Standard_Integer i=0;i < nbNodesInFace;i++) {
- V = Nodes(i+1);
+ for (Standard_Integer i=1; i <= nbNodesInFace; i++) {
+ V = Nodes(i);
V.Transform(myTransf);
vertices.emplace_back(V.X(),V.Y(),V.Z());
}
@@ -3808,14 +3813,12 @@
// getting size and create the array
nbNodesInFace = aPoly->NbNodes();
+ int nbNodesInTria = aPolyTria->NbNodes();
- const TColStd_Array1OfInteger& indices = aPoly->Nodes();
- const TColgp_Array1OfPnt& Nodes = aPolyTria->Nodes();
-
gp_Pnt V;
// go through the index array
- for (Standard_Integer i=indices.Lower();i <= indices.Upper();i++) {
- V = Nodes(indices(i));
+ for (Standard_Integer i=1 ;i <= nbNodesInTria; i++) {
+ V = aPolyTria->Node(i);
V.Transform(myTransf);
vertices.emplace_back(V.X(),V.Y(),V.Z());
}

View File

@ -0,0 +1,81 @@
--- src/Mod/Part/Gui/ViewProviderExt.cpp.orig 2022-03-02 17:15:16.283319000 +0100
+++ src/Mod/Part/Gui/ViewProviderExt.cpp 2022-03-02 23:49:04.036080000 +0100
@@ -137,26 +137,17 @@
const Handle(Poly_Triangulation)& aPolyTri,
TColgp_Array1OfDir& theNormals)
{
- const TColgp_Array1OfPnt& aNodes = aPolyTri->Nodes();
-
if(aPolyTri->HasNormals())
{
// normals pre-computed in triangulation structure
- const TShort_Array1OfShortReal& aNormals = aPolyTri->Normals();
- const Standard_ShortReal* aNormArr = &(aNormals.Value(aNormals.Lower()));
-
- for(Standard_Integer aNodeIter = aNodes.Lower(); aNodeIter <= aNodes.Upper(); ++aNodeIter)
+ for(Standard_Integer aNodeIter = 1; aNodeIter <= aPolyTri->NbNodes(); ++aNodeIter)
{
- const Standard_Integer anId = 3 * (aNodeIter - aNodes.Lower());
- const gp_Dir aNorm(aNormArr[anId + 0],
- aNormArr[anId + 1],
- aNormArr[anId + 2]);
- theNormals(aNodeIter) = aNorm;
+ theNormals(aNodeIter) = aPolyTri->Normal(aNodeIter);
}
if(theFace.Orientation() == TopAbs_REVERSED)
{
- for(Standard_Integer aNodeIter = aNodes.Lower(); aNodeIter <= aNodes.Upper(); ++aNodeIter)
+ for(Standard_Integer aNodeIter = 1; aNodeIter <= aPolyTri->NbNodes(); ++aNodeIter)
{
theNormals.ChangeValue(aNodeIter).Reverse();
}
@@ -172,16 +163,13 @@
const Standard_Real aTol = Precision::Confusion();
Handle(TShort_HArray1OfShortReal) aNormals = new TShort_HArray1OfShortReal(1, aPolyTri->NbNodes() * 3);
const Poly_Array1OfTriangle& aTriangles = aPolyTri->Triangles();
- const TColgp_Array1OfPnt2d* aNodesUV = aPolyTri->HasUVNodes() && !aSurf.IsNull()
- ? &aPolyTri->UVNodes()
- : NULL;
+ const Standard_Boolean hasUV = aPolyTri->HasUVNodes() && !aSurf.IsNull();
Standard_Integer aTri[3];
- for(Standard_Integer aNodeIter = aNodes.Lower(); aNodeIter <= aNodes.Upper(); ++aNodeIter)
+ for(Standard_Integer aNodeIter = 1; aNodeIter <= aPolyTri->NbNodes(); ++aNodeIter)
{
// try to retrieve normal from real surface first, when UV coordinates are available
- if(aNodesUV == NULL
- || GeomLib::NormEstim(aSurf, aNodesUV->Value(aNodeIter), aTol, theNormals(aNodeIter)) > 1)
+ if(hasUV || GeomLib::NormEstim(aSurf, aPolyTri->UVNode(aNodeIter), aTol, theNormals(aNodeIter)) > 1)
{
// compute flat normals
gp_XYZ eqPlan(0.0, 0.0, 0.0);
@@ -189,8 +177,8 @@
for(thePolyConnect.Initialize(aNodeIter); thePolyConnect.More(); thePolyConnect.Next())
{
aTriangles(thePolyConnect.Value()).Get(aTri[0], aTri[1], aTri[2]);
- const gp_XYZ v1(aNodes(aTri[1]).Coord() - aNodes(aTri[0]).Coord());
- const gp_XYZ v2(aNodes(aTri[2]).Coord() - aNodes(aTri[1]).Coord());
+ const gp_XYZ v1(aPolyTri->Node(aTri[1]).Coord() - aPolyTri->Node(aTri[0]).Coord());
+ const gp_XYZ v2(aPolyTri->Node(aTri[2]).Coord() - aPolyTri->Node(aTri[1]).Coord());
const gp_XYZ vv = v1 ^ v2;
const Standard_Real aMod = vv.Modulus();
@@ -204,7 +192,7 @@
theNormals(aNodeIter) = (aModMax > aTol) ? gp_Dir(eqPlan) : gp::DZ();
}
- const Standard_Integer anId = (aNodeIter - aNodes.Lower()) * 3;
+ const Standard_Integer anId = (aNodeIter - 1) * 3;
aNormals->SetValue(anId + 1, (Standard_ShortReal)theNormals(aNodeIter).X());
aNormals->SetValue(anId + 2, (Standard_ShortReal)theNormals(aNodeIter).Y());
aNormals->SetValue(anId + 3, (Standard_ShortReal)theNormals(aNodeIter).Z());
@@ -214,7 +202,7 @@
if(theFace.Orientation() == TopAbs_REVERSED)
{
- for(Standard_Integer aNodeIter = aNodes.Lower(); aNodeIter <= aNodes.Upper(); ++aNodeIter)
+ for(Standard_Integer aNodeIter = 1; aNodeIter <= aPolyTri->NbNodes(); ++aNodeIter)
{
theNormals.ChangeValue(aNodeIter).Reverse();
}

View File

@ -0,0 +1,23 @@
--- src/Mod/Raytracing/App/PovTools.cpp.orig 2022-02-03 23:01:51.000000000 +0100
+++ src/Mod/Raytracing/App/PovTools.cpp 2022-02-03 23:03:51.000000000 +0100
@@ -402,7 +402,6 @@
// cycling through the poly mesh
const Poly_Array1OfTriangle& Triangles = aPoly->Triangles();
- const TColgp_Array1OfPnt& Nodes = aPoly->Nodes();
for (i=1; i<=nbTriInFace; i++) {
// Get the triangle
Standard_Integer N1,N2,N3;
@@ -416,9 +415,9 @@
N2 = tmp;
}
- gp_Pnt V1 = Nodes(N1);
- gp_Pnt V2 = Nodes(N2);
- gp_Pnt V3 = Nodes(N3);
+ gp_Pnt V1 = aPoly->Node(N1);
+ gp_Pnt V2 = aPoly->Node(N2);
+ gp_Pnt V3 = aPoly->Node(N3);
// transform the vertices to the place of the face
if (!identity) {