From 4b1cd9a18abd8d8e9d1e345fd4ae79de321890e8 Mon Sep 17 00:00:00 2001 From: AU Date: Fri, 31 Jul 2026 11:28:19 +0200 Subject: [PATCH 01/12] Start with OCP8 --- environment.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/environment.yml b/environment.yml index 4608af03b..136b7db35 100644 --- a/environment.yml +++ b/environment.yml @@ -4,8 +4,8 @@ channels: dependencies: - python>=3.11 - ipython -# - cadquery/label/dev::ocp=x.x.x for dev - - ocp=7.9.3.1 + - cadquery/label/dev::ocp=8.0.0.0 +# - ocp=7.9.3.1 - pyparsing>=3.0.0 - sphinx=9.1.0 # - sphinx_rtd_theme=3.1.0 From 4470100934c816fae77939cefe19a4c4215caa1a Mon Sep 17 00:00:00 2001 From: adam-urbanczyk <13981538+adam-urbanczyk@users.noreply.github.com> Date: Fri, 14 Aug 2026 14:47:46 +0200 Subject: [PATCH 02/12] Initial pass --- cadquery/occ_impl/assembly.py | 2 +- cadquery/occ_impl/exporters/assembly.py | 4 ++- cadquery/occ_impl/geom.py | 4 +-- cadquery/occ_impl/importers/assembly.py | 3 +- cadquery/occ_impl/importers/dxf.py | 9 ++++-- cadquery/occ_impl/nurbs.py | 8 ++--- cadquery/occ_impl/shapes.py | 39 ++++++++++++------------- cadquery/occ_impl/solver.py | 2 +- 8 files changed, 38 insertions(+), 33 deletions(-) diff --git a/cadquery/occ_impl/assembly.py b/cadquery/occ_impl/assembly.py index 365374e07..a8805b274 100644 --- a/cadquery/occ_impl/assembly.py +++ b/cadquery/occ_impl/assembly.py @@ -36,7 +36,7 @@ Quantity_TOC_RGB, ) from OCP.BRepAlgoAPI import BRepAlgoAPI_Fuse -from OCP.TopTools import TopTools_ListOfShape +from OCP import List_TopoDS_Shape as TopTools_ListOfShape from OCP.BOPAlgo import BOPAlgo_GlueEnum, BOPAlgo_Builder from OCP.TopoDS import TopoDS_Shape from OCP.gp import gp_EulerSequence diff --git a/cadquery/occ_impl/exporters/assembly.py b/cadquery/occ_impl/exporters/assembly.py index 05f9e8a89..ba2badf4a 100644 --- a/cadquery/occ_impl/exporters/assembly.py +++ b/cadquery/occ_impl/exporters/assembly.py @@ -41,7 +41,9 @@ ) from OCP.PCDM import PCDM_StoreStatus from OCP.RWGltf import RWGltf_CafWriter -from OCP.TColStd import TColStd_IndexedDataMapOfStringString +from OCP import ( + IndexedDataMap_TCollection_AsciiString_TCollection_AsciiString as TColStd_IndexedDataMapOfStringString, +) from OCP.Message import Message_ProgressRange from OCP.Interface import Interface_Static diff --git a/cadquery/occ_impl/geom.py b/cadquery/occ_impl/geom.py index 1a9074c59..b1e03026b 100644 --- a/cadquery/occ_impl/geom.py +++ b/cadquery/occ_impl/geom.py @@ -360,7 +360,7 @@ def _rotate(self, direction: gp_Ax1, angle: float): new = gp_Trsf() new.SetRotation(direction, angle) - self.wrapped = self.wrapped * gp_GTrsf(new) + self.wrapped = self.wrapped.Multiplied(gp_GTrsf(new)) def inverse(self) -> "Matrix": @@ -1135,7 +1135,7 @@ def inverse(self) -> "Location": def __mul__(self, other: "Location") -> "Location": - return Location(self.wrapped * other.wrapped) + return Location(self.wrapped.Multiplied(other.wrapped)) def __pow__(self, exponent: int) -> "Location": diff --git a/cadquery/occ_impl/importers/assembly.py b/cadquery/occ_impl/importers/assembly.py index 98dbc4de7..56ed7e64d 100644 --- a/cadquery/occ_impl/importers/assembly.py +++ b/cadquery/occ_impl/importers/assembly.py @@ -4,7 +4,8 @@ from OCP.TopoDS import TopoDS_Shape from OCP.TCollection import TCollection_ExtendedString from OCP.Quantity import Quantity_ColorRGBA -from OCP.TDF import TDF_Label, TDF_LabelSequence +from OCP.TDF import TDF_Label +from OCP import Sequence_TDS_Label as TDF_LabelSequence from OCP.IFSelect import IFSelect_RetDone from OCP.TDocStd import TDocStd_Document from OCP.TDataStd import TDataStd_Name, TDataStd_TreeNode diff --git a/cadquery/occ_impl/importers/dxf.py b/cadquery/occ_impl/importers/dxf.py index a6c5093d4..502d0cfb7 100644 --- a/cadquery/occ_impl/importers/dxf.py +++ b/cadquery/occ_impl/importers/dxf.py @@ -9,11 +9,14 @@ import ezdxf from OCP.ShapeAnalysis import ShapeAnalysis_FreeBounds -from OCP.TopTools import TopTools_HSequenceOfShape +from OCP import HSequence_TopoDS_Shape as TopTools_HSequenceOfShape from OCP.gp import gp_Pnt from OCP.Geom import Geom_BSplineCurve -from OCP.TColgp import TColgp_Array1OfPnt -from OCP.TColStd import TColStd_Array1OfReal, TColStd_Array1OfInteger +from OCP import Arra1_gp_Pnt as TColgp_Array1OfPnt +from OCP import ( + Array1_double as TColStd_Array1OfReal, + Array1_int as TColStd_Array1OfInteger, +) from OCP.BRepBuilderAPI import BRepBuilderAPI_MakeEdge diff --git a/cadquery/occ_impl/nurbs.py b/cadquery/occ_impl/nurbs.py index 9f77b1949..6fcd45bea 100644 --- a/cadquery/occ_impl/nurbs.py +++ b/cadquery/occ_impl/nurbs.py @@ -14,10 +14,10 @@ from casadi import ldl, ldl_solve, Linsol, DM, solve from OCP.Geom import Geom_BSplineCurve, Geom_BSplineSurface -from OCP.TColgp import TColgp_Array1OfPnt, TColgp_Array2OfPnt -from OCP.TColStd import ( - TColStd_Array1OfInteger, - TColStd_Array1OfReal, +from OCP import Array1_gp_Pnt as TColgp_Array1OfPnt, Array2_gp_Pnt as TColgp_Array2OfPnt +from OCP import ( + Array1_int as TColStd_Array1OfInteger, + Array1_double as TColStd_Array1OfReal, ) from OCP.gp import gp_Pnt from OCP.BRepBuilderAPI import BRepBuilderAPI_MakeEdge, BRepBuilderAPI_MakeFace diff --git a/cadquery/occ_impl/shapes.py b/cadquery/occ_impl/shapes.py index 31b125e37..6f90514ea 100644 --- a/cadquery/occ_impl/shapes.py +++ b/cadquery/occ_impl/shapes.py @@ -63,21 +63,21 @@ ) # Array of points (used for B-spline construction): -from OCP.TColgp import ( - TColgp_HArray1OfPnt, - TColgp_HArray2OfPnt, - TColgp_Array1OfPnt, - TColgp_HArray1OfPnt2d, +from OCP import ( + HArray1_gp_Pnt as TColgp_HArray1OfPnt, + HArray2_gp_Pnt as TColgp_HArray2OfPnt, + Array1_gp_Pnt as TColgp_Array1OfPnt, + HArray2_gp_Pnt2d as TColgp_HArray1OfPnt2d, ) # Array of vectors (used for B-spline interpolation): -from OCP.TColgp import TColgp_Array1OfVec +from OCP import Array1_gp_Vec as TColgp_Array1OfVec # Array of booleans (used for B-spline interpolation): -from OCP.TColStd import TColStd_HArray1OfBoolean +from OCP import HArray1_bool as TColStd_HArray1OfBoolean # Array of floats (used for B-spline interpolation): -from OCP.TColStd import TColStd_HArray1OfReal +from OCP import HArray1_double as TColStd_HArray1OfReal from OCP.BRepAdaptor import ( BRepAdaptor_Curve, @@ -141,8 +141,7 @@ TopoDS_CompSolid, ) -from OCP.GC import GC_MakeArcOfCircle, GC_MakeArcOfEllipse # geometry construction -from OCP.GCE2d import GCE2d_MakeSegment +from OCP.GC import GC_MakeArcOfCircle, GC_MakeArcOfEllipse, GC_MakeSegment2d from OCP.gce import gce_MakeLin, gce_MakeDir from OCP.GeomAPI import ( GeomAPI_Interpolate, @@ -195,11 +194,11 @@ BRepFilletAPI_MakeFillet2d, ) -from OCP.TopTools import ( - TopTools_IndexedDataMapOfShapeListOfShape, - TopTools_ListOfShape, - TopTools_MapOfShape, - TopTools_IndexedMapOfShape, +from OCP import ( + IndexedDataMap_TopoDS_Shape_List_TopoDS_Shape as TopTools_IndexedDataMapOfShapeListOfShape, + List_TopoDS_Shape as TopTools_ListOfShape, + Map_TopoDS_Shape as TopTools_MapOfShape, + IndexedMap_TopoDS_Shape as TopTools_IndexedMapOfShape, ) @@ -242,7 +241,7 @@ Graphic3d_VTA_TOP, ) -from OCP.NCollection import NCollection_Utf8String +from OCP.NCollection import NCollection_String as NCollection_Utf8String from OCP.BRepFeat import BRepFeat_MakeDPrism, BRepFeat_MakePrism @@ -288,7 +287,7 @@ ShapeAnalysis, ShapeAnalysis_WireOrder, ) -from OCP.TopTools import TopTools_HSequenceOfShape +from OCP import HSequence_TopoDS_Shape as TopTools_HSequenceOfShape from OCP.GCPnts import ( GCPnts_AbscissaPoint, @@ -327,7 +326,7 @@ from OCP.Approx import Approx_ParametrizationType -from OCP.LProp3d import LProp3d_CLProps +from OCP.LProp3d import LProp3d_CLProps # FIXME from OCP.BinTools import BinTools @@ -3158,7 +3157,7 @@ def makeHelix( n_turns = height / pitch u_start = geom_line.Value(0.0) u_stop = geom_line.Value(n_turns * sqrt((2 * pi) ** 2 + pitch ** 2)) - geom_seg = GCE2d_MakeSegment(u_start, u_stop).Value() + geom_seg = GC_MakeSegment2d(u_start, u_stop).Value() e = BRepBuilderAPI_MakeEdge(geom_seg, geom_surf).Edge() @@ -3897,7 +3896,7 @@ def trim( # build (u,v) segments for el1, el2 in zip((pt1, pt2, pt3, *pts), (pt2, pt3, *pts, pt1)): - segs_uv.append(GCE2d_MakeSegment(gp_Pnt2d(*el1), gp_Pnt2d(*el2)).Value()) + segs_uv.append(GC_MakeSegment2d(gp_Pnt2d(*el1), gp_Pnt2d(*el2)).Value()) # convert to edges edges = [] diff --git a/cadquery/occ_impl/solver.py b/cadquery/occ_impl/solver.py index 66bc71898..a56e2478b 100644 --- a/cadquery/occ_impl/solver.py +++ b/cadquery/occ_impl/solver.py @@ -418,7 +418,7 @@ def point_in_plane_cost( m1_dm = ca.DM((m1.X(), m1.Y(), m1.Z())) m2_dir = m2.Axis().Direction() - m2_pnt = m2.Axis().Location().Translated(val * gp_Vec(m2_dir)) + m2_pnt = m2.Axis().Location().Translated(gp_Vec(m2_dir).Scaled(val)) m2_dir_dm = ca.DM((m2_dir.X(), m2_dir.Y(), m2_dir.Z())) m2_pnt_dm = ca.DM((m2_pnt.X(), m2_pnt.Y(), m2_pnt.Z())) From 017a017af15e7a5a90162e9b22b74fb9f0ad2b3b Mon Sep 17 00:00:00 2001 From: adam-urbanczyk <13981538+adam-urbanczyk@users.noreply.github.com> Date: Thu, 20 Aug 2026 09:24:29 +0200 Subject: [PATCH 03/12] Change to OCP.collections submodule --- cadquery/occ_impl/assembly.py | 2 +- cadquery/occ_impl/importers/assembly.py | 2 +- cadquery/occ_impl/importers/dxf.py | 6 +++--- cadquery/occ_impl/nurbs.py | 4 ++-- cadquery/occ_impl/shapes.py | 12 ++++++------ 5 files changed, 13 insertions(+), 13 deletions(-) diff --git a/cadquery/occ_impl/assembly.py b/cadquery/occ_impl/assembly.py index a8805b274..3cea87aff 100644 --- a/cadquery/occ_impl/assembly.py +++ b/cadquery/occ_impl/assembly.py @@ -36,7 +36,7 @@ Quantity_TOC_RGB, ) from OCP.BRepAlgoAPI import BRepAlgoAPI_Fuse -from OCP import List_TopoDS_Shape as TopTools_ListOfShape +from OCP.collections import List_TopoDS_Shape as TopTools_ListOfShape from OCP.BOPAlgo import BOPAlgo_GlueEnum, BOPAlgo_Builder from OCP.TopoDS import TopoDS_Shape from OCP.gp import gp_EulerSequence diff --git a/cadquery/occ_impl/importers/assembly.py b/cadquery/occ_impl/importers/assembly.py index 56ed7e64d..1e9df0365 100644 --- a/cadquery/occ_impl/importers/assembly.py +++ b/cadquery/occ_impl/importers/assembly.py @@ -5,7 +5,7 @@ from OCP.TCollection import TCollection_ExtendedString from OCP.Quantity import Quantity_ColorRGBA from OCP.TDF import TDF_Label -from OCP import Sequence_TDS_Label as TDF_LabelSequence +from OCP.collections import Sequence_TDS_Label as TDF_LabelSequence from OCP.IFSelect import IFSelect_RetDone from OCP.TDocStd import TDocStd_Document from OCP.TDataStd import TDataStd_Name, TDataStd_TreeNode diff --git a/cadquery/occ_impl/importers/dxf.py b/cadquery/occ_impl/importers/dxf.py index 502d0cfb7..53c943d10 100644 --- a/cadquery/occ_impl/importers/dxf.py +++ b/cadquery/occ_impl/importers/dxf.py @@ -9,11 +9,11 @@ import ezdxf from OCP.ShapeAnalysis import ShapeAnalysis_FreeBounds -from OCP import HSequence_TopoDS_Shape as TopTools_HSequenceOfShape +from OCP.collections import HSequence_TopoDS_Shape as TopTools_HSequenceOfShape from OCP.gp import gp_Pnt from OCP.Geom import Geom_BSplineCurve -from OCP import Arra1_gp_Pnt as TColgp_Array1OfPnt -from OCP import ( +from OCP.collections import Arra1_gp_Pnt as TColgp_Array1OfPnt +from OCP.collections import ( Array1_double as TColStd_Array1OfReal, Array1_int as TColStd_Array1OfInteger, ) diff --git a/cadquery/occ_impl/nurbs.py b/cadquery/occ_impl/nurbs.py index 6fcd45bea..1c270122b 100644 --- a/cadquery/occ_impl/nurbs.py +++ b/cadquery/occ_impl/nurbs.py @@ -14,8 +14,8 @@ from casadi import ldl, ldl_solve, Linsol, DM, solve from OCP.Geom import Geom_BSplineCurve, Geom_BSplineSurface -from OCP import Array1_gp_Pnt as TColgp_Array1OfPnt, Array2_gp_Pnt as TColgp_Array2OfPnt -from OCP import ( +from OCP.collections import Array1_gp_Pnt as TColgp_Array1OfPnt, Array2_gp_Pnt as TColgp_Array2OfPnt +from OCP.collections import ( Array1_int as TColStd_Array1OfInteger, Array1_double as TColStd_Array1OfReal, ) diff --git a/cadquery/occ_impl/shapes.py b/cadquery/occ_impl/shapes.py index 6f90514ea..c86f5c266 100644 --- a/cadquery/occ_impl/shapes.py +++ b/cadquery/occ_impl/shapes.py @@ -63,7 +63,7 @@ ) # Array of points (used for B-spline construction): -from OCP import ( +from OCP.collections import ( HArray1_gp_Pnt as TColgp_HArray1OfPnt, HArray2_gp_Pnt as TColgp_HArray2OfPnt, Array1_gp_Pnt as TColgp_Array1OfPnt, @@ -71,13 +71,13 @@ ) # Array of vectors (used for B-spline interpolation): -from OCP import Array1_gp_Vec as TColgp_Array1OfVec +from OCP.collections import Array1_gp_Vec as TColgp_Array1OfVec # Array of booleans (used for B-spline interpolation): -from OCP import HArray1_bool as TColStd_HArray1OfBoolean +from OCP.collections import HArray1_bool as TColStd_HArray1OfBoolean # Array of floats (used for B-spline interpolation): -from OCP import HArray1_double as TColStd_HArray1OfReal +from OCP.collections import HArray1_double as TColStd_HArray1OfReal from OCP.BRepAdaptor import ( BRepAdaptor_Curve, @@ -194,7 +194,7 @@ BRepFilletAPI_MakeFillet2d, ) -from OCP import ( +from OCP.collections import ( IndexedDataMap_TopoDS_Shape_List_TopoDS_Shape as TopTools_IndexedDataMapOfShapeListOfShape, List_TopoDS_Shape as TopTools_ListOfShape, Map_TopoDS_Shape as TopTools_MapOfShape, @@ -287,7 +287,7 @@ ShapeAnalysis, ShapeAnalysis_WireOrder, ) -from OCP import HSequence_TopoDS_Shape as TopTools_HSequenceOfShape +from OCP.collections import HSequence_TopoDS_Shape as TopTools_HSequenceOfShape from OCP.GCPnts import ( GCPnts_AbscissaPoint, From a093172f2a558bdfd54ebc30b4faae22833c189d Mon Sep 17 00:00:00 2001 From: adam-urbanczyk <13981538+adam-urbanczyk@users.noreply.github.com> Date: Thu, 20 Aug 2026 09:29:17 +0200 Subject: [PATCH 04/12] Black fix --- cadquery/occ_impl/nurbs.py | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cadquery/occ_impl/nurbs.py b/cadquery/occ_impl/nurbs.py index 1c270122b..45fc079db 100644 --- a/cadquery/occ_impl/nurbs.py +++ b/cadquery/occ_impl/nurbs.py @@ -14,7 +14,10 @@ from casadi import ldl, ldl_solve, Linsol, DM, solve from OCP.Geom import Geom_BSplineCurve, Geom_BSplineSurface -from OCP.collections import Array1_gp_Pnt as TColgp_Array1OfPnt, Array2_gp_Pnt as TColgp_Array2OfPnt +from OCP.collections import ( + Array1_gp_Pnt as TColgp_Array1OfPnt, + Array2_gp_Pnt as TColgp_Array2OfPnt, +) from OCP.collections import ( Array1_int as TColStd_Array1OfInteger, Array1_double as TColStd_Array1OfReal, From f242907f969499950e230b6e7fb705c9a253e8cf Mon Sep 17 00:00:00 2001 From: adam-urbanczyk <13981538+adam-urbanczyk@users.noreply.github.com> Date: Thu, 20 Aug 2026 16:26:23 +0200 Subject: [PATCH 05/12] Fix typos in collection names --- cadquery/occ_impl/exporters/assembly.py | 2 +- cadquery/occ_impl/importers/assembly.py | 2 +- cadquery/occ_impl/importers/dxf.py | 2 +- cadquery/occ_impl/shapes.py | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cadquery/occ_impl/exporters/assembly.py b/cadquery/occ_impl/exporters/assembly.py index ba2badf4a..4c52929b7 100644 --- a/cadquery/occ_impl/exporters/assembly.py +++ b/cadquery/occ_impl/exporters/assembly.py @@ -41,7 +41,7 @@ ) from OCP.PCDM import PCDM_StoreStatus from OCP.RWGltf import RWGltf_CafWriter -from OCP import ( +from OCP.collections import ( IndexedDataMap_TCollection_AsciiString_TCollection_AsciiString as TColStd_IndexedDataMapOfStringString, ) from OCP.Message import Message_ProgressRange diff --git a/cadquery/occ_impl/importers/assembly.py b/cadquery/occ_impl/importers/assembly.py index 1e9df0365..f85ce5752 100644 --- a/cadquery/occ_impl/importers/assembly.py +++ b/cadquery/occ_impl/importers/assembly.py @@ -5,7 +5,7 @@ from OCP.TCollection import TCollection_ExtendedString from OCP.Quantity import Quantity_ColorRGBA from OCP.TDF import TDF_Label -from OCP.collections import Sequence_TDS_Label as TDF_LabelSequence +from OCP.collections import Sequence_TDF_Label as TDF_LabelSequence from OCP.IFSelect import IFSelect_RetDone from OCP.TDocStd import TDocStd_Document from OCP.TDataStd import TDataStd_Name, TDataStd_TreeNode diff --git a/cadquery/occ_impl/importers/dxf.py b/cadquery/occ_impl/importers/dxf.py index 53c943d10..ab1d8b05f 100644 --- a/cadquery/occ_impl/importers/dxf.py +++ b/cadquery/occ_impl/importers/dxf.py @@ -12,7 +12,7 @@ from OCP.collections import HSequence_TopoDS_Shape as TopTools_HSequenceOfShape from OCP.gp import gp_Pnt from OCP.Geom import Geom_BSplineCurve -from OCP.collections import Arra1_gp_Pnt as TColgp_Array1OfPnt +from OCP.collections import Array1_gp_Pnt as TColgp_Array1OfPnt from OCP.collections import ( Array1_double as TColStd_Array1OfReal, Array1_int as TColStd_Array1OfInteger, diff --git a/cadquery/occ_impl/shapes.py b/cadquery/occ_impl/shapes.py index c86f5c266..51cf7d27d 100644 --- a/cadquery/occ_impl/shapes.py +++ b/cadquery/occ_impl/shapes.py @@ -67,7 +67,7 @@ HArray1_gp_Pnt as TColgp_HArray1OfPnt, HArray2_gp_Pnt as TColgp_HArray2OfPnt, Array1_gp_Pnt as TColgp_Array1OfPnt, - HArray2_gp_Pnt2d as TColgp_HArray1OfPnt2d, + HArray1_gp_Pnt2d as TColgp_HArray1OfPnt2d, ) # Array of vectors (used for B-spline interpolation): From f1995fb7f4d4cb2f96c858b426149a2e6faa97c0 Mon Sep 17 00:00:00 2001 From: adam-urbanczyk <13981538+adam-urbanczyk@users.noreply.github.com> Date: Sat, 22 Aug 2026 08:38:04 +0200 Subject: [PATCH 06/12] Residual fixes --- cadquery/occ_impl/shapes.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cadquery/occ_impl/shapes.py b/cadquery/occ_impl/shapes.py index 51cf7d27d..5f14328cd 100644 --- a/cadquery/occ_impl/shapes.py +++ b/cadquery/occ_impl/shapes.py @@ -195,7 +195,7 @@ ) from OCP.collections import ( - IndexedDataMap_TopoDS_Shape_List_TopoDS_Shape as TopTools_IndexedDataMapOfShapeListOfShape, + IndexedDataMap_TopoDS_Shape_List_TopoDS_Shape_TopTools_ShapeMapHasher as TopTools_IndexedDataMapOfShapeListOfShape, List_TopoDS_Shape as TopTools_ListOfShape, Map_TopoDS_Shape as TopTools_MapOfShape, IndexedMap_TopoDS_Shape as TopTools_IndexedMapOfShape, @@ -326,7 +326,7 @@ from OCP.Approx import Approx_ParametrizationType -from OCP.LProp3d import LProp3d_CLProps # FIXME +from OCP.LProp import LProp_CLProps3d from OCP.BinTools import BinTools @@ -2589,7 +2589,7 @@ def curvatureAt( curve, param = self._curve_and_param(d, mode) - props = LProp3d_CLProps(curve, param, 2, resolution) + props = LProp_CLProps3d(curve, param, 2, resolution) return props.Curvature() From faec3c142fb2c9143930a3dbdc7191a73a5879da Mon Sep 17 00:00:00 2001 From: adam-urbanczyk <13981538+adam-urbanczyk@users.noreply.github.com> Date: Sat, 22 Aug 2026 19:04:54 +0200 Subject: [PATCH 07/12] Mypy fixes --- cadquery/occ_impl/shapes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cadquery/occ_impl/shapes.py b/cadquery/occ_impl/shapes.py index 5f14328cd..f86757692 100644 --- a/cadquery/occ_impl/shapes.py +++ b/cadquery/occ_impl/shapes.py @@ -368,7 +368,7 @@ ta.TopAbs_COMPOUND: BRepGProp.VolumeProperties_s, } -inverse_shape_LUT: dict[str, Any] = {v: k for k, v in shape_LUT.items()} +inverse_shape_LUT: dict[str, ta.TopAbs_ShapeEnum] = {v: k for k, v in shape_LUT.items()} downcast_LUT = { ta.TopAbs_VERTEX: TopoDS.Vertex, From 1c0ce50ae23be1eee122566454dc099a6c8438f5 Mon Sep 17 00:00:00 2001 From: adam-urbanczyk <13981538+adam-urbanczyk@users.noreply.github.com> Date: Sat, 22 Aug 2026 19:06:36 +0200 Subject: [PATCH 08/12] Back to original annotation --- cadquery/occ_impl/shapes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cadquery/occ_impl/shapes.py b/cadquery/occ_impl/shapes.py index f86757692..5f14328cd 100644 --- a/cadquery/occ_impl/shapes.py +++ b/cadquery/occ_impl/shapes.py @@ -368,7 +368,7 @@ ta.TopAbs_COMPOUND: BRepGProp.VolumeProperties_s, } -inverse_shape_LUT: dict[str, ta.TopAbs_ShapeEnum] = {v: k for k, v in shape_LUT.items()} +inverse_shape_LUT: dict[str, Any] = {v: k for k, v in shape_LUT.items()} downcast_LUT = { ta.TopAbs_VERTEX: TopoDS.Vertex, From 72b600d44881d05d63403924b143870162cfed52 Mon Sep 17 00:00:00 2001 From: adam-urbanczyk <13981538+adam-urbanczyk@users.noreply.github.com> Date: Sat, 22 Aug 2026 19:47:00 +0200 Subject: [PATCH 09/12] Another take --- cadquery/occ_impl/shapes.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/cadquery/occ_impl/shapes.py b/cadquery/occ_impl/shapes.py index 5f14328cd..5e9de1f02 100644 --- a/cadquery/occ_impl/shapes.py +++ b/cadquery/occ_impl/shapes.py @@ -195,10 +195,9 @@ ) from OCP.collections import ( - IndexedDataMap_TopoDS_Shape_List_TopoDS_Shape_TopTools_ShapeMapHasher as TopTools_IndexedDataMapOfShapeListOfShape, + IndexedDataMap_TopoDS_Shape_List_TopoDS_Shape as TopTools_IndexedDataMapOfShapeListOfShape, List_TopoDS_Shape as TopTools_ListOfShape, - Map_TopoDS_Shape as TopTools_MapOfShape, - IndexedMap_TopoDS_Shape as TopTools_IndexedMapOfShape, + IndexedMap_TopoDS_Shape_TopTools_ShapeMapHasher as TopTools_IndexedMapOfShape, ) @@ -1796,7 +1795,7 @@ def siblings( TopExp.MapShapesAndAncestors_s( ctx.wrapped, inverse_shape_LUT[kind], shapetype(self.wrapped), shape_map, ) - exclude = TopTools_MapOfShape() + exclude = TopTools_IndexedMapOfShape() def _siblings(shapes: Iterable[Shape], level: int) -> set[Shape]: @@ -5033,7 +5032,7 @@ def siblings( ctx.wrapped, inverse_shape_LUT[kind], t, shape_map, ) - exclude = TopTools_MapOfShape() + exclude = TopTools_IndexedMapOfShape() def _siblings(shapes: Iterable[Shape], level: int) -> set[Shape]: From fff591f65053c19ccedc880e5434869b27fe3e3a Mon Sep 17 00:00:00 2001 From: adam-urbanczyk <13981538+adam-urbanczyk@users.noreply.github.com> Date: Sat, 22 Aug 2026 21:07:36 +0200 Subject: [PATCH 10/12] One revert too many --- cadquery/occ_impl/shapes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cadquery/occ_impl/shapes.py b/cadquery/occ_impl/shapes.py index 5e9de1f02..fba948fed 100644 --- a/cadquery/occ_impl/shapes.py +++ b/cadquery/occ_impl/shapes.py @@ -195,7 +195,7 @@ ) from OCP.collections import ( - IndexedDataMap_TopoDS_Shape_List_TopoDS_Shape as TopTools_IndexedDataMapOfShapeListOfShape, + IndexedDataMap_TopoDS_Shape_List_TopoDS_Shape_TopTools_ShapeMapHasher as TopTools_IndexedDataMapOfShapeListOfShape, List_TopoDS_Shape as TopTools_ListOfShape, IndexedMap_TopoDS_Shape_TopTools_ShapeMapHasher as TopTools_IndexedMapOfShape, ) From 1d25fde8ec45f83ccb28b77b362d97bb8034f3a2 Mon Sep 17 00:00:00 2001 From: adam-urbanczyk <13981538+adam-urbanczyk@users.noreply.github.com> Date: Mon, 24 Aug 2026 23:45:43 +0200 Subject: [PATCH 11/12] BndBox inner class workaround --- cadquery/occ_impl/geom.py | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/cadquery/occ_impl/geom.py b/cadquery/occ_impl/geom.py index b1e03026b..2797b9ba3 100644 --- a/cadquery/occ_impl/geom.py +++ b/cadquery/occ_impl/geom.py @@ -890,7 +890,14 @@ class BoundBox(object): def __init__(self, bb: Bnd_Box) -> None: self.wrapped = bb - XMin, YMin, ZMin, XMax, YMax, ZMax = bb.Get() + XMin, YMin, ZMin, XMax, YMax, ZMax = ( + bb.GetXMin(), + bb.GetYMin(), + bb.GetZMin(), + bb.GetXMax(), + bb.GetYMax(), + bb.GetZMax(), + ) self.xmin = XMin self.xmax = XMax From 30ad6abce4c523bbd01491074e94d7c8e9de1f35 Mon Sep 17 00:00:00 2001 From: adam-urbanczyk <13981538+adam-urbanczyk@users.noreply.github.com> Date: Wed, 26 Aug 2026 17:42:24 +0200 Subject: [PATCH 12/12] Fix simple test failures --- tests/test_cadquery.py | 6 ++++-- tests/test_free_functions.py | 4 +++- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/tests/test_cadquery.py b/tests/test_cadquery.py index a65ae3e54..d78c2ee37 100644 --- a/tests/test_cadquery.py +++ b/tests/test_cadquery.py @@ -5200,6 +5200,8 @@ def testSplineApprox(self): from .naca import naca5305 from math import pi, cos + import OCP + pts = [Vector(e[0], e[1], 0) for e in naca5305] # spline @@ -5211,7 +5213,7 @@ def testSplineApprox(self): self.assertTrue(e2.isValid()) self.assertTrue(e1.Length() > e2.Length()) - with raises(ValueError): + with raises(OCP.Standard.Standard_ConstructionError): e4 = Edge.makeSplineApprox(pts, 1e-6, maxDeg=3, smoothing=(1, 1, 1.0)) pts_closed = pts + [pts[0]] @@ -5258,7 +5260,7 @@ def testSplineApprox(self): self.assertTrue(f1.isValid()) self.assertTrue(f2.isValid()) - with raises(ValueError): + with raises(OCP.Standard.Standard_ConstructionError): f3 = Face.makeSplineApprox(pts, smoothing=(1, 1, 1), maxDeg=3) def testParametricSurface(self): diff --git a/tests/test_free_functions.py b/tests/test_free_functions.py index fdad7c811..6228b607c 100644 --- a/tests/test_free_functions.py +++ b/tests/test_free_functions.py @@ -671,7 +671,9 @@ def patch_find(monkeypatch): Fixture for throwing exception during imprinting. """ - from OCP.TopTools import TopTools_DataMapOfShapeListOfShape + from OCP.collections import ( + DataMap_TopoDS_Shape_List_TopoDS_Shape_TopTools_ShapeMapHasher as TopTools_DataMapOfShapeListOfShape, + ) from OCP.Standard import Standard_NoSuchObject from OCP.BOPAlgo import BOPAlgo_Builder