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

Class Tiler

python/pymesh/wires/Tiler.py:7–71  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

5from .Parameters import Parameters
6
7class Tiler(object):
8 def __init__(self, base_pattern=None):
9 if isinstance(base_pattern, WireNetwork):
10 self.set_base_pattern(base_pattern)
11 elif isinstance(base_pattern, list):
12 self.set_base_patterns(base_pattern)
13
14 def set_base_pattern(self, network):
15 network.offset(-network.bbox_center)
16 self.pattern = network
17 self.raw_pattern = self.pattern.raw_wires
18
19 def set_base_patterns(self, networks):
20 assert(len(networks) > 0)
21 self.patterns = networks
22 self.raw_patterns = [network.raw_wires for network in networks]
23
24 def tile_with_guide_bbox(self, bbox_min, bbox_max, reps, parameters=None):
25 self.__check_base_pattern()
26 tiler = PyMesh.WireTiler(self.raw_pattern)
27 if parameters is None:
28 parameters = Parameters(self.pattern)
29 tiler.with_parameters(parameters.raw_parameters)
30 self.raw_wire_network = tiler.tile_with_guide_bbox(
31 np.array(bbox_min, dtype=float),
32 np.array(bbox_max, dtype=float),
33 np.array(reps, dtype=int))
34 self.__apply_vertex_offset()
35
36 def tile_with_guide_mesh(self, mesh, parameters=None):
37 self.__check_base_pattern()
38 tiler = PyMesh.WireTiler(self.raw_pattern)
39 if parameters is None:
40 parameters = Parameters(self.pattern)
41 tiler.with_parameters(parameters.raw_parameters)
42 self.raw_wire_network = tiler.tile_with_guide_mesh(mesh.raw_mesh)
43 self.__apply_vertex_offset()
44
45 def tile_with_mixed_patterns(self, mesh,
46 per_vertex_thickness=False, isotropic_dofs=True):
47 self.__check_base_patterns()
48 tiler = PyMesh.WireTiler(self.raw_patterns[0])
49 self.raw_wire_network = tiler.tile_with_mixed_patterns(
50 self.raw_patterns, mesh.raw_mesh,
51 per_vertex_thickness, isotropic_dofs)
52 self.__apply_vertex_offset()
53
54 def __check_base_pattern(self):
55 if not hasattr(self, "raw_pattern"):
56 raise RuntimeError("Base pattern is not set!")
57
58 def __check_base_patterns(self):
59 if not hasattr(self, "raw_patterns"):
60 raise RuntimeError("Base pattern array is not set!")
61
62 def __apply_vertex_offset(self):
63 vertices = self.raw_wire_network.get_vertices()
64 offset = self.raw_wire_network.get_attribute("vertex_offset")

Callers 8

test_tiledMethod · 0.90
test_profileMethod · 0.90
test_tile_with_bboxMethod · 0.90
tile_with_guide_boxFunction · 0.90
tile_with_guide_meshFunction · 0.90
tile_with_mixed_patternsFunction · 0.90

Calls

no outgoing calls

Tested by 5

test_tiledMethod · 0.72
test_profileMethod · 0.72
test_tile_with_bboxMethod · 0.72