MCPcopy Create free account
hub / github.com/PyMesh/PyMesh / generate_supports

Function generate_supports

scripts/support_gen.py:55–87  ·  view source on GitHub ↗
(wire_network, print_dir, support_length,
        support_thickness, tol)

Source from the content-addressed store, hash-verified

53 return form_mesh(vertices, faces);
54
55def generate_supports(wire_network, print_dir, support_length,
56 support_thickness, tol):
57 min_height = np.amin(np.dot(wire_network.vertices, print_dir));
58 proj_dist = [];
59 vertices = [];
60 edges = [];
61 for i,v in enumerate(wire_network.vertices):
62 neighbors = wire_network.vertices[wire_network.get_vertex_neighbors(i)];
63 neighbors = neighbors.reshape((-1, 3), order="C");
64 h = np.dot(v, print_dir);
65 if np.any(np.dot(neighbors, print_dir) <= h + tol) and h > min_height + tol:
66 continue;
67 vertices.append(v);
68 proj_dist.append(h);
69
70 num_supports = len(vertices);
71 base_vertices_top_end = vertices - print_dir * support_thickness;
72 base_vertices_bottom_end = vertices - np.outer(
73 (proj_dist - min_height + support_length), print_dir);
74 vertices = np.vstack((vertices + 0.05 * print_dir,
75 base_vertices_top_end, base_vertices_bottom_end));
76 edges = np.vstack((
77 np.arange(num_supports * 2).reshape((num_supports, 2), order="F"),
78 np.arange(num_supports, num_supports * 3).reshape((num_supports, 2), order="F")));
79 thickness = np.hstack((
80 np.ones(num_supports) * support_thickness * 0.5,
81 np.ones(num_supports) * support_thickness,
82 np.ones(num_supports) * support_thickness,));
83
84 support_wires = WireNetwork();
85 support_wires.load(vertices, edges);
86 support_wires.add_attribute("thickness", thickness);
87 return support_wires;
88
89def parse_args():
90 parser = argparse.ArgumentParser(

Callers 1

mainFunction · 0.85

Calls 5

loadMethod · 0.95
add_attributeMethod · 0.95
WireNetworkClass · 0.90
enumerateFunction · 0.85
get_vertex_neighborsMethod · 0.45

Tested by

no test coverage detected