pyedb 0.52.0__py3-none-any.whl → 0.54.0__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of pyedb might be problematic. Click here for more details.

Files changed (97) hide show
  1. pyedb/__init__.py +1 -1
  2. pyedb/configuration/cfg_common.py +12 -15
  3. pyedb/configuration/cfg_data.py +2 -2
  4. pyedb/configuration/cfg_modeler.py +163 -234
  5. pyedb/configuration/cfg_ports_sources.py +6 -8
  6. pyedb/configuration/cfg_stackup.py +62 -249
  7. pyedb/configuration/configuration.py +272 -170
  8. pyedb/dotnet/database/cell/hierarchy/model.py +1 -1
  9. pyedb/dotnet/database/cell/layout.py +1 -1
  10. pyedb/dotnet/database/cell/layout_obj.py +3 -3
  11. pyedb/dotnet/database/cell/primitive/path.py +1 -1
  12. pyedb/dotnet/database/cell/primitive/primitive.py +8 -8
  13. pyedb/dotnet/database/cell/terminal/pingroup_terminal.py +1 -1
  14. pyedb/dotnet/database/cell/terminal/point_terminal.py +1 -1
  15. pyedb/dotnet/database/cell/terminal/terminal.py +24 -26
  16. pyedb/dotnet/database/components.py +33 -27
  17. pyedb/dotnet/database/definition/component_def.py +3 -3
  18. pyedb/dotnet/database/definition/component_model.py +1 -1
  19. pyedb/dotnet/database/definition/package_def.py +1 -1
  20. pyedb/dotnet/database/dotnet/database.py +47 -38
  21. pyedb/dotnet/database/dotnet/primitive.py +16 -16
  22. pyedb/dotnet/database/edb_data/hfss_extent_info.py +6 -6
  23. pyedb/dotnet/database/edb_data/layer_data.py +17 -15
  24. pyedb/dotnet/database/edb_data/padstacks_data.py +12 -12
  25. pyedb/dotnet/database/edb_data/primitives_data.py +3 -3
  26. pyedb/dotnet/database/edb_data/sources.py +6 -6
  27. pyedb/dotnet/database/edb_data/variables.py +7 -3
  28. pyedb/dotnet/database/geometry/point_data.py +1 -1
  29. pyedb/dotnet/database/geometry/polygon_data.py +2 -4
  30. pyedb/dotnet/database/hfss.py +7 -7
  31. pyedb/dotnet/database/materials.py +2 -2
  32. pyedb/dotnet/database/modeler.py +8 -11
  33. pyedb/dotnet/database/nets.py +1 -1
  34. pyedb/dotnet/database/padstack.py +72 -1
  35. pyedb/dotnet/database/sim_setup_data/data/settings.py +24 -0
  36. pyedb/dotnet/database/sim_setup_data/io/siwave.py +26 -1
  37. pyedb/dotnet/database/siwave.py +19 -5
  38. pyedb/dotnet/database/stackup.py +80 -137
  39. pyedb/dotnet/database/utilities/heatsink.py +4 -4
  40. pyedb/dotnet/database/utilities/obj_base.py +1 -1
  41. pyedb/dotnet/database/utilities/simulation_setup.py +1 -1
  42. pyedb/dotnet/database/utilities/siwave_cpa_simulation_setup.py +894 -0
  43. pyedb/dotnet/database/utilities/siwave_simulation_setup.py +15 -0
  44. pyedb/dotnet/database/utilities/value.py +116 -0
  45. pyedb/dotnet/edb.py +58 -45
  46. pyedb/generic/design_types.py +39 -1
  47. pyedb/generic/grpc_warnings.py +5 -0
  48. pyedb/grpc/__init__.py +0 -0
  49. pyedb/grpc/database/components.py +155 -98
  50. pyedb/grpc/database/control_file.py +240 -193
  51. pyedb/grpc/database/definition/materials.py +23 -30
  52. pyedb/grpc/database/definition/package_def.py +15 -15
  53. pyedb/grpc/database/definition/padstack_def.py +51 -51
  54. pyedb/grpc/database/definitions.py +7 -5
  55. pyedb/grpc/database/geometry/arc_data.py +7 -5
  56. pyedb/grpc/database/geometry/point_3d_data.py +8 -7
  57. pyedb/grpc/database/geometry/polygon_data.py +3 -2
  58. pyedb/grpc/database/hierarchy/component.py +43 -38
  59. pyedb/grpc/database/hierarchy/pin_pair_model.py +15 -14
  60. pyedb/grpc/database/hierarchy/pingroup.py +9 -9
  61. pyedb/grpc/database/layers/stackup_layer.py +45 -44
  62. pyedb/grpc/database/layout/layout.py +9 -8
  63. pyedb/grpc/database/layout/voltage_regulator.py +7 -7
  64. pyedb/grpc/database/layout_validation.py +13 -12
  65. pyedb/grpc/database/modeler.py +156 -131
  66. pyedb/grpc/database/nets.py +42 -31
  67. pyedb/grpc/database/padstacks.py +270 -175
  68. pyedb/grpc/database/ports/ports.py +5 -6
  69. pyedb/grpc/database/primitive/bondwire.py +8 -7
  70. pyedb/grpc/database/primitive/circle.py +4 -4
  71. pyedb/grpc/database/primitive/padstack_instance.py +18 -18
  72. pyedb/grpc/database/primitive/path.py +7 -7
  73. pyedb/grpc/database/primitive/polygon.py +3 -3
  74. pyedb/grpc/database/primitive/primitive.py +13 -17
  75. pyedb/grpc/database/primitive/rectangle.py +13 -13
  76. pyedb/grpc/database/simulation_setup/hfss_general_settings.py +1 -1
  77. pyedb/grpc/database/simulation_setup/hfss_simulation_setup.py +10 -0
  78. pyedb/grpc/database/simulation_setup/siwave_cpa_simulation_setup.py +961 -0
  79. pyedb/grpc/database/simulation_setup/siwave_simulation_setup.py +17 -1
  80. pyedb/grpc/database/siwave.py +44 -24
  81. pyedb/grpc/database/source_excitations.py +333 -229
  82. pyedb/grpc/database/stackup.py +164 -147
  83. pyedb/grpc/database/terminal/bundle_terminal.py +17 -7
  84. pyedb/grpc/database/terminal/edge_terminal.py +10 -0
  85. pyedb/grpc/database/terminal/padstack_instance_terminal.py +15 -4
  86. pyedb/grpc/database/terminal/pingroup_terminal.py +11 -10
  87. pyedb/grpc/database/terminal/point_terminal.py +4 -3
  88. pyedb/grpc/database/terminal/terminal.py +9 -9
  89. pyedb/grpc/database/utility/value.py +109 -0
  90. pyedb/grpc/edb.py +129 -45
  91. pyedb/grpc/edb_init.py +0 -7
  92. pyedb/siwave_core/cpa/simulation_setup_data_model.py +132 -0
  93. pyedb/siwave_core/product_properties.py +198 -0
  94. {pyedb-0.52.0.dist-info → pyedb-0.54.0.dist-info}/METADATA +15 -13
  95. {pyedb-0.52.0.dist-info → pyedb-0.54.0.dist-info}/RECORD +97 -89
  96. {pyedb-0.52.0.dist-info → pyedb-0.54.0.dist-info}/WHEEL +1 -1
  97. {pyedb-0.52.0.dist-info → pyedb-0.54.0.dist-info/licenses}/LICENSE +0 -0
@@ -20,14 +20,13 @@
20
20
  # OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
21
  # SOFTWARE.
22
22
 
23
- from ansys.edb.core.utility.value import Value as GrpcValue
24
-
25
23
  from pyedb.dotnet.database.cell.terminal.terminal import Terminal
26
24
  from pyedb.grpc.database.terminal.bundle_terminal import BundleTerminal
27
25
  from pyedb.grpc.database.terminal.edge_terminal import EdgeTerminal
28
26
  from pyedb.grpc.database.terminal.padstack_instance_terminal import (
29
27
  PadstackInstanceTerminal,
30
28
  )
29
+ from pyedb.grpc.database.utility.value import Value
31
30
 
32
31
 
33
32
  class GapPort(EdgeTerminal):
@@ -60,7 +59,7 @@ class GapPort(EdgeTerminal):
60
59
  float
61
60
  Magnitude value.
62
61
  """
63
- return self._edb_object.source_amplitude.value
62
+ return Value(self._edb_object.source_amplitude, self._pedb.active_cell)
64
63
 
65
64
  @property
66
65
  def phase(self) -> float:
@@ -71,7 +70,7 @@ class GapPort(EdgeTerminal):
71
70
  float
72
71
  Phase value.
73
72
  """
74
- return self._edb_object.source_phase.value
73
+ return Value(self._edb_object.source_phase, self._pedb.active_cell)
75
74
 
76
75
  @property
77
76
  def renormalize(self) -> bool:
@@ -236,12 +235,12 @@ class WavePort(EdgeTerminal):
236
235
  float
237
236
  deembed value.
238
237
  """
239
- return self._edb_object.port_post_processing_prop.deembed_length.value
238
+ return Value(self._edb_object.port_post_processing_prop.deembed_length, self._pedb.active_cell)
240
239
 
241
240
  @deembed_length.setter
242
241
  def deembed_length(self, value):
243
242
  p = self._edb_object.port_post_processing_prop
244
- p.deembed_length = GrpcValue(value)
243
+ p.deembed_length = Value(value)
245
244
  self._edb_object.port_post_processing_prop = p
246
245
 
247
246
 
@@ -25,7 +25,8 @@ from ansys.edb.core.primitive.bondwire import (
25
25
  )
26
26
  from ansys.edb.core.primitive.bondwire import Bondwire as GrpcBondWire
27
27
  from ansys.edb.core.primitive.bondwire import BondwireType as GrpcBondWireType
28
- from ansys.edb.core.utility.value import Value as GrpcValue
28
+
29
+ from pyedb.grpc.database.utility.value import Value
29
30
 
30
31
 
31
32
  class Bondwire(GrpcBondWire):
@@ -113,11 +114,11 @@ class Bondwire(GrpcBondWire):
113
114
  float
114
115
  Cross section height.
115
116
  """
116
- return super().cross_section_height.value
117
+ return Value(super().cross_section_height)
117
118
 
118
119
  @cross_section_height.setter
119
120
  def cross_section_height(self, cross_section_height):
120
- super(Bondwire, self.__class__).cross_section_height.__set__(self, GrpcValue(cross_section_height))
121
+ super(Bondwire, self.__class__).cross_section_height.__set__(self, Value(cross_section_height))
121
122
 
122
123
  # @property
123
124
  # def trajectory(self):
@@ -134,11 +135,11 @@ class Bondwire(GrpcBondWire):
134
135
  # **x1** : X value of the end point.
135
136
  # **y1** : Y value of the end point.
136
137
  # """
137
- # return [i.value for i in self.get_traj()]
138
+ # return [Value(i) for i in self.get_traj()]
138
139
  #
139
140
  # @trajectory.setter
140
141
  # def trajectory(self, value):
141
- # values = [GrpcValue(i) for i in value]
142
+ # values = [Value(i) for i in value]
142
143
  # self.set_traj(values[0], values[1], values[2], values[3])
143
144
 
144
145
  @property
@@ -150,11 +151,11 @@ class Bondwire(GrpcBondWire):
150
151
  float
151
152
  Width value.
152
153
  """
153
- return super().width.value
154
+ return Value(super().width)
154
155
 
155
156
  @width.setter
156
157
  def width(self, width):
157
- super(Bondwire, self.__class__).width.__set__(self, GrpcValue(width))
158
+ super(Bondwire, self.__class__).width.__set__(self, Value(width))
158
159
 
159
160
  # @property
160
161
  # def start_elevation(self):
@@ -22,9 +22,9 @@
22
22
 
23
23
 
24
24
  from ansys.edb.core.primitive.circle import Circle as GrpcCircle
25
- from ansys.edb.core.utility.value import Value as GrpcValue
26
25
 
27
26
  from pyedb.grpc.database.primitive.primitive import Primitive
27
+ from pyedb.grpc.database.utility.value import Value
28
28
 
29
29
 
30
30
  class Circle(GrpcCircle, Primitive):
@@ -33,7 +33,7 @@ class Circle(GrpcCircle, Primitive):
33
33
  Primitive.__init__(self, pedb, edb_object)
34
34
  self._pedb = pedb
35
35
 
36
- def get_parameters(self):
36
+ def get_parameters(self) -> tuple[float, float, float]:
37
37
  """Returns parameters.
38
38
 
39
39
  Returns
@@ -57,7 +57,7 @@ class Circle(GrpcCircle, Primitive):
57
57
 
58
58
  """
59
59
  params = super().get_parameters()
60
- return params[0].value, params[1].value, params[2].value
60
+ return Value(params[0]), Value(params[1]), Value(params[2])
61
61
 
62
62
  def set_parameters(self, center_x, center_y, radius):
63
63
  """Set parameters.
@@ -72,4 +72,4 @@ class Circle(GrpcCircle, Primitive):
72
72
  Circle radius.
73
73
 
74
74
  """
75
- super().set_parameters(GrpcValue(center_x), GrpcValue(center_y), GrpcValue(radius))
75
+ super().set_parameters(Value(center_x), Value(center_y), Value(radius))
@@ -33,12 +33,12 @@ from ansys.edb.core.primitive.padstack_instance import (
33
33
  from ansys.edb.core.terminal.pin_group_terminal import (
34
34
  PinGroupTerminal as GrpcPinGroupTerminal,
35
35
  )
36
- from ansys.edb.core.utility.value import Value as GrpcValue
37
36
 
38
37
  from pyedb.grpc.database.definition.padstack_def import PadstackDef
39
38
  from pyedb.grpc.database.terminal.padstack_instance_terminal import (
40
39
  PadstackInstanceTerminal,
41
40
  )
41
+ from pyedb.grpc.database.utility.value import Value
42
42
  from pyedb.modeler.geometry_operators import GeometryOperators
43
43
 
44
44
 
@@ -266,7 +266,7 @@ class PadstackInstance(GrpcPadstackInstance):
266
266
  @_em_properties.setter
267
267
  def _em_properties(self, em_prop):
268
268
  """Set EM properties"""
269
- pid = self._pedb.edb_api.ProductId.Designer
269
+ pid = self._pedb.core.ProductId.Designer
270
270
  self.set_product_property(pid, 18, em_prop)
271
271
 
272
272
  @property
@@ -503,9 +503,9 @@ class PadstackInstance(GrpcPadstackInstance):
503
503
  position = self.get_position_and_rotation()
504
504
  if self.component:
505
505
  out2 = self.component.transform.transform_point(GrpcPointData(position[:2]))
506
- self._position = [round(out2[0].value, 6), round(out2[1].value, 6)]
506
+ self._position = [Value(out2[0]), Value(out2[1])]
507
507
  else:
508
- self._position = [round(pt.value, 6) for pt in position[:2]]
508
+ self._position = [Value(pt) for pt in position[:2]]
509
509
  return self._position
510
510
 
511
511
  @position.setter
@@ -513,12 +513,12 @@ class PadstackInstance(GrpcPadstackInstance):
513
513
  pos = []
514
514
  for v in value:
515
515
  if isinstance(v, (float, int, str)):
516
- pos.append(GrpcValue(v, self._pedb.active_cell))
516
+ pos.append(Value(v, self._pedb.active_cell))
517
517
  else:
518
518
  pos.append(v)
519
519
  point_data = GrpcPointData(pos[0], pos[1])
520
520
  self.set_position_and_rotation(
521
- x=point_data.x, y=point_data.y, rotation=GrpcValue(self.rotation, self._pedb.active_cell)
521
+ x=point_data.x, y=point_data.y, rotation=Value(self.rotation, self._pedb.active_cell)
522
522
  )
523
523
 
524
524
  @property
@@ -530,7 +530,7 @@ class PadstackInstance(GrpcPadstackInstance):
530
530
  float
531
531
  Rotatation value for the padstack instance.
532
532
  """
533
- return self.get_position_and_rotation()[-1].value
533
+ return Value(self.get_position_and_rotation()[-1])
534
534
 
535
535
  @property
536
536
  def name(self) -> str:
@@ -714,8 +714,8 @@ class PadstackInstance(GrpcPadstackInstance):
714
714
  """
715
715
  back_drill = super().get_back_drill_by_layer(from_bottom)
716
716
  layer = back_drill[0].name
717
- offset = round(back_drill[1].value, 9)
718
- diameter = round(back_drill[2].value, 9)
717
+ offset = Value(back_drill[1])
718
+ diameter = Value(back_drill[2])
719
719
  return layer, offset, diameter
720
720
 
721
721
  def get_back_drill_by_depth(self, from_bottom=True) -> tuple[float, float]:
@@ -730,8 +730,8 @@ class PadstackInstance(GrpcPadstackInstance):
730
730
  tuple (drill_depth, drill_diameter) (float, float)
731
731
  """
732
732
  back_drill = super().get_back_drill_by_depth(from_bottom)
733
- drill_depth = back_drill[0].value
734
- drill_diameter = back_drill[1].value
733
+ drill_depth = Value(back_drill[0])
734
+ drill_diameter = Value(back_drill[1])
735
735
  return drill_depth, drill_diameter
736
736
 
737
737
  def set_back_drill_by_depth(self, drill_depth, diameter, from_bottom=True):
@@ -747,7 +747,7 @@ class PadstackInstance(GrpcPadstackInstance):
747
747
  Default value is `True`.
748
748
  """
749
749
  super().set_back_drill_by_depth(
750
- drill_depth=GrpcValue(drill_depth), diameter=GrpcValue(diameter), from_bottom=from_bottom
750
+ drill_depth=Value(drill_depth), diameter=Value(diameter), from_bottom=from_bottom
751
751
  )
752
752
 
753
753
  def set_back_drill_by_layer(self, drill_to_layer, offset, diameter, from_bottom=True):
@@ -768,8 +768,8 @@ class PadstackInstance(GrpcPadstackInstance):
768
768
  drill_to_layer = self._pedb.stackup.layers[drill_to_layer]
769
769
  super().set_back_drill_by_layer(
770
770
  drill_to_layer=drill_to_layer,
771
- offset=GrpcValue(offset),
772
- diameter=GrpcValue(diameter),
771
+ offset=Value(offset),
772
+ diameter=Value(diameter),
773
773
  from_bottom=from_bottom,
774
774
  )
775
775
 
@@ -812,8 +812,8 @@ class PadstackInstance(GrpcPadstackInstance):
812
812
  List[:class:`PadstackInstance <pyedb.grpc.database.primitive.padstack_instance.PadstackInstance>`]
813
813
  List of the voids that include this padstack instance.
814
814
  """
815
- x_pos = GrpcValue(self.position[0])
816
- y_pos = GrpcValue(self.position[1])
815
+ x_pos = Value(self.position[0])
816
+ y_pos = Value(self.position[1])
817
817
  point_data = GrpcPointData([x_pos, y_pos])
818
818
 
819
819
  voids = []
@@ -1068,7 +1068,7 @@ class PadstackInstance(GrpcPadstackInstance):
1068
1068
  if point.is_arc:
1069
1069
  continue
1070
1070
  else:
1071
- points.append([point.x.value, point.y.value])
1071
+ points.append([Value(point.x), Value(point.y)])
1072
1072
  xpoly, ypoly = zip(*points)
1073
1073
  polygon = [list(xpoly), list(ypoly)]
1074
1074
  rectangles = GeometryOperators.find_largest_rectangle_inside_polygon(
@@ -1086,7 +1086,7 @@ class PadstackInstance(GrpcPadstackInstance):
1086
1086
  for point in path.points:
1087
1087
  if self.component:
1088
1088
  p_transf = self.component.transform.transform_point(point)
1089
- new_rect.append([p_transf.x.value, p_transf.y.value])
1089
+ new_rect.append([Value(p_transf.x), Value(p_transf.y)])
1090
1090
  if return_points:
1091
1091
  return new_rect
1092
1092
  else:
@@ -24,9 +24,9 @@ import math
24
24
  from ansys.edb.core.geometry.polygon_data import PolygonData as GrpcPolygonData
25
25
  from ansys.edb.core.primitive.path import Path as GrpcPath
26
26
  from ansys.edb.core.primitive.path import PathCornerType as GrpcPatCornerType
27
- from ansys.edb.core.utility.value import Value as GrpcValue
28
27
 
29
28
  from pyedb.grpc.database.primitive.primitive import Primitive
29
+ from pyedb.grpc.database.utility.value import Value
30
30
 
31
31
 
32
32
  class Path(GrpcPath, Primitive):
@@ -45,11 +45,11 @@ class Path(GrpcPath, Primitive):
45
45
  float
46
46
  Path width or None.
47
47
  """
48
- return round(super().width.value, 9)
48
+ return Value(super().width)
49
49
 
50
50
  @width.setter
51
51
  def width(self, value):
52
- super(Path, self.__class__).width.__set__(self, GrpcValue(value))
52
+ super(Path, self.__class__).width.__set__(self, Value(value))
53
53
 
54
54
  @property
55
55
  def length(self) -> float:
@@ -119,7 +119,7 @@ class Path(GrpcPath, Primitive):
119
119
  layout=self._pedb.active_layout,
120
120
  layer=self.layer,
121
121
  net=self.net,
122
- width=GrpcValue(self.width),
122
+ width=Value(self.width),
123
123
  end_cap1=self.get_end_cap_style()[0],
124
124
  end_cap2=self.get_end_cap_style()[1],
125
125
  corner_style=mapping[self.corner_style],
@@ -289,8 +289,8 @@ class Path(GrpcPath, Primitive):
289
289
  rightline.append(rightPt)
290
290
  return leftline, rightline
291
291
 
292
- distance = GrpcValue(distance).value
293
- gap = GrpcValue(gap).value
292
+ distance = Value(distance)
293
+ gap = Value(gap)
294
294
  center_line = self.center_line
295
295
  leftline, rightline = get_parallet_lines(center_line, distance)
296
296
  for x, y in get_locations(rightline, gap) + get_locations(leftline, gap):
@@ -315,7 +315,7 @@ class Path(GrpcPath, Primitive):
315
315
  List[List[float, float]].
316
316
 
317
317
  """
318
- return [[pt.x.value, pt.y.value] for pt in super().center_line.points]
318
+ return [[Value(pt.x), Value(pt.y)] for pt in super().center_line.points]
319
319
 
320
320
  # def set_center_line(self, value):
321
321
  # if isinstance(value, list):
@@ -26,9 +26,9 @@ import math
26
26
  from ansys.edb.core.geometry.point_data import PointData as GrpcPointData
27
27
  from ansys.edb.core.geometry.polygon_data import PolygonData as GrpcPolygonData
28
28
  from ansys.edb.core.primitive.polygon import Polygon as GrpcPolygon
29
- from ansys.edb.core.utility.value import Value as GrpcValue
30
29
 
31
30
  from pyedb.grpc.database.primitive.primitive import Primitive
31
+ from pyedb.grpc.database.utility.value import Value
32
32
 
33
33
 
34
34
  class Polygon(GrpcPolygon, Primitive):
@@ -147,7 +147,7 @@ class Polygon(GrpcPolygon, Primitive):
147
147
  >>> polygon.move(vector=["2mm", "100um"])
148
148
  """
149
149
  if vector and isinstance(vector, list) and len(vector) == 2:
150
- _vector = [GrpcValue(pt).value for pt in vector]
150
+ _vector = [Value(pt) for pt in vector]
151
151
  self.polygon_data = self.polygon_data.move(_vector)
152
152
  return True
153
153
  return False
@@ -177,7 +177,7 @@ class Polygon(GrpcPolygon, Primitive):
177
177
  else:
178
178
  self._pedb.logger.error(f"Failed to evaluate center on primitive {self.id}")
179
179
  elif isinstance(center, list) and len(center) == 2:
180
- center = GrpcPointData([GrpcValue(center[0]), GrpcValue(center[1])])
180
+ center = GrpcPointData([Value(center[0]), Value(center[1])])
181
181
  self.polygon_data = self.polygon_data.scale(factor, center)
182
182
  return True
183
183
  return False
@@ -25,6 +25,7 @@ from ansys.edb.core.geometry.point_data import PointData as GrpcPointData
25
25
  from ansys.edb.core.primitive.circle import Circle as GrpcCircle
26
26
  from ansys.edb.core.primitive.primitive import Primitive as GrpcPrimitive
27
27
 
28
+ from pyedb.grpc.database.utility.value import Value
28
29
  from pyedb.misc.utilities import compute_arc_points
29
30
  from pyedb.modeler.geometry_operators import GeometryOperators
30
31
 
@@ -202,15 +203,15 @@ class Primitive(GrpcPrimitive):
202
203
  y = []
203
204
  for i, point in enumerate(my_net_points):
204
205
  if not point.is_arc:
205
- x.append(point.x.value)
206
- y.append(point.y.value)
206
+ x.append(Value(point.x))
207
+ y.append(Value(point.y))
207
208
  else:
208
- arc_h = point.arc_height.value
209
- p1 = [my_net_points[i - 1].x.value, my_net_points[i - 1].y.value]
209
+ arc_h = Value(point.arc_height)
210
+ p1 = [Value(my_net_points[i - 1].x), Value(my_net_points[i - 1].y)]
210
211
  if i + 1 < len(my_net_points):
211
- p2 = [my_net_points[i + 1].x.value, my_net_points[i + 1].y.value]
212
+ p2 = [Value(my_net_points[i + 1].x), Value(my_net_points[i + 1].y)]
212
213
  else:
213
- p2 = [my_net_points[0].x.value, my_net_points[0].y.value]
214
+ p2 = [Value(my_net_points[0].x), Value(my_net_points[0].y)]
214
215
  x_arc, y_arc = compute_arc_points(p1, p2, arc_h, num)
215
216
  x.extend(x_arc)
216
217
  y.extend(y_arc)
@@ -228,7 +229,7 @@ class Primitive(GrpcPrimitive):
228
229
 
229
230
  """
230
231
  center = self.cast().polygon_data.bounding_circle()[0]
231
- return [center.x.value, center.y.value]
232
+ return [Value(center.x), Value(center.y)]
232
233
 
233
234
  def get_connected_object_id_set(self) -> list[int]:
234
235
  """Produce a list of all geometries physically connected to a given layout object.
@@ -253,12 +254,7 @@ class Primitive(GrpcPrimitive):
253
254
 
254
255
  """
255
256
  bbox = self.cast().polygon_data.bbox()
256
- return [
257
- round(bbox[0].x.value, 6),
258
- round(bbox[0].y.value, 6),
259
- round(bbox[1].x.value, 6),
260
- round(bbox[1].y.value, 6),
261
- ]
257
+ return [Value(bbox[0].x), Value(bbox[0].y), Value(bbox[1].x), Value(bbox[1].y)]
262
258
 
263
259
  def convert_to_polygon(self):
264
260
  """Convert path to polygon.
@@ -329,7 +325,7 @@ class Primitive(GrpcPrimitive):
329
325
  point = GrpcPointData(point)
330
326
 
331
327
  p0 = self.cast().polygon_data.closest_point(point)
332
- return [p0.x.value, p0.y.value]
328
+ return [Value(p0.x), Value(p0.y)]
333
329
 
334
330
  @property
335
331
  def arcs(self):
@@ -549,16 +545,16 @@ class Primitive(GrpcPrimitive):
549
545
  """
550
546
 
551
547
  if isinstance(point, GrpcPointData):
552
- point = [point.x.value, point.y.value]
548
+ point = [Value(point.x), Value(point.y)]
553
549
  dist = 1e12
554
550
  out = None
555
551
  for arc in self.arcs:
556
552
  mid_point = arc.midpoint
557
- mid_point = [mid_point.x.value, mid_point.y.value]
553
+ mid_point = [Value(mid_point.x), Value(mid_point.y)]
558
554
  if GeometryOperators.points_distance(mid_point, point) < dist:
559
555
  out = arc.midpoint
560
556
  dist = GeometryOperators.points_distance(mid_point, point)
561
- return [out.x.value, out.y.value]
557
+ return [Value(out.x), Value(out.y)]
562
558
 
563
559
  @property
564
560
  def shortest_arc(self) -> float:
@@ -25,9 +25,9 @@ from ansys.edb.core.primitive.rectangle import (
25
25
  RectangleRepresentationType as GrpcRectangleRepresentationType,
26
26
  )
27
27
  from ansys.edb.core.primitive.rectangle import Rectangle as GrpcRectangle
28
- from ansys.edb.core.utility.value import Value as GrpcValue
29
28
 
30
29
  from pyedb.grpc.database.primitive.primitive import Primitive
30
+ from pyedb.grpc.database.utility.value import Value
31
31
 
32
32
 
33
33
  class Rectangle(GrpcRectangle, Primitive):
@@ -106,12 +106,12 @@ class Rectangle(GrpcRectangle, Primitive):
106
106
  """
107
107
  parameters = super().get_parameters()
108
108
  representation_type = parameters[0].name.lower()
109
- parameter1 = parameters[1].value
110
- parameter2 = parameters[2].value
111
- parameter3 = parameters[3].value
112
- parameter4 = parameters[4].value
113
- corner_radius = parameters[5].value
114
- rotation = parameters[6].value
109
+ parameter1 = Value(parameters[1])
110
+ parameter2 = Value(parameters[2])
111
+ parameter3 = Value(parameters[3])
112
+ parameter4 = Value(parameters[4])
113
+ corner_radius = Value(parameters[5])
114
+ rotation = Value(parameters[6])
115
115
  return representation_type, parameter1, parameter2, parameter3, parameter4, corner_radius, rotation
116
116
 
117
117
  def set_parameters(self, rep_type, param1, param2, param3, param4, corner_rad, rotation):
@@ -137,10 +137,10 @@ class Rectangle(GrpcRectangle, Primitive):
137
137
 
138
138
  return super().set_parameters(
139
139
  self.representation_type[rep_type],
140
- GrpcValue(param1),
141
- GrpcValue(param2),
142
- GrpcValue(param3),
143
- GrpcValue(param4),
144
- GrpcValue(corner_rad),
145
- GrpcValue(rotation),
140
+ Value(param1),
141
+ Value(param2),
142
+ Value(param3),
143
+ Value(param4),
144
+ Value(corner_rad),
145
+ Value(rotation),
146
146
  )
@@ -51,7 +51,7 @@ class HFSSGeneralSettings(GrpcHFSSGeneralSettings):
51
51
  @adaptive_solution_type.setter
52
52
  def adaptive_solution_type(self, value):
53
53
  if isinstance(value, str):
54
- if value.lower() == "singlw":
54
+ if value.lower() == "single":
55
55
  self.adaptive_solution_type = GrpcAdaptType.SINGLE
56
56
  elif value.lower() == "multi_frequencies":
57
57
  self.adaptive_solution_type = GrpcAdaptType.MULTI_FREQUENCIES
@@ -43,6 +43,16 @@ class HfssSimulationSetup(GrpcHfssSimulationSetup):
43
43
  self._pedb = pedb
44
44
  self._name = name
45
45
 
46
+ @property
47
+ def hfss_solver_settings(self):
48
+ """Legacy compatibility to settings properties."""
49
+ return self.settings.options
50
+
51
+ @property
52
+ def adaptive_settings(self):
53
+ """Legacy compatibility to general settings."""
54
+ return self.settings.general
55
+
46
56
  def set_solution_single_frequency(self, frequency="5GHz", max_num_passes=10, max_delta_s=0.02) -> bool:
47
57
  """Set HFSS single frequency solution.
48
58
  Parameters