Skip to content

Commit

Permalink
get_reduced_layer() now considers cell-arrays (error found in #63)
Browse files Browse the repository at this point in the history
  • Loading branch information
HelgeGehring committed Jan 26, 2022
1 parent f7c0cc0 commit 53970dd
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 4 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ Changelog
Unreleased
-----

* get_reduced_layer() now considers cell-arrays

1.2.1
-----

Expand Down
17 changes: 13 additions & 4 deletions gdshelpers/geometry/chip.py
Original file line number Diff line number Diff line change
Expand Up @@ -411,14 +411,22 @@ def get_reduced_layer(self, layer: int):
:return: a single shapely-geometry
"""

def translate_and_rotate(geometry, offset, angle):
def translate_and_rotate(geometry, offset, angle, columns, rows, spacing):
if not geometry:
return geometry
return translate(rotate(geometry, angle if angle else 0, use_radians=True, origin=(0, 0)), *offset)

if not spacing:
return translate(rotate(geometry, angle if angle else 0, use_radians=True, origin=(0, 0)), *offset)

return translate(
geometric_union(
translate(rotate(geometry, angle if angle else 0, use_radians=True, origin=(0, 0)), spacing[0] * c,
spacing[1] * r) for c in range(columns) for r in range(rows)), *offset)

return geometric_union(
(self.layer_dict[layer] if layer in self.layer_dict else []) +
[translate_and_rotate(cell['cell'].get_reduced_layer(layer), cell['origin'], cell['angle'])
[translate_and_rotate(cell['cell'].get_reduced_layer(layer), cell['origin'], cell['angle'], cell['columns'],
cell['rows'], cell['spacing'])
for cell in self.cells])

def export_mesh(self, filename: str, layer_defs):
Expand Down Expand Up @@ -606,5 +614,6 @@ def add_dlw_taper_at_port(self, label: str, layer: int, port: Port, taper_length
device_cell.export_mesh('my_design.stl', layer_defs={(1, 2): (0, 1)})
print('array')
array_cell = Cell('Array')
array_cell.add_cell(device_cell, rows=2, columns=2, spacing=(1000, 1000))
array_cell.add_cell(device_cell, rows=2, columns=2, spacing=(1000, 1000), angle=np.pi / 10, origin=(500, 500))
array_cell.add_to_layer(2, array_cell.get_reduced_layer(1))
array_cell.save()

0 comments on commit 53970dd

Please sign in to comment.