Repository: tpaviot/pythonocc-core (language: python)

Issue:
Crash on getting bounds of BSpline of BRepAdaptor_Surface
Hi,

using pythonocc-core 7.7.2 getting the bounds from a BRepAdaptor_Surface crashes on Windows and on Linux.

On Windows it crashes with:
Windows fatal exception: code 0xc0000374

Which is consistent to #1218 and seems like a very related error.

But the workaround proposed there to not chain the methods but call everything seperately does not work here.


```python
from OCC.Core.BRepAdaptor import BRepAdaptor_Surface
from OCC.Core.IGESCAFControl import IGESCAFControl_Reader
from OCC.Core.TDF import TDF_LabelSequence
from OCC.Core.TDocStd import TDocStd_Document
from OCC.Core.XCAFDoc import XCAFDoc_DocumentTool


def get_bounds(adaptor):
    
    surface = adaptor.Surface()

    bspline = surface.BSpline()

    bounds = bspline.Bounds()

    result = list(bounds)
    return result


aReader = IGESCAFControl_Reader()
if aReader.ReadFile("testfile.igs") != 1:
    raise ValueError("Can't open IGES file.")

aDoc = TDocStd_Document("iges")
if not aReader.Transfer(aDoc):
    raise ValueError("Cannot transfer data from IGES file.")

shape_tool = XCAFDoc_DocumentTool.ShapeTool(aDoc.Main())

shp_labels = TDF_LabelSequence()
shape_tool.GetShapes(shp_labels)

shape_label = shp_labels.Value(1)
shape = shape_tool.GetShape(shape_label)

adaptor = BRepAdaptor_Surface(shape)

bounds = get_bounds(adaptor)

print(bounds)

print("done")


```

The crash always happens at the return statement of the `get_bounds` method even though I am returning a list of floats which I can print out while debugging just fine.

If I move the code outside of the method into the main script it actually works. But for me it is not feasible to not use methods in a larger piece of code.

I attached the testfile I used, which is just a random surface I created in CAD software.
[testfile.zip](https://github.com/tpaviot/pythonocc-core/files/13375925/testfile.zip)

PS: The code structure worked fine in version 7.4.1, after that those problems appeared.



Discussion / hints:
Is there any update on this issue? Unfortunately I cannot figure out a reasonable workaround in my case so I'm still at v7.4.1

Fix patch:
diff --git a/src/SWIG_files/wrapper/AppCont.i b/src/SWIG_files/wrapper/AppCont.i
index c4187a16f..48de45419 100644
--- a/src/SWIG_files/wrapper/AppCont.i
+++ b/src/SWIG_files/wrapper/AppCont.i
@@ -294,7 +294,7 @@ Description
 -----------
 No available documentation.
 ") Value;
-		const AppParCurves_MultiCurve & Value();
+		AppParCurves_MultiCurve Value();
 
 };
 
diff --git a/src/SWIG_files/wrapper/AppDef.i b/src/SWIG_files/wrapper/AppDef.i
index 0102fe3f5..f4db4a8f0 100644
--- a/src/SWIG_files/wrapper/AppDef.i
+++ b/src/SWIG_files/wrapper/AppDef.i
@@ -595,7 +595,7 @@ Description
 -----------
 Returns the result of the approximation, i.e. all the curves. an exception is raised if notdone.
 ") BSplineValue;
-		const AppParCurves_MultiBSpCurve & BSplineValue();
+		AppParCurves_MultiBSpCurve BSplineValue();
 
 		/****************** BezierValue ******************/
 		/**** md5 signature: 2bbd29cb039e6bcdcdf61afe82651ac1 ****/
@@ -1256,7 +1256,7 @@ Description
 -----------
 Returns the result of the approximation.
 ") Value;
-		const AppParCurves_MultiBSpCurve & Value();
+		AppParCurves_MultiBSpCurve Value();
 
 };
 
@@ -1592,7 +1592,7 @@ Description
 -----------
 Returns the result of the approximation.
 ") SplineValue;
-		const AppParCurves_MultiBSpCurve & SplineValue();
+		AppParCurves_MultiBSpCurve SplineValue();
 
 		/****************** Value ******************/
 		/**** md5 signature: ce9a9d43a5aa1f3754abfba817bb7838 ****/
@@ -1610,7 +1610,7 @@ Description
 -----------
 Returns the result of the approximation.
 ") Value;
-		const AppParCurves_MultiCurve & Value(const Standard_Integer Index = 1);
+		AppParCurves_MultiCurve Value(const Standard_Integer Index = 1);
 
 };
 
@@ -3155,7 +3155,7 @@ Description
 -----------
 Returns the multicurve approximating the set after computing the value f or grad(f).
 ") CurveValue;
-		const AppParCurves_MultiCurve & CurveValue();
+		AppParCurves_MultiCurve CurveValue();
 
 		/****************** Error ******************/
 		/**** md5 signature: 59bc36aa259ae04fcbc9c2a60fae6dfb ****/
@@ -3370,7 +3370,7 @@ Description
 -----------
 Returns the multicurve approximating the set after computing the value f or grad(f).
 ") CurveValue;
-		const AppParCurves_MultiCurve & CurveValue();
+		AppParCurves_MultiCurve CurveValue();
 
 		/****************** Error ******************/
 		/**** md5 signature: 59bc36aa259ae04fcbc9c2a60fae6dfb ****/
@@ -3585,7 +3585,7 @@ Description
 -----------
 Returns the multicurve approximating the set after computing the value f or grad(f).
 ") CurveValue;
-		const AppParCurves_MultiCurve & CurveValue();
+		AppParCurves_MultiCurve CurveValue();
 
 		/****************** Error ******************/
 		/**** md5 signature: 59bc36aa259ae04fcbc9c2a60fae6dfb ****/
@@ -3875,7 +3875,7 @@ Description
 -----------
 Returns the result of the approximation, i.e. all the curves. an exception is raised if notdone.
 ") BSplineValue;
-		const AppParCurves_MultiBSpCurve & BSplineValue();
+		AppParCurves_MultiBSpCurve BSplineValue();
 
 		/****************** BezierValue ******************/
 		/**** md5 signature: 2bbd29cb039e6bcdcdf61afe82651ac1 ****/
@@ -4253,7 +4253,7 @@ Description
 -----------
 Returns the result of the approximation, i.e. all the curves. an exception is raised if notdone.
 ") BSplineValue;
-		const AppParCurves_MultiBSpCurve & BSplineValue();
+		AppParCurves_MultiBSpCurve BSplineValue();
 
 		/****************** BezierValue ******************/
 		/**** md5 signature: 2bbd29cb039e6bcdcdf61afe82651ac1 ****/
@@ -4631,7 +4631,7 @@ Description
 -----------
 Returns the result of the approximation, i.e. all the curves. an exception is raised if notdone.
 ") BSplineValue;
-		const AppParCurves_MultiBSpCurve & BSplineValue();
+		AppParCurves_MultiBSpCurve BSplineValue();
 
 		/****************** BezierValue ******************/
 		/**** md5 signature: 2bbd29cb039e6bcdcdf61afe82651ac1 ****/
@@ -5590,7 +5590,7 @@ Description
 -----------
 Returns the multicurve approximating the set after computing the value f or grad(f).
 ") CurveValue;
-		const AppParCurves_MultiCurve & CurveValue();
+		AppParCurves_MultiCurve CurveValue();
 
 		/****************** Error ******************/
 		/**** md5 signature: 59bc36aa259ae04fcbc9c2a60fae6dfb ****/
@@ -6003,7 +6003,7 @@ Description
 -----------
 Returns the result of the approximation, i.e. all the curves. an exception is raised if notdone.
 ") BSplineValue;
-		const AppParCurves_MultiBSpCurve & BSplineValue();
+		AppParCurves_MultiBSpCurve BSplineValue();
 
 		/****************** BezierValue ******************/
 		/**** md5 signature: 2bbd29cb039e6bcdcdf61afe82651ac1 ****/
diff --git a/src/SWIG_files/wrapper/AppParCurves.i b/src/SWIG_files/wrapper/AppParCurves.i
index 80d797e46..4927aa9d5 100644
--- a/src/SWIG_files/wrapper/AppParCurves.i
+++ b/src/SWIG_files/wrapper/AppParCurves.i
@@ -861,7 +861,7 @@ Description
 -----------
 Returns the index multipoint. an exception is raised if index <0 or index >degree+1.
 ") Value;
-		const AppParCurves_MultiPoint & Value(const Standard_Integer Index);
+		AppParCurves_MultiPoint Value(const Standard_Integer Index);
 
 		/****************** Value ******************/
 		/**** md5 signature: 36d681f12c55158bec87d7926565a2ae ****/
diff --git a/src/SWIG_files/wrapper/Approx.i b/src/SWIG_files/wrapper/Approx.i
index bcbe96121..f2076a091 100644
--- a/src/SWIG_files/wrapper/Approx.i
+++ b/src/SWIG_files/wrapper/Approx.i
@@ -1742,7 +1742,7 @@ Description
 -----------
 Return the composite multicurves as a multibspcurve.
 ") ChangeValue;
-		const AppParCurves_MultiBSpCurve & ChangeValue();
+		AppParCurves_MultiBSpCurve ChangeValue();
 
 		/****************** Perform ******************/
 		/**** md5 signature: c04b01412cba7220c024b5eb4532697f ****/
@@ -1799,7 +1799,7 @@ Description
 -----------
 Return the composite multicurves as a multibspcurve.
 ") Value;
-		const AppParCurves_MultiBSpCurve & Value();
+		AppParCurves_MultiBSpCurve Value();
 
 };
 
diff --git a/src/SWIG_files/wrapper/BOPDS.i b/src/SWIG_files/wrapper/BOPDS.i
index ddf9787cb..d5bba3202 100644
--- a/src/SWIG_files/wrapper/BOPDS.i
+++ b/src/SWIG_files/wrapper/BOPDS.i
@@ -964,7 +964,7 @@ Description
 -----------
 Selector returns the curve.
 ") Curve;
-		const IntTools_Curve & Curve();
+		IntTools_Curve Curve();
 
 		/****************** HasEdge ******************/
 		/**** md5 signature: b29d7c6fb0d75a5501e02d3f7002ad41 ****/
@@ -4877,7 +4877,7 @@ Description
 -----------
 /** * selector * returns the intersection curves * return * intersection curves */.
 ") Curves;
-		const BOPDS_VectorOfCurve & Curves();
+		BOPDS_VectorOfCurve Curves();
 
 		/****************** Init ******************/
 		/**** md5 signature: 4ef383c666596f906f9ce4d66071677d ****/
diff --git a/src/SWIG_files/wrapper/BRep.i b/src/SWIG_files/wrapper/BRep.i
index 44f20a7ae..8664102e4 100644
--- a/src/SWIG_files/wrapper/BRep.i
+++ b/src/SWIG_files/wrapper/BRep.i
@@ -2188,7 +2188,7 @@ Description
 -----------
 No available documentation.
 ") Curves;
-		const BRep_ListOfCurveRepresentation & Curves();
+		BRep_ListOfCurveRepresentation Curves();
 
 		/****************** Degenerated ******************/
 		/**** md5 signature: ecd3f4abf547c73285489df59f09d893 ****/
diff --git a/src/SWIG_files/wrapper/BRepAdaptor.i b/src/SWIG_files/wrapper/BRepAdaptor.i
index 044eef2e8..5577a0981 100644
--- a/src/SWIG_files/wrapper/BRepAdaptor.i
+++ b/src/SWIG_files/wrapper/BRepAdaptor.i
@@ -49,9 +49,9 @@ https://dev.opencascade.org/doc/occt-7.7.0/refman/html/package_brepadaptor.html"
 #include<gp_module.hxx>
 #include<GeomAbs_module.hxx>
 #include<TColStd_module.hxx>
-#include<GeomAdaptor_module.hxx>
 #include<Geom2dAdaptor_module.hxx>
 #include<Adaptor2d_module.hxx>
+#include<GeomAdaptor_module.hxx>
 #include<TopLoc_module.hxx>
 #include<Geom2d_module.hxx>
 #include<Message_module.hxx>
@@ -69,9 +69,9 @@ https://dev.opencascade.org/doc/occt-7.7.0/refman/html/package_brepadaptor.html"
 %import gp.i
 %import GeomAbs.i
 %import TColStd.i
-%import GeomAdaptor.i
 %import Geom2dAdaptor.i
 %import Adaptor2d.i
+%import GeomAdaptor.i
 
 %pythoncode {
 from enum import IntEnum
@@ -838,7 +838,7 @@ Description
 -----------
 Returns the curve of the edge.
 ") Curve;
-		const GeomAdaptor_Curve & Curve();
+		GeomAdaptor_Curve Curve();
 
 		/****************** CurveOnSurface ******************/
 		/**** md5 signature: f06c54ea203f128f90114fb7bd684518 ****/
@@ -851,7 +851,7 @@ Description
 -----------
 Returns the curveonsurface of the edge.
 ") CurveOnSurface;
-		const Adaptor3d_CurveOnSurface & CurveOnSurface();
+		Adaptor3d_CurveOnSurface CurveOnSurface();
 
 		/****************** D0 ******************/
 		/**** md5 signature: 5f7d08d8d17afc516aac9ef64bf9711f ****/
@@ -2084,7 +2084,7 @@ Description
 -----------
 Returns the surface.
 ") Surface;
-		const GeomAdaptor_Surface & Surface();
+		GeomAdaptor_Surface Surface();
 
 		/****************** Tolerance ******************/
 		/**** md5 signature: 9e5775014410d884d1a1adc1cd47930b ****/
diff --git a/src/SWIG_files/wrapper/BRepAdaptor.pyi b/src/SWIG_files/wrapper/BRepAdaptor.pyi
index dcc02590f..abf3f08e9 100644
--- a/src/SWIG_files/wrapper/BRepAdaptor.pyi
+++ b/src/SWIG_files/wrapper/BRepAdaptor.pyi
@@ -9,9 +9,9 @@ from OCC.Core.Geom import *
 from OCC.Core.gp import *
 from OCC.Core.GeomAbs import *
 from OCC.Core.TColStd import *
-from OCC.Core.GeomAdaptor import *
 from OCC.Core.Geom2dAdaptor import *
 from OCC.Core.Adaptor2d import *
+from OCC.Core.GeomAdaptor import *
 
 
 class BRepAdaptor_Array1OfCurve:
diff --git a/src/SWIG_files/wrapper/BRepApprox.i b/src/SWIG_files/wrapper/BRepApprox.i
index 520d68820..cc5975149 100644
--- a/src/SWIG_files/wrapper/BRepApprox.i
+++ b/src/SWIG_files/wrapper/BRepApprox.i
@@ -45,10 +45,10 @@ https://dev.opencascade.org/doc/occt-7.7.0/refman/html/package_brepapprox.html"
 #include<NCollection_module.hxx>
 #include<Approx_module.hxx>
 #include<math_module.hxx>
-#include<AppParCurves_module.hxx>
 #include<Geom_module.hxx>
 #include<Geom2d_module.hxx>
 #include<IntSurf_module.hxx>
+#include<AppParCurves_module.hxx>
 #include<TColStd_module.hxx>
 #include<BRepAdaptor_module.hxx>
 #include<gp_module.hxx>
@@ -76,10 +76,10 @@ https://dev.opencascade.org/doc/occt-7.7.0/refman/html/package_brepapprox.html"
 %import NCollection.i
 %import Approx.i
 %import math.i
-%import AppParCurves.i
 %import Geom.i
 %import Geom2d.i
 %import IntSurf.i
+%import AppParCurves.i
 %import TColStd.i
 %import BRepAdaptor.i
 %import gp.i
@@ -246,7 +246,7 @@ Description
 -----------
 No available documentation.
 ") Value;
-		const AppParCurves_MultiBSpCurve & Value(const Standard_Integer Index);
+		AppParCurves_MultiBSpCurve Value(const Standard_Integer Index);
 
 };
 
@@ -808,7 +808,7 @@ Description
 -----------
 Returns the result of the approximation, i.e. all the curves. an exception is raised if notdone.
 ") BSplineValue;
-		const AppParCurves_MultiBSpCurve & BSplineValue();
+		AppParCurves_MultiBSpCurve BSplineValue();
 
 		/****************** BezierValue ******************/
 		/**** md5 signature: 2bbd29cb039e6bcdcdf61afe82651ac1 ****/
@@ -1622,7 +1622,7 @@ Description
 -----------
 Returns the multicurve approximating the set after computing the value f or grad(f).
 ") CurveValue;
-		const AppParCurves_MultiCurve & CurveValue();
+		AppParCurves_MultiCurve CurveValue();
 
 		/****************** Error ******************/
 		/**** md5 signature: 59bc36aa259ae04fcbc9c2a60fae6dfb ****/
@@ -1837,7 +1837,7 @@ Description
 -----------
 Returns the multicurve approximating the set after computing the value f or grad(f).
 ") CurveValue;
-		const AppParCurves_MultiCurve & CurveValue();
+		AppParCurves_MultiCurve CurveValue();
 
 		/****************** Error ******************/
 		/**** md5 signature: 59bc36aa259ae04fcbc9c2a60fae6dfb ****/
@@ -2127,7 +2127,7 @@ Description
 -----------
 Returns the result of the approximation, i.e. all the curves. an exception is raised if notdone.
 ") BSplineValue;
-		const AppParCurves_MultiBSpCurve & BSplineValue();
+		AppParCurves_MultiBSpCurve BSplineValue();
 
 		/****************** BezierValue ******************/
 		/**** md5 signature: 2bbd29cb039e6bcdcdf61afe82651ac1 ****/
@@ -2505,7 +2505,7 @@ Description
 -----------
 Returns the result of the approximation, i.e. all the curves. an exception is raised if notdone.
 ") BSplineValue;
-		const AppParCurves_MultiBSpCurve & BSplineValue();
+		AppParCurves_MultiBSpCurve BSplineValue();
 
 		/****************** BezierValue ******************/
 		/**** md5 signature: 2bbd29cb039e6bcdcdf61afe82651ac1 ****/
@@ -4094,7 +4094,7 @@ Description
 -----------
 Returns the result of the approximation.
 ") SplineValue;
-		const AppParCurves_MultiBSpCurve & SplineValue();
+		AppParCurves_MultiBSpCurve SplineValue();
 
 		/****************** Value ******************/
 		/**** md5 signature: ce9a9d43a5aa1f3754abfba817bb7838 ****/
@@ -4112,7 +4112,7 @@ Description
 -----------
 Returns the result of the approximation.
 ") Value;
-		const AppParCurves_MultiCurve & Value(const Standard_Integer Index = 1);
+		AppParCurves_MultiCurve Value(const Standard_Integer Index = 1);
 
 };
 
@@ -4520,7 +4520,7 @@ Description
 -----------
 Returns the result of the approximation.
 ") Value;
-		const AppParCurves_MultiBSpCurve & Value();
+		AppParCurves_MultiBSpCurve Value();
 
 };
 
@@ -4566,7 +4566,7 @@ Description
 -----------
 No available documentation.
 ") AuxillarSurface1;
-		const BRepAdaptor_Surface & AuxillarSurface1();
+		BRepAdaptor_Surface AuxillarSurface1();
 
 		/****************** AuxillarSurface2 ******************/
 		/**** md5 signature: 6195097157048ebf7856e69ebf2099cb ****/
@@ -4579,7 +4579,7 @@ Description
 -----------
 No available documentation.
 ") AuxillarSurface2;
-		const BRepAdaptor_Surface & AuxillarSurface2();
+		BRepAdaptor_Surface AuxillarSurface2();
 
 		/****************** ComputeParameters ******************/
 		/**** md5 signature: 5686d6c4ca7c470ce5a820727bd25544 ****/
@@ -6189,7 +6189,7 @@ Description
 -----------
 No available documentation.
 ") PSurface;
-		const BRepAdaptor_Surface & PSurface();
+		BRepAdaptor_Surface PSurface();
 
 		/****************** Point ******************/
 		/**** md5 signature: 177e376cc11d1fedb2819bac56591ea8 ****/
diff --git a/src/SWIG_files/wrapper/BRepApprox.pyi b/src/SWIG_files/wrapper/BRepApprox.pyi
index 5e896e98f..cdc229f47 100644
--- a/src/SWIG_files/wrapper/BRepApprox.pyi
+++ b/src/SWIG_files/wrapper/BRepApprox.pyi
@@ -5,10 +5,10 @@ from OCC.Core.Standard import *
 from OCC.Core.NCollection import *
 from OCC.Core.Approx import *
 from OCC.Core.math import *
-from OCC.Core.AppParCurves import *
 from OCC.Core.Geom import *
 from OCC.Core.Geom2d import *
 from OCC.Core.IntSurf import *
+from OCC.Core.AppParCurves import *
 from OCC.Core.TColStd import *
 from OCC.Core.BRepAdaptor import *
 from OCC.Core.gp import *
diff --git a/src/SWIG_files/wrapper/BRepMAT2d.i b/src/SWIG_files/wrapper/BRepMAT2d.i
index 1c966628b..5efdb4c5f 100644
--- a/src/SWIG_files/wrapper/BRepMAT2d.i
+++ b/src/SWIG_files/wrapper/BRepMAT2d.i
@@ -49,7 +49,6 @@ https://dev.opencascade.org/doc/occt-7.7.0/refman/html/package_brepmat2d.html"
 #include<Geom2d_module.hxx>
 #include<gp_module.hxx>
 #include<TopoDS_module.hxx>
-#include<TColGeom2d_module.hxx>
 #include<TColStd_module.hxx>
 #include<TopLoc_module.hxx>
 #include<Message_module.hxx>
@@ -67,7 +66,6 @@ https://dev.opencascade.org/doc/occt-7.7.0/refman/html/package_brepmat2d.html"
 %import Geom2d.i
 %import gp.i
 %import TopoDS.i
-%import TColGeom2d.i
 %import TColStd.i
 
 %pythoncode {
@@ -361,7 +359,7 @@ Description
 -----------
 No available documentation.
 ") Contour;
-		const TColGeom2d_SequenceOfCurve & Contour(const Standard_Integer IndexContour);
+		TColGeom2d_SequenceOfCurve Contour(const Standard_Integer IndexContour);
 
 		/****************** GetIsClosed ******************/
 		/**** md5 signature: fe2549f56b3cb80b5c2da5e5e50f62a0 ****/
diff --git a/src/SWIG_files/wrapper/BRepMAT2d.pyi b/src/SWIG_files/wrapper/BRepMAT2d.pyi
index 06001750d..91f982a7d 100644
--- a/src/SWIG_files/wrapper/BRepMAT2d.pyi
+++ b/src/SWIG_files/wrapper/BRepMAT2d.pyi
@@ -9,7 +9,6 @@ from OCC.Core.Bisector import *
 from OCC.Core.Geom2d import *
 from OCC.Core.gp import *
 from OCC.Core.TopoDS import *
-from OCC.Core.TColGeom2d import *
 from OCC.Core.TColStd import *
 
 
diff --git a/src/SWIG_files/wrapper/BRepMeshData.i b/src/SWIG_files/wrapper/BRepMeshData.i
index d920b33cb..a2964e965 100644
--- a/src/SWIG_files/wrapper/BRepMeshData.i
+++ b/src/SWIG_files/wrapper/BRepMeshData.i
@@ -323,7 +323,7 @@ Description
 -----------
 Adds discrete pcurve for the specified discrete face.
 ") AddPCurve;
-		virtual const IMeshData::IPCurveHandle & AddPCurve(const IMeshData::IFacePtr & theDFace, const TopAbs_Orientation theOrientation);
+		virtual IMeshData::IPCurveHandle AddPCurve(const IMeshData::IFacePtr & theDFace, const TopAbs_Orientation theOrientation);
 
 		/****************** GetPCurve ******************/
 		/**** md5 signature: 4c651c871b35e5f5f12404be43db3374 ****/
@@ -342,7 +342,7 @@ Description
 -----------
 Returns pcurve for the specified discrete face.
 ") GetPCurve;
-		virtual const IMeshData::IPCurveHandle & GetPCurve(const IMeshData::IFacePtr & theDFace, const TopAbs_Orientation theOrientation);
+		virtual IMeshData::IPCurveHandle GetPCurve(const IMeshData::IFacePtr & theDFace, const TopAbs_Orientation theOrientation);
 
 		/****************** GetPCurve ******************/
 		/**** md5 signature: c2f904a58e6d4fae050f2bef2b323320 ****/
@@ -360,7 +360,7 @@ Description
 -----------
 Returns pcurve with the given index.
 ") GetPCurve;
-		virtual const IMeshData::IPCurveHandle & GetPCurve(const Standard_Integer theIndex);
+		virtual IMeshData::IPCurveHandle GetPCurve(const Standard_Integer theIndex);
 
 		/****************** PCurvesNb ******************/
 		/**** md5 signature: 396e4ba5fd70d100e8e49ef4d5da81c6 ****/
diff --git a/src/SWIG_files/wrapper/ChFiDS.i b/src/SWIG_files/wrapper/ChFiDS.i
index 704e7d9af..9059f1e6d 100644
--- a/src/SWIG_files/wrapper/ChFiDS.i
+++ b/src/SWIG_files/wrapper/ChFiDS.i
@@ -52,7 +52,6 @@ https://dev.opencascade.org/doc/occt-7.7.0/refman/html/package_chfids.html"
 #include<TColStd_module.hxx>
 #include<Geom2d_module.hxx>
 #include<TopTools_module.hxx>
-#include<BRepAdaptor_module.hxx>
 #include<Law_module.hxx>
 #include<Message_module.hxx>
 #include<TopLoc_module.hxx>
@@ -77,7 +76,6 @@ https://dev.opencascade.org/doc/occt-7.7.0/refman/html/package_chfids.html"
 %import TColStd.i
 %import Geom2d.i
 %import TopTools.i
-%import BRepAdaptor.i
 %import Law.i
 
 %pythoncode {
@@ -2128,7 +2126,7 @@ Description
 -----------
 Sets the current curve and returns it.
 ") CurrentElementarySpine;
-		const BRepAdaptor_Curve & CurrentElementarySpine(const Standard_Integer Index);
+		BRepAdaptor_Curve CurrentElementarySpine(const Standard_Integer Index);
 
 		/****************** CurrentIndexOfElementarySpine ******************/
 		/**** md5 signature: 6987473580f0e6e3e57d9cf51fd473ea ****/
diff --git a/src/SWIG_files/wrapper/ChFiDS.pyi b/src/SWIG_files/wrapper/ChFiDS.pyi
index 4c985a5a4..5121eb794 100644
--- a/src/SWIG_files/wrapper/ChFiDS.pyi
+++ b/src/SWIG_files/wrapper/ChFiDS.pyi
@@ -12,7 +12,6 @@ from OCC.Core.GeomAbs import *
 from OCC.Core.TColStd import *
 from OCC.Core.Geom2d import *
 from OCC.Core.TopTools import *
-from OCC.Core.BRepAdaptor import *
 from OCC.Core.Law import *
 
 # the following typedef cannot be wrapped as is
diff --git a/src/SWIG_files/wrapper/Geom2dConvert.i b/src/SWIG_files/wrapper/Geom2dConvert.i
index 779771737..2bf76bf34 100644
--- a/src/SWIG_files/wrapper/Geom2dConvert.i
+++ b/src/SWIG_files/wrapper/Geom2dConvert.i
@@ -358,7 +358,7 @@ Description
 -----------
 Get the result curve after approximation.
 ") GetResult;
-		const TColGeom2d_SequenceOfCurve & GetResult();
+		TColGeom2d_SequenceOfCurve GetResult();
 
 };
 
diff --git a/src/SWIG_files/wrapper/Geom2dHatch.i b/src/SWIG_files/wrapper/Geom2dHatch.i
index 4d4ea1c56..187cc8907 100644
--- a/src/SWIG_files/wrapper/Geom2dHatch.i
+++ b/src/SWIG_files/wrapper/Geom2dHatch.i
@@ -44,9 +44,9 @@ https://dev.opencascade.org/doc/occt-7.7.0/refman/html/package_geom2dhatch.html"
 #include<Standard_module.hxx>
 #include<NCollection_module.hxx>
 #include<gp_module.hxx>
-#include<Geom2dAdaptor_module.hxx>
 #include<IntRes2d_module.hxx>
 #include<TopAbs_module.hxx>
+#include<Geom2dAdaptor_module.hxx>
 #include<Geom2d_module.hxx>
 #include<HatchGen_module.hxx>
 #include<Geom2dInt_module.hxx>
@@ -67,9 +67,9 @@ https://dev.opencascade.org/doc/occt-7.7.0/refman/html/package_geom2dhatch.html"
 %import Standard.i
 %import NCollection.i
 %import gp.i
-%import Geom2dAdaptor.i
 %import IntRes2d.i
 %import TopAbs.i
+%import Geom2dAdaptor.i
 %import Geom2d.i
 %import HatchGen.i
 %import Geom2dInt.i
@@ -175,7 +175,7 @@ Description
 -----------
 Returns the edge used to determine the classification. when the state is on this is the edge containing the point.
 ") Edge;
-		const Geom2dAdaptor_Curve & Edge();
+		Geom2dAdaptor_Curve Edge();
 
 		/****************** EdgeParameter ******************/
 		/**** md5 signature: a4ccdc0e9c154705af034e3ac274511c ****/
@@ -332,7 +332,7 @@ Description
 -----------
 Returns the curve associated to the element.
 ") Curve;
-		const Geom2dAdaptor_Curve & Curve();
+		Geom2dAdaptor_Curve Curve();
 
 		/****************** Orientation ******************/
 		/**** md5 signature: 854e5a15aa2f2078927a5c9e7d88dcf5 ****/
@@ -1138,7 +1138,7 @@ Description
 -----------
 Returns the curve associated to the inde-th element.
 ") ElementCurve;
-		const Geom2dAdaptor_Curve & ElementCurve(const Standard_Integer IndE);
+		Geom2dAdaptor_Curve ElementCurve(const Standard_Integer IndE);
 
 		/****************** HatchingCurve ******************/
 		/**** md5 signature: b1fa8a098ff9f80a6f4e6d2a784c6793 ****/
@@ -1156,7 +1156,7 @@ Description
 -----------
 Returns the curve associated to the indh-th hatching.
 ") HatchingCurve;
-		const Geom2dAdaptor_Curve & HatchingCurve(const Standard_Integer IndH);
+		Geom2dAdaptor_Curve HatchingCurve(const Standard_Integer IndH);
 
 		/****************** Intersector ******************/
 		/**** md5 signature: d4ab1df6bb73c74fdc4de0978582e354 ****/
@@ -1612,7 +1612,7 @@ Description
 -----------
 Returns the curve associated to the hatching.
 ") Curve;
-		const Geom2dAdaptor_Curve & Curve();
+		Geom2dAdaptor_Curve Curve();
 
 		/****************** Domain ******************/
 		/**** md5 signature: f3c8220f5a10c7deff66f6c669170c4f ****/
diff --git a/src/SWIG_files/wrapper/Geom2dHatch.pyi b/src/SWIG_files/wrapper/Geom2dHatch.pyi
index 7630b78e3..0787db250 100644
--- a/src/SWIG_files/wrapper/Geom2dHatch.pyi
+++ b/src/SWIG_files/wrapper/Geom2dHatch.pyi
@@ -4,9 +4,9 @@ from typing import overload, NewType, Optional, Tuple
 from OCC.Core.Standard import *
 from OCC.Core.NCollection import *
 from OCC.Core.gp import *
-from OCC.Core.Geom2dAdaptor import *
 from OCC.Core.IntRes2d import *
 from OCC.Core.TopAbs import *
+from OCC.Core.Geom2dAdaptor import *
 from OCC.Core.Geom2d import *
 from OCC.Core.HatchGen import *
 from OCC.Core.Geom2dInt import *
diff --git a/src/SWIG_files/wrapper/GeomInt.i b/src/SWIG_files/wrapper/GeomInt.i
index ef4d929ea..a79b93cbc 100644
--- a/src/SWIG_files/wrapper/GeomInt.i
+++ b/src/SWIG_files/wrapper/GeomInt.i
@@ -621,7 +621,7 @@ Description
 -----------
 Returns the result of the approximation, i.e. all the curves. an exception is raised if notdone.
 ") BSplineValue;
-		const AppParCurves_MultiBSpCurve & BSplineValue();
+		AppParCurves_MultiBSpCurve BSplineValue();
 
 		/****************** BezierValue ******************/
 		/**** md5 signature: 2bbd29cb039e6bcdcdf61afe82651ac1 ****/
@@ -2171,7 +2171,7 @@ Description
 -----------
 Returns the multicurve approximating the set after computing the value f or grad(f).
 ") CurveValue;
-		const AppParCurves_MultiCurve & CurveValue();
+		AppParCurves_MultiCurve CurveValue();
 
 		/****************** Error ******************/
 		/**** md5 signature: 59bc36aa259ae04fcbc9c2a60fae6dfb ****/
@@ -2386,7 +2386,7 @@ Description
 -----------
 Returns the multicurve approximating the set after computing the value f or grad(f).
 ") CurveValue;
-		const AppParCurves_MultiCurve & CurveValue();
+		AppParCurves_MultiCurve CurveValue();
 
 		/****************** Error ******************/
 		/**** md5 signature: 59bc36aa259ae04fcbc9c2a60fae6dfb ****/
@@ -2676,7 +2676,7 @@ Description
 -----------
 Returns the result of the approximation, i.e. all the curves. an exception is raised if notdone.
 ") BSplineValue;
-		const AppParCurves_MultiBSpCurve & BSplineValue();
+		AppParCurves_MultiBSpCurve BSplineValue();
 
 		/****************** BezierValue ******************/
 		/**** md5 signature: 2bbd29cb039e6bcdcdf61afe82651ac1 ****/
@@ -3054,7 +3054,7 @@ Description
 -----------
 Returns the result of the approximation, i.e. all the curves. an exception is raised if notdone.
 ") BSplineValue;
-		const AppParCurves_MultiBSpCurve & BSplineValue();
+		AppParCurves_MultiBSpCurve BSplineValue();
 
 		/****************** BezierValue ******************/
 		/**** md5 signature: 2bbd29cb039e6bcdcdf61afe82651ac1 ****/
@@ -3997,7 +3997,7 @@ Description
 -----------
 Returns the result of the approximation.
 ") SplineValue;
-		const AppParCurves_MultiBSpCurve & SplineValue();
+		AppParCurves_MultiBSpCurve SplineValue();
 
 		/****************** Value ******************/
 		/**** md5 signature: ce9a9d43a5aa1f3754abfba817bb7838 ****/
@@ -4015,7 +4015,7 @@ Description
 -----------
 Returns the result of the approximation.
 ") Value;
-		const AppParCurves_MultiCurve & Value(const Standard_Integer Index = 1);
+		AppParCurves_MultiCurve Value(const Standard_Integer Index = 1);
 
 };
 
@@ -4423,7 +4423,7 @@ Description
 -----------
 Returns the result of the approximation.
 ") Value;
-		const AppParCurves_MultiBSpCurve & Value();
+		AppParCurves_MultiBSpCurve Value();
 
 };
 
diff --git a/src/SWIG_files/wrapper/HLRBRep.i b/src/SWIG_files/wrapper/HLRBRep.i
index 876f3b28c..ec17c0201 100644
--- a/src/SWIG_files/wrapper/HLRBRep.i
+++ b/src/SWIG_files/wrapper/HLRBRep.i
@@ -2680,7 +2680,7 @@ Description
 -----------
 Returns the 3d curve.
 ") GetCurve;
-		const BRepAdaptor_Curve & GetCurve();
+		BRepAdaptor_Curve GetCurve();
 
 		/****************** GetType ******************/
 		/**** md5 signature: 6d4e6ae7972633971ba343e8afc91aa1 ****/
@@ -4731,7 +4731,7 @@ Description
 -----------
 No available documentation.
 ") Geometry;
-		const HLRBRep_Curve & Geometry();
+		HLRBRep_Curve Geometry();
 
 		/****************** HideCount ******************/
 		/**** md5 signature: 38d1acd9954e54785f99bc88211278f2 ****/
@@ -7855,7 +7855,7 @@ Description
 -----------
 No available documentation.
 ") CSPoint;
-		const IntCurveSurface_IntersectionPoint & CSPoint(const Standard_Integer N);
+		IntCurveSurface_IntersectionPoint CSPoint(const Standard_Integer N);
 
 		/****************** CSSegment ******************/
 		/**** md5 signature: cdcfb6a547ece08784f0bdf0d0732007 ****/
@@ -7873,7 +7873,7 @@ Description
 -----------
 No available documentation.
 ") CSSegment;
-		const IntCurveSurface_IntersectionSegment & CSSegment(const Standard_Integer N);
+		IntCurveSurface_IntersectionSegment CSSegment(const Standard_Integer N);
 
 		/****************** Destroy ******************/
 		/**** md5 signature: 73111f72f4ab0474eb2cfbd7e4af4e1a ****/
diff --git a/src/SWIG_files/wrapper/IMeshData.i b/src/SWIG_files/wrapper/IMeshData.i
index c7f861db4..ddaa38dcd 100644
--- a/src/SWIG_files/wrapper/IMeshData.i
+++ b/src/SWIG_files/wrapper/IMeshData.i
@@ -848,7 +848,7 @@ Description
 -----------
 Adds discrete pcurve for the specified discrete face.
 ") AddPCurve;
-		virtual const IMeshData::IPCurveHandle & AddPCurve(const IMeshData::IFacePtr & theDFace, const TopAbs_Orientation theOrientation);
+		virtual IMeshData::IPCurveHandle AddPCurve(const IMeshData::IFacePtr & theDFace, const TopAbs_Orientation theOrientation);
 
 		/****************** Clear ******************/
 		/**** md5 signature: ad9c9c46f2d5dcba0434153969fd3853 ****/
@@ -892,7 +892,7 @@ Description
 -----------
 Returns 3d curve associated with current edge.
 ") GetCurve;
-		const IMeshData::ICurveHandle & GetCurve();
+		IMeshData::ICurveHandle GetCurve();
 
 		/****************** GetDegenerated ******************/
 		/**** md5 signature: 6af080d4196d23a38e41ee2a54e037a8 ****/
@@ -937,7 +937,7 @@ Description
 -----------
 Returns pcurve for the specified discrete face.
 ") GetPCurve;
-		virtual const IMeshData::IPCurveHandle & GetPCurve(const IMeshData::IFacePtr & theDFace, const TopAbs_Orientation theOrientation);
+		virtual IMeshData::IPCurveHandle GetPCurve(const IMeshData::IFacePtr & theDFace, const TopAbs_Orientation theOrientation);
 
 		/****************** GetPCurve ******************/
 		/**** md5 signature: 6734b6ef219f8b326c14b5d29699b4aa ****/
@@ -955,7 +955,7 @@ Description
 -----------
 Returns pcurve with the given index.
 ") GetPCurve;
-		virtual const IMeshData::IPCurveHandle & GetPCurve(const Standard_Integer theIndex);
+		virtual IMeshData::IPCurveHandle GetPCurve(const Standard_Integer theIndex);
 
 		/****************** GetSameParam ******************/
 		/**** md5 signature: 2e33942b755b5337e15e6f47f768a210 ****/
diff --git a/src/SWIG_files/wrapper/IntAna.i b/src/SWIG_files/wrapper/IntAna.i
index 0e22912ca..f83ab73b4 100644
--- a/src/SWIG_files/wrapper/IntAna.i
+++ b/src/SWIG_files/wrapper/IntAna.i
@@ -1237,7 +1237,7 @@ Description
 -----------
 Returns the curve of range n.
 ") Curve;
-		const IntAna_Curve & Curve(const Standard_Integer N);
+		IntAna_Curve Curve(const Standard_Integer N);
 
 		/****************** HasNextCurve ******************/
 		/**** md5 signature: a7a1cf3c623e1f0a7533ded2abd35b22 ****/
diff --git a/src/SWIG_files/wrapper/IntCurveSurface.i b/src/SWIG_files/wrapper/IntCurveSurface.i
index 7af8765b6..84760dc6a 100644
--- a/src/SWIG_files/wrapper/IntCurveSurface.i
+++ b/src/SWIG_files/wrapper/IntCurveSurface.i
@@ -214,7 +214,7 @@ Description
 -----------
 Returns the intersectionpoint of range <index> raises notdone if the computation has failed or if the computation has not been done raises outofrange if index is not in the range <1..nbpoints>.
 ") Point;
-		const IntCurveSurface_IntersectionPoint & Point(const Standard_Integer Index);
+		IntCurveSurface_IntersectionPoint Point(const Standard_Integer Index);
 
 		/****************** Segment ******************/
 		/**** md5 signature: 7447c62bdef950bcde1897b587756423 ****/
@@ -232,7 +232,7 @@ Description
 -----------
 Returns the intersectionsegment of range <index> raises notdone if the computation has failed or if the computation has not been done raises outofrange if index is not in the range <1..nbsegment>.
 ") Segment;
-		const IntCurveSurface_IntersectionSegment & Segment(const Standard_Integer Index);
+		IntCurveSurface_IntersectionSegment Segment(const Standard_Integer Index);
 
 };
 
@@ -492,7 +492,7 @@ Description
 -----------
 No available documentation.
 ") FirstPoint;
-		const IntCurveSurface_IntersectionPoint & FirstPoint();
+		IntCurveSurface_IntersectionPoint FirstPoint();
 
 		/****************** SecondPoint ******************/
 		/**** md5 signature: f9e618a1839283d5ae57e523171f81fd ****/
@@ -523,7 +523,7 @@ Description
 -----------
 No available documentation.
 ") SecondPoint;
-		const IntCurveSurface_IntersectionPoint & SecondPoint();
+		IntCurveSurface_IntersectionPoint SecondPoint();
 
 		/****************** SetValues ******************/
 		/**** md5 signature: 8c4f62db01e7a648d2d3ac4f7be53b7c ****/
diff --git a/src/SWIG_files/wrapper/IntPatch.i b/src/SWIG_files/wrapper/IntPatch.i
index b289fd400..961266085 100644
--- a/src/SWIG_files/wrapper/IntPatch.i
+++ b/src/SWIG_files/wrapper/IntPatch.i
@@ -6364,7 +6364,7 @@ Description
 -----------
 No available documentation.
 ") Curve;
-		const IntAna_Curve & Curve();
+		IntAna_Curve Curve();
 
 		/****************** D1 ******************/
 		/**** md5 signature: ba74a6b24051c3de7f090b0e159de939 ****/
diff --git a/src/SWIG_files/wrapper/IntTools.i b/src/SWIG_files/wrapper/IntTools.i
index 20438962b..a05b7c11b 100644
--- a/src/SWIG_files/wrapper/IntTools.i
+++ b/src/SWIG_files/wrapper/IntTools.i
@@ -3113,7 +3113,7 @@ Description
 -----------
 Returns sequence of 3d curves as result of intersection.
 ") Lines;
-		const IntTools_SequenceOfCurves & Lines();
+		IntTools_SequenceOfCurves Lines();
 
 		/****************** Perform ******************/
 		/**** md5 signature: fc787f09bbe9fa2375bf6639020db29c ****/
@@ -5318,7 +5318,7 @@ Description
 -----------
 No available documentation.
 ") GetSampleRangeU;
-		const IntTools_CurveRangeSample & GetSampleRangeU();
+		IntTools_CurveRangeSample GetSampleRangeU();
 
 		/****************** GetSampleRangeV ******************/
 		/**** md5 signature: 964dc9ccf4277374195c5fbb755fb5fe ****/
@@ -5331,7 +5331,7 @@ Description
 -----------
 No available documentation.
 ") GetSampleRangeV;
-		const IntTools_CurveRangeSample & GetSampleRangeV();
+		IntTools_CurveRangeSample GetSampleRangeV();
 
 		/****************** IsEqual ******************/
 		/**** md5 signature: 080f0097ea4e0085b67175107f1752fc ****/
diff --git a/src/SWIG_files/wrapper/LocOpe.i b/src/SWIG_files/wrapper/LocOpe.i
index 09945fbdd..ee0f70a45 100644
--- a/src/SWIG_files/wrapper/LocOpe.i
+++ b/src/SWIG_files/wrapper/LocOpe.i
@@ -1997,7 +1997,7 @@ Description
 -----------
 No available documentation.
 ") Curves;
-		const TColGeom_SequenceOfCurve & Curves(const TColgp_SequenceOfPnt & Spt);
+		TColGeom_SequenceOfCurve Curves(const TColgp_SequenceOfPnt & Spt);
 
 		/****************** FirstShape ******************/
 		/**** md5 signature: 7feb91b88f8f76be63dd0e52049cfbe6 ****/
diff --git a/src/SWIG_files/wrapper/StdPrs.i b/src/SWIG_files/wrapper/StdPrs.i
index 5b6fd2136..8f45b454d 100644
--- a/src/SWIG_files/wrapper/StdPrs.i
+++ b/src/SWIG_files/wrapper/StdPrs.i
@@ -61,7 +61,6 @@ https://dev.opencascade.org/doc/occt-7.7.0/refman/html/package_stdprs.html"
 #include<Bnd_module.hxx>
 #include<TopTools_module.hxx>
 #include<TopAbs_module.hxx>
-#include<Adaptor2d_module.hxx>
 #include<BRepLib_module.hxx>
 #include<Adaptor3d_module.hxx>
 #include<GeomAdaptor_module.hxx>
@@ -79,6 +78,7 @@ https://dev.opencascade.org/doc/occt-7.7.0/refman/html/package_stdprs.html"
 #include<Media_module.hxx>
 #include<Prs3d_module.hxx>
 #include<BRepTools_module.hxx>
+#include<Adaptor2d_module.hxx>
 #include<TColgp_module.hxx>
 #include<TColStd_module.hxx>
 #include<TCollection_module.hxx>
@@ -104,7 +104,6 @@ https://dev.opencascade.org/doc/occt-7.7.0/refman/html/package_stdprs.html"
 %import Bnd.i
 %import TopTools.i
 %import TopAbs.i
-%import Adaptor2d.i
 %import BRepLib.i
 
 %pythoncode {
@@ -2102,7 +2101,7 @@ Description
 -----------
 Return current curve.
 ") Value;
-		const Adaptor2d_Curve2d & Value();
+		Adaptor2d_Curve2d Value();
 
 };
 
diff --git a/src/SWIG_files/wrapper/StdPrs.pyi b/src/SWIG_files/wrapper/StdPrs.pyi
index 4a99af0f2..b97e41fb3 100644
--- a/src/SWIG_files/wrapper/StdPrs.pyi
+++ b/src/SWIG_files/wrapper/StdPrs.pyi
@@ -21,7 +21,6 @@ from OCC.Core.GeomAbs import *
 from OCC.Core.Bnd import *
 from OCC.Core.TopTools import *
 from OCC.Core.TopAbs import *
-from OCC.Core.Adaptor2d import *
 from OCC.Core.BRepLib import *
 
 StdPrs_BndBox = NewType("StdPrs_BndBox", Prs3d_BndBox)
diff --git a/src/SWIG_files/wrapper/TopOpeBRep.i b/src/SWIG_files/wrapper/TopOpeBRep.i
index 17dbb7618..365888f28 100644
--- a/src/SWIG_files/wrapper/TopOpeBRep.i
+++ b/src/SWIG_files/wrapper/TopOpeBRep.i
@@ -50,15 +50,14 @@ https://dev.opencascade.org/doc/occt-7.7.0/refman/html/package_topopebrep.html"
 #include<TopOpeBRepDS_module.hxx>
 #include<TopoDS_module.hxx>
 #include<TopOpeBRepTool_module.hxx>
-#include<Geom2dAdaptor_module.hxx>
 #include<TCollection_module.hxx>
 #include<Bnd_module.hxx>
-#include<BRepAdaptor_module.hxx>
 #include<TopAbs_module.hxx>
 #include<gp_module.hxx>
 #include<TopTools_module.hxx>
 #include<Geom2d_module.hxx>
 #include<Geom_module.hxx>
+#include<BRepAdaptor_module.hxx>
 #include<TColStd_module.hxx>
 #include<TCollection_module.hxx>
 #include<TopLoc_module.hxx>
@@ -88,15 +87,14 @@ https://dev.opencascade.org/doc/occt-7.7.0/refman/html/package_topopebrep.html"
 %import TopOpeBRepDS.i
 %import TopoDS.i
 %import TopOpeBRepTool.i
-%import Geom2dAdaptor.i
 %import TCollection.i
 %import Bnd.i
-%import BRepAdaptor.i
 %import TopAbs.i
 %import gp.i
 %import TopTools.i
 %import Geom2d.i
 %import Geom.i
+%import BRepAdaptor.i
 
 %pythoncode {
 from enum import IntEnum
@@ -893,7 +891,7 @@ Description
 -----------
 No available documentation.
 ") Curve;
-		const Geom2dAdaptor_Curve & Curve(const Standard_Integer Index);
+		Geom2dAdaptor_Curve Curve(const Standard_Integer Index);
 
 		/****************** Dimension ******************/
 		/**** md5 signature: bffc3d9b070e68685a6f532f4d09951a ****/
@@ -1276,7 +1274,7 @@ Description
 -----------
 No available documentation.
 ") Surface;
-		const BRepAdaptor_Surface & Surface(const Standard_Integer Index);
+		BRepAdaptor_Surface Surface(const Standard_Integer Index);
 
 		/****************** SurfacesSameOriented ******************/
 		/**** md5 signature: 5a73f090b826c38dcc30efe0cb99df4e ****/
@@ -3290,7 +3288,7 @@ Description
 -----------
 No available documentation.
 ") Curve;
-		const Geom2dAdaptor_Curve & Curve(const Standard_Integer I);
+		Geom2dAdaptor_Curve Curve(const Standard_Integer I);
 
 		/****************** Domain ******************/
 		/**** md5 signature: 61e11500fa994362ee7273166a3b2637 ****/
diff --git a/src/SWIG_files/wrapper/TopOpeBRep.pyi b/src/SWIG_files/wrapper/TopOpeBRep.pyi
index 7657538e1..7ebbf18c5 100644
--- a/src/SWIG_files/wrapper/TopOpeBRep.pyi
+++ b/src/SWIG_files/wrapper/TopOpeBRep.pyi
@@ -10,15 +10,14 @@ from OCC.Core.IntPatch import *
 from OCC.Core.TopOpeBRepDS import *
 from OCC.Core.TopoDS import *
 from OCC.Core.TopOpeBRepTool import *
-from OCC.Core.Geom2dAdaptor import *
 from OCC.Core.TCollection import *
 from OCC.Core.Bnd import *
-from OCC.Core.BRepAdaptor import *
 from OCC.Core.TopAbs import *
 from OCC.Core.gp import *
 from OCC.Core.TopTools import *
 from OCC.Core.Geom2d import *
 from OCC.Core.Geom import *
+from OCC.Core.BRepAdaptor import *
 
 TopOpeBRep_PEdgesIntersector = NewType("TopOpeBRep_PEdgesIntersector", TopOpeBRep_EdgesIntersector)
 TopOpeBRep_PFacesFiller = NewType("TopOpeBRep_PFacesFiller", TopOpeBRep_FacesFiller)
diff --git a/src/SWIG_files/wrapper/TopOpeBRepDS.i b/src/SWIG_files/wrapper/TopOpeBRepDS.i
index f8a89de6e..96679a0fe 100644
--- a/src/SWIG_files/wrapper/TopOpeBRepDS.i
+++ b/src/SWIG_files/wrapper/TopOpeBRepDS.i
@@ -2403,7 +2403,7 @@ Description
 -----------
 No available documentation.
 ") Curve;
-		const TopOpeBRepDS_Curve & Curve();
+		TopOpeBRepDS_Curve Curve();
 
 		/****************** Curve ******************/
 		/**** md5 signature: f53cb61e2b022b236aa70ffbec11ac31 ****/
@@ -2421,7 +2421,7 @@ Description
 -----------
 No available documentation.
 ") Curve;
-		const TopOpeBRepDS_Curve & Curve(const Standard_Integer I);
+		TopOpeBRepDS_Curve Curve(const Standard_Integer I);
 
 		/****************** Index ******************/
 		/**** md5 signature: 407d80ef3037d55996765198adea3908 ****/
@@ -3247,7 +3247,7 @@ Description
 -----------
 Returns the curve of index <i>.
 ") Curve;
-		const TopOpeBRepDS_Curve & Curve(const Standard_Integer I);
+		TopOpeBRepDS_Curve Curve(const Standard_Integer I);
 
 		/****************** CurveInterferences ******************/
 		/**** md5 signature: 0ae607216e1128d734c938cbcd7a9b19 ****/
@@ -4222,7 +4222,7 @@ Description
 -----------
 Returns the surface of index <i>.
 ") Surface;
-		const TopOpeBRepDS_Surface & Surface(const Standard_Integer I);
+		TopOpeBRepDS_Surface Surface(const Standard_Integer I);
 
 		/****************** SurfaceInterferences ******************/
 		/**** md5 signature: 732d2b836e88fd503fa982b880b0a0eb ****/
@@ -7733,7 +7733,7 @@ Description
 -----------
 No available documentation.
 ") Surface;
-		const TopOpeBRepDS_Surface & Surface();
+		TopOpeBRepDS_Surface Surface();
 
 		/****************** Surface ******************/
 		/**** md5 signature: 0fa398e726541e213860705286d521cb ****/
@@ -7751,7 +7751,7 @@ Description
 -----------
 No available documentation.
 ") Surface;
-		const TopOpeBRepDS_Surface & Surface(const Standard_Integer I);
+		TopOpeBRepDS_Surface Surface(const Standard_Integer I);
 
 };
 
diff --git a/src/SWIG_files/wrapper/TopOpeBRepTool.i b/src/SWIG_files/wrapper/TopOpeBRepTool.i
index 65273430d..bf8b533da 100644
--- a/src/SWIG_files/wrapper/TopOpeBRepTool.i
+++ b/src/SWIG_files/wrapper/TopOpeBRepTool.i
@@ -50,7 +50,6 @@ https://dev.opencascade.org/doc/occt-7.7.0/refman/html/package_topopebreptool.ht
 #include<Bnd_module.hxx>
 #include<TColStd_module.hxx>
 #include<Geom2d_module.hxx>
-#include<GeomAdaptor_module.hxx>
 #include<Geom_module.hxx>
 #include<TColgp_module.hxx>
 #include<gp_module.hxx>
@@ -88,7 +87,6 @@ https://dev.opencascade.org/doc/occt-7.7.0/refman/html/package_topopebreptool.ht
 %import Bnd.i
 %import TColStd.i
 %import Geom2d.i
-%import GeomAdaptor.i
 %import Geom.i
 %import TColgp.i
 %import gp.i
@@ -1211,7 +1209,7 @@ Description
 -----------
 No available documentation.
 ") GASref;
-		const GeomAdaptor_Surface & GASref();
+		GeomAdaptor_Surface GASref();
 
 		/****************** GetnewS ******************/
 		/**** md5 signature: 1028993659225ad8087e09930d5f8d97 ****/
diff --git a/src/SWIG_files/wrapper/TopOpeBRepTool.pyi b/src/SWIG_files/wrapper/TopOpeBRepTool.pyi
index 1352870b9..9322f5e62 100644
--- a/src/SWIG_files/wrapper/TopOpeBRepTool.pyi
+++ b/src/SWIG_files/wrapper/TopOpeBRepTool.pyi
@@ -10,7 +10,6 @@ from OCC.Core.TopAbs import *
 from OCC.Core.Bnd import *
 from OCC.Core.TColStd import *
 from OCC.Core.Geom2d import *
-from OCC.Core.GeomAdaptor import *
 from OCC.Core.Geom import *
 from OCC.Core.TColgp import *
 from OCC.Core.gp import *
diff --git a/src/SWIG_files/wrapper/generator.log b/src/SWIG_files/wrapper/generator.log
index 41cdbcaa3..eec6989f9 100644
--- a/src/SWIG_files/wrapper/generator.log
+++ b/src/SWIG_files/wrapper/generator.log
@@ -8,7 +8,7 @@ operating system : Linux 64bit 6.5.0-35-generic
 
 occt version targeted : 7.8.1
 
-date : 2024-05-22 09:11:26.666677
+date : 2024-05-22 13:48:56.569965
 ############################
 
 [INFO ]  Processing toolkit TKBO ===
@@ -98,6 +98,8 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Class: BOPDS_Curve
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const IntTools_Curve & wrapped as a copy
+[WARNI]  const IntTools_Curve & wrapped as a copy
 [INFO ]  Class: BOPDS_DS
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Class: BOPDS_FaceInfo
@@ -125,6 +127,8 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  Class: BOPDS_InterfEZ
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Class: BOPDS_InterfFF
+[WARNI]  const BOPDS_VectorOfCurve & wrapped as a copy
+[WARNI]  const BOPDS_VectorOfCurve & wrapped as a copy
 [INFO ]  Class: BOPDS_InterfFZ
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Class: BOPDS_InterfVE
@@ -189,6 +193,8 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  Class: IntTools_FClass2d
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Class: IntTools_FaceFace
+[WARNI]  const IntTools_SequenceOfCurves & wrapped as a copy
+[WARNI]  const IntTools_SequenceOfCurves & wrapped as a copy
 [INFO ]  Class: IntTools_MarkedRangeSet
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Class: IntTools_PntOn2Faces
@@ -205,6 +211,10 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]      operand = cannot be wrapped
 [INFO ]  Class: IntTools_SurfaceRangeSample
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const IntTools_CurveRangeSample & wrapped as a copy
+[WARNI]  const IntTools_CurveRangeSample & wrapped as a copy
+[WARNI]  const IntTools_CurveRangeSample & wrapped as a copy
+[WARNI]  const IntTools_CurveRangeSample & wrapped as a copy
 [INFO ]      operand = cannot be wrapped
 [INFO ]  Class: IntTools_Tools
 [INFO ]  Class: IntTools_TopolTool
@@ -222,6 +232,8 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]      Class BRep_CurveRepresentation is abstract, using %nodefaultctor.
 [INFO ]  Class: BRep_PointRepresentation
 [INFO ]  Class: BRep_TEdge
+[WARNI]  const BRep_ListOfCurveRepresentation & wrapped as a copy
+[WARNI]  const BRep_ListOfCurveRepresentation & wrapped as a copy
 [INFO ]  Class: BRep_TFace
 [INFO ]  Class: BRep_TVertex
 [INFO ]  Class: BRep_Tool
@@ -246,10 +258,16 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Class: BRepAdaptor_Curve
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const GeomAdaptor_Curve & wrapped as a copy
+[WARNI]  const GeomAdaptor_Curve & wrapped as a copy
+[WARNI]  const Adaptor3d_CurveOnSurface & wrapped as a copy
+[WARNI]  const Adaptor3d_CurveOnSurface & wrapped as a copy
 [INFO ]  Class: BRepAdaptor_Curve2d
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Class: BRepAdaptor_Surface
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const GeomAdaptor_Surface & wrapped as a copy
+[WARNI]  const GeomAdaptor_Surface & wrapped as a copy
 [INFO ]  ## Processing module BRepLProp
 [INFO ]  Class: BRepLProp
 [INFO ]  Class: BRepLProp_CLProps
@@ -584,6 +602,10 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  Class: TopOpeBRep_DSFiller
 [INFO ]  Class: TopOpeBRep_EdgesFiller
 [INFO ]  Class: TopOpeBRep_EdgesIntersector
+[WARNI]  const Geom2dAdaptor_Curve & wrapped as a copy
+[WARNI]  const Geom2dAdaptor_Curve & wrapped as a copy
+[WARNI]  const BRepAdaptor_Surface & wrapped as a copy
+[WARNI]  const BRepAdaptor_Surface & wrapped as a copy
 [INFO ]  Class: TopOpeBRep_FFDumper
 [INFO ]  Class: TopOpeBRep_FFTransitionTool
 [INFO ]  Class: TopOpeBRep_FaceEdgeFiller
@@ -592,6 +614,8 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  Class: TopOpeBRep_FacesIntersector
 [INFO ]  Class: TopOpeBRep_GeomTool
 [INFO ]  Class: TopOpeBRep_Hctxee2d
+[WARNI]  const Geom2dAdaptor_Curve & wrapped as a copy
+[WARNI]  const Geom2dAdaptor_Curve & wrapped as a copy
 [INFO ]  Class: TopOpeBRep_Hctxff2d
 [INFO ]  Class: TopOpeBRep_LineInter
 [INFO ]  Class: TopOpeBRep_Point2d
@@ -697,7 +721,15 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Class: TopOpeBRepDS_CurveExplorer
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const TopOpeBRepDS_Curve & wrapped as a copy
+[WARNI]  const TopOpeBRepDS_Curve & wrapped as a copy
+[WARNI]  const TopOpeBRepDS_Curve & wrapped as a copy
+[WARNI]  const TopOpeBRepDS_Curve & wrapped as a copy
 [INFO ]  Class: TopOpeBRepDS_DataStructure
+[WARNI]  const TopOpeBRepDS_Curve & wrapped as a copy
+[WARNI]  const TopOpeBRepDS_Curve & wrapped as a copy
+[WARNI]  const TopOpeBRepDS_Surface & wrapped as a copy
+[WARNI]  const TopOpeBRepDS_Surface & wrapped as a copy
 [INFO ]  Class: TopOpeBRepDS_Dumper
 [INFO ]  Class: TopOpeBRepDS_EIR
 [INFO ]  Class: TopOpeBRepDS_Edge3dInterferenceTool
@@ -738,6 +770,10 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]      operand = cannot be wrapped
 [INFO ]  Class: TopOpeBRepDS_SurfaceExplorer
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const TopOpeBRepDS_Surface & wrapped as a copy
+[WARNI]  const TopOpeBRepDS_Surface & wrapped as a copy
+[WARNI]  const TopOpeBRepDS_Surface & wrapped as a copy
+[WARNI]  const TopOpeBRepDS_Surface & wrapped as a copy
 [INFO ]  Class: TopOpeBRepDS_TKI
 [INFO ]  Enum passed by reference: TopOpeBRepDS_Kind &K changed to TopOpeBRepDS_Kind &OutValue
 [INFO ]  Enum passed by reference: TopOpeBRepDS_Kind & K changed to TopOpeBRepDS_Kind &OutValue
@@ -806,6 +842,8 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  Class: TopOpeBRepTool_CLASSI
 [INFO ]  Class: TopOpeBRepTool_CORRISO
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const GeomAdaptor_Surface & wrapped as a copy
+[WARNI]  const GeomAdaptor_Surface & wrapped as a copy
 [INFO ]  Class: TopOpeBRepTool_CurveTool
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Class: TopOpeBRepTool_FuseEdges
@@ -999,6 +1037,8 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  Class: LocOpe_LinearForm
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Class: LocOpe_Pipe
+[WARNI]  const TColGeom_SequenceOfCurve & wrapped as a copy
+[WARNI]  const TColGeom_SequenceOfCurve & wrapped as a copy
 [INFO ]  Class: LocOpe_PntFace
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Class: LocOpe_Prism
@@ -1152,6 +1192,8 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  Class: ChFiDS_Regul
 [INFO ]  Class: ChFiDS_Spine
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const BRepAdaptor_Curve & wrapped as a copy
+[WARNI]  const BRepAdaptor_Curve & wrapped as a copy
 [INFO ]  Class: ChFiDS_Stripe
 [INFO ]  Class: ChFiDS_StripeMap
 [INFO ]      operand () cannot be wrapped
@@ -1654,8 +1696,12 @@ date : 2024-05-22 09:11:26.666677
 [WARNI]      [TypeHint] Skipping unknown type int,Geom2dHatch_Element, int,Geom2dHatch not in module list
 [INFO ]  Class: Geom2dHatch_Classifier
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const Geom2dAdaptor_Curve & wrapped as a copy
+[WARNI]  const Geom2dAdaptor_Curve & wrapped as a copy
 [INFO ]  Class: Geom2dHatch_Element
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const Geom2dAdaptor_Curve & wrapped as a copy
+[WARNI]  const Geom2dAdaptor_Curve & wrapped as a copy
 [INFO ]  Class: Geom2dHatch_Elements
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Enum passed by reference: TopAbs_Orientation &Or changed to TopAbs_Orientation &OutValue
@@ -1667,8 +1713,14 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  Class: Geom2dHatch_Hatcher
 [INFO ]      explicitly excluded method Geom2dHatch_Hatcher::ec0624071ec7da54b3d9dacc7bcb05f9
 [INFO ]      explicitly excluded method Geom2dHatch_Hatcher::ac32eb89cd1bb24e500241057a62dcef
+[WARNI]  const Geom2dAdaptor_Curve & wrapped as a copy
+[WARNI]  const Geom2dAdaptor_Curve & wrapped as a copy
+[WARNI]  const Geom2dAdaptor_Curve & wrapped as a copy
+[WARNI]  const Geom2dAdaptor_Curve & wrapped as a copy
 [INFO ]  Class: Geom2dHatch_Hatching
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const Geom2dAdaptor_Curve & wrapped as a copy
+[WARNI]  const Geom2dAdaptor_Curve & wrapped as a copy
 [INFO ]  Class: Geom2dHatch_Intersector
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  ## Processing module Geom2dInt
@@ -1826,6 +1878,8 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  Class: GeomInt_BSpParFunctionOfMyBSplGradientOfTheComputeLineOfWLApprox
 [INFO ]  Class: GeomInt_BSpParLeastSquareOfMyBSplGradientOfTheComputeLineOfWLApprox
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
 [INFO ]  Class: GeomInt_Gradient_BFGSOfMyGradientOfTheComputeLineBezierOfWLApprox
 [INFO ]  Class: GeomInt_Gradient_BFGSOfMyGradientbisOfTheComputeLineOfWLApprox
 [INFO ]  Class: GeomInt_IntSS
@@ -1839,11 +1893,19 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  Class: GeomInt_MyGradientOfTheComputeLineBezierOfWLApprox
 [INFO ]  Class: GeomInt_MyGradientbisOfTheComputeLineOfWLApprox
 [INFO ]  Class: GeomInt_ParFunctionOfMyGradientOfTheComputeLineBezierOfWLApprox
+[WARNI]  const AppParCurves_MultiCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiCurve & wrapped as a copy
 [INFO ]  Class: GeomInt_ParFunctionOfMyGradientbisOfTheComputeLineOfWLApprox
+[WARNI]  const AppParCurves_MultiCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiCurve & wrapped as a copy
 [INFO ]  Class: GeomInt_ParLeastSquareOfMyGradientOfTheComputeLineBezierOfWLApprox
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
 [INFO ]  Class: GeomInt_ParLeastSquareOfMyGradientbisOfTheComputeLineOfWLApprox
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
 [INFO ]  Class: GeomInt_ParameterAndOrientation
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Class: GeomInt_ResConstraintOfMyGradientOfTheComputeLineBezierOfWLApprox
@@ -1852,8 +1914,14 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]      explicitly excluded method GeomInt_ResConstraintOfMyGradientbisOfTheComputeLineOfWLApprox::585075c65a8681dedf24240dbb90f7f4
 [INFO ]  Class: GeomInt_TheComputeLineBezierOfWLApprox
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiCurve & wrapped as a copy
 [INFO ]  Class: GeomInt_TheComputeLineOfWLApprox
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
 [INFO ]  Class: GeomInt_TheFunctionOfTheInt2SOfThePrmPrmSvSurfacesOfWLApprox
 [INFO ]  Class: GeomInt_TheImpPrmSvSurfacesOfWLApprox
 [INFO ]      explicitly excluded method GeomInt_TheImpPrmSvSurfacesOfWLApprox::b41c1a9755d3e00fb915462d51a8d0c5
@@ -1923,6 +1991,10 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  ## Processing module IntCurveSurface
 [INFO ]  Enum: IntCurveSurface_TransitionOnCurve
 [INFO ]  Class: IntCurveSurface_Intersection
+[WARNI]  const IntCurveSurface_IntersectionPoint & wrapped as a copy
+[WARNI]  const IntCurveSurface_IntersectionPoint & wrapped as a copy
+[WARNI]  const IntCurveSurface_IntersectionSegment & wrapped as a copy
+[WARNI]  const IntCurveSurface_IntersectionSegment & wrapped as a copy
 [INFO ]  Class: IntCurveSurface_IntersectionPoint
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Enum passed by reference: IntCurveSurface_TransitionOnCurve &TrCurv changed to IntCurveSurface_TransitionOnCurve &OutValue
@@ -1930,6 +2002,10 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  Enum passed by reference: IntCurveSurface_TransitionOnCurve & TrCurv changed to IntCurveSurface_TransitionOnCurve &OutValue
 [INFO ]  Class: IntCurveSurface_IntersectionSegment
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const IntCurveSurface_IntersectionPoint & wrapped as a copy
+[WARNI]  const IntCurveSurface_IntersectionPoint & wrapped as a copy
+[WARNI]  const IntCurveSurface_IntersectionPoint & wrapped as a copy
+[WARNI]  const IntCurveSurface_IntersectionPoint & wrapped as a copy
 [INFO ]  Class: IntCurveSurface_TheCSFunctionOfHInter
 [INFO ]  Class: IntCurveSurface_TheExactHInter
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
@@ -2000,6 +2076,8 @@ date : 2024-05-22 09:11:26.666677
 [WARNI]      [TypeHint] Skipping type NCollection_List<gp_Pnt>, seems to be a template
 [INFO ]  Class: IntPatch_ALine
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const IntAna_Curve & wrapped as a copy
+[WARNI]  const IntAna_Curve & wrapped as a copy
 [INFO ]  Class: IntPatch_GLine
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Class: IntPatch_PointLine
@@ -2324,16 +2402,26 @@ date : 2024-05-22 09:11:26.666677
 [WARNI]      [TypeHint] Skipping type const, should contain _
 [WARNI]      [TypeHint] Skipping type NCollection_Array1<gp_Pnt2d>, seems to be a template
 [INFO ]  Class: AppCont_LeastSquare
+[WARNI]  const AppParCurves_MultiCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiCurve & wrapped as a copy
 [INFO ]  ## Processing module AppDef
 [INFO ]  Found HARRAY1 definitionAppDef_HArray1OfMultiPointConstraint: AppDef_Array1OfMultiPointConstraint
 [INFO ]  Class: AppDef_BSpGradient_BFGSOfMyBSplGradientOfBSplineCompute
 [INFO ]  Class: AppDef_BSpParFunctionOfMyBSplGradientOfBSplineCompute
 [INFO ]  Class: AppDef_BSpParLeastSquareOfMyBSplGradientOfBSplineCompute
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
 [INFO ]  Class: AppDef_BSplineCompute
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
 [INFO ]  Class: AppDef_Compute
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiCurve & wrapped as a copy
 [INFO ]  Class: AppDef_Gradient_BFGSOfMyGradientOfCompute
 [INFO ]  Class: AppDef_Gradient_BFGSOfMyGradientbisOfBSplineCompute
 [INFO ]  Class: AppDef_Gradient_BFGSOfTheGradient
@@ -2348,14 +2436,26 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  Class: AppDef_MyGradientbisOfBSplineCompute
 [INFO ]  Class: AppDef_MyLineTool
 [INFO ]  Class: AppDef_ParFunctionOfMyGradientOfCompute
+[WARNI]  const AppParCurves_MultiCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiCurve & wrapped as a copy
 [INFO ]  Class: AppDef_ParFunctionOfMyGradientbisOfBSplineCompute
+[WARNI]  const AppParCurves_MultiCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiCurve & wrapped as a copy
 [INFO ]  Class: AppDef_ParFunctionOfTheGradient
+[WARNI]  const AppParCurves_MultiCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiCurve & wrapped as a copy
 [INFO ]  Class: AppDef_ParLeastSquareOfMyGradientOfCompute
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
 [INFO ]  Class: AppDef_ParLeastSquareOfMyGradientbisOfBSplineCompute
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
 [INFO ]  Class: AppDef_ParLeastSquareOfTheGradient
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
 [INFO ]  Class: AppDef_ResConstraintOfMyGradientOfCompute
 [INFO ]      explicitly excluded method AppDef_ResConstraintOfMyGradientOfCompute::585075c65a8681dedf24240dbb90f7f4
 [INFO ]  Class: AppDef_ResConstraintOfMyGradientbisOfBSplineCompute
@@ -2365,9 +2465,13 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  Class: AppDef_SmoothCriterion
 [INFO ]      Class AppDef_SmoothCriterion is abstract, using %nodefaultctor.
 [INFO ]  Class: AppDef_TheFunction
+[WARNI]  const AppParCurves_MultiCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiCurve & wrapped as a copy
 [INFO ]  Class: AppDef_TheGradient
 [INFO ]  Class: AppDef_TheLeastSquares
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
 [INFO ]  Class: AppDef_TheResol
 [INFO ]      explicitly excluded method AppDef_TheResol::585075c65a8681dedf24240dbb90f7f4
 [INFO ]  Class: AppDef_Variational
@@ -2384,6 +2488,8 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Class: AppParCurves_MultiCurve
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const AppParCurves_MultiPoint & wrapped as a copy
+[WARNI]  const AppParCurves_MultiPoint & wrapped as a copy
 [INFO ]  Class: AppParCurves_MultiPoint
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Class: AppParCurves_MultiBSpCurve
@@ -2408,6 +2514,10 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  Class: Approx_FitAndDivide2d
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Class: Approx_MCurvesToBSpCurve
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
 [INFO ]  Class: Approx_SameParameter
 [INFO ]      Wrap nested class Approx_SameParameter::Approx_SameParameter_Data
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
@@ -2679,6 +2789,8 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  Class: Geom2dConvert
 [INFO ]  Class: Geom2dConvert_ApproxArcsSegments
 [INFO ]  Enum: Status
+[WARNI]  const TColGeom2d_SequenceOfCurve & wrapped as a copy
+[WARNI]  const TColGeom2d_SequenceOfCurve & wrapped as a copy
 [INFO ]  Class: Geom2dConvert_ApproxCurve
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Class: Geom2dConvert_BSplineCurveKnotSplitting
@@ -2752,6 +2864,8 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Class: IntAna_IntQuadQuad
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const IntAna_Curve & wrapped as a copy
+[WARNI]  const IntAna_Curve & wrapped as a copy
 [INFO ]  Class: IntAna_QuadQuadGeo
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Class: IntAna_Quadric
@@ -2978,6 +3092,8 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Class: HLRBRep_CLPropsATool
 [INFO ]  Class: HLRBRep_Curve
+[WARNI]  const BRepAdaptor_Curve & wrapped as a copy
+[WARNI]  const BRepAdaptor_Curve & wrapped as a copy
 [INFO ]  Class: HLRBRep_CurveTool
 [INFO ]  Class: HLRBRep_Data
 [INFO ]  Enum passed by reference: TopAbs_State &stbef changed to TopAbs_State &OutValue
@@ -2989,6 +3105,8 @@ date : 2024-05-22 09:11:26.666677
 [WARNI]      [TypeHint] Skip type HLRAlgo_EdgesBlock::MinMaxIndices, because of trailing :
 [INFO ]  Class: HLRBRep_EdgeBuilder
 [INFO ]  Class: HLRBRep_EdgeData
+[WARNI]  const HLRBRep_Curve & wrapped as a copy
+[WARNI]  const HLRBRep_Curve & wrapped as a copy
 [WARNI]      [TypeHint] Skip type HLRAlgo_EdgesBlock::MinMaxIndices, because of trailing :
 [WARNI]      [TypeHint] Skip type HLRAlgo_EdgesBlock::MinMaxIndices, because of trailing :
 [INFO ]  Class: HLRBRep_EdgeFaceTool
@@ -3005,6 +3123,10 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  Class: HLRBRep_InternalAlgo
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Class: HLRBRep_Intersector
+[WARNI]  const IntCurveSurface_IntersectionPoint & wrapped as a copy
+[WARNI]  const IntCurveSurface_IntersectionPoint & wrapped as a copy
+[WARNI]  const IntCurveSurface_IntersectionSegment & wrapped as a copy
+[WARNI]  const IntCurveSurface_IntersectionSegment & wrapped as a copy
 [INFO ]  Class: HLRBRep_LineTool
 [INFO ]  Class: HLRBRep_MyImpParToolOfTheIntersectorOfTheIntConicCurveOfCInter
 [INFO ]  Class: HLRBRep_PCLocFOfTheLocateExtPCOfTheProjPCurOfCInter
@@ -4050,11 +4172,17 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  Class: BRepMeshData_Edge
 [INFO ]      explicitly excluded method BRepMeshData_Edge::e8d6738845f91c92210ce790a49e03f3
 [INFO ]      explicitly excluded method BRepMeshData_Edge::ff61b2da6dc7f21e13dbd3b2176f4bc2
-[WARNI]      [TypeHint] Skipping type virtual const IMeshData::IPCurveHandle &, should contain _
+[WARNI]  const IMeshData::IPCurveHandle & wrapped as a copy
+[WARNI]  const IMeshData::IPCurveHandle & wrapped as a copy
+[WARNI]      [TypeHint] Skipping type virtual IMeshData::IPCurveHandle, should contain _
 [WARNI]      [TypeHint] Skipping type const IMeshData::IFacePtr &, should contain _
-[WARNI]      [TypeHint] Skipping type virtual const IMeshData::IPCurveHandle &, should contain _
+[WARNI]  const IMeshData::IPCurveHandle & wrapped as a copy
+[WARNI]  const IMeshData::IPCurveHandle & wrapped as a copy
+[WARNI]      [TypeHint] Skipping type virtual IMeshData::IPCurveHandle, should contain _
 [WARNI]      [TypeHint] Skipping type const IMeshData::IFacePtr &, should contain _
-[WARNI]      [TypeHint] Skipping type virtual const IMeshData::IPCurveHandle &, should contain _
+[WARNI]  const IMeshData::IPCurveHandle & wrapped as a copy
+[WARNI]  const IMeshData::IPCurveHandle & wrapped as a copy
+[WARNI]      [TypeHint] Skipping type virtual IMeshData::IPCurveHandle, should contain _
 [INFO ]  Class: BRepMeshData_Face
 [INFO ]      explicitly excluded method BRepMeshData_Face::fcdc6ed44a3e8b0d569e6091846a0dcb
 [INFO ]      explicitly excluded method BRepMeshData_Face::1e5346ee7136cd72652bc15beb720ddd
@@ -4140,12 +4268,20 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  Class: IMeshData_TessellatedShape
 [INFO ]  Class: IMeshData_Edge
 [INFO ]      Class IMeshData_Edge is abstract, using %nodefaultctor.
-[WARNI]      [TypeHint] Skipping type virtual const IMeshData::IPCurveHandle &, should contain _
+[WARNI]  const IMeshData::IPCurveHandle & wrapped as a copy
+[WARNI]  const IMeshData::IPCurveHandle & wrapped as a copy
+[WARNI]      [TypeHint] Skipping type virtual IMeshData::IPCurveHandle, should contain _
 [WARNI]      [TypeHint] Skipping type const IMeshData::IFacePtr &, should contain _
-[WARNI]      [TypeHint] Skipping type const IMeshData::ICurveHandle &, should contain _
-[WARNI]      [TypeHint] Skipping type virtual const IMeshData::IPCurveHandle &, should contain _
+[WARNI]  const IMeshData::ICurveHandle & wrapped as a copy
+[WARNI]  const IMeshData::ICurveHandle & wrapped as a copy
+[WARNI]      [TypeHint] Skipping type IMeshData::ICurveHandle, should contain _
+[WARNI]  const IMeshData::IPCurveHandle & wrapped as a copy
+[WARNI]  const IMeshData::IPCurveHandle & wrapped as a copy
+[WARNI]      [TypeHint] Skipping type virtual IMeshData::IPCurveHandle, should contain _
 [WARNI]      [TypeHint] Skipping type const IMeshData::IFacePtr &, should contain _
-[WARNI]      [TypeHint] Skipping type virtual const IMeshData::IPCurveHandle &, should contain _
+[WARNI]  const IMeshData::IPCurveHandle & wrapped as a copy
+[WARNI]  const IMeshData::IPCurveHandle & wrapped as a copy
+[WARNI]      [TypeHint] Skipping type virtual IMeshData::IPCurveHandle, should contain _
 [WARNI]      [TypeHint] Skipping type const IMeshData::ICurveHandle &, should contain _
 [INFO ]  Class: IMeshData_Face
 [INFO ]      Class IMeshData_Face is abstract, using %nodefaultctor.
@@ -7248,12 +7384,16 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]      explicitly excluded method BRepApprox_Approx::feaea2fa9dfb02e45ec734de2587dd81
 [INFO ]      explicitly excluded method BRepApprox_Approx::6f6fdc0a69d4cc86951ba71e2faf2a3d
 [INFO ]      explicitly excluded method BRepApprox_Approx::c04b01412cba7220c024b5eb4532697f
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
 [INFO ]  Class: BRepApprox_ApproxLine
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  Class: BRepApprox_BSpGradient_BFGSOfMyBSplGradientOfTheComputeLineOfApprox
 [INFO ]  Class: BRepApprox_BSpParFunctionOfMyBSplGradientOfTheComputeLineOfApprox
 [INFO ]  Class: BRepApprox_BSpParLeastSquareOfMyBSplGradientOfTheComputeLineOfApprox
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
 [INFO ]  Class: BRepApprox_Gradient_BFGSOfMyGradientOfTheComputeLineBezierOfApprox
 [INFO ]  Class: BRepApprox_Gradient_BFGSOfMyGradientbisOfTheComputeLineOfApprox
 [INFO ]  Class: BRepApprox_MyBSplGradientOfTheComputeLineOfApprox
@@ -7261,11 +7401,19 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  Class: BRepApprox_MyGradientOfTheComputeLineBezierOfApprox
 [INFO ]  Class: BRepApprox_MyGradientbisOfTheComputeLineOfApprox
 [INFO ]  Class: BRepApprox_ParFunctionOfMyGradientOfTheComputeLineBezierOfApprox
+[WARNI]  const AppParCurves_MultiCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiCurve & wrapped as a copy
 [INFO ]  Class: BRepApprox_ParFunctionOfMyGradientbisOfTheComputeLineOfApprox
+[WARNI]  const AppParCurves_MultiCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiCurve & wrapped as a copy
 [INFO ]  Class: BRepApprox_ParLeastSquareOfMyGradientOfTheComputeLineBezierOfApprox
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
 [INFO ]  Class: BRepApprox_ParLeastSquareOfMyGradientbisOfTheComputeLineOfApprox
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
 [INFO ]  Class: BRepApprox_ResConstraintOfMyGradientOfTheComputeLineBezierOfApprox
 [INFO ]      explicitly excluded method BRepApprox_ResConstraintOfMyGradientOfTheComputeLineBezierOfApprox::585075c65a8681dedf24240dbb90f7f4
 [INFO ]  Class: BRepApprox_ResConstraintOfMyGradientbisOfTheComputeLineOfApprox
@@ -7273,9 +7421,19 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  Class: BRepApprox_SurfaceTool
 [INFO ]  Class: BRepApprox_TheComputeLineBezierOfApprox
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiCurve & wrapped as a copy
 [INFO ]  Class: BRepApprox_TheComputeLineOfApprox
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
+[WARNI]  const AppParCurves_MultiBSpCurve & wrapped as a copy
 [INFO ]  Class: BRepApprox_TheFunctionOfTheInt2SOfThePrmPrmSvSurfacesOfApprox
+[WARNI]  const BRepAdaptor_Surface & wrapped as a copy
+[WARNI]  const BRepAdaptor_Surface & wrapped as a copy
+[WARNI]  const BRepAdaptor_Surface & wrapped as a copy
+[WARNI]  const BRepAdaptor_Surface & wrapped as a copy
 [INFO ]  Enum passed by reference: IntImp_ConstIsoparametric &BestChoix changed to IntImp_ConstIsoparametric &OutValue
 [INFO ]  Enum passed by reference: IntImp_ConstIsoparametric & BestChoix changed to IntImp_ConstIsoparametric &OutValue
 [INFO ]  Enum passed by reference: IntImp_ConstIsoparametric & BestChoix changed to IntImp_ConstIsoparametric &OutValue
@@ -7290,6 +7448,8 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  Class: BRepApprox_ThePrmPrmSvSurfacesOfApprox
 [INFO ]  Class: BRepApprox_TheZerImpFuncOfTheImpPrmSvSurfacesOfApprox
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const BRepAdaptor_Surface & wrapped as a copy
+[WARNI]  const BRepAdaptor_Surface & wrapped as a copy
 [INFO ]  ## Processing module BRepBndLib
 [INFO ]  Class: BRepBndLib
 [INFO ]  ## Processing module BRepBuilderAPI
@@ -7518,6 +7678,8 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  Class: BRepMAT2d_BisectingLocus
 [INFO ]  Class: BRepMAT2d_Explorer
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const TColGeom2d_SequenceOfCurve & wrapped as a copy
+[WARNI]  const TColGeom2d_SequenceOfCurve & wrapped as a copy
 [INFO ]  Class: BRepMAT2d_LinkTopoBilo
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
 [INFO ]  ## Processing module BRepTopAdaptor
@@ -7988,6 +8150,8 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  Class: StdPrs_ToolPoint
 [INFO ]  Class: StdPrs_ToolRFace
 [INFO ]      [TypeHint] More than 1 constructor, @overload decorator needed.
+[WARNI]  const Adaptor2d_Curve2d & wrapped as a copy
+[WARNI]  const Adaptor2d_Curve2d & wrapped as a copy
 [INFO ]  Class: StdPrs_ToolTriangulatedShape
 [INFO ]  Class: StdPrs_ToolVertex
 [INFO ]  Class: StdPrs_WFDeflectionRestrictedFace
@@ -9395,7 +9559,7 @@ date : 2024-05-22 09:11:26.666677
 [INFO ]  Class: UnitsMethods
 [INFO ]  
 #################################################
-SWIG interface file generation completed in 17.55s
+SWIG interface file generation completed in 17.47s
 #################################################
 
 [INFO ]  Number of classes: 4743


Test patch:
diff --git a/test/test_core_wrapper_features.py b/test/test_core_wrapper_features.py
index 21bccce86..9f8274118 100644
--- a/test/test_core_wrapper_features.py
+++ b/test/test_core_wrapper_features.py
@@ -33,6 +33,7 @@
 from OCC.Core.Standard import Standard_Transient
 from OCC.Core.Bnd import Bnd_Box
 from OCC.Core.BRepExtrema import BRepExtrema_ShapeProximity
+from OCC.Core.BRepAdaptor import BRepAdaptor_Surface
 from OCC.Core.BRepClass import BRepClass_FaceExplorer, BRepClass_Edge
 from OCC.Core.BRepOffsetAPI import BRepOffsetAPI_Sewing
 from OCC.Core.BRepBndLib import brepbndlib
@@ -120,8 +121,10 @@
 from OCC.Core.XCAFDoc import XCAFDoc_DocumentTool
 from OCC.Core.TDataStd import TDataStd_Name
 from OCC.Core.STEPCAFControl import STEPCAFControl_Writer
+from OCC.Core.IGESCAFControl import IGESCAFControl_Reader
 from OCC.Core.IFSelect import IFSelect_RetDone
 from OCC.Core.ShapeAnalysis import ShapeAnalysis_FreeBounds
+
 from OCC.Extend.TopologyUtils import TopologyExplorer
 
 
@@ -1026,7 +1029,9 @@ def test_WriteStream(self):
         step_writer.Transfer(the_shape, STEPControl_AsIs)
         result, step_str = step_writer.WriteStream()
         self.assertEqual(result, IFSelect_RetDone)
-        self.assertGreater(len(step_str), 15000) # TODO: length depends on architecture?
+        self.assertGreater(
+            len(step_str), 15000
+        )  # TODO: length depends on architecture?
 
     def test_shape_analysis_free_bounds(self):
         """test special wrapper for ShapeAnalysis::ConnectEdgesToWires"""
@@ -1044,6 +1049,35 @@ def test_shape_analysis_free_bounds(self):
         result = ShapeAnalysis_FreeBounds.ConnectEdgesToWires(edges, 1.0e-7, False)
         self.assertEqual(result.Length(), 1)
 
+    def test_const_ref_return(self):
+        """const byref should be wrapped as copy constructors to prevent memory issues,
+        see issue #1277"""
+
+        def get_bounds(adaptor):
+            return list(adaptor.Surface().BSpline().Bounds())
+
+        a_reader = IGESCAFControl_Reader()
+        iges_filename = os.path.join(".", "test_io", "testfile.igs")
+        if a_reader.ReadFile(iges_filename) != 1:
+            raise ValueError("Can't open IGES file.")
+
+        a_doc = TDocStd_Document("iges")
+        if not a_reader.Transfer(a_doc):
+            raise ValueError("Cannot transfer data from IGES file.")
+
+        shape_tool = XCAFDoc_DocumentTool.ShapeTool(a_doc.Main())
+
+        shp_labels = TDF_LabelSequence()
+        shape_tool.GetShapes(shp_labels)
+
+        shape_label = shp_labels.Value(1)
+        shape = shape_tool.GetShape(shape_label)
+
+        adaptor = BRepAdaptor_Surface(shape)
+        bounds = get_bounds(adaptor)
+        # should returns [0.0, 35.53017372307497, 0.0, 27.81101597164092]
+        self.assertEqual(bounds, [0.0, 35.53017372307497, 0.0, 27.81101597164092])
+
 
 def suite() -> unittest.TestSuite:
     test_suite = unittest.TestSuite()
diff --git a/test/test_io/testfile.igs b/test/test_io/testfile.igs
new file mode 100644
index 000000000..4f50c95ff
--- /dev/null
+++ b/test/test_io/testfile.igs
@@ -0,0 +1,32 @@
+                                                                        S      1
+1H,,1H;,,                                                               G      1
+38HC:\Users\PP\Desktop\testfile.igs,                                    G      2
+26HRhinoceros ( Jul 27 2022 ),31HTrout Lake IGES 012 Jul 27 2022,       G      3
+32,38,6,308,15,                                                         G      4
+,                                                                       G      5
+1.0D0,2,2HMM,1,0.254D0,13H231116.083049,                                G      6
+0.001D0,                                                                G      7
+39.01970722272699D0,                                                    G      8
+,                                                                       G      9
+,                                                                       G     10
+10,0,13H231116.083049;                                                  G     11
+     314       1       0       0       0       0       0       000000200D      1
+     314       0       1       1       0       0       0   COLOR       0D      2
+     406       2       0       0       1       0       0       000000300D      3
+     406       0      -1       1       3       0       0LEVELDEF       0D      4
+     406       3       0       0       0       0       0       000010300D      5
+     406       0       0       1      15       0       0 NAMETXT       0D      6
+     128       4       0       0       1       0       0       000000000D      7
+     128       0      -1       8       8       0       0    test       0D      8
+314,0.0,0.0,0.0,20HRGB(   0,   0,   0 );                         0000001P      1
+406,2,1,7HDefault;                                               0000003P      2
+406,1,4Htest;                                                    0000005P      3
+128,1,1,1,1,0,0,1,0,0,0.0D0,0.0D0,35.53017372307497D0,           0000007P      4
+35.53017372307497D0,0.0D0,0.0D0,27.81101597164092D0,             0000007P      5
+27.81101597164092D0,1.0D0,1.0D0,1.0D0,1.0D0,                     0000007P      6
+0.6478892123989652D0,-1.511404777835494D0,0.0D0,                 0000007P      7
+-17.4713751196072D0,18.99888250379516D0,0.0D0,                   0000007P      8
+22.26938756285151D0,9.955893545296618D0,0.0D0,                   0000007P      9
+1.831971402399674D0,39.01970722272699D0,0.0D0,0.0D0,             0000007P     10
+35.53017372307497D0,0.0D0,27.81101597164092D0,0,1,5;             0000007P     11
+S0000001G0000011D0000008P0000011                                        T      1