pyedb 0.7.1__tar.gz → 0.8.0__tar.gz
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.
- {pyedb-0.7.1 → pyedb-0.8.0}/PKG-INFO +5 -5
- {pyedb-0.7.1 → pyedb-0.8.0}/pyproject.toml +4 -4
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/__init__.py +1 -1
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb.py +1 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/cell/hierarchy/model.py +1 -1
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/components.py +4 -1
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/configuration.py +37 -5
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/definition/component_def.py +1 -1
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/definition/component_model.py +1 -1
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/definition/definition_obj.py +1 -1
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/definition/definitions.py +8 -2
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/definition/package_def.py +34 -15
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/dotnet/database.py +5 -4
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/edb_data/components_data.py +1 -1
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/edb_data/connectable.py +1 -1
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/edb_data/layer_data.py +3 -2
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/edb_data/primitives_data.py +4 -2
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/edb_data/siwave_simulation_setup_data.py +6 -0
- pyedb-0.8.0/src/pyedb/dotnet/edb_core/geometry/point_data.py +37 -0
- pyedb-0.8.0/src/pyedb/dotnet/edb_core/geometry/polygon_data.py +77 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/materials.py +128 -106
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/nets.py +3 -3
- pyedb-0.8.0/src/pyedb/dotnet/edb_core/obj_base.py +94 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/siwave.py +2 -2
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/stackup.py +48 -41
- pyedb-0.7.1/src/pyedb/dotnet/edb_core/edb_data/obj_base.py → pyedb-0.8.0/src/pyedb/dotnet/sim_setup_data/data/siw_dc_ir_settings.py +18 -23
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/edb_logger.py +15 -1
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/generic/settings.py +20 -8
- pyedb-0.8.0/src/pyedb/misc/siw_feature_config/emc/__init__.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/siwave.py +50 -1
- {pyedb-0.7.1 → pyedb-0.8.0}/LICENSE +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/README.md +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/__init__.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/application/Variables.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/application/__init__.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/clr_module.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/__init__.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/cell/__init__.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/cell/hierarchy/__init__.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/definition/__init__.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/dotnet/__init__.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/dotnet/layout.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/dotnet/primitive.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/edb_data/__init__.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/edb_data/control_file.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/edb_data/design_options.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/edb_data/edbvalue.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/edb_data/hfss_extent_info.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/edb_data/hfss_simulation_setup_data.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/edb_data/nets_data.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/edb_data/padstacks_data.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/edb_data/ports.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/edb_data/simulation_configuration.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/edb_data/sources.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/edb_data/terminals.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/edb_data/utilities.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/edb_data/variables.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/general.py +0 -0
- {pyedb-0.7.1/src/pyedb/generic → pyedb-0.8.0/src/pyedb/dotnet/edb_core/geometry}/__init__.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/hfss.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/layout.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/layout_validation.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/net_class.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/padstack.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/utilities/__init__.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/utilities/heatsink.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/utilities/simulation_setup.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/exceptions.py +0 -0
- {pyedb-0.7.1/src/pyedb/ipc2581 → pyedb-0.8.0/src/pyedb/generic}/__init__.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/generic/constants.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/generic/data_handlers.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/generic/design_types.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/generic/filesystem.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/generic/general_methods.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/generic/plot.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/generic/process.py +0 -0
- {pyedb-0.7.1/src/pyedb/ipc2581/bom → pyedb-0.8.0/src/pyedb/ipc2581}/__init__.py +0 -0
- {pyedb-0.7.1/src/pyedb/ipc2581/content → pyedb-0.8.0/src/pyedb/ipc2581/bom}/__init__.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/bom/bom.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/bom/bom_item.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/bom/characteristics.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/bom/refdes.py +0 -0
- {pyedb-0.7.1/src/pyedb/ipc2581/ecad → pyedb-0.8.0/src/pyedb/ipc2581/content}/__init__.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/content/color.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/content/content.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/content/dictionary_color.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/content/dictionary_fill.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/content/dictionary_line.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/content/entry_color.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/content/entry_line.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/content/fill.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/content/layer_ref.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/content/standard_geometries_dictionary.py +0 -0
- {pyedb-0.7.1/src/pyedb/ipc2581/ecad/cad_data → pyedb-0.8.0/src/pyedb/ipc2581/ecad}/__init__.py +0 -0
- {pyedb-0.7.1/src/pyedb/misc → pyedb-0.8.0/src/pyedb/ipc2581/ecad/cad_data}/__init__.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/cad_data/assembly_drawing.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/cad_data/cad_data.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/cad_data/component.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/cad_data/drill.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/cad_data/feature.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/cad_data/layer.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/cad_data/layer_feature.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/cad_data/logical_net.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/cad_data/outline.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/cad_data/package.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_def.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_hole_def.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_instance.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/cad_data/padstack_pad_def.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/cad_data/path.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/cad_data/phy_net.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/cad_data/pin.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/cad_data/polygon.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/cad_data/profile.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/cad_data/stackup.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_group.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/cad_data/stackup_layer.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/cad_data/step.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/cad_header.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/ecad.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ecad/spec.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/history_record.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/ipc2581.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/ipc2581/logistic_header.py +0 -0
- {pyedb-0.7.1/src/pyedb/misc/siw_feature_config → pyedb-0.8.0/src/pyedb/misc}/__init__.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/misc/aedtlib_personalib_install.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/misc/downloads.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/misc/misc.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/misc/pyedb.runtimeconfig.json +0 -0
- {pyedb-0.7.1/src/pyedb/misc/siw_feature_config/emc → pyedb-0.8.0/src/pyedb/misc/siw_feature_config}/__init__.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/misc/siw_feature_config/emc/component_tags.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/misc/siw_feature_config/emc/net_tags.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/misc/siw_feature_config/emc/tag_library.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/misc/siw_feature_config/emc/xml_generic.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/misc/siw_feature_config/emc_rule_checker_settings.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/misc/utilities.py +0 -0
- {pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/modeler/geometry_operators.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: pyedb
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.8.0
|
|
4
4
|
Summary: Higher-Level Pythonic Ansys Electronics Data Base
|
|
5
5
|
Author-email: "ANSYS, Inc." <pyansys.core@ansys.com>
|
|
6
6
|
Maintainer-email: PyEDB developers <simon.vandenbrouck@ansys.com>
|
|
@@ -19,9 +19,9 @@ Requires-Dist: cffi>=1.16.0,<1.17; platform_system=='Linux'
|
|
|
19
19
|
Requires-Dist: pywin32 >= 303;platform_system=='Windows'
|
|
20
20
|
Requires-Dist: ansys-pythonnet >= 3.1.0rc3
|
|
21
21
|
Requires-Dist: dotnetcore2 ==3.1.23;platform_system=='Linux'
|
|
22
|
-
Requires-Dist: pydantic>=2.6.4,<2.
|
|
22
|
+
Requires-Dist: pydantic>=2.6.4,<2.8
|
|
23
23
|
Requires-Dist: toml == 0.10.2
|
|
24
|
-
Requires-Dist: ansys-sphinx-theme>=0.10.0,<0.
|
|
24
|
+
Requires-Dist: ansys-sphinx-theme>=0.10.0,<0.16 ; extra == "doc"
|
|
25
25
|
Requires-Dist: imageio>=2.30.0,<2.35 ; extra == "doc"
|
|
26
26
|
Requires-Dist: ipython>=8.13.0,<8.24 ; extra == "doc"
|
|
27
27
|
Requires-Dist: jupyterlab>=4.0.0,<4.3 ; extra == "doc"
|
|
@@ -30,8 +30,8 @@ Requires-Dist: nbsphinx>=0.9.0,<0.10 ; extra == "doc"
|
|
|
30
30
|
Requires-Dist: numpydoc>=1.5.0,<1.8 ; extra == "doc"
|
|
31
31
|
Requires-Dist: pypandoc>=1.10.0,<1.14 ; extra == "doc"
|
|
32
32
|
Requires-Dist: recommonmark ; extra == "doc"
|
|
33
|
-
Requires-Dist: Sphinx>=7.1.0,<7.
|
|
34
|
-
Requires-Dist: sphinx-autobuild==
|
|
33
|
+
Requires-Dist: Sphinx>=7.1.0,<7.4 ; extra == "doc"
|
|
34
|
+
Requires-Dist: sphinx-autobuild==2024.2.4 ; extra == "doc" and ( python_version == '3.8')
|
|
35
35
|
Requires-Dist: sphinx-autobuild==2024.2.4 ; extra == "doc" and ( python_version > '3.8')
|
|
36
36
|
Requires-Dist: sphinx-copybutton>=0.5.0,<0.6 ; extra == "doc"
|
|
37
37
|
Requires-Dist: sphinx-gallery>=0.14.0,<0.16 ; extra == "doc"
|
|
@@ -29,7 +29,7 @@ dependencies = [
|
|
|
29
29
|
"pywin32 >= 303;platform_system=='Windows'",
|
|
30
30
|
"ansys-pythonnet >= 3.1.0rc3",
|
|
31
31
|
"dotnetcore2 ==3.1.23;platform_system=='Linux'",
|
|
32
|
-
"pydantic>=2.6.4,<2.
|
|
32
|
+
"pydantic>=2.6.4,<2.8",
|
|
33
33
|
"toml == 0.10.2",
|
|
34
34
|
]
|
|
35
35
|
|
|
@@ -44,7 +44,7 @@ tests = [
|
|
|
44
44
|
"pytest-xdist>=3.5.0,<3.6",
|
|
45
45
|
]
|
|
46
46
|
doc = [
|
|
47
|
-
"ansys-sphinx-theme>=0.10.0,<0.
|
|
47
|
+
"ansys-sphinx-theme>=0.10.0,<0.16",
|
|
48
48
|
"imageio>=2.30.0,<2.35",
|
|
49
49
|
"ipython>=8.13.0,<8.24",
|
|
50
50
|
"jupyterlab>=4.0.0,<4.3",
|
|
@@ -54,8 +54,8 @@ doc = [
|
|
|
54
54
|
"pypandoc>=1.10.0,<1.14",
|
|
55
55
|
# NOTE: Remove recommonmark once examples are reworked.
|
|
56
56
|
"recommonmark",
|
|
57
|
-
"Sphinx>=7.1.0,<7.
|
|
58
|
-
"sphinx-autobuild==
|
|
57
|
+
"Sphinx>=7.1.0,<7.4",
|
|
58
|
+
"sphinx-autobuild==2024.2.4; python_version == '3.8'",
|
|
59
59
|
"sphinx-autobuild==2024.2.4; python_version > '3.8'",
|
|
60
60
|
"sphinx-copybutton>=0.5.0,<0.6",
|
|
61
61
|
"sphinx-gallery>=0.14.0,<0.16",
|
|
@@ -3637,6 +3637,7 @@ class Edb(Database):
|
|
|
3637
3637
|
>>> setup1.hfss_port_settings.max_delta_z0 = 0.5
|
|
3638
3638
|
"""
|
|
3639
3639
|
if name in self.setups:
|
|
3640
|
+
self.logger.info("setup already exists")
|
|
3640
3641
|
return False
|
|
3641
3642
|
setup = HfssSimulationSetup(self).create(name)
|
|
3642
3643
|
return setup
|
|
@@ -20,7 +20,7 @@
|
|
|
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 pyedb.dotnet.edb_core.
|
|
23
|
+
from pyedb.dotnet.edb_core.obj_base import ObjBase
|
|
24
24
|
from pyedb.generic.general_methods import pyedb_function_handler
|
|
25
25
|
|
|
26
26
|
|
|
@@ -38,6 +38,7 @@ from pyedb.dotnet.edb_core.general import convert_py_list_to_net_list
|
|
|
38
38
|
from pyedb.dotnet.edb_core.padstack import EdbPadstacks
|
|
39
39
|
from pyedb.generic.general_methods import (
|
|
40
40
|
_retry_ntimes,
|
|
41
|
+
generate_unique_name,
|
|
41
42
|
get_filename_without_extension,
|
|
42
43
|
pyedb_function_handler,
|
|
43
44
|
)
|
|
@@ -1450,7 +1451,7 @@ class Components(object):
|
|
|
1450
1451
|
def create(
|
|
1451
1452
|
self,
|
|
1452
1453
|
pins,
|
|
1453
|
-
component_name,
|
|
1454
|
+
component_name=None,
|
|
1454
1455
|
placement_layer=None,
|
|
1455
1456
|
component_part_name=None,
|
|
1456
1457
|
is_rlc=False,
|
|
@@ -1496,6 +1497,8 @@ class Components(object):
|
|
|
1496
1497
|
>>> edbapp.components.create(pins, "A1New")
|
|
1497
1498
|
|
|
1498
1499
|
"""
|
|
1500
|
+
if not component_name:
|
|
1501
|
+
component_name = generate_unique_name("Comp_")
|
|
1499
1502
|
if component_part_name:
|
|
1500
1503
|
compdef = self._getComponentDefinition(component_part_name, pins)
|
|
1501
1504
|
else:
|
|
@@ -383,6 +383,7 @@ class Configuration:
|
|
|
383
383
|
elif src_type == "current":
|
|
384
384
|
src_obj = self._pedb.create_current_source(pos_terminal, neg_terminal)
|
|
385
385
|
src_obj.magnitude = src["magnitude"]
|
|
386
|
+
src_obj.name = name
|
|
386
387
|
|
|
387
388
|
@pyedb_function_handler
|
|
388
389
|
def _load_setups(self):
|
|
@@ -401,6 +402,13 @@ class Configuration:
|
|
|
401
402
|
self._pedb.logger.warning("Setup {} already existing. Editing it.".format(name))
|
|
402
403
|
edb_setup = self._pedb.setups[name]
|
|
403
404
|
edb_setup.set_dc_slider(setup["dc_slider_position"])
|
|
405
|
+
dc_ir_settings = setup.get("dc_ir_settings", None)
|
|
406
|
+
if dc_ir_settings:
|
|
407
|
+
for k, v in dc_ir_settings.items():
|
|
408
|
+
if k not in dir(edb_setup.dc_ir_settings):
|
|
409
|
+
self._pedb.logger.error(f"Invalid keyword {k}")
|
|
410
|
+
else:
|
|
411
|
+
setattr(edb_setup.dc_ir_settings, k, v)
|
|
404
412
|
else:
|
|
405
413
|
if setup_type.lower() == "hfss":
|
|
406
414
|
if name not in self._pedb.setups:
|
|
@@ -553,13 +561,21 @@ class Configuration:
|
|
|
553
561
|
@pyedb_function_handler
|
|
554
562
|
def _load_pin_groups(self):
|
|
555
563
|
"""Imports pin groups information from JSON."""
|
|
564
|
+
comps = self._pedb.components.components
|
|
556
565
|
for pg in self.data["pin_groups"]:
|
|
557
566
|
name = pg["name"]
|
|
558
567
|
ref_designator = pg["reference_designator"]
|
|
559
568
|
if "pins" in pg:
|
|
560
569
|
self._pedb.siwave.create_pin_group(ref_designator, pg["pins"], name)
|
|
561
570
|
elif "net" in pg:
|
|
562
|
-
|
|
571
|
+
nets = pg["net"]
|
|
572
|
+
nets = nets if isinstance(nets, list) else [nets]
|
|
573
|
+
comp = comps[ref_designator]
|
|
574
|
+
pins = [p for p, obj in comp.pins.items() if obj.net_name in nets]
|
|
575
|
+
self._pedb.siwave.create_pin_group(ref_designator, pins, name)
|
|
576
|
+
else:
|
|
577
|
+
pins = [i for i in comps[ref_designator].pins.keys()]
|
|
578
|
+
self._pedb.siwave.create_pin_group(ref_designator, pins, name)
|
|
563
579
|
|
|
564
580
|
@pyedb_function_handler
|
|
565
581
|
def _load_nets(self):
|
|
@@ -692,7 +708,11 @@ class Configuration:
|
|
|
692
708
|
name = pkgd["name"]
|
|
693
709
|
if name in self._pedb.definitions.package:
|
|
694
710
|
self._pedb.definitions.package[name].delete()
|
|
695
|
-
|
|
711
|
+
extent_bounding_box = pkgd.get("extent_bounding_box", None)
|
|
712
|
+
if extent_bounding_box:
|
|
713
|
+
package_def = PackageDef(self._pedb, name=name, extent_bounding_box=extent_bounding_box)
|
|
714
|
+
else:
|
|
715
|
+
package_def = PackageDef(self._pedb, name=name, component_part_name=pkgd["component_definition"])
|
|
696
716
|
package_def.maximum_power = pkgd["maximum_power"]
|
|
697
717
|
package_def.therm_cond = pkgd["therm_cond"]
|
|
698
718
|
package_def.theta_jb = pkgd["theta_jb"]
|
|
@@ -708,6 +728,18 @@ class Configuration:
|
|
|
708
728
|
heatsink["fin_spacing"],
|
|
709
729
|
heatsink["fin_thickness"],
|
|
710
730
|
)
|
|
711
|
-
|
|
712
|
-
|
|
713
|
-
|
|
731
|
+
|
|
732
|
+
comp_def_name = pkgd["component_definition"]
|
|
733
|
+
comp_def = self._pedb.definitions.component[comp_def_name]
|
|
734
|
+
|
|
735
|
+
comp_list = dict()
|
|
736
|
+
if pkgd["apply_to_all"]:
|
|
737
|
+
comp_list.update(
|
|
738
|
+
{refdes: comp for refdes, comp in comp_def.components.items() if refdes not in pkgd["components"]}
|
|
739
|
+
)
|
|
740
|
+
else:
|
|
741
|
+
comp_list.update(
|
|
742
|
+
{refdes: comp for refdes, comp in comp_def.components.items() if refdes in pkgd["components"]}
|
|
743
|
+
)
|
|
744
|
+
for _, i in comp_list.items():
|
|
745
|
+
i.package_def = name
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
import os
|
|
24
24
|
|
|
25
25
|
from pyedb.dotnet.edb_core.definition.component_model import NPortComponentModel
|
|
26
|
-
from pyedb.dotnet.edb_core.
|
|
26
|
+
from pyedb.dotnet.edb_core.obj_base import ObjBase
|
|
27
27
|
from pyedb.generic.general_methods import pyedb_function_handler
|
|
28
28
|
|
|
29
29
|
|
|
@@ -20,7 +20,7 @@
|
|
|
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 pyedb.dotnet.edb_core.
|
|
23
|
+
from pyedb.dotnet.edb_core.obj_base import ObjBase
|
|
24
24
|
from pyedb.generic.general_methods import pyedb_function_handler
|
|
25
25
|
|
|
26
26
|
|
|
@@ -40,17 +40,23 @@ class Definitions:
|
|
|
40
40
|
return {l.GetName(): PackageDef(self._pedb, l) for l in list(self._pedb.active_db.PackageDefs)}
|
|
41
41
|
|
|
42
42
|
@pyedb_function_handler
|
|
43
|
-
def add_package_def(self, name):
|
|
43
|
+
def add_package_def(self, name, component_part_name=None, boundary_points=None):
|
|
44
44
|
"""Add a package definition.
|
|
45
45
|
|
|
46
46
|
Parameters
|
|
47
47
|
----------
|
|
48
48
|
name: str
|
|
49
49
|
Name of the package definition.
|
|
50
|
+
component_part_name : str, optional
|
|
51
|
+
Part name of the component.
|
|
52
|
+
boundary_points : list, optional
|
|
53
|
+
Boundary points which define the shape of the package.
|
|
50
54
|
|
|
51
55
|
Returns
|
|
52
56
|
-------
|
|
53
57
|
|
|
54
58
|
"""
|
|
55
|
-
package_def = PackageDef(
|
|
59
|
+
package_def = PackageDef(
|
|
60
|
+
self._pedb, name=name, component_part_name=component_part_name, extent_bounding_box=boundary_points
|
|
61
|
+
)
|
|
56
62
|
return package_def
|
|
@@ -20,8 +20,8 @@
|
|
|
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 pyedb.dotnet.edb_core.
|
|
24
|
-
from pyedb.dotnet.edb_core.
|
|
23
|
+
from pyedb.dotnet.edb_core.geometry.polygon_data import PolygonData
|
|
24
|
+
from pyedb.dotnet.edb_core.obj_base import ObjBase
|
|
25
25
|
from pyedb.generic.general_methods import pyedb_function_handler
|
|
26
26
|
|
|
27
27
|
|
|
@@ -33,19 +33,24 @@ class PackageDef(ObjBase):
|
|
|
33
33
|
pedb : :class:`pyedb.edb`
|
|
34
34
|
Edb object.
|
|
35
35
|
edb_object : object
|
|
36
|
-
|
|
36
|
+
Edb PackageDef Object
|
|
37
|
+
component_part_name : str, optional
|
|
38
|
+
Part name of the component.
|
|
39
|
+
extent_bounding_box : list, optional
|
|
40
|
+
Bounding box defines the shape of the package. For example, [[0, 0], ["2mm", "2mm"].
|
|
41
|
+
|
|
37
42
|
"""
|
|
38
43
|
|
|
39
|
-
def __init__(self, pedb, edb_object=None, name=None):
|
|
40
|
-
|
|
41
|
-
if
|
|
42
|
-
self._edb_object = self.__create_from_name(name)
|
|
44
|
+
def __init__(self, pedb, edb_object=None, name=None, component_part_name=None, extent_bounding_box=None):
|
|
45
|
+
super().__init__(pedb, edb_object)
|
|
46
|
+
if self._edb_object is None and name is not None:
|
|
47
|
+
self._edb_object = self.__create_from_name(name, component_part_name, extent_bounding_box)
|
|
43
48
|
else:
|
|
44
49
|
self._edb_object = edb_object
|
|
45
50
|
|
|
46
51
|
@pyedb_function_handler
|
|
47
|
-
def __create_from_name(self, name):
|
|
48
|
-
"""Create a package
|
|
52
|
+
def __create_from_name(self, name, component_part_name=None, extent_bounding_box=None):
|
|
53
|
+
"""Create a package definition.
|
|
49
54
|
|
|
50
55
|
Parameters
|
|
51
56
|
----------
|
|
@@ -58,13 +63,18 @@ class PackageDef(ObjBase):
|
|
|
58
63
|
EDB PackageDef Object
|
|
59
64
|
"""
|
|
60
65
|
edb_object = self._pedb.edb_api.definition.PackageDef.Create(self._pedb.active_db, name)
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
66
|
+
if component_part_name:
|
|
67
|
+
x_pt1, y_pt1, x_pt2, y_pt2 = list(
|
|
68
|
+
self._pedb.components.definitions[component_part_name].components.values()
|
|
69
|
+
)[0].bounding_box
|
|
70
|
+
x_mid = (x_pt1 + x_pt2) / 2
|
|
71
|
+
y_mid = (y_pt1 + y_pt2) / 2
|
|
72
|
+
bbox = [[y_pt1 - y_mid, x_pt1 - x_mid], [y_pt2 - y_mid, x_pt2 - x_mid]]
|
|
73
|
+
else:
|
|
74
|
+
bbox = extent_bounding_box
|
|
75
|
+
polygon_data = PolygonData(self._pedb, create_from_bounding_box=True, points=bbox)
|
|
65
76
|
|
|
66
|
-
|
|
67
|
-
edb_object.SetExteriorBoundary(polygon)
|
|
77
|
+
edb_object.SetExteriorBoundary(polygon_data._edb_object)
|
|
68
78
|
return edb_object
|
|
69
79
|
|
|
70
80
|
@pyedb_function_handler
|
|
@@ -72,6 +82,15 @@ class PackageDef(ObjBase):
|
|
|
72
82
|
"""Delete a package definition object from the database."""
|
|
73
83
|
return self._edb_object.Delete()
|
|
74
84
|
|
|
85
|
+
@property
|
|
86
|
+
def exterior_boundary(self):
|
|
87
|
+
"""Get the exterior boundary of a package definition."""
|
|
88
|
+
return PolygonData(self._pedb, self._edb_object.GetExteriorBoundary()).points
|
|
89
|
+
|
|
90
|
+
@exterior_boundary.setter
|
|
91
|
+
def exterior_boundary(self, value):
|
|
92
|
+
self._edb_object.SetExteriorBoundary(value._edb_object)
|
|
93
|
+
|
|
75
94
|
@property
|
|
76
95
|
def maximum_power(self):
|
|
77
96
|
"""Maximum power of the package."""
|
|
@@ -721,10 +721,11 @@ class EdbDotNet(object):
|
|
|
721
721
|
"""Initialize DLLs."""
|
|
722
722
|
from pyedb.dotnet.clr_module import _clr, edb_initialized
|
|
723
723
|
|
|
724
|
-
if settings.
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
724
|
+
if not settings.use_pyaedt_log:
|
|
725
|
+
if settings.enable_screen_logs:
|
|
726
|
+
self._logger.enable_stdout_log()
|
|
727
|
+
else: # pragma: no cover
|
|
728
|
+
self._logger.disable_stdout_log()
|
|
728
729
|
if not edb_initialized: # pragma: no cover
|
|
729
730
|
self._logger.error("Failed to initialize Dlls.")
|
|
730
731
|
return
|
|
@@ -329,7 +329,7 @@ class EDBComponent(object):
|
|
|
329
329
|
|
|
330
330
|
@solder_ball_height.setter
|
|
331
331
|
def solder_ball_height(self, value):
|
|
332
|
-
if "GetSolderBallProperty" in dir(self.component_property)
|
|
332
|
+
if "GetSolderBallProperty" in dir(self.component_property):
|
|
333
333
|
sball_height = round(self._edb.utility.Value(value).ToDouble(), 9)
|
|
334
334
|
cmp_property = self.component_property
|
|
335
335
|
solder_ball_prop = cmp_property.GetSolderBallProperty().Clone()
|
|
@@ -20,7 +20,7 @@
|
|
|
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 pyedb.dotnet.edb_core.
|
|
23
|
+
from pyedb.dotnet.edb_core.obj_base import ObjBase
|
|
24
24
|
from pyedb.generic.general_methods import pyedb_function_handler
|
|
25
25
|
|
|
26
26
|
|
|
@@ -563,8 +563,9 @@ class StackupLayerEdbClass(LayerEdbClass):
|
|
|
563
563
|
else:
|
|
564
564
|
material_data = layer["material"]
|
|
565
565
|
if material_data is not None:
|
|
566
|
-
|
|
567
|
-
self.
|
|
566
|
+
material_name = layer["material"]["name"]
|
|
567
|
+
self._pclass._pedb.materials.add_material(material_name, **material_data)
|
|
568
|
+
self.material = material_name
|
|
568
569
|
if layer["dielectric_fill"]:
|
|
569
570
|
if isinstance(layer["dielectric_fill"], str):
|
|
570
571
|
self.dielectric_fill = layer["dielectric_fill"]
|
|
@@ -888,7 +888,7 @@ class EdbPath(EDBPrimitives, PathDotNet):
|
|
|
888
888
|
return self._app.hfss.create_edge_port_vertical(self.id, pos, name, 50, reference_layer)
|
|
889
889
|
|
|
890
890
|
@pyedb_function_handler()
|
|
891
|
-
def create_via_fence(self, distance, gap, padstack_name):
|
|
891
|
+
def create_via_fence(self, distance, gap, padstack_name, net_name="GND"):
|
|
892
892
|
"""Create via fences on both sides of the trace.
|
|
893
893
|
|
|
894
894
|
Parameters
|
|
@@ -899,6 +899,8 @@ class EdbPath(EDBPrimitives, PathDotNet):
|
|
|
899
899
|
Gap between vias.
|
|
900
900
|
padstack_name: str
|
|
901
901
|
Name of the via padstack.
|
|
902
|
+
net_name: str, optional
|
|
903
|
+
Name of the net.
|
|
902
904
|
|
|
903
905
|
Returns
|
|
904
906
|
-------
|
|
@@ -990,7 +992,7 @@ class EdbPath(EDBPrimitives, PathDotNet):
|
|
|
990
992
|
center_line = self.get_center_line()
|
|
991
993
|
leftline, rightline = getParalletLines(center_line, distance)
|
|
992
994
|
for x, y in getLocations(rightline, gap) + getLocations(leftline, gap):
|
|
993
|
-
self._pedb.padstacks.place([x, y], padstack_name)
|
|
995
|
+
self._pedb.padstacks.place([x, y], padstack_name, net_name=net_name)
|
|
994
996
|
|
|
995
997
|
|
|
996
998
|
class EdbRectangle(EDBPrimitives, RectangleDotNet):
|
{pyedb-0.7.1 → pyedb-0.8.0}/src/pyedb/dotnet/edb_core/edb_data/siwave_simulation_setup_data.py
RENAMED
|
@@ -27,6 +27,7 @@ from pyedb.dotnet.edb_core.general import (
|
|
|
27
27
|
convert_pydict_to_netdict,
|
|
28
28
|
)
|
|
29
29
|
from pyedb.dotnet.edb_core.utilities.simulation_setup import BaseSimulationSetup
|
|
30
|
+
from pyedb.dotnet.sim_setup_data.data.siw_dc_ir_settings import SiwaveDCIRSettings
|
|
30
31
|
from pyedb.generic.general_methods import is_linux, pyedb_function_handler
|
|
31
32
|
|
|
32
33
|
|
|
@@ -1144,6 +1145,11 @@ class SiwaveDCSimulationSetup(SiwaveSYZSimulationSetup):
|
|
|
1144
1145
|
self.set_dc_slider(1)
|
|
1145
1146
|
return self
|
|
1146
1147
|
|
|
1148
|
+
@property
|
|
1149
|
+
def dc_ir_settings(self):
|
|
1150
|
+
"""DC IR settings."""
|
|
1151
|
+
return SiwaveDCIRSettings(self)
|
|
1152
|
+
|
|
1147
1153
|
@pyedb_function_handler
|
|
1148
1154
|
def get_configurations(self):
|
|
1149
1155
|
"""Get SIwave DC simulation settings.
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
#
|
|
4
|
+
#
|
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
# furnished to do so, subject to the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
# copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
# SOFTWARE.
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
class PointData:
|
|
25
|
+
"""Point Data."""
|
|
26
|
+
|
|
27
|
+
def __init__(self, pedb, edb_object=None, x=None, y=None):
|
|
28
|
+
self._pedb = pedb
|
|
29
|
+
if edb_object:
|
|
30
|
+
self._edb_object = edb_object
|
|
31
|
+
else:
|
|
32
|
+
x = x if x else 0
|
|
33
|
+
y = y if y else 0
|
|
34
|
+
self._edb_object = self._pedb.edb_api.geometry.point_data(
|
|
35
|
+
self._pedb.edb_value(x),
|
|
36
|
+
self._pedb.edb_value(y),
|
|
37
|
+
)
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
# Copyright (C) 2023 - 2024 ANSYS, Inc. and/or its affiliates.
|
|
2
|
+
# SPDX-License-Identifier: MIT
|
|
3
|
+
#
|
|
4
|
+
#
|
|
5
|
+
# Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
# of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
# in the Software without restriction, including without limitation the rights
|
|
8
|
+
# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
# copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
# furnished to do so, subject to the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
# copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
# AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
# LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
# OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
# SOFTWARE.
|
|
22
|
+
|
|
23
|
+
from pyedb.dotnet.edb_core.geometry.point_data import PointData
|
|
24
|
+
from pyedb.dotnet.edb_core.obj_base import BBox
|
|
25
|
+
from pyedb.generic.general_methods import pyedb_function_handler
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
class PolygonData:
|
|
29
|
+
"""Polygon Data."""
|
|
30
|
+
|
|
31
|
+
def __init__(
|
|
32
|
+
self,
|
|
33
|
+
pedb,
|
|
34
|
+
edb_object=None,
|
|
35
|
+
create_from_points=None,
|
|
36
|
+
create_from_circle=None,
|
|
37
|
+
create_from_rectangle=None,
|
|
38
|
+
create_from_bounding_box=None,
|
|
39
|
+
**kwargs,
|
|
40
|
+
):
|
|
41
|
+
self._pedb = pedb
|
|
42
|
+
|
|
43
|
+
if create_from_points:
|
|
44
|
+
self._edb_object = self.create_from_points(**kwargs)
|
|
45
|
+
elif create_from_circle:
|
|
46
|
+
x_center, y_center, radius = kwargs
|
|
47
|
+
elif create_from_rectangle:
|
|
48
|
+
x_lower_left, y_lower_left, x_upper_right, y_upper_right = kwargs
|
|
49
|
+
elif create_from_bounding_box:
|
|
50
|
+
self._edb_object = self.create_from_bounding_box(**kwargs)
|
|
51
|
+
else: # pragma: no cover
|
|
52
|
+
self._edb_object = edb_object
|
|
53
|
+
|
|
54
|
+
@property
|
|
55
|
+
def points(self):
|
|
56
|
+
"""Get all points in polygon.
|
|
57
|
+
|
|
58
|
+
Returns
|
|
59
|
+
-------
|
|
60
|
+
list[list[float]]
|
|
61
|
+
"""
|
|
62
|
+
return [
|
|
63
|
+
[self._pedb.edb_value(i.X).ToDouble(), self._pedb.edb_value(i.Y).ToDouble()]
|
|
64
|
+
for i in list(self._edb_object.Points)
|
|
65
|
+
]
|
|
66
|
+
|
|
67
|
+
@pyedb_function_handler
|
|
68
|
+
def create_from_points(self, points, closed=True):
|
|
69
|
+
list_of_point_data = []
|
|
70
|
+
for pt in points:
|
|
71
|
+
list_of_point_data.append(PointData(self._pedb, x=pt[0], y=pt[1]))
|
|
72
|
+
return self._pedb.edb_api.geometry.api_class.PolygonData(list_of_point_data, closed)
|
|
73
|
+
|
|
74
|
+
@pyedb_function_handler
|
|
75
|
+
def create_from_bounding_box(self, points):
|
|
76
|
+
bbox = BBox(self._pedb, point_1=points[0], point_2=points[1])
|
|
77
|
+
return self._pedb.edb_api.geometry.api_class.PolygonData.CreateFromBBox(bbox._edb_object)
|