|
1 | 1 | from math import sqrt |
2 | 2 |
|
3 | 3 | from typing import Dict, List |
4 | | -from compas.geometry import Point, Vector |
| 4 | +from compas.geometry import Point |
| 5 | +from compas.geometry import Vector |
| 6 | +# from compas.geometry import Line |
5 | 7 | from compas.geometry import Transformation |
6 | 8 | from compas.geometry import Frame |
7 | 9 | from compas.geometry import Circle |
|
36 | 38 | from OCC.Core.TopoDS import topods_Edge |
37 | 39 | from OCC.Core.TopoDS import TopoDS_Shape |
38 | 40 | from OCC.Core.TopoDS import TopoDS_Edge |
39 | | -from OCC.Core.BRep import BRep_Tool_Curve |
| 41 | +# from OCC.Core.BRep import BRep_Tool_Curve |
40 | 42 | from OCC.Core.BRepBuilderAPI import BRepBuilderAPI_MakeEdge |
41 | 43 | from OCC.Core.TColgp import TColgp_Array1OfPnt |
42 | 44 | from OCC.Core.TColStd import TColStd_Array1OfReal |
|
46 | 48 | from OCC.Core.STEPControl import STEPControl_Writer |
47 | 49 | from OCC.Core.STEPControl import STEPControl_AsIs |
48 | 50 |
|
49 | | - |
50 | 51 | Point.from_occ = classmethod(compas_point_from_occ_point) |
51 | 52 | Point.to_occ = compas_point_to_occ_point |
52 | 53 | Vector.from_occ = classmethod(compas_vector_from_occ_vector) |
@@ -114,7 +115,7 @@ def JSONSCHEMANAME(self): |
114 | 115 | raise NotImplementedError |
115 | 116 |
|
116 | 117 | def __init__(self, name=None) -> None: |
117 | | - super().__init__(name=name) |
| 118 | + super(OCCNurbsCurve, self).__init__(name=name) |
118 | 119 | self.occ_curve = None |
119 | 120 |
|
120 | 121 | def __eq__(self, other: 'OCCNurbsCurve') -> bool: |
@@ -282,10 +283,18 @@ def from_step(cls, filepath: str) -> 'OCCNurbsCurve': |
282 | 283 | @classmethod |
283 | 284 | def from_edge(cls, edge: TopoDS_Edge) -> 'OCCNurbsCurve': |
284 | 285 | """Construct a NURBS curve from an existing OCC TopoDS_Edge.""" |
285 | | - res = BRep_Tool_Curve(edge) |
286 | | - if len(res) != 3: |
287 | | - return |
288 | | - return cls.from_occ(res[0]) |
| 286 | + from compas_occ.brep import BRepEdge |
| 287 | + # res = BRep_Tool_Curve(edge) |
| 288 | + # if len(res) != 3: |
| 289 | + # return |
| 290 | + # curve = GeomAdaptor_Curve(res[0]) |
| 291 | + # ctype = curve.GetType() |
| 292 | + # if ctype == 0: |
| 293 | + # return cls.from_line() |
| 294 | + brepedge = BRepEdge(edge) |
| 295 | + if brepedge.is_line: |
| 296 | + line = brepedge.to_line() |
| 297 | + return cls.from_line(line) |
289 | 298 |
|
290 | 299 | @classmethod |
291 | 300 | def from_arc(cls, arc, degree, pointcount=None): |
|
0 commit comments