diff --git a/src/pyedb/dotnet/database/modeler.py b/src/pyedb/dotnet/database/modeler.py index a14eb59854..7f11b4028d 100644 --- a/src/pyedb/dotnet/database/modeler.py +++ b/src/pyedb/dotnet/database/modeler.py @@ -289,20 +289,20 @@ def get_primitive_by_layer_and_point(self, point=None, layer=None, nets=None): if not isinstance(point, list) and len(point) == 2: self._logger.error("Provided point must be a list of two values") return False - pt = self._edb.geometry.point_data(point[0], point[1]) - if isinstance(nets, str): - nets = [nets] - elif nets and not isinstance(nets, list) and len(nets) == len([net for net in nets if isinstance(net, str)]): + pt = self._edb.geometry.point_data(self._pedb.edb_value(point[0]), self._pedb.edb_value(point[1])) + if nets: + if isinstance(nets, str): + nets = [nets] _nets = [] for net in nets: if net not in self._pedb.nets: - self._logger.error( + self._logger.warning( f"Net {net} used to find primitive from layer point and net not found, skipping it." ) else: _nets.append(self._pedb.nets[net].net_obj) if _nets: - nets = _nets + nets = convert_py_list_to_net_list(_nets) _obj_instances = list(self._pedb.layout_instance.FindLayoutObjInstance(pt, None, nets).Items) returned_obj = [] if layer: @@ -324,10 +324,7 @@ def get_primitive_by_layer_and_point(self, point=None, layer=None, nets=None): else: for obj in _obj_instances: obj_id = obj.GetLayoutObj().GetId() - [ - returned_obj.append(Primitive(p, self._pedb)) - for p in [obj for obj in self.primitives if obj.id == obj_id] - ] + [returned_obj.append(p) for p in [obj for obj in self.primitives if obj.id == obj_id]] return returned_obj def get_polygon_bounding_box(self, polygon): diff --git a/tests/legacy/system/test_edb_modeler.py b/tests/legacy/system/test_edb_modeler.py index 592532359c..2281006a1f 100644 --- a/tests/legacy/system/test_edb_modeler.py +++ b/tests/legacy/system/test_edb_modeler.py @@ -550,6 +550,8 @@ def test_get_primitives_by_point_layer_and_nets(self, edb_examples): assert primitives[0].type.lower() == "polygon" primitives = edbapp.modeler.get_primitive_by_layer_and_point(point=[20e-3, 30e-3]) assert len(primitives) == 3 + primitives = edbapp.modeler.get_primitive_by_layer_and_point(point=[20e-3, 30e-3], nets=["GND"]) + assert len(primitives) == 2 edbapp.close() def test_arbitrary_wave_ports(self):