Update test_cadquery.py
This commit is contained in:
@ -2139,3 +2139,61 @@ class TestCadQuery(BaseTest):
|
||||
point = result.faces(">Z").edges(">X").first().val().startPoint().toTuple()
|
||||
self.assertTupleAlmostEquals(point, (0.707106781, 1.414213562, 1.0), decimal_places)
|
||||
|
||||
def test_assembleEdges(self):
|
||||
"""
|
||||
Tests TestAssembleEdges functionality
|
||||
"""
|
||||
|
||||
# Plate with 5 sides and 2 bumps, one side is not co-planar with the other sides
|
||||
thickness = 0.1
|
||||
edge_points = [[-7.,-7.,0.], [-3.,-10.,3.], [7.,-7.,0.], [7.,7.,0.], [-7.,7.,0.]]
|
||||
edge_wire = cq.Workplane('XY').polyline([(-7.,-7.), (7.,-7.), (7.,7.), (-7.,7.)])
|
||||
edge_wire = edge_wire.add(cq.Workplane('YZ').workplane().transformed(offset=cq.Vector(0, 0, -7), rotate=cq.Vector(45, 0, 0)).spline([(-7.,0.), (3,-3), (7.,0.)]))
|
||||
edge_wire = [o.vals()[0] for o in edge_wire.all()]
|
||||
edge_wire = cq.Wire.assembleEdges(edge_wire)
|
||||
|
||||
# Embossed star, need to change optional parameters to obtain nice looking result.
|
||||
r1=3.
|
||||
r2=10.
|
||||
fn=6
|
||||
thickness = 0.1
|
||||
edge_points = [[r1*cos(i * pi/fn), r1*sin(i * pi/fn)] if i%2==0 else [r2*cos(i * pi/fn), r2*sin(i * pi/fn)] for i in range(2*fn+1)]
|
||||
edge_wire = cq.Workplane('XY').polyline(edge_points)
|
||||
edge_wire = [o.vals()[0] for o in edge_wire.all()]
|
||||
edge_wire = cq.Wire.assembleEdges(edge_wire)
|
||||
|
||||
# Points on hexagonal pattern coordinates, use of pushpoints.
|
||||
r1 = 1.
|
||||
N = 3
|
||||
ca = cos(30. * pi/180.)
|
||||
sa = sin(30. * pi/180.)
|
||||
# EVEN ROWS
|
||||
x_p = np.arange(-N*r1, N*r1, ca*2*r1)
|
||||
y_p = np.arange(-N*r1, N*r1, 3*r1)
|
||||
x_p, y_p = np.meshgrid(x_p, y_p)
|
||||
xy_p_even = [(x,y) for x,y in zip(x_p.flatten(), y_p.flatten())]
|
||||
# ODD ROWS
|
||||
x_p = np.arange(-(N-0.5)*r1*ca, (N+1.5)*r1*ca, ca*2*r1)
|
||||
y_p = np.arange(-(N-2+sa)*r1, (N+1+sa)*r1, 3*r1)
|
||||
x_p, y_p = np.meshgrid(x_p, y_p)
|
||||
xy_p_odd = [(x,y) for x,y in zip(x_p.flatten(), y_p.flatten())]
|
||||
pts = xy_p_even + xy_p_odd
|
||||
# Spike surface
|
||||
thickness = 0.1
|
||||
fn = 6
|
||||
edge_points = [[r1*cos(i * 2*pi/fn), r1*sin(i * 2*pi/fn)] for i in range(fn+1)]
|
||||
surface_points = [[0.25,0,0.75], [-0.25,0,0.75], [0,0.25,0.75], [0,-0.25,0.75], [0,0,2]]
|
||||
edge_wire = cq.Workplane('XY').polyline(edge_points)
|
||||
edge_wire = [o.vals()[0] for o in edge_wire.all()]
|
||||
edge_wire = cq.Wire.assembleEdges(edge_wire)
|
||||
|
||||
# Gyroïd, all edges are splines on different workplanes.
|
||||
thickness = 0.1
|
||||
edge_points = [[[3.54, 3.54], [1.77, 0.0], [3.54, -3.54]], [[-3.54, -3.54], [0.0, -1.77], [3.54, -3.54]], [[-3.54, -3.54], [0.0, -1.77], [3.54, -3.54]], [[-3.54, -3.54], [-1.77, 0.0], [-3.54, 3.54]], [[3.54, 3.54], [0.0, 1.77], [-3.54, 3.54]], [[3.54, 3.54], [0.0, 1.77], [-3.54, 3.54]]]
|
||||
plane_list = ['XZ', 'XY', 'YZ', 'XZ', 'YZ', 'XY']
|
||||
offset_list = [-3.54, 3.54, 3.54, 3.54, -3.54, -3.54]
|
||||
edge_wire = cq.Workplane(plane_list[0]).workplane(offset=-offset_list[0]).spline(edge_points[0])
|
||||
for i in range(len(edge_points)-1):
|
||||
edge_wire = edge_wire.add(cq.Workplane(plane_list[i+1]).workplane(offset=-offset_list[i+1]).spline(edge_points[i+1]))
|
||||
edge_wire = [o.vals()[0] for o in edge_wire.all()]
|
||||
edge_wire = cq.Wire.assembleEdges(edge_wire)
|
||||
|
Reference in New Issue
Block a user