pyedb 0.2.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 (128) hide show
  1. pyedb/__init__.py +17 -0
  2. pyedb/dotnet/__init__.py +0 -0
  3. pyedb/dotnet/application/Variables.py +2261 -0
  4. pyedb/dotnet/application/__init__.py +0 -0
  5. pyedb/dotnet/clr_module.py +103 -0
  6. pyedb/dotnet/edb.py +4237 -0
  7. pyedb/dotnet/edb_core/__init__.py +1 -0
  8. pyedb/dotnet/edb_core/cell/__init__.py +0 -0
  9. pyedb/dotnet/edb_core/cell/hierarchy/__init__.py +0 -0
  10. pyedb/dotnet/edb_core/cell/hierarchy/model.py +66 -0
  11. pyedb/dotnet/edb_core/components.py +2669 -0
  12. pyedb/dotnet/edb_core/configuration.py +423 -0
  13. pyedb/dotnet/edb_core/definition/__init__.py +0 -0
  14. pyedb/dotnet/edb_core/definition/component_def.py +166 -0
  15. pyedb/dotnet/edb_core/definition/component_model.py +30 -0
  16. pyedb/dotnet/edb_core/definition/definition_obj.py +18 -0
  17. pyedb/dotnet/edb_core/definition/definitions.py +12 -0
  18. pyedb/dotnet/edb_core/dotnet/__init__.py +0 -0
  19. pyedb/dotnet/edb_core/dotnet/database.py +1218 -0
  20. pyedb/dotnet/edb_core/dotnet/layout.py +238 -0
  21. pyedb/dotnet/edb_core/dotnet/primitive.py +1517 -0
  22. pyedb/dotnet/edb_core/edb_data/__init__.py +0 -0
  23. pyedb/dotnet/edb_core/edb_data/components_data.py +938 -0
  24. pyedb/dotnet/edb_core/edb_data/connectable.py +113 -0
  25. pyedb/dotnet/edb_core/edb_data/control_file.py +1268 -0
  26. pyedb/dotnet/edb_core/edb_data/design_options.py +35 -0
  27. pyedb/dotnet/edb_core/edb_data/edbvalue.py +45 -0
  28. pyedb/dotnet/edb_core/edb_data/hfss_extent_info.py +330 -0
  29. pyedb/dotnet/edb_core/edb_data/hfss_simulation_setup_data.py +1607 -0
  30. pyedb/dotnet/edb_core/edb_data/layer_data.py +576 -0
  31. pyedb/dotnet/edb_core/edb_data/nets_data.py +281 -0
  32. pyedb/dotnet/edb_core/edb_data/obj_base.py +19 -0
  33. pyedb/dotnet/edb_core/edb_data/padstacks_data.py +2080 -0
  34. pyedb/dotnet/edb_core/edb_data/ports.py +287 -0
  35. pyedb/dotnet/edb_core/edb_data/primitives_data.py +1397 -0
  36. pyedb/dotnet/edb_core/edb_data/simulation_configuration.py +2914 -0
  37. pyedb/dotnet/edb_core/edb_data/simulation_setup.py +716 -0
  38. pyedb/dotnet/edb_core/edb_data/siwave_simulation_setup_data.py +1205 -0
  39. pyedb/dotnet/edb_core/edb_data/sources.py +514 -0
  40. pyedb/dotnet/edb_core/edb_data/terminals.py +632 -0
  41. pyedb/dotnet/edb_core/edb_data/utilities.py +148 -0
  42. pyedb/dotnet/edb_core/edb_data/variables.py +91 -0
  43. pyedb/dotnet/edb_core/general.py +181 -0
  44. pyedb/dotnet/edb_core/hfss.py +1646 -0
  45. pyedb/dotnet/edb_core/layout.py +1244 -0
  46. pyedb/dotnet/edb_core/layout_validation.py +272 -0
  47. pyedb/dotnet/edb_core/materials.py +939 -0
  48. pyedb/dotnet/edb_core/net_class.py +335 -0
  49. pyedb/dotnet/edb_core/nets.py +1215 -0
  50. pyedb/dotnet/edb_core/padstack.py +1389 -0
  51. pyedb/dotnet/edb_core/siwave.py +1427 -0
  52. pyedb/dotnet/edb_core/stackup.py +2703 -0
  53. pyedb/edb_logger.py +396 -0
  54. pyedb/generic/__init__.py +0 -0
  55. pyedb/generic/constants.py +1063 -0
  56. pyedb/generic/data_handlers.py +320 -0
  57. pyedb/generic/design_types.py +104 -0
  58. pyedb/generic/filesystem.py +150 -0
  59. pyedb/generic/general_methods.py +1535 -0
  60. pyedb/generic/plot.py +1840 -0
  61. pyedb/generic/process.py +285 -0
  62. pyedb/generic/settings.py +224 -0
  63. pyedb/ipc2581/__init__.py +0 -0
  64. pyedb/ipc2581/bom/__init__.py +0 -0
  65. pyedb/ipc2581/bom/bom.py +21 -0
  66. pyedb/ipc2581/bom/bom_item.py +32 -0
  67. pyedb/ipc2581/bom/characteristics.py +37 -0
  68. pyedb/ipc2581/bom/refdes.py +16 -0
  69. pyedb/ipc2581/content/__init__.py +0 -0
  70. pyedb/ipc2581/content/color.py +38 -0
  71. pyedb/ipc2581/content/content.py +55 -0
  72. pyedb/ipc2581/content/dictionary_color.py +29 -0
  73. pyedb/ipc2581/content/dictionary_fill.py +28 -0
  74. pyedb/ipc2581/content/dictionary_line.py +30 -0
  75. pyedb/ipc2581/content/entry_color.py +13 -0
  76. pyedb/ipc2581/content/entry_line.py +14 -0
  77. pyedb/ipc2581/content/fill.py +15 -0
  78. pyedb/ipc2581/content/layer_ref.py +10 -0
  79. pyedb/ipc2581/content/standard_geometries_dictionary.py +72 -0
  80. pyedb/ipc2581/ecad/__init__.py +0 -0
  81. pyedb/ipc2581/ecad/cad_data/__init__.py +0 -0
  82. pyedb/ipc2581/ecad/cad_data/assembly_drawing.py +26 -0
  83. pyedb/ipc2581/ecad/cad_data/cad_data.py +37 -0
  84. pyedb/ipc2581/ecad/cad_data/component.py +41 -0
  85. pyedb/ipc2581/ecad/cad_data/drill.py +30 -0
  86. pyedb/ipc2581/ecad/cad_data/feature.py +54 -0
  87. pyedb/ipc2581/ecad/cad_data/layer.py +41 -0
  88. pyedb/ipc2581/ecad/cad_data/layer_feature.py +151 -0
  89. pyedb/ipc2581/ecad/cad_data/logical_net.py +32 -0
  90. pyedb/ipc2581/ecad/cad_data/outline.py +25 -0
  91. pyedb/ipc2581/ecad/cad_data/package.py +104 -0
  92. pyedb/ipc2581/ecad/cad_data/padstack_def.py +38 -0
  93. pyedb/ipc2581/ecad/cad_data/padstack_hole_def.py +24 -0
  94. pyedb/ipc2581/ecad/cad_data/padstack_instance.py +62 -0
  95. pyedb/ipc2581/ecad/cad_data/padstack_pad_def.py +26 -0
  96. pyedb/ipc2581/ecad/cad_data/path.py +89 -0
  97. pyedb/ipc2581/ecad/cad_data/phy_net.py +80 -0
  98. pyedb/ipc2581/ecad/cad_data/pin.py +31 -0
  99. pyedb/ipc2581/ecad/cad_data/polygon.py +169 -0
  100. pyedb/ipc2581/ecad/cad_data/profile.py +40 -0
  101. pyedb/ipc2581/ecad/cad_data/stackup.py +31 -0
  102. pyedb/ipc2581/ecad/cad_data/stackup_group.py +42 -0
  103. pyedb/ipc2581/ecad/cad_data/stackup_layer.py +21 -0
  104. pyedb/ipc2581/ecad/cad_data/step.py +275 -0
  105. pyedb/ipc2581/ecad/cad_header.py +33 -0
  106. pyedb/ipc2581/ecad/ecad.py +19 -0
  107. pyedb/ipc2581/ecad/spec.py +46 -0
  108. pyedb/ipc2581/history_record.py +37 -0
  109. pyedb/ipc2581/ipc2581.py +387 -0
  110. pyedb/ipc2581/logistic_header.py +25 -0
  111. pyedb/misc/__init__.py +0 -0
  112. pyedb/misc/aedtlib_personalib_install.py +14 -0
  113. pyedb/misc/downloads.py +322 -0
  114. pyedb/misc/misc.py +67 -0
  115. pyedb/misc/pyedb.runtimeconfig.json +13 -0
  116. pyedb/misc/siw_feature_config/__init__.py +0 -0
  117. pyedb/misc/siw_feature_config/emc/__init__.py +0 -0
  118. pyedb/misc/siw_feature_config/emc/component_tags.py +46 -0
  119. pyedb/misc/siw_feature_config/emc/net_tags.py +37 -0
  120. pyedb/misc/siw_feature_config/emc/tag_library.py +62 -0
  121. pyedb/misc/siw_feature_config/emc/xml_generic.py +78 -0
  122. pyedb/misc/siw_feature_config/emc_rule_checker_settings.py +179 -0
  123. pyedb/misc/utilities.py +27 -0
  124. pyedb/modeler/geometry_operators.py +2082 -0
  125. pyedb-0.2.0.dist-info/LICENSE +21 -0
  126. pyedb-0.2.0.dist-info/METADATA +208 -0
  127. pyedb-0.2.0.dist-info/RECORD +128 -0
  128. pyedb-0.2.0.dist-info/WHEEL +4 -0
@@ -0,0 +1,35 @@
1
+ class EdbDesignOptions:
2
+ def __init__(self, active_cell):
3
+ self._active_cell = active_cell
4
+
5
+ @property
6
+ def suppress_pads(self):
7
+ """Whether to suppress non-functional pads.
8
+
9
+ Returns
10
+ -------
11
+ bool
12
+ ``True`` if suppress non-functional pads is on, ``False`` otherwise.
13
+
14
+ """
15
+ return self._active_cell.GetSuppressPads()
16
+
17
+ @suppress_pads.setter
18
+ def suppress_pads(self, value):
19
+ self._active_cell.SetSuppressPads(value)
20
+
21
+ @property
22
+ def antipads_always_on(self):
23
+ """Whether to always turn on antipad.
24
+
25
+ Returns
26
+ -------
27
+ bool
28
+ ``True`` if antipad is always on, ``False`` otherwise.
29
+
30
+ """
31
+ return self._active_cell.GetAntiPadsAlwaysOn()
32
+
33
+ @antipads_always_on.setter
34
+ def antipads_always_on(self, value):
35
+ self._active_cell.SetAntiPadsAlwaysOn(value)
@@ -0,0 +1,45 @@
1
+ class EdbValue:
2
+ """Class defining Edb Value properties."""
3
+
4
+ def __init__(self, edb_obj):
5
+ self._edb_obj = edb_obj
6
+
7
+ @property
8
+ def value(self):
9
+ """Variable Value Object.
10
+
11
+ Returns
12
+ -------
13
+ Edb Object
14
+ """
15
+ return self._edb_obj
16
+
17
+ @property
18
+ def name(self):
19
+ """Variable name.
20
+
21
+ Returns
22
+ -------
23
+ str
24
+ """
25
+ return self._edb_obj.GetName()
26
+
27
+ @property
28
+ def tofloat(self):
29
+ """Returns the float number of the variable.
30
+
31
+ Returns
32
+ -------
33
+ float
34
+ """
35
+ return self._edb_obj.ToDouble()
36
+
37
+ @property
38
+ def tostring(self):
39
+ """Returns the string of the variable.
40
+
41
+ Returns
42
+ -------
43
+ str
44
+ """
45
+ return self._edb_obj.ToString()
@@ -0,0 +1,330 @@
1
+ from pyedb.dotnet.edb_core.edb_data.edbvalue import EdbValue
2
+ from pyedb.dotnet.edb_core.edb_data.primitives_data import cast
3
+ from pyedb.dotnet.edb_core.general import convert_pytuple_to_nettuple
4
+ from pyedb.generic.general_methods import pyedb_function_handler
5
+
6
+
7
+ class HfssExtentInfo:
8
+ """Manages EDB functionalities for HFSS extent information.
9
+
10
+ Parameters
11
+ ----------
12
+ pedb : :class:`pyedb.edb.Edb`
13
+ Inherited EDB object.
14
+ """
15
+
16
+ def __init__(self, pedb):
17
+ self._pedb = pedb
18
+
19
+ self._hfss_extent_info_type = {
20
+ "BoundingBox": self._pedb.edb_api.utility.utility.HFSSExtentInfoType.BoundingBox,
21
+ "Conforming": self._pedb.edb_api.utility.utility.HFSSExtentInfoType.Conforming,
22
+ "ConvexHull": self._pedb.edb_api.utility.utility.HFSSExtentInfoType.ConvexHull,
23
+ "Polygon": self._pedb.edb_api.utility.utility.HFSSExtentInfoType.Polygon,
24
+ }
25
+ self._open_region_type = {
26
+ "Radiation": self._pedb.edb_api.utility.utility.OpenRegionType.Radiation,
27
+ "PML": self._pedb.edb_api.utility.utility.OpenRegionType.PML,
28
+ }
29
+
30
+ @pyedb_function_handler()
31
+ def _get_edb_value(self, value):
32
+ """Get EDB value."""
33
+ return self._pedb.edb_value(value)
34
+
35
+ @pyedb_function_handler()
36
+ def _update_hfss_extent_info(self, hfss_extent_info):
37
+ return self._pedb.active_cell.SetHFSSExtentInfo(hfss_extent_info)
38
+
39
+ @property
40
+ def _edb_hfss_extent_info(self):
41
+ return self._pedb.active_cell.GetHFSSExtentInfo()
42
+
43
+ @property
44
+ def air_box_horizontal_extent_enabled(self):
45
+ """Whether horizontal extent is enabled for the airbox."""
46
+ return self._edb_hfss_extent_info.AirBoxHorizontalExtent.Item2
47
+
48
+ @air_box_horizontal_extent_enabled.setter
49
+ def air_box_horizontal_extent_enabled(self, value):
50
+ info = self._edb_hfss_extent_info
51
+ info.AirBoxHorizontalExtent = convert_pytuple_to_nettuple((self.air_box_horizontal_extent, value))
52
+ self._update_hfss_extent_info(info)
53
+
54
+ @property
55
+ def air_box_horizontal_extent(self):
56
+ """Size of horizontal extent for the air box.
57
+
58
+ Returns:
59
+ dotnet.edb_core.edb_data.edbvalue.EdbValue
60
+ """
61
+ return self._edb_hfss_extent_info.AirBoxHorizontalExtent.Item1
62
+
63
+ @air_box_horizontal_extent.setter
64
+ def air_box_horizontal_extent(self, value):
65
+ info = self._edb_hfss_extent_info
66
+ info.AirBoxHorizontalExtent = convert_pytuple_to_nettuple((value, self.air_box_horizontal_extent_enabled))
67
+ self._update_hfss_extent_info(info)
68
+
69
+ @property
70
+ def air_box_positive_vertical_extent_enabled(self):
71
+ """Whether positive vertical extent is enabled for the air box."""
72
+ return self._edb_hfss_extent_info.AirBoxPositiveVerticalExtent.Item2
73
+
74
+ @air_box_positive_vertical_extent_enabled.setter
75
+ def air_box_positive_vertical_extent_enabled(self, value):
76
+ info = self._edb_hfss_extent_info
77
+ info.AirBoxPositiveVerticalExtent = convert_pytuple_to_nettuple((self.air_box_positive_vertical_extent, value))
78
+ self._update_hfss_extent_info(info)
79
+
80
+ @property
81
+ def air_box_positive_vertical_extent(self):
82
+ """Negative vertical extent for the air box."""
83
+ return self._edb_hfss_extent_info.AirBoxPositiveVerticalExtent.Item1
84
+
85
+ @air_box_positive_vertical_extent.setter
86
+ def air_box_positive_vertical_extent(self, value):
87
+ value = float(value)
88
+ info = self._edb_hfss_extent_info
89
+ info.AirBoxPositiveVerticalExtent = convert_pytuple_to_nettuple(
90
+ (value, self.air_box_positive_vertical_extent_enabled)
91
+ )
92
+ self._update_hfss_extent_info(info)
93
+
94
+ @property
95
+ def air_box_negative_vertical_extent_enabled(self):
96
+ """Whether negative vertical extent is enabled for the air box."""
97
+ return self._edb_hfss_extent_info.AirBoxNegativeVerticalExtent.Item2
98
+
99
+ @air_box_negative_vertical_extent_enabled.setter
100
+ def air_box_negative_vertical_extent_enabled(self, value):
101
+ info = self._edb_hfss_extent_info
102
+ info.AirBoxNegativeVerticalExtent = convert_pytuple_to_nettuple((self.air_box_negative_vertical_extent, value))
103
+ self._update_hfss_extent_info(info)
104
+
105
+ @property
106
+ def air_box_negative_vertical_extent(self):
107
+ """Negative vertical extent for the airbox."""
108
+ return self._edb_hfss_extent_info.AirBoxNegativeVerticalExtent.Item1
109
+
110
+ @air_box_negative_vertical_extent.setter
111
+ def air_box_negative_vertical_extent(self, value):
112
+ value = float(value)
113
+ info = self._edb_hfss_extent_info
114
+ info.AirBoxNegativeVerticalExtent = convert_pytuple_to_nettuple(
115
+ (value, self.air_box_negative_vertical_extent_enabled)
116
+ )
117
+ self._update_hfss_extent_info(info)
118
+
119
+ @property
120
+ def base_polygon(self):
121
+ """Base polygon.
122
+
123
+ Returns
124
+ -------
125
+ :class:`dotnet.edb_core.edb_data.primitives_data.EDBPrimitive`
126
+ """
127
+ return cast(self._edb_hfss_extent_info.BasePolygon, self._pedb)
128
+
129
+ @base_polygon.setter
130
+ def base_polygon(self, value):
131
+ info = self._edb_hfss_extent_info
132
+ info.BasePolygon = value.primitive_object
133
+ self._update_hfss_extent_info(info)
134
+
135
+ @property
136
+ def dielectric_base_polygon(self):
137
+ """Dielectric base polygon.
138
+
139
+ Returns
140
+ -------
141
+ :class:`dotnet.edb_core.edb_data.primitives_data.EDBPrimitive`
142
+ """
143
+ return cast(self._edb_hfss_extent_info.DielectricBasePolygon, self._pedb)
144
+
145
+ @dielectric_base_polygon.setter
146
+ def dielectric_base_polygon(self, value):
147
+ info = self._edb_hfss_extent_info
148
+ info.DielectricBasePolygon = value.primitive_object
149
+ self._update_hfss_extent_info(info)
150
+
151
+ @property
152
+ def dielectric_extent_size_enabled(self):
153
+ """Whether dielectric extent size is enabled."""
154
+ return self._edb_hfss_extent_info.DielectricExtentSize.Item2
155
+
156
+ @dielectric_extent_size_enabled.setter
157
+ def dielectric_extent_size_enabled(self, value):
158
+ info = self._edb_hfss_extent_info
159
+ info.DielectricExtentSize = convert_pytuple_to_nettuple((self.dielectric_extent_size, value))
160
+ self._update_hfss_extent_info(info)
161
+
162
+ @property
163
+ def dielectric_extent_size(self):
164
+ """Dielectric extent size."""
165
+ return self._edb_hfss_extent_info.DielectricExtentSize.Item1
166
+
167
+ @dielectric_extent_size.setter
168
+ def dielectric_extent_size(self, value):
169
+ info = self._edb_hfss_extent_info
170
+ info.DielectricExtentSize = convert_pytuple_to_nettuple((value, self.dielectric_extent_size_enabled))
171
+ self._update_hfss_extent_info(info)
172
+
173
+ @property
174
+ def dielectric_extent_type(self):
175
+ """Dielectric extent type."""
176
+ return self._edb_hfss_extent_info.DielectricExtentType.ToString()
177
+
178
+ @dielectric_extent_type.setter
179
+ def dielectric_extent_type(self, value):
180
+ info = self._edb_hfss_extent_info
181
+ info.DielectricExtentType = self._hfss_extent_info_type[value]
182
+ self._update_hfss_extent_info(info)
183
+
184
+ @property
185
+ def extent_type(self):
186
+ """Extent type."""
187
+ return self._edb_hfss_extent_info.ExtentType.ToString()
188
+
189
+ @extent_type.setter
190
+ def extent_type(self, value):
191
+ info = self._edb_hfss_extent_info
192
+ info.ExtentType = self._hfss_extent_info_type[value]
193
+ self._update_hfss_extent_info(info)
194
+
195
+ @property
196
+ def honor_user_dielectric(self):
197
+ """Honor user dielectric."""
198
+ return self._edb_hfss_extent_info.HonorUserDielectric
199
+
200
+ @honor_user_dielectric.setter
201
+ def honor_user_dielectric(self, value):
202
+ info = self._edb_hfss_extent_info
203
+ info.HonorUserDielectric = value
204
+ self._update_hfss_extent_info(info)
205
+
206
+ @property
207
+ def is_pml_visible(self):
208
+ """Whether visibility of the PML is enabled."""
209
+ return self._edb_hfss_extent_info.IsPMLVisible
210
+
211
+ @is_pml_visible.setter
212
+ def is_pml_visible(self, value):
213
+ info = self._edb_hfss_extent_info
214
+ info.IsPMLVisible = value
215
+ self._update_hfss_extent_info(info)
216
+
217
+ @property
218
+ def open_region_type(self):
219
+ """Open region type."""
220
+ return self._edb_hfss_extent_info.OpenRegionType.ToString()
221
+
222
+ @open_region_type.setter
223
+ def open_region_type(self, value):
224
+ info = self._edb_hfss_extent_info
225
+ info.OpenRegionType = self._open_region_type[value]
226
+ self._update_hfss_extent_info(info)
227
+
228
+ @property
229
+ def operating_freq(self):
230
+ """Operating frequency.
231
+
232
+ Returns
233
+ -------
234
+ pyedb.dotnet.edb_core.edb_data.edbvalue.EdbValue
235
+ """
236
+ return EdbValue(self._edb_hfss_extent_info.OperatingFreq)
237
+
238
+ @operating_freq.setter
239
+ def operating_freq(self, value):
240
+ value = value._edb_obj if isinstance(value, EdbValue) else self._get_edb_value(value)
241
+ info = self._edb_hfss_extent_info
242
+ info.OperatingFreq = value
243
+ self._update_hfss_extent_info(info)
244
+
245
+ @property
246
+ def radiation_level(self):
247
+ """Radiation level."""
248
+ return EdbValue(self._edb_hfss_extent_info.RadiationLevel)
249
+
250
+ @radiation_level.setter
251
+ def radiation_level(self, value):
252
+ value = value._edb_obj if isinstance(value, EdbValue) else self._get_edb_value(value)
253
+ info = self._edb_hfss_extent_info
254
+ info.RadiationLevel = value
255
+ self._update_hfss_extent_info(info)
256
+
257
+ @property
258
+ def sync_air_box_vertical_extent(self):
259
+ """Vertical extent of the sync air box."""
260
+ return self._edb_hfss_extent_info.SyncAirBoxVerticalExtent
261
+
262
+ @sync_air_box_vertical_extent.setter
263
+ def sync_air_box_vertical_extent(self, value):
264
+ info = self._edb_hfss_extent_info
265
+ info.SyncAirBoxVerticalExtent = value
266
+ self._update_hfss_extent_info(info)
267
+
268
+ @property
269
+ def truncate_air_box_at_ground(self):
270
+ """Truncate air box at ground."""
271
+ return self._edb_hfss_extent_info.TruncateAirBoxAtGround
272
+
273
+ @truncate_air_box_at_ground.setter
274
+ def truncate_air_box_at_ground(self, value):
275
+ info = self._edb_hfss_extent_info
276
+ info.TruncateAirBoxAtGround = value
277
+ self._update_hfss_extent_info(info)
278
+
279
+ @property
280
+ def use_open_region(self):
281
+ """Whether using an open region is enabled."""
282
+ return self._edb_hfss_extent_info.UseOpenRegion
283
+
284
+ @use_open_region.setter
285
+ def use_open_region(self, value):
286
+ info = self._edb_hfss_extent_info
287
+ info.UseOpenRegion = value
288
+ self._update_hfss_extent_info(info)
289
+
290
+ @property
291
+ def use_xy_data_extent_for_vertical_expansion(self):
292
+ """Whether using the xy data extent for vertical expansion is enabled."""
293
+ return self._edb_hfss_extent_info.UseXYDataExtentForVerticalExpansion
294
+
295
+ @use_xy_data_extent_for_vertical_expansion.setter
296
+ def use_xy_data_extent_for_vertical_expansion(self, value):
297
+ info = self._edb_hfss_extent_info
298
+ info.UseXYDataExtentForVerticalExpansion = value
299
+ self._update_hfss_extent_info(info)
300
+
301
+ @pyedb_function_handler()
302
+ def load_config(self, config):
303
+ """Load HFSS extent configuration.
304
+
305
+ Parameters
306
+ ----------
307
+ config: dict
308
+ Parameters of the HFSS extent information.
309
+ """
310
+ for i, j in config.items():
311
+ if hasattr(self, i):
312
+ setattr(self, i, j)
313
+
314
+ @pyedb_function_handler()
315
+ def export_config(self):
316
+ """Export HFSS extent information.
317
+
318
+ Returns:
319
+ dict
320
+ Parameters of the HFSS extent information.
321
+ """
322
+ config = dict()
323
+ for i in dir(self):
324
+ if i.startswith("_"):
325
+ continue
326
+ elif i in ["load_config", "export_config"]:
327
+ continue
328
+ else:
329
+ config[i] = getattr(self, i)
330
+ return config