Blackify
This commit is contained in:
@ -68,42 +68,49 @@ def importStep(fileName):
|
||||
def _dxf_line(el):
|
||||
|
||||
try:
|
||||
return (Edge.makeLine(Vector(el.dxf.start.xyz),
|
||||
Vector(el.dxf.end.xyz)),)
|
||||
return (Edge.makeLine(Vector(el.dxf.start.xyz), Vector(el.dxf.end.xyz)),)
|
||||
except Exception:
|
||||
return ()
|
||||
|
||||
|
||||
def _dxf_circle(el):
|
||||
|
||||
try:
|
||||
return (Edge.makeCircle(el.dxf.radius,
|
||||
Vector(el.dxf.center.xyz)),)
|
||||
return (Edge.makeCircle(el.dxf.radius, Vector(el.dxf.center.xyz)),)
|
||||
except Exception:
|
||||
return ()
|
||||
|
||||
|
||||
def _dxf_arc(el):
|
||||
|
||||
try:
|
||||
return (Edge.makeCircle(el.dxf.radius,
|
||||
return (
|
||||
Edge.makeCircle(
|
||||
el.dxf.radius,
|
||||
Vector(el.dxf.center.xyz),
|
||||
angle1=el.dxf.start_angle,
|
||||
angle2=el.dxf.end_angle),)
|
||||
angle2=el.dxf.end_angle,
|
||||
),
|
||||
)
|
||||
except Exception:
|
||||
return ()
|
||||
|
||||
|
||||
def _dxf_polyline(el):
|
||||
|
||||
rv = (DXF_CONVERTERS[e.dxf.dxftype](e) for e in el.virtual_entities())
|
||||
|
||||
return (e[0] for e in rv if e)
|
||||
|
||||
|
||||
DXF_CONVERTERS = {
|
||||
'LINE' : _dxf_line,
|
||||
'CIRCLE' : _dxf_circle,
|
||||
'ARC' : _dxf_arc,
|
||||
'POLYLINE' : _dxf_polyline,
|
||||
'LWPOLYLINE' : _dxf_polyline
|
||||
}
|
||||
"LINE": _dxf_line,
|
||||
"CIRCLE": _dxf_circle,
|
||||
"ARC": _dxf_arc,
|
||||
"POLYLINE": _dxf_polyline,
|
||||
"LWPOLYLINE": _dxf_polyline,
|
||||
}
|
||||
|
||||
|
||||
def _dxf_convert(elements, tol):
|
||||
|
||||
@ -124,23 +131,25 @@ def _dxf_convert(elements, tol):
|
||||
edges_in = TopTools_HSequenceOfShape()
|
||||
wires_out = TopTools_HSequenceOfShape()
|
||||
|
||||
for e in edges: edges_in.Append(e.wrapped)
|
||||
ShapeAnalysis_FreeBounds.ConnectEdgesToWires_s(edges_in,tol,False,wires_out)
|
||||
for e in edges:
|
||||
edges_in.Append(e.wrapped)
|
||||
ShapeAnalysis_FreeBounds.ConnectEdgesToWires_s(edges_in, tol, False, wires_out)
|
||||
|
||||
rv = [Shape.cast(el) for el in wires_out]
|
||||
|
||||
return rv
|
||||
|
||||
|
||||
def importDXF(filename, tol=1e-6):
|
||||
|
||||
dxf = ezdxf.readfile(filename)
|
||||
faces = []
|
||||
|
||||
for name,layer in dxf.modelspace().groupby(dxfattrib='layer').items():
|
||||
for name, layer in dxf.modelspace().groupby(dxfattrib="layer").items():
|
||||
res = _dxf_convert(layer, tol)
|
||||
if res:
|
||||
wire_sets = sortWiresByBuildOrder(res)
|
||||
for wire_set in wire_sets:
|
||||
faces.append(Face.makeFromWires(wire_set[0], wire_set[1:]))
|
||||
|
||||
return cq.Workplane('XY').newObject(faces)
|
||||
return cq.Workplane("XY").newObject(faces)
|
||||
|
||||
@ -15,6 +15,7 @@ OUTDIR = tempfile.gettempdir()
|
||||
# test data directory
|
||||
testdataDir = os.path.join(os.path.dirname(__file__), "testdata")
|
||||
|
||||
|
||||
class TestImporters(BaseTest):
|
||||
def importBox(self, importType, fileName):
|
||||
"""
|
||||
@ -85,19 +86,20 @@ class TestImporters(BaseTest):
|
||||
filename = os.path.join(testdataDir, "gear.dxf")
|
||||
|
||||
obj = importers.importDXF(filename)
|
||||
self.assertFalse( obj.val().isValid() )
|
||||
self.assertFalse(obj.val().isValid())
|
||||
|
||||
obj = importers.importDXF(filename, tol=1e-3)
|
||||
self.assertTrue( obj.val().isValid() )
|
||||
self.assertEqual( obj.faces().size(), 1)
|
||||
self.assertEqual( obj.wires().size(), 2)
|
||||
self.assertTrue(obj.val().isValid())
|
||||
self.assertEqual(obj.faces().size(), 1)
|
||||
self.assertEqual(obj.wires().size(), 2)
|
||||
|
||||
obj = obj.wires().toPending().extrude(1)
|
||||
self.assertTrue( obj.val().isValid() )
|
||||
self.assertEqual( obj.solids().size(), 1)
|
||||
self.assertTrue(obj.val().isValid())
|
||||
self.assertEqual(obj.solids().size(), 1)
|
||||
|
||||
obj = importers.importShape(importers.ImportTypes.DXF, filename, tol=1e-3)
|
||||
assert( obj.val().isValid() == True )
|
||||
assert obj.val().isValid() == True
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
import unittest
|
||||
|
||||
Reference in New Issue
Block a user