Skip to content

Commit

Permalink
FEATURE: Add support for applying primitive snapping to multiple layers
Browse files Browse the repository at this point in the history
  • Loading branch information
chenchienjacklin committed Feb 4, 2025
1 parent e5b1354 commit 5e36ba3
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 8 deletions.
22 changes: 21 additions & 1 deletion src/ansys/edb/core/inner/messages.py
Original file line number Diff line number Diff line change
Expand Up @@ -113,7 +113,12 @@
)
from ansys.api.edb.v1.polygon_data_pb2 import * # noqa
from ansys.api.edb.v1.port_post_processing_prop_pb2 import PortPostProcessingPropMessage
from ansys.api.edb.v1.refs_pb2 import LayerRefMessage, LayerRefPropertyMessage, NetRefMessage
from ansys.api.edb.v1.refs_pb2 import (
LayerRefMessage,
LayerRefPropertyMessage,
LayerRefsPropertyMessage,
NetRefMessage,
)
from ansys.api.edb.v1.rlc_pb2 import RlcMessage
from ansys.api.edb.v1.simulation_setup_pb2 import MatrixConvergenceEntryMessage
from ansys.api.edb.v1.sparameter_model_pb2 import SParameterModelMessage
Expand Down Expand Up @@ -914,6 +919,16 @@ def layer_ref_message(layer):
return LayerRefMessage(id=edb_obj_message(layer.msg))


def layer_refs_message(layer):
"""Convert to a ``LayerRefsMessage`` object."""
if layer is None:
return None
elif isinstance(layer, list):
return [layer_ref_message(l) for l in layer]
else:
return [layer_ref_message(layer)]


def net_ref_message(net):
"""Convert to a ``NetRefMessage`` object."""
if type(net) == str:
Expand Down Expand Up @@ -1065,6 +1080,11 @@ def layer_ref_property_message(edb_obj, layer_ref):
return LayerRefPropertyMessage(edb_obj=edb_obj.msg, layer_ref=layer_ref_message(layer_ref))


def layer_refs_property_message(edb_obj, layer_refs):
"""Convert to a ``LayerRefsPropertyMessage`` object."""
return LayerRefsPropertyMessage(edb_obj=edb_obj.msg, layer_refs=layer_refs_message(layer_refs))


def double_property_message(edb_obj, double):
"""Convert to a ``DoublePropertyMessage`` object."""
return DoublePropertyMessage(target=edb_obj.msg, value=double)
Expand Down
14 changes: 7 additions & 7 deletions src/ansys/edb/core/layout/layout.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@
def _geometry_simplifications_settings_msg(layout, layer, tol):
"""Create a GeometrySimplificationSettingsMessage."""
return layout_pb2.GeometrySimplificationSettingsMessage(
layout_layer=messages.layer_ref_property_message(layout, layer),
layout_layers=messages.layer_refs_property_message(layout, layer),
tolerance=messages.value_message(tol),
)

Expand Down Expand Up @@ -303,7 +303,7 @@ def reconstruct_arcs(self, layer, tolerance):
Parameters
----------
layer : str or :class:`.Layer`
layer : str, :obj:`list` of str or :class:`.Layer`, :obj:`list` of :class:`.Layer`
Layer to reconstruct arcs on.
tolerance : :class:`.Value`
Tolerance.
Expand All @@ -315,10 +315,10 @@ def unite_primitives(self, layer):
Parameters
----------
layer : str or :class:`.Layer`
layer : str, :obj:`list` of str or :class:`.Layer`, :obj:`list` of :class:`.Layer`
Layer to unite primitives on.
"""
self.__stub.UnitePrimitives(messages.layer_ref_property_message(self, layer))
self.__stub.UnitePrimitives(messages.layer_refs_property_message(self, layer))

def create_stride(self, filename):
"""Create a Stride model from an MCAD file.
Expand Down Expand Up @@ -379,7 +379,7 @@ def group_vias(
Parameters
----------
layer : str or :class:`.Layer`
layer : str, :obj:`list` of str or :class:`.Layer`, :obj:`list` of :class:`.Layer`
Layer containing the primitives to be grouped.
max_grouping_distance : :term:`ValueLike`
Maximum distance between vias in a via group .
Expand Down Expand Up @@ -416,7 +416,7 @@ def snap_vias(
Parameters
----------
layer : str or :class:`.Layer`
layer : str, :obj:`list` of str or :class:`.Layer`, :obj:`list` of :class:`.Layer`
Layer containing the vias to be snapped.
via_snapping_tol : :term:`ValueLike`
Tolerance for snapping vias. If snap_by_area_factor is ``True``, this
Expand All @@ -443,7 +443,7 @@ def snap_primitives(self, layer, tol="0.05um", check_connectivity=True):
Parameters
----------
layer : str or :class:`.Layer`
layer : str, :obj:`list` of str or :class:`.Layer`, :obj:`list` of :class:`.Layer`
Layer containing the primitives to be snapped.
tol : :term:`ValueLike`
Tolerance for snapping primitives.
Expand Down

0 comments on commit 5e36ba3

Please sign in to comment.