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:
parent
03f7dd327e
commit
d25a7563aa
@ -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 \
|
||||
|
@ -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
|
||||
|
477
cad/freecad/files/patch-74639da997d5f2e53f001d9f256be86ceee901f5
Normal file
477
cad/freecad/files/patch-74639da997d5f2e53f001d9f256be86ceee901f5
Normal 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
|
@ -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>
|
22
cad/freecad/files/patch-src_Mod_Fem_App_FemConstraint.cpp
Normal file
22
cad/freecad/files/patch-src_Mod_Fem_App_FemConstraint.cpp
Normal 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 {
|
@ -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>
|
@ -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++;
|
@ -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));
|
@ -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) {
|
29
cad/freecad/files/patch-src_Mod_Part_App_AppPartPy.cpp
Normal file
29
cad/freecad/files/patch-src_Mod_Part_App_AppPartPy.cpp
Normal 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());
|
45
cad/freecad/files/patch-src_Mod_Part_App_Tools.cpp
Normal file
45
cad/freecad/files/patch-src_Mod_Part_App_Tools.cpp
Normal 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);
|
||||
}
|
146
cad/freecad/files/patch-src_Mod_Part_App_TopoShape.cpp
Normal file
146
cad/freecad/files/patch-src_Mod_Part_App_TopoShape.cpp
Normal 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());
|
||||
}
|
81
cad/freecad/files/patch-src_Mod_Part_Gui_ViewProviderExt.cpp
Normal file
81
cad/freecad/files/patch-src_Mod_Part_Gui_ViewProviderExt.cpp
Normal 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();
|
||||
}
|
23
cad/freecad/files/patch-src_Mod_Raytracing_App_PovTools.cpp
Normal file
23
cad/freecad/files/patch-src_Mod_Raytracing_App_PovTools.cpp
Normal 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) {
|
Loading…
Reference in New Issue
Block a user