-
-
Notifications
You must be signed in to change notification settings - Fork 402
Description
I think the "wires" input in this method is updated by reference using "=" in OCC source and isn't captured in Python bindings. I had similar issues in pyOCCT in various places and I had to just write a lambda whenever I encountered things like this on a case-by-case basis. Not sure how SWIG handles it.
I think this unit test demonstrates the issue:
import unittest
from OCC.Core.BRepBuilderAPI import BRepBuilderAPI_MakeEdge
from OCC.Core.ShapeAnalysis import ShapeAnalysis_FreeBounds, ShapeAnalysis_FreeBounds_ConnectEdgesToWires
from OCC.Core.TopTools import TopTools_HSequenceOfShape, TopTools_SequenceOfShape
from OCC.Core.gp import gp_Pnt
class Test_ShapeAnalysis_FreeBounds(unittest.TestCase):
"""
Test for ShapeAnalysis_FreeBounds class.
"""
@classmethod
def setUpClass(cls):
"""
Set up for ShapeAnalysis_FreeBounds.
"""
p1 = gp_Pnt()
p2 = gp_Pnt(1, 0, 0)
e1 = BRepBuilderAPI_MakeEdge(p1, p2).Edge()
p3 = gp_Pnt(1, 1, 0)
e2 = BRepBuilderAPI_MakeEdge(p2, p3).Edge()
seq = TopTools_HSequenceOfShape()
seq.Append(e1)
seq.Append(e2)
cls._edges = seq
def test_ConnectEdgesToWires(self):
"""
Test ShapeAnalysis_FreeBounds::ConnectEdgesToWires
"""
wires = TopTools_HSequenceOfShape()
ShapeAnalysis_FreeBounds.ConnectEdgesToWires(self._edges, 1.0e-7,
False, wires)
self.assertEqual(wires.Length(), 1)
if __name__ == '__main__':
unittest.main()This is how I handled it in the pyOCCT source but I have no real way to automatically detect it during binding generation or runtime, so just left to fix as I run into these types of issues.
Great work on OCCT 7+ update btw. I spun up pyOCCT in the past out of necessity because I needed the improved performance of OCCT 7+ compared to OCE, but now I'm wondering if it's worth maintaining. I'm close to getting the 7.4 bindings done and might finish those just for fun, but not sure how much value it adds.
Any plans for SMESH support? I've wanted to go back and update my own SMESH project to be more like a feedstock/builder of the upstream Salome SMESH repo with patches and such for the latest NETGEN, and generate corresponding Python bindings. Maybe that is a better place for my time if you don't have plans for supporting that yourself?