ada-py 0.0.45.dev8__tar.gz → 0.2.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.
- {ada-py-0.0.45.dev8/src/ada_py.egg-info → ada-py-0.2.0}/PKG-INFO +1 -1
- ada-py-0.2.0/pyproject.toml +55 -0
- ada-py-0.2.0/src/ada/api/animations.py +160 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/beams/geom_beams.py +5 -5
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/containers.py +5 -3
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/spatial/assembly.py +12 -6
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/spatial/part.py +38 -4
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/base/physical_objects.py +40 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/convert_length_unit_patch.py +1 -1
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/units_conversion.py +3 -2
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/calc/beams.py +6 -2
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/__init__.py +8 -1
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/common.py +2 -1
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/concept.py +14 -12
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/constraints.py +34 -33
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/read/reader.py +21 -11
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/write/write_output_requests.py +0 -1
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/write/write_parts.py +1 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/write/writer.py +4 -3
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/common.py +8 -1
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/execute.py +11 -10
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/write/api_helpers.py +34 -55
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/write/steps/dynamic.py +3 -2
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/write/write_med.py +7 -7
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/write/write_steps.py +1 -1
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/write/writer.py +0 -1
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/general.py +1 -1
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/write/write_sections.py +2 -1
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/write/writer.py +3 -1
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/utils.py +5 -2
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/vtu/write.py +2 -1
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/meshing/concepts.py +12 -8
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/outputs.py +18 -18
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/results/common.py +111 -8
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/results/concepts.py +12 -11
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/results/field_data.py +3 -1
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/results/sqlite_store.py +4 -1
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/sections.py +4 -5
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/shapes/definitions.py +6 -6
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/occ/store.py +2 -2
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/occ/tessellating.py +10 -3
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/occ/utils.py +5 -3
- ada-py-0.2.0/src/ada/visit/comms.py +150 -0
- ada-py-0.2.0/src/ada/visit/rendering/femviz.py +28 -0
- ada-py-0.0.45.dev8/src/ada/visit/render_pygfx_helpers.py → ada-py-0.2.0/src/ada/visit/rendering/pygfx_helpers.py +4 -2
- {ada-py-0.0.45.dev8/src/ada/visit → ada-py-0.2.0/src/ada/visit/rendering}/render_pygfx.py +9 -4
- ada-py-0.2.0/src/ada/visit/rendering/renderer_react.py +59 -0
- ada-py-0.2.0/src/ada/visit/resources/index.zip +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/visit/utils.py +31 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/visit/websocket_server.py +52 -4
- {ada-py-0.0.45.dev8 → ada-py-0.2.0/src/ada_py.egg-info}/PKG-INFO +1 -1
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada_py.egg-info/SOURCES.txt +6 -10
- ada-py-0.0.45.dev8/MANIFEST.in +0 -4
- ada-py-0.0.45.dev8/pyproject.toml +0 -35
- ada-py-0.0.45.dev8/src/ada/visit/comms.py +0 -86
- ada-py-0.0.45.dev8/src/ada/visit/rendering/femviz.py +0 -130
- ada-py-0.0.45.dev8/src/ada/visit/rendering/new_render_api.py +0 -109
- ada-py-0.0.45.dev8/src/ada/visit/rendering/render_fem.py +0 -49
- ada-py-0.0.45.dev8/src/ada/visit/rendering/renderer_ipygany.py +0 -16
- ada-py-0.0.45.dev8/src/ada/visit/rendering/renderer_pythreejs.py +0 -875
- ada-py-0.0.45.dev8/src/ada/visit/rendering/renderer_pyvista.py +0 -33
- ada-py-0.0.45.dev8/src/ada/visit/rendering/threejs_utils.py +0 -127
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/LICENSE +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/README.md +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/setup.cfg +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/beams/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/beams/base_bm.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/beams/helpers.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/bounding_box.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/connections.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/curves.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/exceptions.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/fasteners.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/groups.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/nodes.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/piping/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/piping/base_piping.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/plates/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/plates/base_pl.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/presentation_layers.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/primitive_boolean.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/primitives.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/spatial/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/transforms.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/user.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/walls/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/api/walls/base_walls.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/base/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/base/adacpp_interface.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/base/changes.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/base/ifc_types.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/base/root.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/base/types.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/base/units.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cache/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cache/reader.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cache/store.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cache/utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cache/writer.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/cad_store.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/gxml/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/gxml/read/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/gxml/read/helpers.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/gxml/read/read_bcs.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/gxml/read/read_beams.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/gxml/read/read_groups.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/gxml/read/read_joints.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/gxml/read/read_masses.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/gxml/read/read_materials.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/gxml/read/read_sections.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/gxml/read/read_sets.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/gxml/sat_helpers.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/gxml/store.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/gxml/write/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/gxml/write/resources/xml_blank.xml +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/gxml/write/write_bcs.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/gxml/write/write_beams.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/gxml/write/write_masses.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/gxml/write/write_materials.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/gxml/write/write_sat_embedded.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/gxml/write/write_sections.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/gxml/write/write_utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/gxml/write/write_xml.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/ifc_template.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/read/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/read/exceptions.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/read/geom/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/read/geom/curves.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/read/geom/geom_reader.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/read/geom/placement.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/read/geom/solids.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/read/geom/surfaces.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/read/read_beam_section.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/read/read_beams.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/read/read_curves.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/read/read_ifc.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/read/read_materials.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/read/read_parts.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/read/read_physical_objects.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/read/read_pipe.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/read/read_plates.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/read/read_shapes.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/read/reader_utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/store.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/write/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/write/geom/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/write/geom/curves.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/write/geom/placement.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/write/geom/solids.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/write/geom/surfaces.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/write/primitive_helper_utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/write/write_beams.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/write/write_curves.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/write/write_fasteners.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/write/write_groups.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/write/write_ifc.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/write/write_instances.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/write/write_material.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/write/write_openings.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/write/write_pipe.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/write/write_plates.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/write/write_sections.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/write/write_shapes.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/write/write_spatial_elements.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/write/write_stru_components.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/write/write_user.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/ifc/write/write_wall.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/sat/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/sat/exceptions.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/sat/read/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/sat/read/bsplinesurface.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/sat/read/face.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/sat/reader.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/sat/store.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/sat/utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/sat/write/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/sat/write/writer.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/step/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/step/read/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/step/read/reader_utils.py +1 -1
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/step/store.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/step/stp_to_ifc.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/step/write/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/cadit/step/write/writer.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/calc/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/calc/ec3_ex.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/calc/utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/config.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/core/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/core/alignment_utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/core/bimserver.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/core/blender.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/core/clash_check.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/core/constants.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/core/curve_fitting_utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/core/curve_utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/core/date_utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/core/exceptions.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/core/file_system.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/core/guid.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/core/tools.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/core/utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/core/vector_transforms.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/core/vector_utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/drawings/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/drawings/export.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/constants.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/containers.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/conversion_utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/elements.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/exceptions/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/exceptions/element_support.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/exceptions/fea_execution.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/exceptions/fea_software.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/exceptions/model_definition.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/elem_formulations.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/elem_shapes.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/execute.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/options.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/read/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/read/cards.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/read/helper_utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/read/read_elements.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/read/read_masses.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/read/read_materials.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/read/read_orientations.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/read/read_sections.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/results/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/results/_results.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/results/aba_io.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/results/read_odb.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/solver.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/write/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/write/helper_utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/write/templates.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/write/write_amplitudes.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/write/write_bc.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/write/write_connectors.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/write/write_constraints.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/write/write_elements.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/write/write_interactions.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/write/write_loads.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/write/write_main_inp.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/write/write_masses.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/write/write_materials.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/write/write_nodes.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/write/write_orientations.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/write/write_predefined_state.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/write/write_sections.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/write/write_sets.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/write/write_springs.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/write/write_steps.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/abaqus/write/write_surfaces.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/calculix/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/calculix/common.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/calculix/compatibility.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/calculix/execute.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/calculix/results/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/calculix/results/read_eigen_data.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/calculix/results/read_frd_file.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/calculix/results/read_results.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/calculix/write/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/calculix/write/templates.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/calculix/write/write_elements.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/calculix/write/write_loads.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/calculix/write/write_steps.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/calculix/write/writer.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/compatibility.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/read/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/read/read_sets.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/read/reader.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/results/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/results/read_rmed_results.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/results/results.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/results/results_helpers.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/write/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/write/helper_utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/write/steps/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/write/steps/eigen.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/write/steps/fields.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/write/steps/static.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/write/steps/static_lin.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/write/steps/static_nonlin.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/write/templates.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/write/write_bc.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/write/write_loads.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/write/write_materials.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/write/write_nodes.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/write/write_sections.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/code_aster/write/write_sets.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/execute.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/ifc/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/ifc/helper_utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/ifc/writer.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/mesh_io/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/mesh_io/common.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/mesh_io/reader.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/mesh_io/writer.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/postprocess.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/common.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/execute.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/read/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/read/cards.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/read/read_constraints.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/read/read_elements.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/read/read_materials.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/read/read_nodes.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/read/read_sections.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/read/read_sets.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/read/reader.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/results/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/results/_results.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/results/read_cc.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/results/read_sif.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/results/sin2sif.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/write/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/write/templates.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/write/write_bm_profiles.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/write/write_constraints.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/write/write_elements.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/write/write_loads.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/write/write_masses.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/write/write_steps.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/sesam/write/write_utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/tools.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/usfos/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/usfos/write/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/usfos/write/write_elements.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/usfos/write/write_profiles.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/usfos/write/writer.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/vtu/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/xdmf/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/xdmf/common.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/xdmf/reader.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formats/xdmf/writer.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formulations/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/formulations/lines.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/interactions.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/loads.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/meshing/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/meshing/common.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/meshing/exceptions.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/meshing/multisession.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/meshing/partitioning/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/meshing/partitioning/partition_beams.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/meshing/partitioning/strategies.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/meshing/recipes.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/meshing/utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/options.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/results/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/results/components.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/results/eigenvalue.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/results/interface.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/results/resources/results.sql +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/sets.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/shapes/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/shapes/lines.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/shapes/mesh_types.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/shapes/shells.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/shapes/solids.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/steps.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/surfaces.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/fem/utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/geom/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/geom/booleans.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/geom/core.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/geom/curve_utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/geom/curves.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/geom/placement.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/geom/points.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/geom/solids.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/geom/surfaces.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/materials/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/materials/concept.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/materials/metals/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/materials/metals/base_models.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/materials/metals/plasticity_models.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/materials/metals/resources/NLMatParams.json +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/materials/polymers/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/materials/polymers/models.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/materials/polymers/utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/materials/utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/occ/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/occ/exceptions.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/occ/geom/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/occ/geom/boolean.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/occ/geom/curves.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/occ/geom/solids.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/occ/geom/surfaces.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/occ/gltf_writer.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/occ/serializers.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/occ/visit_utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/occ/xcaf_utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/param_models/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/param_models/basic_joints.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/param_models/basic_module.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/param_models/basic_structural_components.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/param_models/fem_models.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/param_models/primitives_generators.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/param_models/utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/sections/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/sections/bm_sh_ident.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/sections/categories.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/sections/concept.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/sections/profiles.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/sections/properties.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/sections/resources/ProfileDB.json +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/sections/utils.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/visit/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/visit/colors.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/visit/concept.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/visit/config.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/visit/gltf/__init__.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/visit/gltf/graph.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/visit/gltf/meshes.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/visit/gltf/optimize.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/visit/gltf/store.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/visit/optimizing.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/visit/plots.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada/visit/rendering/__init__.py +0 -0
- {ada-py-0.0.45.dev8/src/ada/visit → ada-py-0.2.0/src/ada/visit/rendering}/render_backend.py +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada_py.egg-info/dependency_links.txt +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada_py.egg-info/entry_points.txt +0 -0
- {ada-py-0.0.45.dev8 → ada-py-0.2.0}/src/ada_py.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: ada-py
|
|
3
|
-
Version: 0.0
|
|
3
|
+
Version: 0.2.0
|
|
4
4
|
Summary: Assembly for Design & Analysis - A python library for structural analysis and design
|
|
5
5
|
Author-email: "Kristoffer H. Andersen" <kristoffer_andersen@outlook.com>
|
|
6
6
|
Project-URL: Homepage, https://github.com/Krande/adapy
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "ada-py"
|
|
7
|
+
version = "0.2.0"
|
|
8
|
+
authors = [
|
|
9
|
+
{ name = "Kristoffer H. Andersen", email = "kristoffer_andersen@outlook.com" },
|
|
10
|
+
]
|
|
11
|
+
description = "Assembly for Design & Analysis - A python library for structural analysis and design"
|
|
12
|
+
readme = "README.md"
|
|
13
|
+
requires-python = ">=3.10"
|
|
14
|
+
classifiers = [
|
|
15
|
+
"Development Status :: 3 - Alpha",
|
|
16
|
+
"Intended Audience :: Science/Research",
|
|
17
|
+
"License :: OSI Approved :: GNU General Public License v3 (GPLv3)",
|
|
18
|
+
"Operating System :: OS Independent",
|
|
19
|
+
"Programming Language :: Python",
|
|
20
|
+
"Programming Language :: Python :: 3.10",
|
|
21
|
+
"Programming Language :: Python :: 3.11",
|
|
22
|
+
"Topic :: Scientific/Engineering",
|
|
23
|
+
"Topic :: Utilities",
|
|
24
|
+
]
|
|
25
|
+
[project.scripts]
|
|
26
|
+
ada-viewer = "ada.visit.render_pygfx:main"
|
|
27
|
+
|
|
28
|
+
[project.urls]
|
|
29
|
+
"Homepage" = "https://github.com/Krande/adapy"
|
|
30
|
+
"Bug Tracker" = "https://github.com/Krande/adapy/issues"
|
|
31
|
+
|
|
32
|
+
[tool.setuptools.packages.find]
|
|
33
|
+
where = ["src"]
|
|
34
|
+
include = ["ada*"]
|
|
35
|
+
exclude = ["frontend*"]
|
|
36
|
+
|
|
37
|
+
[tool.setuptools.package-data]
|
|
38
|
+
ada = [
|
|
39
|
+
"sections/resources/ProfileDB.json",
|
|
40
|
+
"materials/metals/resources/NLMatParams.json",
|
|
41
|
+
"cadit/gxml/write/resources/xml_blank.xml",
|
|
42
|
+
"fem/results/resources/results.sql",
|
|
43
|
+
"visit/resources/index.zip"
|
|
44
|
+
]
|
|
45
|
+
|
|
46
|
+
[tool.black]
|
|
47
|
+
line-length = 120
|
|
48
|
+
|
|
49
|
+
[tool.ruff]
|
|
50
|
+
line-length = 120
|
|
51
|
+
ignore = ["E741"]
|
|
52
|
+
exclude = ["examples/"]
|
|
53
|
+
|
|
54
|
+
[tool.isort]
|
|
55
|
+
profile = "black"
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
from dataclasses import dataclass, field
|
|
4
|
+
|
|
5
|
+
import numpy as np
|
|
6
|
+
from trimesh.exchange.gltf import _data_append
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@dataclass
|
|
10
|
+
class Animation:
|
|
11
|
+
name: str
|
|
12
|
+
keyframe_times: list[float | int]
|
|
13
|
+
translation_keyframes: list[float | int] = None
|
|
14
|
+
rotation_keyframes: list[list[float, float, float, float]] = None
|
|
15
|
+
deformation_weights_keyframes: list[float | int] = None
|
|
16
|
+
deformation_shape: list[list[float]] = None
|
|
17
|
+
node_idx: int | list[int] = None
|
|
18
|
+
|
|
19
|
+
def __call__(self, buffer_items, tree, morph_target_index, num_morph_targets):
|
|
20
|
+
node_idx_list = self.node_idx
|
|
21
|
+
if not isinstance(node_idx_list, list):
|
|
22
|
+
node_idx_list = [node_idx_list]
|
|
23
|
+
|
|
24
|
+
keyframe_idx = _data_append(
|
|
25
|
+
acc=tree["accessors"],
|
|
26
|
+
buff=buffer_items,
|
|
27
|
+
blob={"componentType": 5126, "type": "SCALAR"},
|
|
28
|
+
data=np.array(self.keyframe_times, dtype="float32"),
|
|
29
|
+
)
|
|
30
|
+
|
|
31
|
+
samplers = []
|
|
32
|
+
channels = []
|
|
33
|
+
if self.translation_keyframes is not None:
|
|
34
|
+
translation_idx = _data_append(
|
|
35
|
+
acc=tree["accessors"],
|
|
36
|
+
buff=buffer_items,
|
|
37
|
+
blob={"componentType": 5126, "type": "VEC3"},
|
|
38
|
+
data=np.array(self.translation_keyframes, dtype="float32"),
|
|
39
|
+
)
|
|
40
|
+
translation_sampler = {"input": keyframe_idx, "interpolation": "LINEAR", "output": translation_idx}
|
|
41
|
+
sampler_idx = len(samplers)
|
|
42
|
+
samplers.append(translation_sampler)
|
|
43
|
+
for node_idx in node_idx_list:
|
|
44
|
+
translation_channel = {"sampler": sampler_idx, "target": {"node": node_idx, "path": "translation"}}
|
|
45
|
+
channels.append(translation_channel)
|
|
46
|
+
|
|
47
|
+
if self.rotation_keyframes is not None:
|
|
48
|
+
rotation_idx = _data_append(
|
|
49
|
+
acc=tree["accessors"],
|
|
50
|
+
buff=buffer_items,
|
|
51
|
+
blob={"componentType": 5126, "type": "VEC4"},
|
|
52
|
+
data=np.array(self.rotation_keyframes, dtype="float32"),
|
|
53
|
+
)
|
|
54
|
+
rotation_sampler = {"input": keyframe_idx, "interpolation": "LINEAR", "output": rotation_idx}
|
|
55
|
+
sampler_idx = len(samplers)
|
|
56
|
+
samplers.append(rotation_sampler)
|
|
57
|
+
for node_idx in node_idx_list:
|
|
58
|
+
rotation_channel = {"sampler": sampler_idx, "target": {"node": node_idx, "path": "rotation"}}
|
|
59
|
+
channels.append(rotation_channel)
|
|
60
|
+
|
|
61
|
+
if self.deformation_weights_keyframes is not None:
|
|
62
|
+
deformation_shape_idx = _data_append(
|
|
63
|
+
acc=tree["accessors"],
|
|
64
|
+
buff=buffer_items,
|
|
65
|
+
blob={"componentType": 5126, "type": "VEC3"},
|
|
66
|
+
data=np.array(self.deformation_shape, dtype="float32"),
|
|
67
|
+
)
|
|
68
|
+
|
|
69
|
+
keyframe_weights = np.zeros((len(self.deformation_weights_keyframes) * num_morph_targets), dtype="float32")
|
|
70
|
+
for i, weight in enumerate(self.deformation_weights_keyframes):
|
|
71
|
+
keyframe_weights[i * num_morph_targets + morph_target_index] = weight
|
|
72
|
+
|
|
73
|
+
# print(keyframe_weights)
|
|
74
|
+
deformation_weights_keys_idx = _data_append(
|
|
75
|
+
acc=tree["accessors"],
|
|
76
|
+
buff=buffer_items,
|
|
77
|
+
blob={"componentType": 5126, "type": "SCALAR"},
|
|
78
|
+
data=keyframe_weights,
|
|
79
|
+
)
|
|
80
|
+
|
|
81
|
+
deformation_sampler = {
|
|
82
|
+
"input": keyframe_idx,
|
|
83
|
+
"interpolation": "LINEAR",
|
|
84
|
+
"output": deformation_weights_keys_idx,
|
|
85
|
+
}
|
|
86
|
+
sampler_idx = len(samplers)
|
|
87
|
+
samplers.append(deformation_sampler)
|
|
88
|
+
|
|
89
|
+
for node_idx in node_idx_list:
|
|
90
|
+
deformation_channel = {"sampler": sampler_idx, "target": {"node": node_idx, "path": "weights"}}
|
|
91
|
+
channels.append(deformation_channel)
|
|
92
|
+
|
|
93
|
+
# add position targets
|
|
94
|
+
mesh_no = tree["nodes"][node_idx]["mesh"]
|
|
95
|
+
mesh = tree["meshes"][mesh_no]
|
|
96
|
+
|
|
97
|
+
deform_target = {"POSITION": deformation_shape_idx}
|
|
98
|
+
|
|
99
|
+
# make sure the referenced bufferview contains the target property
|
|
100
|
+
primitive = mesh["primitives"][0]
|
|
101
|
+
if primitive.get("targets") is None:
|
|
102
|
+
primitive["targets"] = []
|
|
103
|
+
|
|
104
|
+
target_idx = len(primitive["targets"])
|
|
105
|
+
primitive["targets"].append(deform_target)
|
|
106
|
+
|
|
107
|
+
if mesh["extras"].get("targetNames") is None:
|
|
108
|
+
mesh["extras"]["targetNames"] = []
|
|
109
|
+
mesh["extras"]["targetNames"].append(self.name)
|
|
110
|
+
|
|
111
|
+
if mesh.get("weights") is None:
|
|
112
|
+
mesh["weights"] = []
|
|
113
|
+
|
|
114
|
+
mesh["weights"].append(target_idx)
|
|
115
|
+
|
|
116
|
+
# Update tree with data added to buffer
|
|
117
|
+
if tree.get("animations") is None:
|
|
118
|
+
tree["animations"] = []
|
|
119
|
+
|
|
120
|
+
tree["animations"].append(
|
|
121
|
+
{
|
|
122
|
+
"name": self.name,
|
|
123
|
+
"samplers": samplers,
|
|
124
|
+
"channels": channels,
|
|
125
|
+
}
|
|
126
|
+
)
|
|
127
|
+
|
|
128
|
+
|
|
129
|
+
@dataclass
|
|
130
|
+
class AnimationStore:
|
|
131
|
+
animations: list[Animation] = field(default_factory=list)
|
|
132
|
+
|
|
133
|
+
def __call__(self, buffer_items, tree, *args, **kwargs):
|
|
134
|
+
for idx, animation in enumerate(self.animations):
|
|
135
|
+
animation(buffer_items, tree, morph_target_index=idx, num_morph_targets=len(self.animations))
|
|
136
|
+
|
|
137
|
+
def add(self, animation: Animation):
|
|
138
|
+
self.animations.append(animation)
|
|
139
|
+
|
|
140
|
+
@staticmethod
|
|
141
|
+
def update_buffer_view(tree, accessor_idx, target_num):
|
|
142
|
+
buffer_view_idx = tree["accessors"][accessor_idx]["bufferView"]
|
|
143
|
+
buffer_view = tree["bufferViews"][buffer_view_idx]
|
|
144
|
+
if buffer_view.get("target") is None:
|
|
145
|
+
buffer_view["target"] = target_num
|
|
146
|
+
|
|
147
|
+
@staticmethod
|
|
148
|
+
def tree_postprocessor(tree):
|
|
149
|
+
for material in tree["materials"]:
|
|
150
|
+
material["doubleSided"] = True
|
|
151
|
+
|
|
152
|
+
for anim in tree["animations"]:
|
|
153
|
+
node_idx = anim["channels"][0]["target"]["node"]
|
|
154
|
+
mesh_idx = tree["nodes"][node_idx]["mesh"]
|
|
155
|
+
mesh = tree["meshes"][mesh_idx]
|
|
156
|
+
for primitive in mesh["primitives"]:
|
|
157
|
+
AnimationStore.update_buffer_view(tree, primitive["attributes"]["POSITION"], 34962)
|
|
158
|
+
AnimationStore.update_buffer_view(tree, primitive["indices"], 34963)
|
|
159
|
+
for target in primitive["targets"]:
|
|
160
|
+
AnimationStore.update_buffer_view(tree, target["POSITION"], 34962)
|
|
@@ -26,11 +26,11 @@ def straight_beam_to_geom(beam: Beam | PipeSegStraight, is_solid=True) -> Geomet
|
|
|
26
26
|
geom = Geometry(beam.guid, solid, beam.color)
|
|
27
27
|
else:
|
|
28
28
|
if beam.section.type in (
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
29
|
+
beam.section.TYPES.IPROFILE,
|
|
30
|
+
beam.section.TYPES.TPROFILE,
|
|
31
|
+
beam.section.TYPES.ANGULAR,
|
|
32
|
+
beam.section.TYPES.CHANNEL,
|
|
33
|
+
beam.section.TYPES.FLATBAR,
|
|
34
34
|
):
|
|
35
35
|
geom = profile_disconnected_to_face_geom(beam)
|
|
36
36
|
elif beam.section.type == beam.section.TYPES.BOX:
|
|
@@ -941,7 +941,9 @@ class Nodes:
|
|
|
941
941
|
def nodes(self) -> list[Node]:
|
|
942
942
|
return self._nodes
|
|
943
943
|
|
|
944
|
-
def get_by_volume(
|
|
944
|
+
def get_by_volume(
|
|
945
|
+
self, p=None, vol_box=None, vol_cyl=None, tol=Settings.point_tol, single_member=False
|
|
946
|
+
) -> list[Node]:
|
|
945
947
|
"""
|
|
946
948
|
|
|
947
949
|
:param p: Point
|
|
@@ -1002,12 +1004,12 @@ class Nodes:
|
|
|
1002
1004
|
result = list(simplesearch)
|
|
1003
1005
|
|
|
1004
1006
|
if len(result) == 0:
|
|
1005
|
-
logger.info(f
|
|
1007
|
+
logger.info(f"No vertices found using {p=}, {vol_box=}, {vol_cyl=} and {tol=}")
|
|
1006
1008
|
return result
|
|
1007
1009
|
|
|
1008
1010
|
if single_member:
|
|
1009
1011
|
if len(result) != 1:
|
|
1010
|
-
logger.warning(f
|
|
1012
|
+
logger.warning(f"Returning member at index=0 despite {len(result)=}. Please check your results")
|
|
1011
1013
|
return result[0]
|
|
1012
1014
|
|
|
1013
1015
|
return result
|
|
@@ -64,9 +64,6 @@ class Assembly(Part):
|
|
|
64
64
|
clear_cache: bool = False,
|
|
65
65
|
ifc_class: SpatialTypes = SpatialTypes.IfcSite,
|
|
66
66
|
):
|
|
67
|
-
from ada.cadit.ifc.store import IfcStore
|
|
68
|
-
from ada.cadit.ifc.utils import assembly_to_ifc_file
|
|
69
|
-
|
|
70
67
|
metadata = dict() if metadata is None else metadata
|
|
71
68
|
metadata["project"] = project
|
|
72
69
|
metadata["schema"] = schema
|
|
@@ -76,7 +73,8 @@ class Assembly(Part):
|
|
|
76
73
|
self._user = user
|
|
77
74
|
|
|
78
75
|
self._ifc_class = ifc_class
|
|
79
|
-
self.
|
|
76
|
+
self._ifc_store = None
|
|
77
|
+
self._ifc_file = None
|
|
80
78
|
self._convert_options = _ConvertOptions()
|
|
81
79
|
self._ifc_sections = None
|
|
82
80
|
self._ifc_materials = None
|
|
@@ -84,7 +82,6 @@ class Assembly(Part):
|
|
|
84
82
|
self._ifc_settings = ifc_settings
|
|
85
83
|
self._presentation_layers = PresentationLayers()
|
|
86
84
|
|
|
87
|
-
self._ifc_store = IfcStore(assembly=self)
|
|
88
85
|
self._cache_store = None
|
|
89
86
|
if enable_cache:
|
|
90
87
|
self._cache_store = CacheStore(name)
|
|
@@ -208,7 +205,9 @@ class Assembly(Part):
|
|
|
208
205
|
|
|
209
206
|
scratch_dir = Settings.scratch_dir if scratch_dir is None else pathlib.Path(scratch_dir)
|
|
210
207
|
|
|
211
|
-
write_to_fem(
|
|
208
|
+
write_to_fem(
|
|
209
|
+
self, name, fem_format, overwrite, fem_converter, scratch_dir, metadata, make_zip_file, model_data_only
|
|
210
|
+
)
|
|
212
211
|
|
|
213
212
|
# Execute
|
|
214
213
|
if execute:
|
|
@@ -288,6 +287,13 @@ class Assembly(Part):
|
|
|
288
287
|
|
|
289
288
|
@property
|
|
290
289
|
def ifc_store(self) -> IfcStore:
|
|
290
|
+
if self._ifc_store is None:
|
|
291
|
+
from ada.cadit.ifc.store import IfcStore
|
|
292
|
+
from ada.cadit.ifc.utils import assembly_to_ifc_file
|
|
293
|
+
|
|
294
|
+
self._ifc_file = assembly_to_ifc_file(self)
|
|
295
|
+
self._ifc_store = IfcStore(assembly=self)
|
|
296
|
+
|
|
291
297
|
return self._ifc_store
|
|
292
298
|
|
|
293
299
|
@ifc_store.setter
|
|
@@ -6,6 +6,7 @@ from itertools import chain
|
|
|
6
6
|
from typing import TYPE_CHECKING, Any, Callable, Iterable
|
|
7
7
|
|
|
8
8
|
from ada import Node, Pipe, PrimBox, PrimCyl, PrimExtrude, PrimRevolve, Shape
|
|
9
|
+
from ada.api.animations import AnimationStore
|
|
9
10
|
from ada.api.beams.base_bm import Beam, BeamTapered
|
|
10
11
|
from ada.api.connections import JointBase
|
|
11
12
|
from ada.api.containers import Beams, Connections, Materials, Nodes, Plates, Sections
|
|
@@ -76,6 +77,7 @@ class Part(BackendGeom):
|
|
|
76
77
|
self._groups: dict[str, Group] = dict()
|
|
77
78
|
self._ifc_class = ifc_class
|
|
78
79
|
self._props = settings
|
|
80
|
+
self._animation_store = AnimationStore()
|
|
79
81
|
if fem is not None:
|
|
80
82
|
fem.parent = self
|
|
81
83
|
|
|
@@ -253,7 +255,7 @@ class Part(BackendGeom):
|
|
|
253
255
|
return self._sections.add(section)
|
|
254
256
|
|
|
255
257
|
def add_object(self, obj: Part | Beam | Plate | Wall | Pipe | Shape | Weld | Section):
|
|
256
|
-
from ada import Beam, Part, Pipe, Plate, Shape, Wall, Weld
|
|
258
|
+
from ada import Beam, Part, Pipe, Plate, Section, Shape, Wall, Weld
|
|
257
259
|
|
|
258
260
|
if isinstance(obj, Beam):
|
|
259
261
|
return self.add_beam(obj)
|
|
@@ -791,10 +793,42 @@ class Part(BackendGeom):
|
|
|
791
793
|
|
|
792
794
|
step_writer.export(destination_file)
|
|
793
795
|
|
|
794
|
-
def
|
|
795
|
-
|
|
796
|
+
def show(
|
|
797
|
+
self,
|
|
798
|
+
renderer="react",
|
|
799
|
+
auto_open_viewer=False,
|
|
800
|
+
host="localhost",
|
|
801
|
+
port=8765,
|
|
802
|
+
server_exe: pathlib.Path = None,
|
|
803
|
+
server_args: list[str] = None,
|
|
804
|
+
**kwargs,
|
|
805
|
+
):
|
|
806
|
+
from ada.occ.tessellating import BatchTessellator
|
|
807
|
+
from ada.visit.comms import PYGFX_RENDERER_EXE_PY, start_ws_server
|
|
808
|
+
|
|
809
|
+
server_exe = None
|
|
810
|
+
if renderer == "pygfx":
|
|
811
|
+
server_exe = PYGFX_RENDERER_EXE_PY
|
|
812
|
+
|
|
813
|
+
# Start the websocket server
|
|
814
|
+
ws = start_ws_server(server_exe=server_exe, server_args=server_args, host=host, port=port)
|
|
815
|
+
|
|
816
|
+
# Set the rendering engine
|
|
817
|
+
if renderer == "react":
|
|
818
|
+
from ada.visit.rendering.renderer_react import RendererReact
|
|
796
819
|
|
|
797
|
-
|
|
820
|
+
if auto_open_viewer:
|
|
821
|
+
RendererReact().show()
|
|
822
|
+
|
|
823
|
+
# Tessellate the geometry
|
|
824
|
+
bt = BatchTessellator()
|
|
825
|
+
scene = bt.tessellate_part(self)
|
|
826
|
+
|
|
827
|
+
ws.send_scene(scene, self.animation_store, **kwargs)
|
|
828
|
+
|
|
829
|
+
@property
|
|
830
|
+
def animation_store(self) -> AnimationStore:
|
|
831
|
+
return self._animation_store
|
|
798
832
|
|
|
799
833
|
@property
|
|
800
834
|
def parts(self) -> dict[str, Part]:
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
from __future__ import annotations
|
|
2
2
|
|
|
3
|
+
import pathlib
|
|
3
4
|
from typing import TYPE_CHECKING, Callable, Iterable
|
|
4
5
|
|
|
5
6
|
from ada.api.transforms import Placement
|
|
@@ -160,6 +161,45 @@ class BackendGeom(Root):
|
|
|
160
161
|
|
|
161
162
|
return occ_geom_to_poly_mesh(self, geom_repr=geom_repr, export_config=export_config)
|
|
162
163
|
|
|
164
|
+
def show(
|
|
165
|
+
self,
|
|
166
|
+
renderer="react",
|
|
167
|
+
auto_open_viewer=False,
|
|
168
|
+
host="localhost",
|
|
169
|
+
port=8765,
|
|
170
|
+
server_exe: pathlib.Path = None,
|
|
171
|
+
server_args: list[str] = None,
|
|
172
|
+
dry_run=False,
|
|
173
|
+
):
|
|
174
|
+
from itertools import groupby
|
|
175
|
+
|
|
176
|
+
import trimesh
|
|
177
|
+
|
|
178
|
+
from ada.occ.tessellating import BatchTessellator
|
|
179
|
+
from ada.visit.comms import start_ws_server
|
|
180
|
+
from ada.visit.gltf.optimize import concatenate_stores
|
|
181
|
+
from ada.visit.gltf.store import merged_mesh_to_trimesh_scene
|
|
182
|
+
|
|
183
|
+
bt = BatchTessellator()
|
|
184
|
+
mesh_stores = list(bt.batch_tessellate([self]))
|
|
185
|
+
|
|
186
|
+
scene = trimesh.Scene()
|
|
187
|
+
mesh_map = []
|
|
188
|
+
|
|
189
|
+
for mat_id, meshes in groupby(mesh_stores, lambda x: x.material):
|
|
190
|
+
meshes = list(meshes)
|
|
191
|
+
|
|
192
|
+
merged_store = concatenate_stores(meshes)
|
|
193
|
+
mesh_map.append((mat_id, meshes, merged_store))
|
|
194
|
+
merged_mesh_to_trimesh_scene(scene, merged_store, bt.get_mat_by_id(mat_id), mat_id, None)
|
|
195
|
+
|
|
196
|
+
if dry_run:
|
|
197
|
+
return None
|
|
198
|
+
|
|
199
|
+
ws = start_ws_server(server_exe=server_exe, server_args=server_args, host=host, port=port)
|
|
200
|
+
ws.send_scene(scene)
|
|
201
|
+
return scene.show("notebook")
|
|
202
|
+
|
|
163
203
|
@property
|
|
164
204
|
def booleans(self) -> list[Boolean]:
|
|
165
205
|
return self._booleans
|
|
@@ -1,8 +1,9 @@
|
|
|
1
|
-
from typing import
|
|
1
|
+
from typing import Any, Iterable
|
|
2
2
|
|
|
3
|
+
import ifcopenshell.api
|
|
3
4
|
import ifcopenshell.util.element
|
|
4
5
|
import ifcopenshell.util.unit
|
|
5
|
-
|
|
6
|
+
|
|
6
7
|
from ada.base.units import Units
|
|
7
8
|
from ada.cadit.ifc.convert_length_unit_patch import Patcher
|
|
8
9
|
|
|
@@ -6,8 +6,6 @@ from ada import Beam
|
|
|
6
6
|
from ada.core.utils import Counter
|
|
7
7
|
from ada.visit.plots import easy_plotly
|
|
8
8
|
|
|
9
|
-
from .utils import equation_compiler
|
|
10
|
-
|
|
11
9
|
|
|
12
10
|
class ResType:
|
|
13
11
|
displ = "DISPL"
|
|
@@ -79,12 +77,18 @@ class BeamCalc:
|
|
|
79
77
|
self._p.append((name, p, x, use_relative_position))
|
|
80
78
|
|
|
81
79
|
def get_displ_formula(self):
|
|
80
|
+
from .utils import equation_compiler
|
|
81
|
+
|
|
82
82
|
return equation_compiler(displ, True)
|
|
83
83
|
|
|
84
84
|
def get_shear_formula(self):
|
|
85
|
+
from .utils import equation_compiler
|
|
86
|
+
|
|
85
87
|
return equation_compiler(shear, True)
|
|
86
88
|
|
|
87
89
|
def get_moment_formula(self):
|
|
90
|
+
from .utils import equation_compiler
|
|
91
|
+
|
|
88
92
|
return equation_compiler(moment, True)
|
|
89
93
|
|
|
90
94
|
def _repr_html_(self):
|
|
@@ -9,7 +9,13 @@ from .loads import Load, LoadCase, LoadGravity, LoadPoint, LoadPressure
|
|
|
9
9
|
from .outputs import FieldOutput, HistOutput
|
|
10
10
|
from .sections import ConnectorSection, FemSection
|
|
11
11
|
from .sets import FemSet
|
|
12
|
-
from .steps import
|
|
12
|
+
from .steps import (
|
|
13
|
+
StepEigen,
|
|
14
|
+
StepExplicit,
|
|
15
|
+
StepImplicitDynamic,
|
|
16
|
+
StepImplicitStatic,
|
|
17
|
+
StepSteadyState,
|
|
18
|
+
)
|
|
13
19
|
from .surfaces import Surface
|
|
14
20
|
|
|
15
21
|
__all__ = [
|
|
@@ -21,6 +27,7 @@ __all__ = [
|
|
|
21
27
|
"StepSteadyState",
|
|
22
28
|
"StepEigen",
|
|
23
29
|
"StepImplicitStatic",
|
|
30
|
+
"StepImplicitDynamic",
|
|
24
31
|
"StepExplicit",
|
|
25
32
|
"Surface",
|
|
26
33
|
"Elem",
|
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
from dataclasses import dataclass, field
|
|
4
4
|
from itertools import chain
|
|
5
|
-
from typing import TYPE_CHECKING, Dict, Iterable, List,
|
|
5
|
+
from typing import TYPE_CHECKING, Dict, Iterable, List, Union
|
|
6
6
|
|
|
7
7
|
from ada.api.containers import Nodes
|
|
8
8
|
from ada.config import logger
|
|
@@ -38,7 +38,7 @@ if TYPE_CHECKING:
|
|
|
38
38
|
from ada.fem.results.common import Mesh
|
|
39
39
|
from ada.fem.steps import Step
|
|
40
40
|
|
|
41
|
-
_step_types = Union["StepSteadyState", "StepEigen", "
|
|
41
|
+
_step_types = Union["StepSteadyState", "StepEigen", "StepImplicitStatic", "StepExplicit"]
|
|
42
42
|
|
|
43
43
|
|
|
44
44
|
@dataclass
|
|
@@ -66,8 +66,9 @@ class FEM:
|
|
|
66
66
|
constraints: Dict[str, Constraint] = field(init=False, default_factory=dict)
|
|
67
67
|
|
|
68
68
|
bcs: List[Bc] = field(init=False, default_factory=list)
|
|
69
|
-
steps: List[Union[StepSteadyState, StepEigen, StepImplicitStatic, StepExplicit]] = field(
|
|
70
|
-
|
|
69
|
+
steps: List[Union[StepSteadyState, StepEigen, StepImplicitStatic, StepExplicit]] = field(
|
|
70
|
+
init=False, default_factory=list
|
|
71
|
+
)
|
|
71
72
|
|
|
72
73
|
nodes: Nodes = field(default_factory=Nodes, init=True)
|
|
73
74
|
ref_points: Nodes = field(default_factory=Nodes, init=True)
|
|
@@ -130,13 +131,13 @@ class FEM:
|
|
|
130
131
|
return mass
|
|
131
132
|
|
|
132
133
|
def add_set(
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
134
|
+
self,
|
|
135
|
+
fem_set: FemSet,
|
|
136
|
+
p=None,
|
|
137
|
+
vol_box=None,
|
|
138
|
+
vol_cyl=None,
|
|
139
|
+
single_member=False,
|
|
140
|
+
tol=1e-4,
|
|
140
141
|
) -> FemSet:
|
|
141
142
|
"""
|
|
142
143
|
:param fem_set: A fem set object
|
|
@@ -250,7 +251,8 @@ class FEM:
|
|
|
250
251
|
connector.parent = self
|
|
251
252
|
if not isinstance(self.parent, Assembly):
|
|
252
253
|
logger.warning(
|
|
253
|
-
"Connector Elements can usually only be added to an Assembly object. Please check your model."
|
|
254
|
+
"Connector Elements can usually only be added to an Assembly object. Please check your model."
|
|
255
|
+
)
|
|
254
256
|
|
|
255
257
|
self.elements.add(connector)
|
|
256
258
|
connector.csys.parent = self
|