3636from pyedb .dotnet .edb_core .edb_data .layer_data import (
3737 LayerEdbClass ,
3838 StackupLayerEdbClass ,
39+ layer_cast ,
3940)
4041from pyedb .dotnet .edb_core .general import convert_py_list_to_net_list
4142from pyedb .generic .general_methods import ET , generate_unique_name
@@ -284,10 +285,7 @@ def all_layers(self):
284285 layer_list = list (self ._edb_object .Layers (self ._pedb .edb_api .cell .layer_type_set .AllLayerSet ))
285286 temp = dict ()
286287 for i in layer_list :
287- if i .IsStackupLayer ():
288- obj = StackupLayerEdbClass (self ._pedb , i .Clone (), name = i .GetName ())
289- else :
290- obj = LayerEdbClass (self ._pedb , i .Clone (), name = i .GetName ())
288+ obj = layer_cast (self ._pedb , i )
291289 temp [obj .name ] = obj
292290 return temp
293291
@@ -306,12 +304,20 @@ def layers(self):
306304 """
307305 return {name : obj for name , obj in self .all_layers .items () if obj .is_stackup_layer }
308306
307+ def find_layer_by_name (self , name : str ):
308+ """Finds a layer with the given name."""
309+ obj = self ._pedb .edb_api .cell ._cell .Layer .FindByName (self ._edb_object , name )
310+ if obj .IsNull ():
311+ raise ValueError ("Layer with name '{}' was not found." .format (name ))
312+ else :
313+ return layer_cast (self ._pedb , obj .Clone ())
314+
309315
310316class Stackup (LayerCollection ):
311317 """Manages EDB methods for stackup accessible from `Edb.stackup` property."""
312318
313319 def __getitem__ (self , item ):
314- return self .all_layers [ item ]
320+ return self .find_layer_by_name ( item )
315321
316322 def __init__ (self , pedb , edb_object = None ):
317323 super ().__init__ (pedb , edb_object )
@@ -1800,7 +1806,7 @@ def residual_copper_area_per_layer(self):
18001806 temp_data = {name : 0 for name , _ in self .signal_layers .items ()}
18011807 outline_area = 0
18021808 for i in self ._pedb .modeler .primitives :
1803- layer_name = i .layer . name
1809+ layer_name = i ._edb_object . GetLayer (). GetName ()
18041810 if layer_name .lower () == "outline" :
18051811 if i .area () > outline_area :
18061812 outline_area = i .area ()
0 commit comments