diff --git a/.clang-tidy b/.clang-tidy index 8e18d3a74907..b76cba3e828c 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,14 +1,13 @@ --- Checks: 'clang-diagnostic-*,clang-analyzer-*,boost-*,bugprone-*, performance-*,readability-*,portability-*,modernize-*,cppcoreguidelines-*,google-explicit-constructor, -concurrency-*,-modernize-use-trailing-return-type, -modernize-use-nodiscard, +concurrency-*,-modernize-use-trailing-return-type, -modernize-use-nodiscard,-readability-identifier-length, -readability-redundant-access-specifiers,-readability-qualified-auto, -cppcoreguidelines-avoid-non-const-global-variables,-cppcoreguidelines-owning-memory, -readability-convert-member-functions-to-static,-bugprone-easily-swappable-parameters, -cppcoreguidelines-pro-type-static-cast-downcast' WarningsAsErrors: '' HeaderFilterRegex: '' -AnalyzeTemporaryDtors: false FormatStyle: file User: florians CheckOptions: @@ -150,8 +149,6 @@ CheckOptions: value: '0' - key: concurrency-mt-unsafe.FunctionSet value: any - - key: readability-identifier-length.IgnoredExceptionVariableNames - value: '^[e]$' - key: google-readability-braces-around-statements.ShortStatementLines value: '1' - key: bugprone-reserved-identifier.AllowedIdentifiers diff --git a/.github/problemMatcher/gcc.json b/.github/problemMatcher/gcc.json new file mode 100644 index 000000000000..4d7f7535c11b --- /dev/null +++ b/.github/problemMatcher/gcc.json @@ -0,0 +1,18 @@ +{ + "__comment": "Taken from vscode-cpptools's Extension/package.json gcc rule", + "problemMatcher": [ + { + "owner": "gcc-problem-matcher", + "pattern": [ + { + "regexp": "^(.*):(\\d+):(\\d+):\\s+(?:fatal\\s+)?(warning|error):\\s+(.*)$", + "file": 1, + "line": 2, + "column": 3, + "severity": 4, + "message": 5 + } + ] + } + ] +} diff --git a/.github/problemMatcher/msvc.json b/.github/problemMatcher/msvc.json new file mode 100644 index 000000000000..b8802ef820c0 --- /dev/null +++ b/.github/problemMatcher/msvc.json @@ -0,0 +1,19 @@ +{ + "__comment": "Taken from vscode's vs/workbench/contrib/tasks/common/problemMatcher.ts msCompile rule", + "problemMatcher": [ + { + "owner": "msvc-problem-matcher", + "pattern": [ + { + "regexp": "^(?:\\s+\\d+\\>)?([^\\s].*)\\((\\d+),?(\\d+)?(?:,\\d+,\\d+)?\\)\\s*:\\s+(error|warning|info)\\s+(\\w{1,2}\\d+)\\s*:\\s*(.*)$", + "file": 1, + "line": 2, + "column": 3, + "severity": 4, + "code": 5, + "message": 6 + } + ] + } + ] +} diff --git a/.github/workflows/actions/runCPPTests/runAllTests/action.yml b/.github/workflows/actions/runCPPTests/runAllTests/action.yml index 3cd1376ee16e..79ba846200cf 100644 --- a/.github/workflows/actions/runCPPTests/runAllTests/action.yml +++ b/.github/workflows/actions/runCPPTests/runAllTests/action.yml @@ -40,6 +40,13 @@ inputs: runs: using: "composite" steps: + - name: C++ Assembly tests + id: assembly + uses: ./.github/workflows/actions/runCPPTests/runSingleTest + with: + testCommand: ${{ inputs.builddir }}/tests/Tests_run --gtest_output=json:${{ inputs.reportdir }}assembly_gtest_results.json + testLogFile: ${{ inputs.reportdir }}assembly_gtest_test_log.txt + testName: Assembly - name: C++ core tests id: core uses: ./.github/workflows/actions/runCPPTests/runSingleTest @@ -54,6 +61,13 @@ runs: testCommand: ${{ inputs.builddir }}/tests/Material_tests_run --gtest_output=json:${{ inputs.reportdir }}material_gtest_results.json testLogFile: ${{ inputs.reportdir }}material_gtest_test_log.txt testName: Material + - name: C++ Measure tests + id: measure + uses: ./.github/workflows/actions/runCPPTests/runSingleTest + with: + testCommand: ${{ inputs.builddir }}/tests/Material_tests_run --gtest_output=json:${{ inputs.reportdir }}measure_gtest_results.json + testLogFile: ${{ inputs.reportdir }}measure_gtest_test_log.txt + testName: Measure - name: C++ Mesh tests id: mesh uses: ./.github/workflows/actions/runCPPTests/runSingleTest @@ -61,6 +75,13 @@ runs: testCommand: ${{ inputs.builddir }}/tests/Mesh_tests_run --gtest_output=json:${{ inputs.reportdir }}mesh_gtest_results.json testLogFile: ${{ inputs.reportdir }}mesh_gtest_test_log.txt testName: Mesh + - name: C++ MeshPart tests + id: meshpart + uses: ./.github/workflows/actions/runCPPTests/runSingleTest + with: + testCommand: ${{ inputs.builddir }}/tests/Mesh_tests_run --gtest_output=json:${{ inputs.reportdir }}meshpart_gtest_results.json + testLogFile: ${{ inputs.reportdir }}meshpart_gtest_test_log.txt + testName: MeshPart - name: C++ Part tests id: part uses: ./.github/workflows/actions/runCPPTests/runSingleTest @@ -89,6 +110,13 @@ runs: testCommand: ${{ inputs.builddir }}/tests/Sketcher_tests_run --gtest_output=json:${{ inputs.reportdir }}sketcher_gtest_results.json testLogFile: ${{ inputs.reportdir }}sketcher_gtest_test_log.txt testName: Sketcher + - name: C++ Spreadsheet tests + id: spreadsheet + uses: ./.github/workflows/actions/runCPPTests/runSingleTest + with: + testCommand: ${{ inputs.builddir }}/tests/Sketcher_tests_run --gtest_output=json:${{ inputs.reportdir }}spreadsheet_gtest_results.json + testLogFile: ${{ inputs.reportdir }}spreadsheet_gtest_test_log.txt + testName: Spreadsheet - name: Compose summary report based on test results if: always() shell: bash -l {0} diff --git a/.github/workflows/sub_buildPixi.yml b/.github/workflows/sub_buildPixi.yml index 0889c2421646..3c6d2cb5b03e 100644 --- a/.github/workflows/sub_buildPixi.yml +++ b/.github/workflows/sub_buildPixi.yml @@ -83,6 +83,21 @@ jobs: - name: Checkout uses: actions/checkout@v2 + - name: Add GCC Problem Matcher + if: runner.os == 'Linux' + run: | + echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/gcc.json" + + - name: Add Clang Problem Matcher + if: runner.os == 'macOS' + run: | + echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/clang.json" + + - name: Add MSVC++ Problem Matcher + if: runner.os == 'Windows' + run: | + echo "::add-matcher::${{ runner.workspace }}/FreeCAD/.github/problemMatcher/msvc.json" + - name: Make needed directories, files and initializations id: Init run: | @@ -93,7 +108,7 @@ jobs: - uses: prefix-dev/setup-pixi@v0.8.1 with: - pixi-version: v0.34.0 + pixi-version: v0.39.4 cache: false - name: Restore Compiler Cache diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 65c82b5e94e3..e30ea782ca3b 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -67,6 +67,6 @@ repos: - id: black args: ['--line-length', '100'] - repo: https://github.com/pre-commit/mirrors-clang-format - rev: 7d85583be209cb547946c82fbe51f4bc5dd1d017 # frozen: v18.1.8 + rev: fed9a1f62c22af0bc846a260ebfeb0844368fd93 # frozen: v19.1.4 hooks: - id: clang-format diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 8cd42cb6d30b..e0b7715759a9 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -26,7 +26,7 @@ The FreeCAD Contribution Process is expressed here with the following specific g 1. FreeCAD uses the git distributed revision control system. 2. Source code for the main application and related subprojects is hosted on github.com in the FreeCAD organization. 3. Problems are discrete, well-defined limitations or bugs. -4. FreeCAD uses GitHub's issue-tracking system to track problems and contributions. For help requests and general discussions, use the project forum. +4. FreeCAD uses GitHub's issue-tracking system to track problems and contributions. For help requests and general discussions, use the project forum. 5. Contributions are sets of code changes that resolve a single problem. 6. FreeCAD uses the Pull Request workflow for evaluating and accepting contributions. @@ -47,7 +47,7 @@ The FreeCAD Contribution Process is expressed here with the following specific g ## 5. Contribution Requirements 1. Contributions are submitted in the form of Pull Requests (PR). -2. Maintainers and Contributors MUST have a GitHub account and SHOULD use their real names or a well-known alias. +2. Maintainers and Contributors MUST have a GitHub account and SHOULD use their real names or a well-known alias. 3. If the GitHub username differs from the username on the FreeCAD Forum, effort SHOULD be taken to avoid confusion. 4. A PR SHOULD be a minimal and accurate answer to exactly one identified and agreed-on problem. 5. A PR SHOULD refrain from adding additional dependencies to the FreeCAD project unless no other option is available. diff --git a/PRIVACY_POLICY.md b/PRIVACY_POLICY.md index bcc404bff2a0..a741b7f3ffe5 100644 --- a/PRIVACY_POLICY.md +++ b/PRIVACY_POLICY.md @@ -4,10 +4,7 @@ The FreeCAD application does not collect, transmit, share or use any Personal Da FreeCAD is community-developed Free Software. The community does not condone the unauthorized usage of private data, so our software does not gather or send personal data. -The FreeCAD website is mostly static, it does not contain any trackers, neither ours nor third-party. The website uses cookies to remember logged in status, timezone and other -data related to navigating the site. - -The website does not contain advertisements. +The FreeCAD website is mostly static, it does not contain any trackers, neither ours nor third-party. The website uses cookies to remember logged in status, timezone and other data related to navigating the site. The website does not contain advertisements. The software does not contain advertisements or trackers either. @@ -15,9 +12,9 @@ The software does not contain advertisements or trackers either. FreeCAD is able to load or save files to/from remote servers (for some protocols and platforms). If you choose to load or save a remote file, your IP or other private data might be shared as part of the normal connection flow for the given protocol. This is out of our control and it is up to you to decide whether you trust a remote host. -The FreeCAD eco system includes user developed workbenches. These workbenches can be installed/updated using the Add-on Manager. The Add-on Manager retrieves workbenches from remote servers across the internet. Add-on workbenches are not checked for malicious content. It is your responsibility to decide whether you trust an add-on workbench. +The FreeCAD eco system includes user developed workbenches. These workbenches can be installed/updated using the Add-on Manager. The Add-on Manager retrieves workbenches from remote servers across the internet. Add-on workbenches are not checked for malicious content. It is your responsibility to decide whether you trust an add-on workbench. -FreeCAD is meant to manipulate CAD files which may contain metadata. It is your responsibility to verify the metadata contained in your files before you share them with others. These files may contain local directory paths which could reveal user names if the user name forms part of the path - as in “C:\MrsCAD\Documents\myFreeCADFile.FCstd”. +FreeCAD is meant to manipulate CAD files which may contain metadata. It is your responsibility to verify the metadata contained in your files before you share them with others. These files may contain local directory paths which could reveal user names if the user name forms part of the path - as in “C:\MrsCAD\Documents\myFreeCADFile.FCstd”. FreeCAD can also be used to create and run macros. These are Python scripts that can perform any action that the user can perform on a system. When running a macro from an outside source, it is your responsibility to ensure you trust the author. @@ -28,5 +25,4 @@ When reading the online version of the User Manual within FreeCAD, manual conten FreeCAD is Free Software and therefore may be packaged by other people, who may include additional software or modify the source code. We do not vouch for these third-party packages and cannot tell you what they contain and what they do regarding your privacy. The official packages are explicitly listed in our download page. - - [based on the GIMP privacy policy](https://www.gimp.org/about/privacy.html) - +*The above privacy policy is based on the [GIMP privacy policy](https://www.gimp.org/about/privacy.html).* \ No newline at end of file diff --git a/SECURITY.md b/SECURITY.md index 9ef7934974cd..b46dbc691d35 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -1,18 +1,18 @@ # Security Policy -The FreeCAD project is a FOSS (Free and Open-Source Software) project that has a community of thousands of users and +The FreeCAD project is a FOSS (Free and Open-Source Software) project that has a community of thousands of users and hundreds of developers worldwide. We encourage responsible reporting of security vulnerabilities that may affect users of this software, and will endeavor to address these vulnerabilities when they are discovered. ## Bounties -FreeCAD does not have a program to pay bounties for security bugs. If you discover a vulnerability that affects a part -of the FreeCAD project (either directly in FreeCAD, in a library it depends on, or in any of the various other +FreeCAD does not have a program to pay bounties for security bugs. If you discover a vulnerability that affects a part +of the FreeCAD project (either directly in FreeCAD, in a library it depends on, or in any of the various other subprojects such as our website, forums, etc.) we ask you to join the large community of volunteer contributors and file a report about the issue. -Note that funds may be available from the [FreeCAD Project Association (FPA)](https://fpa.freecad.org) to pursue -security research and/or the development of fixes to any vulnerabilities discovered. However, vulnerabilities held as +Note that funds may be available from the [FreeCAD Project Association (FPA)](https://fpa.freecad.org) to pursue +security research and/or the development of fixes to any vulnerabilities discovered. However, vulnerabilities held as hostage in demands for "bounties" will not be entertained. Contact the FPA at fpa@freecad.org for more information. ## Supported Versions diff --git a/cMake/FindPyCXX.cmake b/cMake/FindPyCXX.cmake index e37b08eee89c..0c6144a49ec6 100644 --- a/cMake/FindPyCXX.cmake +++ b/cMake/FindPyCXX.cmake @@ -118,7 +118,7 @@ if(PYCXX_FOUND) ${PYCXX_SOURCE_DIR}/IndirectPythonInterface.cxx ) - #set old 6.2 pycxx compatibility + #set old 6.2 pycxx compatibility list(APPEND PYCXX_SOURCES ${PYCXX_SOURCE_DIR}/cxx_exceptions.cxx) add_definitions(-DPYCXX_6_2_COMPATIBILITY) #end old compatibility diff --git a/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake b/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake index 278e2ef5c50c..dbd75424d077 100644 --- a/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake +++ b/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake @@ -170,7 +170,7 @@ macro(InitializeFreeCADBuildOptions) if(MSVC) option(BUILD_FEM_NETGEN "Build the FreeCAD FEM module with the NETGEN mesher" ON) - option(FREECAD_USE_PCL "Build the features that use PCL libs" OFF) # 3/5/2021 current LibPack uses non-C++17 FLANN + option(FREECAD_USE_PCL "Build the features that use PCL libs" OFF) endif(MSVC) if(NOT MSVC) option(BUILD_FEM_NETGEN "Build the FreeCAD FEM module with the NETGEN mesher" OFF) @@ -179,7 +179,10 @@ macro(InitializeFreeCADBuildOptions) # if this is set override some options if (FREECAD_BUILD_DEBIAN) - set(FREECAD_USE_EXTERNAL_ZIPIOS ON ) + # Disable it until the upstream package has been fixed. See + # https://github.com/FreeCAD/FreeCAD/issues/13676#issuecomment-2539978468 + # https://github.com/FreeCAD/FreeCAD/issues/13676#issuecomment-2541513308 + set(FREECAD_USE_EXTERNAL_ZIPIOS OFF ) # A Debian package for SMESH doesn't exist #set(FREECAD_USE_EXTERNAL_SMESH ON ) endif (FREECAD_BUILD_DEBIAN) diff --git a/pixi.lock b/pixi.lock index 23a117b09f5e..93cc0e5fb913 100644 --- a/pixi.lock +++ b/pixi.lock @@ -1,65 +1,52 @@ -version: 5 +version: 6 environments: default: channels: - - url: https://conda.anaconda.org/conda-forge/label/pivy_rc/ - url: https://conda.anaconda.org/conda-forge/ packages: linux-64: - conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py313h8060acc_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.43-h4852527_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.43-h4bf12b8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.43-h4852527_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-hef167b5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boltons-24.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.8.0-h2b85faf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.2-h3394656_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ccache-4.10.1-h065aff2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py313hfab6e84_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.28.3-hcfe8598_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/coin3d-4.0.3-hd74d64a_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/compilers-1.8.0-ha770c72_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/conda-24.11.0-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-devenv-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-24.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.4.0-pyh7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.1-py312h68727a3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/cpp-expected-1.1.0-hf52228f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-devenv-1.0.3-py_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.1-py313h33d0bda_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.8.0-h1a2810e_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.27-h54b06d7_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.11-py313h46c70d0_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.3.0-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/doxygen-1.11.0-h9d7c8fd_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-6.1.2-gpl_hdfc89ed_706.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/flann-1.9.2-h3ef53d8_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-7.1.0-gpl_h4c12d27_707.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/flann-1.9.2-h3ef53d8_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-11.0.2-h434a139_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -68,13 +55,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.55.0-py312h178313f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.55.3-py313h8060acc_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fortran-compiler-1.8.0-h36df796_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-h3a85593_22.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/frozendict-2.4.6-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py313h536fd9c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-13.3.0-h9576a4e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-13.3.0-hfea6d02_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-13.3.0-hc28eda2_7.conda @@ -93,47 +79,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-13.3.0-h9576a4e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-13.3.0-hdbfa832_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-13.3.0-h6834431_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.4-nompi_h2d575fe_105.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.1.12-h7955e40_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jsoncpp-1.9.6-h84d6215_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/jsoncpp-1.9.6-hf42df4d_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-2.6.32-he073ed8_17.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.7-py312h68727a3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.7-py313h33d0bda_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.3-h59595ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.7.7-hadbb8c3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.3-h1dc1e6a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.86.0-hb8260a3_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-devel-1.86.0-h1a2810e_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.86.0-ha770c72_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.86.0-h6c02f8c_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-devel-1.86.0-h1a2810e_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.86.0-ha770c72_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp19.1-19.1.4-default_hb5137d0_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-19.1.4-default_h9c6a7e4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp19.1-19.1.6-default_hb5137d0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-19.1.6-default_h9c6a7e4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.123-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.124-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libdrm-cos6-x86_64-2.4.65-h9b0a68f_1105.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_2.conda @@ -157,55 +137,55 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm19-19.1.4-ha7bfdaf_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmamba-2.0.4-hf72d635_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libmambapy-2.0.4-py312hf3f0a4e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.2-nompi_h2564987_115.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm19-19.1.6-ha7bfdaf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.2-nompi_h5ddbaa4_116.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.4-h7f98852_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-2024.4.0-hac27bb2_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-batch-plugin-2024.4.0-h4d9b6c2_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-plugin-2024.4.0-h4d9b6c2_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-hetero-plugin-2024.4.0-h3f63f65_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-cpu-plugin-2024.4.0-hac27bb2_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-gpu-plugin-2024.4.0-hac27bb2_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-npu-plugin-2024.4.0-hac27bb2_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-ir-frontend-2024.4.0-h3f63f65_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-onnx-frontend-2024.4.0-h5c8f2c3_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-paddle-frontend-2024.4.0-h5c8f2c3_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-pytorch-frontend-2024.4.0-h5888daf_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-frontend-2024.4.0-h6481b9d_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-lite-frontend-2024.4.0-h5888daf_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-2024.5.0-hac27bb2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-batch-plugin-2024.5.0-h4d9b6c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-plugin-2024.5.0-h4d9b6c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-hetero-plugin-2024.5.0-h3f63f65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-cpu-plugin-2024.5.0-hac27bb2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-gpu-plugin-2024.5.0-hac27bb2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-npu-plugin-2024.5.0-hac27bb2_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-ir-frontend-2024.5.0-h3f63f65_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-onnx-frontend-2024.5.0-h5c8f2c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-paddle-frontend-2024.5.0-h5c8f2c3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-pytorch-frontend-2024.5.0-h5888daf_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-frontend-2024.5.0-h6481b9d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-lite-frontend-2024.5.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hd590300_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-17.2-h04577a9_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-17.2-h3b95a9b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.21.3-hca62329_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-hc0ffecb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-13.3.0-heb74ff8_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libselinux-cos6-x86_64-2.0.94-h9b0a68f_1105.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/libsepol-cos6-x86_64-2.0.41-h9b0a68f_1105.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsolv-0.7.30-h3509ff9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libspnav-1.1-h4ab18f5_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-13.3.0-h84ea5a7_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libtheora-1.1.1-h4ab18f5_1006.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.22.0-h8a09558_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libvpx-1.14.1-hac33072_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libx11-common-cos6-x86_64-1.6.4-h9b0a68f_1105.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/libx11-cos6-x86_64-1.6.4-h9b0a68f_1105.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/libxau-cos6-x86_64-1.0.6-h9b0a68f_1105.tar.bz2 @@ -218,115 +198,95 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/libxi-cos6-x86_64-1.7.8-h9b0a68f_1105.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/libxi-devel-cos6-x86_64-1.7.8-h9b0a68f_1105.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.7.0-h2c5496b_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-hb346dea_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h8d12d68_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.39-h76b75d6_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libxxf86vm-cos6-x86_64-1.1.3-h9b0a68f_1105.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/loguru-0.7.2-py312h7900ff3_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/loguru-0.7.2-py313h78bf25f_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-hd590300_1001.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.9.3-py312h7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.9.3-py312hd3ec401_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/menuinst-2.2.0-py312h7900ff3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.0-py313h78bf25f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.0-py313h129903b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mesa-dri-drivers-cos6-x86_64-11.0.7-h9b0a68f_1105.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mesa-dri1-drivers-cos6-x86_64-7.11-h9b0a68f_1105.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mesa-libegl-cos6-x86_64-11.0.7-h9b0a68f_1105.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mesa-libegl-devel-cos6-x86_64-11.0.7-h9b0a68f_1105.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mesa-libgl-cos6-x86_64-11.0.7-h9b0a68f_1105.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mesa-libgl-devel-cos6-x86_64-11.0.7-h9b0a68f_1105.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.0-py312h68727a3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.0-py313h33d0bda_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py313h8060acc_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-common-9.0.1-h266115a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-9.0.1-he0572af_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-common-9.0.1-h266115a_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-9.0.1-he0572af_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.12.1-h297d8ca_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/noqt5-1.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py312h58c1407_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.1-py313hb30382a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/occt-7.8.1-all_h4c4714a_203.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.3.2-hccdc605_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.4.1-h59595ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.3.2-h6326327_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.5.0-hf92e6e3_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.9-he970967_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h4c5309f_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h3a902e7_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcl-1.14.1-hd932182_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-7_hd590300_perl5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - - conda: https://conda.anaconda.org/conda-forge/label/pivy_rc/linux-64/pivy-0.6.9.a0-py312hc9ec64c_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py313h2d7ed13_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh145f28c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pivy-0.6.9-py313qt6hcff3039_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pixman-cos6-x86_64-0.32.8-h9b0a68f_1105.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.5.1-h0054346_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py313h536fd9c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.14-h59595ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-4-hd8ed1ab_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py312h66e93f0_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.7.3-py312h91f0f75_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.0-hab00c5b_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.7.3-py313h5f61773_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.0-h9ebbce0_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py313h536fd9c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.7.3-h6e8976b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20240409-hac33072_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/reproc-14.2.5.post0-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/reproc-cpp-14.2.5.post0-h5888daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.5-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.6-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.1-py312h62794b6_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.1-py313h27c5614_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/sed-4.8-he412f7d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/simdjson-3.10.1-h84d6215_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/smesh-9.9.0.0-h0d71592_13.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/soqt6-1.6.3-h23d7b0e_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/spdlog-1.14.1-hed91bc2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.47.0-h9eae976_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.47.2-h9eae976_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/swig-4.3.0-heed6a68_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.12-he073ed8_17.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2022.0.0-hceb3a55_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-devel-2022.0.0-h1f99690_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/truststore-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py313h536fd9c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-15.1.0-py312h66e93f0_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/utfcpp-4.0.6-h005c6e1_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-9.3.1-qt_py312he5e186c_209.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.3.1-qt_py312hc73667e_209.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-io-ffmpeg-9.3.1-qt_py312hc8241c7_209.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-9.3.1-qt_py313h3d4e8c9_211.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.3.1-qt_py313h4f3260d_211.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-io-ffmpeg-9.3.1-qt_py313h3d4e8c9_211.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wayland-protocols-1.37-hd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2 @@ -338,10 +298,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.2-hb711507_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.3.0-h988505b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.43-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-he73a12e_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda @@ -350,74 +310,63 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.5-hb9d3cd8_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.6-hb9d3cd8_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xorg-x11-server-common-cos6-x86_64-1.17.4-h9b0a68f_1105.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/xorg-x11-server-xvfb-cos6-x86_64-1.17.4-h9b0a68f_1105.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-hb9d3cd8_1008.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h59595ed_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py313h536fd9c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda linux-aarch64: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py313h857f82b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/atk-1.0-2.38.0-hedc4a1f_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils-2.43-hf1166c9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.43-h4c662bb_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_linux-aarch64-2.43-hf1166c9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/blosc-1.21.6-hd2997c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boltons-24.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-bin-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-compiler-1.8.0-h6561dab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.0-hdb1a16f_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.2-h83712da_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ccache-4.10.1-ha3bccff_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py313h2135053_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cmake-3.28.3-hef020d8_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/coin3d-4.0.3-h411181d_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compilers-1.8.0-h8af1aa0_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/conda-24.11.0-py312h996f985_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-devenv-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-24.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.4.0-pyh7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/contourpy-1.3.1-py312h451a7dd_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cpp-expected-1.1.0-h4c384f3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-devenv-1.0.3-py_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/contourpy-1.3.1-py313h44a8f36_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cxx-compiler-1.8.0-heb6c788_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cyrus-sasl-2.1.27-hf6b2984_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.13.6-h12b9eeb_3.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.9-py312h6f74592_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.11-py313hb6a6212_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/double-conversion-3.3.0-h2f0025b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/doxygen-1.10.0-h7b6a552_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/eigen-3.4.0-h2a328a1_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.6.4-h5ad3122_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ffmpeg-6.1.2-gpl_hd3257db_706.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/flann-1.9.2-h7e74b68_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ffmpeg-7.1.0-gpl_hfd22248_707.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/flann-1.9.2-h7e74b68_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fmt-11.0.2-h70be974_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -426,13 +375,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.15.0-h8dda3cd_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fonttools-4.55.0-py312hcc812fe_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fonttools-4.55.3-py313h857f82b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fortran-compiler-1.8.0-h25a59a9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freeimage-3.18.0-h6cb32c8_22.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fribidi-1.0.10-hb9de7d4_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozendict-2.4.6-py312hb2c0f52_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py313h31d5739_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc-13.3.0-h8a56e6e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-13.3.0-hcdea9b6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-13.3.0-h1cd514b_7.conda @@ -451,47 +399,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx-13.3.0-h8a56e6e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_impl_linux-aarch64-13.3.0-h1211b58_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_linux-aarch64-13.3.0-h2864abd_7.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-9.0.0-hbf49d6b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hdf4-4.2.15-hb6ba311_7.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hdf5-1.14.4-nompi_h6ed7ac7_105.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/imath-3.1.12-hf428078_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jsoncpp-1.9.6-h17cf362_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jsonpointer-3.0.0-py312h996f985_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jsoncpp-1.9.6-h34915d9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jxrlib-1.1-h31becfc_3.conda - conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/kiwisolver-1.4.7-py312h88dc405_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/kiwisolver-1.4.7-py313h1d91839_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lame-3.100-h4e544f5_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libaec-1.1.3-h2f0025b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libarchive-3.7.7-h2f0f0fe_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libass-0.17.3-hcc173ff_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libboost-1.86.0-hcc9b45e_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libboost-devel-1.86.0-h37bb5a9_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libboost-headers-1.86.0-h8af1aa0_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libboost-1.86.0-h4d13611_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libboost-devel-1.86.0-h37bb5a9_3.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libboost-headers-1.86.0-h8af1aa0_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp19.1-19.1.4-default_he324ac1_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-19.1.4-default_h4390ef5_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp19.1-19.1.6-default_he324ac1_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-19.1.6-default_h4390ef5_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcups-2.3.3-h405e4a8_4.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdrm-2.4.123-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdrm-2.4.124-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libdrm-cos7-aarch64-2.4.97-ha675448_1106.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libegl-1.7.0-hd24410f_2.conda @@ -517,52 +459,52 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libhwloc-2.11.2-default_h2c612a5_1001.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm19-19.1.4-h2edbd07_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmamba-2.0.4-h489cd8b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmambapy-2.0.4-py312h33c3f33_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnetcdf-4.9.2-nompi_h4c91916_115.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm19-19.1.6-h2edbd07_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmpdec-4.0.0-h68df207_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnetcdf-4.9.2-nompi_h46655bb_116.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libntlm-1.4-hf897c2e_1002.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopengl-1.7.0-hd24410f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-2024.4.0-hd7d4d4f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-arm-cpu-plugin-2024.4.0-hd7d4d4f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-auto-batch-plugin-2024.4.0-hf15766e_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-auto-plugin-2024.4.0-hf15766e_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-hetero-plugin-2024.4.0-h6ef32b0_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-ir-frontend-2024.4.0-h6ef32b0_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-onnx-frontend-2024.4.0-haa99d6a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-paddle-frontend-2024.4.0-haa99d6a_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-pytorch-frontend-2024.4.0-h5ad3122_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-tensorflow-frontend-2024.4.0-he24a241_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-tensorflow-lite-frontend-2024.4.0-h5ad3122_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-2024.5.0-hd7d4d4f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-arm-cpu-plugin-2024.5.0-hd7d4d4f_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-auto-batch-plugin-2024.5.0-hf15766e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-auto-plugin-2024.5.0-hf15766e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-hetero-plugin-2024.5.0-h6ef32b0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-ir-frontend-2024.5.0-h6ef32b0_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-onnx-frontend-2024.5.0-haa99d6a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-paddle-frontend-2024.5.0-haa99d6a_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-pytorch-frontend-2024.5.0-h5ad3122_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-tensorflow-frontend-2024.5.0-he24a241_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-tensorflow-lite-frontend-2024.5.0-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpciaccess-0.18-h31becfc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpq-17.2-h081282e_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpq-17.2-hd56632b_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libraw-0.21.3-hf20323b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/librsvg-2.58.4-h00090f3_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-13.3.0-ha58e236_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libselinux-cos7-aarch64-2.5-ha675448_1106.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/libsepol-cos7-aarch64-2.5-ha675448_1106.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsolv-0.7.30-h62756fc_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libspnav-1.1-h68df207_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-13.3.0-h0c07274_101.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtheora-1.1.1-h68df207_1006.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h01db608_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvpx-1.14.1-h0a1ffab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libx11-common-cos7-aarch64-1.6.7-ha675448_1106.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/libx11-cos7-aarch64-1.6.7-ha675448_1106.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/libxau-cos7-aarch64-1.0.8-ha675448_1106.tar.bz2 @@ -575,18 +517,16 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/libxi-cos7-aarch64-1.7.9-ha675448_1106.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/libxi-devel-cos7-aarch64-1.7.9-ha675448_1106.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxkbcommon-1.7.0-h46f2afe_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxslt-1.1.39-h1cc9640_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/libxxf86vm-cos7-aarch64-1.1.4-ha675448_1106.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzip-1.11.2-h3e8f909_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/loguru-0.7.2-py312h8025657_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/loguru-0.7.2-py313h1258fbd_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lzo-2.10-h31becfc_1001.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-3.9.3-py312h8025657_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.9.3-py312h965bf68_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/menuinst-2.2.0-py312h996f985_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py313h7815b11_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-3.10.0-py313h1258fbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.10.0-py313h16bfeab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/mesa-dri-drivers-cos7-aarch64-18.3.4-ha675448_1106.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mesa-khr-devel-cos7-aarch64-18.3.4-ha675448_1106.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mesa-libegl-cos7-aarch64-18.3.4-ha675448_1106.tar.bz2 @@ -595,94 +535,76 @@ environments: - conda: https://conda.anaconda.org/conda-forge/noarch/mesa-libgl-cos7-aarch64-18.3.4-ha675448_1106.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mesa-libgl-devel-cos7-aarch64-18.3.4-ha675448_1106.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/mesa-libglapi-cos7-aarch64-18.3.4-ha675448_1106.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/msgpack-python-1.1.0-py312h451a7dd_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/msgpack-python-1.1.0-py313h44a8f36_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py313h857f82b_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mysql-common-9.0.1-h3f5c77f_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mysql-libs-9.0.1-h11569fd_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mysql-common-9.0.1-h3f5c77f_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mysql-libs-9.0.1-h11569fd_4.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ninja-1.12.1-h70be974_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/noqt5-1.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-2.1.3-py312h2eb110b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-2.2.1-py313haaed576_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/occt-7.8.1-all_h78e3548_203.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openexr-3.3.2-haace395_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openh264-2.4.1-h2f0025b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openexr-3.3.2-h8aeb21b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openh264-2.5.0-h6c5ec6d_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openldap-2.6.9-h30c48ee_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pango-1.54.0-h7579590_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pango-1.54.0-hf175a2e_3.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcl-1.14.1-h777c531_6.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.44-h070dd5b_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/perl-5.32.1-7_h31becfc_perl5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - - conda: https://conda.anaconda.org/conda-forge/label/pivy_rc/linux-aarch64/pivy-0.6.9.a0-py312h615b049_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.43.4-h2f0025b_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py313h8b7b215_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh145f28c_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pivy-0.6.9-py313qt6h4470820_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.44.2-h86a87f0_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pixman-cos7-aarch64-0.34.0-ha675448_1106.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/proj-9.5.1-h9655f4d_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py313h31d5739_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pugixml-1.14-h2f0025b_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-4-hd8ed1ab_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pycosat-0.6.6-py312hb2c0f52_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyside6-6.7.3-py312hdd999d0_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.0-h43d1f9e_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyside6-6.7.3-py313h57f4686_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.13.0-h4f870b6_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py313h31d5739_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/qhull-2020.2-h70be974_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/qt6-main-6.7.3-h666f7c6_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rapidjson-1.1.0.post20240409-h0a1ffab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/reproc-14.2.4.post0-h31becfc_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/reproc-cpp-14.2.4.post0-h2f0025b_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rhash-1.4.5-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruamel.yaml-0.18.6-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ruamel.yaml.clib-0.2.8-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/scipy-1.14.1-py312hcbff3fa_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/scipy-1.14.1-py313h5414c24_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sed-4.8-ha0d5d3d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/simdjson-3.10.1-h17cf362_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/smesh-9.9.0.0-h212b014_13.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/soqt6-1.6.3-h808f404_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/spdlog-1.14.1-h9d9cc24_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.47.0-h578a6b9_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.47.2-h578a6b9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/swig-4.3.0-h2f4baa9_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-aarch64-2.17-h5b4a56d_18.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-aarch64-2.17-h68829e0_18.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tbb-2022.0.0-h243be18_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tbb-devel-2022.0.0-h9a8439e_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/truststore-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py313h6a51379_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ukkonen-1.0.1-py312h451a7dd_5.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/unicodedata2-15.1.0-py312hb2c0f52_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ukkonen-1.0.1-py313h44a8f36_5.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/utfcpp-4.0.6-h01cc221_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-9.3.1-qt_py312hbfbf3b8_209.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-base-9.3.1-qt_py312hc7336a2_209.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-io-ffmpeg-9.3.1-qt_py312hf51569e_209.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-9.3.1-qt_py313h502ffb0_212.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-base-9.3.1-qt_py313h60ad838_212.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-io-ffmpeg-9.3.1-qt_py313h502ffb0_212.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wayland-1.23.1-h698ed42_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/x264-1!164.3095-h4e544f5_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/x265-3.5-hdd96247_3.tar.bz2 @@ -694,10 +616,10 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-wm-0.4.2-h5c728e9_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xerces-c-3.3.0-h595f43b_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xkeyboard-config-2.43-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.1-h57736b2_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.4-hbac51e1_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.9-he755bbd_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.5-h0808dbd_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.10-hca56bd8_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxcomposite-0.4.6-h86ecc28_2.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxcursor-1.2.3-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdamage-1.1.6-h86ecc28_0.conda @@ -706,45 +628,41 @@ environments: - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.1-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxi-1.8.2-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrandr-1.5.4-h86ecc28_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h57736b2_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.12-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxt-1.3.1-h57736b2_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxtst-1.2.5-h57736b2_3.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxxf86vm-1.1.5-h57736b2_4.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxxf86vm-1.1.6-h86ecc28_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/xorg-x11-server-common-cos7-aarch64-1.20.4-ha675448_1106.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/xorg-x11-server-xvfb-cos7-aarch64-1.20.4-ha675448_1106.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xorgproto-2024.1-h86ecc28_1.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xproto-7.0.31-h57736b2_1008.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_1.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-cpp-0.8.0-h2f0025b_0.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py313h31d5739_0.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda - - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda osx-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/aiohttp-3.11.9-py312h3520af0_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/aiohttp-3.11.10-py313h717bdf5_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/aom-3.9.1-hf036a51_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/blosc-1.21.6-h7d75f6d_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boltons-24.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.1.0-h00291cd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.1.0-h00291cd_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.3-hf13058a_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.4-hf13058a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/c-compiler-1.8.0-hfc4bf79_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.8.30-h8857fd0_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.0-h37bd5c4_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.12.14-h8857fd0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.2-h950ec3b_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ccache-4.10.1-hee5fd93_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1010.6-h5b2de21_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-hea4301f_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py313h49682b3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-17-17.0.6-default_hb173f14_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/clang-17.0.6-default_he371ed4_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-17.0.6-h1af8efd_23.conda @@ -754,31 +672,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-17.0.6-h7e5c614_23.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cmake-3.28.3-h7c85d92_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/coin3d-4.0.3-h9b6ce5f_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-17.0.6-h1020d70_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-17.0.6-hf2b8a54_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/compilers-1.8.0-h694c41f_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/conda-24.11.0-py312hb401068_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-devenv-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-24.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.4.0-pyh7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.1-py312hc47a885_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/cpp-expected-1.1.0-hb8565cd_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-devenv-1.0.3-py_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.1-py313ha0b1807_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.8.0-h385f146_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/cyrus-sasl-2.1.27-hf9bab2b_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/dav1d-1.2.1-h0dc2134_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.9-py312haafddd8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.11-py313h14b76d3_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/double-conversion-3.3.0-he965462_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/doxygen-1.11.0-hdfe23c8_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/eigen-3.4.0-h1c7c39f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/expat-2.6.4-h240833e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ffmpeg-6.1.2-gpl_h9c046ae_106.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/flann-1.9.2-h66ee4ad_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ffmpeg-7.1.0-gpl_h5370b94_107.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/flann-1.9.2-h680e343_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fmt-11.0.2-h3c5361c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -787,13 +698,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.55.0-py312h3520af0_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.55.3-py313h717bdf5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fortran-compiler-1.8.0-h33d1f46_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/freeimage-3.18.0-h7cd8ba8_22.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/frozendict-2.4.6-py312h3d0f464_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/frozenlist-1.5.0-py312h3d0f464_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/frozenlist-1.5.0-py313hb558fbc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gettext-0.22.5-hdfe23c8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gettext-tools-0.22.5-hdfe23c8_3.conda @@ -806,51 +716,45 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.0.0-he14ced1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-h2c15c3c_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-he806959_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-9.0.0-h098a298_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf4-4.2.15-h8138101_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.4-nompi_h1607680_105.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/imath-3.1.12-h2016aa1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/isl-0.26-imath32_h2e86a7b_101.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/jsoncpp-1.9.6-h37c8870_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/jsoncpp-1.9.6-h466cfd8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/jxrlib-1.1-h10d778d_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.7-py312hc5c4d5f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.7-py313h0c4e38b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lame-3.100-hb7f2c08_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.16-ha2f27b4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-951.9-h0a3eb4e_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-951.9-h5ffbe8e_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20240722.0-cxx17_hac325c4_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20240722.0-cxx17_h0e468a2_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.3-h73e2aa4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libarchive-3.7.7-h7988bea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libasprintf-0.22.5-hdfe23c8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libasprintf-devel-0.22.5-hdfe23c8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libass-0.17.3-h5386a9e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-25_osx64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-1.86.0-hbe88bda_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-devel-1.86.0-h6a1c779_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-headers-1.86.0-h694c41f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-26_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-1.86.0-hf0da243_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-devel-1.86.0-h20888b2_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-headers-1.86.0-h694c41f_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h00291cd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h00291cd_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h00291cd_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-25_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-26_osx64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp17-17.0.6-default_hb173f14_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang13-19.1.4-default_hf2b7afa_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.10.1-h58e7537_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.4-hf95d169_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libclang13-19.1.6-default_hf2b7afa_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.11.1-h5dec5d8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.6-hf95d169_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-17.0.6-h8f8a49f_6.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.22-h00291cd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda @@ -868,183 +772,159 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.22.5-hdfe23c8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-devel-0.22.5-hdfe23c8_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-25_osx64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-26_osx64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm17-17.0.6-hbedff68_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm19-19.1.4-hc29ff6c_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libmamba-2.0.4-hd41e4cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libmambapy-2.0.4-py312h0252a60_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libnetcdf-4.9.2-nompi_h976d569_115.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm19-19.1.6-hc29ff6c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.3-hd471939_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.6.3-hd471939_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hfdf4475_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libnetcdf-4.9.2-nompi_hd7a758f_116.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.64.0-hc7306c3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libntlm-1.4-h0d85af4_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/libntlm-1.8-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libogg-1.3.5-hfdf4475_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.28-openmp_hbf64a52_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-2024.4.0-h84cb933_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-auto-batch-plugin-2024.4.0-h92dab7a_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-auto-plugin-2024.4.0-h92dab7a_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-hetero-plugin-2024.4.0-h14156cc_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-intel-cpu-plugin-2024.4.0-h84cb933_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-ir-frontend-2024.4.0-h14156cc_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-onnx-frontend-2024.4.0-he28f95a_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-paddle-frontend-2024.4.0-he28f95a_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-pytorch-frontend-2024.4.0-hc3d39de_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-tensorflow-frontend-2024.4.0-h488aad4_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-tensorflow-lite-frontend-2024.4.0-hc3d39de_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-2024.5.0-h5e1b680_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-auto-batch-plugin-2024.5.0-h4464f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-auto-plugin-2024.5.0-h4464f52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-hetero-plugin-2024.5.0-h3435d20_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-intel-cpu-plugin-2024.5.0-h5e1b680_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-ir-frontend-2024.5.0-h3435d20_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-onnx-frontend-2024.5.0-he7801b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-paddle-frontend-2024.5.0-he7801b2_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-pytorch-frontend-2024.5.0-hbcac03e_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-tensorflow-frontend-2024.5.0-h080520f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-tensorflow-lite-frontend-2024.5.0-hbcac03e_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libopus-1.3.1-hc929b4f_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.44-h4b8f8c9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libpq-17.2-hfbed10f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libpq-17.2-h639cf83_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.28.2-h8b30cf6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libraw-0.21.3-h8f7feda_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h2682814_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsolv-0.7.30-h69d5d9b_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.47.0-h2f8c449_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.47.2-hdb6dae5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-h3dc7d44_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libtheora-1.1.1-hfdf4475_1006.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h583c2ba_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.49.2-hd79239c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libvorbis-1.3.7-h046ec9c_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/libvpx-1.14.1-hf036a51_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.4.0-h10d778d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.17.0-hf1f96e2_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.5-h495214b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.5-hebb159f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libxslt-1.1.39-h03b04e6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzip-1.11.2-h31df5bb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.4-ha54dae1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.6-ha54dae1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-17.0.6-hbedff68_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/loguru-0.7.2-py312hb401068_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/loguru-0.7.2-py313habf4b1d_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.9.4-hf0c8a7f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/lzo-2.10-h10d778d_1001.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312hbe3f5e4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.9.3-py312hb401068_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.9.3-py312h535dea3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/menuinst-2.2.0-py312hb401068_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h717bdf5_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.10.0-py313habf4b1d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.0-py313he981572_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/mpc-1.3.1-h9d8efa1_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.2.1-haed47dc_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.1.0-py312hc5c4d5f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/multidict-6.1.0-py312h6f3313d_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.1.0-py313h0c4e38b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/multidict-6.1.0-py313h797cdad_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/mysql-common-9.0.1-h918ca22_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/mysql-libs-9.0.1-h502887b_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mysql-common-9.0.1-h4d37847_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/mysql-libs-9.0.1-h2381dc1_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-hf036a51_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/ninja-1.12.1-h3c5361c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/nlohmann_json-3.11.3-hf036a51_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/noqt5-1.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.1.3-py312hfc93d17_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.1-py313h6ae94ac_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/occt-7.8.1-all_ha9a7d59_203.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openexr-3.3.2-h0b01aae_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openh264-2.4.1-h73e2aa4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.2-h7310d3a_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openexr-3.3.2-heaa778b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openh264-2.5.0-hdfcf091_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.3-h7fd6d84_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openldap-2.6.9-hd8a590d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hd471939_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.54.0-h115fe74_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.54.0-hb83bde0_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcl-1.14.1-hbaf7342_6.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/perl-5.32.1-7_h10d778d_perl5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-11.0.0-py312h66fe14f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - - conda: https://conda.anaconda.org/conda-forge/label/pivy_rc/osx-64/pivy-0.6.9.a0-py312h27fdfec_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.43.4-h73e2aa4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-11.0.0-py313h4d44d4f_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh145f28c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pivy-0.6.9-py313qt6hbd660c1_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.44.2-h1fd1274_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/proj-9.5.1-h5273da6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/propcache-0.2.0-py312hb553811_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/propcache-0.2.1-py313h63b0ddb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/pugixml-1.14-he965462_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-4-hd8ed1ab_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pycosat-0.6.6-py312h01d7ebd_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyside6-6.7.3-py312hdb00d57_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.0-h30d4d87_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312hb553811_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyside6-6.7.3-py313h7f74686_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.0-h3a8ca6c_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313ha37c0e0_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/qhull-2020.2-h3c5361c_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/qt6-main-6.7.3-h8612794_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rapidjson-1.1.0.post20240409-hf036a51_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/reproc-14.2.5.post0-h6e16a3a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/reproc-cpp-14.2.5.post0-h240833e_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.5-ha44c9a9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml-0.18.6-py312h3d0f464_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml.clib-0.2.8-py312h3d0f464_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.14.1-py312h888eae2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.14.1-py313hd641537_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/sed-4.7-h3efe00b_1000.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h88f4db0_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-64/simdjson-3.10.1-h37c8870_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/smesh-9.9.0.0-ha774313_13.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/snappy-1.2.1-he1e6707_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/snappy-1.2.1-haf3c120_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/soqt6-1.6.3-h667e493_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/spdlog-1.14.1-h325aa07_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.47.0-h6285a30_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.47.2-h2e4c9dc_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/svt-av1-2.3.0-h97d8b74_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/swig-4.3.0-h05d4bff_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1300.6.5-h390ca13_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tbb-2022.0.0-h0ec6371_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tbb-devel-2022.0.0-h80d89ef_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py312h01d7ebd_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/truststore-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py313h63b0ddb_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-15.1.0-py312h3d0f464_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py313h0c4e38b_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/utfcpp-4.0.6-h93fb1c9_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/vtk-9.3.1-qt_py312h8bbc2db_209.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/vtk-base-9.3.1-qt_py312hfd5146d_209.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/vtk-io-ffmpeg-9.3.1-qt_py312h98fac4b_209.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/vtk-9.3.1-qt_py313h6e7d914_212.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/vtk-base-9.3.1-qt_py313he77fd1e_212.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/vtk-io-ffmpeg-9.3.1-qt_py313h6e7d914_212.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/x264-1!164.3095-h775f41a_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/x265-3.5-hbb4e6a2_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/xerces-c-3.3.0-hd0321b6_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.11-h00291cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.12-h6e16a3a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h00291cd_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.6.3-h357f2ed_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.6.3-h357f2ed_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.6.3-hd471939_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-cpp-0.8.0-he965462_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/yarl-1.18.0-py312h01d7ebd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-64/yarl-1.18.3-py313h63b0ddb_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h7122b0e_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda osx-arm64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py313ha9b7d5b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/blosc-1.21.6-h5499902_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boltons-24.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-compiler-1.8.0-hf48404e_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.2-h6a3b0d2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ccache-4.10.1-hbe278c5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-1010.6-hf67d63f_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-1010.6-h623e0ac_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-17-17.0.6-default_h146c034_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-17.0.6-default_h360f5da_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_impl_osx-arm64-17.0.6-he47c785_23.conda @@ -1054,31 +934,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_osx-arm64-17.0.6-h07b0088_23.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cmake-3.28.3-h50fd54c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/coin3d-4.0.3-h705ab75_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt-17.0.6-h856b3c1_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-arm64-17.0.6-h832e737_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/compilers-1.8.0-hce30654_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/conda-24.11.0-py312h81bd7bf_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-devenv-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-24.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.4.0-pyh7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.1-py312hb23fbb9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cpp-expected-1.1.0-hffc8910_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-devenv-1.0.3-py_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.1-py313h0ebd0e5_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cxx-compiler-1.8.0-h18dbf2f_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/cyrus-sasl-2.1.27-h60b93bd_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py312hd8f9ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.11-py313h928ef07_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/double-conversion-3.3.0-h13dd4ca_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/doxygen-1.11.0-h8414b35_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/eigen-3.4.0-h1995070_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.4-h286801f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ffmpeg-7.1.0-gpl_h92f8dbd_105.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/flann-1.9.2-hedd063d_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ffmpeg-7.1.0-gpl_h7253ecb_107.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/flann-1.9.2-h9c23b55_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fmt-11.0.2-h420ef59_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -1087,13 +960,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.55.0-py312h998013c_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.55.3-py313ha9b7d5b_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fortran-compiler-1.8.0-hc3477c4_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freeimage-3.18.0-h2e169f6_22.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozendict-2.4.6-py312h0bf5046_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py313h63a2874_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.22.5-h8414b35_3.conda @@ -1106,51 +978,45 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.0.0-hbf8cc41_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-h91d5085_5.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-hc5c4cae_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf4-4.2.15-h2ee6834_7.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.4-nompi_ha698983_105.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/imath-3.1.12-h025cafa_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/isl-0.26-imath32_h347afa1_101.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsoncpp-1.9.6-h7b3277c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsoncpp-1.9.6-h726d253_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/jxrlib-1.1-h93a5062_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.4.7-py312h6142ec9_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.4.7-py313hf9c7212_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lame-3.100-h1a8c8d9_1003.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-951.9-h39a299f_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-951.9-h3f9b568_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libaec-1.1.3-hebf3989_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libarchive-3.7.7-h7c07d2a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libass-0.17.3-hf20b609_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-1.86.0-h29978a0_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-devel-1.86.0-hf450f58_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-headers-1.86.0-hce30654_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-1.86.0-hc9fb7c5_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-devel-1.86.0-hf450f58_3.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-headers-1.86.0-hce30654_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp17-17.0.6-default_h146c034_7.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang13-19.1.4-default_h81d93ff_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang13-19.1.6-default_h81d93ff_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-17.0.6-h86353a2_6.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda @@ -1168,210 +1034,181 @@ environments: - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8414b35_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm17-17.0.6-h5090b49_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm19-19.1.4-hc4b4ae8_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmamba-2.0.4-h4621f14_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmambapy-2.0.4-py312hd07f1d4_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnetcdf-4.9.2-nompi_h853a48d_115.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm19-19.1.6-hc4b4ae8_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h99b78c6_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnetcdf-4.9.2-nompi_h6569565_116.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libntlm-1.4-h3422bc3_1002.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libntlm-1.8-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-2024.4.0-hbfeda7a_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-arm-cpu-plugin-2024.4.0-hbfeda7a_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-auto-batch-plugin-2024.4.0-hf276634_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-auto-plugin-2024.4.0-hf276634_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-hetero-plugin-2024.4.0-h03892cd_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-ir-frontend-2024.4.0-h03892cd_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-onnx-frontend-2024.4.0-h7f5a098_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-paddle-frontend-2024.4.0-h7f5a098_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-pytorch-frontend-2024.4.0-h5833ebf_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-tensorflow-frontend-2024.4.0-h9d544f2_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-tensorflow-lite-frontend-2024.4.0-h5833ebf_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-2024.5.0-h97facdf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-arm-cpu-plugin-2024.5.0-h97facdf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-auto-batch-plugin-2024.5.0-h7f72211_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-auto-plugin-2024.5.0-h7f72211_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-hetero-plugin-2024.5.0-hd3d436d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-ir-frontend-2024.5.0-hd3d436d_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-onnx-frontend-2024.5.0-h3192354_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-paddle-frontend-2024.5.0-h3192354_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-pytorch-frontend-2024.5.0-h286801f_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-tensorflow-frontend-2024.5.0-hafbd6be_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-tensorflow-lite-frontend-2024.5.0-h286801f_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpq-17.2-h9b1ab17_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpq-17.2-ha9b7db8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libraw-0.21.3-hee66ff5_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h40956f1_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsolv-0.7.30-h6c9b7f8_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtheora-1.1.1-h99b78c6_1006.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h9f76cd9_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvpx-1.14.1-h7bae524_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-hbbdcc80_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxslt-1.1.39-h223e5b9_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzip-1.11.2-h1336266_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-17.0.6-h5090b49_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/loguru-0.7.2-py312h81bd7bf_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/loguru-0.7.2-py313h8f79df9_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/lzo-2.10-h93a5062_1001.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.9.3-py312h1f38498_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.9.3-py312hdbc7e53_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/menuinst-2.2.0-py312h81bd7bf_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.10.0-py313h39782a4_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.0-py313haaf02c0_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.1.0-py312h6142ec9_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.1.0-py313hf9c7212_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py313h6347b5a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mysql-common-9.0.1-h0887d5e_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mysql-libs-9.0.1-he9bc4e1_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mysql-common-9.0.1-hd7719f6_4.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/mysql-libs-9.0.1-ha8be5b7_4.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ninja-1.12.1-h420ef59_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/noqt5-1.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.1.3-py312h94ee1e1_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.1-py313ha4a2180_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/occt-7.8.1-all_h869bdd7_203.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openexr-3.3.2-h04410fd_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openexr-3.3.2-h360b6eb_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openh264-2.5.0-h774163f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openldap-2.6.9-hbe55e7a_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.54.0-h9ee27a3_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.54.0-h3e3e505_3.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcl-1.14.1-h4a636e1_6.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/perl-5.32.1-7_h4614cfb_perl5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - - conda: https://conda.anaconda.org/conda-forge/label/pivy_rc/osx-arm64/pivy-0.6.9.a0-py312h1dac651_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py313h97432e1_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh145f28c_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pivy-0.6.9-py313qt6he8ca096_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/proj-9.5.1-h1318a7e_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py313h90d716c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pugixml-1.14-h13dd4ca_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-4-hd8ed1ab_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pycosat-0.6.6-py312hea69d52_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyside6-6.7.3-py312h943ac22_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.0-h47c9636_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyside6-6.7.3-py313h944b03b_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.0-hbbac1ca_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313h20a7fcf_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/qhull-2020.2-h420ef59_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/qt6-main-6.7.3-h2fbab7f_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rapidjson-1.1.0.post20240409-h00cdb27_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/reproc-14.2.5.post0-h5505292_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/reproc-cpp-14.2.5.post0-h286801f_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/rhash-1.4.5-h7ab814d_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml-0.18.6-py312h0bf5046_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.8-py312h0bf5046_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.14.1-py312h20deb59_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.14.1-py313hc010ede_2.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sed-4.8-hc6a1b29_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sigtool-0.1.3-h44b9a77_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/simdjson-3.10.1-h7b3277c_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/smesh-9.9.0.0-hf192bc0_13.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/soqt6-1.6.3-hd20b56a_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/spdlog-1.14.1-h6d8af72_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlite-3.47.0-hcd14bea_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlite-3.47.2-hd7222ec_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/swig-4.3.0-h051d1ac_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tapi-1300.6.5-h03f4b80_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tbb-2022.0.0-h0cbf7ec_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tbb-devel-2022.0.0-h6e261d1_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/truststore-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py313h90d716c_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/unicodedata2-15.1.0-py312h0bf5046_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/utfcpp-4.0.6-h54c0426_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.28.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/vtk-9.3.1-qt_py312h8d5bf7a_209.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/vtk-base-9.3.1-qt_py312h679c1d7_209.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/vtk-io-ffmpeg-9.3.1-qt_py312hf99a90b_209.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/vtk-9.3.1-qt_py313h8d5bf7a_209.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/vtk-base-9.3.1-qt_py313hc8fffa2_209.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/vtk-io-ffmpeg-9.3.1-qt_py313hf99a90b_209.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/x264-1!164.3095-h57fd34a_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/x265-3.5-hbc6ce65_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xerces-c-3.3.0-hd62221f_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_1.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-cpp-0.8.0-h13dd4ca_0.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda + - conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py313h90d716c_0.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda win-64: - - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/aiohttp-3.11.9-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/aiohttp-3.11.11-py313hb4c8b1a_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/aom-3.9.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/blosc-1.21.6-h85f69ea_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/boltons-24.0.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-1.1.0-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-bin-1.1.0-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - conda: https://conda.anaconda.org/conda-forge/win-64/c-compiler-1.8.0-hcfcfb64_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.8.30-h56e8100_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.0-h32b962e_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.12.14-h56e8100_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.2-h5782bbf_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ccache-4.10.1-h65df0e8_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/clang-19-19.1.4-default_hec7ea82_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/clang-19.1.4-default_hec7ea82_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py313ha7868ed_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/clang-19-19.1.6-default_hec7ea82_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/clang-19.1.6-default_hec7ea82_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cmake-3.28.3-hf0feee3_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/coin3d-4.0.3-h192c3d0_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/compiler-rt-19.1.4-hc790b64_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_win-64-19.1.4-hc790b64_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/compiler-rt-19.1.6-hc790b64_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_win-64-19.1.6-hc790b64_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/compilers-1.8.0-h57928b3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/conda-24.11.0-py312h2e8e312_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-devenv-3.4.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-24.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.4.0-pyh7900ff3_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.1-py312hd5eb7cc_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/cpp-expected-1.1.0-h91493d7_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/conda-devenv-1.0.3-py_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.1-py313h1ec8472_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.8.0-h91493d7_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/dav1d-1.2.1-hcfcfb64_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.9-py312h275cf98_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.11-py313h5813708_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/double-conversion-3.3.0-h63175ca_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/doxygen-1.11.0-hbf3f430_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/eigen-3.4.0-h91493d7_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/expat-2.6.4-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ffmpeg-7.1.0-gpl_h2585aa8_705.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/flang-19.1.4-hbeecb71_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/flang_impl_win-64-19.1.4-h719f0c7_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/flang_win-64-19.1.4-h719f0c7_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/flann-1.9.2-h8958603_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ffmpeg-7.1.0-gpl_h062b70d_707.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/flang-19.1.6-hbeecb71_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/flang_impl_win-64-19.1.6-h719f0c7_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/flang_win-64-19.1.6-h719f0c7_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/flann-1.9.2-h8958603_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fmt-11.0.2-h7f575de_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 @@ -1380,13 +1217,12 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.55.0-py312h31fea79_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.55.3-py313hb4c8b1a_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fortran-compiler-1.8.0-h95e3450_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freeimage-3.18.0-h8310ca0_22.conda - conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/frozendict-2.4.6-py312h4389bb4_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/frozenlist-1.5.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/frozenlist-1.5.0-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gdk-pixbuf-2.42.12-hed59a49_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/git-2.47.1-h57928b3_0.conda @@ -1395,42 +1231,36 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda - conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.0.0-hb01754f_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-9.0.0-h2bedf89_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/hdf4-4.2.15-h5557f11_7.conda - conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.4-nompi_hd5d9e70_105.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.4-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/imath-3.1.12-hbb528cf_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/jsoncpp-1.9.6-hc790b64_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/jsoncpp-1.9.6-hda1637e_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/jxrlib-1.1-hcfcfb64_3.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.7-py312hd5eb7cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.7-py313h1ec8472_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lcms2-2.16-h67d730c_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/libaec-1.1.3-h63175ca_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libarchive-3.7.7-h88ece9c_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-25_win64_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-1.86.0-h444863b_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-devel-1.86.0-h91493d7_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-headers-1.86.0-h57928b3_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-26_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-1.86.0-hb0986bb_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-devel-1.86.0-h91493d7_3.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libboost-headers-1.86.0-h57928b3_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.1.0-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.1.0-h2466b09_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.1.0-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-25_win64_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libclang13-19.1.4-default_ha5278ca_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.10.1-h1ee3ff0_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.22-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-26_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libclang13-19.1.6-default_ha5278ca_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.11.1-h88aaa65_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h9062f6e_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/libflang-19.1.4-he0c23c2_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libflang-19.1.6-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h085315d_10.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.82.2-h7025463_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libhiredis-1.0.2-h0e60522_0.tar.bz2 @@ -1438,117 +1268,99 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-25_win64_mkl.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libllvm19-19.1.4-h3089188_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libmamba-2.0.4-h81425b0_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libmambapy-2.0.4-py312h643a1bd_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libnetcdf-4.9.2-nompi_he239ae6_115.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-26_win64_mkl.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libllvm19-19.1.6-h3089188_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.3-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-devel-5.6.3-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libnetcdf-4.9.2-nompi_h5bdc103_116.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libogg-1.3.5-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libopus-1.3.1-h8ffe710_1.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.44-h3ca93ac_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libraw-0.21.3-h0f5434b_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/librsvg-2.58.4-h33bc1f6_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsolv-0.7.30-hbb528cf_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.47.0-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/librsvg-2.58.4-h5ce5fed_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.47.2-h67fdade_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-he619c9f_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libtheora-1.1.1-hc70643c_1006.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-hfc51747_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.49.2-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.4.0-hcfcfb64_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.16-h013a479_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.5-h442d1da_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.5-he286e8c_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libxslt-1.1.39-h3df6e99_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzip-1.11.2-h3135430_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/lld-19.1.4-hd91d51b_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/llvm-tools-19.1.4-h2a44499_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/loguru-0.7.2-py312h2e8e312_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/lld-19.1.6-hd91d51b_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/llvm-tools-19.1.6-h2a44499_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/loguru-0.7.2-py313hfa70ccb_2.conda - conda: https://conda.anaconda.org/conda-forge/win-64/lz4-c-1.9.4-hcfcfb64_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/lzo-2.10-hcfcfb64_1001.conda - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libgfortran-5.3.0-6.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-5.3.0-7.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-core-5.3.0-7.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gmp-6.1.0-2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-libwinpthread-git-5.0.0.4634.697f757-2.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.9.3-py312h2e8e312_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.9.3-py312h90004f6_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/menuinst-2.2.0-py312h275cf98_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_14.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/msgpack-python-1.1.0-py312hd5eb7cc_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.10.0-py313hfa70ccb_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.0-py313h81b4f16_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/msgpack-python-1.1.0-py313h1ec8472_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/msys2-conda-epoch-20160418-1.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/multidict-6.1.0-py312h31fea79_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/multidict-6.1.0-py313hb4c8b1a_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/ninja-1.12.1-hc790b64_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/nlohmann_json-3.11.3-he0c23c2_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/noarch/noqt5-1.0-hd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.1.3-py312h49bc9c5_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.1-py313hd65a2fa_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/occt-7.8.1-all_hae6dad1_203.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openexr-3.3.2-h974021d_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openexr-3.3.2-h3924f79_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openh264-2.5.0-ha9db3cd_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.2-h3d672ee_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.3-h4d64b90_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-h2c73655_3.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcl-1.14.1-h8d4a065_6.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-10.4.0-py312h381445a_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - - conda: https://conda.anaconda.org/conda-forge/label/pivy_rc/win-64/pivy-0.6.9.a0-py312h6680977_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.43.4-h63175ca_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pillow-10.4.0-py313h24ec7aa_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh145f28c_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pivy-0.6.9-py313qt6h4bf16b0_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.44.2-had0cd8c_0.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/proj-9.5.1-h4f671f6_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/propcache-0.2.0-py312h4389bb4_2.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/propcache-0.2.1-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-hcd874cb_1001.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/pthreads-win32-2.9.1-h2466b09_4.conda - conda: https://conda.anaconda.org/conda-forge/win-64/pugixml-1.14-h63175ca_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-4-hd8ed1ab_3.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyhab904b8_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pycosat-0.6.6-py312h4389bb4_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.7.3-py312h2ee7485_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.12.0-h2628c8c_0_cpython.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h4389bb4_1.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.1-pyhd8ed1ab_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.7.3-py313h3e3797f_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.0-hf5aa216_101_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.13-5_cp313.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py313ha7868ed_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/qhull-2020.2-hc790b64_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.7.3-hfb098fa_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/rapidjson-1.1.0.post20240409-he0c23c2_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/reproc-14.2.5.post0-h2466b09_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/reproc-cpp-14.2.5.post0-he0c23c2_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml-0.18.6-py312h4389bb4_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml.clib-0.2.8-py312h4389bb4_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.14.1-py312h337df96_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.14.1-py313h16bbbb2_2.conda - conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/simdjson-3.10.1-hc790b64_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/smesh-9.9.0.0-hdbf5530_13.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/snappy-1.2.1-h23299a8_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/snappy-1.2.1-h500f7fa_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/soqt6-1.6.3-h796eb14_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/spdlog-1.14.1-h9f2357e_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/sqlite-3.47.0-h2466b09_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/sqlite-3.47.2-h2466b09_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/svt-av1-2.3.0-he0c23c2_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/swig-4.3.0-h51fbe9b_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tbb-devel-2021.13.0-h47441b3_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py312h4389bb4_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/truststore-0.10.0-pyhd8ed1ab_0.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/unicodedata2-15.1.0-py312h4389bb4_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda - conda: https://conda.anaconda.org/conda-forge/win-64/utfcpp-4.0.6-hc1507ef_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda @@ -1556,11 +1368,9 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vs2019_win-64-19.29.30139-he1865b1_23.conda - conda: https://conda.anaconda.org/conda-forge/win-64/vswhere-3.1.7-h57928b3_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vtk-9.3.1-qt_py312h88e836f_209.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/vtk-base-9.3.1-qt_py312h44e7938_209.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/win32_setctime-1.1.0-pyhd8ed1ab_1.conda - - conda: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vtk-9.3.1-qt_py313h88e836f_209.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/vtk-base-9.3.1-qt_py313hdcf24be_209.conda + - conda: https://conda.anaconda.org/conda-forge/noarch/win32_setctime-1.2.0-pyhd8ed1ab_0.conda - conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.2.1-pyhd8ed1ab_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/x264-1!164.3095-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/x265-3.5-h2d74725_3.tar.bz2 @@ -1576,32 +1386,24 @@ environments: - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.0-hcd874cb_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xextproto-7.3.0-hcd874cb_1003.conda - conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xproto-7.0.31-hcd874cb_1007.tar.bz2 - - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 + - conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.6.3-h208afaa_1.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/xz-tools-5.6.3-h2466b09_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 - conda: https://conda.anaconda.org/conda-forge/win-64/yaml-cpp-0.8.0-h63175ca_0.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/yarl-1.18.0-py312h4389bb4_0.conda + - conda: https://conda.anaconda.org/conda-forge/win-64/yarl-1.18.3-py313ha7868ed_0.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda - - conda: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h7606c53_1.conda - conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda packages: -- kind: conda - name: _libgcc_mutex - version: '0.1' - build: conda_forge - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/_libgcc_mutex-0.1-conda_forge.tar.bz2 sha256: fe51de6107f9edc7aa4f786a70f4a883943bc9d39b3bb7307c04c41410990726 md5: d7c89558ba9fa0495403155b64376d81 + arch: x86_64 + platform: linux license: None size: 2562 timestamp: 1578324546067 -- kind: conda - name: _openmp_mutex - version: '4.5' - build: 2_gnu +- conda: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 build_number: 16 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/_openmp_mutex-4.5-2_gnu.tar.bz2 sha256: fbe2c5e56a653bebb982eda4876a9178aedfc2b545f25d0ce9c4c0b508253d22 md5: 73aaf86a425cc6e73fcf236a5a46396d depends: @@ -1609,50 +1411,38 @@ packages: - libgomp >=7.5.0 constrains: - openmp_impl 9999 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 23621 timestamp: 1650670423406 -- kind: conda - name: _openmp_mutex - version: '4.5' - build: 2_gnu +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 build_number: 16 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/_openmp_mutex-4.5-2_gnu.tar.bz2 sha256: 3702bef2f0a4d38bd8288bbe54aace623602a1343c2cfbefd3fa188e015bebf0 md5: 6168d71addc746e8f2b8d57dfd2edcea depends: - libgomp >=7.5.0 constrains: - openmp_impl 9999 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 23712 timestamp: 1650670790230 -- kind: conda - name: aiohappyeyeballs - version: 2.4.4 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_0.conda - sha256: 4282838f468f75f0c1746cbc6cdd3365b9f6d449bf5af8a74b234e396d847bf0 - md5: 8d6f8a679aa0272ba8d6092ce4824870 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiohappyeyeballs-2.4.4-pyhd8ed1ab_1.conda + sha256: 95d4713e49ea92ae50cf42393683ede706b7875af5f7cb14c253438180afa732 + md5: 296b403617bafa89df4971567af79013 depends: - python >=3.9 license: PSF-2.0 license_family: PSF - size: 19310 - timestamp: 1733135584059 -- kind: conda - name: aiohttp - version: 3.11.9 - build: py312h178313f_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.9-py312h178313f_0.conda - sha256: 875a8ad0da035b33ba8037c40a2ffc0412b9545bc3d15455a8a75db22a3ee471 - md5: eeaf9831f262132fb12ce3921de09651 + size: 19351 + timestamp: 1733332029649 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aiohttp-3.11.11-py313h8060acc_0.conda + sha256: 9c26ba5cd4420f3602d9a7c52a1d265763c9c76a9b00e1d6121a0e48519f2e7b + md5: 86b1457ba5e366c18704922d394372d9 depends: - __glibc >=2.17,<3.0.a0 - aiohappyeyeballs >=2.3.0 @@ -1662,46 +1452,39 @@ packages: - libgcc >=13 - multidict >=4.5,<7.0 - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: linux license: MIT AND Apache-2.0 license_family: Apache - size: 912186 - timestamp: 1733125914520 -- kind: conda - name: aiohttp - version: 3.11.9 - build: py312h31fea79_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/aiohttp-3.11.9-py312h31fea79_0.conda - sha256: a7c09f5233d961b210810b2ed415d988db7880382437de3cb7f5aa56af732863 - md5: 481265463476863dd5b532e48ab8bb99 + size: 917997 + timestamp: 1734597103673 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.11-py313h857f82b_0.conda + sha256: 7565f3fcf784f094c080ec2ab73827b3a14cb405d45aa09207a7ff4daed01a82 + md5: c1236fcdf74333ceda89b7afd71e309e depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 - attrs >=17.3.0 - frozenlist >=1.1.1 + - libgcc >=13 - multidict >=4.5,<7.0 - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 - yarl >=1.17.0,<2.0 + arch: aarch64 + platform: linux license: MIT AND Apache-2.0 license_family: Apache - size: 857956 - timestamp: 1733125237215 -- kind: conda - name: aiohttp - version: 3.11.9 - build: py312h3520af0_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/aiohttp-3.11.9-py312h3520af0_0.conda - sha256: a51129609bd7baecdf6e9b48e9078c9a2ffd7411ca1fc815ad46c1c00d0b523b - md5: ea412f0f0280322bdc76a6d763d42993 + size: 911401 + timestamp: 1734597152002 +- conda: https://conda.anaconda.org/conda-forge/osx-64/aiohttp-3.11.10-py313h717bdf5_0.conda + sha256: b81c59474a22ca4b9029ad6ac3c32c21c55e62af07a3d2ea3a8691226594c1ba + md5: ce3151b9bb74844364ca664ddb5fc56b depends: - __osx >=10.13 - aiohappyeyeballs >=2.3.0 @@ -1710,21 +1493,18 @@ packages: - frozenlist >=1.1.1 - multidict >=4.5,<7.0 - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: osx license: MIT AND Apache-2.0 license_family: Apache - size: 872532 - timestamp: 1733125008215 -- kind: conda - name: aiohttp - version: 3.11.9 - build: py312h998013c_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.9-py312h998013c_0.conda - sha256: 521b7c97a1122c0a6740a3200163e29bc8aa1d7efa273deb6e4c58a47779114b - md5: 0bb2657d1215a89fb586d387ce9c4daa + size: 878181 + timestamp: 1733839105823 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aiohttp-3.11.11-py313ha9b7d5b_0.conda + sha256: 19ab96e2169b00379eb0ada130b8f9d0ad3c4c2353697cec21330aad6f4a67b6 + md5: c1e5ab6d1071a317a31a4199e9602e0e depends: - __osx >=11.0 - aiohappyeyeballs >=2.3.0 @@ -1733,180 +1513,133 @@ packages: - frozenlist >=1.1.1 - multidict >=4.5,<7.0 - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 - yarl >=1.17.0,<2.0 + arch: arm64 + platform: osx license: MIT AND Apache-2.0 license_family: Apache - size: 873089 - timestamp: 1733125044394 -- kind: conda - name: aiohttp - version: 3.11.9 - build: py312hcc812fe_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aiohttp-3.11.9-py312hcc812fe_0.conda - sha256: e358d2c03b4eceb7ad3d8636705e60aa15bdec81305d9f9e1624fb5a03901147 - md5: 06400e4f6428e6c2ea2b59df702b5b39 + size: 882194 + timestamp: 1734597207077 +- conda: https://conda.anaconda.org/conda-forge/win-64/aiohttp-3.11.11-py313hb4c8b1a_0.conda + sha256: edb716056aefb42878f4466aaf4751aa4be223fbfb1c7f50c32d182aed38df7c + md5: eceb9b16650c4e5089bd6e8369feefbd depends: - aiohappyeyeballs >=2.3.0 - aiosignal >=1.1.2 - attrs >=17.3.0 - frozenlist >=1.1.1 - - libgcc >=13 - multidict >=4.5,<7.0 - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 - yarl >=1.17.0,<2.0 + arch: x86_64 + platform: win license: MIT AND Apache-2.0 license_family: Apache - size: 900828 - timestamp: 1733124971238 -- kind: conda - name: aiosignal - version: 1.3.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.1-pyhd8ed1ab_0.tar.bz2 - sha256: 575c742e14c86575986dc867463582a970463da50b77264cdf54df74f5563783 - md5: d1e1eb7e21a9e2c74279d87dafb68156 + size: 862445 + timestamp: 1734597216995 +- conda: https://conda.anaconda.org/conda-forge/noarch/aiosignal-1.3.2-pyhd8ed1ab_0.conda + sha256: 7de8ced1918bbdadecf8e1c1c68237fe5709c097bd9e0d254f4cad118f4345d0 + md5: 1a3981115a398535dbe3f6d5faae3d36 depends: - frozenlist >=1.1.0 - - python >=3.7 + - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 12730 - timestamp: 1667935912504 -- kind: conda - name: alsa-lib - version: 1.2.13 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda - sha256: 4141180b0304559fefa8ca66f1cc217a1d957b03aa959f955daf33718162042f - md5: f643bb02c4bbcfe7de161a8ca5df530b - depends: - - libgcc >=13 - license: LGPL-2.1-or-later - license_family: GPL - size: 591318 - timestamp: 1731489774660 -- kind: conda - name: alsa-lib - version: 1.2.13 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda + size: 13229 + timestamp: 1734342253061 +- conda: https://conda.anaconda.org/conda-forge/linux-64/alsa-lib-1.2.13-hb9d3cd8_0.conda sha256: f507b58f77eabc0cc133723cb7fc45c053d551f234df85e70fb3ede082b0cd53 md5: ae1370588aa6a5157c34c73e9bbb36a0 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later license_family: GPL size: 560238 timestamp: 1731489643707 -- kind: conda - name: aom - version: 3.9.1 - build: h7bae524_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda - sha256: ec238f18ce8140485645252351a0eca9ef4f7a1c568a420f240a585229bc12ef - md5: 7adba36492a1bb22d98ffffe4f6fc6de +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/alsa-lib-1.2.13-h86ecc28_0.conda + sha256: 4141180b0304559fefa8ca66f1cc217a1d957b03aa959f955daf33718162042f + md5: f643bb02c4bbcfe7de161a8ca5df530b depends: - - __osx >=11.0 - - libcxx >=16 - license: BSD-2-Clause - license_family: BSD - size: 2235747 - timestamp: 1718551382432 -- kind: conda - name: aom - version: 3.9.1 - build: hac33072_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda + - libgcc >=13 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + license_family: GPL + size: 591318 + timestamp: 1731489774660 +- conda: https://conda.anaconda.org/conda-forge/linux-64/aom-3.9.1-hac33072_0.conda sha256: b08ef033817b5f9f76ce62dfcac7694e7b6b4006420372de22494503decac855 md5: 346722a0be40f6edc53f12640d301338 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD size: 2706396 timestamp: 1718551242397 -- kind: conda - name: aom - version: 3.9.1 - build: hcccb83c_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/aom-3.9.1-hcccb83c_0.conda sha256: ac438ce5d3d3673a9188b535fc7cda413b479f0d52536aeeac1bd82faa656ea0 md5: cc744ac4efe5bcaa8cca51ff5b850df0 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 3250813 timestamp: 1718551360260 -- kind: conda - name: aom - version: 3.9.1 - build: he0c23c2_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/aom-3.9.1-he0c23c2_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/aom-3.9.1-hf036a51_0.conda + sha256: 3032f2f55d6eceb10d53217c2a7f43e1eac83603d91e21ce502e8179e63a75f5 + md5: 3f17bc32cb7fcb2b4bf3d8d37f656eb8 + depends: + - __osx >=10.13 + - libcxx >=16 + arch: x86_64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 2749186 + timestamp: 1718551450314 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/aom-3.9.1-h7bae524_0.conda + sha256: ec238f18ce8140485645252351a0eca9ef4f7a1c568a420f240a585229bc12ef + md5: 7adba36492a1bb22d98ffffe4f6fc6de + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 2235747 + timestamp: 1718551382432 +- conda: https://conda.anaconda.org/conda-forge/win-64/aom-3.9.1-he0c23c2_0.conda sha256: 0524d0c0b61dacd0c22ac7a8067f977b1d52380210933b04141f5099c5b6fec7 md5: 3d7c14285d3eb3239a76ff79063f27a5 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: BSD-2-Clause license_family: BSD size: 1958151 timestamp: 1718551737234 -- kind: conda - name: aom - version: 3.9.1 - build: hf036a51_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/aom-3.9.1-hf036a51_0.conda - sha256: 3032f2f55d6eceb10d53217c2a7f43e1eac83603d91e21ce502e8179e63a75f5 - md5: 3f17bc32cb7fcb2b4bf3d8d37f656eb8 - depends: - - __osx >=10.13 - - libcxx >=16 - license: BSD-2-Clause - license_family: BSD - size: 2749186 - timestamp: 1718551450314 -- kind: conda - name: archspec - version: 0.2.3 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/archspec-0.2.3-pyhd8ed1ab_0.conda - sha256: cef4062ea91f07a961a808801d6b34a163632150037f4bd28232310ff0301cd7 - md5: 192278292e20704f663b9c766909d67b - depends: - - python >=3.6 - license: MIT OR Apache-2.0 - size: 48780 - timestamp: 1708969700251 -- kind: conda - name: atk-1.0 - version: 2.38.0 - build: h04ea711_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/atk-1.0-2.38.0-h04ea711_2.conda sha256: df682395d05050cd1222740a42a551281210726a67447e5258968dd55854302e md5: f730d54ba9cd543666d7220c9f7ed563 depends: @@ -1915,17 +1648,28 @@ packages: - libstdcxx-ng >=12 constrains: - atk-1.0 2.38.0 + arch: x86_64 + platform: linux license: LGPL-2.0-or-later license_family: LGPL size: 355900 timestamp: 1713896169874 -- kind: conda - name: atk-1.0 - version: 2.38.0 - build: h4bec284_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/atk-1.0-2.38.0-hedc4a1f_2.conda + sha256: 69f70048a1a915be7b8ad5d2cbb7bf020baa989b5506e45a676ef4ef5106c4f0 + md5: 9308557e2328f944bd5809c5630761af + depends: + - libgcc-ng >=12 + - libglib >=2.80.0,<3.0a0 + - libstdcxx-ng >=12 + constrains: + - atk-1.0 2.38.0 + arch: aarch64 + platform: linux + license: LGPL-2.0-or-later + license_family: LGPL + size: 358327 + timestamp: 1713898303194 +- conda: https://conda.anaconda.org/conda-forge/osx-64/atk-1.0-2.38.0-h4bec284_2.conda sha256: a5972a943764e46478c966b26be61de70dcd7d0cfda4bd0b0c46916ae32e0492 md5: d9684247c943d492d9aac8687bc5db77 depends: @@ -1935,17 +1679,13 @@ packages: - libintl >=0.22.5,<1.0a0 constrains: - atk-1.0 2.38.0 + arch: x86_64 + platform: osx license: LGPL-2.0-or-later license_family: LGPL size: 349989 timestamp: 1713896423623 -- kind: conda - name: atk-1.0 - version: 2.38.0 - build: hd03087b_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/atk-1.0-2.38.0-hd03087b_2.conda sha256: b0747f9b1bc03d1932b4d8c586f39a35ac97e7e72fe6e63f2b2a2472d466f3c1 md5: 57301986d02d30d6805fdce6c99074ee depends: @@ -1955,161 +1695,122 @@ packages: - libintl >=0.22.5,<1.0a0 constrains: - atk-1.0 2.38.0 + arch: arm64 + platform: osx license: LGPL-2.0-or-later license_family: LGPL size: 347530 timestamp: 1713896411580 -- kind: conda - name: atk-1.0 - version: 2.38.0 - build: hedc4a1f_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/atk-1.0-2.38.0-hedc4a1f_2.conda - sha256: 69f70048a1a915be7b8ad5d2cbb7bf020baa989b5506e45a676ef4ef5106c4f0 - md5: 9308557e2328f944bd5809c5630761af +- conda: https://conda.anaconda.org/conda-forge/noarch/attrs-24.3.0-pyh71513ae_0.conda + sha256: 750186af694a7130eaf7119fbb56db0d2326d8995ad5b8eae23c622b85fea29a + md5: 356927ace43302bf6f5926e2a58dae6a depends: - - libgcc-ng >=12 - - libglib >=2.80.0,<3.0a0 - - libstdcxx-ng >=12 - constrains: - - atk-1.0 2.38.0 - license: LGPL-2.0-or-later - license_family: LGPL - size: 358327 - timestamp: 1713898303194 -- kind: conda - name: attrs - version: 24.2.0 - build: pyh71513ae_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/attrs-24.2.0-pyh71513ae_0.conda - sha256: 28dba85a7e0f7fb57d7315e13f603d1e41b83c5b88aa2a602596b52c833a2ff8 - md5: 6732fa52eb8e66e5afeb32db8701a791 - depends: - - python >=3.7 - license: MIT - license_family: MIT - size: 56048 - timestamp: 1722977241383 -- kind: conda - name: binutils - version: '2.43' - build: h4852527_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.43-h4852527_2.conda + - python >=3.9 + license: MIT + license_family: MIT + size: 56354 + timestamp: 1734348889193 +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils-2.43-h4852527_2.conda sha256: 92be0f8ccd501ceeb3c782e2182e6ea04dca46799038176de40a57bca45512c5 md5: 348619f90eee04901f4a70615efff35b depends: - binutils_impl_linux-64 >=2.43,<2.44.0a0 + arch: x86_64 + platform: linux license: GPL-3.0-only license_family: GPL size: 33876 timestamp: 1729655402186 -- kind: conda - name: binutils - version: '2.43' - build: hf1166c9_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils-2.43-hf1166c9_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils-2.43-hf1166c9_2.conda sha256: 50962dd8b4de41c9dcd2d19f37683aff1a7c3fc01e6b1617dd250940f2b83055 md5: 4afcab775fe2288fce420514cd92ae37 depends: - binutils_impl_linux-aarch64 >=2.43,<2.44.0a0 + arch: aarch64 + platform: linux license: GPL-3.0-only license_family: GPL size: 33870 timestamp: 1729655405026 -- kind: conda - name: binutils_impl_linux-64 - version: '2.43' - build: h4bf12b8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.43-h4bf12b8_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_impl_linux-64-2.43-h4bf12b8_2.conda sha256: 267e78990247369b13234bda270f31beb56a600b4851a8244e31dd9ad85b3b17 md5: cf0c5521ac2a20dfa6c662a4009eeef6 depends: - ld_impl_linux-64 2.43 h712a8e2_2 - sysroot_linux-64 + arch: x86_64 + platform: linux license: GPL-3.0-only license_family: GPL size: 5682777 timestamp: 1729655371045 -- kind: conda - name: binutils_impl_linux-aarch64 - version: '2.43' - build: h4c662bb_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.43-h4c662bb_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_impl_linux-aarch64-2.43-h4c662bb_2.conda sha256: 0bb8058bdb662e085f844f803a98e89314268c3e7aa79d495529992a8f41ecf1 md5: 2eb09e329ee7030a4cab0269eeea97d4 depends: - ld_impl_linux-aarch64 2.43 h80caac9_2 - sysroot_linux-aarch64 + arch: aarch64 + platform: linux license: GPL-3.0-only license_family: GPL size: 6722685 timestamp: 1729655379343 -- kind: conda - name: binutils_linux-64 - version: '2.43' - build: h4852527_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.43-h4852527_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/binutils_linux-64-2.43-h4852527_2.conda sha256: df52bd8b8b2a20a0c529d9ad08aaf66093ac318aa8a33d270f18274341a77062 md5: 18aba879ddf1f8f28145ca6fcb873d8c depends: - binutils_impl_linux-64 2.43 h4bf12b8_2 + arch: x86_64 + platform: linux license: GPL-3.0-only license_family: GPL size: 34945 timestamp: 1729655404893 -- kind: conda - name: binutils_linux-aarch64 - version: '2.43' - build: hf1166c9_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_linux-aarch64-2.43-hf1166c9_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/binutils_linux-aarch64-2.43-hf1166c9_2.conda sha256: 97fe7c2023fdbef453a2a05d53d81037a7e18c4b3946dd68a7ea122747e7d1fa md5: 5c308468fe391f32dc3bb57a4b4622aa depends: - binutils_impl_linux-aarch64 2.43 h4c662bb_2 + arch: aarch64 + platform: linux license: GPL-3.0-only license_family: GPL size: 34879 timestamp: 1729655407691 -- kind: conda - name: blosc - version: 1.21.6 - build: h5499902_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/blosc-1.21.6-h5499902_0.conda - sha256: 5a1e635a371449a750b776cab64ad83f5218b58b3f137ebd33ad3ec17f1ce92e - md5: e94ca7aec8544f700d45b24aff2dd4d7 +- conda: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-hef167b5_0.conda + sha256: 6cc260f9c6d32c5e728a2099a52fdd7ee69a782fff7b400d0606fcd32e0f5fd1 + md5: 54fe76ab3d0189acaef95156874db7f9 depends: - - __osx >=11.0 - - libcxx >=16 + - libgcc-ng >=12 + - libstdcxx-ng >=12 - libzlib >=1.3.1,<2.0a0 - lz4-c >=1.9.3,<1.10.0a0 - snappy >=1.2.0,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 33201 - timestamp: 1719266149627 -- kind: conda - name: blosc - version: 1.21.6 - build: h7d75f6d_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/blosc-1.21.6-h7d75f6d_0.conda + size: 48842 + timestamp: 1719266029046 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/blosc-1.21.6-hd2997c2_0.conda + sha256: 4349c7227053c2042b0c31daf6782cbb29ed09557d2f08d7d710ef5288040e73 + md5: 7e34841d8b76a87cb9ed5b2028f0f37f + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - snappy >=1.2.0,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 35975 + timestamp: 1719266339092 +- conda: https://conda.anaconda.org/conda-forge/osx-64/blosc-1.21.6-h7d75f6d_0.conda sha256: 65e5f5dd3d68ed0d9d35e79d64f8141283cad2b55dcd9a04480ceea0e436aca8 md5: 3e5669e51737d04f4806dd3e8c424663 depends: @@ -2119,16 +1820,29 @@ packages: - lz4-c >=1.9.3,<1.10.0a0 - snappy >=1.2.0,<1.3.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD size: 47051 timestamp: 1719266142315 -- kind: conda - name: blosc - version: 1.21.6 - build: h85f69ea_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/blosc-1.21.6-h85f69ea_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/blosc-1.21.6-h5499902_0.conda + sha256: 5a1e635a371449a750b776cab64ad83f5218b58b3f137ebd33ad3ec17f1ce92e + md5: e94ca7aec8544f700d45b24aff2dd4d7 + depends: + - __osx >=11.0 + - libcxx >=16 + - libzlib >=1.3.1,<2.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - snappy >=1.2.0,<1.3.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 33201 + timestamp: 1719266149627 +- conda: https://conda.anaconda.org/conda-forge/win-64/blosc-1.21.6-h85f69ea_0.conda sha256: 1289853b41df5355f45664f1cb015c868df1f570cf743e9e4a5bda8efe8c42fa md5: 2390269374fded230fcbca8332a4adc0 depends: @@ -2139,70 +1853,42 @@ packages: - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD size: 50135 timestamp: 1719266616208 -- kind: conda - name: blosc - version: 1.21.6 - build: hd2997c2_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/blosc-1.21.6-hd2997c2_0.conda - sha256: 4349c7227053c2042b0c31daf6782cbb29ed09557d2f08d7d710ef5288040e73 - md5: 7e34841d8b76a87cb9ed5b2028f0f37f +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hb9d3cd8_2.conda + sha256: fcb0b5b28ba7492093e54f3184435144e074dfceab27ac8e6a9457e736565b0b + md5: 98514fe74548d768907ce7a13f680e8f depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 - - snappy >=1.2.0,<1.3.0a0 - - zstd >=1.5.6,<1.6.0a0 - license: BSD-3-Clause - license_family: BSD - size: 35975 - timestamp: 1719266339092 -- kind: conda - name: blosc - version: 1.21.6 - build: hef167b5_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/blosc-1.21.6-hef167b5_0.conda - sha256: 6cc260f9c6d32c5e728a2099a52fdd7ee69a782fff7b400d0606fcd32e0f5fd1 - md5: 54fe76ab3d0189acaef95156874db7f9 + - __glibc >=2.17,<3.0.a0 + - brotli-bin 1.1.0 hb9d3cd8_2 + - libbrotlidec 1.1.0 hb9d3cd8_2 + - libbrotlienc 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 19264 + timestamp: 1725267697072 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-1.1.0-h86ecc28_2.conda + sha256: 260a981a68b63585384ab55a8fac954e8d14bdb4226b3d534333021f711495fe + md5: 5094acc34eb173f74205c0b55f0dd4a4 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 - - snappy >=1.2.0,<1.3.0a0 - - zstd >=1.5.6,<1.6.0a0 - license: BSD-3-Clause - license_family: BSD - size: 48842 - timestamp: 1719266029046 -- kind: conda - name: boltons - version: 24.0.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/boltons-24.0.0-pyhd8ed1ab_0.conda - sha256: e44d07932306392372411ab1261670a552f96077f925af00c1559a18a73a1bdc - md5: 61de176bd62041f9cd5bd4fcd09eb0ff - depends: - - python ==2.7.*|>=3.7 - license: BSD-3-Clause - license_family: BSD - size: 297896 - timestamp: 1711936529147 -- kind: conda - name: brotli - version: 1.1.0 - build: h00291cd_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.1.0-h00291cd_2.conda + - brotli-bin 1.1.0 h86ecc28_2 + - libbrotlidec 1.1.0 h86ecc28_2 + - libbrotlienc 1.1.0 h86ecc28_2 + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 19434 + timestamp: 1725267810677 +- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-1.1.0-h00291cd_2.conda sha256: 624954bc08b3d7885a58c7d547282cfb9a201ce79b748b358f801de53e20f523 md5: 2db0c38a7f2321c5bdaf32b181e832c7 depends: @@ -2210,17 +1896,27 @@ packages: - brotli-bin 1.1.0 h00291cd_2 - libbrotlidec 1.1.0 h00291cd_2 - libbrotlienc 1.1.0 h00291cd_2 + arch: x86_64 + platform: osx license: MIT license_family: MIT size: 19450 timestamp: 1725267851605 -- kind: conda - name: brotli - version: 1.1.0 - build: h2466b09_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/brotli-1.1.0-h2466b09_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.1.0-hd74edd7_2.conda + sha256: a086f36ff68d6e30da625e910547f6211385246fb2474b144ac8c47c32254576 + md5: 215e3dc8f2f837906d066e7f01aa77c0 + depends: + - __osx >=11.0 + - brotli-bin 1.1.0 hd74edd7_2 + - libbrotlidec 1.1.0 hd74edd7_2 + - libbrotlienc 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 19588 + timestamp: 1725268044856 +- conda: https://conda.anaconda.org/conda-forge/win-64/brotli-1.1.0-h2466b09_2.conda sha256: d8fd7d1b446706776117d2dcad1c0289b9f5e1521cb13405173bad38568dd252 md5: 378f1c9421775dfe644731cb121c8979 depends: @@ -2230,452 +1926,224 @@ packages: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: MIT license_family: MIT size: 19697 timestamp: 1725268293988 -- kind: conda - name: brotli - version: 1.1.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-1.1.0-h86ecc28_2.conda - sha256: 260a981a68b63585384ab55a8fac954e8d14bdb4226b3d534333021f711495fe - md5: 5094acc34eb173f74205c0b55f0dd4a4 - depends: - - brotli-bin 1.1.0 h86ecc28_2 - - libbrotlidec 1.1.0 h86ecc28_2 - - libbrotlienc 1.1.0 h86ecc28_2 - - libgcc >=13 - license: MIT - license_family: MIT - size: 19434 - timestamp: 1725267810677 -- kind: conda - name: brotli - version: 1.1.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/brotli-1.1.0-hb9d3cd8_2.conda - sha256: fcb0b5b28ba7492093e54f3184435144e074dfceab27ac8e6a9457e736565b0b - md5: 98514fe74548d768907ce7a13f680e8f +- conda: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hb9d3cd8_2.conda + sha256: 261364d7445513b9a4debc345650fad13c627029bfc800655a266bf1e375bc65 + md5: c63b5e52939e795ba8d26e35d767a843 depends: - __glibc >=2.17,<3.0.a0 - - brotli-bin 1.1.0 hb9d3cd8_2 - libbrotlidec 1.1.0 hb9d3cd8_2 - libbrotlienc 1.1.0 hb9d3cd8_2 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 19264 - timestamp: 1725267697072 -- kind: conda - name: brotli - version: 1.1.0 - build: hd74edd7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-1.1.0-hd74edd7_2.conda - sha256: a086f36ff68d6e30da625e910547f6211385246fb2474b144ac8c47c32254576 - md5: 215e3dc8f2f837906d066e7f01aa77c0 - depends: - - __osx >=11.0 - - brotli-bin 1.1.0 hd74edd7_2 - - libbrotlidec 1.1.0 hd74edd7_2 - - libbrotlienc 1.1.0 hd74edd7_2 - license: MIT - license_family: MIT - size: 19588 - timestamp: 1725268044856 -- kind: conda - name: brotli-bin - version: 1.1.0 - build: h00291cd_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.1.0-h00291cd_2.conda - sha256: 642a8492491109fd8270c1e2c33b18126712df0cedb94aaa2b1c6b02505a4bfa - md5: 049933ecbf552479a12c7917f0a4ce59 - depends: - - __osx >=10.13 - - libbrotlidec 1.1.0 h00291cd_2 - - libbrotlienc 1.1.0 h00291cd_2 - license: MIT - license_family: MIT - size: 16643 - timestamp: 1725267837325 -- kind: conda - name: brotli-bin - version: 1.1.0 - build: h2466b09_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/brotli-bin-1.1.0-h2466b09_2.conda - sha256: f3bf2893613540ac256c68f211861c4de618d96291719e32178d894114ac2bc2 - md5: d22534a9be5771fc58eb7564947f669d - depends: - - libbrotlidec 1.1.0 h2466b09_2 - - libbrotlienc 1.1.0 h2466b09_2 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: MIT - license_family: MIT - size: 20837 - timestamp: 1725268270219 -- kind: conda - name: brotli-bin - version: 1.1.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-bin-1.1.0-h86ecc28_2.conda + size: 18881 + timestamp: 1725267688731 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-bin-1.1.0-h86ecc28_2.conda sha256: 4231e3d00081d842870a6b8ba0ccf55ae0ccbc074dddbc0c115433bc32b1343d md5: 7d48b185fe1f722f8cda4539bb931f85 depends: - libbrotlidec 1.1.0 h86ecc28_2 - libbrotlienc 1.1.0 h86ecc28_2 - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 18937 timestamp: 1725267802117 -- kind: conda - name: brotli-bin - version: 1.1.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/brotli-bin-1.1.0-hb9d3cd8_2.conda - sha256: 261364d7445513b9a4debc345650fad13c627029bfc800655a266bf1e375bc65 - md5: c63b5e52939e795ba8d26e35d767a843 +- conda: https://conda.anaconda.org/conda-forge/osx-64/brotli-bin-1.1.0-h00291cd_2.conda + sha256: 642a8492491109fd8270c1e2c33b18126712df0cedb94aaa2b1c6b02505a4bfa + md5: 049933ecbf552479a12c7917f0a4ce59 depends: - - __glibc >=2.17,<3.0.a0 - - libbrotlidec 1.1.0 hb9d3cd8_2 - - libbrotlienc 1.1.0 hb9d3cd8_2 - - libgcc >=13 + - __osx >=10.13 + - libbrotlidec 1.1.0 h00291cd_2 + - libbrotlienc 1.1.0 h00291cd_2 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 18881 - timestamp: 1725267688731 -- kind: conda - name: brotli-bin - version: 1.1.0 - build: hd74edd7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.1.0-hd74edd7_2.conda + size: 16643 + timestamp: 1725267837325 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-bin-1.1.0-hd74edd7_2.conda sha256: 28f1af63b49fddf58084fb94e5512ad46e9c453eb4be1d97449c67059e5b0680 md5: b8512db2145dc3ae8d86cdc21a8d421e depends: - __osx >=11.0 - libbrotlidec 1.1.0 hd74edd7_2 - libbrotlienc 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 16772 timestamp: 1725268026061 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py312h275cf98_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/brotli-python-1.1.0-py312h275cf98_2.conda - sha256: f83baa6f6bcba7b73f6921d5c1aa95ffc5d8b246ade933ade79250de0a4c9c4c - md5: a99aec1ac46794a5fb1cd3cf5d2b6110 - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 +- conda: https://conda.anaconda.org/conda-forge/win-64/brotli-bin-1.1.0-h2466b09_2.conda + sha256: f3bf2893613540ac256c68f211861c4de618d96291719e32178d894114ac2bc2 + md5: d22534a9be5771fc58eb7564947f669d + depends: + - libbrotlidec 1.1.0 h2466b09_2 + - libbrotlienc 1.1.0 h2466b09_2 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - constrains: - - libbrotlicommon 1.1.0 h2466b09_2 - license: MIT - license_family: MIT - size: 321874 - timestamp: 1725268491976 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py312h2ec8cdc_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/brotli-python-1.1.0-py312h2ec8cdc_2.conda - sha256: f2a59ccd20b4816dea9a2a5cb917eb69728271dbf1aeab4e1b7e609330a50b6f - md5: b0b867af6fc74b2a0aa206da29c0f3cf - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 hb9d3cd8_2 - license: MIT - license_family: MIT - size: 349867 - timestamp: 1725267732089 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py312h5861a67_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/brotli-python-1.1.0-py312h5861a67_2.conda - sha256: 265764ff4ad9e5cfefe7ea85c53d95157bf16ac2c0e5f190c528e4c9c0c1e2d0 - md5: b95025822e43128835826ec0cc45a551 - depends: - - __osx >=10.13 - - libcxx >=17 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 h00291cd_2 - license: MIT - license_family: MIT - size: 363178 - timestamp: 1725267893889 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py312h6f74592_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/brotli-python-1.1.0-py312h6f74592_2.conda - sha256: 9736bf660a0e4260c68f81d2635b51067f817813e6490ac9e8abd9a835dcbf6d - md5: e1e9727063057168d95f27a032acd0a4 - depends: - - libgcc >=13 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 h86ecc28_2 - license: MIT - license_family: MIT - size: 356878 - timestamp: 1725267878508 -- kind: conda - name: brotli-python - version: 1.1.0 - build: py312hde4cb15_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/brotli-python-1.1.0-py312hde4cb15_2.conda - sha256: 254b411fa78ccc226f42daf606772972466f93e9bc6895eabb4cfda22f5178af - md5: a83c2ef76ccb11bc2349f4f17696b15d - depends: - - __osx >=11.0 - - libcxx >=17 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - constrains: - - libbrotlicommon 1.1.0 hd74edd7_2 + arch: x86_64 + platform: win license: MIT license_family: MIT - size: 339360 - timestamp: 1725268143995 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h2466b09_7 - build_number: 7 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda - sha256: 35a5dad92e88fdd7fc405e864ec239486f4f31eec229e31686e61a140a8e573b - md5: 276e7ffe9ffe39688abc665ef0f45596 - depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: bzip2-1.0.6 - license_family: BSD - size: 54927 - timestamp: 1720974860185 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h4bc722e_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda + size: 20837 + timestamp: 1725268270219 +- conda: https://conda.anaconda.org/conda-forge/linux-64/bzip2-1.0.8-h4bc722e_7.conda sha256: 5ced96500d945fb286c9c838e54fa759aa04a7129c59800f0846b4335cee770d md5: 62ee74e96c5ebb0af99386de58cf9553 depends: - __glibc >=2.17,<3.0.a0 - libgcc-ng >=12 + arch: x86_64 + platform: linux license: bzip2-1.0.6 license_family: BSD size: 252783 timestamp: 1720974456583 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h68df207_7 - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/bzip2-1.0.8-h68df207_7.conda sha256: 2258b0b33e1cb3a9852d47557984abb6e7ea58e3d7f92706ec1f8e879290c4cb md5: 56398c28220513b9ea13d7b450acfb20 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: bzip2-1.0.6 license_family: BSD size: 189884 timestamp: 1720974504976 -- kind: conda - name: bzip2 - version: 1.0.8 - build: h99b78c6_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda + sha256: cad153608b81fb24fc8c509357daa9ae4e49dfc535b2cb49b91e23dbd68fc3c5 + md5: 7ed4301d437b59045be7e051a0308211 + depends: + - __osx >=10.13 + arch: x86_64 + platform: osx + license: bzip2-1.0.6 + license_family: BSD + size: 134188 + timestamp: 1720974491916 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/bzip2-1.0.8-h99b78c6_7.conda sha256: adfa71f158cbd872a36394c56c3568e6034aa55c623634b37a4836bd036e6b91 md5: fc6948412dbbbe9a4c9ddbbcfe0a79ab depends: - __osx >=11.0 + arch: arm64 + platform: osx license: bzip2-1.0.6 license_family: BSD size: 122909 timestamp: 1720974522888 -- kind: conda - name: bzip2 - version: 1.0.8 - build: hfdf4475_7 - build_number: 7 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/bzip2-1.0.8-hfdf4475_7.conda - sha256: cad153608b81fb24fc8c509357daa9ae4e49dfc535b2cb49b91e23dbd68fc3c5 - md5: 7ed4301d437b59045be7e051a0308211 +- conda: https://conda.anaconda.org/conda-forge/win-64/bzip2-1.0.8-h2466b09_7.conda + sha256: 35a5dad92e88fdd7fc405e864ec239486f4f31eec229e31686e61a140a8e573b + md5: 276e7ffe9ffe39688abc665ef0f45596 depends: - - __osx >=10.13 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: bzip2-1.0.6 license_family: BSD - size: 134188 - timestamp: 1720974491916 -- kind: conda - name: c-ares - version: 1.34.3 - build: h5505292_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.3-h5505292_1.conda - sha256: 6dfa83cbd9acc8671d439fe9c745a5716faf6cbadf2f1e18c841bcf86cbba5f2 - md5: fb72102e8a8f9bcd38e40af09ff41c42 + size: 54927 + timestamp: 1720974860185 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.4-hb9d3cd8_0.conda + sha256: d4f28d87b6339b94f74762c0076e29c8ef8ddfff51a564a92da2843573c18320 + md5: e2775acf57efd5af15b8e3d1d74d72d3 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 179318 - timestamp: 1732447193278 -- kind: conda - name: c-ares - version: 1.34.3 - build: h86ecc28_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.3-h86ecc28_1.conda - sha256: 1181db17781d9d66c1478e7fbc3e82dd273e9cb43ed910e1d0f8b3c96b16e290 - md5: 0cd9ebf65479cdceb6a4888b764dafcd + size: 206085 + timestamp: 1734208189009 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-ares-1.34.4-h86ecc28_0.conda + sha256: 1187a41d4bb2afe02cb18690682edc98d1e9f5e0ccda638d8704a75ea1875bbe + md5: 356da36f35d36dcba16e43f1589d4e39 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 214791 - timestamp: 1732447020593 -- kind: conda - name: c-ares - version: 1.34.3 - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-ares-1.34.3-hb9d3cd8_1.conda - sha256: 732571ba6286dbccbf4c6450078a581b7a5620204faf876ff0ef282d77a6bfa8 - md5: ee228789a85f961d14567252a03e725f + size: 215979 + timestamp: 1734208193181 +- conda: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.4-hf13058a_0.conda + sha256: 8dcc1628d34fe7d759f3a7dee52e09c5162a3f9669dddd6100bff965450f4a0a + md5: 133255af67aaf1e0c0468cc753fd800b depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=10.13 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 204857 - timestamp: 1732447031823 -- kind: conda - name: c-ares - version: 1.34.3 - build: hf13058a_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/c-ares-1.34.3-hf13058a_1.conda - sha256: 37c031f91bb4c7ebec248e283c453b24840764fb53b640768780dcd904093f17 - md5: 7d8083876d71fe1316fc18369ee0dc58 + size: 184455 + timestamp: 1734208242547 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-ares-1.34.4-h5505292_0.conda + sha256: 09c0c8476e50b2955f474a4a1c17c4c047dd52993b5366b6ea8e968e583b921f + md5: c1c999a38a4303b29d75c636eaa13cf9 depends: - - __osx >=10.13 + - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 184403 - timestamp: 1732447223773 -- kind: conda - name: c-compiler - version: 1.8.0 - build: h2b85faf_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.8.0-h2b85faf_1.conda + size: 179496 + timestamp: 1734208291879 +- conda: https://conda.anaconda.org/conda-forge/linux-64/c-compiler-1.8.0-h2b85faf_1.conda sha256: 009fced27be14e5ac750a04111a07eda79d73f80009300c1538cb83d5da71879 md5: fa7b3bf2965b9d74a81a0702d9bb49ee depends: - binutils - gcc - gcc_linux-64 13.* + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 6085 timestamp: 1728985300402 -- kind: conda - name: c-compiler - version: 1.8.0 - build: h6561dab_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/c-compiler-1.8.0-h6561dab_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/c-compiler-1.8.0-h6561dab_1.conda sha256: f1b894a87a9bd8446de2ebd1820cc965e1fe2d5462e8c7df43a0b108732597a2 md5: 715a2eea9897fb01de5dd6ba82728935 depends: - binutils - gcc - gcc_linux-aarch64 13.* + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 6190 timestamp: 1728985292548 -- kind: conda - name: c-compiler - version: 1.8.0 - build: hcfcfb64_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/c-compiler-1.8.0-hcfcfb64_1.conda - sha256: 3fc7b2ceb03cc024e5f91f70fb576da71ff9cec787f3c481f3372d311ecc04f3 - md5: 33c106164044a19c4e8d13277ae97c3f +- conda: https://conda.anaconda.org/conda-forge/osx-64/c-compiler-1.8.0-hfc4bf79_1.conda + sha256: b5bff50c0792933c19bdf4c18b77c5aedabce4b01f86d3b68815534f3e9e3640 + md5: d6e3cf55128335736c8d4bb86e73c191 depends: - - vs2019_win-64 + - cctools >=949.0.1 + - clang_osx-64 17.* + - ld64 >=530 + - llvm-openmp + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 6513 - timestamp: 1728985389589 -- kind: conda - name: c-compiler - version: 1.8.0 - build: hf48404e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/c-compiler-1.8.0-hf48404e_1.conda + size: 6210 + timestamp: 1728985474611 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/c-compiler-1.8.0-hf48404e_1.conda sha256: 64245f90755c314f61d48b38fc7b82270b709f88204789895f7c4b2b84204992 md5: 429476dcb80c4f9087cd8ac1fa2183d1 depends: @@ -2683,223 +2151,178 @@ packages: - clang_osx-arm64 17.* - ld64 >=530 - llvm-openmp + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 6220 timestamp: 1728985386241 -- kind: conda - name: c-compiler - version: 1.8.0 - build: hfc4bf79_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/c-compiler-1.8.0-hfc4bf79_1.conda - sha256: b5bff50c0792933c19bdf4c18b77c5aedabce4b01f86d3b68815534f3e9e3640 - md5: d6e3cf55128335736c8d4bb86e73c191 +- conda: https://conda.anaconda.org/conda-forge/win-64/c-compiler-1.8.0-hcfcfb64_1.conda + sha256: 3fc7b2ceb03cc024e5f91f70fb576da71ff9cec787f3c481f3372d311ecc04f3 + md5: 33c106164044a19c4e8d13277ae97c3f depends: - - cctools >=949.0.1 - - clang_osx-64 17.* - - ld64 >=530 - - llvm-openmp + - vs2019_win-64 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD - size: 6210 - timestamp: 1728985474611 -- kind: conda - name: ca-certificates - version: 2024.8.30 - build: h56e8100_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.8.30-h56e8100_0.conda - sha256: 0fcac3a7ffcc556649e034a1802aedf795e64227eaa7194d207b01eaf26454c4 - md5: 4c4fd67c18619be5aa65dc5b6c72e490 + size: 6513 + timestamp: 1728985389589 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.12.14-hbcca054_0.conda + sha256: 1afd7274cbc9a334d6d0bc62fa760acc7afdaceb0b91a8df370ec01fd75dc7dd + md5: 720523eb0d6a9b0f6120c16b2aa4e7de + arch: x86_64 + platform: linux license: ISC - size: 158773 - timestamp: 1725019107649 -- kind: conda - name: ca-certificates - version: 2024.8.30 - build: h8857fd0_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.8.30-h8857fd0_0.conda - sha256: 593f302d0f44c2c771e1614ee6d56fffdc7d616e6f187669c8b0e34ffce3e1ae - md5: b7e5424e7f06547a903d28e4651dbb21 + size: 157088 + timestamp: 1734208393264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.12.14-hcefe29a_0.conda + sha256: ad7b43211051332a5a4e788bb4619a2d0ecb5be73e0f76be17f733a87d7effd1 + md5: 83b4ad1e6dc14df5891f3fcfdeb44351 + arch: aarch64 + platform: linux license: ISC - size: 158665 - timestamp: 1725019059295 -- kind: conda - name: ca-certificates - version: 2024.8.30 - build: hbcca054_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ca-certificates-2024.8.30-hbcca054_0.conda - sha256: afee721baa6d988e27fef1832f68d6f32ac8cc99cdf6015732224c2841a09cea - md5: c27d1c142233b5bc9ca570c6e2e0c244 + size: 157096 + timestamp: 1734209301744 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ca-certificates-2024.12.14-h8857fd0_0.conda + sha256: ddaafdcd1b8ace6ffeea22b6824ca9db8a64cf0a2652a11d7554ece54935fa06 + md5: b7b887091c99ed2e74845e75e9128410 + arch: x86_64 + platform: osx license: ISC - size: 159003 - timestamp: 1725018903918 -- kind: conda - name: ca-certificates - version: 2024.8.30 - build: hcefe29a_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ca-certificates-2024.8.30-hcefe29a_0.conda - sha256: 2a2d827bee3775a85f0f1b2f2089291475c4416336d1b3a8cbce2964db547af8 - md5: 70e57e8f59d2c98f86b49c69e5074be5 + size: 156925 + timestamp: 1734208413176 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.12.14-hf0a4a13_0.conda + sha256: 256be633fd0882ccc1a7a32bc278547e1703f85082c0789a87a603ee3ab8fb82 + md5: 7cb381a6783d91902638e4ed1ebd478e + arch: arm64 + platform: osx license: ISC - size: 159106 - timestamp: 1725020043153 -- kind: conda - name: ca-certificates - version: 2024.8.30 - build: hf0a4a13_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ca-certificates-2024.8.30-hf0a4a13_0.conda - sha256: 2db1733f4b644575dbbdd7994a8f338e6ef937f5ebdb74acd557e9dda0211709 - md5: 40dec13fd8348dbe303e57be74bd3d35 + size: 157091 + timestamp: 1734208344343 +- conda: https://conda.anaconda.org/conda-forge/win-64/ca-certificates-2024.12.14-h56e8100_0.conda + sha256: 424d82db36cd26234bc4772426170efd60e888c2aed0099a257a95e131683a5e + md5: cb2eaeb88549ddb27af533eccf9a45c1 + arch: x86_64 + platform: win license: ISC - size: 158482 - timestamp: 1725019034582 -- kind: conda - name: cairo - version: 1.18.0 - build: h32b962e_3 - build_number: 3 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.0-h32b962e_3.conda - sha256: 127101c9c2d1a56f8791c19141ceff13fd1d1a1da28cfaca549dc99d210cec6a - md5: 8f43723a4925c51e55c2d81725a97db4 + size: 157422 + timestamp: 1734208404685 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.2-h3394656_1.conda + sha256: de7d0d094e53decc005cb13e527be2635b8f604978da497d4c0d282c7dc08385 + md5: b34c2833a1f56db610aeb27f206d800d depends: - - fontconfig >=2.14.2,<3.0a0 + - __glibc >=2.17,<3.0.a0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - icu >=75.1,<76.0a0 - - libglib >=2.80.3,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libxcb >=1.17.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - pixman >=0.43.4,<1.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - - zlib + - pixman >=0.44.2,<1.0a0 + - xorg-libice >=1.1.1,<2.0a0 + - xorg-libsm >=1.2.4,<2.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: x86_64 + platform: linux license: LGPL-2.1-only or MPL-1.1 - size: 1516680 - timestamp: 1721139332360 -- kind: conda - name: cairo - version: 1.18.0 - build: h37bd5c4_3 - build_number: 3 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.0-h37bd5c4_3.conda - sha256: 8d70fbca4887b9b580de0f3715026e05f9e74fad8a652364aa0bccd795b1fa87 - md5: 448aad56614db52338dc4fd4c758cfb6 + size: 978868 + timestamp: 1733790976384 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.2-h83712da_1.conda + sha256: 0353e175859c4989251628e4c8f9fb2dc52546b0c031ffe4541eb087ac586573 + md5: e7b46975d2c9a4666da0e9bb8a087f28 depends: - - __osx >=10.13 - - fontconfig >=2.14.2,<3.0a0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - icu >=75.1,<76.0a0 - - libcxx >=16 - - libglib >=2.80.3,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libxcb >=1.17.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - pixman >=0.43.4,<1.0a0 - - zlib + - pixman >=0.44.2,<1.0a0 + - xorg-libice >=1.1.1,<2.0a0 + - xorg-libsm >=1.2.4,<2.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: aarch64 + platform: linux license: LGPL-2.1-only or MPL-1.1 - size: 892544 - timestamp: 1721139116538 -- kind: conda - name: cairo - version: 1.18.0 - build: hb4a6bf7_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.0-hb4a6bf7_3.conda - sha256: f7603b7f6ee7c6e07c23d77302420194f4ec1b8e8facfff2b6aab17c7988a102 - md5: 08bd0752f3de8a2d8a35fd012f09531f + size: 980455 + timestamp: 1733791018944 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cairo-1.18.2-h950ec3b_1.conda + sha256: ad8c41650e5a10d9177e9d92652d2bd5fe9eefa095ebd4805835c3f067c0202b + md5: ae293443dff77ba14eab9e9ee68ec833 depends: - - __osx >=11.0 - - fontconfig >=2.14.2,<3.0a0 + - __osx >=10.13 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - icu >=75.1,<76.0a0 - - libcxx >=16 - - libglib >=2.80.3,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 + - libcxx >=18 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 - libzlib >=1.3.1,<2.0a0 - - pixman >=0.43.4,<1.0a0 - - zlib + - pixman >=0.44.2,<1.0a0 + arch: x86_64 + platform: osx license: LGPL-2.1-only or MPL-1.1 - size: 899126 - timestamp: 1721139203735 -- kind: conda - name: cairo - version: 1.18.0 - build: hdb1a16f_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/cairo-1.18.0-hdb1a16f_3.conda - sha256: 8a747ad6ce32228a85c80bef8ec7387d71f8d2b0bf637edb56ff33e09794c616 - md5: 080659f02bf2202c57f1cda4f9e51f21 + size: 891731 + timestamp: 1733791233860 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cairo-1.18.2-h6a3b0d2_1.conda + sha256: 9a28344e806b89c87fda0cdabd2fb961e5d2ff97107dba25bac9f5dc57220cc3 + md5: 8e3666c3f6e2c3e57aa261ab103a3600 depends: - - fontconfig >=2.14.2,<3.0a0 + - __osx >=11.0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - icu >=75.1,<76.0a0 - - libgcc-ng >=12 - - libglib >=2.80.3,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 - - libstdcxx-ng >=12 - - libxcb >=1.16,<2.0.0a0 + - libcxx >=18 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 - libzlib >=1.3.1,<2.0a0 - - pixman >=0.43.4,<1.0a0 - - xorg-libice >=1.1.1,<2.0a0 - - xorg-libsm >=1.2.4,<2.0a0 - - xorg-libx11 >=1.8.9,<2.0a0 - - xorg-libxext >=1.3.4,<2.0a0 - - xorg-libxrender >=0.9.11,<0.10.0a0 - - zlib + - pixman >=0.44.2,<1.0a0 + arch: arm64 + platform: osx license: LGPL-2.1-only or MPL-1.1 - size: 966709 - timestamp: 1721138947987 -- kind: conda - name: cairo - version: 1.18.0 - build: hebfffa5_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cairo-1.18.0-hebfffa5_3.conda - sha256: aee5b9e6ef71cdfb2aee9beae3ea91910ca761c01c0ef32052e3f94a252fa173 - md5: fceaedf1cdbcb02df9699a0d9b005292 + size: 894517 + timestamp: 1733791145035 +- conda: https://conda.anaconda.org/conda-forge/win-64/cairo-1.18.2-h5782bbf_1.conda + sha256: 86fb783e19f7c46ad781d853b650f4cef1c3f2b1b07dd112afe1fc278bc73020 + md5: 63ff2bf400dde4fad0bed56debee5c16 depends: - - __glibc >=2.17,<3.0.a0 - - fontconfig >=2.14.2,<3.0a0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - icu >=75.1,<76.0a0 - - libgcc-ng >=12 - - libglib >=2.80.3,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 - - libstdcxx-ng >=12 - - libxcb >=1.16,<2.0.0a0 - - libzlib >=1.3.1,<2.0a0 - - pixman >=0.43.2,<1.0a0 - - xorg-libice >=1.1.1,<2.0a0 - - xorg-libsm >=1.2.4,<2.0a0 - - xorg-libx11 >=1.8.9,<2.0a0 - - xorg-libxext >=1.3.4,<2.0a0 - - xorg-libxrender >=0.9.11,<0.10.0a0 - - zlib + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + - pixman >=0.44.2,<1.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: LGPL-2.1-only or MPL-1.1 - size: 983604 - timestamp: 1721138900054 -- kind: conda - name: ccache - version: 4.10.1 - build: h065aff2_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ccache-4.10.1-h065aff2_0.conda + size: 1515969 + timestamp: 1733791355894 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ccache-4.10.1-h065aff2_0.conda sha256: 8ca3531bde782746a388f2e6193c090fa6e4afcdf2054f595e33937148560d85 md5: d6b48c138e0c8170a6fe9c136e063540 depends: @@ -2908,34 +2331,13 @@ packages: - libhiredis >=1.0.2,<1.1.0a0 - libstdcxx-ng >=12 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: GPL-3.0-only license_family: GPL size: 627561 timestamp: 1719847277140 -- kind: conda - name: ccache - version: 4.10.1 - build: h65df0e8_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/ccache-4.10.1-h65df0e8_0.conda - sha256: 4a9d911ee678166f9d695c29eb05b4d43d56a771dc67a8572defa412a8cc5f24 - md5: 0a7754851d9dfceee6ac7144498ee61d - depends: - - libhiredis >=1.0.2,<1.1.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - - zstd >=1.5.6,<1.6.0a0 - license: GPL-3.0-only - license_family: GPL - size: 602295 - timestamp: 1719848559509 -- kind: conda - name: ccache - version: 4.10.1 - build: ha3bccff_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ccache-4.10.1-ha3bccff_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ccache-4.10.1-ha3bccff_0.conda sha256: caf797949c8f3f324f44add164d1835719ed925650324632eaa485fa9b36b9d4 md5: 7cd24a038d2727b5e6377975237a6cfa depends: @@ -2943,16 +2345,27 @@ packages: - libhiredis >=1.0.2,<1.1.0a0 - libstdcxx-ng >=12 - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: GPL-3.0-only license_family: GPL size: 638386 timestamp: 1719847291504 -- kind: conda - name: ccache - version: 4.10.1 - build: hbe278c5_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ccache-4.10.1-hbe278c5_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/ccache-4.10.1-hee5fd93_0.conda + sha256: 7927d791d370384e9e359a6a02988e79e134b95d893cb302c9f51a673f6efdc5 + md5: 09898bb80e196695cea9e07402cff215 + depends: + - __osx >=10.13 + - libcxx >=16 + - libhiredis >=1.0.2,<1.1.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 566861 + timestamp: 1719847544674 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ccache-4.10.1-hbe278c5_0.conda sha256: e5448366918dba17580f6efffa93b73224b8d9defe4e2daa5997a34d44fa6688 md5: 16e26332b855b11749dd75e64566d26e depends: @@ -2960,68 +2373,54 @@ packages: - libcxx >=16 - libhiredis >=1.0.2,<1.1.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx license: GPL-3.0-only license_family: GPL size: 512822 timestamp: 1719847491041 -- kind: conda - name: ccache - version: 4.10.1 - build: hee5fd93_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/ccache-4.10.1-hee5fd93_0.conda - sha256: 7927d791d370384e9e359a6a02988e79e134b95d893cb302c9f51a673f6efdc5 - md5: 09898bb80e196695cea9e07402cff215 +- conda: https://conda.anaconda.org/conda-forge/win-64/ccache-4.10.1-h65df0e8_0.conda + sha256: 4a9d911ee678166f9d695c29eb05b4d43d56a771dc67a8572defa412a8cc5f24 + md5: 0a7754851d9dfceee6ac7144498ee61d depends: - - __osx >=10.13 - - libcxx >=16 - libhiredis >=1.0.2,<1.1.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: win license: GPL-3.0-only license_family: GPL - size: 566861 - timestamp: 1719847544674 -- kind: conda - name: cctools - version: '1010.6' - build: h5b2de21_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/cctools-1010.6-h5b2de21_2.conda + size: 602295 + timestamp: 1719848559509 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cctools-1010.6-h5b2de21_2.conda sha256: d34964e81d7f5c94279999a7af2a83677327418543848cd7e80d86f6a6e7cf14 md5: 97f24eeeb3509883a6988894fd7c9bbf depends: - cctools_osx-64 1010.6 hea4301f_2 - ld64 951.9 h0a3eb4e_2 - libllvm17 >=17.0.6,<17.1.0a0 + arch: x86_64 + platform: osx license: APSL-2.0 license_family: Other size: 21119 timestamp: 1732552446390 -- kind: conda - name: cctools - version: '1010.6' - build: hf67d63f_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-1010.6-hf67d63f_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools-1010.6-hf67d63f_2.conda sha256: 5cd748e93968df7a3575f5cd051fb387ca0b1753537374e8c9270d44315186d2 md5: 409225e7241a0099a81ce5fc0f3576d8 depends: - cctools_osx-arm64 1010.6 h623e0ac_2 - ld64 951.9 h39a299f_2 - libllvm17 >=17.0.6,<17.1.0a0 + arch: arm64 + platform: osx license: APSL-2.0 license_family: Other size: 21118 timestamp: 1732552617055 -- kind: conda - name: cctools_osx-64 - version: '1010.6' - build: hea4301f_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-hea4301f_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/cctools_osx-64-1010.6-hea4301f_2.conda sha256: ea6aa87dc44fbee374625e56224b2ebb350e29d68e06ff38642243eb7a5d40cd md5: 70260b63386f080de1aa175dea5d57ac depends: @@ -3036,17 +2435,13 @@ packages: - clang 17.0.* - cctools 1010.6.* - ld64 951.9.* + arch: x86_64 + platform: osx license: APSL-2.0 license_family: Other size: 1120562 timestamp: 1732552416131 -- kind: conda - name: cctools_osx-arm64 - version: '1010.6' - build: h623e0ac_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-1010.6-h623e0ac_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cctools_osx-arm64-1010.6-h623e0ac_2.conda sha256: 1293ba9599964813cd5b7de3ef5b2a34f8c728f04f030add1d2daaa770563651 md5: c667893c4bda0bd15dea9ae36e943c94 depends: @@ -3061,267 +2456,191 @@ packages: - cctools 1010.6.* - ld64 951.9.* - clang 17.0.* + arch: arm64 + platform: osx license: APSL-2.0 license_family: Other size: 1101877 timestamp: 1732552573870 -- kind: conda - name: certifi - version: 2024.8.30 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/certifi-2024.8.30-pyhd8ed1ab_0.conda - sha256: 7020770df338c45ac6b560185956c32f0a5abf4b76179c037f115fc7d687819f - md5: 12f7d00853807b0531775e9be891cb11 - depends: - - python >=3.7 - license: ISC - size: 163752 - timestamp: 1725278204397 -- kind: conda - name: cffi - version: 1.17.1 - build: py312h06ac9bb_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py312h06ac9bb_0.conda - sha256: cba6ea83c4b0b4f5b5dc59cb19830519b28f95d7ebef7c9c5cf1c14843621457 - md5: a861504bbea4161a9170b85d4d2be840 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cffi-1.17.1-py313hfab6e84_0.conda + sha256: 73cd6199b143a8a6cbf733ce124ed57defc1b9a7eab9b10fd437448caf8eaa45 + md5: ce6386a5892ef686d6d680c345c40ad1 depends: - __glibc >=2.17,<3.0.a0 - libffi >=3.4,<4.0a0 - libgcc >=13 - pycparser - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 295514 + timestamp: 1725560706794 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py313h2135053_0.conda + sha256: 59842445337855185bee9d11a6624cf2fad651230496793f7b21d2243f7b4039 + md5: c5506b336622c8972eb38613f7937f26 + depends: + - libffi >=3.4,<4.0a0 + - libgcc >=13 + - pycparser + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 314846 + timestamp: 1725561791533 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py313h49682b3_0.conda + sha256: 660c8f8488f78c500a1bb4a803c31403104b1ee2cabf1476a222a3b8abf5a4d7 + md5: 98afc301e6601a3480f9e0b9f8867ee0 + depends: + - __osx >=10.13 + - libffi >=3.4,<4.0a0 + - pycparser + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 294403 - timestamp: 1725560714366 -- kind: conda - name: cffi - version: 1.17.1 - build: py312h0fad829_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py312h0fad829_0.conda - sha256: 8d91a0d01358b5c3f20297c6c536c5d24ccd3e0c2ddd37f9d0593d0f0070226f - md5: 19a5456f72f505881ba493979777b24e + size: 284540 + timestamp: 1725560667915 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cffi-1.17.1-py313hc845a76_0.conda + sha256: 50650dfa70ccf12b9c4a117d7ef0b41895815bb7328d830d667a6ba3525b60e8 + md5: 6d24d5587a8615db33c961a4ca0a8034 depends: - __osx >=11.0 - libffi >=3.4,<4.0a0 - pycparser - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - size: 281206 - timestamp: 1725560813378 -- kind: conda - name: cffi - version: 1.17.1 - build: py312h4389bb4_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py312h4389bb4_0.conda - sha256: ac007bf5fd56d13e16d95eea036433012f2e079dc015505c8a79efebbad1fcbc - md5: 08310c1a22ef957d537e547f8d484f92 + - python >=3.13.0rc1,<3.14.0a0 + - python >=3.13.0rc1,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 282115 + timestamp: 1725560759157 +- conda: https://conda.anaconda.org/conda-forge/win-64/cffi-1.17.1-py313ha7868ed_0.conda + sha256: b19f581fe423858f1f477c52e10978be324c55ebf2e418308d30d013f4a476ff + md5: 519a29d7ac273f8c165efc0af099da42 depends: - pycparser - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: MIT license_family: MIT - size: 288142 - timestamp: 1725560896359 -- kind: conda - name: cffi - version: 1.17.1 - build: py312hac81daf_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/cffi-1.17.1-py312hac81daf_0.conda - sha256: 1162e3ca039e7ca7c0e78f0a020ed1bde968096841b663e3f393c966eb82f0f0 - md5: 1a256e5581b1099e9295cb84d53db3ea + size: 291828 + timestamp: 1725561211547 +- conda: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_1.conda + sha256: d5696636733b3c301054b948cdd793f118efacce361d9bd4afb57d5980a9064f + md5: 57df494053e17dce2ac3a0b33e1b2a2e depends: - - libffi >=3.4,<4.0a0 - - libgcc >=13 - - pycparser - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.9 license: MIT license_family: MIT - size: 312892 - timestamp: 1725561779888 -- kind: conda - name: cffi - version: 1.17.1 - build: py312hf857d28_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/cffi-1.17.1-py312hf857d28_0.conda - sha256: 94fe49aed25d84997e2630d6e776a75ee2a85bd64f258702c57faa4fe2986902 - md5: 5bbc69b8194fedc2792e451026cac34f + size: 12973 + timestamp: 1734267180483 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clang-17.0.6-default_he371ed4_7.conda + sha256: 0bcc3fa29482ac32847bd5baac89563e285978fdc3f9d0c5d0844d647ecba821 + md5: fd6888f26c44ddb10c9954a2df5765c7 depends: - - __osx >=10.13 - - libffi >=3.4,<4.0a0 - - pycparser - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - size: 282425 - timestamp: 1725560725144 -- kind: conda - name: cfgv - version: 3.3.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/cfgv-3.3.1-pyhd8ed1ab_0.tar.bz2 - sha256: fbc03537a27ef756162c49b1d0608bf7ab12fa5e38ceb8563d6f4859e835ac5c - md5: ebb5f5f7dc4f1a3780ef7ea7738db08c - depends: - - python >=3.6.1 - license: MIT - license_family: MIT - size: 10788 - timestamp: 1629909423398 -- kind: conda - name: charset-normalizer - version: 3.4.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/charset-normalizer-3.4.0-pyhd8ed1ab_0.conda - sha256: 1873ac45ea61f95750cb0b4e5e675d1c5b3def937e80c7eebb19297f76810be8 - md5: a374efa97290b8799046df7c5ca17164 - depends: - - python >=3.7 - license: MIT - license_family: MIT - size: 47314 - timestamp: 1728479405343 -- kind: conda - name: clang - version: 17.0.6 - build: default_h360f5da_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/clang-17.0.6-default_h360f5da_7.conda + - clang-17 17.0.6 default_hb173f14_7 + arch: x86_64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 23890 + timestamp: 1725506037908 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-17.0.6-default_h360f5da_7.conda sha256: 3caeb933e74561c834074ef1617aa721c10e6b08c1fed9d5180c82a9ba18b5f2 md5: c98bdbd4985530fac68ea4831d053ba1 depends: - clang-17 17.0.6 default_h146c034_7 + arch: arm64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache size: 24105 timestamp: 1725505775351 -- kind: conda - name: clang - version: 17.0.6 - build: default_he371ed4_7 - build_number: 7 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/clang-17.0.6-default_he371ed4_7.conda - sha256: 0bcc3fa29482ac32847bd5baac89563e285978fdc3f9d0c5d0844d647ecba821 - md5: fd6888f26c44ddb10c9954a2df5765c7 +- conda: https://conda.anaconda.org/conda-forge/win-64/clang-19.1.6-default_hec7ea82_0.conda + sha256: f6edab45ea6bcacac7f5e4fc96e1f35c710aad5b25b8eacf530052c40fe8fe7b + md5: 03c76e6b2f3d0b2ef296d5a507520351 depends: - - clang-17 17.0.6 default_hb173f14_7 - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - size: 23890 - timestamp: 1725506037908 -- kind: conda - name: clang - version: 19.1.4 - build: default_hec7ea82_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/clang-19.1.4-default_hec7ea82_0.conda - sha256: d3684ca2c6f51b32c1f036f51f7da93730950b4a6fe5006958a85c7fd1d6c98f - md5: 5b988384261af7152a7f3199994d2bb5 - depends: - - clang-19 19.1.4 default_hec7ea82_0 + - clang-19 19.1.6 default_hec7ea82_0 - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: win license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 102379258 - timestamp: 1732093042609 -- kind: conda - name: clang-17 - version: 17.0.6 - build: default_h146c034_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/clang-17-17.0.6-default_h146c034_7.conda - sha256: f9e40e5402ab78543553e7bc0437dfeed42d43f486395b66dd55ea0fd819b789 - md5: 585064b6856cb3e719343e3362ea828b + size: 102385839 + timestamp: 1734512129865 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clang-17-17.0.6-default_hb173f14_7.conda + sha256: 95cb7cc541e45757b2cc586b1db6fb2f27796316723fe07c8c225f7ea12f6c9b + md5: 809e36447b1bfb87ed1b7fb46339561a depends: - - __osx >=11.0 - - libclang-cpp17 17.0.6 default_h146c034_7 + - __osx >=10.13 + - libclang-cpp17 17.0.6 default_hb173f14_7 - libcxx >=17.0.6 - libllvm17 >=17.0.6,<17.1.0a0 constrains: + - llvm-tools 17.0.6 - clangxx 17.0.6 - clang-tools 17.0.6 - clangdev 17.0.6 - - llvm-tools 17.0.6 + arch: x86_64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 715930 - timestamp: 1725505694198 -- kind: conda - name: clang-17 - version: 17.0.6 - build: default_hb173f14_7 - build_number: 7 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/clang-17-17.0.6-default_hb173f14_7.conda - sha256: 95cb7cc541e45757b2cc586b1db6fb2f27796316723fe07c8c225f7ea12f6c9b - md5: 809e36447b1bfb87ed1b7fb46339561a + size: 719083 + timestamp: 1725505951220 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang-17-17.0.6-default_h146c034_7.conda + sha256: f9e40e5402ab78543553e7bc0437dfeed42d43f486395b66dd55ea0fd819b789 + md5: 585064b6856cb3e719343e3362ea828b depends: - - __osx >=10.13 - - libclang-cpp17 17.0.6 default_hb173f14_7 + - __osx >=11.0 + - libclang-cpp17 17.0.6 default_h146c034_7 - libcxx >=17.0.6 - libllvm17 >=17.0.6,<17.1.0a0 constrains: - - llvm-tools 17.0.6 - clangxx 17.0.6 - clang-tools 17.0.6 - clangdev 17.0.6 + - llvm-tools 17.0.6 + arch: arm64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 719083 - timestamp: 1725505951220 -- kind: conda - name: clang-19 - version: 19.1.4 - build: default_hec7ea82_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/clang-19-19.1.4-default_hec7ea82_0.conda - sha256: 6a6f9fc5fdc900135e1344d0054b14d546d9c3a8a7f041023bd5280383161c8a - md5: 3d1ccddd2a29ca7ba4e8c51a30641763 + size: 715930 + timestamp: 1725505694198 +- conda: https://conda.anaconda.org/conda-forge/win-64/clang-19-19.1.6-default_hec7ea82_0.conda + sha256: 9a1651f4eee0c48d9bc41fd701105e8efd3c44fce5a550ac535623bcaabbe213 + md5: a56ed2f6d7c33e6d71ec159c599c8e23 depends: - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: win license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 34859714 - timestamp: 1732092903320 -- kind: conda - name: clang_impl_osx-64 - version: 17.0.6 - build: h1af8efd_23 - build_number: 23 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-17.0.6-h1af8efd_23.conda + size: 34849635 + timestamp: 1734511951099 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clang_impl_osx-64-17.0.6-h1af8efd_23.conda sha256: 2b8df6446dc59a8f6be800891f29fe3b5ec404a98dcd47b6a78e3f379b9079f7 md5: 90132dd643d402883e4fbd8f0527e152 depends: @@ -3330,17 +2649,13 @@ packages: - compiler-rt 17.0.6.* - ld64_osx-64 - llvm-tools 17.0.6.* + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD size: 17880 timestamp: 1731984936767 -- kind: conda - name: clang_impl_osx-arm64 - version: 17.0.6 - build: he47c785_23 - build_number: 23 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/clang_impl_osx-arm64-17.0.6-he47c785_23.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_impl_osx-arm64-17.0.6-he47c785_23.conda sha256: 7a5999645f66f12f8ff9f07ead73d3552f79fff09675487ec1f4f087569587e1 md5: 519e4d9eb59dd0a1484e509dcc789217 depends: @@ -3349,79 +2664,59 @@ packages: - compiler-rt 17.0.6.* - ld64_osx-arm64 - llvm-tools 17.0.6.* + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 17965 timestamp: 1731984992637 -- kind: conda - name: clang_osx-64 - version: 17.0.6 - build: h7e5c614_23 - build_number: 23 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-17.0.6-h7e5c614_23.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/clang_osx-64-17.0.6-h7e5c614_23.conda sha256: 3d17b28357a97780ed6bb32caac7fb2df170540e07e1a233f0f8b18b7c1fc641 md5: 615b86de1eb0162b7fa77bb8cbf57f1d depends: - clang_impl_osx-64 17.0.6 h1af8efd_23 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD size: 21169 timestamp: 1731984940250 -- kind: conda - name: clang_osx-arm64 - version: 17.0.6 - build: h07b0088_23 - build_number: 23 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/clang_osx-arm64-17.0.6-h07b0088_23.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clang_osx-arm64-17.0.6-h07b0088_23.conda sha256: ccafb62b45d71f646f0ca925fc7342d093fe5ea17ceeb15b84f1c277fc716295 md5: cf5bbfc8b558c41d2a4ba17f5cabb48c depends: - clang_impl_osx-arm64 17.0.6 he47c785_23 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 21177 timestamp: 1731984996665 -- kind: conda - name: clangxx - version: 17.0.6 - build: default_h360f5da_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx-17.0.6-default_h360f5da_7.conda - sha256: 73a87fe4a31494cdc5d74aacf9d08f560e4468795547f06290ee6a7bb128f61c - md5: 0bb5cea65ab3457812707537603a3619 - depends: - - clang 17.0.6 default_h360f5da_7 - - libcxx-devel 17.0.6.* - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - size: 24168 - timestamp: 1725505786435 -- kind: conda - name: clangxx - version: 17.0.6 - build: default_he371ed4_7 - build_number: 7 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/clangxx-17.0.6-default_he371ed4_7.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx-17.0.6-default_he371ed4_7.conda sha256: 8f7e1d2759b5bd33577054cd72631dc7a4154e7a2b92880040b37c5be0a38255 md5: 4f110486af1272f0d4dee6adc5041fbf depends: - clang 17.0.6 default_he371ed4_7 - libcxx-devel 17.0.6.* + arch: x86_64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache size: 23975 timestamp: 1725506051851 -- kind: conda - name: clangxx_impl_osx-64 - version: 17.0.6 - build: hc3430b7_23 - build_number: 23 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-17.0.6-hc3430b7_23.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx-17.0.6-default_h360f5da_7.conda + sha256: 73a87fe4a31494cdc5d74aacf9d08f560e4468795547f06290ee6a7bb128f61c + md5: 0bb5cea65ab3457812707537603a3619 + depends: + - clang 17.0.6 default_h360f5da_7 + - libcxx-devel 17.0.6.* + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 24168 + timestamp: 1725505786435 +- conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_impl_osx-64-17.0.6-hc3430b7_23.conda sha256: 32d450b4aa7c74758b6a0f51f7e7037638e8b5b871f85879f1a74227564ddf69 md5: b724718bfe53f93e782fe944ec58029e depends: @@ -3429,17 +2724,13 @@ packages: - clangxx 17.0.6.* - libcxx >=17 - libllvm17 >=17.0.6,<17.1.0a0 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD size: 17925 timestamp: 1731984956864 -- kind: conda - name: clangxx_impl_osx-arm64 - version: 17.0.6 - build: h50f59cd_23 - build_number: 23 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_impl_osx-arm64-17.0.6-h50f59cd_23.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_impl_osx-arm64-17.0.6-h50f59cd_23.conda sha256: 7b975e2a1e141769ba4bc45792d145c68a72923465355d3f83ad60450529e01f md5: d086b99e198e21b3b29d2847cade1fce depends: @@ -3447,142 +2738,119 @@ packages: - clangxx 17.0.6.* - libcxx >=17 - libllvm17 >=17.0.6,<17.1.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 18005 timestamp: 1731985015782 -- kind: conda - name: clangxx_osx-64 - version: 17.0.6 - build: h7e5c614_23 - build_number: 23 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-17.0.6-h7e5c614_23.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/clangxx_osx-64-17.0.6-h7e5c614_23.conda sha256: 08e758458bc99394b108ed051636149f9bc8fafcf059758ac3d406194273d1c0 md5: 78039b25bfcffb920407522839555289 depends: - clang_osx-64 17.0.6 h7e5c614_23 - clangxx_impl_osx-64 17.0.6 hc3430b7_23 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD size: 19559 timestamp: 1731984961996 -- kind: conda - name: clangxx_osx-arm64 - version: 17.0.6 - build: h07b0088_23 - build_number: 23 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_osx-arm64-17.0.6-h07b0088_23.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/clangxx_osx-arm64-17.0.6-h07b0088_23.conda sha256: 58c65adb2e03209ec1dcd926c3256a3a188d6cfa23a89b7fcaa6c9ff56a0f364 md5: 743758f55670a6a9a0c93010cd497801 depends: - clang_osx-arm64 17.0.6 h07b0088_23 - clangxx_impl_osx-arm64 17.0.6 h50f59cd_23 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 19581 timestamp: 1731985020343 -- kind: conda - name: cmake - version: 3.28.3 - build: h50fd54c_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/cmake-3.28.3-h50fd54c_0.conda - sha256: 699d87d3d5e9d9a9b7d13775cee9e7eeaa1f234ac9609de2b35b3f5dd88ecb16 - md5: 2a4cfda87ed222d1b2c243100b76d37f +- conda: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.28.3-hcfe8598_0.conda + sha256: e6a629de33e49f2bbf624f26b3925ffd87aba6f4dda7ea70cfe05c11b846fb17 + md5: d41e72d041b9b12a3596cd08099f127c depends: - bzip2 >=1.0.8,<2.0a0 - libcurl >=8.5.0,<9.0a0 - - libcxx >=16 - libexpat >=2.5.0,<3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 - libuv >=1.46.0,<2.0a0 - libzlib >=1.2.13,<2.0.0a0 - ncurses >=6.4,<7.0a0 - rhash >=1.4.4,<2.0a0 - xz >=5.2.6,<6.0a0 - zstd >=1.5.5,<1.6.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 15470657 - timestamp: 1707205774880 -- kind: conda - name: cmake - version: 3.28.3 - build: h7c85d92_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/cmake-3.28.3-h7c85d92_0.conda - sha256: d612a80d8bb8e624f645399f69793905c9817e9812111699d8dbec3757d50d71 - md5: 265ed3e8dc130e1b51ef660caeef4366 + size: 18756618 + timestamp: 1707204079226 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cmake-3.28.3-hef020d8_0.conda + sha256: ce446c32f44b8207ccf12b83b42ad4a18423faa5cf02acab801eafc7b4c7e2c7 + md5: ac4288215254f814d2d4007447618953 depends: - bzip2 >=1.0.8,<2.0a0 - libcurl >=8.5.0,<9.0a0 - - libcxx >=16 - libexpat >=2.5.0,<3.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 - libuv >=1.46.0,<2.0a0 - libzlib >=1.2.13,<2.0.0a0 - ncurses >=6.4,<7.0a0 - rhash >=1.4.4,<2.0a0 - xz >=5.2.6,<6.0a0 - zstd >=1.5.5,<1.6.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 16566933 - timestamp: 1707205565592 -- kind: conda - name: cmake - version: 3.28.3 - build: hcfe8598_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cmake-3.28.3-hcfe8598_0.conda - sha256: e6a629de33e49f2bbf624f26b3925ffd87aba6f4dda7ea70cfe05c11b846fb17 - md5: d41e72d041b9b12a3596cd08099f127c + size: 18034534 + timestamp: 1707204079631 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cmake-3.28.3-h7c85d92_0.conda + sha256: d612a80d8bb8e624f645399f69793905c9817e9812111699d8dbec3757d50d71 + md5: 265ed3e8dc130e1b51ef660caeef4366 depends: - bzip2 >=1.0.8,<2.0a0 - libcurl >=8.5.0,<9.0a0 + - libcxx >=16 - libexpat >=2.5.0,<3.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - libuv >=1.46.0,<2.0a0 - libzlib >=1.2.13,<2.0.0a0 - ncurses >=6.4,<7.0a0 - rhash >=1.4.4,<2.0a0 - xz >=5.2.6,<6.0a0 - zstd >=1.5.5,<1.6.0a0 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 18756618 - timestamp: 1707204079226 -- kind: conda - name: cmake - version: 3.28.3 - build: hef020d8_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/cmake-3.28.3-hef020d8_0.conda - sha256: ce446c32f44b8207ccf12b83b42ad4a18423faa5cf02acab801eafc7b4c7e2c7 - md5: ac4288215254f814d2d4007447618953 + size: 16566933 + timestamp: 1707205565592 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cmake-3.28.3-h50fd54c_0.conda + sha256: 699d87d3d5e9d9a9b7d13775cee9e7eeaa1f234ac9609de2b35b3f5dd88ecb16 + md5: 2a4cfda87ed222d1b2c243100b76d37f depends: - bzip2 >=1.0.8,<2.0a0 - libcurl >=8.5.0,<9.0a0 + - libcxx >=16 - libexpat >=2.5.0,<3.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - libuv >=1.46.0,<2.0a0 - libzlib >=1.2.13,<2.0.0a0 - ncurses >=6.4,<7.0a0 - rhash >=1.4.4,<2.0a0 - xz >=5.2.6,<6.0a0 - zstd >=1.5.5,<1.6.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 18034534 - timestamp: 1707204079631 -- kind: conda - name: cmake - version: 3.28.3 - build: hf0feee3_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/cmake-3.28.3-hf0feee3_0.conda + size: 15470657 + timestamp: 1707205774880 +- conda: https://conda.anaconda.org/conda-forge/win-64/cmake-3.28.3-hf0feee3_0.conda sha256: c4a48803d3621339a91eb86bfd28667afb59403aa96aa705b8b158cd0211ebfd md5: 8ac20a98e2d1d3afa798b985278d18d7 depends: @@ -3595,36 +2863,32 @@ packages: - vc14_runtime >=14.29.30139 - xz >=5.2.6,<6.0a0 - zstd >=1.5.5,<1.6.0a0 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD size: 13826709 timestamp: 1707205267813 -- kind: conda - name: coin3d - version: 4.0.3 - build: h192c3d0_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/coin3d-4.0.3-h192c3d0_2.conda - sha256: 87c3d3eee8c6323a7d0a972110b2439836ce1d6605ea5717d70a53f1ef0a245c - md5: 4e5d643a1995b3ab856503e6c653e95c +- conda: https://conda.anaconda.org/conda-forge/linux-64/coin3d-4.0.3-hd74d64a_2.conda + sha256: 953d004ee7a2be78c717cecaf5bb959fea1faefb86106322c19c06dafa3c0e12 + md5: b3addb85bc05327f73bf69a9ed73b890 depends: + - __glibc >=2.17,<3.0.a0 - expat - libexpat >=2.6.3,<3.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - libgcc >=13 + - libgl >=1.7.0,<2.0a0 + - libglu + - libstdcxx >=13 + - xorg-libxi >=1.8.2,<2.0a0 + - xorg-libxt >=1.3.0,<2.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 3012993 - timestamp: 1728504053172 -- kind: conda - name: coin3d - version: 4.0.3 - build: h411181d_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/coin3d-4.0.3-h411181d_2.conda + size: 3247920 + timestamp: 1728502926513 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/coin3d-4.0.3-h411181d_2.conda sha256: 3e4d579ffc07c0f1d8efa3de0f785e31c1a411691f63fe9fba7c43fb7de4a893 md5: 22b408993640d52937a14c554ea3e588 depends: @@ -3636,17 +2900,27 @@ packages: - libstdcxx >=13 - xorg-libxi >=1.8.2,<2.0a0 - xorg-libxt >=1.3.0,<2.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 3070895 timestamp: 1728503092503 -- kind: conda - name: coin3d - version: 4.0.3 - build: h705ab75_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/coin3d-4.0.3-h705ab75_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/coin3d-4.0.3-h9b6ce5f_2.conda + sha256: 0b2ab0b12925ffdbe20659817173d19373cf152890be56e8c1f0e8cdc2d89b5d + md5: 025850bb0c18049d92f20e2c2b31a403 + depends: + - __osx >=10.13 + - expat + - libcxx >=17 + - libexpat >=2.6.3,<3.0a0 + arch: x86_64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 2405105 + timestamp: 1728503297185 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/coin3d-4.0.3-h705ab75_2.conda sha256: 6b54ae5e50dd2bc11a1a745af2c13903edccc6adbda84ce4c1854ca5c26c6e62 md5: f8fcb03c7b397831923ea47ca27e3e0e depends: @@ -3654,73 +2928,37 @@ packages: - expat - libcxx >=17 - libexpat >=2.6.3,<3.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 2266738 timestamp: 1728503278809 -- kind: conda - name: coin3d - version: 4.0.3 - build: h9b6ce5f_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/coin3d-4.0.3-h9b6ce5f_2.conda - sha256: 0b2ab0b12925ffdbe20659817173d19373cf152890be56e8c1f0e8cdc2d89b5d - md5: 025850bb0c18049d92f20e2c2b31a403 +- conda: https://conda.anaconda.org/conda-forge/win-64/coin3d-4.0.3-h192c3d0_2.conda + sha256: 87c3d3eee8c6323a7d0a972110b2439836ce1d6605ea5717d70a53f1ef0a245c + md5: 4e5d643a1995b3ab856503e6c653e95c depends: - - __osx >=10.13 - expat - - libcxx >=17 - libexpat >=2.6.3,<3.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD - size: 2405105 - timestamp: 1728503297185 -- kind: conda - name: coin3d - version: 4.0.3 - build: hd74d64a_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/coin3d-4.0.3-hd74d64a_2.conda - sha256: 953d004ee7a2be78c717cecaf5bb959fea1faefb86106322c19c06dafa3c0e12 - md5: b3addb85bc05327f73bf69a9ed73b890 + size: 3012993 + timestamp: 1728504053172 +- conda: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_1.conda + sha256: ab29d57dc70786c1269633ba3dff20288b81664d3ff8d21af995742e2bb03287 + md5: 962b9857ee8e7018c22f2776ffa0b2d7 depends: - - __glibc >=2.17,<3.0.a0 - - expat - - libexpat >=2.6.3,<3.0a0 - - libgcc >=13 - - libgl >=1.7.0,<2.0a0 - - libglu - - libstdcxx >=13 - - xorg-libxi >=1.8.2,<2.0a0 - - xorg-libxt >=1.3.0,<2.0a0 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 3247920 - timestamp: 1728502926513 -- kind: conda - name: colorama - version: 0.4.6 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/colorama-0.4.6-pyhd8ed1ab_0.tar.bz2 - sha256: 2c1b2e9755ce3102bca8d69e8f26e4f087ece73f50418186aee7c74bef8e1698 - md5: 3faab06a954c2a04039983f2c4a50d99 - depends: - - python >=3.7 - license: BSD-3-Clause - license_family: BSD - size: 25170 - timestamp: 1666700778190 -- kind: conda - name: compiler-rt - version: 17.0.6 - build: h1020d70_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-17.0.6-h1020d70_2.conda + size: 27011 + timestamp: 1733218222191 +- conda: https://conda.anaconda.org/conda-forge/osx-64/compiler-rt-17.0.6-h1020d70_2.conda sha256: 463107bc5ac7ebe925cded4412fb7158bd2c1a2b062a4a2e691aab8b1ff6ccf3 md5: be4cb4531d4cee9df94bf752455d68de depends: @@ -3728,17 +2966,13 @@ packages: - clang 17.0.6.* - clangxx 17.0.6.* - compiler-rt_osx-64 17.0.6.* + arch: x86_64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: APACHE size: 94907 timestamp: 1725251294237 -- kind: conda - name: compiler-rt - version: 17.0.6 - build: h856b3c1_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt-17.0.6-h856b3c1_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/compiler-rt-17.0.6-h856b3c1_2.conda sha256: 91f4a6b80b7802432146a399944c20410e058dfb57ca6d738c0affb79cbdebbb md5: 2d00ff8e98c163de45a7c85774094012 depends: @@ -3746,36 +2980,28 @@ packages: - clang 17.0.6.* - clangxx 17.0.6.* - compiler-rt_osx-arm64 17.0.6.* + arch: arm64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: APACHE size: 94878 timestamp: 1725251190741 -- kind: conda - name: compiler-rt - version: 19.1.4 - build: hc790b64_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/compiler-rt-19.1.4-hc790b64_0.conda - sha256: 1b55232b68f020bb132be00d3e58acd963b22b22ce01f483eb76a41813b1a3c5 - md5: d2acd758807721294f394cdf351ba8e1 - depends: - - clang 19.1.4.* - - compiler-rt_win-64 19.1.4.* +- conda: https://conda.anaconda.org/conda-forge/win-64/compiler-rt-19.1.6-hc790b64_0.conda + sha256: ba6b7849b8ba1cc1c86af700e861365dd49b4cac4c28bd95d24234d036316bd0 + md5: ca2c1a5158a3c25aa922fae4edac245b + depends: + - clang 19.1.6.* + - compiler-rt_win-64 19.1.6.* - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 5165186 - timestamp: 1732097803277 -- kind: conda - name: compiler-rt_osx-64 - version: 17.0.6 - build: hf2b8a54_2 - build_number: 2 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-17.0.6-hf2b8a54_2.conda + size: 4735511 + timestamp: 1734517875624 +- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-64-17.0.6-hf2b8a54_2.conda sha256: bab564aff76e0c55a681f687dffb64282d643aa501c6848789071b1e29fdbce1 md5: 98e6d83e484e42f6beebba4276e38145 depends: @@ -3787,14 +3013,7 @@ packages: license_family: APACHE size: 10450866 timestamp: 1725251223089 -- kind: conda - name: compiler-rt_osx-arm64 - version: 17.0.6 - build: h832e737_2 - build_number: 2 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-arm64-17.0.6-h832e737_2.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_osx-arm64-17.0.6-h832e737_2.conda sha256: 74d63f7f91a9482262d80490fafd39275121f4cb273f293e7d9fe91934837666 md5: 58fd1fa30d8b0795f33a7e79893b11cc depends: @@ -3806,639 +3025,244 @@ packages: license_family: APACHE size: 10369238 timestamp: 1725251155195 -- kind: conda - name: compiler-rt_win-64 - version: 19.1.4 - build: hc790b64_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_win-64-19.1.4-hc790b64_0.conda - sha256: 1fc64b173a209b352d5f757c2947101b18d13170ab1f63c818e80a0b78a1f12d - md5: a9b1994c2bc3a1bb6a7e61b48ea5489d - depends: - - clang 19.1.4.* +- conda: https://conda.anaconda.org/conda-forge/noarch/compiler-rt_win-64-19.1.6-hc790b64_0.conda + sha256: 51cca2e324c8c7d46502564eef042567cf639a00178e7abd6c81803aaa05d5ac + md5: 8f5cd6c561e5f4939ad69a17efce6200 + depends: + - clang 19.1.6.* constrains: - - compiler-rt 19.1.4 - - clangxx 19.1.4 + - compiler-rt 19.1.6 + - clangxx 19.1.6 license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 4726302 - timestamp: 1732097766626 -- kind: conda - name: compilers - version: 1.8.0 - build: h57928b3_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/compilers-1.8.0-h57928b3_1.conda - sha256: db941a5b798ffa6cfbe4fbead9c0ef9726bca24139a23cb1a936d598a35e5eb1 - md5: d4ab110d3d6d840cbddc2b9b89aaafe6 - depends: - - c-compiler 1.8.0 hcfcfb64_1 - - cxx-compiler 1.8.0 h91493d7_1 - - fortran-compiler 1.8.0 h95e3450_1 - license: BSD-3-Clause - license_family: BSD - size: 7502 - timestamp: 1728985392716 -- kind: conda - name: compilers - version: 1.8.0 - build: h694c41f_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/compilers-1.8.0-h694c41f_1.conda - sha256: 6ba15570dde2258ae2682a1ca2124c9797f668ea227fa5a3433e09d9621f7535 - md5: d9d0a18b6b3e96409c4a5cf76d513a05 + size: 4597816 + timestamp: 1734517801769 +- conda: https://conda.anaconda.org/conda-forge/linux-64/compilers-1.8.0-ha770c72_1.conda + sha256: d2fa2f8cb3df79f543758c8e288f1a74a2acca57245f1e03919bffa3e40aad2d + md5: 061e111d02f33a99548f0de07169d9fb depends: - - c-compiler 1.8.0 hfc4bf79_1 - - cxx-compiler 1.8.0 h385f146_1 - - fortran-compiler 1.8.0 h33d1f46_1 + - c-compiler 1.8.0 h2b85faf_1 + - cxx-compiler 1.8.0 h1a2810e_1 + - fortran-compiler 1.8.0 h36df796_1 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 7040 - timestamp: 1728985481409 -- kind: conda - name: compilers - version: 1.8.0 - build: h8af1aa0_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/compilers-1.8.0-h8af1aa0_1.conda + size: 6932 + timestamp: 1728985303287 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/compilers-1.8.0-h8af1aa0_1.conda sha256: 164cbfcb9d15a566540ab7d198a2ddfe194a3c1c9c459b7659593128059183a6 md5: 78f10b0d30c7ccd5a18a09a542373ab7 depends: - c-compiler 1.8.0 h6561dab_1 - cxx-compiler 1.8.0 heb6c788_1 - fortran-compiler 1.8.0 h25a59a9_1 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 6996 timestamp: 1728985293799 -- kind: conda - name: compilers - version: 1.8.0 - build: ha770c72_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/compilers-1.8.0-ha770c72_1.conda - sha256: d2fa2f8cb3df79f543758c8e288f1a74a2acca57245f1e03919bffa3e40aad2d - md5: 061e111d02f33a99548f0de07169d9fb +- conda: https://conda.anaconda.org/conda-forge/osx-64/compilers-1.8.0-h694c41f_1.conda + sha256: 6ba15570dde2258ae2682a1ca2124c9797f668ea227fa5a3433e09d9621f7535 + md5: d9d0a18b6b3e96409c4a5cf76d513a05 depends: - - c-compiler 1.8.0 h2b85faf_1 - - cxx-compiler 1.8.0 h1a2810e_1 - - fortran-compiler 1.8.0 h36df796_1 + - c-compiler 1.8.0 hfc4bf79_1 + - cxx-compiler 1.8.0 h385f146_1 + - fortran-compiler 1.8.0 h33d1f46_1 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 6932 - timestamp: 1728985303287 -- kind: conda - name: compilers - version: 1.8.0 - build: hce30654_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/compilers-1.8.0-hce30654_1.conda + size: 7040 + timestamp: 1728985481409 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/compilers-1.8.0-hce30654_1.conda sha256: ca2a8763312bfa2871dc168bab39887c053b11fd82914b23ccc21753dc786b2e md5: 2bd6c281de595804d359d21e0aa869eb depends: - c-compiler 1.8.0 hf48404e_1 - cxx-compiler 1.8.0 h18dbf2f_1 - fortran-compiler 1.8.0 hc3477c4_1 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 7041 timestamp: 1728985419063 -- kind: conda - name: conda - version: 24.11.0 - build: py312h2e8e312_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/conda-24.11.0-py312h2e8e312_0.conda - sha256: bbb4792ab7a67d33ac3001754de1c9a9e9b1a8b4e212764b3e547af7c7cbc26c - md5: b9181ccbab5b594123c480a8454f467e - depends: - - archspec >=0.2.3 - - boltons >=23.0.0 - - charset-normalizer - - conda-libmamba-solver >=23.11.0 - - conda-package-handling >=2.2.0 - - distro >=1.5.0 - - frozendict >=2.4.2 - - jsonpatch >=1.32 - - menuinst >=2 - - packaging >=23.0 - - platformdirs >=3.10.0 - - pluggy >=1.0.0 - - pycosat >=0.6.3 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - requests >=2.28.0,<3 - - ruamel.yaml >=0.11.14,<0.19 - - setuptools >=60.0.0 - - tqdm >=4 - - truststore >=0.8.0 - - zstandard >=0.19.0 - constrains: - - conda-env >=2.6 - - conda-content-trust >=0.1.1 - - conda-build >=24.3 - license: BSD-3-Clause - license_family: BSD - size: 1175669 - timestamp: 1732552908447 -- kind: conda - name: conda - version: 24.11.0 - build: py312h7900ff3_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/conda-24.11.0-py312h7900ff3_0.conda - sha256: 7e0403f51c2f18dd03f7369301fbc99ca918ad78c5b166a5fe80159bd2318c68 - md5: 94274d4c4733bb708fa2b4e257620d40 - depends: - - archspec >=0.2.3 - - boltons >=23.0.0 - - charset-normalizer - - conda-libmamba-solver >=23.11.0 - - conda-package-handling >=2.2.0 - - distro >=1.5.0 - - frozendict >=2.4.2 - - jsonpatch >=1.32 - - menuinst >=2 - - packaging >=23.0 - - platformdirs >=3.10.0 - - pluggy >=1.0.0 - - pycosat >=0.6.3 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - requests >=2.28.0,<3 - - ruamel.yaml >=0.11.14,<0.19 - - setuptools >=60.0.0 - - tqdm >=4 - - truststore >=0.8.0 - - zstandard >=0.19.0 - constrains: - - conda-build >=24.3 - - conda-content-trust >=0.1.1 - - conda-env >=2.6 - license: BSD-3-Clause - license_family: BSD - size: 1171248 - timestamp: 1732552698240 -- kind: conda - name: conda - version: 24.11.0 - build: py312h81bd7bf_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/conda-24.11.0-py312h81bd7bf_0.conda - sha256: 15d613bcb532e9ba4247b299531637a3cbd4fd4cea565be2859c924d758db714 - md5: fc731f726c139dbe79a54da4334b2180 - depends: - - archspec >=0.2.3 - - boltons >=23.0.0 - - charset-normalizer - - conda-libmamba-solver >=23.11.0 - - conda-package-handling >=2.2.0 - - distro >=1.5.0 - - frozendict >=2.4.2 - - jsonpatch >=1.32 - - menuinst >=2 - - packaging >=23.0 - - platformdirs >=3.10.0 - - pluggy >=1.0.0 - - pycosat >=0.6.3 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - requests >=2.28.0,<3 - - ruamel.yaml >=0.11.14,<0.19 - - setuptools >=60.0.0 - - tqdm >=4 - - truststore >=0.8.0 - - zstandard >=0.19.0 - constrains: - - conda-env >=2.6 - - conda-build >=24.3 - - conda-content-trust >=0.1.1 - license: BSD-3-Clause - license_family: BSD - size: 1173448 - timestamp: 1732552796088 -- kind: conda - name: conda - version: 24.11.0 - build: py312h996f985_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/conda-24.11.0-py312h996f985_0.conda - sha256: ccd615e26c5fbca7363f10be86579599da35cf170ba5abb1265247d69b62f2a6 - md5: a8e0f4213d8fe4ca981954153dd4acd6 - depends: - - archspec >=0.2.3 - - boltons >=23.0.0 - - charset-normalizer - - conda-libmamba-solver >=23.11.0 - - conda-package-handling >=2.2.0 - - distro >=1.5.0 - - frozendict >=2.4.2 - - jsonpatch >=1.32 - - menuinst >=2 - - packaging >=23.0 - - platformdirs >=3.10.0 - - pluggy >=1.0.0 - - pycosat >=0.6.3 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - requests >=2.28.0,<3 - - ruamel.yaml >=0.11.14,<0.19 - - setuptools >=60.0.0 - - tqdm >=4 - - truststore >=0.8.0 - - zstandard >=0.19.0 - constrains: - - conda-build >=24.3 - - conda-env >=2.6 - - conda-content-trust >=0.1.1 - license: BSD-3-Clause - license_family: BSD - size: 1171762 - timestamp: 1732552839523 -- kind: conda - name: conda - version: 24.11.0 - build: py312hb401068_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/conda-24.11.0-py312hb401068_0.conda - sha256: f644442d2be09101db7172d9116198709f1b40f4e1ccbfd713e43c73cb11ace9 - md5: 59375bbe358ad0b651275ee1f9c2fff2 - depends: - - archspec >=0.2.3 - - boltons >=23.0.0 - - charset-normalizer - - conda-libmamba-solver >=23.11.0 - - conda-package-handling >=2.2.0 - - distro >=1.5.0 - - frozendict >=2.4.2 - - jsonpatch >=1.32 - - menuinst >=2 - - packaging >=23.0 - - platformdirs >=3.10.0 - - pluggy >=1.0.0 - - pycosat >=0.6.3 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - requests >=2.28.0,<3 - - ruamel.yaml >=0.11.14,<0.19 - - setuptools >=60.0.0 - - tqdm >=4 - - truststore >=0.8.0 - - zstandard >=0.19.0 - constrains: - - conda-env >=2.6 - - conda-content-trust >=0.1.1 - - conda-build >=24.3 - license: BSD-3-Clause - license_family: BSD - size: 1173181 - timestamp: 1732643902656 -- kind: conda - name: conda-devenv - version: 3.4.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/conda-devenv-3.4.0-pyhd8ed1ab_0.conda - sha256: d04bf1b985fa533a9dbcf147c00cfde676b7211ca66f1407a695eea12446e9ec - md5: 9c47ded5fe42d6edf315ed409256e215 - depends: - - colorama - - conda >=4.3 - - jinja2 - - packaging - - python >=3.10 - - pyyaml - - typing_extensions - license: MIT - license_family: MIT - size: 34429 - timestamp: 1721671857601 -- kind: conda - name: conda-libmamba-solver - version: 24.11.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/conda-libmamba-solver-24.11.0-pyhd8ed1ab_0.conda - sha256: d0a9884a12a9a451831ea56c5fc98e40f502f320b86e8a62b12dc446d08ab867 - md5: 505cb57bc3ae15870dd016764ac6230e - depends: - - boltons >=23.0.0 - - conda >=23.7.4 - - libmambapy >=2.0.0 - - python >=3.9 - license: BSD-3-Clause - license_family: BSD - size: 40864 - timestamp: 1733141460696 -- kind: conda - name: conda-package-handling - version: 2.4.0 - build: pyh7900ff3_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/conda-package-handling-2.4.0-pyh7900ff3_0.conda - sha256: b3a315523703abd198e1c2ff1ea84b30b270a301f8071d4381b1f575e790d049 - md5: 686fb26b6fd490b533ec580da90b2af8 +- conda: https://conda.anaconda.org/conda-forge/win-64/compilers-1.8.0-h57928b3_1.conda + sha256: db941a5b798ffa6cfbe4fbead9c0ef9726bca24139a23cb1a936d598a35e5eb1 + md5: d4ab110d3d6d840cbddc2b9b89aaafe6 depends: - - conda-package-streaming >=0.9.0 - - python >=3.8 - - zstandard >=0.15 + - c-compiler 1.8.0 hcfcfb64_1 + - cxx-compiler 1.8.0 h91493d7_1 + - fortran-compiler 1.8.0 h95e3450_1 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD - size: 257763 - timestamp: 1729007114391 -- kind: conda - name: conda-package-streaming - version: 0.11.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/conda-package-streaming-0.11.0-pyhd8ed1ab_0.conda - sha256: 685b06951e563514a9b158e82d3d44faf102f0770af42e4d08347a6eec3d48ea - md5: bc9533d8616a97551ed144789bf9c1cd + size: 7502 + timestamp: 1728985392716 +- conda: https://conda.anaconda.org/conda-forge/noarch/conda-devenv-1.0.3-py_0.tar.bz2 + sha256: 041ebd8736c8a7b5347a6b92997343bfaefb235f680907dfb5c8eb2412e6b406 + md5: 24c6830b0c7a5b4a60ae53f461fc9b34 depends: - - python >=3.7 - - zstandard >=0.15 - license: BSD-3-Clause - license_family: BSD - size: 20582 - timestamp: 1729004160440 -- kind: conda - name: contourpy - version: 1.3.1 - build: py312h451a7dd_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/contourpy-1.3.1-py312h451a7dd_0.conda - sha256: 051b2116358499376244bfebd0f5e234644261988744b3e79dd4822ce0116aad - md5: ba590e4630833739c3eb5fcd5f046d0e + - jinja2 + - python + - pyyaml + - six + license: MIT + license_family: MIT + size: 12652 +- conda: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.1-py313h33d0bda_0.conda + sha256: 22d254791c72300fbb129f2bc9240dae4a486cac4942e832543eb97ca5b87fbc + md5: 6b6768e7c585d7029f79a04cbc4cbff0 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - numpy >=1.23 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - size: 286018 - timestamp: 1731428571868 -- kind: conda - name: contourpy - version: 1.3.1 - build: py312h68727a3_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/contourpy-1.3.1-py312h68727a3_0.conda - sha256: e977af50b844b5b8cfec358131a4e923f0aa718e8334321cf8d84f5093576259 - md5: f5fbba0394ee45e9a64a73c2a994126a + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 276640 + timestamp: 1731428466509 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/contourpy-1.3.1-py313h44a8f36_0.conda + sha256: 7a506c7928c43d10b1ac0b6d1654eac94ee0ec9854605606b7c44c8275ef14d4 + md5: e73187731f0e6632ffb1409977a03562 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - numpy >=1.23 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 276332 - timestamp: 1731428454756 -- kind: conda - name: contourpy - version: 1.3.1 - build: py312hb23fbb9_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.1-py312hb23fbb9_0.conda - sha256: fa1f8505f45eac22f25c48cd46809da0d26bcb028c37517b3474bacddd029b0a - md5: f4408290387836e05ac267cd7ec80c5c - depends: - - __osx >=11.0 - - libcxx >=18 - - numpy >=1.23 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - size: 245638 - timestamp: 1731428781337 -- kind: conda - name: contourpy - version: 1.3.1 - build: py312hc47a885_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.1-py312hc47a885_0.conda - sha256: e05d4c6b4284684a020c386861342fa22706ff747f1f8909b14dbc0fe489dcb2 - md5: 94715deb514df3f341f62bc2ffea5637 + size: 287631 + timestamp: 1731428633912 +- conda: https://conda.anaconda.org/conda-forge/osx-64/contourpy-1.3.1-py313ha0b1807_0.conda + sha256: 666bdbe13ac3f45004138a6bb0fcf5b70290ec509e6a5b4a68dd5e329f965cd7 + md5: 5ae850f4b044294bd7d655228fc236f9 depends: - __osx >=10.13 - libcxx >=18 - numpy >=1.23 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 254416 - timestamp: 1731428639848 -- kind: conda - name: contourpy - version: 1.3.1 - build: py312hd5eb7cc_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.1-py312hd5eb7cc_0.conda - sha256: b5643ea0dd0bf57e1847679f5985feb649289de872b85c3db900f4110ac83cdd - md5: 83f7a2ec652abd37a178e35493dfd029 + size: 255522 + timestamp: 1731428527698 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/contourpy-1.3.1-py313h0ebd0e5_0.conda + sha256: 1761af531f86a1ebb81eec9ed5c0bcfc6be4502315139494b6a1c039e8477983 + md5: 9d3b4c6ee9427fdb3915f38b53d01e9a depends: + - __osx >=11.0 + - libcxx >=18 - numpy >=1.23 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 216484 - timestamp: 1731428831843 -- kind: conda - name: cpp-expected - version: 1.1.0 - build: h4c384f3_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/cpp-expected-1.1.0-h4c384f3_0.conda - sha256: d863c8a8b48b59cded55222cdee0e2aabb065f99997b7559a3376eb2d11e3eb6 - md5: 3a068bc813d0c862f7f1c7bf2554c24e - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - license: CC0-1.0 - size: 23660 - timestamp: 1678888055069 -- kind: conda - name: cpp-expected - version: 1.1.0 - build: h91493d7_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/cpp-expected-1.1.0-h91493d7_0.conda - sha256: a02e2e6a844bd4afe13f39275d0d9e884870da61ee6329b3dae51fb251bc108a - md5: 0b8cf67931527709c28c8d97eeee745b + size: 246707 + timestamp: 1731428917954 +- conda: https://conda.anaconda.org/conda-forge/win-64/contourpy-1.3.1-py313h1ec8472_0.conda + sha256: 743ef124714f5717db212d8af734237e35276a5334ab5982448b54f84c81b008 + md5: 9142ac6da94a900082874a2fc9652521 depends: + - numpy >=1.23 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - - vs2015_runtime >=14.29.30139 - license: CC0-1.0 - size: 23910 - timestamp: 1678888226379 -- kind: conda - name: cpp-expected - version: 1.1.0 - build: hb8565cd_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/cpp-expected-1.1.0-hb8565cd_0.conda - sha256: 80c0551e5d297c59991c09f6611331f3d56517894b63c8f6a85d51e601b8ea69 - md5: 53c16c2f79183b459ef6acb6c93f3550 - depends: - - libcxx >=14.0.6 - license: CC0-1.0 - size: 23677 - timestamp: 1678888206460 -- kind: conda - name: cpp-expected - version: 1.1.0 - build: hf52228f_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cpp-expected-1.1.0-hf52228f_0.conda - sha256: fc809e6894537a77c6cd1e65f593ae1bfbf60f494bce55295212d1a9bacd7fa7 - md5: a7f1500bf47196443b67355d67afec6d - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - license: CC0-1.0 - size: 23621 - timestamp: 1678887949634 -- kind: conda - name: cpp-expected - version: 1.1.0 - build: hffc8910_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/cpp-expected-1.1.0-hffc8910_0.conda - sha256: 9af3323963a059681eb848218c11ba2208f12bc5416ee357b0d4f9f8bef5ebca - md5: d58ea142acc3d93f6f0176e31e4493ad - depends: - - libcxx >=14.0.6 - license: CC0-1.0 - size: 23544 - timestamp: 1678888466303 -- kind: conda - name: cxx-compiler - version: 1.8.0 - build: h18dbf2f_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/cxx-compiler-1.8.0-h18dbf2f_1.conda - sha256: bcadda695b13087920650adf43a599b66745dfb4bfc3b425169547d76082dcf2 - md5: a1bc5417ab20b451ee141ca3290df479 - depends: - - c-compiler 1.8.0 hf48404e_1 - - clangxx_osx-arm64 17.* + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD - size: 6261 - timestamp: 1728985417226 -- kind: conda - name: cxx-compiler - version: 1.8.0 - build: h1a2810e_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.8.0-h1a2810e_1.conda + size: 217444 + timestamp: 1731429291382 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cxx-compiler-1.8.0-h1a2810e_1.conda sha256: cca0450bbc0d19044107d0f90fa36126a11b007fbfb62bd2a1949b2bb59a21a4 md5: 3bb4907086d7187bf01c8bec397ffa5e depends: - c-compiler 1.8.0 h2b85faf_1 - gxx - gxx_linux-64 13.* + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 6059 timestamp: 1728985302835 -- kind: conda - name: cxx-compiler - version: 1.8.0 - build: h385f146_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.8.0-h385f146_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cxx-compiler-1.8.0-heb6c788_1.conda + sha256: 92cd5ba51d0d450cd69ae934107932d2b28cfbb652b1d5f5c0b8e2773ae90491 + md5: d655e8bc7e615b6965afe20522e4ed1a + depends: + - c-compiler 1.8.0 h6561dab_1 + - gxx + - gxx_linux-aarch64 13.* + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6154 + timestamp: 1728985293216 +- conda: https://conda.anaconda.org/conda-forge/osx-64/cxx-compiler-1.8.0-h385f146_1.conda sha256: bbb8097e20601a1c78b3ad4aba165dbfe9a61f27e0b42475ba6177222825adad md5: b72f72f89de328cc907bcdf88b85447d depends: - c-compiler 1.8.0 hfc4bf79_1 - clangxx_osx-64 17.* + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD size: 6235 timestamp: 1728985479382 -- kind: conda - name: cxx-compiler - version: 1.8.0 - build: h91493d7_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.8.0-h91493d7_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cxx-compiler-1.8.0-h18dbf2f_1.conda + sha256: bcadda695b13087920650adf43a599b66745dfb4bfc3b425169547d76082dcf2 + md5: a1bc5417ab20b451ee141ca3290df479 + depends: + - c-compiler 1.8.0 hf48404e_1 + - clangxx_osx-arm64 17.* + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6261 + timestamp: 1728985417226 +- conda: https://conda.anaconda.org/conda-forge/win-64/cxx-compiler-1.8.0-h91493d7_1.conda sha256: c6065df2e055a0392207f512bfa12d7a0e849f5e1a5435a3db9c60ae20bded9b md5: 54d722a127a10b59596b5640d58f7ae6 depends: - vs2019_win-64 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD size: 6549 timestamp: 1728985390855 -- kind: conda - name: cxx-compiler - version: 1.8.0 - build: heb6c788_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/cxx-compiler-1.8.0-heb6c788_1.conda - sha256: 92cd5ba51d0d450cd69ae934107932d2b28cfbb652b1d5f5c0b8e2773ae90491 - md5: d655e8bc7e615b6965afe20522e4ed1a - depends: - - c-compiler 1.8.0 h6561dab_1 - - gxx - - gxx_linux-aarch64 13.* - license: BSD-3-Clause - license_family: BSD - size: 6154 - timestamp: 1728985293216 -- kind: conda - name: cycler - version: 0.12.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_0.conda - sha256: f221233f21b1d06971792d491445fd548224641af9443739b4b7b6d5d72954a8 - md5: 5cd86562580f274031ede6aa6aa24441 +- conda: https://conda.anaconda.org/conda-forge/noarch/cycler-0.12.1-pyhd8ed1ab_1.conda + sha256: 9827efa891e507a91a8a2acf64e210d2aff394e1cde432ad08e1f8c66b12293c + md5: 44600c4667a319d67dbe0681fc0bc833 depends: - - python >=3.8 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 13458 - timestamp: 1696677888423 -- kind: conda - name: cyrus-sasl - version: 2.1.27 - build: h54b06d7_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.27-h54b06d7_7.conda + size: 13399 + timestamp: 1733332563512 +- conda: https://conda.anaconda.org/conda-forge/linux-64/cyrus-sasl-2.1.27-h54b06d7_7.conda sha256: d2ea5e52da745c4249e1a818095a28f9c57bd4df22cbfc645352defa468e86c2 md5: dce22f70b4e5a407ce88f2be046f4ceb depends: @@ -4447,35 +3271,13 @@ packages: - libntlm - libstdcxx-ng >=12 - openssl >=3.1.1,<4.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause-Attribution license_family: BSD size: 219527 timestamp: 1690061203707 -- kind: conda - name: cyrus-sasl - version: 2.1.27 - build: h60b93bd_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/cyrus-sasl-2.1.27-h60b93bd_7.conda - sha256: befd4d6e8b542d0c30aff47b098d43bbbe1bbf743ba6cd87a100d8a8731a6e03 - md5: 80a3b015d05a7d235db1bf09911fe08e - depends: - - krb5 >=1.21.1,<1.22.0a0 - - libcxx >=15.0.7 - - libntlm - - openssl >=3.1.1,<4.0a0 - license: BSD-3-Clause-Attribution - license_family: BSD - size: 210957 - timestamp: 1690061457834 -- kind: conda - name: cyrus-sasl - version: 2.1.27 - build: hf6b2984_7 - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/cyrus-sasl-2.1.27-hf6b2984_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/cyrus-sasl-2.1.27-hf6b2984_7.conda sha256: bee91ceb748b91b3fefcfe161608c9658b62e4d938aa87050ad1a49f04715552 md5: 7a85d417c8acd7a5215c082c5b9219e5 depends: @@ -4484,17 +3286,13 @@ packages: - libntlm - libstdcxx-ng >=12 - openssl >=3.1.1,<4.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause-Attribution license_family: BSD size: 235884 timestamp: 1690062556588 -- kind: conda - name: cyrus-sasl - version: 2.1.27 - build: hf9bab2b_7 - build_number: 7 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/cyrus-sasl-2.1.27-hf9bab2b_7.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/cyrus-sasl-2.1.27-hf9bab2b_7.conda sha256: d4be27d58beb762f9392a35053404d5129e1ec41d24a9a7b465b4d84de2e5819 md5: b3a8aa48d3d5e1bfb31ee3bde1f2c544 depends: @@ -4502,359 +3300,300 @@ packages: - libcxx >=15.0.7 - libntlm - openssl >=3.1.1,<4.0a0 + arch: x86_64 + platform: osx + license: BSD-3-Clause-Attribution + license_family: BSD + size: 209174 + timestamp: 1690061476074 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/cyrus-sasl-2.1.27-h60b93bd_7.conda + sha256: befd4d6e8b542d0c30aff47b098d43bbbe1bbf743ba6cd87a100d8a8731a6e03 + md5: 80a3b015d05a7d235db1bf09911fe08e + depends: + - krb5 >=1.21.1,<1.22.0a0 + - libcxx >=15.0.7 + - libntlm + - openssl >=3.1.1,<4.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause-Attribution license_family: BSD - size: 209174 - timestamp: 1690061476074 -- kind: conda - name: dav1d - version: 1.2.1 - build: h0dc2134_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/dav1d-1.2.1-h0dc2134_0.conda - sha256: ec71a835866b42e946cd2039a5f7a6458851a21890d315476f5e66790ac11c96 - md5: 9d88733c715300a39f8ca2e936b7808d + size: 210957 + timestamp: 1690061457834 +- conda: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda + sha256: 22053a5842ca8ee1cf8e1a817138cdb5e647eb2c46979f84153f6ad7bde73020 + md5: 418c6ca5929a611cbd69204907a83995 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD - size: 668439 - timestamp: 1685696184631 -- kind: conda - name: dav1d - version: 1.2.1 - build: h31becfc_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda + size: 760229 + timestamp: 1685695754230 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dav1d-1.2.1-h31becfc_0.conda sha256: 33fe66d025cf5bac7745196d1a3dd7a437abcf2dbce66043e9745218169f7e17 md5: 6e5a87182d66b2d1328a96b61ca43a62 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 347363 timestamp: 1685696690003 -- kind: conda - name: dav1d - version: 1.2.1 - build: hb547adb_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/dav1d-1.2.1-h0dc2134_0.conda + sha256: ec71a835866b42e946cd2039a5f7a6458851a21890d315476f5e66790ac11c96 + md5: 9d88733c715300a39f8ca2e936b7808d + arch: x86_64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 668439 + timestamp: 1685696184631 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/dav1d-1.2.1-hb547adb_0.conda sha256: 93e077b880a85baec8227e8c72199220c7f87849ad32d02c14fb3807368260b8 md5: 5a74cdee497e6b65173e10d94582fae6 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 316394 timestamp: 1685695959391 -- kind: conda - name: dav1d - version: 1.2.1 - build: hcfcfb64_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/dav1d-1.2.1-hcfcfb64_0.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/dav1d-1.2.1-hcfcfb64_0.conda sha256: 2aa2083c9c186da7d6f975ccfbef654ed54fff27f4bc321dbcd12cee932ec2c4 md5: ed2c27bda330e3f0ab41577cf8b9b585 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: BSD-2-Clause license_family: BSD size: 618643 timestamp: 1685696352968 -- kind: conda - name: dav1d - version: 1.2.1 - build: hd590300_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/dav1d-1.2.1-hd590300_0.conda - sha256: 22053a5842ca8ee1cf8e1a817138cdb5e647eb2c46979f84153f6ad7bde73020 - md5: 418c6ca5929a611cbd69204907a83995 - depends: - - libgcc-ng >=12 - license: BSD-2-Clause - license_family: BSD - size: 760229 - timestamp: 1685695754230 -- kind: conda - name: dbus - version: 1.13.6 - build: h12b9eeb_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.13.6-h12b9eeb_3.tar.bz2 - sha256: 5fe76bdf27a142cfb9da0fb3197c562e528d2622b573765bee5c9904cf5e6b6b - md5: f3d63805602166bac09386741e00935e +- conda: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 + sha256: 8f5f995699a2d9dbdd62c61385bfeeb57c82a681a7c8c5313c395aa0ccab68a5 + md5: ecfff944ba3960ecb334b9a2663d708d depends: - expat >=2.4.2,<3.0a0 - libgcc-ng >=9.4.0 - libglib >=2.70.2,<3.0a0 + arch: x86_64 + platform: linux license: GPL-2.0-or-later license_family: GPL - size: 672759 - timestamp: 1640113663539 -- kind: conda - name: dbus - version: 1.13.6 - build: h5008d03_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/dbus-1.13.6-h5008d03_3.tar.bz2 - sha256: 8f5f995699a2d9dbdd62c61385bfeeb57c82a681a7c8c5313c395aa0ccab68a5 - md5: ecfff944ba3960ecb334b9a2663d708d + size: 618596 + timestamp: 1640112124844 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/dbus-1.13.6-h12b9eeb_3.tar.bz2 + sha256: 5fe76bdf27a142cfb9da0fb3197c562e528d2622b573765bee5c9904cf5e6b6b + md5: f3d63805602166bac09386741e00935e depends: - expat >=2.4.2,<3.0a0 - libgcc-ng >=9.4.0 - libglib >=2.70.2,<3.0a0 + arch: aarch64 + platform: linux license: GPL-2.0-or-later license_family: GPL - size: 618596 - timestamp: 1640112124844 -- kind: conda - name: debugpy - version: 1.8.9 - build: py312h275cf98_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.9-py312h275cf98_0.conda - sha256: 5a6b8e7d6cef17eb0e39c3a4261eeba293901445f4d5ddf8eae09ca775058acb - md5: 1300cbe0243cd21d23212fb654c4d434 - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: MIT - license_family: MIT - size: 3518631 - timestamp: 1732237024268 -- kind: conda - name: debugpy - version: 1.8.9 - build: py312h2ec8cdc_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.9-py312h2ec8cdc_0.conda - sha256: cf79cac70773567382910fcaf7b10bb0f5242d159f8dd93296d8451cd542af9a - md5: c522fd70ca7a0c2fe1a861dd13987a57 + size: 672759 + timestamp: 1640113663539 +- conda: https://conda.anaconda.org/conda-forge/linux-64/debugpy-1.8.11-py313h46c70d0_0.conda + sha256: ba61f86e8d3e214652c8db276383bd993d0846b0ea58dfc64badf1b1bdd484f2 + md5: 55dee3b55868c1dfc5513eff9583612a depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 2605093 - timestamp: 1732236790708 -- kind: conda - name: debugpy - version: 1.8.9 - build: py312h6f74592_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.9-py312h6f74592_0.conda - sha256: 651761a1bba2af89aeb391ab61391cfb4db67d9031f3bf429720782642873115 - md5: d0238a3a2f6127b05c5144aa383d7081 + size: 2674733 + timestamp: 1734159091442 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/debugpy-1.8.11-py313hb6a6212_0.conda + sha256: 1be9b886ee29d71b1a843e844e3c9af7ba8408052c940ce46fb66aa6511840d0 + md5: 0bc7fc8f91c6a35ef52eeb7233690bbd depends: - libgcc >=13 - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - size: 2596779 - timestamp: 1732236921259 -- kind: conda - name: debugpy - version: 1.8.9 - build: py312haafddd8_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.9-py312haafddd8_0.conda - sha256: 95b43839332c9bcd7da3f98ad322f371d8a3a40283945fadfecf8043d0a0cf38 - md5: 9e50ff5d80cdebeda0fe7eabba6d55e0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 2628243 + timestamp: 1734159168172 +- conda: https://conda.anaconda.org/conda-forge/osx-64/debugpy-1.8.11-py313h14b76d3_0.conda + sha256: d0e6fe8059e94bf2a936690c18777ce65d38a735ebf7419cea6cc4d908bb9dd4 + md5: ff81dc00fa87d1f9d8587f02845dac7d depends: - __osx >=10.13 - libcxx >=18 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 2581941 - timestamp: 1732236893783 -- kind: conda - name: debugpy - version: 1.8.9 - build: py312hd8f9ff3_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.9-py312hd8f9ff3_0.conda - sha256: d588943ac0392300f31115d9852a2ff4213ec22856c382ef56f5650576523ec6 - md5: 51085e5bb7f21019186cc88fd9a03164 + size: 2530605 + timestamp: 1734159182387 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/debugpy-1.8.11-py313h928ef07_0.conda + sha256: 66f5a5792ec0cb7f1fc3f439fba26bec2de9a74d56653bb00504cbe8c7b8ce9c + md5: 7d8ad59690a3a16b9241977a5c5f3dfc depends: - __osx >=11.0 - libcxx >=18 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - size: 2512030 - timestamp: 1732236996277 -- kind: conda - name: distlib - version: 0.3.9 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_0.conda - sha256: 300b2e714f59403df0560174f5ef6c19db8b4a3b74a7244862cf771f07dee8fb - md5: fe521c1608280cc2803ebd26dc252212 - depends: - - python 2.7|>=3.6 - license: Apache-2.0 - license_family: APACHE - size: 276214 - timestamp: 1728557312342 -- kind: conda - name: distro - version: 1.9.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/distro-1.9.0-pyhd8ed1ab_0.conda - sha256: ae1c13d709c8001331b5b9345e4bcd77e9ae712d25f7958b2ebcbe0b068731b7 - md5: bbdb409974cd6cb30071b1d978302726 - depends: - - python >=3.6 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 2568210 + timestamp: 1734159222571 +- conda: https://conda.anaconda.org/conda-forge/win-64/debugpy-1.8.11-py313h5813708_0.conda + sha256: 33cd294b0dc1142798a89afcebb3937d98e3da614bcbe7eb33e505cac61eec60 + md5: 9371fe82ad9b8e2385e39a76afa9011f + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win + license: MIT + license_family: MIT + size: 3614180 + timestamp: 1734159311856 +- conda: https://conda.anaconda.org/conda-forge/noarch/distlib-0.3.9-pyhd8ed1ab_1.conda + sha256: 0e160c21776bd881b79ce70053e59736f51036784fa43a50da10a04f0c1b9c45 + md5: 8d88f4a2242e6b96f9ecff9a6a05b2f1 + depends: + - python >=3.9 license: Apache-2.0 license_family: APACHE - size: 42039 - timestamp: 1704321683916 -- kind: conda - name: double-conversion - version: 3.3.0 - build: h13dd4ca_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/double-conversion-3.3.0-h13dd4ca_0.conda - sha256: 74c6b4bf0d6be2493e689ef2cddffac25e8776e5457bc45476d66048c964fa66 - md5: cd9bfaefd28a1178587ca85b97b14244 + size: 274151 + timestamp: 1733238487461 +- conda: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.3.0-h59595ed_0.conda + sha256: 9eee491a73b67fd64379cf715f85f8681568ebc1f02f9e11b4c50d46a3323544 + md5: c2f83a5ddadadcdb08fe05863295ee97 depends: - - libcxx >=15.0.7 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 63147 - timestamp: 1686490362323 -- kind: conda - name: double-conversion - version: 3.3.0 - build: h2f0025b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/double-conversion-3.3.0-h2f0025b_0.conda + size: 78645 + timestamp: 1686489937183 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/double-conversion-3.3.0-h2f0025b_0.conda sha256: a60f4223b0c090873ab029bf350e54da590d855cefe4ae15f727f3db93d24ac0 md5: 3b34b29f68d60abc1ce132b87f5a213c depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 78230 timestamp: 1686485872718 -- kind: conda - name: double-conversion - version: 3.3.0 - build: h59595ed_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/double-conversion-3.3.0-h59595ed_0.conda - sha256: 9eee491a73b67fd64379cf715f85f8681568ebc1f02f9e11b4c50d46a3323544 - md5: c2f83a5ddadadcdb08fe05863295ee97 +- conda: https://conda.anaconda.org/conda-forge/osx-64/double-conversion-3.3.0-he965462_0.conda + sha256: 74b7e151887e2c79de5dfc2079bc4621a1bd85b8bed4595be3e0b7313808a498 + md5: a3de9d9550078b51db74fde63b1ccae6 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - libcxx >=15.0.7 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 78645 - timestamp: 1686489937183 -- kind: conda - name: double-conversion - version: 3.3.0 - build: h63175ca_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/double-conversion-3.3.0-h63175ca_0.conda + size: 67397 + timestamp: 1686490152080 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/double-conversion-3.3.0-h13dd4ca_0.conda + sha256: 74c6b4bf0d6be2493e689ef2cddffac25e8776e5457bc45476d66048c964fa66 + md5: cd9bfaefd28a1178587ca85b97b14244 + depends: + - libcxx >=15.0.7 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 63147 + timestamp: 1686490362323 +- conda: https://conda.anaconda.org/conda-forge/win-64/double-conversion-3.3.0-h63175ca_0.conda sha256: 735d40b44a0f39386d1e2988384b6d78a98efd4fa1818e7f2f6fb01f91e16b64 md5: 1a8bc18b24014167b2184c5afbe6037e depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD size: 70425 timestamp: 1686490368655 -- kind: conda - name: double-conversion - version: 3.3.0 - build: he965462_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/double-conversion-3.3.0-he965462_0.conda - sha256: 74b7e151887e2c79de5dfc2079bc4621a1bd85b8bed4595be3e0b7313808a498 - md5: a3de9d9550078b51db74fde63b1ccae6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/doxygen-1.11.0-h9d7c8fd_0.conda + sha256: 705266e52623e7a27f4d6e6a81350d3928dbf9d8a641b14b97b71f74142692c5 + md5: 1d2667ce171f3ccc6155d009bafcae24 depends: - - libcxx >=15.0.7 - license: BSD-3-Clause - license_family: BSD - size: 67397 - timestamp: 1686490152080 -- kind: conda - name: doxygen - version: 1.10.0 - build: h7b6a552_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/doxygen-1.10.0-h7b6a552_0.conda + - libgcc >=12 + - libiconv >=1.17,<2.0a0 + - libstdcxx >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-only + license_family: GPL + size: 12393498 + timestamp: 1729784747771 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/doxygen-1.10.0-h7b6a552_0.conda sha256: 1f90043e0c9954656126df88231a803b91b7b4b41c971f6e0a727ede4f6a8045 md5: e8f76606800cdded5a2fbc7c75176ee3 depends: - libgcc-ng >=12 - libiconv >=1.17,<2.0a0 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: GPL-2.0-only license_family: GPL size: 12467704 timestamp: 1703609318336 -- kind: conda - name: doxygen - version: 1.11.0 - build: h8414b35_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/doxygen-1.11.0-h8414b35_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/doxygen-1.11.0-hdfe23c8_0.conda + sha256: b311ee38ea5b878fdfe4a08b1fc338ac946a6e55fd034ef91e351eb92396606a + md5: b89a82a6284cfb8f05448d0678dc4262 + depends: + - __osx >=10.13 + - libcxx >=16 + - libiconv >=1.17,<2.0a0 + arch: x86_64 + platform: osx + license: GPL-2.0-only + license_family: GPL + size: 11756367 + timestamp: 1729784580455 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/doxygen-1.11.0-h8414b35_0.conda sha256: aeb3d2e33e2c4bc13027e8609156c8fbd457b8f6c3415ebd8835b6952bd4afb2 md5: b13ecf43938d4ff4d32d412ef02bc497 depends: - __osx >=11.0 - libcxx >=16 - libiconv >=1.17,<2.0a0 + arch: arm64 + platform: osx license: GPL-2.0-only license_family: GPL size: 10831269 timestamp: 1729784992859 -- kind: conda - name: doxygen - version: 1.11.0 - build: h9d7c8fd_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/doxygen-1.11.0-h9d7c8fd_0.conda - sha256: 705266e52623e7a27f4d6e6a81350d3928dbf9d8a641b14b97b71f74142692c5 - md5: 1d2667ce171f3ccc6155d009bafcae24 - depends: - - libgcc >=12 - - libiconv >=1.17,<2.0a0 - - libstdcxx >=12 - license: GPL-2.0-only - license_family: GPL - size: 12393498 - timestamp: 1729784747771 -- kind: conda - name: doxygen - version: 1.11.0 - build: hbf3f430_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/doxygen-1.11.0-hbf3f430_0.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/doxygen-1.11.0-hbf3f430_0.conda sha256: 9389492681b425cc6165ff44b96c88cb9b68102db472eb63e3c5b2f150e9884f md5: b64aacfa4d47397b3158ce52a35290df depends: @@ -4862,167 +3601,121 @@ packages: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: GPL-2.0-only license_family: GPL size: 9996876 timestamp: 1729785878406 -- kind: conda - name: doxygen - version: 1.11.0 - build: hdfe23c8_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/doxygen-1.11.0-hdfe23c8_0.conda - sha256: b311ee38ea5b878fdfe4a08b1fc338ac946a6e55fd034ef91e351eb92396606a - md5: b89a82a6284cfb8f05448d0678dc4262 - depends: - - __osx >=10.13 - - libcxx >=16 - - libiconv >=1.17,<2.0a0 - license: GPL-2.0-only - license_family: GPL - size: 11756367 - timestamp: 1729784580455 -- kind: conda - name: eigen - version: 3.4.0 - build: h00ab1b0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/eigen-3.4.0-h00ab1b0_0.conda sha256: 53b15a98aadbe0704479bacaf7a5618fcb32d1577be320630674574241639b34 md5: b1b879d6d093f55dd40d58b5eb2f0699 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: MPL-2.0 license_family: MOZILLA size: 1088433 timestamp: 1690272126173 -- kind: conda - name: eigen - version: 3.4.0 - build: h1995070_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/eigen-3.4.0-h1995070_0.conda - sha256: c20b3677b16d8907343fce68e7c437184fef7f5ed0a765c104b775f8a485c5c9 - md5: 3691ea3ff568ba38826389bafc717909 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/eigen-3.4.0-h2a328a1_0.conda + sha256: f9c763805938ebaa43183b07caadce8eb3e1af8c21df8792f2793c3dd5210b4e + md5: 0057b28f7ed26d80bd2277a128f324b2 depends: - - libcxx >=15.0.7 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: MPL-2.0 license_family: MOZILLA - size: 1087751 - timestamp: 1690275869049 -- kind: conda - name: eigen - version: 3.4.0 - build: h1c7c39f_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/eigen-3.4.0-h1c7c39f_0.conda + size: 1090421 + timestamp: 1690273745233 +- conda: https://conda.anaconda.org/conda-forge/osx-64/eigen-3.4.0-h1c7c39f_0.conda sha256: 187c0677e0cdcdc39aed716687a6290dd5b7f52b49eedaef2ed76be6cd0a5a3d md5: 5b2cfc277e3d42d84a2a648825761156 depends: - libcxx >=15.0.7 + arch: x86_64 + platform: osx license: MPL-2.0 license_family: MOZILLA size: 1090184 timestamp: 1690272503232 -- kind: conda - name: eigen - version: 3.4.0 - build: h2a328a1_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/eigen-3.4.0-h2a328a1_0.conda - sha256: f9c763805938ebaa43183b07caadce8eb3e1af8c21df8792f2793c3dd5210b4e - md5: 0057b28f7ed26d80bd2277a128f324b2 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/eigen-3.4.0-h1995070_0.conda + sha256: c20b3677b16d8907343fce68e7c437184fef7f5ed0a765c104b775f8a485c5c9 + md5: 3691ea3ff568ba38826389bafc717909 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - libcxx >=15.0.7 + arch: arm64 + platform: osx license: MPL-2.0 license_family: MOZILLA - size: 1090421 - timestamp: 1690273745233 -- kind: conda - name: eigen - version: 3.4.0 - build: h91493d7_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/eigen-3.4.0-h91493d7_0.conda + size: 1087751 + timestamp: 1690275869049 +- conda: https://conda.anaconda.org/conda-forge/win-64/eigen-3.4.0-h91493d7_0.conda sha256: 633a6a8db1f9a010cb0619f3446fb61f62dea348b09615ffae9744ab1001c24c md5: 305b3ca7023ac046b9a42a48661f6512 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: MPL-2.0 license_family: MOZILLA size: 1089706 timestamp: 1690273089254 -- kind: conda - name: expat - version: 2.6.4 - build: h240833e_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/expat-2.6.4-h240833e_0.conda - sha256: 9d16411c009b2d5d3f4037685592d1f49bfc66991729093777b0fc6d48f45a2e - md5: 81ca1acbdfb112e1c8270d613c92bce4 - depends: - - __osx >=10.13 - - libexpat 2.6.4 h240833e_0 - license: MIT - license_family: MIT - size: 128768 - timestamp: 1730967223370 -- kind: conda - name: expat - version: 2.6.4 - build: h286801f_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.4-h286801f_0.conda - sha256: e621a088b762a8aa99bd8f3ef10e2efe923713bc476babb90e7919f6c13a358b - md5: a37ffeecc1b8a62205bdd8319652758b - depends: - - __osx >=11.0 - - libexpat 2.6.4 h286801f_0 - license: MIT - license_family: MIT - size: 124765 - timestamp: 1730967188116 -- kind: conda - name: expat - version: 2.6.4 - build: h5888daf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/expat-2.6.4-h5888daf_0.conda sha256: 1848c7db9e264e3b8036ee133d570dd880422983cd20dd9585a505289606d276 md5: 1d6afef758879ef5ee78127eb4cd2c4a depends: - __glibc >=2.17,<3.0.a0 - libexpat 2.6.4 h5888daf_0 - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 138145 timestamp: 1730967050578 -- kind: conda - name: expat - version: 2.6.4 - build: h5ad3122_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.6.4-h5ad3122_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/expat-2.6.4-h5ad3122_0.conda sha256: 13905ad49c2f43776bac0e464ffd3c9ec10ef35cc7dd7e187af6f66f843fa29a md5: e8f1d587055376ea2419cc78696abd0b depends: - libexpat 2.6.4 h5ad3122_0 - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 130354 + timestamp: 1730967212801 +- conda: https://conda.anaconda.org/conda-forge/osx-64/expat-2.6.4-h240833e_0.conda + sha256: 9d16411c009b2d5d3f4037685592d1f49bfc66991729093777b0fc6d48f45a2e + md5: 81ca1acbdfb112e1c8270d613c92bce4 + depends: + - __osx >=10.13 + - libexpat 2.6.4 h240833e_0 + arch: x86_64 + platform: osx + license: MIT + license_family: MIT + size: 128768 + timestamp: 1730967223370 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/expat-2.6.4-h286801f_0.conda + sha256: e621a088b762a8aa99bd8f3ef10e2efe923713bc476babb90e7919f6c13a358b + md5: a37ffeecc1b8a62205bdd8319652758b + depends: + - __osx >=11.0 + - libexpat 2.6.4 h286801f_0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 130354 - timestamp: 1730967212801 -- kind: conda - name: expat - version: 2.6.4 - build: he0c23c2_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/expat-2.6.4-he0c23c2_0.conda + size: 124765 + timestamp: 1730967188116 +- conda: https://conda.anaconda.org/conda-forge/win-64/expat-2.6.4-he0c23c2_0.conda sha256: b4f8c3d94f6f592e9ec85c71ef329028fe24cd55db1711a4ad4e2e564c8b28a7 md5: 1acbf46a31d414144777e85efebd3640 depends: @@ -5030,21 +3723,17 @@ packages: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: MIT license_family: MIT size: 230629 timestamp: 1730967460961 -- kind: conda - name: ffmpeg - version: 6.1.2 - build: gpl_h9c046ae_106 - build_number: 106 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/ffmpeg-6.1.2-gpl_h9c046ae_106.conda - sha256: eed5ae33b950a9a4940c31ba9d93235bc802eb9112eb976bb2bf7454d65d4bde - md5: 600dd2e1eae7646feffd1ce541a804e6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-7.1.0-gpl_h4c12d27_707.conda + sha256: a7bf8a71910bb54ef972a4e4dbc34be88336412c606bec6852e24a0e6a164bf2 + md5: aee131a2c291ca7d0d703900515aa772 depends: - - __osx >=10.13 + - __glibc >=2.17,<3.0.a0 - aom >=3.9.1,<3.10.0a0 - bzip2 >=1.0.8,<2.0a0 - dav1d >=1.2.1,<1.2.2.0a0 @@ -5055,43 +3744,48 @@ packages: - harfbuzz >=9.0.0,<10.0a0 - lame >=3.100,<3.101.0a0 - libass >=0.17.3,<0.17.4.0a0 - - libcxx >=18 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 - libiconv >=1.17,<2.0a0 - - libopenvino >=2024.4.0,<2024.4.1.0a0 - - libopenvino-auto-batch-plugin >=2024.4.0,<2024.4.1.0a0 - - libopenvino-auto-plugin >=2024.4.0,<2024.4.1.0a0 - - libopenvino-hetero-plugin >=2024.4.0,<2024.4.1.0a0 - - libopenvino-intel-cpu-plugin >=2024.4.0,<2024.4.1.0a0 - - libopenvino-ir-frontend >=2024.4.0,<2024.4.1.0a0 - - libopenvino-onnx-frontend >=2024.4.0,<2024.4.1.0a0 - - libopenvino-paddle-frontend >=2024.4.0,<2024.4.1.0a0 - - libopenvino-pytorch-frontend >=2024.4.0,<2024.4.1.0a0 - - libopenvino-tensorflow-frontend >=2024.4.0,<2024.4.1.0a0 - - libopenvino-tensorflow-lite-frontend >=2024.4.0,<2024.4.1.0a0 + - liblzma >=5.6.3,<6.0a0 + - libopenvino >=2024.5.0,<2024.5.1.0a0 + - libopenvino-auto-batch-plugin >=2024.5.0,<2024.5.1.0a0 + - libopenvino-auto-plugin >=2024.5.0,<2024.5.1.0a0 + - libopenvino-hetero-plugin >=2024.5.0,<2024.5.1.0a0 + - libopenvino-intel-cpu-plugin >=2024.5.0,<2024.5.1.0a0 + - libopenvino-intel-gpu-plugin >=2024.5.0,<2024.5.1.0a0 + - libopenvino-intel-npu-plugin >=2024.5.0,<2024.5.1.0a0 + - libopenvino-ir-frontend >=2024.5.0,<2024.5.1.0a0 + - libopenvino-onnx-frontend >=2024.5.0,<2024.5.1.0a0 + - libopenvino-paddle-frontend >=2024.5.0,<2024.5.1.0a0 + - libopenvino-pytorch-frontend >=2024.5.0,<2024.5.1.0a0 + - libopenvino-tensorflow-frontend >=2024.5.0,<2024.5.1.0a0 + - libopenvino-tensorflow-lite-frontend >=2024.5.0,<2024.5.1.0a0 - libopus >=1.3.1,<2.0a0 + - librsvg >=2.58.4,<3.0a0 + - libstdcxx >=13 + - libva >=2.22.0,<3.0a0 - libvpx >=1.14.1,<1.15.0a0 - - libxml2 >=2.13.4,<3.0a0 + - libxcb >=1.17.0,<2.0a0 + - libxml2 >=2.13.5,<3.0a0 - libzlib >=1.3.1,<2.0a0 - - openh264 >=2.4.1,<2.4.2.0a0 - - openssl >=3.3.2,<4.0a0 + - openh264 >=2.5.0,<2.5.1.0a0 + - openssl >=3.4.0,<4.0a0 - svt-av1 >=2.3.0,<2.3.1.0a0 - x264 >=1!164.3095,<1!165 - x265 >=3.5,<3.6.0a0 - - xz >=5.2.6,<6.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 + constrains: + - __cuda >=12.4 + arch: x86_64 + platform: linux license: GPL-2.0-or-later license_family: GPL - size: 9666358 - timestamp: 1730672534073 -- kind: conda - name: ffmpeg - version: 6.1.2 - build: gpl_hd3257db_706 - build_number: 706 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ffmpeg-6.1.2-gpl_hd3257db_706.conda - sha256: ec1389e2c043574ec28725c3e7d307bc70d63caf41d2f19849f88968095f2c99 - md5: 15352e0ac074ea858c878f684849bc9d + size: 10341312 + timestamp: 1734145930411 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ffmpeg-7.1.0-gpl_hfd22248_707.conda + sha256: 5a4b79444324cff58df24ac64d4a2e4770fc554094ed493abad325c5eaeb6d32 + md5: 57cf647e53cf613259d28c06bdd7a07d depends: - aom >=3.9.1,<3.10.0a0 - bzip2 >=1.0.8,<2.0a0 @@ -5103,50 +3797,47 @@ packages: - harfbuzz >=9.0.0,<10.0a0 - lame >=3.100,<3.101.0a0 - libass >=0.17.3,<0.17.4.0a0 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libgcc >=13 - libiconv >=1.17,<2.0a0 - - libopenvino >=2024.4.0,<2024.4.1.0a0 - - libopenvino-arm-cpu-plugin >=2024.4.0,<2024.4.1.0a0 - - libopenvino-auto-batch-plugin >=2024.4.0,<2024.4.1.0a0 - - libopenvino-auto-plugin >=2024.4.0,<2024.4.1.0a0 - - libopenvino-hetero-plugin >=2024.4.0,<2024.4.1.0a0 - - libopenvino-ir-frontend >=2024.4.0,<2024.4.1.0a0 - - libopenvino-onnx-frontend >=2024.4.0,<2024.4.1.0a0 - - libopenvino-paddle-frontend >=2024.4.0,<2024.4.1.0a0 - - libopenvino-pytorch-frontend >=2024.4.0,<2024.4.1.0a0 - - libopenvino-tensorflow-frontend >=2024.4.0,<2024.4.1.0a0 - - libopenvino-tensorflow-lite-frontend >=2024.4.0,<2024.4.1.0a0 + - liblzma >=5.6.3,<6.0a0 + - libopenvino >=2024.5.0,<2024.5.1.0a0 + - libopenvino-arm-cpu-plugin >=2024.5.0,<2024.5.1.0a0 + - libopenvino-auto-batch-plugin >=2024.5.0,<2024.5.1.0a0 + - libopenvino-auto-plugin >=2024.5.0,<2024.5.1.0a0 + - libopenvino-hetero-plugin >=2024.5.0,<2024.5.1.0a0 + - libopenvino-ir-frontend >=2024.5.0,<2024.5.1.0a0 + - libopenvino-onnx-frontend >=2024.5.0,<2024.5.1.0a0 + - libopenvino-paddle-frontend >=2024.5.0,<2024.5.1.0a0 + - libopenvino-pytorch-frontend >=2024.5.0,<2024.5.1.0a0 + - libopenvino-tensorflow-frontend >=2024.5.0,<2024.5.1.0a0 + - libopenvino-tensorflow-lite-frontend >=2024.5.0,<2024.5.1.0a0 - libopus >=1.3.1,<2.0a0 + - librsvg >=2.58.4,<3.0a0 - libstdcxx >=13 - libvpx >=1.14.1,<1.15.0a0 - libxcb >=1.17.0,<2.0a0 - - libxml2 >=2.13.4,<3.0a0 + - libxml2 >=2.13.5,<3.0a0 - libzlib >=1.3.1,<2.0a0 - - openh264 >=2.4.1,<2.4.2.0a0 - - openssl >=3.3.2,<4.0a0 + - openh264 >=2.5.0,<2.5.1.0a0 + - openssl >=3.4.0,<4.0a0 - svt-av1 >=2.3.0,<2.3.1.0a0 - x264 >=1!164.3095,<1!165 - x265 >=3.5,<3.6.0a0 - - xorg-libx11 >=1.8.9,<2.0a0 - - xz >=5.2.6,<6.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 constrains: - __cuda >=12.4 + arch: aarch64 + platform: linux license: GPL-2.0-or-later license_family: GPL - size: 9487314 - timestamp: 1730671984709 -- kind: conda - name: ffmpeg - version: 6.1.2 - build: gpl_hdfc89ed_706 - build_number: 706 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ffmpeg-6.1.2-gpl_hdfc89ed_706.conda - sha256: e9c701a241c037103ad00a65defdf41f991755c14f352bf4905b1cd792eeace8 - md5: 196d43749bd6adac662856d836b2b2eb + size: 9914440 + timestamp: 1734146096181 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ffmpeg-7.1.0-gpl_h5370b94_107.conda + sha256: b885786ea25f569010721901534f3c65b1ff22ed176818991afe61857e7ddd35 + md5: a0700b6ef04c095b379b2a5aacabe49d depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=10.13 - aom >=3.9.1,<3.10.0a0 - bzip2 >=1.0.8,<2.0a0 - dav1d >=1.2.1,<1.2.2.0a0 @@ -5157,206 +3848,172 @@ packages: - harfbuzz >=9.0.0,<10.0a0 - lame >=3.100,<3.101.0a0 - libass >=0.17.3,<0.17.4.0a0 - - libexpat >=2.6.3,<3.0a0 - - libgcc >=13 + - libcxx >=18 + - libexpat >=2.6.4,<3.0a0 - libiconv >=1.17,<2.0a0 - - libopenvino >=2024.4.0,<2024.4.1.0a0 - - libopenvino-auto-batch-plugin >=2024.4.0,<2024.4.1.0a0 - - libopenvino-auto-plugin >=2024.4.0,<2024.4.1.0a0 - - libopenvino-hetero-plugin >=2024.4.0,<2024.4.1.0a0 - - libopenvino-intel-cpu-plugin >=2024.4.0,<2024.4.1.0a0 - - libopenvino-intel-gpu-plugin >=2024.4.0,<2024.4.1.0a0 - - libopenvino-intel-npu-plugin >=2024.4.0,<2024.4.1.0a0 - - libopenvino-ir-frontend >=2024.4.0,<2024.4.1.0a0 - - libopenvino-onnx-frontend >=2024.4.0,<2024.4.1.0a0 - - libopenvino-paddle-frontend >=2024.4.0,<2024.4.1.0a0 - - libopenvino-pytorch-frontend >=2024.4.0,<2024.4.1.0a0 - - libopenvino-tensorflow-frontend >=2024.4.0,<2024.4.1.0a0 - - libopenvino-tensorflow-lite-frontend >=2024.4.0,<2024.4.1.0a0 + - liblzma >=5.6.3,<6.0a0 + - libopenvino >=2024.5.0,<2024.5.1.0a0 + - libopenvino-auto-batch-plugin >=2024.5.0,<2024.5.1.0a0 + - libopenvino-auto-plugin >=2024.5.0,<2024.5.1.0a0 + - libopenvino-hetero-plugin >=2024.5.0,<2024.5.1.0a0 + - libopenvino-intel-cpu-plugin >=2024.5.0,<2024.5.1.0a0 + - libopenvino-ir-frontend >=2024.5.0,<2024.5.1.0a0 + - libopenvino-onnx-frontend >=2024.5.0,<2024.5.1.0a0 + - libopenvino-paddle-frontend >=2024.5.0,<2024.5.1.0a0 + - libopenvino-pytorch-frontend >=2024.5.0,<2024.5.1.0a0 + - libopenvino-tensorflow-frontend >=2024.5.0,<2024.5.1.0a0 + - libopenvino-tensorflow-lite-frontend >=2024.5.0,<2024.5.1.0a0 - libopus >=1.3.1,<2.0a0 - - libstdcxx >=13 - - libva >=2.22.0,<3.0a0 + - librsvg >=2.58.4,<3.0a0 - libvpx >=1.14.1,<1.15.0a0 - - libxcb >=1.17.0,<2.0a0 - - libxml2 >=2.13.4,<3.0a0 + - libxml2 >=2.13.5,<3.0a0 - libzlib >=1.3.1,<2.0a0 - - openh264 >=2.4.1,<2.4.2.0a0 - - openssl >=3.3.2,<4.0a0 + - openh264 >=2.5.0,<2.5.1.0a0 + - openssl >=3.4.0,<4.0a0 - svt-av1 >=2.3.0,<2.3.1.0a0 - x264 >=1!164.3095,<1!165 - x265 >=3.5,<3.6.0a0 - - xorg-libx11 >=1.8.10,<2.0a0 - - xz >=5.2.6,<6.0a0 - constrains: - - __cuda >=12.4 + arch: x86_64 + platform: osx license: GPL-2.0-or-later license_family: GPL - size: 9910102 - timestamp: 1730672142678 -- kind: conda - name: ffmpeg - version: 7.1.0 - build: gpl_h2585aa8_705 - build_number: 705 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/ffmpeg-7.1.0-gpl_h2585aa8_705.conda - sha256: ce9eb3445ed6233579de45e68f8137d139806c9ab1d7284e009fe987ccde14b2 - md5: 34902bb3c1609c9cb05930190b6fc4e3 + size: 10101815 + timestamp: 1734146217658 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ffmpeg-7.1.0-gpl_h7253ecb_107.conda + sha256: 9a5133a4e3ed463bdd03a2b713167041e722614921a084205a2027badd3d7475 + md5: 0a36d2e2913e4e7444491842f230090b depends: + - __osx >=11.0 - aom >=3.9.1,<3.10.0a0 - bzip2 >=1.0.8,<2.0a0 - dav1d >=1.2.1,<1.2.2.0a0 - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 + - gmp >=6.3.0,<7.0a0 - harfbuzz >=9.0.0,<10.0a0 + - lame >=3.100,<3.101.0a0 + - libass >=0.17.3,<0.17.4.0a0 + - libcxx >=18 - libexpat >=2.6.4,<3.0a0 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 + - libopenvino >=2024.5.0,<2024.5.1.0a0 + - libopenvino-arm-cpu-plugin >=2024.5.0,<2024.5.1.0a0 + - libopenvino-auto-batch-plugin >=2024.5.0,<2024.5.1.0a0 + - libopenvino-auto-plugin >=2024.5.0,<2024.5.1.0a0 + - libopenvino-hetero-plugin >=2024.5.0,<2024.5.1.0a0 + - libopenvino-ir-frontend >=2024.5.0,<2024.5.1.0a0 + - libopenvino-onnx-frontend >=2024.5.0,<2024.5.1.0a0 + - libopenvino-paddle-frontend >=2024.5.0,<2024.5.1.0a0 + - libopenvino-pytorch-frontend >=2024.5.0,<2024.5.1.0a0 + - libopenvino-tensorflow-frontend >=2024.5.0,<2024.5.1.0a0 + - libopenvino-tensorflow-lite-frontend >=2024.5.0,<2024.5.1.0a0 - libopus >=1.3.1,<2.0a0 - librsvg >=2.58.4,<3.0a0 + - libvpx >=1.14.1,<1.15.0a0 - libxml2 >=2.13.5,<3.0a0 - libzlib >=1.3.1,<2.0a0 - openh264 >=2.5.0,<2.5.1.0a0 - openssl >=3.4.0,<4.0a0 - svt-av1 >=2.3.0,<2.3.1.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - x264 >=1!164.3095,<1!165 - x265 >=3.5,<3.6.0a0 - - xz >=5.2.6,<6.0a0 - constrains: - - __cuda >=12.4 + arch: arm64 + platform: osx license: GPL-2.0-or-later license_family: GPL - size: 9996782 - timestamp: 1732157241971 -- kind: conda - name: ffmpeg - version: 7.1.0 - build: gpl_h92f8dbd_105 - build_number: 105 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ffmpeg-7.1.0-gpl_h92f8dbd_105.conda - sha256: 844616f3550b173b051ac7106dc44555bc4714fb32c722b9fe3791c9f7f6f418 - md5: 558e6ac918e60a9cd40a37ef96c78432 + size: 9105579 + timestamp: 1734146127922 +- conda: https://conda.anaconda.org/conda-forge/win-64/ffmpeg-7.1.0-gpl_h062b70d_707.conda + sha256: d6d027adc1e2f209cd57ded879cd4dc6941bc22e02c6dd719b7b7b364e09abf5 + md5: 2a83b585e49d8e9fe02651e3a5e1ae1b depends: - - __osx >=11.0 - aom >=3.9.1,<3.10.0a0 - bzip2 >=1.0.8,<2.0a0 - dav1d >=1.2.1,<1.2.2.0a0 - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - - gmp >=6.3.0,<7.0a0 - harfbuzz >=9.0.0,<10.0a0 - - lame >=3.100,<3.101.0a0 - - libass >=0.17.3,<0.17.4.0a0 - - libcxx >=18 - libexpat >=2.6.4,<3.0a0 - libiconv >=1.17,<2.0a0 - - libopenvino >=2024.4.0,<2024.4.1.0a0 - - libopenvino-arm-cpu-plugin >=2024.4.0,<2024.4.1.0a0 - - libopenvino-auto-batch-plugin >=2024.4.0,<2024.4.1.0a0 - - libopenvino-auto-plugin >=2024.4.0,<2024.4.1.0a0 - - libopenvino-hetero-plugin >=2024.4.0,<2024.4.1.0a0 - - libopenvino-ir-frontend >=2024.4.0,<2024.4.1.0a0 - - libopenvino-onnx-frontend >=2024.4.0,<2024.4.1.0a0 - - libopenvino-paddle-frontend >=2024.4.0,<2024.4.1.0a0 - - libopenvino-pytorch-frontend >=2024.4.0,<2024.4.1.0a0 - - libopenvino-tensorflow-frontend >=2024.4.0,<2024.4.1.0a0 - - libopenvino-tensorflow-lite-frontend >=2024.4.0,<2024.4.1.0a0 + - liblzma >=5.6.3,<6.0a0 - libopus >=1.3.1,<2.0a0 - librsvg >=2.58.4,<3.0a0 - - libvpx >=1.14.1,<1.15.0a0 - libxml2 >=2.13.5,<3.0a0 - libzlib >=1.3.1,<2.0a0 - openh264 >=2.5.0,<2.5.1.0a0 - openssl >=3.4.0,<4.0a0 - svt-av1 >=2.3.0,<2.3.1.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 - x264 >=1!164.3095,<1!165 - x265 >=3.5,<3.6.0a0 - - xz >=5.2.6,<6.0a0 + constrains: + - __cuda >=12.4 + arch: x86_64 + platform: win license: GPL-2.0-or-later license_family: GPL - size: 9119164 - timestamp: 1732156311763 -- kind: conda - name: filelock - version: 3.16.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_0.conda - sha256: 1da766da9dba05091af87977922fe60dc7464091a9ccffb3765d403189d39be4 - md5: 916f8ec5dd4128cd5f207a3c4c07b2c6 - depends: - - python >=3.7 + size: 10009976 + timestamp: 1734147010861 +- conda: https://conda.anaconda.org/conda-forge/noarch/filelock-3.16.1-pyhd8ed1ab_1.conda + sha256: 18dca6e2194732df7ebf824abaefe999e4765ebe8e8a061269406ab88fc418b9 + md5: d692e9ba6f92dc51484bf3477e36ce7c + depends: + - python >=3.9 license: Unlicense - size: 17357 - timestamp: 1726613593584 -- kind: conda - name: flang - version: 19.1.4 - build: hbeecb71_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/flang-19.1.4-hbeecb71_0.conda - sha256: c4a1afa5d08d302f15e1c6562065d31721b86b13dd99bfb3b1adaa1ff889ff3e - md5: 3d355e72896523c25d4186840dad6fee - depends: - - clang 19.1.4 - - compiler-rt 19.1.4 - - libflang 19.1.4 he0c23c2_0 + size: 17441 + timestamp: 1733240909987 +- conda: https://conda.anaconda.org/conda-forge/win-64/flang-19.1.6-hbeecb71_0.conda + sha256: 614d43cc6d7450668976e198035332d3ccf6d4f06c88623083e62be6fe765d5c + md5: 618ec3875c3a6d8f2c981a5efe74774c + depends: + - clang 19.1.6 + - compiler-rt 19.1.6 + - libflang 19.1.6 he0c23c2_0 - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: win license: Apache-2.0 license_family: APACHE - size: 104467519 - timestamp: 1732123920670 -- kind: conda - name: flang_impl_win-64 - version: 19.1.4 - build: h719f0c7_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/flang_impl_win-64-19.1.4-h719f0c7_0.conda - sha256: 89f71027df68dafc654a0f1f1b6042a4631092f389cceaec58e6e04e74c4b424 - md5: 387d14ee336d8d55de89ace9e2003684 - depends: - - compiler-rt_win-64 19.1.4.* - - flang 19.1.4.* - - libflang >=19.1.4 + size: 104547030 + timestamp: 1734540553945 +- conda: https://conda.anaconda.org/conda-forge/win-64/flang_impl_win-64-19.1.6-h719f0c7_0.conda + sha256: 735ea89972aebb29a8ad17b65a67331946628a11a43da39ee667c6ee910679ca + md5: 7073a4dd205743ce80755f44db4a5006 + depends: + - compiler-rt_win-64 19.1.6.* + - flang 19.1.6.* + - libflang >=19.1.6 - lld - llvm-tools + arch: x86_64 + platform: win + license: BSD-3-Clause + license_family: BSD + size: 8772 + timestamp: 1734554392864 +- conda: https://conda.anaconda.org/conda-forge/win-64/flang_win-64-19.1.6-h719f0c7_0.conda + sha256: 073f499222295328bfdd8e8097cb793a2ce95d1b0e707a97e674d1c23ceb4539 + md5: 95456cb9e0ff1e97cc95205a0ff6b9e0 + depends: + - flang_impl_win-64 19.1.6 h719f0c7_0 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD - size: 8801 - timestamp: 1732144947574 -- kind: conda - name: flang_win-64 - version: 19.1.4 - build: h719f0c7_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/flang_win-64-19.1.4-h719f0c7_0.conda - sha256: 94f54b35725d4fbec41a6aad4ed3e7eb1b65aa626948e7a63b1d9c3637e0d05f - md5: 25cf59b4c04b7d66821975cfbb62148a - depends: - - flang_impl_win-64 19.1.4 h719f0c7_0 - license: BSD-3-Clause - license_family: BSD - size: 9640 - timestamp: 1732144954798 -- kind: conda - name: flann - version: 1.9.2 - build: h3ef53d8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/flann-1.9.2-h3ef53d8_2.conda - sha256: 3a223373e848d0ea14971f7698e51ef2a7497504c10306492c066165d0a0bb06 - md5: a0f60c2f07bf0c101da8c3e632a4beb7 + size: 9687 + timestamp: 1734554412298 +- conda: https://conda.anaconda.org/conda-forge/linux-64/flann-1.9.2-h3ef53d8_3.conda + sha256: 161408b82d4fb968346817d95ceaed5602ac3842a6bdcc0da42976d553cf627d + md5: 78987081cfa3f7fd9718d0087ec6a989 depends: - __glibc >=2.17,<3.0.a0 - _openmp_mutex >=4.5 @@ -5364,241 +4021,194 @@ packages: - libgcc >=13 - libstdcxx >=13 - lz4-c >=1.9.3,<1.10.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 1569288 - timestamp: 1728027997028 -- kind: conda - name: flann - version: 1.9.2 - build: h66ee4ad_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/flann-1.9.2-h66ee4ad_2.conda - sha256: 12fb482e711d3d67b69cb1debf217b6c043b0b1859d725000c2ea348580b9f9b - md5: 09d44dcaecda15fddefa9830ae81bdb4 - depends: - - __osx >=10.13 - - hdf5 >=1.14.4,<1.14.5.0a0 - - libcxx >=17 - - llvm-openmp >=17.0.6 - - lz4-c >=1.9.3,<1.10.0a0 - license: BSD-3-Clause - license_family: BSD - size: 1368658 - timestamp: 1728028119019 -- kind: conda - name: flann - version: 1.9.2 - build: h7e74b68_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/flann-1.9.2-h7e74b68_2.conda - sha256: 6e58d82896893d72bfbe563b4ba712bb4e41705d2c00a44db87b9412cc4a8008 - md5: 4abc7d16d4acd76357c7b44bcca7de62 + size: 1573362 + timestamp: 1733306823915 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/flann-1.9.2-h7e74b68_3.conda + sha256: 3e15ecb26d84132495fd9e340b7b8f5323594ff04ebc72e961bcfbe38f3ff866 + md5: 8a4a1b10638fdd584df560a5fce8a80b depends: - _openmp_mutex >=4.5 - hdf5 >=1.14.4,<1.14.5.0a0 - libgcc >=13 - libstdcxx >=13 - lz4-c >=1.9.3,<1.10.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 1788051 - timestamp: 1728028128815 -- kind: conda - name: flann - version: 1.9.2 - build: h8958603_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/flann-1.9.2-h8958603_2.conda - sha256: 8306e932c7060caea1fe2d0089a70f8cbccde75fdb8b0abf87acdd252cee1e09 - md5: f43541fd0ebf62584cb598891a5d90b5 + size: 1782962 + timestamp: 1733306815187 +- conda: https://conda.anaconda.org/conda-forge/osx-64/flann-1.9.2-h680e343_3.conda + sha256: 537e0a89c2c3b7d594d972f62ef04df04b3bad9e11fcc88849edf1429402a192 + md5: 51302a45e6863352f6151cdb5adfc16e depends: + - __osx >=10.13 - hdf5 >=1.14.4,<1.14.5.0a0 + - libcxx >=18 + - llvm-openmp >=18.1.8 - lz4-c >=1.9.3,<1.10.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 4333500 - timestamp: 1728028612163 -- kind: conda - name: flann - version: 1.9.2 - build: hedd063d_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/flann-1.9.2-hedd063d_2.conda - sha256: 710e5e5a514de1e1cb9327b2288d6c4510da08ac65ef903436e70f66943e26bc - md5: 4c11efbe0211f2e3df6a13389973c8b7 + size: 1358957 + timestamp: 1733307131076 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/flann-1.9.2-h9c23b55_3.conda + sha256: 5eb72d5fbc4fbbceff40b1c9777d5a23134d07e06d3f46230dd0621c584fecf4 + md5: 161cdf595e66df4cfc6e3c8ad4897d80 depends: - __osx >=11.0 - hdf5 >=1.14.4,<1.14.5.0a0 - - libcxx >=17 - - llvm-openmp >=17.0.6 + - libcxx >=18 + - llvm-openmp >=18.1.8 - lz4-c >=1.9.3,<1.10.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 1492417 - timestamp: 1728028133716 -- kind: conda - name: fmt - version: 11.0.2 - build: h3c5361c_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/fmt-11.0.2-h3c5361c_0.conda - sha256: 4502053d2556431caa3a606b527eb1e45967109d6c6ffe094f18c3134cf77db1 - md5: e8070546e8739040383f6774e0cd4033 - depends: - - __osx >=10.13 - - libcxx >=16 - license: MIT - license_family: MIT - size: 184400 - timestamp: 1723046749457 -- kind: conda - name: fmt - version: 11.0.2 - build: h420ef59_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/fmt-11.0.2-h420ef59_0.conda - sha256: 62e6508d5bbde4aa36f7b7658ce2d8fdd0e509c0d1661735c1bd1bed00e070c4 - md5: 0e44849fd4764e9f85ed8caa9f24c118 + size: 1469598 + timestamp: 1733307300816 +- conda: https://conda.anaconda.org/conda-forge/win-64/flann-1.9.2-h8958603_3.conda + sha256: 77b5f20ff934e4ea75376310801c72a37d723c143b23f7e486043e38951910a3 + md5: d8ae638d6bf742f041ab5a16afef5888 depends: - - __osx >=11.0 - - libcxx >=16 - license: MIT - license_family: MIT - size: 179582 - timestamp: 1723046771323 -- kind: conda - name: fmt - version: 11.0.2 - build: h434a139_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/fmt-11.0.2-h434a139_0.conda + - hdf5 >=1.14.4,<1.14.5.0a0 + - lz4-c >=1.9.3,<1.10.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win + license: BSD-3-Clause + license_family: BSD + size: 4324346 + timestamp: 1733307273846 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fmt-11.0.2-h434a139_0.conda sha256: c620e2ab084948985ae9b8848d841f603e8055655513340e04b6cf129099b5ca md5: 995f7e13598497691c1dc476d889bc04 depends: - __glibc >=2.17,<3.0.a0 - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 198533 timestamp: 1723046725112 -- kind: conda - name: fmt - version: 11.0.2 - build: h70be974_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/fmt-11.0.2-h70be974_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fmt-11.0.2-h70be974_0.conda sha256: dd47f343981c8e3e0b033ba2511f20400e9cc7ee1206ea1bed01f73798a0c03c md5: 32feda3daf08ff832cf9d55bab2432d6 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 193909 timestamp: 1723046774820 -- kind: conda - name: fmt - version: 11.0.2 - build: h7f575de_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/fmt-11.0.2-h7f575de_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/fmt-11.0.2-h3c5361c_0.conda + sha256: 4502053d2556431caa3a606b527eb1e45967109d6c6ffe094f18c3134cf77db1 + md5: e8070546e8739040383f6774e0cd4033 + depends: + - __osx >=10.13 + - libcxx >=16 + arch: x86_64 + platform: osx + license: MIT + license_family: MIT + size: 184400 + timestamp: 1723046749457 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fmt-11.0.2-h420ef59_0.conda + sha256: 62e6508d5bbde4aa36f7b7658ce2d8fdd0e509c0d1661735c1bd1bed00e070c4 + md5: 0e44849fd4764e9f85ed8caa9f24c118 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 179582 + timestamp: 1723046771323 +- conda: https://conda.anaconda.org/conda-forge/win-64/fmt-11.0.2-h7f575de_0.conda sha256: 951c6c8676611e7a9f9b868d008e8fce55e9097996ecef66a09bd2eedfe7fe5a md5: 4bd427b6423eead4edea9533dc5381ba depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: MIT license_family: MIT size: 188872 timestamp: 1723047364214 -- kind: conda - name: font-ttf-dejavu-sans-mono - version: '2.37' - build: hab24e00_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-dejavu-sans-mono-2.37-hab24e00_0.tar.bz2 sha256: 58d7f40d2940dd0a8aa28651239adbf5613254df0f75789919c4e6762054403b md5: 0c96522c6bdaed4b1566d11387caaf45 license: BSD-3-Clause license_family: BSD size: 397370 timestamp: 1566932522327 -- kind: conda - name: font-ttf-inconsolata - version: '3.000' - build: h77eed37_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-inconsolata-3.000-h77eed37_0.tar.bz2 sha256: c52a29fdac682c20d252facc50f01e7c2e7ceac52aa9817aaf0bb83f7559ec5c md5: 34893075a5c9e55cdafac56607368fc6 license: OFL-1.1 license_family: Other size: 96530 timestamp: 1620479909603 -- kind: conda - name: font-ttf-source-code-pro - version: '2.038' - build: h77eed37_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-source-code-pro-2.038-h77eed37_0.tar.bz2 sha256: 00925c8c055a2275614b4d983e1df637245e19058d79fc7dd1a93b8d9fb4b139 md5: 4d59c254e01d9cde7957100457e2d5fb license: OFL-1.1 license_family: Other size: 700814 timestamp: 1620479612257 -- kind: conda - name: font-ttf-ubuntu - version: '0.83' - build: h77eed37_3 - build_number: 3 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/font-ttf-ubuntu-0.83-h77eed37_3.conda sha256: 2821ec1dc454bd8b9a31d0ed22a7ce22422c0aef163c59f49dfdf915d0f0ca14 md5: 49023d73832ef61042f6a237cb2687e7 license: LicenseRef-Ubuntu-Font-Licence-Version-1.0 license_family: Other size: 1620504 timestamp: 1727511233259 -- kind: conda - name: fontconfig - version: 2.15.0 - build: h1383a14_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda - sha256: f79d3d816fafbd6a2b0f75ebc3251a30d3294b08af9bb747194121f5efa364bc - md5: 7b29f48742cea5d1ccb5edd839cb5621 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda + sha256: 7093aa19d6df5ccb6ca50329ef8510c6acb6b0d8001191909397368b65b02113 + md5: 8f5b0b297b59e1ac160ad4beec99dbee depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - freetype >=2.12.1,<3.0a0 - libexpat >=2.6.3,<3.0a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 234227 - timestamp: 1730284037572 -- kind: conda - name: fontconfig - version: 2.15.0 - build: h37eeddb_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda + size: 265599 + timestamp: 1730283881107 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.15.0-h8dda3cd_1.conda + sha256: fe023bb8917c8a3138af86ef537b70c8c5d60c44f93946a87d1e8bb1a6634b55 + md5: 112b71b6af28b47c624bcbeefeea685b + depends: + - freetype >=2.12.1,<3.0a0 + - libexpat >=2.6.3,<3.0a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 277832 + timestamp: 1730284967179 +- conda: https://conda.anaconda.org/conda-forge/osx-64/fontconfig-2.15.0-h37eeddb_1.conda sha256: 61a9aa1d2dd115ffc1ab372966dc8b1ac7b69870e6b1744641da276b31ea5c0b md5: 84ccec5ee37eb03dd352db0a3f89ada3 depends: @@ -5606,17 +4216,27 @@ packages: - freetype >=2.12.1,<3.0a0 - libexpat >=2.6.3,<3.0a0 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: osx license: MIT license_family: MIT size: 232313 timestamp: 1730283983397 -- kind: conda - name: fontconfig - version: 2.15.0 - build: h765892d_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fontconfig-2.15.0-h1383a14_1.conda + sha256: f79d3d816fafbd6a2b0f75ebc3251a30d3294b08af9bb747194121f5efa364bc + md5: 7b29f48742cea5d1ccb5edd839cb5621 + depends: + - __osx >=11.0 + - freetype >=2.12.1,<3.0a0 + - libexpat >=2.6.3,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 234227 + timestamp: 1730284037572 +- conda: https://conda.anaconda.org/conda-forge/win-64/fontconfig-2.15.0-h765892d_1.conda sha256: ed122fc858fb95768ca9ca77e73c8d9ddc21d4b2e13aaab5281e27593e840691 md5: 9bb0026a2131b09404c59c4290c697cd depends: @@ -5627,56 +4247,13 @@ packages: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: MIT license_family: MIT size: 192355 timestamp: 1730284147944 -- kind: conda - name: fontconfig - version: 2.15.0 - build: h7e30c49_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/fontconfig-2.15.0-h7e30c49_1.conda - sha256: 7093aa19d6df5ccb6ca50329ef8510c6acb6b0d8001191909397368b65b02113 - md5: 8f5b0b297b59e1ac160ad4beec99dbee - depends: - - __glibc >=2.17,<3.0.a0 - - freetype >=2.12.1,<3.0a0 - - libexpat >=2.6.3,<3.0a0 - - libgcc >=13 - - libuuid >=2.38.1,<3.0a0 - - libzlib >=1.3.1,<2.0a0 - license: MIT - license_family: MIT - size: 265599 - timestamp: 1730283881107 -- kind: conda - name: fontconfig - version: 2.15.0 - build: h8dda3cd_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/fontconfig-2.15.0-h8dda3cd_1.conda - sha256: fe023bb8917c8a3138af86ef537b70c8c5d60c44f93946a87d1e8bb1a6634b55 - md5: 112b71b6af28b47c624bcbeefeea685b - depends: - - freetype >=2.12.1,<3.0a0 - - libexpat >=2.6.3,<3.0a0 - - libgcc >=13 - - libuuid >=2.38.1,<3.0a0 - - libzlib >=1.3.1,<2.0a0 - license: MIT - license_family: MIT - size: 277832 - timestamp: 1730284967179 -- kind: conda - name: fonts-conda-ecosystem - version: '1' - build: '0' - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-ecosystem-1-0.tar.bz2 sha256: a997f2f1921bb9c9d76e6fa2f6b408b7fa549edd349a77639c9fe7a23ea93e61 md5: fee5683a3f04bd15cbd8318b096a27ab depends: @@ -5685,13 +4262,7 @@ packages: license_family: BSD size: 3667 timestamp: 1566974674465 -- kind: conda - name: fonts-conda-forge - version: '1' - build: '0' - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/fonts-conda-forge-1-0.tar.bz2 sha256: 53f23a3319466053818540bcdf2091f253cbdbab1e0e9ae7b9e509dcaa2a5e38 md5: f766549260d6815b0c52253f1fb1bb29 depends: @@ -5703,113 +4274,101 @@ packages: license_family: BSD size: 4102 timestamp: 1566932280397 -- kind: conda - name: fonttools - version: 4.55.0 - build: py312h178313f_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.55.0-py312h178313f_0.conda - sha256: 2a8d4fe8968828584057f8b07f3e102e326d8ec08d0e30e4ecc21f35031239a0 - md5: f404f4fb99ccaea68b00c1cc64fc1e68 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fonttools-4.55.3-py313h8060acc_1.conda + sha256: ae805cd273cda22b837c1f9d9240fce8170182293d26d6dd393d00604cc65a69 + md5: f89b4b415c5be34d24f74f30954792b5 depends: - __glibc >=2.17,<3.0.a0 - brotli - libgcc >=13 - munkres - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - unicodedata2 >=15.1.0 - license: MIT - license_family: MIT - size: 2843090 - timestamp: 1731643626471 -- kind: conda - name: fonttools - version: 4.55.0 - build: py312h31fea79_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.55.0-py312h31fea79_0.conda - sha256: 1507c8c47bcc7358d13d24e032ffccabec07df1f7abd6a46ab712679808dc148 - md5: 6051feed0d3ed5900dd5d9355d9b4a1b + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 2870430 + timestamp: 1735336048959 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fonttools-4.55.3-py313h857f82b_1.conda + sha256: 5e33c3dbc3c6fda386958a1273506fb0ca506b8bd18c68074515839abb7237bf + md5: 237802760d6292a4b84aec1473960930 depends: - brotli + - libgcc >=13 - munkres - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - unicodedata2 >=15.1.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 2423864 - timestamp: 1731643701666 -- kind: conda - name: fonttools - version: 4.55.0 - build: py312h3520af0_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.55.0-py312h3520af0_0.conda - sha256: 30f6c8d85c2470b6f01c9e673a0f4f5662a58f75d9bef17a038d01071802246b - md5: 804285e14c733803a8301139185d02ad + size: 2811150 + timestamp: 1735336181530 +- conda: https://conda.anaconda.org/conda-forge/osx-64/fonttools-4.55.3-py313h717bdf5_1.conda + sha256: 25396ab6c04bee9e7d0f008228513355ccf2eeeb1e234a19302b3e625f9e4a52 + md5: f69669f8ead50bb3e13f125defbe6ffe depends: - __osx >=10.13 - brotli - munkres - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - unicodedata2 >=15.1.0 - license: MIT - license_family: MIT - size: 2744633 - timestamp: 1731643699104 -- kind: conda - name: fonttools - version: 4.55.0 - build: py312h998013c_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.55.0-py312h998013c_0.conda - sha256: 427d75267cfeee820498efeea59477790f7e28cdbe0f18a8484f23dae9a85cce - md5: b009bb8037e769ff4fd6439642268ecb + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: osx + license: MIT + license_family: MIT + size: 2811331 + timestamp: 1735336129012 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fonttools-4.55.3-py313ha9b7d5b_1.conda + sha256: 67710cdb48c37bb31673f633c6c16c76ffb78eca690e410b74c503aec8f07d12 + md5: bf27952f750c50fe5436abad54f7d7ce depends: - __osx >=11.0 - brotli - munkres - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - unicodedata2 >=15.1.0 - license: MIT - license_family: MIT - size: 2752240 - timestamp: 1731643678207 -- kind: conda - name: fonttools - version: 4.55.0 - build: py312hcc812fe_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/fonttools-4.55.0-py312hcc812fe_0.conda - sha256: 35f25a174a7f1eb38a3e1e2fe1172f1d4e62947b79e004515f348933889b62a5 - md5: 5e10aa11562e6391873368bc4f350bdb + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 2773158 + timestamp: 1735336098317 +- conda: https://conda.anaconda.org/conda-forge/win-64/fonttools-4.55.3-py313hb4c8b1a_1.conda + sha256: ebfb903f247e3c3ed27486ba6765d30b8da96103708517d669ff04b0a3d74058 + md5: 58edd5dcd69a88212a0f5a8dd14a5bb4 depends: - brotli - - libgcc >=13 - munkres - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - unicodedata2 >=15.1.0 - license: MIT - license_family: MIT - size: 2821981 - timestamp: 1731643640082 -- kind: conda - name: fortran-compiler - version: 1.8.0 - build: h25a59a9_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/fortran-compiler-1.8.0-h25a59a9_1.conda + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win + license: MIT + license_family: MIT + size: 2459086 + timestamp: 1735336346730 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fortran-compiler-1.8.0-h36df796_1.conda + sha256: a713ede383b34fb46e73e00fc6b556a7446eae43f9d312c104678658ea463ea4 + md5: 6b57750841d53ade8d3b47eafe53dd9f + depends: + - binutils + - c-compiler 1.8.0 h2b85faf_1 + - gfortran + - gfortran_linux-64 13.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 6095 + timestamp: 1728985303064 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fortran-compiler-1.8.0-h25a59a9_1.conda sha256: 4c29f8729e3f7fc6c5347c56fbf1f7a5ea22fbaaf685d187848cf4ee68086cd8 md5: 332c43b3c9e5ea6e8aa20cec132e6534 depends: @@ -5817,17 +4376,13 @@ packages: - c-compiler 1.8.0 h6561dab_1 - gfortran - gfortran_linux-aarch64 13.* + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 6175 timestamp: 1728985293546 -- kind: conda - name: fortran-compiler - version: 1.8.0 - build: h33d1f46_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/fortran-compiler-1.8.0-h33d1f46_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/fortran-compiler-1.8.0-h33d1f46_1.conda sha256: 51ae46b447091afc2137e9c789c0cfce54c00cbfa1bcfb0968b6a3e13d23abd9 md5: f3f15da7cbc7be80ea112ecd5dd73b22 depends: @@ -5836,50 +4391,13 @@ packages: - gfortran_osx-64 13.* - ld64 >=530 - llvm-openmp + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD size: 6265 timestamp: 1728985477352 -- kind: conda - name: fortran-compiler - version: 1.8.0 - build: h36df796_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/fortran-compiler-1.8.0-h36df796_1.conda - sha256: a713ede383b34fb46e73e00fc6b556a7446eae43f9d312c104678658ea463ea4 - md5: 6b57750841d53ade8d3b47eafe53dd9f - depends: - - binutils - - c-compiler 1.8.0 h2b85faf_1 - - gfortran - - gfortran_linux-64 13.* - license: BSD-3-Clause - license_family: BSD - size: 6095 - timestamp: 1728985303064 -- kind: conda - name: fortran-compiler - version: 1.8.0 - build: h95e3450_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/fortran-compiler-1.8.0-h95e3450_1.conda - sha256: 6154c279a8eee8174530505fba2041d68ecd37023922e9802b8536c5970b142b - md5: ceb44d8ea43398f5c0b8b47b3e9700b8 - depends: - - flang_win-64 19.* - license: BSD-3-Clause - license_family: BSD - size: 6575 - timestamp: 1728985391778 -- kind: conda - name: fortran-compiler - version: 1.8.0 - build: hc3477c4_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/fortran-compiler-1.8.0-hc3477c4_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fortran-compiler-1.8.0-hc3477c4_1.conda sha256: 42c19f382855e406d017cc8dac2fc3a957a44c7700906de3fbb2a5c23730296e md5: 467c9db2314e049c2ca4d34f9aa87dca depends: @@ -5888,42 +4406,24 @@ packages: - gfortran_osx-arm64 13.* - ld64 >=530 - llvm-openmp + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 6288 timestamp: 1728985414156 -- kind: conda - name: freeimage - version: 3.18.0 - build: h2e169f6_22 - build_number: 22 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/freeimage-3.18.0-h2e169f6_22.conda - sha256: 74dec75a67f9e95058f188eccfb8d82f59e9bbd1444a733cb08f4a0c3e8f7489 - md5: 98187c5ae2ea4cd05afc2a8bf0fd3b1d +- conda: https://conda.anaconda.org/conda-forge/win-64/fortran-compiler-1.8.0-h95e3450_1.conda + sha256: 6154c279a8eee8174530505fba2041d68ecd37023922e9802b8536c5970b142b + md5: ceb44d8ea43398f5c0b8b47b3e9700b8 depends: - - __osx >=11.0 - - imath >=3.1.12,<3.1.13.0a0 - - jxrlib >=1.1,<1.2.0a0 - - libcxx >=17 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libpng >=1.6.44,<1.7.0a0 - - libraw >=0.21.3,<0.22.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.4.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openexr >=3.3.1,<3.4.0a0 - - openjpeg >=2.5.2,<3.0a0 - license: GPL-2.0-or-later OR GPL-3.0-or-later OR FreeImage - size: 366466 - timestamp: 1729024195241 -- kind: conda - name: freeimage - version: 3.18.0 - build: h3a85593_22 - build_number: 22 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-h3a85593_22.conda + - flang_win-64 19.* + arch: x86_64 + platform: win + license: BSD-3-Clause + license_family: BSD + size: 6575 + timestamp: 1728985391778 +- conda: https://conda.anaconda.org/conda-forge/linux-64/freeimage-3.18.0-h3a85593_22.conda sha256: 03ccff5d255eab7a1736de9eeb539fbb1333036fa5e37ea7c8ec428270067c99 md5: bbdf3d43d752b793ac81f27b28c49e2d depends: @@ -5940,16 +4440,12 @@ packages: - libzlib >=1.3.1,<2.0a0 - openexr >=3.3.1,<3.4.0a0 - openjpeg >=2.5.2,<3.0a0 + arch: x86_64 + platform: linux license: GPL-2.0-or-later OR GPL-3.0-or-later OR FreeImage size: 467860 timestamp: 1729024045245 -- kind: conda - name: freeimage - version: 3.18.0 - build: h6cb32c8_22 - build_number: 22 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/freeimage-3.18.0-h6cb32c8_22.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freeimage-3.18.0-h6cb32c8_22.conda sha256: 0a0ed82992c87aa67604569d35b6180863ca21081e94739194e6adde3f92f84d md5: f6891bd5c49b824889b065446edefe37 depends: @@ -5965,16 +4461,12 @@ packages: - libzlib >=1.3.1,<2.0a0 - openexr >=3.3.1,<3.4.0a0 - openjpeg >=2.5.2,<3.0a0 + arch: aarch64 + platform: linux license: GPL-2.0-or-later OR GPL-3.0-or-later OR FreeImage size: 453451 timestamp: 1729024016441 -- kind: conda - name: freeimage - version: 3.18.0 - build: h7cd8ba8_22 - build_number: 22 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/freeimage-3.18.0-h7cd8ba8_22.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/freeimage-3.18.0-h7cd8ba8_22.conda sha256: 89553f22495b2e22b8f603126d6a580cc0cbc5517e9c0dff4be4a3e9055f8f56 md5: 4ea546f119eaf4a1457ded2054982d52 depends: @@ -5990,16 +4482,33 @@ packages: - libzlib >=1.3.1,<2.0a0 - openexr >=3.3.1,<3.4.0a0 - openjpeg >=2.5.2,<3.0a0 + arch: x86_64 + platform: osx license: GPL-2.0-or-later OR GPL-3.0-or-later OR FreeImage size: 410944 timestamp: 1729024174328 -- kind: conda - name: freeimage - version: 3.18.0 - build: h8310ca0_22 - build_number: 22 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/freeimage-3.18.0-h8310ca0_22.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freeimage-3.18.0-h2e169f6_22.conda + sha256: 74dec75a67f9e95058f188eccfb8d82f59e9bbd1444a733cb08f4a0c3e8f7489 + md5: 98187c5ae2ea4cd05afc2a8bf0fd3b1d + depends: + - __osx >=11.0 + - imath >=3.1.12,<3.1.13.0a0 + - jxrlib >=1.1,<1.2.0a0 + - libcxx >=17 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libraw >=0.21.3,<0.22.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openexr >=3.3.1,<3.4.0a0 + - openjpeg >=2.5.2,<3.0a0 + arch: arm64 + platform: osx + license: GPL-2.0-or-later OR GPL-3.0-or-later OR FreeImage + size: 366466 + timestamp: 1729024195241 +- conda: https://conda.anaconda.org/conda-forge/win-64/freeimage-3.18.0-h8310ca0_22.conda sha256: 89ff5bd00c94d201b76f90b939cbd9ec013171c45d9967f7dac71d330cd10343 md5: 5c8c15da921f6a9388d37c4fc81dad4a depends: @@ -6016,62 +4525,58 @@ packages: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: GPL-2.0-or-later OR GPL-3.0-or-later OR FreeImage size: 465887 timestamp: 1729024520954 -- kind: conda - name: freetype - version: 2.12.1 - build: h267a509_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/freetype-2.12.1-h267a509_2.conda sha256: b2e3c449ec9d907dd4656cb0dc93e140f447175b125a3824b31368b06c666bb6 md5: 9ae35c3d96db2c94ce0cef86efdfa2cb depends: - libgcc-ng >=12 - libpng >=1.6.39,<1.7.0a0 - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux license: GPL-2.0-only OR FTL size: 634972 timestamp: 1694615932610 -- kind: conda - name: freetype - version: 2.12.1 - build: h60636b9_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda + sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 + md5: a5ab74c5bd158c3d5532b66d8d83d907 + depends: + - libgcc-ng >=12 + - libpng >=1.6.39,<1.7.0a0 + - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux + license: GPL-2.0-only OR FTL + size: 642092 + timestamp: 1694617858496 +- conda: https://conda.anaconda.org/conda-forge/osx-64/freetype-2.12.1-h60636b9_2.conda sha256: b292cf5a25f094eeb4b66e37d99a97894aafd04a5683980852a8cbddccdc8e4e md5: 25152fce119320c980e5470e64834b50 depends: - libpng >=1.6.39,<1.7.0a0 - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: osx license: GPL-2.0-only OR FTL size: 599300 timestamp: 1694616137838 -- kind: conda - name: freetype - version: 2.12.1 - build: hadb7bae_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/freetype-2.12.1-hadb7bae_2.conda sha256: 791673127e037a2dc0eebe122dc4f904cb3f6e635bb888f42cbe1a76b48748d9 md5: e6085e516a3e304ce41a8ee08b9b89ad depends: - libpng >=1.6.39,<1.7.0a0 - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx license: GPL-2.0-only OR FTL size: 596430 timestamp: 1694616332835 -- kind: conda - name: freetype - version: 2.12.1 - build: hdaf720e_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/freetype-2.12.1-hdaf720e_2.conda sha256: 2c53ee8879e05e149a9e525481d36adfd660a6abda26fd731376fa64ff03e728 md5: 3761b23693f768dc75a8fd0a73ca053f depends: @@ -6080,294 +4585,151 @@ packages: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: GPL-2.0-only OR FTL size: 510306 timestamp: 1694616398888 -- kind: conda - name: freetype - version: 2.12.1 - build: hf0a5ef3_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/freetype-2.12.1-hf0a5ef3_2.conda - sha256: 7af93030f4407f076dce181062360efac2cd54dce863b5d7765287a6f5382537 - md5: a5ab74c5bd158c3d5532b66d8d83d907 - depends: - - libgcc-ng >=12 - - libpng >=1.6.39,<1.7.0a0 - - libzlib >=1.2.13,<2.0.0a0 - license: GPL-2.0-only OR FTL - size: 642092 - timestamp: 1694617858496 -- kind: conda - name: fribidi - version: 1.0.10 - build: h27ca646_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 - sha256: 4b37ea851a2cf85edf0a63d2a63266847ec3dcbba4a31156d430cdd6aa811303 - md5: c64443234ff91d70cb9c7dc926c58834 - license: LGPL-2.1 - size: 60255 - timestamp: 1604417405528 -- kind: conda - name: fribidi - version: 1.0.10 - build: h36c2ea0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/fribidi-1.0.10-h36c2ea0_0.tar.bz2 sha256: 5d7b6c0ee7743ba41399e9e05a58ccc1cfc903942e49ff6f677f6e423ea7a627 md5: ac7bc6a654f8f41b352b38f4051135f8 depends: - libgcc-ng >=7.5.0 + arch: x86_64 + platform: linux license: LGPL-2.1 size: 114383 timestamp: 1604416621168 -- kind: conda - name: fribidi - version: 1.0.10 - build: h8d14728_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 - sha256: e0323e6d7b6047042970812ee810c6b1e1a11a3af4025db26d0965ae5d206104 - md5: 807e81d915f2bb2e49951648615241f6 - depends: - - vc >=14.1,<15.0a0 - - vs2015_runtime >=14.16.27012 - license: LGPL-2.1 - size: 64567 - timestamp: 1604417122064 -- kind: conda - name: fribidi - version: 1.0.10 - build: hb9de7d4_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/fribidi-1.0.10-hb9de7d4_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/fribidi-1.0.10-hb9de7d4_0.tar.bz2 sha256: bcb5a40f1aaf4ea8cda2fc6b2b12aa336403772121350281ce31fd2d9d3e214e md5: f6c91a43eace6fb926a8730b3b9a8a50 depends: - libgcc-ng >=7.5.0 + arch: aarch64 + platform: linux license: LGPL-2.1 size: 115689 timestamp: 1604417149643 -- kind: conda - name: fribidi - version: 1.0.10 - build: hbcb3906_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-64/fribidi-1.0.10-hbcb3906_0.tar.bz2 sha256: 4f6db86ecc4984cd4ac88ca52030726c3cfd11a64dfb15c8602025ee3001a2b5 md5: f1c6b41e0f56998ecd9a3e210faa1dc0 + arch: x86_64 + platform: osx license: LGPL-2.1 size: 65388 timestamp: 1604417213 -- kind: conda - name: frozendict - version: 2.4.6 - build: py312h0bf5046_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/frozendict-2.4.6-py312h0bf5046_0.conda - sha256: 357cef10885bd2fb5d5d3197a8565d0c0b86fffd0dbaff58acee29f7d897a935 - md5: 22df6d6ec0345fc46182ce47e7ee8e24 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: LGPL-3.0-only - license_family: LGPL - size: 30959 - timestamp: 1728841539128 -- kind: conda - name: frozendict - version: 2.4.6 - build: py312h3d0f464_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/frozendict-2.4.6-py312h3d0f464_0.conda - sha256: ea617933e456f78905682cbed90692ba698524280955f6ff21be0905d8f0cd43 - md5: 58a8d9e016adc22964bfb0b9a5272e16 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/fribidi-1.0.10-h27ca646_0.tar.bz2 + sha256: 4b37ea851a2cf85edf0a63d2a63266847ec3dcbba4a31156d430cdd6aa811303 + md5: c64443234ff91d70cb9c7dc926c58834 + arch: arm64 + platform: osx + license: LGPL-2.1 + size: 60255 + timestamp: 1604417405528 +- conda: https://conda.anaconda.org/conda-forge/win-64/fribidi-1.0.10-h8d14728_0.tar.bz2 + sha256: e0323e6d7b6047042970812ee810c6b1e1a11a3af4025db26d0965ae5d206104 + md5: 807e81d915f2bb2e49951648615241f6 depends: - - __osx >=10.13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: LGPL-3.0-only - license_family: LGPL - size: 30751 - timestamp: 1728841497755 -- kind: conda - name: frozendict - version: 2.4.6 - build: py312h4389bb4_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/frozendict-2.4.6-py312h4389bb4_0.conda - sha256: 7148c848521bfb2a5d3a0bac9fafc006999bade8a1f872312429b5193e6aff39 - md5: 1d16a74859f027c8654e30400780a033 - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: LGPL-3.0-only - license_family: LGPL - size: 31147 - timestamp: 1728841600933 -- kind: conda - name: frozendict - version: 2.4.6 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/frozendict-2.4.6-py312h66e93f0_0.conda - sha256: a251569d25e9658f87406efda6640e2816659c5d4dd244d1008bb789793cf32e - md5: 9fa8408745a0621314b7751d11fecc18 + - vc >=14.1,<15.0a0 + - vs2015_runtime >=14.16.27012 + arch: x86_64 + platform: win + license: LGPL-2.1 + size: 64567 + timestamp: 1604417122064 +- conda: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py313h536fd9c_0.conda + sha256: 38136fdefb390a07fc336775e6aa6eb7e44c6814b8e3f7e3a761196b67fe2dfe + md5: 3ad7099c0d0910590953d7e2e7abec4b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: LGPL-3.0-only - license_family: LGPL - size: 30486 - timestamp: 1728841445822 -- kind: conda - name: frozendict - version: 2.4.6 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/frozendict-2.4.6-py312hb2c0f52_0.conda - sha256: a10626b8d1e732dba2404afd68b80c0008b5ff2062c05fe80c276d73cf00097f - md5: e50996bfdb4966e93dac45126b2df97e - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: LGPL-3.0-only - license_family: LGPL - size: 30871 - timestamp: 1728841579782 -- kind: conda - name: frozenlist - version: 1.5.0 - build: py312h0bf5046_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py312h0bf5046_0.conda - sha256: 44d6d6b332421e621c029fb149f12dba1ccb5ed6ac632e2e807a9d92d6cb2864 - md5: 7960352935cc95ac23883c9b8c97f2ff + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: linux + license: Apache-2.0 + license_family: APACHE + size: 59439 + timestamp: 1729699619144 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py313h31d5739_0.conda + sha256: f4823c9038b741ba4a1646a7e7d874204e086d42118dbc54cbaeb5061dae0299 + md5: 743b108163263a39f879e3e0a4877974 depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - libgcc >=13 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 53366 - timestamp: 1729699762631 -- kind: conda - name: frozenlist - version: 1.5.0 - build: py312h3d0f464_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/frozenlist-1.5.0-py312h3d0f464_0.conda - sha256: cb6dcdde2515f30328a223c51f6ff4b43acfc436e6425f5584921af631f66027 - md5: 6c6d8d4893ce961b77f32d1f39d51185 + size: 59385 + timestamp: 1729699652486 +- conda: https://conda.anaconda.org/conda-forge/osx-64/frozenlist-1.5.0-py313hb558fbc_0.conda + sha256: 554e0f9a24ff5dac6038f4b1be159cd9e031cb34e50e1c0ebc92bc6df9e89815 + md5: 4723f216ebada58f2038829e5d0e5e30 depends: - __osx >=10.13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: osx + license: Apache-2.0 + license_family: APACHE + size: 52134 + timestamp: 1729699693784 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/frozenlist-1.5.0-py313h63a2874_0.conda + sha256: 459c6f53657ad5bc85c00d9e46a3b1fb5d3e7b502c9e31e9405358fb5972e3fc + md5: 7e8394203a5ea4d78b4503a1f070ab54 + depends: + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE - size: 52739 - timestamp: 1729699732467 -- kind: conda - name: frozenlist - version: 1.5.0 - build: py312h4389bb4_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/frozenlist-1.5.0-py312h4389bb4_0.conda - sha256: 5111b8ce57dc0a6552457141bbdfd8ccba72c9acee2c253cd44c69239919cb64 - md5: 6cb7f9f613348759fbc968fe82197396 - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + size: 52345 + timestamp: 1729699813614 +- conda: https://conda.anaconda.org/conda-forge/win-64/frozenlist-1.5.0-py313ha7868ed_0.conda + sha256: 2b96697d7ea3edeedaba6812df4102207d4d7712ce1620380380093acb189b8b + md5: 659d90d96f6fa56513fbd5807bf0a351 + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: Apache-2.0 license_family: APACHE - size: 54352 - timestamp: 1729699828195 -- kind: conda - name: frozenlist - version: 1.5.0 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/frozenlist-1.5.0-py312h66e93f0_0.conda - sha256: 7e0c12983b20f2816b3712729b5a35ecb7ee152132ca7cf805427c62395ea823 - md5: f98e36c96b2c66d9043187179ddb04f4 + size: 54370 + timestamp: 1729699901993 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc-13.3.0-h9576a4e_1.conda + sha256: d0161362430183cbdbc3db9cf95f9a1af1793027f3ab8755b3d3586deb28bf84 + md5: 606924335b5bcdf90e9aed9a2f5d22ed depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: Apache-2.0 - license_family: APACHE - size: 60968 - timestamp: 1729699568442 -- kind: conda - name: frozenlist - version: 1.5.0 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/frozenlist-1.5.0-py312hb2c0f52_0.conda - sha256: b0a9ff3e71452eed70877b2f3175d41cd85070da6deac381c5f3f61e1f19bccb - md5: 62fc11b0738ca15e0dd19b60cf280d12 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: Apache-2.0 - license_family: APACHE - size: 59967 - timestamp: 1729699642726 -- kind: conda - name: gcc - version: 13.3.0 - build: h8a56e6e_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc-13.3.0-h8a56e6e_1.conda + - gcc_impl_linux-64 13.3.0.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 53864 + timestamp: 1724801360210 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc-13.3.0-h8a56e6e_1.conda sha256: a65247a97374d871f12490aed847d975e513b70a1ba056c0908e9909e9a1945f md5: 9548c9d315f1894dc311d56433e05e28 depends: - gcc_impl_linux-aarch64 13.3.0.* + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 54122 timestamp: 1724802233653 -- kind: conda - name: gcc - version: 13.3.0 - build: h9576a4e_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gcc-13.3.0-h9576a4e_1.conda - sha256: d0161362430183cbdbc3db9cf95f9a1af1793027f3ab8755b3d3586deb28bf84 - md5: 606924335b5bcdf90e9aed9a2f5d22ed - depends: - - gcc_impl_linux-64 13.3.0.* - license: BSD-3-Clause - license_family: BSD - size: 53864 - timestamp: 1724801360210 -- kind: conda - name: gcc_impl_linux-64 - version: 13.3.0 - build: hfea6d02_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-13.3.0-hfea6d02_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_impl_linux-64-13.3.0-hfea6d02_1.conda sha256: 998ade1d487e93fc8a7a16b90e2af69ebb227355bf4646488661f7ae5887873c md5: 0d043dbc126b64f79d915a0e96d3a1d5 depends: @@ -6378,17 +4740,13 @@ packages: - libsanitizer 13.3.0 heb74ff8_1 - libstdcxx >=13.3.0 - sysroot_linux-64 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 67464415 timestamp: 1724801227937 -- kind: conda - name: gcc_impl_linux-aarch64 - version: 13.3.0 - build: hcdea9b6_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-13.3.0-hcdea9b6_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_impl_linux-aarch64-13.3.0-hcdea9b6_1.conda sha256: cefdf28ab9639e0caa1ff50ec9c67911a5a22b216b685a56fcb82036b11f8758 md5: 05d767292bb95666ecfacea481f8ca64 depends: @@ -6399,69 +4757,69 @@ packages: - libsanitizer 13.3.0 ha58e236_1 - libstdcxx >=13.3.0 - sysroot_linux-aarch64 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 62293677 timestamp: 1724802082737 -- kind: conda - name: gcc_linux-64 - version: 13.3.0 - build: hc28eda2_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-13.3.0-hc28eda2_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/gcc_linux-64-13.3.0-hc28eda2_7.conda sha256: 1e5ac50580a68fdc7d2f5722abcf1a87898c24b1ab6eb5ecd322634742d93645 md5: ac23afbf5805389eb771e2ad3b476f75 depends: - binutils_linux-64 - gcc_impl_linux-64 13.3.0.* - sysroot_linux-64 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 32005 timestamp: 1731939593317 -- kind: conda - name: gcc_linux-aarch64 - version: 13.3.0 - build: h1cd514b_7 - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-13.3.0-h1cd514b_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gcc_linux-aarch64-13.3.0-h1cd514b_7.conda sha256: 1515ce0e32aeaa35be46b8b663913c5c55ca070bafede52958b669da6d5298a0 md5: 5db44b39edd9182d90a418c0efec5f09 depends: - binutils_linux-aarch64 - gcc_impl_linux-aarch64 13.3.0.* - sysroot_linux-aarch64 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 32164 timestamp: 1731939505804 -- kind: conda - name: gdk-pixbuf - version: 2.42.12 - build: h7ddc832_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda - sha256: 72bcf0a4d3f9aa6d99d7d1d224d19f76ccdb3a4fa85e60f77d17e17985c81bd2 - md5: 151309a7e1eb57a3c2ab8088a1d74f3e +- conda: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda + sha256: d5283b95a8d49dcd88d29b360d8b38694aaa905d968d156d72ab71d32b38facb + md5: 201db6c2d9a3c5e46573ac4cb2e92f4f + depends: + - libgcc-ng >=12 + - libglib >=2.80.2,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libpng >=1.6.43,<1.7.0a0 + - libtiff >=4.6.0,<4.8.0a0 + arch: x86_64 + platform: linux + license: LGPL-2.1-or-later + license_family: LGPL + size: 528149 + timestamp: 1715782983957 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gdk-pixbuf-2.42.12-ha61d561_0.conda + sha256: 608f64aa9cf3085e91da8d417aa7680715130b4da73d8aabc50b19e29de697d2 + md5: 332ed304e6d1c1333ccbdc0fdd722fe9 depends: - - __osx >=11.0 + - libgcc-ng >=12 - libglib >=2.80.2,<3.0a0 - - libintl >=0.22.5,<1.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 - libpng >=1.6.43,<1.7.0a0 - libtiff >=4.6.0,<4.8.0a0 + arch: aarch64 + platform: linux license: LGPL-2.1-or-later license_family: LGPL - size: 509570 - timestamp: 1715783199780 -- kind: conda - name: gdk-pixbuf - version: 2.42.12 - build: ha587570_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda + size: 536613 + timestamp: 1715784386033 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gdk-pixbuf-2.42.12-ha587570_0.conda sha256: 92cb602ef86feb35252ee909e19536fa043bd85b8507450ad8264cfa518a5881 md5: ee186d2e8db4605030753dc05025d4a0 depends: @@ -6471,52 +4829,29 @@ packages: - libjpeg-turbo >=3.0.0,<4.0a0 - libpng >=1.6.43,<1.7.0a0 - libtiff >=4.6.0,<4.8.0a0 + arch: x86_64 + platform: osx license: LGPL-2.1-or-later license_family: LGPL size: 516815 timestamp: 1715783154558 -- kind: conda - name: gdk-pixbuf - version: 2.42.12 - build: ha61d561_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/gdk-pixbuf-2.42.12-ha61d561_0.conda - sha256: 608f64aa9cf3085e91da8d417aa7680715130b4da73d8aabc50b19e29de697d2 - md5: 332ed304e6d1c1333ccbdc0fdd722fe9 - depends: - - libgcc-ng >=12 - - libglib >=2.80.2,<3.0a0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libpng >=1.6.43,<1.7.0a0 - - libtiff >=4.6.0,<4.8.0a0 - license: LGPL-2.1-or-later - license_family: LGPL - size: 536613 - timestamp: 1715784386033 -- kind: conda - name: gdk-pixbuf - version: 2.42.12 - build: hb9ae30d_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gdk-pixbuf-2.42.12-hb9ae30d_0.conda - sha256: d5283b95a8d49dcd88d29b360d8b38694aaa905d968d156d72ab71d32b38facb - md5: 201db6c2d9a3c5e46573ac4cb2e92f4f +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gdk-pixbuf-2.42.12-h7ddc832_0.conda + sha256: 72bcf0a4d3f9aa6d99d7d1d224d19f76ccdb3a4fa85e60f77d17e17985c81bd2 + md5: 151309a7e1eb57a3c2ab8088a1d74f3e depends: - - libgcc-ng >=12 + - __osx >=11.0 - libglib >=2.80.2,<3.0a0 + - libintl >=0.22.5,<1.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 - libpng >=1.6.43,<1.7.0a0 - libtiff >=4.6.0,<4.8.0a0 + arch: arm64 + platform: osx license: LGPL-2.1-or-later license_family: LGPL - size: 528149 - timestamp: 1715782983957 -- kind: conda - name: gdk-pixbuf - version: 2.42.12 - build: hed59a49_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/gdk-pixbuf-2.42.12-hed59a49_0.conda + size: 509570 + timestamp: 1715783199780 +- conda: https://conda.anaconda.org/conda-forge/win-64/gdk-pixbuf-2.42.12-hed59a49_0.conda sha256: 7a7768a5e65092242071f99b4cafe3e59546f9260ae472d3aa10a9a9aa869c3c md5: 350196a65e715882abefffd1a702172d depends: @@ -6528,57 +4863,26 @@ packages: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: LGPL-2.1-or-later license_family: LGPL size: 523967 timestamp: 1715783547727 -- kind: conda - name: getopt-win32 - version: '0.1' - build: hcfcfb64_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/getopt-win32-0.1-hcfcfb64_1.conda sha256: f3b6e689724a62f36591f6f0e4657db5507feca78e7ef08690a6b2a384216a5c md5: 714d0882dc5e692ca4683d8e520f73c6 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: LGPL-3.0-only license_family: GPL size: 21903 timestamp: 1694400856979 -- kind: conda - name: gettext - version: 0.22.5 - build: h8414b35_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.22.5-h8414b35_3.conda - sha256: 634e11f6e6560568ede805f823a2be8634c6a0a2fa6743880ec403d925923138 - md5: 89b31a91b3ac2b7b3b0e5bc4eb99c39d - depends: - - __osx >=11.0 - - gettext-tools 0.22.5 h8414b35_3 - - libasprintf 0.22.5 h8414b35_3 - - libasprintf-devel 0.22.5 h8414b35_3 - - libcxx >=16 - - libgettextpo 0.22.5 h8414b35_3 - - libgettextpo-devel 0.22.5 h8414b35_3 - - libiconv >=1.17,<2.0a0 - - libintl 0.22.5 h8414b35_3 - - libintl-devel 0.22.5 h8414b35_3 - license: LGPL-2.1-or-later AND GPL-3.0-or-later - size: 483255 - timestamp: 1723627203687 -- kind: conda - name: gettext - version: 0.22.5 - build: hdfe23c8_3 - build_number: 3 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/gettext-0.22.5-hdfe23c8_3.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/gettext-0.22.5-hdfe23c8_3.conda sha256: f68cd35c98394dc322f2695a720b31b77a9cdfe7d5c08ce53bc68c9e3fe4c6ec md5: 4e53e0f241c09fcdf674e4a37c0c70e6 depends: @@ -6592,118 +4896,109 @@ packages: - libiconv >=1.17,<2.0a0 - libintl 0.22.5 hdfe23c8_3 - libintl-devel 0.22.5 hdfe23c8_3 + arch: x86_64 + platform: osx license: LGPL-2.1-or-later AND GPL-3.0-or-later size: 480155 timestamp: 1723627002489 -- kind: conda - name: gettext-tools - version: 0.22.5 - build: h8414b35_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.22.5-h8414b35_3.conda - sha256: 50b530cf2326938b80330f78cf4056492fa8c6a5c7e313d92069ebbbb2f4d264 - md5: 47071f4b2915032e1d47119f779f9d9c +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-0.22.5-h8414b35_3.conda + sha256: 634e11f6e6560568ede805f823a2be8634c6a0a2fa6743880ec403d925923138 + md5: 89b31a91b3ac2b7b3b0e5bc4eb99c39d depends: - __osx >=11.0 + - gettext-tools 0.22.5 h8414b35_3 + - libasprintf 0.22.5 h8414b35_3 + - libasprintf-devel 0.22.5 h8414b35_3 + - libcxx >=16 + - libgettextpo 0.22.5 h8414b35_3 + - libgettextpo-devel 0.22.5 h8414b35_3 - libiconv >=1.17,<2.0a0 - libintl 0.22.5 h8414b35_3 - license: GPL-3.0-or-later - license_family: GPL - size: 2467439 - timestamp: 1723627140130 -- kind: conda - name: gettext-tools - version: 0.22.5 - build: hdfe23c8_3 - build_number: 3 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/gettext-tools-0.22.5-hdfe23c8_3.conda + - libintl-devel 0.22.5 h8414b35_3 + arch: arm64 + platform: osx + license: LGPL-2.1-or-later AND GPL-3.0-or-later + size: 483255 + timestamp: 1723627203687 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gettext-tools-0.22.5-hdfe23c8_3.conda sha256: 7fe97828eae5e067b68dd012811e614e057854ed51116bbd2fd2e8d05439ad63 md5: 70a5bb1505016ebdba1214ba10de0503 depends: - __osx >=10.13 - libiconv >=1.17,<2.0a0 - libintl 0.22.5 hdfe23c8_3 + arch: x86_64 + platform: osx license: GPL-3.0-or-later license_family: GPL size: 2513986 timestamp: 1723626957941 -- kind: conda - name: gfortran - version: 13.2.0 - build: h1ca8e4b_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran-13.2.0-h1ca8e4b_1.conda - sha256: 1232495ccd08cec4c80d475d584d1fc84365a1ef1b70e45bb0d9c317e9ec270e - md5: 9eac94b5f64ba2d59ef2424cc44bebea +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gettext-tools-0.22.5-h8414b35_3.conda + sha256: 50b530cf2326938b80330f78cf4056492fa8c6a5c7e313d92069ebbbb2f4d264 + md5: 47071f4b2915032e1d47119f779f9d9c depends: - - cctools - - gfortran_osx-arm64 13.2.0 - - ld64 - license: GPL-3.0-or-later WITH GCC-exception-3.1 + - __osx >=11.0 + - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 h8414b35_3 + arch: arm64 + platform: osx + license: GPL-3.0-or-later license_family: GPL - size: 31973 - timestamp: 1694179448089 -- kind: conda - name: gfortran - version: 13.2.0 - build: h2c809b3_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/gfortran-13.2.0-h2c809b3_1.conda - sha256: 5075f02a18644daeb16d0360ffad9ac8652e299ffb4a19ea776522a962592564 - md5: b5ad3b799b9ae996fcc8aab3a60fb48e + size: 2467439 + timestamp: 1723627140130 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran-13.3.0-h9576a4e_1.conda + sha256: fc711e4a5803c4052b3b9d29788f5256f5565f4609f7688268e89cbdae969f9b + md5: 5e5e3b592d5174eb49607a973c77825b depends: - - cctools - - gfortran_osx-64 13.2.0 - - ld64 - license: GPL-3.0-or-later WITH GCC-exception-3.1 - license_family: GPL - size: 32023 - timestamp: 1694179582309 -- kind: conda - name: gfortran - version: 13.3.0 - build: h8a56e6e_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran-13.3.0-h8a56e6e_1.conda + - gcc 13.3.0.* + - gcc_impl_linux-64 13.3.0.* + - gfortran_impl_linux-64 13.3.0.* + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 53341 + timestamp: 1724801488689 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran-13.3.0-h8a56e6e_1.conda sha256: dae0851022941cc9137dad3d2ede52d7d7f760bc46f5b06252b657b2a4dbdcdf md5: 9f5a15470233d9366daad8d17c0d2b1d depends: - gcc 13.3.0.* - gcc_impl_linux-aarch64 13.3.0.* - gfortran_impl_linux-aarch64 13.3.0.* + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 53556 timestamp: 1724802367553 -- kind: conda - name: gfortran - version: 13.3.0 - build: h9576a4e_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gfortran-13.3.0-h9576a4e_1.conda - sha256: fc711e4a5803c4052b3b9d29788f5256f5565f4609f7688268e89cbdae969f9b - md5: 5e5e3b592d5174eb49607a973c77825b +- conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran-13.2.0-h2c809b3_1.conda + sha256: 5075f02a18644daeb16d0360ffad9ac8652e299ffb4a19ea776522a962592564 + md5: b5ad3b799b9ae996fcc8aab3a60fb48e depends: - - gcc 13.3.0.* - - gcc_impl_linux-64 13.3.0.* - - gfortran_impl_linux-64 13.3.0.* - license: BSD-3-Clause - license_family: BSD - size: 53341 - timestamp: 1724801488689 -- kind: conda - name: gfortran_impl_linux-64 - version: 13.3.0 - build: h10434e7_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-13.3.0-h10434e7_1.conda + - cctools + - gfortran_osx-64 13.2.0 + - ld64 + arch: x86_64 + platform: osx + license: GPL-3.0-or-later WITH GCC-exception-3.1 + license_family: GPL + size: 32023 + timestamp: 1694179582309 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran-13.2.0-h1ca8e4b_1.conda + sha256: 1232495ccd08cec4c80d475d584d1fc84365a1ef1b70e45bb0d9c317e9ec270e + md5: 9eac94b5f64ba2d59ef2424cc44bebea + depends: + - cctools + - gfortran_osx-arm64 13.2.0 + - ld64 + arch: arm64 + platform: osx + license: GPL-3.0-or-later WITH GCC-exception-3.1 + license_family: GPL + size: 31973 + timestamp: 1694179448089 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_impl_linux-64-13.3.0-h10434e7_1.conda sha256: 9439e1f01d328d4cbdfbb2c8579b83619a694ad114ddf671fb9971ebf088d267 md5: 6709e113709b6ba67cc0f4b0de58ef7f depends: @@ -6712,17 +5007,13 @@ packages: - libgfortran5 >=13.3.0 - libstdcxx >=13.3.0 - sysroot_linux-64 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 15894110 timestamp: 1724801415339 -- kind: conda - name: gfortran_impl_linux-aarch64 - version: 13.3.0 - build: h174a3c4_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_impl_linux-aarch64-13.3.0-h174a3c4_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_impl_linux-aarch64-13.3.0-h174a3c4_1.conda sha256: 5cafc6323e7a0fed15683237d7d5f533a91bde09ac239ae921ef22ff963d15bc md5: d3822f0c83af67924a12f052b33aca0c depends: @@ -6731,17 +5022,13 @@ packages: - libgfortran5 >=13.3.0 - libstdcxx >=13.3.0 - sysroot_linux-aarch64 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 12917001 timestamp: 1724802292815 -- kind: conda - name: gfortran_impl_osx-64 - version: 13.2.0 - build: h2bc304d_3 - build_number: 3 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/gfortran_impl_osx-64-13.2.0-h2bc304d_3.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran_impl_osx-64-13.2.0-h2bc304d_3.conda sha256: af284f1df515e4a8623f23cc43298aab962260e890c620d079300d7d6d7acf08 md5: 57aa4cb95277a27aa0a1834ed97be45b depends: @@ -6755,17 +5042,13 @@ packages: - mpc >=1.3.1,<2.0a0 - mpfr >=4.2.1,<5.0a0 - zlib + arch: x86_64 + platform: osx license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 20378841 timestamp: 1707328905745 -- kind: conda - name: gfortran_impl_osx-arm64 - version: 13.2.0 - build: h252ada1_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran_impl_osx-arm64-13.2.0-h252ada1_3.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran_impl_osx-arm64-13.2.0-h252ada1_3.conda sha256: 1ba0d59650e2d54ebcfdd6d6e7ce6823241764183c34f082bc1313ec43b01c7a md5: 4a020e943a2888b242b312a8e953eb9a depends: @@ -6779,17 +5062,13 @@ packages: - mpc >=1.3.1,<2.0a0 - mpfr >=4.2.1,<5.0a0 - zlib + arch: arm64 + platform: osx license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 18431819 timestamp: 1707330710124 -- kind: conda - name: gfortran_linux-64 - version: 13.3.0 - build: hb919d3a_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-13.3.0-hb919d3a_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/gfortran_linux-64-13.3.0-hb919d3a_7.conda sha256: 73ba4c14b6b372385b0cb8e06c45a7df5ffc0ca688bd10180c0a3459ab71390d md5: 0b8e7413559c4c892a37c35de4559969 depends: @@ -6797,17 +5076,13 @@ packages: - gcc_linux-64 13.3.0 hc28eda2_7 - gfortran_impl_linux-64 13.3.0.* - sysroot_linux-64 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 30355 timestamp: 1731939610282 -- kind: conda - name: gfortran_linux-aarch64 - version: 13.3.0 - build: h2809cf8_7 - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_linux-aarch64-13.3.0-h2809cf8_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gfortran_linux-aarch64-13.3.0-h2809cf8_7.conda sha256: 18b96cec71e0ccbbe6a0f374add98ea14cce0b95e37b8c94dfeacb0fb7f609be md5: 694da47574296b67d58fb88d79ad241a depends: @@ -6815,17 +5090,13 @@ packages: - gcc_linux-aarch64 13.3.0 h1cd514b_7 - gfortran_impl_linux-aarch64 13.3.0.* - sysroot_linux-aarch64 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 30553 timestamp: 1731939522932 -- kind: conda - name: gfortran_osx-64 - version: 13.2.0 - build: h18f7dce_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/gfortran_osx-64-13.2.0-h18f7dce_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/gfortran_osx-64-13.2.0-h18f7dce_1.conda sha256: 3ec61971be147b5f723293fc56e0d35a4730aa457b7c5e03aeb78b341f41ca2c md5: 71d59c1ae3fea7a97154ff0e20b38df3 depends: @@ -6837,17 +5108,13 @@ packages: - libgfortran 5.* - libgfortran-devel_osx-64 13.2.0 - libgfortran5 >=13.2.0 + arch: x86_64 + platform: osx license: GPL-3.0-or-later WITH GCC-exception-3.1 license_family: GPL size: 34970 timestamp: 1694179553303 -- kind: conda - name: gfortran_osx-arm64 - version: 13.2.0 - build: h57527a5_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran_osx-arm64-13.2.0-h57527a5_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gfortran_osx-arm64-13.2.0-h57527a5_1.conda sha256: 3b075f15aba705d43870fdfde5a8d3f1adc9a045d575b4665726afe244149a64 md5: 13ca786286ed5efc9dc75f64b5101210 depends: @@ -6859,27 +5126,31 @@ packages: - libgfortran 5.* - libgfortran-devel_osx-arm64 13.2.0 - libgfortran5 >=13.2.0 + arch: arm64 + platform: osx license: GPL-3.0-or-later WITH GCC-exception-3.1 license_family: GPL size: 35260 timestamp: 1694179424284 -- kind: conda - name: git - version: 2.47.1 - build: h57928b3_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/git-2.47.1-h57928b3_0.conda - sha256: e140c2348b2a967bb7259c22420201e9dcac5b75aca3881e30f2a3f6c88e44d0 - md5: 84cd6e6a2d60974df8c954eafdf72f2b +- conda: https://conda.anaconda.org/conda-forge/linux-64/git-2.47.1-pl5321h59d505e_0.conda + sha256: 548008002931bd7152a27f135ec58df7a9fdb3c97e955613af48c4f80310b4e2 + md5: 3b7a5e35dd484e8de87522b63f7daf15 + depends: + - __glibc >=2.17,<3.0.a0 + - libcurl >=8.10.1,<9.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libiconv >=1.17,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - pcre2 >=10.44,<10.45.0a0 + - perl 5.* + arch: x86_64 + platform: linux license: GPL-2.0-or-later and LGPL-2.1-or-later - size: 122064793 - timestamp: 1732612079527 -- kind: conda - name: git - version: 2.47.1 - build: pl5321h0e2bd52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/git-2.47.1-pl5321h0e2bd52_0.conda + size: 10551592 + timestamp: 1732611733959 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/git-2.47.1-pl5321h0e2bd52_0.conda sha256: 56d00c64aa5e46f44cab00495811ad64c74ca9296e67bf9b4d095d3ddd28b926 md5: e99063b75441e2d32220aaaffd8b1f29 depends: @@ -6891,15 +5162,12 @@ packages: - openssl >=3.4.0,<4.0a0 - pcre2 >=10.44,<10.45.0a0 - perl 5.* + arch: aarch64 + platform: linux license: GPL-2.0-or-later and LGPL-2.1-or-later size: 13916343 timestamp: 1732614464785 -- kind: conda - name: git - version: 2.47.1 - build: pl5321h0e333bc_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/git-2.47.1-pl5321h0e333bc_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/git-2.47.1-pl5321h0e333bc_0.conda sha256: a34a3a90d84854a826eca6d023e12e43cdf2931fb24d227627ad2e7133fed3a6 md5: 26b24805810e27fd0edbd2d1a104067f depends: @@ -6912,36 +5180,12 @@ packages: - openssl >=3.4.0,<4.0a0 - pcre2 >=10.44,<10.45.0a0 - perl 5.* + arch: x86_64 + platform: osx license: GPL-2.0-or-later and LGPL-2.1-or-later size: 12034916 timestamp: 1732612287627 -- kind: conda - name: git - version: 2.47.1 - build: pl5321h59d505e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/git-2.47.1-pl5321h59d505e_0.conda - sha256: 548008002931bd7152a27f135ec58df7a9fdb3c97e955613af48c4f80310b4e2 - md5: 3b7a5e35dd484e8de87522b63f7daf15 - depends: - - __glibc >=2.17,<3.0.a0 - - libcurl >=8.10.1,<9.0a0 - - libexpat >=2.6.4,<3.0a0 - - libgcc >=13 - - libiconv >=1.17,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - - pcre2 >=10.44,<10.45.0a0 - - perl 5.* - license: GPL-2.0-or-later and LGPL-2.1-or-later - size: 10551592 - timestamp: 1732611733959 -- kind: conda - name: git - version: 2.47.1 - build: pl5321hd71a902_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/git-2.47.1-pl5321hd71a902_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/git-2.47.1-pl5321hd71a902_0.conda sha256: 4f5675de685b77600f6bd06a608b66b4a26b9233bfff3046b3823b1fb81e1c2a md5: b330d9ca951dec809764576b28dd2b7b depends: @@ -6954,103 +5198,102 @@ packages: - openssl >=3.4.0,<4.0a0 - pcre2 >=10.44,<10.45.0a0 - perl 5.* + arch: arm64 + platform: osx license: GPL-2.0-or-later and LGPL-2.1-or-later size: 10831502 timestamp: 1732612399972 -- kind: conda - name: gl2ps - version: 1.4.2 - build: had7236b_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/gl2ps-1.4.2-had7236b_1.conda - sha256: 5a18f0aa963adb4402dbce93516f40756beaa206e82c56592aafb1eb88060ba5 - md5: 033491c5cb1ce4e915238307f0136fa0 +- conda: https://conda.anaconda.org/conda-forge/win-64/git-2.47.1-h57928b3_0.conda + sha256: e140c2348b2a967bb7259c22420201e9dcac5b75aca3881e30f2a3f6c88e44d0 + md5: 84cd6e6a2d60974df8c954eafdf72f2b + arch: x86_64 + platform: win + license: GPL-2.0-or-later and LGPL-2.1-or-later + size: 122064793 + timestamp: 1732612079527 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gl2ps-1.4.2-hae5d5c5_1.conda + sha256: 68f071ea25e79ee427c0d6c35ccc137d66f093a37660a4e41bafe0c49d64f2d6 + md5: 00e642ec191a19bf806a3915800e9524 depends: + - libgcc-ng >=12 - libpng >=1.6.43,<1.7.0a0 - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: linux license: LGPL-2.0-or-later license_family: LGPL - size: 71943 - timestamp: 1718543473790 -- kind: conda - name: gl2ps - version: 1.4.2 - build: hae5d5c5_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gl2ps-1.4.2-hae5d5c5_1.conda - sha256: 68f071ea25e79ee427c0d6c35ccc137d66f093a37660a4e41bafe0c49d64f2d6 - md5: 00e642ec191a19bf806a3915800e9524 + size: 74102 + timestamp: 1718542981099 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gl2ps-1.4.2-hedfd65a_1.conda + sha256: e6500b15fd2dbd776df204556702bb2c90d037523c18cd0a111c7c0f0d314aa2 + md5: 6a087dc84254035cbde984f2c010c9ef depends: - libgcc-ng >=12 - libpng >=1.6.43,<1.7.0a0 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: LGPL-2.0-or-later + license_family: LGPL + size: 72023 + timestamp: 1718542978037 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gl2ps-1.4.2-hd82a5f3_1.conda + sha256: 2da5a699a75a9366996d469e05bbf2014f62102b2da70607a2230f9031ca7f52 + md5: 707318c6171d4d8b07b51e0de03c7595 + depends: + - __osx >=10.13 + - libpng >=1.6.43,<1.7.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: osx license: LGPL-2.0-or-later license_family: LGPL - size: 74102 - timestamp: 1718542981099 -- kind: conda - name: gl2ps - version: 1.4.2 - build: hc97c1ff_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/gl2ps-1.4.2-hc97c1ff_1.conda + size: 67880 + timestamp: 1718542959037 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gl2ps-1.4.2-hc97c1ff_1.conda sha256: b6088d2b1eccebc8adc1e6c36df0849b300d957cff3e6a33fc9081d2e9efaf22 md5: 8e790b98d38f4d56b64308c642dd5533 depends: - __osx >=11.0 - libpng >=1.6.43,<1.7.0a0 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: LGPL-2.0-or-later license_family: LGPL size: 63049 timestamp: 1718543005831 -- kind: conda - name: gl2ps - version: 1.4.2 - build: hd82a5f3_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/gl2ps-1.4.2-hd82a5f3_1.conda - sha256: 2da5a699a75a9366996d469e05bbf2014f62102b2da70607a2230f9031ca7f52 - md5: 707318c6171d4d8b07b51e0de03c7595 +- conda: https://conda.anaconda.org/conda-forge/win-64/gl2ps-1.4.2-had7236b_1.conda + sha256: 5a18f0aa963adb4402dbce93516f40756beaa206e82c56592aafb1eb88060ba5 + md5: 033491c5cb1ce4e915238307f0136fa0 depends: - - __osx >=10.13 - libpng >=1.6.43,<1.7.0a0 - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: LGPL-2.0-or-later license_family: LGPL - size: 67880 - timestamp: 1718542959037 -- kind: conda - name: gl2ps - version: 1.4.2 - build: hedfd65a_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/gl2ps-1.4.2-hedfd65a_1.conda - sha256: e6500b15fd2dbd776df204556702bb2c90d037523c18cd0a111c7c0f0d314aa2 - md5: 6a087dc84254035cbde984f2c010c9ef + size: 71943 + timestamp: 1718543473790 +- conda: https://conda.anaconda.org/conda-forge/linux-64/glew-2.1.0-h9c3ff4c_2.tar.bz2 + sha256: 86f5484e38f4604f7694b14f64238e932e8fd8d7364e86557f4911eded2843ae + md5: fb05eb5c47590b247658243d27fc32f1 depends: - - libgcc-ng >=12 - - libpng >=1.6.43,<1.7.0a0 - - libzlib >=1.3.1,<2.0a0 - license: LGPL-2.0-or-later - license_family: LGPL - size: 72023 - timestamp: 1718542978037 -- kind: conda - name: glew - version: 2.1.0 - build: h01db608_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/glew-2.1.0-h01db608_2.tar.bz2 + - libgcc-ng >=9.3.0 + - libglu + - libstdcxx-ng >=9.3.0 + - xorg-libx11 + - xorg-libxext + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 662569 + timestamp: 1607113198887 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/glew-2.1.0-h01db608_2.tar.bz2 sha256: f872cc93507b833ec5f2f08e479cc0074e5d73defe4f91d54f667a324d0b4f61 md5: 2a46529de1ff766f31333d3cdff2b734 depends: @@ -7059,223 +5302,154 @@ packages: - libstdcxx-ng >=9.3.0 - xorg-libx11 - xorg-libxext + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 649830 timestamp: 1607113149975 -- kind: conda - name: glew - version: 2.1.0 - build: h046ec9c_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/glew-2.1.0-h046ec9c_2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-64/glew-2.1.0-h046ec9c_2.tar.bz2 sha256: 1d114d93fd4bf043aa6fccc550379c0ac0a48461633cd1e1e49abe55be8562df md5: 6b753c8c7e4c46a8eb17b6f1781f958a depends: - libcxx >=11.0.0 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD size: 708867 timestamp: 1607113212595 -- kind: conda - name: glew - version: 2.1.0 - build: h39d44d4_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/glew-2.1.0-h39d44d4_2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/glew-2.1.0-h9f76cd9_2.tar.bz2 + sha256: 582991e48b1000eea38a1df68309652a92c1af62fa96f78e6659c799d28d00cf + md5: ec67d4b810ad567618722a2772e9755c + depends: + - libcxx >=11.0.0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 783742 + timestamp: 1607113139225 +- conda: https://conda.anaconda.org/conda-forge/win-64/glew-2.1.0-h39d44d4_2.tar.bz2 sha256: 6a780b5ca7253129ea5e63671f0aeafc8f119167e170a60ccbd8573669ef848d md5: 840d21c1ee66b91af3d0211e7766393a depends: - vc >=14.1,<15.0a0 - vs2015_runtime >=14.16.27012 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD size: 963275 timestamp: 1607113700054 -- kind: conda - name: glew - version: 2.1.0 - build: h9c3ff4c_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/glew-2.1.0-h9c3ff4c_2.tar.bz2 - sha256: 86f5484e38f4604f7694b14f64238e932e8fd8d7364e86557f4911eded2843ae - md5: fb05eb5c47590b247658243d27fc32f1 - depends: - - libgcc-ng >=9.3.0 - - libglu - - libstdcxx-ng >=9.3.0 - - xorg-libx11 - - xorg-libxext - license: BSD-3-Clause - license_family: BSD - size: 662569 - timestamp: 1607113198887 -- kind: conda - name: glew - version: 2.1.0 - build: h9f76cd9_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/glew-2.1.0-h9f76cd9_2.tar.bz2 - sha256: 582991e48b1000eea38a1df68309652a92c1af62fa96f78e6659c799d28d00cf - md5: ec67d4b810ad567618722a2772e9755c +- conda: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda + sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c + md5: c94a5994ef49749880a8139cf9afcbe1 depends: - - libcxx >=11.0.0 - license: BSD-3-Clause - license_family: BSD - size: 783742 - timestamp: 1607113139225 -- kind: conda - name: gmp - version: 6.3.0 - build: h0a1ffab_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/gmp-6.3.0-h0a1ffab_2.conda + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 460055 + timestamp: 1718980856608 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gmp-6.3.0-h0a1ffab_2.conda sha256: a5e341cbf797c65d2477b27d99091393edbaa5178c7d69b7463bb105b0488e69 md5: 7cbfb3a8bb1b78a7f5518654ac6725ad depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: GPL-2.0-or-later OR LGPL-3.0-or-later size: 417323 timestamp: 1718980707330 -- kind: conda - name: gmp - version: 6.3.0 - build: h7bae524_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda - sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd - md5: eed7278dfbab727b56f2c0b64330814b - depends: - - __osx >=11.0 - - libcxx >=16 - license: GPL-2.0-or-later OR LGPL-3.0-or-later - size: 365188 - timestamp: 1718981343258 -- kind: conda - name: gmp - version: 6.3.0 - build: hac33072_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gmp-6.3.0-hac33072_2.conda - sha256: 309cf4f04fec0c31b6771a5809a1909b4b3154a2208f52351e1ada006f4c750c - md5: c94a5994ef49749880a8139cf9afcbe1 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - license: GPL-2.0-or-later OR LGPL-3.0-or-later - size: 460055 - timestamp: 1718980856608 -- kind: conda - name: gmp - version: 6.3.0 - build: hf036a51_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/gmp-6.3.0-hf036a51_2.conda sha256: 75aa5e7a875afdcf4903b7dc98577672a3dc17b528ac217b915f9528f93c85fc md5: 427101d13f19c4974552a4e5b072eef1 depends: - __osx >=10.13 - libcxx >=16 + arch: x86_64 + platform: osx license: GPL-2.0-or-later OR LGPL-3.0-or-later size: 428919 timestamp: 1718981041839 -- kind: conda - name: graphite2 - version: 1.3.13 - build: h2f0025b_1003 - build_number: 1003 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.13-h2f0025b_1003.conda - sha256: c7585e1fb536120583790080f3b3875c04d5f2d64eafbc87e9aa39895e4118c0 - md5: f33009add6a08358bc12d114ceec1304 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gmp-6.3.0-h7bae524_2.conda + sha256: 76e222e072d61c840f64a44e0580c2503562b009090f55aa45053bf1ccb385dd + md5: eed7278dfbab727b56f2c0b64330814b depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - license: LGPL-2.0-or-later - license_family: LGPL - size: 99453 - timestamp: 1711634223220 -- kind: conda - name: graphite2 - version: 1.3.13 - build: h59595ed_1003 - build_number: 1003 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: GPL-2.0-or-later OR LGPL-3.0-or-later + size: 365188 + timestamp: 1718981343258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/graphite2-1.3.13-h59595ed_1003.conda sha256: 0595b009f20f8f60f13a6398e7cdcbd2acea5f986633adcf85f5a2283c992add md5: f87c7b7c2cb45f323ffbce941c78ab7c depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.0-or-later license_family: LGPL size: 96855 timestamp: 1711634169756 -- kind: conda - name: graphite2 - version: 1.3.13 - build: h63175ca_1003 - build_number: 1003 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda - sha256: 25040a4f371b9b51663f546bac620122c237fa1d5d32968e21b0751af9b7f56f - md5: 3194499ee7d1a67404a87d0eefdd92c6 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphite2-1.3.13-h2f0025b_1003.conda + sha256: c7585e1fb536120583790080f3b3875c04d5f2d64eafbc87e9aa39895e4118c0 + md5: f33009add6a08358bc12d114ceec1304 depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: LGPL-2.0-or-later license_family: LGPL - size: 95406 - timestamp: 1711634622644 -- kind: conda - name: graphite2 - version: 1.3.13 - build: h73e2aa4_1003 - build_number: 1003 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda + size: 99453 + timestamp: 1711634223220 +- conda: https://conda.anaconda.org/conda-forge/osx-64/graphite2-1.3.13-h73e2aa4_1003.conda sha256: b71db966e47cd83b16bfcc2099b8fa87c07286f24a0742078fede4c84314f91a md5: fc7124f86e1d359fc5d878accd9e814c depends: - libcxx >=16 + arch: x86_64 + platform: osx license: LGPL-2.0-or-later license_family: LGPL size: 84384 timestamp: 1711634311095 -- kind: conda - name: graphite2 - version: 1.3.13 - build: hebf3989_1003 - build_number: 1003 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphite2-1.3.13-hebf3989_1003.conda sha256: 2eadafbfc52f5e7df3da3c3b7e5bbe34d970bea1d645ffe60b0b1c3a216657f5 md5: 339991336eeddb70076d8ca826dac625 depends: - libcxx >=16 + arch: arm64 + platform: osx license: LGPL-2.0-or-later license_family: LGPL size: 79774 timestamp: 1711634444608 -- kind: conda - name: graphviz - version: 12.0.0 - build: h2a7c30b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/graphviz-12.0.0-h2a7c30b_0.conda - sha256: d3e1884cc4eb2677941cacb718919df75a53c214a9230e2bb18faa96becb1dd4 - md5: ce14a315beb92bfa8e544e912a17c7e7 +- conda: https://conda.anaconda.org/conda-forge/win-64/graphite2-1.3.13-h63175ca_1003.conda + sha256: 25040a4f371b9b51663f546bac620122c237fa1d5d32968e21b0751af9b7f56f + md5: 3194499ee7d1a67404a87d0eefdd92c6 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win + license: LGPL-2.0-or-later + license_family: LGPL + size: 95406 + timestamp: 1711634622644 +- conda: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.0.0-hba01fac_0.conda + sha256: 2eb794ae1de42b688f89811113ae3dcb63698272ee8f87029abce5f77c742c2a + md5: 953e31ea00d46beb7e64a79fc291ec44 depends: + - __glibc >=2.17,<3.0.a0 - cairo >=1.18.0,<2.0a0 - fonts-conda-ecosystem - gdk-pixbuf >=2.42.12,<3.0a0 @@ -7290,69 +5464,61 @@ packages: - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - pango >=1.50.14,<2.0a0 + arch: x86_64 + platform: linux license: EPL-1.0 license_family: Other - size: 2402404 - timestamp: 1722673792633 -- kind: conda - name: graphviz - version: 12.0.0 - build: hb01754f_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.0.0-hb01754f_0.conda - sha256: 19c229d7ca0e866c70ffe79e1258aaab598e7caa7fa258ffe6cbff15b71c1ced - md5: 8074641ca215d6f30b6152d9d79f0b9e + size: 2303111 + timestamp: 1722673717117 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/graphviz-12.0.0-h2a7c30b_0.conda + sha256: d3e1884cc4eb2677941cacb718919df75a53c214a9230e2bb18faa96becb1dd4 + md5: ce14a315beb92bfa8e544e912a17c7e7 depends: - cairo >=1.18.0,<2.0a0 - - getopt-win32 >=0.1,<0.2.0a0 + - fonts-conda-ecosystem + - gdk-pixbuf >=2.42.12,<3.0a0 + - gtk2 - gts >=0.7.6,<0.8.0a0 - libexpat >=2.6.2,<3.0a0 + - libgcc-ng >=12 - libgd >=2.3.3,<2.4.0a0 - libglib >=2.80.3,<3.0a0 + - librsvg >=2.58.2,<3.0a0 + - libstdcxx-ng >=12 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - pango >=1.50.14,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + arch: aarch64 + platform: linux license: EPL-1.0 license_family: Other - size: 1157652 - timestamp: 1722674488876 -- kind: conda - name: graphviz - version: 12.0.0 - build: hba01fac_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/graphviz-12.0.0-hba01fac_0.conda - sha256: 2eb794ae1de42b688f89811113ae3dcb63698272ee8f87029abce5f77c742c2a - md5: 953e31ea00d46beb7e64a79fc291ec44 + size: 2402404 + timestamp: 1722673792633 +- conda: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.0.0-he14ced1_0.conda + sha256: 91fbeecf3aaa4032c6f01c4242cfe2ee1bee21e70d085bafb3958ce7d6ab7c3c + md5: ef49aa1e3614bfc6fb5369675129c09b depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=10.13 - cairo >=1.18.0,<2.0a0 - fonts-conda-ecosystem - gdk-pixbuf >=2.42.12,<3.0a0 - gtk2 - gts >=0.7.6,<0.8.0a0 + - libcxx >=16 - libexpat >=2.6.2,<3.0a0 - - libgcc-ng >=12 - libgd >=2.3.3,<2.4.0a0 - libglib >=2.80.3,<3.0a0 - librsvg >=2.58.2,<3.0a0 - - libstdcxx-ng >=12 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - pango >=1.50.14,<2.0a0 + arch: x86_64 + platform: osx license: EPL-1.0 license_family: Other - size: 2303111 - timestamp: 1722673717117 -- kind: conda - name: graphviz - version: 12.0.0 - build: hbf8cc41_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.0.0-hbf8cc41_0.conda + size: 4984341 + timestamp: 1722673941539 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/graphviz-12.0.0-hbf8cc41_0.conda sha256: 33867d6ebc54f290dfb511fdca0297b30ca06985ac4443e1fc9d7fe03bfbad05 md5: 29c0dcbd4ec7135b7a55805aa3a5a331 depends: @@ -7370,64 +5536,58 @@ packages: - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - pango >=1.50.14,<2.0a0 + arch: arm64 + platform: osx license: EPL-1.0 license_family: Other size: 5082874 timestamp: 1722673934247 -- kind: conda - name: graphviz - version: 12.0.0 - build: he14ced1_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/graphviz-12.0.0-he14ced1_0.conda - sha256: 91fbeecf3aaa4032c6f01c4242cfe2ee1bee21e70d085bafb3958ce7d6ab7c3c - md5: ef49aa1e3614bfc6fb5369675129c09b +- conda: https://conda.anaconda.org/conda-forge/win-64/graphviz-12.0.0-hb01754f_0.conda + sha256: 19c229d7ca0e866c70ffe79e1258aaab598e7caa7fa258ffe6cbff15b71c1ced + md5: 8074641ca215d6f30b6152d9d79f0b9e depends: - - __osx >=10.13 - cairo >=1.18.0,<2.0a0 - - fonts-conda-ecosystem - - gdk-pixbuf >=2.42.12,<3.0a0 - - gtk2 + - getopt-win32 >=0.1,<0.2.0a0 - gts >=0.7.6,<0.8.0a0 - - libcxx >=16 - libexpat >=2.6.2,<3.0a0 - libgd >=2.3.3,<2.4.0a0 - libglib >=2.80.3,<3.0a0 - - librsvg >=2.58.2,<3.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - pango >=1.50.14,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: EPL-1.0 license_family: Other - size: 4984341 - timestamp: 1722673941539 -- kind: conda - name: gtk2 - version: 2.24.33 - build: h2c15c3c_5 - build_number: 5 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-h2c15c3c_5.conda - sha256: 9d7a50dae4aef357473b16c5121c1803a0c9ee1b8f93c4d90dc0196ae5007208 - md5: 308376a1154bc0ab3bbeeccf6ff986be + size: 1157652 + timestamp: 1722674488876 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h6470451_5.conda + sha256: 16644d036321b32635369c183502974c8b989fa516c313bd379f9aa4adcdf642 + md5: 1483ba046164be27df7f6eddbcec3a12 depends: - - __osx >=10.13 + - __glibc >=2.17,<3.0.a0 - atk-1.0 >=2.38.0 - cairo >=1.18.0,<2.0a0 + - fontconfig >=2.14.2,<3.0a0 + - fonts-conda-ecosystem + - freetype >=2.12.1,<3.0a0 - gdk-pixbuf >=2.42.12,<3.0a0 + - harfbuzz >=9.0.0,<10.0a0 + - libgcc-ng >=12 - libglib >=2.80.3,<3.0a0 - - libintl >=0.22.5,<1.0a0 - pango >=1.54.0,<2.0a0 + - xorg-libx11 >=1.8.9,<2.0a0 + - xorg-libxext >=1.3.4,<2.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later - size: 6162947 - timestamp: 1721286459536 -- kind: conda - name: gtk2 - version: 2.24.33 - build: h4cb56f0_5 - build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/gtk2-2.24.33-h4cb56f0_5.conda + size: 6501561 + timestamp: 1721285940408 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gtk2-2.24.33-h4cb56f0_5.conda sha256: 21c06dce331299cabf1d5c8a1c68ab537811a6b979ee59cec0f8250009324aae md5: 1e19ec7c57430dcd5e475e21209f3996 depends: @@ -7444,179 +5604,132 @@ packages: - xorg-libx11 >=1.8.9,<2.0a0 - xorg-libxext >=1.3.4,<2.0a0 - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: aarch64 + platform: linux license: LGPL-2.1-or-later size: 6591811 timestamp: 1721293692701 -- kind: conda - name: gtk2 - version: 2.24.33 - build: h6470451_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gtk2-2.24.33-h6470451_5.conda - sha256: 16644d036321b32635369c183502974c8b989fa516c313bd379f9aa4adcdf642 - md5: 1483ba046164be27df7f6eddbcec3a12 +- conda: https://conda.anaconda.org/conda-forge/osx-64/gtk2-2.24.33-he806959_7.conda + sha256: b9993b2750787cc2cd71713ac0700ec321f2f08bd3caf23dda11e07813a0acc1 + md5: c4bf60cbe56ab09fbd30809aaa89b333 depends: - - __glibc >=2.17,<3.0.a0 - - atk-1.0 >=2.38.0 - - cairo >=1.18.0,<2.0a0 - - fontconfig >=2.14.2,<3.0a0 - - fonts-conda-ecosystem - - freetype >=2.12.1,<3.0a0 + - __osx >=10.13 + - atk-1.0 >=2.38.0 + - cairo >=1.18.2,<2.0a0 - gdk-pixbuf >=2.42.12,<3.0a0 - - harfbuzz >=9.0.0,<10.0a0 - - libgcc-ng >=12 - - libglib >=2.80.3,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libintl >=0.22.5,<1.0a0 - pango >=1.54.0,<2.0a0 - - xorg-libx11 >=1.8.9,<2.0a0 - - xorg-libxext >=1.3.4,<2.0a0 - - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: x86_64 + platform: osx license: LGPL-2.1-or-later - size: 6501561 - timestamp: 1721285940408 -- kind: conda - name: gtk2 - version: 2.24.33 - build: h91d5085_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-h91d5085_5.conda - sha256: 26ca08e16bb530465370d94309bfb500438f6cff4d6cf85725db3b7afcd9eccd - md5: 23558d38b8e80959b74cfe83acad7c66 + size: 6072642 + timestamp: 1734919573363 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gtk2-2.24.33-hc5c4cae_7.conda + sha256: 3bd7678016021214fb00b7200223e7f6713f11c2bc152b8472018ab7c548bb97 + md5: 3a2a37b8a8e407421dce820377d84da6 depends: - __osx >=11.0 - atk-1.0 >=2.38.0 - - cairo >=1.18.0,<2.0a0 + - cairo >=1.18.2,<2.0a0 - gdk-pixbuf >=2.42.12,<3.0a0 - - libglib >=2.80.3,<3.0a0 + - libglib >=2.82.2,<3.0a0 - libintl >=0.22.5,<1.0a0 - pango >=1.54.0,<2.0a0 + arch: arm64 + platform: osx license: LGPL-2.1-or-later - size: 6152068 - timestamp: 1721286930050 -- kind: conda - name: gts - version: 0.7.6 - build: h53e17e3_4 - build_number: 4 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda - sha256: d5b82a36f7e9d7636b854e56d1b4fe01c4d895128a7b73e2ec6945b691ff3314 - md5: 848cc963fcfbd063c7a023024aa3bec0 - depends: - - libcxx >=15.0.7 - - libglib >=2.76.3,<3.0a0 - license: LGPL-2.0-or-later - license_family: LGPL - size: 280972 - timestamp: 1686545425074 -- kind: conda - name: gts - version: 0.7.6 - build: h6b5321d_4 - build_number: 4 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda - sha256: b79755d2f9fc2113b6949bfc170c067902bc776e2c20da26e746e780f4f5a2d4 - md5: a41f14768d5e377426ad60c613f2923b - depends: - - libglib >=2.76.3,<3.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: LGPL-2.0-or-later - license_family: LGPL - size: 188688 - timestamp: 1686545648050 -- kind: conda - name: gts - version: 0.7.6 - build: h977cf35_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda + size: 6193142 + timestamp: 1734920088088 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gts-0.7.6-h977cf35_4.conda sha256: b5cd16262fefb836f69dc26d879b6508d29f8a5c5948a966c47fe99e2e19c99b md5: 4d8df0b0db060d33c9a702ada998a8fe depends: - libgcc-ng >=12 - libglib >=2.76.3,<3.0a0 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.0-or-later license_family: LGPL size: 318312 timestamp: 1686545244763 -- kind: conda - name: gts - version: 0.7.6 - build: he293c15_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/gts-0.7.6-he293c15_4.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gts-0.7.6-he293c15_4.conda sha256: 1e9cc30d1c746d5a3399a279f5f642a953f37d9f9c82fd4d55b301e9c2a23f7c md5: 2aeaeddbd89e84b60165463225814cfc depends: - libgcc-ng >=12 - libglib >=2.76.3,<3.0a0 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: LGPL-2.0-or-later license_family: LGPL size: 332673 timestamp: 1686545222091 -- kind: conda - name: gts - version: 0.7.6 - build: he42f4ea_4 - build_number: 4 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/gts-0.7.6-h53e17e3_4.conda + sha256: d5b82a36f7e9d7636b854e56d1b4fe01c4d895128a7b73e2ec6945b691ff3314 + md5: 848cc963fcfbd063c7a023024aa3bec0 + depends: + - libcxx >=15.0.7 + - libglib >=2.76.3,<3.0a0 + arch: x86_64 + platform: osx + license: LGPL-2.0-or-later + license_family: LGPL + size: 280972 + timestamp: 1686545425074 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/gts-0.7.6-he42f4ea_4.conda sha256: e0f8c7bc1b9ea62ded78ffa848e37771eeaaaf55b3146580513c7266862043ba md5: 21b4dd3098f63a74cf2aa9159cbef57d depends: - libcxx >=15.0.7 - libglib >=2.76.3,<3.0a0 + arch: arm64 + platform: osx license: LGPL-2.0-or-later license_family: LGPL size: 304331 timestamp: 1686545503242 -- kind: conda - name: gxx - version: 13.3.0 - build: h8a56e6e_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx-13.3.0-h8a56e6e_1.conda - sha256: d94714da0135d592d2cd71998a19dc9f65e5a55857c11ec6aa357e5c23fb5a0d - md5: 838d6b64b84b1d17c564b146a839e988 +- conda: https://conda.anaconda.org/conda-forge/win-64/gts-0.7.6-h6b5321d_4.conda + sha256: b79755d2f9fc2113b6949bfc170c067902bc776e2c20da26e746e780f4f5a2d4 + md5: a41f14768d5e377426ad60c613f2923b depends: - - gcc 13.3.0.* - - gxx_impl_linux-aarch64 13.3.0.* - license: BSD-3-Clause - license_family: BSD - size: 53580 - timestamp: 1724802377970 -- kind: conda - name: gxx - version: 13.3.0 - build: h9576a4e_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gxx-13.3.0-h9576a4e_1.conda + - libglib >=2.76.3,<3.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win + license: LGPL-2.0-or-later + license_family: LGPL + size: 188688 + timestamp: 1686545648050 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx-13.3.0-h9576a4e_1.conda sha256: 5446f5d1d609d996579f706d2020e83ef48e086d943bfeef7ab807ea246888a0 md5: 209182ca6b20aeff62f442e843961d81 depends: - gcc 13.3.0.* - gxx_impl_linux-64 13.3.0.* + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 53338 timestamp: 1724801498389 -- kind: conda - name: gxx_impl_linux-64 - version: 13.3.0 - build: hdbfa832_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-13.3.0-hdbfa832_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx-13.3.0-h8a56e6e_1.conda + sha256: d94714da0135d592d2cd71998a19dc9f65e5a55857c11ec6aa357e5c23fb5a0d + md5: 838d6b64b84b1d17c564b146a839e988 + depends: + - gcc 13.3.0.* + - gxx_impl_linux-aarch64 13.3.0.* + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 53580 + timestamp: 1724802377970 +- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_impl_linux-64-13.3.0-hdbfa832_1.conda sha256: 746dff24bb1efc89ab0ec108838d0711683054e3bbbcb94d042943410a98eca1 md5: 806367e23a0a6ad21e51875b34c57d7e depends: @@ -7624,17 +5737,13 @@ packages: - libstdcxx-devel_linux-64 13.3.0 h84ea5a7_101 - sysroot_linux-64 - tzdata + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 13337720 timestamp: 1724801455825 -- kind: conda - name: gxx_impl_linux-aarch64 - version: 13.3.0 - build: h1211b58_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_impl_linux-aarch64-13.3.0-h1211b58_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_impl_linux-aarch64-13.3.0-h1211b58_1.conda sha256: 93eb04cf9ccf5860df113f299febfacad9c66728772d30aaf4bf33995083331a md5: 3721f68549df06c2b0664f8933bbf17f depends: @@ -7642,17 +5751,13 @@ packages: - libstdcxx-devel_linux-aarch64 13.3.0 h0c07274_101 - sysroot_linux-aarch64 - tzdata + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 12732645 timestamp: 1724802335796 -- kind: conda - name: gxx_linux-64 - version: 13.3.0 - build: h6834431_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-13.3.0-h6834431_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/gxx_linux-64-13.3.0-h6834431_7.conda sha256: a9b1ffea76f2cc5aedeead4793fcded7a687cce9d5e3f4fe93629f1b1d5043a6 md5: 7c82ca9bda609b6f72f670e4219d3787 depends: @@ -7660,17 +5765,13 @@ packages: - gcc_linux-64 13.3.0 hc28eda2_7 - gxx_impl_linux-64 13.3.0.* - sysroot_linux-64 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 30356 timestamp: 1731939612705 -- kind: conda - name: gxx_linux-aarch64 - version: 13.3.0 - build: h2864abd_7 - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_linux-aarch64-13.3.0-h2864abd_7.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/gxx_linux-aarch64-13.3.0-h2864abd_7.conda sha256: 62a167e54c5c21de36e4652bff096ed6789215e94ebfbbdf3a14fd3d24216479 md5: dff7396f87892ce8c07f6fd53d9d998d depends: @@ -7678,141 +5779,100 @@ packages: - gcc_linux-aarch64 13.3.0 h1cd514b_7 - gxx_impl_linux-aarch64 13.3.0.* - sysroot_linux-aarch64 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 30532 timestamp: 1731939525391 -- kind: conda - name: h2 - version: 4.1.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/h2-4.1.0-pyhd8ed1ab_0.tar.bz2 - sha256: bfc6a23849953647f4e255c782e74a0e18fe16f7e25c7bb0bc57b83bb6762c7a - md5: b748fbf7060927a6e82df7cb5ee8f097 - depends: - - hpack >=4.0,<5 - - hyperframe >=6.0,<7 - - python >=3.6.1 - license: MIT - license_family: MIT - size: 46754 - timestamp: 1634280590080 -- kind: conda - name: harfbuzz - version: 9.0.0 - build: h098a298_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-9.0.0-h098a298_1.conda - sha256: dbc7783ea89faaf3a810d0e55979be02031551be8edad00de915807b3b148ff1 - md5: 8dd3c790d5ce9f3bc94c46e5b218e5f8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda + sha256: 973afa37840b4e55e2540018902255cfb0d953aaed6353bb83a4d120f5256767 + md5: 76b32dcf243444aea9c6b804bcfa40b8 depends: - - __osx >=10.13 + - __glibc >=2.17,<3.0.a0 - cairo >=1.18.0,<2.0a0 - freetype >=2.12.1,<3.0a0 - graphite2 - icu >=75.1,<76.0a0 - - libcxx >=16 + - libgcc-ng >=12 - libglib >=2.80.3,<3.0a0 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 1372588 - timestamp: 1721186294497 -- kind: conda - name: harfbuzz - version: 9.0.0 - build: h2bedf89_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-9.0.0-h2bedf89_1.conda - sha256: 20f42ec76e075902c22c1f8ddc71fb88eff0b93e74f5705c1e72220030965810 - md5: 254f119aaed2c0be271c1114ae18d09b + size: 1603653 + timestamp: 1721186240105 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-9.0.0-hbf49d6b_1.conda + sha256: 7496782c3bc0ebbb4de9bc92a3111f42b8a57417fa31ecb87058f250215fabc9 + md5: ceb458f664cab8550fcd74fff26451db depends: - cairo >=1.18.0,<2.0a0 - freetype >=2.12.1,<3.0a0 - graphite2 - icu >=75.1,<76.0a0 + - libgcc-ng >=12 - libglib >=2.80.3,<3.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 1095620 - timestamp: 1721187287831 -- kind: conda - name: harfbuzz - version: 9.0.0 - build: h997cde5_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda - sha256: 5f78f5dcbbfef59b3549ecb6cc2fa9de7b22abda7c8afaf0fa787ceea37a914f - md5: 50f6825d3c4a6fca6fefdefa98081554 + size: 1614644 + timestamp: 1721188789883 +- conda: https://conda.anaconda.org/conda-forge/osx-64/harfbuzz-9.0.0-h098a298_1.conda + sha256: dbc7783ea89faaf3a810d0e55979be02031551be8edad00de915807b3b148ff1 + md5: 8dd3c790d5ce9f3bc94c46e5b218e5f8 depends: - - __osx >=11.0 + - __osx >=10.13 - cairo >=1.18.0,<2.0a0 - freetype >=2.12.1,<3.0a0 - graphite2 - icu >=75.1,<76.0a0 - libcxx >=16 - libglib >=2.80.3,<3.0a0 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 1317509 - timestamp: 1721186764931 -- kind: conda - name: harfbuzz - version: 9.0.0 - build: hbf49d6b_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/harfbuzz-9.0.0-hbf49d6b_1.conda - sha256: 7496782c3bc0ebbb4de9bc92a3111f42b8a57417fa31ecb87058f250215fabc9 - md5: ceb458f664cab8550fcd74fff26451db + size: 1372588 + timestamp: 1721186294497 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/harfbuzz-9.0.0-h997cde5_1.conda + sha256: 5f78f5dcbbfef59b3549ecb6cc2fa9de7b22abda7c8afaf0fa787ceea37a914f + md5: 50f6825d3c4a6fca6fefdefa98081554 depends: + - __osx >=11.0 - cairo >=1.18.0,<2.0a0 - freetype >=2.12.1,<3.0a0 - graphite2 - icu >=75.1,<76.0a0 - - libgcc-ng >=12 + - libcxx >=16 - libglib >=2.80.3,<3.0a0 - - libstdcxx-ng >=12 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 1614644 - timestamp: 1721188789883 -- kind: conda - name: harfbuzz - version: 9.0.0 - build: hda332d3_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/harfbuzz-9.0.0-hda332d3_1.conda - sha256: 973afa37840b4e55e2540018902255cfb0d953aaed6353bb83a4d120f5256767 - md5: 76b32dcf243444aea9c6b804bcfa40b8 + size: 1317509 + timestamp: 1721186764931 +- conda: https://conda.anaconda.org/conda-forge/win-64/harfbuzz-9.0.0-h2bedf89_1.conda + sha256: 20f42ec76e075902c22c1f8ddc71fb88eff0b93e74f5705c1e72220030965810 + md5: 254f119aaed2c0be271c1114ae18d09b depends: - - __glibc >=2.17,<3.0.a0 - cairo >=1.18.0,<2.0a0 - freetype >=2.12.1,<3.0a0 - graphite2 - icu >=75.1,<76.0a0 - - libgcc-ng >=12 - libglib >=2.80.3,<3.0a0 - - libstdcxx-ng >=12 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: MIT license_family: MIT - size: 1603653 - timestamp: 1721186240105 -- kind: conda - name: hdf4 - version: 4.2.15 - build: h2a13503_7 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda + size: 1095620 + timestamp: 1721187287831 +- conda: https://conda.anaconda.org/conda-forge/linux-64/hdf4-4.2.15-h2a13503_7.conda sha256: 0d09b6dc1ce5c4005ae1c6a19dc10767932ef9a5e9c755cfdbb5189ac8fb0684 md5: bd77f8da987968ec3927990495dc22e4 depends: @@ -7820,110 +5880,68 @@ packages: - libjpeg-turbo >=3.0.0,<4.0a0 - libstdcxx-ng >=12 - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 756742 timestamp: 1695661547874 -- kind: conda - name: hdf4 - version: 4.2.15 - build: h2ee6834_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/hdf4-4.2.15-h2ee6834_7.conda - sha256: c3b01e3c3fe4ca1c4d28c287eaa5168a4f2fd3ffd76690082ac919244c22fa90 - md5: ff5d749fd711dc7759e127db38005924 - depends: - - libcxx >=15.0.7 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libzlib >=1.2.13,<2.0.0a0 - license: BSD-3-Clause - license_family: BSD - size: 762257 - timestamp: 1695661864625 -- kind: conda - name: hdf4 - version: 4.2.15 - build: h5557f11_7 - build_number: 7 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/hdf4-4.2.15-h5557f11_7.conda - sha256: 52fa5dde69758c19c69ab68a3d7ebfb2c9042e3a55d405c29a59d3b0584fd790 - md5: 84344a916a73727c1326841007b52ca8 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hdf4-4.2.15-hb6ba311_7.conda + sha256: 70d1e2d3e0b9ae1b149a31a4270adfbb5a4ceb2f8c36d17feffcd7bcb6208022 + md5: e1b6676b77b9690d07ea25de48aed97e depends: + - libgcc-ng >=12 - libjpeg-turbo >=3.0.0,<4.0a0 + - libstdcxx-ng >=12 - libzlib >=1.2.13,<2.0.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 779637 - timestamp: 1695662145568 -- kind: conda - name: hdf4 - version: 4.2.15 - build: h8138101_7 - build_number: 7 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/hdf4-4.2.15-h8138101_7.conda + size: 773862 + timestamp: 1695661552544 +- conda: https://conda.anaconda.org/conda-forge/osx-64/hdf4-4.2.15-h8138101_7.conda sha256: 8c767cc71226e9eb62649c903c68ba73c5f5e7e3696ec0319d1f90586cebec7d md5: 7ce543bf38dbfae0de9af112ee178af2 depends: - libcxx >=15.0.7 - libjpeg-turbo >=3.0.0,<4.0a0 - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD size: 724103 timestamp: 1695661907511 -- kind: conda - name: hdf4 - version: 4.2.15 - build: hb6ba311_7 - build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/hdf4-4.2.15-hb6ba311_7.conda - sha256: 70d1e2d3e0b9ae1b149a31a4270adfbb5a4ceb2f8c36d17feffcd7bcb6208022 - md5: e1b6676b77b9690d07ea25de48aed97e +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf4-4.2.15-h2ee6834_7.conda + sha256: c3b01e3c3fe4ca1c4d28c287eaa5168a4f2fd3ffd76690082ac919244c22fa90 + md5: ff5d749fd711dc7759e127db38005924 depends: - - libgcc-ng >=12 + - libcxx >=15.0.7 - libjpeg-turbo >=3.0.0,<4.0a0 - - libstdcxx-ng >=12 - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 773862 - timestamp: 1695661552544 -- kind: conda - name: hdf5 - version: 1.14.4 - build: nompi_h1607680_105 - build_number: 105 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.4-nompi_h1607680_105.conda - sha256: 56500937894b1ca917e1ae1bea64b873a9eec57d581173579189d0b1f590db26 - md5: 12ebafc40b10d4bf519e4c2074c52aef + size: 762257 + timestamp: 1695661864625 +- conda: https://conda.anaconda.org/conda-forge/win-64/hdf4-4.2.15-h5557f11_7.conda + sha256: 52fa5dde69758c19c69ab68a3d7ebfb2c9042e3a55d405c29a59d3b0584fd790 + md5: 84344a916a73727c1326841007b52ca8 depends: - - __osx >=10.13 - - libaec >=1.1.3,<2.0a0 - - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 - - libgfortran 5.* - - libgfortran5 >=13.2.0 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD - size: 3732340 - timestamp: 1733003702265 -- kind: conda - name: hdf5 - version: 1.14.4 - build: nompi_h2d575fe_105 - build_number: 105 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.4-nompi_h2d575fe_105.conda + size: 779637 + timestamp: 1695662145568 +- conda: https://conda.anaconda.org/conda-forge/linux-64/hdf5-1.14.4-nompi_h2d575fe_105.conda sha256: 93d2bfc672f3ee0988d277ce463330a467f3686d3f7ee37812a3d8ca11776d77 md5: d76fff0092b6389a12134ddebc0929bd depends: @@ -7936,17 +5954,13 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 3950601 timestamp: 1733003331788 -- kind: conda - name: hdf5 - version: 1.14.4 - build: nompi_h6ed7ac7_105 - build_number: 105 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/hdf5-1.14.4-nompi_h6ed7ac7_105.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/hdf5-1.14.4-nompi_h6ed7ac7_105.conda sha256: 57db9910da8bcc3b6456ab0e52a8e215b97f30941b416d2b052b3461097a8e09 md5: 337b0bbe9c3ee631ec0982c990d21fc2 depends: @@ -7958,17 +5972,31 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 4034228 + timestamp: 1733010297124 +- conda: https://conda.anaconda.org/conda-forge/osx-64/hdf5-1.14.4-nompi_h1607680_105.conda + sha256: 56500937894b1ca917e1ae1bea64b873a9eec57d581173579189d0b1f590db26 + md5: 12ebafc40b10d4bf519e4c2074c52aef + depends: + - __osx >=10.13 + - libaec >=1.1.3,<2.0a0 + - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 4034228 - timestamp: 1733010297124 -- kind: conda - name: hdf5 - version: 1.14.4 - build: nompi_ha698983_105 - build_number: 105 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.4-nompi_ha698983_105.conda + size: 3732340 + timestamp: 1733003702265 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/hdf5-1.14.4-nompi_ha698983_105.conda sha256: 1746cd2465832bf23d1e91b680935655dea9053d51e526deea86b0afb0b9d6a3 md5: 7e85ea8b6a35b163a516e8c483960600 depends: @@ -7980,17 +6008,13 @@ packages: - libgfortran5 >=13.2.0 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 3485821 timestamp: 1733002735281 -- kind: conda - name: hdf5 - version: 1.14.4 - build: nompi_hd5d9e70_105 - build_number: 105 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.4-nompi_hd5d9e70_105.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/hdf5-1.14.4-nompi_hd5d9e70_105.conda sha256: e8ced65c604a3b9e4803758a25149d71d8096f186fe876817a0d1d97190550c0 md5: 4381be33460283890c34341ecfa42d97 depends: @@ -8001,201 +6025,145 @@ packages: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD size: 2048450 timestamp: 1733003052575 -- kind: conda - name: hpack - version: 4.0.0 - build: pyh9f0ad1d_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hpack-4.0.0-pyh9f0ad1d_0.tar.bz2 - sha256: 5dec948932c4f740674b1afb551223ada0c55103f4c7bf86a110454da3d27cb8 - md5: 914d6646c4dbb1fd3ff539830a12fd71 - depends: - - python - license: MIT - license_family: MIT - size: 25341 - timestamp: 1598856368685 -- kind: conda - name: hyperframe - version: 6.0.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/hyperframe-6.0.1-pyhd8ed1ab_0.tar.bz2 - sha256: e374a9d0f53149328134a8d86f5d72bca4c6dcebed3c0ecfa968c02996289330 - md5: 9f765cbfab6870c8435b9eefecd7a1f4 - depends: - - python >=3.6 - license: MIT - license_family: MIT - size: 14646 - timestamp: 1619110249723 -- kind: conda - name: icu - version: '75.1' - build: h120a0e1_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda - sha256: 2e64307532f482a0929412976c8450c719d558ba20c0962832132fd0d07ba7a7 - md5: d68d48a3060eb5abdc1cdc8e2a3a5966 - depends: - - __osx >=10.13 - license: MIT - license_family: MIT - size: 11761697 - timestamp: 1720853679409 -- kind: conda - name: icu - version: '75.1' - build: he02047a_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/icu-75.1-he02047a_0.conda sha256: 71e750d509f5fa3421087ba88ef9a7b9be11c53174af3aa4d06aff4c18b38e8e md5: 8b189310083baabfb622af68fd9d3ae3 depends: - __glibc >=2.17,<3.0.a0 - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 12129203 timestamp: 1720853576813 -- kind: conda - name: icu - version: '75.1' - build: he0c23c2_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda - sha256: 1d04369a1860a1e9e371b9fc82dd0092b616adcf057d6c88371856669280e920 - md5: 8579b6bb8d18be7c0b27fb08adeeeb40 - depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: MIT - license_family: MIT - size: 14544252 - timestamp: 1720853966338 -- kind: conda - name: icu - version: '75.1' - build: hf9b3779_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/icu-75.1-hf9b3779_0.conda sha256: 813298f2e54ef087dbfc9cc2e56e08ded41de65cff34c639cc8ba4e27e4540c9 md5: 268203e8b983fddb6412b36f2024e75c depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 12282786 timestamp: 1720853454991 -- kind: conda - name: icu - version: '75.1' - build: hfee45f7_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/icu-75.1-h120a0e1_0.conda + sha256: 2e64307532f482a0929412976c8450c719d558ba20c0962832132fd0d07ba7a7 + md5: d68d48a3060eb5abdc1cdc8e2a3a5966 + depends: + - __osx >=10.13 + arch: x86_64 + platform: osx + license: MIT + license_family: MIT + size: 11761697 + timestamp: 1720853679409 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/icu-75.1-hfee45f7_0.conda sha256: 9ba12c93406f3df5ab0a43db8a4b4ef67a5871dfd401010fbe29b218b2cbe620 md5: 5eb22c1d7b3fc4abb50d92d621583137 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 11857802 timestamp: 1720853997952 -- kind: conda - name: identify - version: 2.6.3 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.3-pyhd8ed1ab_0.conda - sha256: 2350107285349caad1a5c5c5296a1335b8649d6b1b0e8f2bde18127c404471c5 - md5: dd3acd023fc358afab730866a0e5e3f5 - depends: - - python >=3.6 +- conda: https://conda.anaconda.org/conda-forge/win-64/icu-75.1-he0c23c2_0.conda + sha256: 1d04369a1860a1e9e371b9fc82dd0092b616adcf057d6c88371856669280e920 + md5: 8579b6bb8d18be7c0b27fb08adeeeb40 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win + license: MIT + license_family: MIT + size: 14544252 + timestamp: 1720853966338 +- conda: https://conda.anaconda.org/conda-forge/noarch/identify-2.6.4-pyhd8ed1ab_0.conda + sha256: 8acc3bfc7781ea1ddc8c013faff5106a0539e5671e31bee0d81011a1e2df20d8 + md5: 5ec16e7ad9bab911ff0696940953f505 + depends: + - python >=3.9 - ukkonen license: MIT license_family: MIT - size: 78352 - timestamp: 1732589463054 -- kind: conda - name: idna - version: '3.10' - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_0.conda - sha256: 8c57fd68e6be5eecba4462e983aed7e85761a519aab80e834bbd7794d4b545b2 - md5: 7ba2ede0e7c795ff95088daf0dc59753 - depends: - - python >=3.6 - license: BSD-3-Clause - license_family: BSD - size: 49837 - timestamp: 1726459583613 -- kind: conda - name: imath - version: 3.1.12 - build: h025cafa_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/imath-3.1.12-h025cafa_0.conda - sha256: 8fcf6c3bf91993451412c0003b92044c9fc7980fe3f178ab3260f90ac4099072 - md5: b7e259bd81b5a7432ca045083959b83a + size: 78570 + timestamp: 1735518781514 +- conda: https://conda.anaconda.org/conda-forge/noarch/idna-3.10-pyhd8ed1ab_1.conda + sha256: d7a472c9fd479e2e8dcb83fb8d433fce971ea369d704ece380e876f9c3494e87 + md5: 39a4f67be3286c86d696df570b1201b7 depends: - - __osx >=11.0 - - libcxx >=17 + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 49765 + timestamp: 1733211921194 +- conda: https://conda.anaconda.org/conda-forge/linux-64/imath-3.1.12-h7955e40_0.conda + sha256: 4d8d07a4d5079d198168b44556fb86d094e6a716e8979b25a9f6c9c610e9fe56 + md5: 37f5e1ab0db3691929f37dee78335d1b + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 153017 - timestamp: 1725971790238 -- kind: conda - name: imath - version: 3.1.12 - build: h2016aa1_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/imath-3.1.12-h2016aa1_0.conda + size: 159630 + timestamp: 1725971591485 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/imath-3.1.12-hf428078_0.conda + sha256: ad8f18472425da83ba0e9324ab715f5d232cece8b0efaf218bd2ea9e1b6adb6d + md5: ae8535ff689663fe430bec00be24a854 + depends: + - libgcc >=13 + - libstdcxx >=13 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 153368 + timestamp: 1725971683794 +- conda: https://conda.anaconda.org/conda-forge/osx-64/imath-3.1.12-h2016aa1_0.conda sha256: 5bf9c041b97b1af21808938fcaa64acafe0d853de5478fa08005176664ee4552 md5: 326b3d68ab3f43396e7d7e0e9a496f73 depends: - __osx >=10.13 - libcxx >=17 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD size: 155534 timestamp: 1725971674035 -- kind: conda - name: imath - version: 3.1.12 - build: h7955e40_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/imath-3.1.12-h7955e40_0.conda - sha256: 4d8d07a4d5079d198168b44556fb86d094e6a716e8979b25a9f6c9c610e9fe56 - md5: 37f5e1ab0db3691929f37dee78335d1b +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/imath-3.1.12-h025cafa_0.conda + sha256: 8fcf6c3bf91993451412c0003b92044c9fc7980fe3f178ab3260f90ac4099072 + md5: b7e259bd81b5a7432ca045083959b83a depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libcxx >=17 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 159630 - timestamp: 1725971591485 -- kind: conda - name: imath - version: 3.1.12 - build: hbb528cf_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/imath-3.1.12-hbb528cf_0.conda + size: 153017 + timestamp: 1725971790238 +- conda: https://conda.anaconda.org/conda-forge/win-64/imath-3.1.12-hbb528cf_0.conda sha256: 184c796615cebaa73246f351144f164ee7b61ea809e4ba3c5d98fa9ca333e058 md5: c25af729c8c1c41f96202f8a96652bbe depends: @@ -8203,340 +6171,168 @@ packages: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD size: 160408 timestamp: 1725972042635 -- kind: conda - name: imath - version: 3.1.12 - build: hf428078_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/imath-3.1.12-hf428078_0.conda - sha256: ad8f18472425da83ba0e9324ab715f5d232cece8b0efaf218bd2ea9e1b6adb6d - md5: ae8535ff689663fe430bec00be24a854 - depends: - - libgcc >=13 - - libstdcxx >=13 - - libzlib >=1.3.1,<2.0a0 - license: BSD-3-Clause - license_family: BSD - size: 153368 - timestamp: 1725971683794 -- kind: conda - name: intel-openmp - version: 2024.2.1 - build: h57928b3_1083 - build_number: 1083 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/intel-openmp-2024.2.1-h57928b3_1083.conda sha256: 0fd2b0b84c854029041b0ede8f4c2369242ee92acc0092f8407b1fe9238a8209 md5: 2d89243bfb53652c182a7c73182cce4f + arch: x86_64 + platform: win license: LicenseRef-IntelSimplifiedSoftwareOct2022 license_family: Proprietary size: 1852356 timestamp: 1723739573141 -- kind: conda - name: isl - version: '0.26' - build: imath32_h2e86a7b_101 - build_number: 101 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/isl-0.26-imath32_h2e86a7b_101.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/isl-0.26-imath32_h2e86a7b_101.conda sha256: d39bf147cb9958f197dafa0b8ad8c039b7374778edac05b5c78b712786e305c7 md5: d06222822a9144918333346f145b68c6 depends: - libcxx >=14.0.6 + arch: x86_64 + platform: osx track_features: - isl_imath-32 license: MIT license_family: MIT size: 894410 timestamp: 1680649639107 -- kind: conda - name: isl - version: '0.26' - build: imath32_h347afa1_101 - build_number: 101 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/isl-0.26-imath32_h347afa1_101.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/isl-0.26-imath32_h347afa1_101.conda sha256: fc9272371750c56908b8e535755b1e23cf7803a2cc4a7d9ae539347baa14f740 md5: e80e44a3f4862b1da870dc0557f8cf3b depends: - libcxx >=14.0.6 + arch: arm64 + platform: osx track_features: - isl_imath-32 license: MIT license_family: MIT size: 819937 timestamp: 1680649567633 -- kind: conda - name: jinja2 - version: 3.1.4 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.4-pyhd8ed1ab_0.conda - sha256: 27380d870d42d00350d2d52598cddaf02f9505fb24be09488da0c9b8d1428f2d - md5: 7b86ecb7d3557821c649b3c31e3eb9f2 +- conda: https://conda.anaconda.org/conda-forge/noarch/jinja2-3.1.5-pyhd8ed1ab_0.conda + sha256: 98977694b9ecaa3218662f843425f39501f81973c450f995eec68f1803ed71c3 + md5: 2752a6ed44105bfb18c9bef1177d9dcd depends: - markupsafe >=2.0 - - python >=3.7 + - python >=3.9 license: BSD-3-Clause license_family: BSD - size: 111565 - timestamp: 1715127275924 -- kind: conda - name: jsoncpp - version: 1.9.6 - build: h17cf362_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/jsoncpp-1.9.6-h17cf362_0.conda - sha256: 3ab5e49aa0c9462a5b9e654ffd0875751a0405c058975e784e1a16255faaf7e6 - md5: dce0667ed69ef3a2201761c1024d0f55 + size: 112561 + timestamp: 1734824044952 +- conda: https://conda.anaconda.org/conda-forge/linux-64/jsoncpp-1.9.6-hf42df4d_1.conda + sha256: ed4b1878be103deb2e4c6d0eea3c9bdddfd7fc3178383927dce7578fb1063520 + md5: 7bdc5e2cc11cb0a0f795bdad9732b0f2 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: LicenseRef-Public-Domain OR MIT - size: 161293 - timestamp: 1726144461286 -- kind: conda - name: jsoncpp - version: 1.9.6 - build: h37c8870_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/jsoncpp-1.9.6-h37c8870_0.conda - sha256: dba3f4f761bf0e1f030db5c3fb2a7d25fc76e6902a918f117d283c6842604574 - md5: b691fe7e2cd9d34065bd90fd2e7cacbf + size: 169093 + timestamp: 1733780223643 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jsoncpp-1.9.6-h34915d9_1.conda + sha256: 12f2d001e4e9ad255f1de139e873876d03d53f16396d73f7849b114eefec5291 + md5: 2f23d5c1884fac280816ac2e5f858a65 depends: - - __osx >=10.13 - - libcxx >=17 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux license: LicenseRef-Public-Domain OR MIT - size: 144033 - timestamp: 1726144616066 -- kind: conda - name: jsoncpp - version: 1.9.6 - build: h7b3277c_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/jsoncpp-1.9.6-h7b3277c_0.conda - sha256: 520c9da4aae502817c3671a4474e3063fff84cb227f44d946f3072850d6fb277 - md5: 3c4ad023fdff68dc33e0dc2823c542cf + size: 162312 + timestamp: 1733779925983 +- conda: https://conda.anaconda.org/conda-forge/osx-64/jsoncpp-1.9.6-h466cfd8_1.conda + sha256: f256282e3b137f6acb366ddb4c4b76be3eeb19e7b0eb542e1cfbfcc84a5b740a + md5: fa2e871f2fd42bacbd7458929a8c7b81 depends: - - __osx >=11.0 - - libcxx >=17 + - __osx >=10.13 + - libcxx >=18 + arch: x86_64 + platform: osx license: LicenseRef-Public-Domain OR MIT - size: 145524 - timestamp: 1726144564127 -- kind: conda - name: jsoncpp - version: 1.9.6 - build: h84d6215_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/jsoncpp-1.9.6-h84d6215_0.conda - sha256: 438031a4d5ebbfe92fde5cc103961c6befa5323d0ac7e9029c5bf6e302ebbf39 - md5: 1190da4988807db89b31e2173128892f + size: 145556 + timestamp: 1733780384512 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jsoncpp-1.9.6-h726d253_1.conda + sha256: 415c2376eef1bb47f8cc07279ecc54a2fa92f6dfdb508d337dd21d0157e3c8ad + md5: 0ff996d1cf523fa1f7ed63113f6cc052 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx license: LicenseRef-Public-Domain OR MIT - size: 168993 - timestamp: 1726144493081 -- kind: conda - name: jsoncpp - version: 1.9.6 - build: hc790b64_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/jsoncpp-1.9.6-hc790b64_0.conda - sha256: 4bf42a919f2aa8a101b31508a571f9ef5eea3f5a316a0bc219d587bb857100d4 - md5: 150168d6884b7d15ec4160cbcf80e557 + size: 145287 + timestamp: 1733780601066 +- conda: https://conda.anaconda.org/conda-forge/win-64/jsoncpp-1.9.6-hda1637e_1.conda + sha256: 5cbd1ca5b2196a9d2bce6bd3bab16674faedc2f7de56b726e8748128d81d0956 + md5: 623fa3cfe037326999434d50c9362e90 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: LicenseRef-Public-Domain OR MIT - size: 343785 - timestamp: 1726144857909 -- kind: conda - name: jsonpatch - version: '1.33' - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/jsonpatch-1.33-pyhd8ed1ab_0.conda - sha256: fbb17e33ace3225c6416d1604637c1058906b8223da968cc015128985336b2b4 - md5: bfdb7c5c6ad1077c82a69a8642c87aff - depends: - - jsonpointer >=1.9 - - python >=3.8 - license: BSD-3-Clause - license_family: BSD - size: 17366 - timestamp: 1695536420928 -- kind: conda - name: jsonpointer - version: 3.0.0 - build: py312h2e8e312_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/jsonpointer-3.0.0-py312h2e8e312_1.conda - sha256: 6865b97780e795337f65592582aee6f25e5b96214c64ffd3f8cdf580fd64ba22 - md5: e3ceda014d8461a11ca8552830a978f9 - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - size: 42235 - timestamp: 1725303419414 -- kind: conda - name: jsonpointer - version: 3.0.0 - build: py312h7900ff3_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/jsonpointer-3.0.0-py312h7900ff3_1.conda - sha256: 76ccb7bffc7761d1d3133ffbe1f7f1710a0f0d9aaa9f7ea522652e799f3601f4 - md5: 6b51f7459ea4073eeb5057207e2e1e3d - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - size: 17277 - timestamp: 1725303032027 -- kind: conda - name: jsonpointer - version: 3.0.0 - build: py312h81bd7bf_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/jsonpointer-3.0.0-py312h81bd7bf_1.conda - sha256: f6fb3734e967d1cd0cde32844ee952809f6c0a49895da7ec1c8cfdf97739b947 - md5: 80f403c03290e1662be03e026fb5f8ab - depends: - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - size: 17865 - timestamp: 1725303130815 -- kind: conda - name: jsonpointer - version: 3.0.0 - build: py312h996f985_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/jsonpointer-3.0.0-py312h996f985_1.conda - sha256: 908448e2946c8fd8e28f5c7de4ed52548d227fae2994febf1050179b2590dbdc - md5: 2257c5f33024274faadf6a88a7d62807 - depends: - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - size: 17821 - timestamp: 1725303138276 -- kind: conda - name: jsonpointer - version: 3.0.0 - build: py312hb401068_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/jsonpointer-3.0.0-py312hb401068_1.conda - sha256: 52fcb1db44a935bba26988cc17247a0f71a8ad2fbc2b717274a8c8940856ee0d - md5: 5dcf96bca4649d496d818a0f5cfb962e - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - size: 17560 - timestamp: 1725303027769 -- kind: conda - name: jxrlib - version: '1.1' - build: h10d778d_3 - build_number: 3 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/jxrlib-1.1-h10d778d_3.conda - sha256: a548a4be14a4c76d6d992a5c1feffcbb08062f5c57abc6e4278d40c2c9a7185b - md5: cfaf81d843a80812fe16a68bdae60562 + size: 342126 + timestamp: 1733780675474 +- conda: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda + sha256: 2057ca87b313bde5b74b93b0e696f8faab69acd4cb0edebb78469f3f388040c0 + md5: 5aeabe88534ea4169d4c49998f293d6c + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD - size: 220376 - timestamp: 1703334073774 -- kind: conda - name: jxrlib - version: '1.1' - build: h31becfc_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/jxrlib-1.1-h31becfc_3.conda + size: 239104 + timestamp: 1703333860145 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/jxrlib-1.1-h31becfc_3.conda sha256: 157e151068d44042c56d6dd6f634d0b2c1fe084114ae56125299f518dd8b1500 md5: 720f7b9ccdf426ac73dafcf92f7d7bf4 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 238091 timestamp: 1703333994798 -- kind: conda - name: jxrlib - version: '1.1' - build: h93a5062_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/jxrlib-1.1-h93a5062_3.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/jxrlib-1.1-h10d778d_3.conda + sha256: a548a4be14a4c76d6d992a5c1feffcbb08062f5c57abc6e4278d40c2c9a7185b + md5: cfaf81d843a80812fe16a68bdae60562 + arch: x86_64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 220376 + timestamp: 1703334073774 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/jxrlib-1.1-h93a5062_3.conda sha256: c9e0d3cf9255d4585fa9b3d07ace3bd934fdc6a67ef4532e5507282eff2364ab md5: 879997fd868f8e9e4c2a12aec8583799 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 197843 timestamp: 1703334079437 -- kind: conda - name: jxrlib - version: '1.1' - build: hcfcfb64_3 - build_number: 3 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/jxrlib-1.1-hcfcfb64_3.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/jxrlib-1.1-hcfcfb64_3.conda sha256: a9ac265bcf65fce57cfb6512a1b072d5489445d14aa1b60c9bdf73370cf261b2 md5: a9dff8432c11dfa980346e934c29ca3f depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: BSD-2-Clause license_family: BSD size: 355340 timestamp: 1703334132631 -- kind: conda - name: jxrlib - version: '1.1' - build: hd590300_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/jxrlib-1.1-hd590300_3.conda - sha256: 2057ca87b313bde5b74b93b0e696f8faab69acd4cb0edebb78469f3f388040c0 - md5: 5aeabe88534ea4169d4c49998f293d6c - depends: - - libgcc-ng >=12 - license: BSD-2-Clause - license_family: BSD - size: 239104 - timestamp: 1703333860145 -- kind: conda - name: kernel-headers_linux-64 - version: 2.6.32 - build: he073ed8_17 - build_number: 17 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-2.6.32-he073ed8_17.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-64-2.6.32-he073ed8_17.conda sha256: fb39d64b48f3d9d1acc3df208911a41f25b6a00bd54935d5973b4739a9edd5b6 md5: d731b543793afc0433c4fd593e693fce constrains: @@ -8545,14 +6341,7 @@ packages: license_family: GPL size: 710627 timestamp: 1708000830116 -- kind: conda - name: kernel-headers_linux-aarch64 - version: 4.18.0 - build: h05a177a_18 - build_number: 18 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_18.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/kernel-headers_linux-aarch64-4.18.0-h05a177a_18.conda sha256: 99731884b26d5801c931f6ed4e1d40f0d1b2efc60ab2d1d49e9b3a6508a390df md5: 40ebaa9844bc99af99fc1beaed90b379 constrains: @@ -8561,200 +6350,162 @@ packages: license_family: GPL size: 1113306 timestamp: 1729794501866 -- kind: conda - name: keyutils - version: 1.6.1 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/keyutils-1.6.1-h166bdaf_0.tar.bz2 sha256: 150c05a6e538610ca7c43beb3a40d65c90537497a4f6a5f4d15ec0451b6f5ebb md5: 30186d27e2c9fa62b45fb1476b7200e3 depends: - libgcc-ng >=10.3.0 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later size: 117831 timestamp: 1646151697040 -- kind: conda - name: keyutils - version: 1.6.1 - build: h4e544f5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/keyutils-1.6.1-h4e544f5_0.tar.bz2 sha256: 6d4233d97a9b38acbb26e1268bcf8c10a8e79c2aed7e5a385ec3769967e3e65b md5: 1f24853e59c68892452ef94ddd8afd4b depends: - libgcc-ng >=10.3.0 + arch: aarch64 + platform: linux license: LGPL-2.1-or-later size: 112327 timestamp: 1646166857935 -- kind: conda - name: kiwisolver - version: 1.4.7 - build: py312h6142ec9_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.4.7-py312h6142ec9_0.conda - sha256: 056a2cc3b6c07c79719cb8f2eda09408fca137b49fe46f919ef14247caa6f0e9 - md5: ea8a65d24baad7ed822ab7f07f19e105 - depends: - - __osx >=11.0 - - libcxx >=17 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - size: 60966 - timestamp: 1725459569843 -- kind: conda - name: kiwisolver - version: 1.4.7 - build: py312h68727a3_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.7-py312h68727a3_0.conda - sha256: d752c53071ee5d712baa9742dd1629e60388c5ce4ab11d4e73a1690443e41769 - md5: 444266743652a4f1538145e9362f6d3b +- conda: https://conda.anaconda.org/conda-forge/linux-64/kiwisolver-1.4.7-py313h33d0bda_0.conda + sha256: 3e742fc388a4e8124f4b626e85e448786f368e5fce460a00733b849c7314bb20 + md5: 9862d13a5e466273d5a4738cffcb8d6c depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 70922 - timestamp: 1725459412788 -- kind: conda - name: kiwisolver - version: 1.4.7 - build: py312h88dc405_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/kiwisolver-1.4.7-py312h88dc405_0.conda - sha256: 2fc0723e658bbe261443b5f856d6d94e4eb4ba788efbadbce08f2de25bbbcca2 - md5: 896042bf19518b511dbb460cde81f2e2 + size: 70982 + timestamp: 1725459393722 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/kiwisolver-1.4.7-py313h1d91839_0.conda + sha256: 18d273839129edb7a52a3f18669afa79f60cf3bff1a613655f6376a4c4e75c36 + md5: 454c4884323753845b978b7129ec8ffc depends: - libgcc >=13 - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 70144 - timestamp: 1725461150212 -- kind: conda - name: kiwisolver - version: 1.4.7 - build: py312hc5c4d5f_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.7-py312hc5c4d5f_0.conda - sha256: 87470d7eed470c01efa19dd0d5a2eca9149afa1176d1efc50c475b3b81df62c1 - md5: 7b72389a8a3ba350285f86933ab85da0 + size: 70371 + timestamp: 1725461439548 +- conda: https://conda.anaconda.org/conda-forge/osx-64/kiwisolver-1.4.7-py313h0c4e38b_0.conda + sha256: bb16cd5699a7e1ffc201a70be8ffa7d64b12bd3d96c5ce8f0eeb4c648ce64017 + md5: c37fceab459e104e77bb5456e219fc37 depends: - __osx >=10.13 - libcxx >=17 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - size: 62176 - timestamp: 1725459509941 -- kind: conda - name: kiwisolver - version: 1.4.7 - build: py312hd5eb7cc_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.7-py312hd5eb7cc_0.conda - sha256: b5b3ed78e4c44483afb68f53427db3d232ddf7930ca180bb00fa86ceca7cf7e4 - md5: 1eddb74a9fbb1d4d6fde9aef272ad1d0 - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 62066 + timestamp: 1725459632070 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/kiwisolver-1.4.7-py313hf9c7212_0.conda + sha256: 14a53c1dbe9eef23cd65956753de8f6c5beb282808b7780d79af0a286ba3eee9 + md5: 830d9777f1c5f26ebb4286775f95658a + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.13.0rc1,<3.14.0a0 + - python >=3.13.0rc1,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 61424 + timestamp: 1725459552592 +- conda: https://conda.anaconda.org/conda-forge/win-64/kiwisolver-1.4.7-py313h1ec8472_0.conda + sha256: 7ac87046ee34efbd99282f62a4f33214085f999294e3ba7f8a1b5cb3fa00d8e4 + md5: 9239895dcd4116c6042ffe0a4e81706a + depends: + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD - size: 55405 - timestamp: 1725459633511 -- kind: conda - name: krb5 - version: 1.21.3 - build: h237132a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda - sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b - md5: c6dc8a0fdec13a0565936655c33069a1 + size: 55591 + timestamp: 1725459960401 +- conda: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda + sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 + md5: 3f43953b7d3fb3aaa1d0d0723d91e368 depends: - - __osx >=11.0 - - libcxx >=16 + - keyutils >=1.6.1,<2.0a0 - libedit >=3.1.20191231,<3.2.0a0 - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 1155530 - timestamp: 1719463474401 -- kind: conda - name: krb5 - version: 1.21.3 - build: h37d8d59_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda - sha256: 83b52685a4ce542772f0892a0f05764ac69d57187975579a0835ff255ae3ef9c - md5: d4765c524b1d91567886bde656fb514b + size: 1370023 + timestamp: 1719463201255 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda + sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 + md5: 29c10432a2ca1472b53f299ffb2ffa37 depends: - - __osx >=10.13 - - libcxx >=16 + - keyutils >=1.6.1,<2.0a0 - libedit >=3.1.20191231,<3.2.0a0 - libedit >=3.1.20191231,<4.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 1185323 - timestamp: 1719463492984 -- kind: conda - name: krb5 - version: 1.21.3 - build: h50a48e9_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/krb5-1.21.3-h50a48e9_0.conda - sha256: 0ec272afcf7ea7fbf007e07a3b4678384b7da4047348107b2ae02630a570a815 - md5: 29c10432a2ca1472b53f299ffb2ffa37 + size: 1474620 + timestamp: 1719463205834 +- conda: https://conda.anaconda.org/conda-forge/osx-64/krb5-1.21.3-h37d8d59_0.conda + sha256: 83b52685a4ce542772f0892a0f05764ac69d57187975579a0835ff255ae3ef9c + md5: d4765c524b1d91567886bde656fb514b depends: - - keyutils >=1.6.1,<2.0a0 + - __osx >=10.13 + - libcxx >=16 - libedit >=3.1.20191231,<3.2.0a0 - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 1474620 - timestamp: 1719463205834 -- kind: conda - name: krb5 - version: 1.21.3 - build: h659f571_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/krb5-1.21.3-h659f571_0.conda - sha256: 99df692f7a8a5c27cd14b5fb1374ee55e756631b9c3d659ed3ee60830249b238 - md5: 3f43953b7d3fb3aaa1d0d0723d91e368 + size: 1185323 + timestamp: 1719463492984 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/krb5-1.21.3-h237132a_0.conda + sha256: 4442f957c3c77d69d9da3521268cad5d54c9033f1a73f99cde0a3658937b159b + md5: c6dc8a0fdec13a0565936655c33069a1 depends: - - keyutils >=1.6.1,<2.0a0 + - __osx >=11.0 + - libcxx >=16 - libedit >=3.1.20191231,<3.2.0a0 - libedit >=3.1.20191231,<4.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - openssl >=3.3.1,<4.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 1370023 - timestamp: 1719463201255 -- kind: conda - name: krb5 - version: 1.21.3 - build: hdf4eb48_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda + size: 1155530 + timestamp: 1719463474401 +- conda: https://conda.anaconda.org/conda-forge/win-64/krb5-1.21.3-hdf4eb48_0.conda sha256: 18e8b3430d7d232dad132f574268f56b3eb1a19431d6d5de8c53c29e6c18fa81 md5: 31aec030344e962fbd7dbbbbd68e60a9 depends: @@ -8762,153 +6513,118 @@ packages: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: MIT license_family: MIT size: 712034 timestamp: 1719463874284 -- kind: conda - name: lame - version: '3.100' - build: h166bdaf_1003 - build_number: 1003 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lame-3.100-h166bdaf_1003.tar.bz2 sha256: aad2a703b9d7b038c0f745b853c6bb5f122988fe1a7a096e0e606d9cbec4eaab md5: a8832b479f93521a9e7b5b743803be51 depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.0-only license_family: LGPL size: 508258 timestamp: 1664996250081 -- kind: conda - name: lame - version: '3.100' - build: h1a8c8d9_1003 - build_number: 1003 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lame-3.100-h1a8c8d9_1003.tar.bz2 - sha256: f40ce7324b2cf5338b766d4cdb8e0453e4156a4f83c2f31bbfff750785de304c - md5: bff0e851d66725f78dc2fd8b032ddb7e - license: LGPL-2.0-only - license_family: LGPL - size: 528805 - timestamp: 1664996399305 -- kind: conda - name: lame - version: '3.100' - build: h4e544f5_1003 - build_number: 1003 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lame-3.100-h4e544f5_1003.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lame-3.100-h4e544f5_1003.tar.bz2 sha256: 2502904a42df6d94bd743f7b73915415391dd6d31d5f50cb57c0a54a108e7b0a md5: ab05bcf82d8509b4243f07e93bada144 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: LGPL-2.0-only license_family: LGPL size: 604863 timestamp: 1664997611416 -- kind: conda - name: lame - version: '3.100' - build: hb7f2c08_1003 - build_number: 1003 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/lame-3.100-hb7f2c08_1003.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-64/lame-3.100-hb7f2c08_1003.tar.bz2 sha256: 0f943b08abb4c748d73207594321b53bad47eea3e7d06b6078e0f6c59ce6771e md5: 3342b33c9a0921b22b767ed68ee25861 + arch: x86_64 + platform: osx license: LGPL-2.0-only license_family: LGPL size: 542681 timestamp: 1664996421531 -- kind: conda - name: lcms2 - version: '2.16' - build: h67d730c_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/lcms2-2.16-h67d730c_0.conda - sha256: f9fd9e80e46358a57d9bb97b1e37a03da4022143b019aa3c4476d8a7795de290 - md5: d3592435917b62a8becff3a60db674f6 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lame-3.100-h1a8c8d9_1003.tar.bz2 + sha256: f40ce7324b2cf5338b766d4cdb8e0453e4156a4f83c2f31bbfff750785de304c + md5: bff0e851d66725f78dc2fd8b032ddb7e + arch: arm64 + platform: osx + license: LGPL-2.0-only + license_family: LGPL + size: 528805 + timestamp: 1664996399305 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda + sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 + md5: 51bb7010fc86f70eee639b4bb7a894f5 depends: + - libgcc-ng >=12 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.6.0,<4.8.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 507632 - timestamp: 1701648249706 -- kind: conda - name: lcms2 - version: '2.16' - build: h922389a_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda + size: 245247 + timestamp: 1701647787198 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lcms2-2.16-h922389a_0.conda sha256: be4847b1014d3cbbc524a53bdbf66182f86125775020563e11d914c8468dd97d md5: ffdd8267a04c515e7ce69c727b051414 depends: - libgcc-ng >=12 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.6.0,<4.8.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 296219 timestamp: 1701647961116 -- kind: conda - name: lcms2 - version: '2.16' - build: ha0e7c42_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda - sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 - md5: 66f6c134e76fe13cce8a9ea5814b5dd5 +- conda: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.16-ha2f27b4_0.conda + sha256: 222ebc0a55544b9922f61e75015d02861e65b48f12113af41d48ba0814e14e4e + md5: 1442db8f03517834843666c422238c9b depends: - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.6.0,<4.8.0a0 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 211959 - timestamp: 1701647962657 -- kind: conda - name: lcms2 - version: '2.16' - build: ha2f27b4_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/lcms2-2.16-ha2f27b4_0.conda - sha256: 222ebc0a55544b9922f61e75015d02861e65b48f12113af41d48ba0814e14e4e - md5: 1442db8f03517834843666c422238c9b + size: 224432 + timestamp: 1701648089496 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lcms2-2.16-ha0e7c42_0.conda + sha256: 151e0c84feb7e0747fabcc85006b8973b22f5abbc3af76a9add0b0ef0320ebe4 + md5: 66f6c134e76fe13cce8a9ea5814b5dd5 depends: - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.6.0,<4.8.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 224432 - timestamp: 1701648089496 -- kind: conda - name: lcms2 - version: '2.16' - build: hb7c19ff_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lcms2-2.16-hb7c19ff_0.conda - sha256: 5c878d104b461b7ef922abe6320711c0d01772f4cd55de18b674f88547870041 - md5: 51bb7010fc86f70eee639b4bb7a894f5 + size: 211959 + timestamp: 1701647962657 +- conda: https://conda.anaconda.org/conda-forge/win-64/lcms2-2.16-h67d730c_0.conda + sha256: f9fd9e80e46358a57d9bb97b1e37a03da4022143b019aa3c4476d8a7795de290 + md5: d3592435917b62a8becff3a60db674f6 depends: - - libgcc-ng >=12 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.6.0,<4.8.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: MIT license_family: MIT - size: 245247 - timestamp: 1701647787198 -- kind: conda - name: ld64 - version: '951.9' - build: h0a3eb4e_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/ld64-951.9-h0a3eb4e_2.conda + size: 507632 + timestamp: 1701648249706 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ld64-951.9-h0a3eb4e_2.conda sha256: f9bc3ce2e24e3b0907436e151f5df34e407e626c7693586af5b2f39aaacd40f5 md5: c198062cf84f2e797996ac156daffa9e depends: @@ -8917,17 +6633,13 @@ packages: constrains: - cctools 1010.6.* - cctools_osx-64 1010.6.* + arch: x86_64 + platform: osx license: APSL-2.0 license_family: Other size: 18434 timestamp: 1732552435078 -- kind: conda - name: ld64 - version: '951.9' - build: h39a299f_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-951.9-h39a299f_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64-951.9-h39a299f_2.conda sha256: 041d712eadca1911fac7112171db5c5c2e478c75b65ae4663005c49b77c65a45 md5: caf11d8b84c7dd198309056dbd457b86 depends: @@ -8936,17 +6648,13 @@ packages: constrains: - cctools 1010.6.* - cctools_osx-arm64 1010.6.* + arch: arm64 + platform: osx license: APSL-2.0 license_family: Other size: 18503 timestamp: 1732552594547 -- kind: conda - name: ld64_osx-64 - version: '951.9' - build: h5ffbe8e_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-951.9-h5ffbe8e_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/ld64_osx-64-951.9-h5ffbe8e_2.conda sha256: c523bf1f99b4056aa819e7c83acec58ac7d4a053924541309ece83ca2a37db3f md5: 8cd0234328c8e9dcc2db757ff8a2ad22 depends: @@ -8960,17 +6668,13 @@ packages: - ld 951.9.* - cctools_osx-64 1010.6.* - clang >=17.0.6,<18.0a0 + arch: x86_64 + platform: osx license: APSL-2.0 license_family: Other size: 1099649 timestamp: 1732552367675 -- kind: conda - name: ld64_osx-arm64 - version: '951.9' - build: h3f9b568_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-951.9-h3f9b568_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ld64_osx-arm64-951.9-h3f9b568_2.conda sha256: c67453a58870ce19b6acaa1d0db2c49848b7584c062d969f5d06c82ebd1454ef md5: 68841f5b5956607ea9760cafa14271c5 depends: @@ -8984,447 +6688,259 @@ packages: - cctools_osx-arm64 1010.6.* - clang >=17.0.6,<18.0a0 - ld 951.9.* + arch: arm64 + platform: osx license: APSL-2.0 license_family: Other size: 1017788 timestamp: 1732552505749 -- kind: conda - name: ld_impl_linux-64 - version: '2.43' - build: h712a8e2_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/ld_impl_linux-64-2.43-h712a8e2_2.conda sha256: 7c91cea91b13f4314d125d1bedb9d03a29ebbd5080ccdea70260363424646dbe md5: 048b02e3962f066da18efe3a21b77672 depends: - __glibc >=2.17,<3.0.a0 constrains: - binutils_impl_linux-64 2.43 + arch: x86_64 + platform: linux license: GPL-3.0-only license_family: GPL size: 669211 timestamp: 1729655358674 -- kind: conda - name: ld_impl_linux-aarch64 - version: '2.43' - build: h80caac9_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ld_impl_linux-aarch64-2.43-h80caac9_2.conda sha256: 80ec7e8f006196808fac5bd4b3773a652847f97bbf08044cd87731424ac64f8b md5: fcbde5ea19d55468953bf588770c0501 constrains: - binutils_impl_linux-aarch64 2.43 + arch: aarch64 + platform: linux license: GPL-3.0-only license_family: GPL size: 698245 timestamp: 1729655345825 -- kind: conda - name: lerc - version: 4.0.0 - build: h27087fc_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lerc-4.0.0-h27087fc_0.tar.bz2 sha256: cb55f36dcd898203927133280ae1dc643368af041a48bcf7c026acb7c47b0c12 md5: 76bbff344f0134279f225174e9064c8f depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 281798 timestamp: 1657977462600 -- kind: conda - name: lerc - version: 4.0.0 - build: h4de3ea5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lerc-4.0.0-h4de3ea5_0.tar.bz2 sha256: 2d09ef9b7796d83364957e420b41c32d94e628c3f0520b61c332518a7b5cd586 md5: 1a0ffc65e03ce81559dbcb0695ad1476 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 262096 timestamp: 1657978241894 -- kind: conda - name: lerc - version: 4.0.0 - build: h63175ca_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 - sha256: f4f39d7f6a2f9b407f8fb567a6c25755270421731d70f0ff331f5de4fa367488 - md5: 1900cb3cab5055833cfddb0ba233b074 +- conda: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 + sha256: e41790fc0f4089726369b3c7f813117bbc14b533e0ed8b94cf75aba252e82497 + md5: f9d6a4c82889d5ecedec1d90eb673c55 depends: - - vc >=14.2,<15 - - vs2015_runtime >=14.29.30037 + - libcxx >=13.0.1 + arch: x86_64 + platform: osx license: Apache-2.0 license_family: Apache - size: 194365 - timestamp: 1657977692274 -- kind: conda - name: lerc - version: 4.0.0 - build: h9a09cb3_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 + size: 290319 + timestamp: 1657977526749 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lerc-4.0.0-h9a09cb3_0.tar.bz2 sha256: 6f068bb53dfb6147d3147d981bb851bb5477e769407ad4e6a68edf482fdcb958 md5: de462d5aacda3b30721b512c5da4e742 depends: - libcxx >=13.0.1 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 215721 timestamp: 1657977558796 -- kind: conda - name: lerc - version: 4.0.0 - build: hb486fe8_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/lerc-4.0.0-hb486fe8_0.tar.bz2 - sha256: e41790fc0f4089726369b3c7f813117bbc14b533e0ed8b94cf75aba252e82497 - md5: f9d6a4c82889d5ecedec1d90eb673c55 +- conda: https://conda.anaconda.org/conda-forge/win-64/lerc-4.0.0-h63175ca_0.tar.bz2 + sha256: f4f39d7f6a2f9b407f8fb567a6c25755270421731d70f0ff331f5de4fa367488 + md5: 1900cb3cab5055833cfddb0ba233b074 depends: - - libcxx >=13.0.1 + - vc >=14.2,<15 + - vs2015_runtime >=14.29.30037 + arch: x86_64 + platform: win license: Apache-2.0 license_family: Apache - size: 290319 - timestamp: 1657977526749 -- kind: conda - name: libabseil - version: '20240722.0' - build: cxx17_h5888daf_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_h5888daf_1.conda - sha256: 8f91429091183c26950f1e7ffa730e8632f0627ba35d2fccd71df31628c9b4e5 - md5: e1f604644fe8d78e22660e2fec6756bc + size: 194365 + timestamp: 1657977692274 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libabseil-20240722.0-cxx17_hbbce691_2.conda + sha256: 7003c0df066df8a48586a44c35684ff52dead2b6c0812bb22243a0680a5f37a8 + md5: 48099a5f37e331f5570abbf22b229961 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 constrains: - - libabseil-static =20240722.0=cxx17* - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 1310521 - timestamp: 1727295454064 -- kind: conda - name: libabseil - version: '20240722.0' - build: cxx17_h5ad3122_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h5ad3122_1.conda - sha256: 590e47dce38031a8893e70491f3b71e214de7781cab53b6f017aa6f6841cb076 - md5: 6fe6b3694c4792a8e26755d3b06f0b80 + size: 1309370 + timestamp: 1735453911208 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libabseil-20240722.0-cxx17_h18dbdb1_2.conda + sha256: 2ce0dfcdde83b614dbc5e6d55ebc9161de976b40b9b9fa7658011032cdaebfd9 + md5: c27b9a6c4be1bca69ca861c5d0d4b6a1 depends: - libgcc >=13 - libstdcxx >=13 constrains: - abseil-cpp =20240722.0 - libabseil-static =20240722.0=cxx17* + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache - size: 1328502 - timestamp: 1727295490806 -- kind: conda - name: libabseil - version: '20240722.0' - build: cxx17_hac325c4_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20240722.0-cxx17_hac325c4_1.conda - sha256: b548e80280242ad1d93d8d7fb48a30af7e4124959ba2031c65c9675b98163652 - md5: 40373920232a6ac0404eee9cf39a9f09 + size: 1330567 + timestamp: 1735453982791 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libabseil-20240722.0-cxx17_h0e468a2_2.conda + sha256: 2892b7ca047769907fec2f48ff96e42e1cb7c6b0f38939079a63e06c9bc59af7 + md5: d098665cd298b8f6c0c9044411ba03dc depends: - __osx >=10.13 - - libcxx >=17 + - libcxx >=18 constrains: - - abseil-cpp =20240722.0 - libabseil-static =20240722.0=cxx17* + - abseil-cpp =20240722.0 + arch: x86_64 + platform: osx license: Apache-2.0 license_family: Apache - size: 1170354 - timestamp: 1727295597292 -- kind: conda - name: libabseil - version: '20240722.0' - build: cxx17_hf9b8971_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_hf9b8971_1.conda - sha256: 90bf08a75506dfcf28a70977da8ab050bcf594cd02abd3a9d84a22c9e8161724 - md5: 706da5e791c569a7b9814877098a6a0a + size: 1162815 + timestamp: 1735454196031 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libabseil-20240722.0-cxx17_h07bc746_2.conda + sha256: 12b85cd25bd82bb2255f329b37f974b3035a109d6345b6fb762b633c845014f9 + md5: d97db28b64404efd1413d5c52f79cdae depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 constrains: - - libabseil-static =20240722.0=cxx17* - abseil-cpp =20240722.0 + - libabseil-static =20240722.0=cxx17* + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache - size: 1179072 - timestamp: 1727295571173 -- kind: conda - name: libaec - version: 1.1.3 - build: h2f0025b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libaec-1.1.3-h2f0025b_0.conda - sha256: 9c366233b4f4bf11e64ce886055aaac34445205a178061923300872e0564a4f2 - md5: e52c4a30901a90354855e40992af907d - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - license: BSD-2-Clause - license_family: BSD - size: 35339 - timestamp: 1711021162162 -- kind: conda - name: libaec - version: 1.1.3 - build: h59595ed_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.3-h59595ed_0.conda + size: 1173485 + timestamp: 1735454097554 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libaec-1.1.3-h59595ed_0.conda sha256: 2ef420a655528bca9d269086cf33b7e90d2f54ad941b437fb1ed5eca87cee017 md5: 5e97e271911b8b2001a8b71860c32faa depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD size: 35446 timestamp: 1711021212685 -- kind: conda - name: libaec - version: 1.1.3 - build: h63175ca_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libaec-1.1.3-h63175ca_0.conda - sha256: f5c293d3cfc00f71dfdb64bd65ab53625565f8778fc2d5790575bef238976ebf - md5: 8723000f6ffdbdaef16025f0a01b64c5 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libaec-1.1.3-h2f0025b_0.conda + sha256: 9c366233b4f4bf11e64ce886055aaac34445205a178061923300872e0564a4f2 + md5: e52c4a30901a90354855e40992af907d depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD - size: 32567 - timestamp: 1711021603471 -- kind: conda - name: libaec - version: 1.1.3 - build: h73e2aa4_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.3-h73e2aa4_0.conda + size: 35339 + timestamp: 1711021162162 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libaec-1.1.3-h73e2aa4_0.conda sha256: dae5921339c5d89f4bf58a95fd4e9c76270dbf7f6a94f3c5081b574905fcccf8 md5: 66d3c1f6dd4636216b4fca7a748d50eb depends: - libcxx >=16 + arch: x86_64 + platform: osx license: BSD-2-Clause license_family: BSD size: 28602 timestamp: 1711021419744 -- kind: conda - name: libaec - version: 1.1.3 - build: hebf3989_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libaec-1.1.3-hebf3989_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libaec-1.1.3-hebf3989_0.conda sha256: 896189b7b48a194c46a3556ea04943ef81cbe0498521231f8eb25816a68bc8ed md5: 6f0b8e56d2e7bae12a18fc5b2cd9f310 depends: - libcxx >=16 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 28451 timestamp: 1711021498493 -- kind: conda - name: libarchive - version: 3.7.7 - build: h2f0f0fe_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libarchive-3.7.7-h2f0f0fe_0.conda - sha256: a73b1d236076a7383c984bda85050418f9c344815e703d4f51c1298ee947d7f1 - md5: 942ca5a80056d240b85e08a62b806429 - depends: - - bzip2 >=1.0.8,<2.0a0 - - libgcc >=13 - - libxml2 >=2.13.5,<3.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 - - lzo >=2.10,<3.0a0 - - openssl >=3.4.0,<4.0a0 - - xz >=5.2.6,<6.0a0 - - zstd >=1.5.6,<1.6.0a0 - license: BSD-2-Clause - license_family: BSD - size: 979526 - timestamp: 1732614274388 -- kind: conda - name: libarchive - version: 3.7.7 - build: h7988bea_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libarchive-3.7.7-h7988bea_0.conda - sha256: 50a5ffeeef306c9f29e2872aa011c28f546a364a8e50350bd05ff0055ad8c599 - md5: 5af9f38826ccc57545a5c55c54cbfd92 - depends: - - __osx >=10.13 - - bzip2 >=1.0.8,<2.0a0 - - libiconv >=1.17,<2.0a0 - - libxml2 >=2.13.5,<3.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 - - lzo >=2.10,<3.0a0 - - openssl >=3.4.0,<4.0a0 - - xz >=5.2.6,<6.0a0 - - zstd >=1.5.6,<1.6.0a0 - license: BSD-2-Clause - license_family: BSD - size: 752482 - timestamp: 1732614525711 -- kind: conda - name: libarchive - version: 3.7.7 - build: h7c07d2a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libarchive-3.7.7-h7c07d2a_0.conda - sha256: 10d5c755761c6823d20c6ddbd42292ef91f34e271b6ba3e78d0c5fa81c22b3ed - md5: 49b28e291693b70cf8a7e70f290834d8 - depends: - - __osx >=11.0 - - bzip2 >=1.0.8,<2.0a0 - - libiconv >=1.17,<2.0a0 - - libxml2 >=2.13.5,<3.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 - - lzo >=2.10,<3.0a0 - - openssl >=3.4.0,<4.0a0 - - xz >=5.2.6,<6.0a0 - - zstd >=1.5.6,<1.6.0a0 - license: BSD-2-Clause - license_family: BSD - size: 777074 - timestamp: 1732614642044 -- kind: conda - name: libarchive - version: 3.7.7 - build: h88ece9c_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libarchive-3.7.7-h88ece9c_0.conda - sha256: afc496c826ec21cb898018695a7785baced3ebb66a90e39a1c2604dfaa1546be - md5: 37c6e11d9f2e69789198ef2bfc661392 - depends: - - bzip2 >=1.0.8,<2.0a0 - - libxml2 >=2.13.5,<3.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 - - lzo >=2.10,<3.0a0 - - openssl >=3.4.0,<4.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - - xz >=5.2.6,<6.0a0 - - zstd >=1.5.6,<1.6.0a0 - license: BSD-2-Clause - license_family: BSD - size: 977329 - timestamp: 1732614920501 -- kind: conda - name: libarchive - version: 3.7.7 - build: hadbb8c3_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libarchive-3.7.7-hadbb8c3_0.conda - sha256: 68afcb4519d08cebf71845aff6038e7273f021efc04ef48246f8d41e4e462a61 - md5: 4a099677417658748239616b6ca96bb6 - depends: - - __glibc >=2.17,<3.0.a0 - - bzip2 >=1.0.8,<2.0a0 - - libgcc >=13 - - libxml2 >=2.13.5,<3.0a0 - - libzlib >=1.3.1,<2.0a0 - - lz4-c >=1.9.3,<1.10.0a0 - - lzo >=2.10,<3.0a0 - - openssl >=3.4.0,<4.0a0 - - xz >=5.2.6,<6.0a0 - - zstd >=1.5.6,<1.6.0a0 - license: BSD-2-Clause - license_family: BSD - size: 874221 - timestamp: 1732614239458 -- kind: conda - name: libasprintf - version: 0.22.5 - build: h8414b35_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda - sha256: 819bf95543470658f48db53a267a3fabe1616797c4031cf88e63f451c5029e6f - md5: 472b673c083175195965a48f2f4808f8 +- conda: https://conda.anaconda.org/conda-forge/win-64/libaec-1.1.3-h63175ca_0.conda + sha256: f5c293d3cfc00f71dfdb64bd65ab53625565f8778fc2d5790575bef238976ebf + md5: 8723000f6ffdbdaef16025f0a01b64c5 depends: - - __osx >=11.0 - - libcxx >=16 - license: LGPL-2.1-or-later - size: 40657 - timestamp: 1723626937704 -- kind: conda - name: libasprintf - version: 0.22.5 - build: hdfe23c8_3 - build_number: 3 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libasprintf-0.22.5-hdfe23c8_3.conda + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win + license: BSD-2-Clause + license_family: BSD + size: 32567 + timestamp: 1711021603471 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libasprintf-0.22.5-hdfe23c8_3.conda sha256: 9c6f3e2558e098dbbc63c9884b4af368ea6cc4185ea027563ac4f5ee8571b143 md5: 55363e1d53635b3497cdf753ab0690c1 depends: - __osx >=10.13 - libcxx >=16 + arch: x86_64 + platform: osx license: LGPL-2.1-or-later size: 40442 timestamp: 1723626787726 -- kind: conda - name: libasprintf-devel - version: 0.22.5 - build: h8414b35_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda - sha256: ca7322f7c3f1a68cb36630eaa88a44c774261150d42d70a4be3d77bc9ed28d5d - md5: a03ca97f9fabf5626660697c2e0b8850 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-0.22.5-h8414b35_3.conda + sha256: 819bf95543470658f48db53a267a3fabe1616797c4031cf88e63f451c5029e6f + md5: 472b673c083175195965a48f2f4808f8 depends: - __osx >=11.0 - - libasprintf 0.22.5 h8414b35_3 + - libcxx >=16 + arch: arm64 + platform: osx license: LGPL-2.1-or-later - size: 34648 - timestamp: 1723626983419 -- kind: conda - name: libasprintf-devel - version: 0.22.5 - build: hdfe23c8_3 - build_number: 3 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libasprintf-devel-0.22.5-hdfe23c8_3.conda + size: 40657 + timestamp: 1723626937704 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libasprintf-devel-0.22.5-hdfe23c8_3.conda sha256: 408e59cc215b654b292f503d37552d319e71180d33798867975377c28fd3c6b3 md5: e2ae0568825e62d439a921fdc7f6db64 depends: - __osx >=10.13 - libasprintf 0.22.5 hdfe23c8_3 + arch: x86_64 + platform: osx license: LGPL-2.1-or-later size: 34522 timestamp: 1723626838677 -- kind: conda - name: libass - version: 0.17.3 - build: h1dc1e6a_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.3-h1dc1e6a_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libasprintf-devel-0.22.5-h8414b35_3.conda + sha256: ca7322f7c3f1a68cb36630eaa88a44c774261150d42d70a4be3d77bc9ed28d5d + md5: a03ca97f9fabf5626660697c2e0b8850 + depends: + - __osx >=11.0 + - libasprintf 0.22.5 h8414b35_3 + arch: arm64 + platform: osx + license: LGPL-2.1-or-later + size: 34648 + timestamp: 1723626983419 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libass-0.17.3-h1dc1e6a_0.conda sha256: 52afd5e79681185ea33da0e7548aa3721be7e9a153a90f004c5adc33d61f7a14 md5: 2a66267ba586dadd110cc991063cfff7 depends: @@ -9437,58 +6953,49 @@ packages: - libexpat >=2.6.2,<3.0a0 - libgcc-ng >=12 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: ISC license_family: OTHER size: 133110 timestamp: 1719985879751 -- kind: conda - name: libass - version: 0.17.3 - build: h5386a9e_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libass-0.17.3-h5386a9e_0.conda - sha256: 2a19c0230f0d6d707a2f0d3fdfe50fb41fbf05e88fb4a79e8e2b5a29f66c4c55 - md5: b6b8a0a32d77060c4431933a0ba11d3b +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libass-0.17.3-hcc173ff_0.conda + sha256: 93d84d22f9fa360c175ce6b0bdd4ec33c0f6399eb6e6a17fcbf8b34375343528 + md5: 7a3fcba797d23512f55ef23e68ae4ec9 depends: - - __osx >=10.13 - fontconfig >=2.14.2,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - fribidi >=1.0.10,<2.0a0 - harfbuzz >=9.0.0,<10.0a0 - libexpat >=2.6.2,<3.0a0 + - libgcc-ng >=12 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: ISC license_family: OTHER - size: 133998 - timestamp: 1719986071273 -- kind: conda - name: libass - version: 0.17.3 - build: hcc173ff_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libass-0.17.3-hcc173ff_0.conda - sha256: 93d84d22f9fa360c175ce6b0bdd4ec33c0f6399eb6e6a17fcbf8b34375343528 - md5: 7a3fcba797d23512f55ef23e68ae4ec9 + size: 145939 + timestamp: 1719986023948 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libass-0.17.3-h5386a9e_0.conda + sha256: 2a19c0230f0d6d707a2f0d3fdfe50fb41fbf05e88fb4a79e8e2b5a29f66c4c55 + md5: b6b8a0a32d77060c4431933a0ba11d3b depends: + - __osx >=10.13 - fontconfig >=2.14.2,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - fribidi >=1.0.10,<2.0a0 - harfbuzz >=9.0.0,<10.0a0 - libexpat >=2.6.2,<3.0a0 - - libgcc-ng >=12 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: osx license: ISC license_family: OTHER - size: 145939 - timestamp: 1719986023948 -- kind: conda - name: libass - version: 0.17.3 - build: hf20b609_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libass-0.17.3-hf20b609_0.conda + size: 133998 + timestamp: 1719986071273 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libass-0.17.3-hf20b609_0.conda sha256: 2c03d080b48e65e4c488b4824b817fbdce5b79e18f49fc4e823819268b74bb7d md5: 50f6b3ead2c75c7c4009a8ed477d8142 depends: @@ -9500,1385 +7007,1059 @@ packages: - harfbuzz >=9.0.0,<10.0a0 - libexpat >=2.6.2,<3.0a0 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: ISC license_family: OTHER size: 116755 timestamp: 1719986027249 -- kind: conda - name: libblas - version: 3.9.0 - build: 25_linux64_openblas - build_number: 25 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-25_linux64_openblas.conda - sha256: d6d12dc437d060f838820e9e61bf73baab651f91935ac594cf10beb9ef1b4450 - md5: 8ea26d42ca88ec5258802715fe1ee10b +- conda: https://conda.anaconda.org/conda-forge/linux-64/libblas-3.9.0-26_linux64_openblas.conda + build_number: 26 + sha256: 30bd658682b124243f8e52d8edf8a19e7be1bc31e4fe4baec30a64002dc8cd0c + md5: ac52800af2e0c0e7dac770b435ce768a depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - liblapack 3.9.0 25_linux64_openblas - - libcblas 3.9.0 25_linux64_openblas + - libcblas 3.9.0 26_linux64_openblas + - liblapack 3.9.0 26_linux64_openblas + - liblapacke 3.9.0 26_linux64_openblas - blas * openblas - - liblapacke 3.9.0 25_linux64_openblas + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 15677 - timestamp: 1729642900350 -- kind: conda - name: libblas - version: 3.9.0 - build: 25_linuxaarch64_openblas - build_number: 25 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-25_linuxaarch64_openblas.conda - sha256: 5c08f78312874bb61307f5ea737377df2d0f6e7f7833ded21ca58d8820c794ca - md5: f9b8a4a955ed2d0b68b1f453abcc1c9e + size: 16393 + timestamp: 1734432564346 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libblas-3.9.0-26_linuxaarch64_openblas.conda + build_number: 26 + sha256: df6d8ee34d45cf35609ecdd55c1ff03e32e0cd87ae41ebe4ef3747a8e09ead4d + md5: 8d900b7079a00969d70305e9aad550b7 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - blas * openblas - - liblapacke 3.9.0 25_linuxaarch64_openblas - - liblapack 3.9.0 25_linuxaarch64_openblas - - libcblas 3.9.0 25_linuxaarch64_openblas - license: BSD-3-Clause - license_family: BSD - size: 15808 - timestamp: 1729643002627 -- kind: conda - name: libblas - version: 3.9.0 - build: 25_osx64_openblas - build_number: 25 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-25_osx64_openblas.conda - sha256: 1b22b5322a311a775bca637b26317645cf07e35f125cede9278c6c45db6e7105 - md5: da0a6f87958893e1d2e2bbc7e7a6541f + - liblapacke 3.9.0 26_linuxaarch64_openblas + - libcblas 3.9.0 26_linuxaarch64_openblas + - liblapack 3.9.0 26_linuxaarch64_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16477 + timestamp: 1734432576699 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libblas-3.9.0-26_osx64_openblas.conda + build_number: 26 + sha256: 4e860b60c06be04f2c37c45def870e4ea5268f568547b80a8f69ad6ecddb6f31 + md5: 2f03da7a6d52d98bbea1f7390d6997bf depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: - - liblapack 3.9.0 25_osx64_openblas - - liblapacke 3.9.0 25_osx64_openblas + - libcblas 3.9.0 26_osx64_openblas + - liblapack 3.9.0 26_osx64_openblas - blas * openblas - - libcblas 3.9.0 25_osx64_openblas + - liblapacke 3.9.0 26_osx64_openblas + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 15952 - timestamp: 1729643159199 -- kind: conda - name: libblas - version: 3.9.0 - build: 25_osxarm64_openblas - build_number: 25 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-25_osxarm64_openblas.conda - sha256: f1fb9a11af0b2878bd8804b4c77d3733c40076218bcbdb35f575b1c0c9fddf11 - md5: f8cf4d920ff36ce471619010eff59cac + size: 16611 + timestamp: 1734432938741 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libblas-3.9.0-26_osxarm64_openblas.conda + build_number: 26 + sha256: 597f9c3779caa979c8c6abbb3ba8c7191b84e1a910d6b0d10e5faf35284c450c + md5: 21be102c9ae80a67ba7de23b129aa7f6 depends: - libopenblas >=0.3.28,<0.3.29.0a0 - libopenblas >=0.3.28,<1.0a0 constrains: + - liblapack 3.9.0 26_osxarm64_openblas + - liblapacke 3.9.0 26_osxarm64_openblas + - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas - - liblapack 3.9.0 25_osxarm64_openblas - - liblapacke 3.9.0 25_osxarm64_openblas - - libcblas 3.9.0 25_osxarm64_openblas - license: BSD-3-Clause - license_family: BSD - size: 15913 - timestamp: 1729643265495 -- kind: conda - name: libblas - version: 3.9.0 - build: 25_win64_mkl - build_number: 25 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-25_win64_mkl.conda - sha256: 5468bb91c44b41ce060bbd997c797b2f91e2b7ce91a7cbf4ddf7e7b734a8dc98 - md5: 499208e81242efb6e5abc7366c91c816 - depends: - - mkl 2024.2.2 h66d3029_14 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 16714 + timestamp: 1734433054681 +- conda: https://conda.anaconda.org/conda-forge/win-64/libblas-3.9.0-26_win64_mkl.conda + build_number: 26 + sha256: d631993a5cf5b8d3201f881084fce7ff6a26cd49883e189bf582cd0b7975c80a + md5: ecfe732dbad1be001826fdb7e5e891b5 + depends: + - mkl 2024.2.2 h66d3029_15 constrains: + - liblapacke 3.9.0 26_win64_mkl + - liblapack 3.9.0 26_win64_mkl - blas * mkl - - libcblas 3.9.0 25_win64_mkl - - liblapack 3.9.0 25_win64_mkl - - liblapacke 3.9.0 25_win64_mkl - license: BSD-3-Clause - license_family: BSD - size: 3736641 - timestamp: 1729643534444 -- kind: conda - name: libboost - version: 1.86.0 - build: h29978a0_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-1.86.0-h29978a0_2.conda - sha256: d9e080b69dc963cab704d33439a7ed6d76b6c9eb644b63163eda2a32e3a1a799 - md5: 3f5b15eed5e82e7ea8358a161e974ced + - libcblas 3.9.0 26_win64_mkl + arch: x86_64 + platform: win + license: BSD-3-Clause + license_family: BSD + size: 3733122 + timestamp: 1734432745507 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.86.0-h6c02f8c_3.conda + sha256: bad622863b3e4c8f0d107d8efd5b808e52d79cb502a20d700d05357b59a51e8f + md5: eead4e74198698d1c74f06572af753bc depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - icu >=75.1,<76.0a0 - - libcxx >=17 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - boost-cpp <0.0a0 + arch: x86_64 + platform: linux license: BSL-1.0 - size: 2004506 - timestamp: 1725334277168 -- kind: conda - name: libboost - version: 1.86.0 - build: h444863b_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libboost-1.86.0-h444863b_2.conda - sha256: a444cc7877f061b7f7c6195c806db183806f1f3a3b6ae26b1c9a89c89a049632 - md5: 3208cfab6cdb23e6b49805a3771361f2 + size: 2946990 + timestamp: 1733501899743 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libboost-1.86.0-h4d13611_3.conda + sha256: 2793e4d102d5822dfeb71ba1c0844df8357d041810eedf8144a7292921f89498 + md5: b5042cc0004a036390a6e4b007d77966 depends: - bzip2 >=1.0.8,<2.0a0 - - libiconv >=1.17,<2.0a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - boost-cpp <0.0a0 + arch: aarch64 + platform: linux license: BSL-1.0 - size: 2384613 - timestamp: 1725335041520 -- kind: conda - name: libboost - version: 1.86.0 - build: hb8260a3_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libboost-1.86.0-hb8260a3_2.conda - sha256: d2b5959c9d73486fba422b1f4f844447df110924860df5583847b7ca62e98a6e - md5: 5e0ef327c03bb0092046cc9e964b3ceb + size: 3049840 + timestamp: 1733502105682 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-1.86.0-hf0da243_3.conda + sha256: 7758971337b07d1f4fd0c55eed4bfb06e3c0512a7e4549c648a01383926c1fcd + md5: 1e25fad7b2c160cd3b9b52f3507eb272 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 - icu >=75.1,<76.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - boost-cpp <0.0a0 + arch: x86_64 + platform: osx license: BSL-1.0 - size: 3075722 - timestamp: 1725333797199 -- kind: conda - name: libboost - version: 1.86.0 - build: hbe88bda_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libboost-1.86.0-hbe88bda_2.conda - sha256: 92184cfa6b59e3176d9dcdd0662f55d72850bd429771e2ec19e1bd8b4af17cb4 - md5: 639e62feb43b9d312657ca595410fdfb + size: 2134033 + timestamp: 1733503407177 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-1.86.0-hc9fb7c5_3.conda + sha256: 793da2d2f7e2e14ed34549e3085771eefcc13ee6e06de2409a681ff0a545e905 + md5: 722715e61d51bcc7bd74f7a2b133f0d7 depends: - - __osx >=10.13 + - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - icu >=75.1,<76.0a0 - - libcxx >=17 + - libcxx >=18 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 constrains: - boost-cpp <0.0a0 + arch: arm64 + platform: osx license: BSL-1.0 - size: 2138336 - timestamp: 1725333992879 -- kind: conda - name: libboost - version: 1.86.0 - build: hcc9b45e_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libboost-1.86.0-hcc9b45e_2.conda - sha256: 4b8fc3d46b64ba4e690a3d6eb9a1a7c38ac2e6c20f54c2621d796f1749c7015b - md5: 9098a06de7a66110540ca2974f69a6b4 + size: 1937185 + timestamp: 1733503730683 +- conda: https://conda.anaconda.org/conda-forge/win-64/libboost-1.86.0-hb0986bb_3.conda + sha256: 0e1f19d03c2755f424321e0bebf3a62f864e084e812d172b3953e5215d4e4d36 + md5: d0550e3c23e9e9885bf410fe6f519361 depends: - bzip2 >=1.0.8,<2.0a0 - - icu >=75.1,<76.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 - zstd >=1.5.6,<1.6.0a0 constrains: - boost-cpp <0.0a0 + arch: x86_64 + platform: win license: BSL-1.0 - size: 3105189 - timestamp: 1725333795866 -- kind: conda - name: libboost-devel - version: 1.86.0 - build: h1a2810e_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libboost-devel-1.86.0-h1a2810e_2.conda - sha256: d004282d1fd1c16ada4813bdc1230c2722aec04bb078e64f63f32d3811088380 - md5: 6858333ddbd5e682876bff881852bd23 - depends: - - libboost 1.86.0 hb8260a3_2 - - libboost-headers 1.86.0 ha770c72_2 + size: 2502049 + timestamp: 1733503877084 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-devel-1.86.0-h1a2810e_3.conda + sha256: 1bbc13f4bed720af80e67e5df1e609f4efd801ae27d85107c36416de20ebb84c + md5: ffe09ce10ce1e03e1e762ab5bc006a35 + depends: + - libboost 1.86.0 h6c02f8c_3 + - libboost-headers 1.86.0 ha770c72_3 constrains: - boost-cpp <0.0a0 + arch: x86_64 + platform: linux license: BSL-1.0 - size: 37814 - timestamp: 1725333927243 -- kind: conda - name: libboost-devel - version: 1.86.0 - build: h37bb5a9_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libboost-devel-1.86.0-h37bb5a9_2.conda - sha256: e95618baa33f0164a893fe61a71eada2686f67cc39cde7ee8667d35748a380dd - md5: 6bf2de99161b9f3e2b2d6fa26ea10529 - depends: - - libboost 1.86.0 hcc9b45e_2 - - libboost-headers 1.86.0 h8af1aa0_2 + size: 37554 + timestamp: 1733502001252 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libboost-devel-1.86.0-h37bb5a9_3.conda + sha256: becf307faa62532c232c8a761469527bdd8f23b1c2243b9b5075f04ce5ac6b34 + md5: 0cf50fd836e92c72ce0b609339d8325d + depends: + - libboost 1.86.0 h4d13611_3 + - libboost-headers 1.86.0 h8af1aa0_3 constrains: - boost-cpp <0.0a0 + arch: aarch64 + platform: linux license: BSL-1.0 - size: 36491 - timestamp: 1725333909922 -- kind: conda - name: libboost-devel - version: 1.86.0 - build: h6a1c779_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libboost-devel-1.86.0-h6a1c779_2.conda - sha256: a9eea12dcbc3d1e271c287d4e8718c352899ea6307653589c6eda95d28ea23d7 - md5: 13121a7610e42d6814c45e79951c3de4 - depends: - - libboost 1.86.0 hbe88bda_2 - - libboost-headers 1.86.0 h694c41f_2 + size: 36489 + timestamp: 1733502210742 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-devel-1.86.0-h20888b2_3.conda + sha256: 297427f9edce4b04847d13bfaa2401326d69b351290bf7f61565844a503c7fc8 + md5: f4386c067b2bcd09be47d4092cf4c81d + depends: + - libboost 1.86.0 hf0da243_3 + - libboost-headers 1.86.0 h694c41f_3 constrains: - boost-cpp <0.0a0 + arch: x86_64 + platform: osx license: BSL-1.0 - size: 38927 - timestamp: 1725334132558 -- kind: conda - name: libboost-devel - version: 1.86.0 - build: h91493d7_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libboost-devel-1.86.0-h91493d7_2.conda - sha256: 6d56eac5b59856f4429d9a235847e8e2cb917b4c1ccdb8276276f78ca1fa5741 - md5: 4495cc037a565efc0b49d4d9bcde82a6 - depends: - - libboost 1.86.0 h444863b_2 - - libboost-headers 1.86.0 h57928b3_2 + size: 38825 + timestamp: 1733503676067 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-devel-1.86.0-hf450f58_3.conda + sha256: 785fec14fff95b87b1ef1e947367255cb54e8a580c67a9544ef51cf44399d638 + md5: b5ee687fa1ca8cb36149519a9e14541c + depends: + - libboost 1.86.0 hc9fb7c5_3 + - libboost-headers 1.86.0 hce30654_3 constrains: - boost-cpp <0.0a0 + arch: arm64 + platform: osx license: BSL-1.0 - size: 40501 - timestamp: 1725335336309 -- kind: conda - name: libboost-devel - version: 1.86.0 - build: hf450f58_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-devel-1.86.0-hf450f58_2.conda - sha256: b5385e4c94381dbf330dd696320226d8335750be6e9382b5e1a7da3d62df8b43 - md5: 23df6adf52072da7ef228c6bba5460dd - depends: - - libboost 1.86.0 h29978a0_2 - - libboost-headers 1.86.0 hce30654_2 + size: 37678 + timestamp: 1733503973845 +- conda: https://conda.anaconda.org/conda-forge/win-64/libboost-devel-1.86.0-h91493d7_3.conda + sha256: 604bbee4cc195b2ed745efc4bd9b3172c82ff1468ffbba25f6d0fc176b10b995 + md5: 2e5f24412d1cebea7fd9f9a41ffc7a85 + depends: + - libboost 1.86.0 hb0986bb_3 + - libboost-headers 1.86.0 h57928b3_3 constrains: - boost-cpp <0.0a0 + arch: x86_64 + platform: win license: BSL-1.0 - size: 37745 - timestamp: 1725334421198 -- kind: conda - name: libboost-headers - version: 1.86.0 - build: h57928b3_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libboost-headers-1.86.0-h57928b3_2.conda - sha256: 46c16663537bc826bf588ef9e969d9640f30112fa5f1594e81e887b76191bbc1 - md5: 7eb947a8d9ecad0ab0657bb1b664171f + size: 40415 + timestamp: 1733504121541 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.86.0-ha770c72_3.conda + sha256: 322be3cc409ee8b7f46a6e237c91cdcf810bc528af5865f6b7c46cc56ad5f070 + md5: be60ca34cfa7a867c2911506cad8f7c3 constrains: - boost-cpp <0.0a0 + arch: x86_64 + platform: linux license: BSL-1.0 - size: 14161145 - timestamp: 1725335148281 -- kind: conda - name: libboost-headers - version: 1.86.0 - build: h694c41f_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libboost-headers-1.86.0-h694c41f_2.conda - sha256: fae959f16d85e416a0bc0b6f733a59eb8acac896eaafcbfe5498afdffd0363ba - md5: 84de15e8645369a5bb4e6327ddf1ded2 + size: 13991670 + timestamp: 1733501914699 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libboost-headers-1.86.0-h8af1aa0_3.conda + sha256: 1b0fbba3c07fb7ad91e33795ce7ab6625e1fc89a86759ec357d645f50109831d + md5: 3dfbb18ef594487356d106f8ce5d3c2b constrains: - boost-cpp <0.0a0 + arch: aarch64 + platform: linux license: BSL-1.0 - size: 14115597 - timestamp: 1725334016415 -- kind: conda - name: libboost-headers - version: 1.86.0 - build: h8af1aa0_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libboost-headers-1.86.0-h8af1aa0_2.conda - sha256: 9e6e0a45945311f70b4791fda7c24c226e6ce26678cfd4d3d8ee47d9c9c6a409 - md5: dafa4e322422014641b36218da5c438e + size: 14031351 + timestamp: 1733502121821 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libboost-headers-1.86.0-h694c41f_3.conda + sha256: 9e441c92ad0ff786cae47f6a66fb60fc0d146c69386e4f6f5b7ecdda89db878f + md5: 7f26ba01ef422fd27abfdc98ceb104f0 constrains: - boost-cpp <0.0a0 + arch: x86_64 + platform: osx license: BSL-1.0 - size: 14027520 - timestamp: 1725333814862 -- kind: conda - name: libboost-headers - version: 1.86.0 - build: ha770c72_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libboost-headers-1.86.0-ha770c72_2.conda - sha256: 3d35c77a0f61b0574c21e7f6c21fb2b4418207209ec0aca482150306462fa997 - md5: 71c65a3b7692ad969ef238cb8dd1bfb0 + size: 14151060 + timestamp: 1733503490599 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-headers-1.86.0-hce30654_3.conda + sha256: b5287d295bb3ee2f074f8bfede7c021f220ecee681da3843d8e537a51aad83f2 + md5: 81b1cfe069c865273f8809ade3e80bf8 constrains: - boost-cpp <0.0a0 + arch: arm64 + platform: osx license: BSL-1.0 - size: 14067511 - timestamp: 1725333818163 -- kind: conda - name: libboost-headers - version: 1.86.0 - build: hce30654_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libboost-headers-1.86.0-hce30654_2.conda - sha256: bd72291aa2b404805ff047fd3f65c57103f37897e6466cdf617c284211f78ab6 - md5: 9193ab8d8f8b5518ebeef4a3eab39498 + size: 14139980 + timestamp: 1733503796088 +- conda: https://conda.anaconda.org/conda-forge/win-64/libboost-headers-1.86.0-h57928b3_3.conda + sha256: 231042814cfdb494b63b2829ce832f352ff8bcb8cc10eef148db7c799c9c8c29 + md5: 4bc32387538adb61353d76c629fb20e6 constrains: - boost-cpp <0.0a0 + arch: x86_64 + platform: win license: BSL-1.0 - size: 14098728 - timestamp: 1725334304659 -- kind: conda - name: libbrotlicommon - version: 1.1.0 - build: h00291cd_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h00291cd_2.conda - sha256: b377056470a9fb4a100aa3c51b3581aab6496ba84d21cd99bcc1d5ef0359b1b6 - md5: 58f2c4bdd56c46cc7451596e4ae68e0b - depends: - - __osx >=10.13 - license: MIT - license_family: MIT - size: 67267 - timestamp: 1725267768667 -- kind: conda - name: libbrotlicommon - version: 1.1.0 - build: h2466b09_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.1.0-h2466b09_2.conda - sha256: 33e8851c6cc8e2d93059792cd65445bfe6be47e4782f826f01593898ec95764c - md5: f7dc9a8f21d74eab46456df301da2972 + size: 14179084 + timestamp: 1733503940017 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda + sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 + md5: 41b599ed2b02abcfdd84302bff174b23 depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 70526 - timestamp: 1725268159739 -- kind: conda - name: libbrotlicommon - version: 1.1.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda + size: 68851 + timestamp: 1725267660471 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlicommon-1.1.0-h86ecc28_2.conda sha256: 64112af913974b309d67fd342e065fd184347043a6387933b3db796778a28019 md5: 3ee026955c688f551a9999840cff4c67 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 68982 timestamp: 1725267774142 -- kind: conda - name: libbrotlicommon - version: 1.1.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlicommon-1.1.0-hb9d3cd8_2.conda - sha256: d9db2de60ea917298e658143354a530e9ca5f9c63471c65cf47ab39fd2f429e3 - md5: 41b599ed2b02abcfdd84302bff174b23 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlicommon-1.1.0-h00291cd_2.conda + sha256: b377056470a9fb4a100aa3c51b3581aab6496ba84d21cd99bcc1d5ef0359b1b6 + md5: 58f2c4bdd56c46cc7451596e4ae68e0b depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=10.13 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 68851 - timestamp: 1725267660471 -- kind: conda - name: libbrotlicommon - version: 1.1.0 - build: hd74edd7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda + size: 67267 + timestamp: 1725267768667 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlicommon-1.1.0-hd74edd7_2.conda sha256: 839dacb741bdbb25e58f42088a2001b649f4f12195aeb700b5ddfca3267749e5 md5: d0bf1dff146b799b319ea0434b93f779 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 68426 timestamp: 1725267943211 -- kind: conda - name: libbrotlidec - version: 1.1.0 - build: h00291cd_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h00291cd_2.conda - sha256: 4d49ea72e2f44d2d7a8be5472e4bd0bc2c6b89c55569de2c43576363a0685c0c - md5: 34709a1f5df44e054c4a12ab536c5459 - depends: - - __osx >=10.13 - - libbrotlicommon 1.1.0 h00291cd_2 - license: MIT - license_family: MIT - size: 29872 - timestamp: 1725267807289 -- kind: conda - name: libbrotlidec - version: 1.1.0 - build: h2466b09_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.1.0-h2466b09_2.conda - sha256: 234fc92f4c4f1cf22f6464b2b15bfc872fa583c74bf3ab9539ff38892c43612f - md5: 9bae75ce723fa34e98e239d21d752a7e +- conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlicommon-1.1.0-h2466b09_2.conda + sha256: 33e8851c6cc8e2d93059792cd65445bfe6be47e4782f826f01593898ec95764c + md5: f7dc9a8f21d74eab46456df301da2972 depends: - - libbrotlicommon 1.1.0 h2466b09_2 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: MIT license_family: MIT - size: 32685 - timestamp: 1725268208844 -- kind: conda - name: libbrotlidec - version: 1.1.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda + size: 70526 + timestamp: 1725268159739 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda + sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf + md5: 9566f0bd264fbd463002e759b8a82401 + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 32696 + timestamp: 1725267669305 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlidec-1.1.0-h86ecc28_2.conda sha256: 94c808d9ca3eb6ef30976a9843e27f027cf3a1e84e8c6835cbb696b7bdb35c4c md5: e64d0f3b59c7c4047446b97a8624a72d depends: - libbrotlicommon 1.1.0 h86ecc28_2 - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 31708 timestamp: 1725267783442 -- kind: conda - name: libbrotlidec - version: 1.1.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlidec-1.1.0-hb9d3cd8_2.conda - sha256: 2892d512cad096cb03f1b66361deeab58b64e15ba525d6592bb6d609e7045edf - md5: 9566f0bd264fbd463002e759b8a82401 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlidec-1.1.0-h00291cd_2.conda + sha256: 4d49ea72e2f44d2d7a8be5472e4bd0bc2c6b89c55569de2c43576363a0685c0c + md5: 34709a1f5df44e054c4a12ab536c5459 depends: - - __glibc >=2.17,<3.0.a0 - - libbrotlicommon 1.1.0 hb9d3cd8_2 - - libgcc >=13 + - __osx >=10.13 + - libbrotlicommon 1.1.0 h00291cd_2 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 32696 - timestamp: 1725267669305 -- kind: conda - name: libbrotlidec - version: 1.1.0 - build: hd74edd7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda + size: 29872 + timestamp: 1725267807289 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlidec-1.1.0-hd74edd7_2.conda sha256: 6c6862eb274f21a7c0b60e5345467a12e6dda8b9af4438c66d496a2c1a538264 md5: 55e66e68ce55523a6811633dd1ac74e2 depends: - __osx >=11.0 - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 28378 timestamp: 1725267980316 -- kind: conda - name: libbrotlienc - version: 1.1.0 - build: h00291cd_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h00291cd_2.conda - sha256: 477d236d389473413a1ccd2bec1b66b2f1d2d7d1b4a57bb56421b7b611a56cd1 - md5: 691f0dcb36f1ae67f5c489f20ae987ea - depends: - - __osx >=10.13 - - libbrotlicommon 1.1.0 h00291cd_2 - license: MIT - license_family: MIT - size: 296353 - timestamp: 1725267822076 -- kind: conda - name: libbrotlienc - version: 1.1.0 - build: h2466b09_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.1.0-h2466b09_2.conda - sha256: 3d0dd7ef505962f107b7ea8f894e0b3dd01bf46852b362c8a7fc136b039bc9e1 - md5: 85741a24d97954a991e55e34bc55990b +- conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlidec-1.1.0-h2466b09_2.conda + sha256: 234fc92f4c4f1cf22f6464b2b15bfc872fa583c74bf3ab9539ff38892c43612f + md5: 9bae75ce723fa34e98e239d21d752a7e depends: - libbrotlicommon 1.1.0 h2466b09_2 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win + license: MIT + license_family: MIT + size: 32685 + timestamp: 1725268208844 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda + sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 + md5: 06f70867945ea6a84d35836af780f1de + depends: + - __glibc >=2.17,<3.0.a0 + - libbrotlicommon 1.1.0 hb9d3cd8_2 + - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 245929 - timestamp: 1725268238259 -- kind: conda - name: libbrotlienc - version: 1.1.0 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda + size: 281750 + timestamp: 1725267679782 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libbrotlienc-1.1.0-h86ecc28_2.conda sha256: 41385e17bc73834b235c5aff12d6d82eccb534acb3c30986996f9dad92a0d54c md5: 0e9bd365480c72b25c71a448257b537d depends: - libbrotlicommon 1.1.0 h86ecc28_2 - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 290230 timestamp: 1725267792697 -- kind: conda - name: libbrotlienc - version: 1.1.0 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libbrotlienc-1.1.0-hb9d3cd8_2.conda - sha256: 779f58174e99de3600e939fa46eddb453ec5d3c60bb46cdaa8b4c127224dbf29 - md5: 06f70867945ea6a84d35836af780f1de +- conda: https://conda.anaconda.org/conda-forge/osx-64/libbrotlienc-1.1.0-h00291cd_2.conda + sha256: 477d236d389473413a1ccd2bec1b66b2f1d2d7d1b4a57bb56421b7b611a56cd1 + md5: 691f0dcb36f1ae67f5c489f20ae987ea depends: - - __glibc >=2.17,<3.0.a0 - - libbrotlicommon 1.1.0 hb9d3cd8_2 - - libgcc >=13 + - __osx >=10.13 + - libbrotlicommon 1.1.0 h00291cd_2 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 281750 - timestamp: 1725267679782 -- kind: conda - name: libbrotlienc - version: 1.1.0 - build: hd74edd7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda + size: 296353 + timestamp: 1725267822076 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libbrotlienc-1.1.0-hd74edd7_2.conda sha256: eeb1eb0d58b9d02bc1b98dc0a058f104ab168eb2f7d1c7bfa0570a12cfcdb7b7 md5: 4f3a434504c67b2c42565c0b85c1885c depends: - __osx >=11.0 - libbrotlicommon 1.1.0 hd74edd7_2 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 279644 timestamp: 1725268003553 -- kind: conda - name: libcblas - version: 3.9.0 - build: 25_linux64_openblas - build_number: 25 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-25_linux64_openblas.conda - sha256: ab87b0477078837c91d9cda62a9faca18fba7c57cc77aa779ae24b3ac783b5dd - md5: 5dbd1b0fc0d01ec5e0e1fbe667281a11 - depends: - - libblas 3.9.0 25_linux64_openblas +- conda: https://conda.anaconda.org/conda-forge/win-64/libbrotlienc-1.1.0-h2466b09_2.conda + sha256: 3d0dd7ef505962f107b7ea8f894e0b3dd01bf46852b362c8a7fc136b039bc9e1 + md5: 85741a24d97954a991e55e34bc55990b + depends: + - libbrotlicommon 1.1.0 h2466b09_2 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win + license: MIT + license_family: MIT + size: 245929 + timestamp: 1725268238259 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcblas-3.9.0-26_linux64_openblas.conda + build_number: 26 + sha256: 9c74e536c9bc868e356ffd43f81c2cb398aec84b40fcadc312315b164a5500ee + md5: ebcc5f37a435aa3c19640533c82f8d76 + depends: + - libblas 3.9.0 26_linux64_openblas constrains: - - liblapack 3.9.0 25_linux64_openblas + - liblapack 3.9.0 26_linux64_openblas + - liblapacke 3.9.0 26_linux64_openblas - blas * openblas - - liblapacke 3.9.0 25_linux64_openblas - license: BSD-3-Clause - license_family: BSD - size: 15613 - timestamp: 1729642905619 -- kind: conda - name: libcblas - version: 3.9.0 - build: 25_linuxaarch64_openblas - build_number: 25 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-25_linuxaarch64_openblas.conda - sha256: fde797e5528040fed0e9228dd75331be0cf5cbb0bc63641f53c3cca9eb86ec16 - md5: db6af51123c67814572a8c25542cb368 - depends: - - libblas 3.9.0 25_linuxaarch64_openblas + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16336 + timestamp: 1734432570482 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcblas-3.9.0-26_linuxaarch64_openblas.conda + build_number: 26 + sha256: 521e78be0c4170f229c43e1a6c94337a72db3ebcbe6e5960f8413aa438dcb8f9 + md5: d77f943ae4083f3aeddca698f2d28262 + depends: + - libblas 3.9.0 26_linuxaarch64_openblas constrains: - blas * openblas - - liblapacke 3.9.0 25_linuxaarch64_openblas - - liblapack 3.9.0 25_linuxaarch64_openblas - license: BSD-3-Clause - license_family: BSD - size: 15700 - timestamp: 1729643006729 -- kind: conda - name: libcblas - version: 3.9.0 - build: 25_osx64_openblas - build_number: 25 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-25_osx64_openblas.conda - sha256: b04ae297aa5396df3135514866db72845b111c92524570f923625473f11cfbe2 - md5: ab304b75ea67f850cf7adf9156e3f62f - depends: - - libblas 3.9.0 25_osx64_openblas + - liblapacke 3.9.0 26_linuxaarch64_openblas + - liblapack 3.9.0 26_linuxaarch64_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16398 + timestamp: 1734432580937 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcblas-3.9.0-26_osx64_openblas.conda + build_number: 26 + sha256: 4d5dd9aeca2fa37f01d6c0bdbafba0e4f8b6601758239fa85d0640d012a151d6 + md5: 8726a2949c303b23da89be658a19675c + depends: + - libblas 3.9.0 26_osx64_openblas constrains: - - liblapack 3.9.0 25_osx64_openblas - - liblapacke 3.9.0 25_osx64_openblas + - liblapack 3.9.0 26_osx64_openblas - blas * openblas + - liblapacke 3.9.0 26_osx64_openblas + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 15842 - timestamp: 1729643166929 -- kind: conda - name: libcblas - version: 3.9.0 - build: 25_osxarm64_openblas - build_number: 25 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-25_osxarm64_openblas.conda - sha256: d9fa5b6b11252132a3383bbf87bd2f1b9d6248bef1b7e113c2a8ae41b0376218 - md5: 4df0fae81f0b5bf47d48c882b086da11 + size: 16579 + timestamp: 1734432954376 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcblas-3.9.0-26_osxarm64_openblas.conda + build_number: 26 + sha256: 27a29ef6b2fd2179bc3a0bb9db351f078ba140ca10485dca147c399639f84c93 + md5: a0e9980fe12d42f6d0c0ec009f67e948 depends: - - libblas 3.9.0 25_osxarm64_openblas + - libblas 3.9.0 26_osxarm64_openblas constrains: + - liblapack 3.9.0 26_osxarm64_openblas + - liblapacke 3.9.0 26_osxarm64_openblas - blas * openblas - - liblapack 3.9.0 25_osxarm64_openblas - - liblapacke 3.9.0 25_osxarm64_openblas - license: BSD-3-Clause - license_family: BSD - size: 15837 - timestamp: 1729643270793 -- kind: conda - name: libcblas - version: 3.9.0 - build: 25_win64_mkl - build_number: 25 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-25_win64_mkl.conda - sha256: 21528cdfe67dafdb2d21925515a167f13963e002c2b6d06d68984767f731850c - md5: 3ed189ba03a9888a8013aaee0d67c49d - depends: - - libblas 3.9.0 25_win64_mkl + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 16628 + timestamp: 1734433061517 +- conda: https://conda.anaconda.org/conda-forge/win-64/libcblas-3.9.0-26_win64_mkl.conda + build_number: 26 + sha256: 66699c4f84fd36b67a34a7ac59fb86e73ee0c5b3c3502441041c8dd51f0a7d49 + md5: 652f3adcb9d329050a325416edb14246 + depends: + - libblas 3.9.0 26_win64_mkl constrains: + - liblapacke 3.9.0 26_win64_mkl + - liblapack 3.9.0 26_win64_mkl - blas * mkl - - liblapack 3.9.0 25_win64_mkl - - liblapacke 3.9.0 25_win64_mkl + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD - size: 3732258 - timestamp: 1729643561581 -- kind: conda - name: libclang-cpp17 - version: 17.0.6 - build: default_h146c034_7 - build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp17-17.0.6-default_h146c034_7.conda + size: 3732146 + timestamp: 1734432785653 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp17-17.0.6-default_hb173f14_7.conda + sha256: 59759d25952ac0fd0b07b56af9ab615e379ca4499c9d5277b0bd19a20afb33c9 + md5: 9fb4dfe8b2c3ba1b68b79fcd9a71cb76 + depends: + - __osx >=10.13 + - libcxx >=17.0.6 + - libllvm17 >=17.0.6,<17.1.0a0 + arch: x86_64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 13187621 + timestamp: 1725505540477 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang-cpp17-17.0.6-default_h146c034_7.conda sha256: 2e338629ae19faae0d1a85543b8c84441ead61957cf69a65c0031d5b18ebac08 md5: bc6797a6a66ec6f919cc8d4d9285b11c depends: - __osx >=11.0 - libcxx >=17.0.6 - libllvm17 >=17.0.6,<17.1.0a0 + arch: arm64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache size: 12408943 timestamp: 1725505311206 -- kind: conda - name: libclang-cpp17 - version: 17.0.6 - build: default_hb173f14_7 - build_number: 7 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libclang-cpp17-17.0.6-default_hb173f14_7.conda - sha256: 59759d25952ac0fd0b07b56af9ab615e379ca4499c9d5277b0bd19a20afb33c9 - md5: 9fb4dfe8b2c3ba1b68b79fcd9a71cb76 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp19.1-19.1.6-default_hb5137d0_0.conda + sha256: 978320cb6107b9bc11d127783918500a330646ed825dc6c9da897941989d7d09 + md5: 9caebd39281536bf6bcb32f665dd4fbf depends: - - __osx >=10.13 - - libcxx >=17.0.6 - - libllvm17 >=17.0.6,<17.1.0a0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libllvm19 >=19.1.6,<19.2.0a0 + - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 13187621 - timestamp: 1725505540477 -- kind: conda - name: libclang-cpp19.1 - version: 19.1.4 - build: default_hb5137d0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libclang-cpp19.1-19.1.4-default_hb5137d0_0.conda - sha256: 66817b7e03486b3564de0bb7e3c27ccf4ecff2e31bcb10d3aa3e9b846ff483d7 - md5: e7e4a0ebe1f6eedf483f6f5d4f7d2bdd + size: 20531147 + timestamp: 1734506894098 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp19.1-19.1.6-default_he324ac1_0.conda + sha256: e132aa4bf71a9a64e05745835d42af84cb04ba6f6c99d7585c928b495ac1c2a1 + md5: 2f399a5612317660f5c98f6cb634829b depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libllvm19 >=19.1.4,<19.2.0a0 + - libllvm19 >=19.1.6,<19.2.0a0 - libstdcxx >=13 + arch: aarch64 + platform: linux license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 20526176 - timestamp: 1732088410415 -- kind: conda - name: libclang-cpp19.1 - version: 19.1.4 - build: default_he324ac1_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang-cpp19.1-19.1.4-default_he324ac1_0.conda - sha256: 72d096e6b77bc77a2fb184e1c7dc6e756b07575b00faed9ce7fd9a527369c96e - md5: d27a942c1106233db06764714df8dea6 - depends: - - libgcc >=13 - - libllvm19 >=19.1.4,<19.2.0a0 + size: 20076217 + timestamp: 1734512689675 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libclang13-19.1.6-default_h9c6a7e4_0.conda + sha256: 54a7fabfba7dee2caebe5e6a7538e3aba0a8f4c11e7366f65592aee4fdaa7519 + md5: e1d2936c320083f1c520c3a17372521c + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libllvm19 >=19.1.6,<19.2.0a0 - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 20109482 - timestamp: 1732091945036 -- kind: conda - name: libclang13 - version: 19.1.4 - build: default_h4390ef5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-19.1.4-default_h4390ef5_0.conda - sha256: 0fa9002c69a84fcb4fd99795afe8ba8a8520ce8cd63b5cbd7c69dd5885dd05bf - md5: d3855a39eb67f4758cfb3b66728f7007 - depends: - - libgcc >=13 - - libllvm19 >=19.1.4,<19.2.0a0 + size: 11819857 + timestamp: 1734507076759 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libclang13-19.1.6-default_h4390ef5_0.conda + sha256: 223437b4d973c75822c9312c034637cd699176ae5d32e91ebbc6ac2e6447d40b + md5: b3aa0944c1ae4277c0b2d23dfadc13da + depends: + - libgcc >=13 + - libllvm19 >=19.1.6,<19.2.0a0 - libstdcxx >=13 + arch: aarch64 + platform: linux license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 11611676 - timestamp: 1732092200361 -- kind: conda - name: libclang13 - version: 19.1.4 - build: default_h81d93ff_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libclang13-19.1.4-default_h81d93ff_0.conda - sha256: 569ca21884f42254d92c48a606015cee8a63f67fc0adec5256e20307e4d3eafd - md5: 53801ed8433292054d0c0de929ad957a + size: 11613307 + timestamp: 1734512984714 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libclang13-19.1.6-default_hf2b7afa_0.conda + sha256: 2f98a7b4412029de2277cbb6a04d5ab8a5457402cd055a315d9e0e5b50704a46 + md5: f6bae910ce0cc0ef3ad4eadb2891062b depends: - - __osx >=11.0 - - libcxx >=19.1.4 - - libllvm19 >=19.1.4,<19.2.0a0 + - __osx >=10.13 + - libcxx >=19.1.6 + - libllvm19 >=19.1.6,<19.2.0a0 + arch: x86_64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 8457293 - timestamp: 1732089456862 -- kind: conda - name: libclang13 - version: 19.1.4 - build: default_h9c6a7e4_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libclang13-19.1.4-default_h9c6a7e4_0.conda - sha256: 954e2c4cf8bd715246e79ad262261a5b33b2e67485dc5156520c2c5d9203f65b - md5: 6c450adae455c7d648856e8b0cfcebd6 + size: 8732982 + timestamp: 1734506753235 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libclang13-19.1.6-default_h81d93ff_0.conda + sha256: 5353ff267314f938638de1cb2c685190b8b01e482354e6172853373e066bb52d + md5: 09679ade3e5c8dc223af584ed9b12188 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libllvm19 >=19.1.4,<19.2.0a0 - - libstdcxx >=13 + - __osx >=11.0 + - libcxx >=19.1.6 + - libllvm19 >=19.1.6,<19.2.0a0 + arch: arm64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 11823523 - timestamp: 1732088587561 -- kind: conda - name: libclang13 - version: 19.1.4 - build: default_ha5278ca_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libclang13-19.1.4-default_ha5278ca_0.conda - sha256: bca9feec153788a5ddca9f9580818c08d62032fd782d1f434d2c7d6ed337cc7e - md5: 6acaf8464e71abf0713a030e0eba8317 + size: 8457184 + timestamp: 1734507189200 +- conda: https://conda.anaconda.org/conda-forge/win-64/libclang13-19.1.6-default_ha5278ca_0.conda + sha256: e9b332c3fc760ed7761446e752b881c66cf05acd7e2b8bfda2c352145af16ecc + md5: 1cfe412982fe3a83577aa80d1e39cfb3 depends: - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: win license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 26752671 - timestamp: 1732093480622 -- kind: conda - name: libclang13 - version: 19.1.4 - build: default_hf2b7afa_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libclang13-19.1.4-default_hf2b7afa_0.conda - sha256: ef12ca23cf5953cc1eee5dc0bb4243a329a751b77563ba62bdb07fa0dc3f1e26 - md5: 5dc6186bd5d5f07e09eef6533d740aea - depends: - - __osx >=10.13 - - libcxx >=19.1.4 - - libllvm19 >=19.1.4,<19.2.0a0 - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - size: 8729041 - timestamp: 1732088898100 -- kind: conda - name: libcups - version: 2.3.3 - build: h405e4a8_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcups-2.3.3-h405e4a8_4.conda - sha256: f9007d5ca44741de72f9d7be03e74c911b61af062ed7a3761594675f30f5890c - md5: d42c670b0c96c1795fd859d5e0275a55 + size: 26753310 + timestamp: 1734512609422 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda + sha256: bc67b9b21078c99c6bd8595fe7e1ed6da1f721007726e717f0449de7032798c4 + md5: d4529f4dff3057982a7617c7ac58fde3 depends: - krb5 >=1.21.1,<1.22.0a0 - libgcc-ng >=12 - libstdcxx-ng >=12 - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 4551247 - timestamp: 1689195336749 -- kind: conda - name: libcups - version: 2.3.3 - build: h4637d8d_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcups-2.3.3-h4637d8d_4.conda - sha256: bc67b9b21078c99c6bd8595fe7e1ed6da1f721007726e717f0449de7032798c4 - md5: d4529f4dff3057982a7617c7ac58fde3 + size: 4519402 + timestamp: 1689195353551 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcups-2.3.3-h405e4a8_4.conda + sha256: f9007d5ca44741de72f9d7be03e74c911b61af062ed7a3761594675f30f5890c + md5: d42c670b0c96c1795fd859d5e0275a55 depends: - krb5 >=1.21.1,<1.22.0a0 - libgcc-ng >=12 - libstdcxx-ng >=12 - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache - size: 4519402 - timestamp: 1689195353551 -- kind: conda - name: libcurl - version: 8.10.1 - build: h13a7ad3_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.10.1-h13a7ad3_0.conda - sha256: 983a977c5627f975a930542c8aabb46089ec6ea72f28d9c4d3ee8eafaf2fc25a - md5: d84030d0863ffe7dea00b9a807fee961 + size: 4551247 + timestamp: 1689195336749 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.11.1-h332b0f4_0.conda + sha256: 3cd4075b2a7b5562e46c8ec626f6f9ca57aeecaa94ff7df57eca26daa94c9906 + md5: 2b3e0081006dc21e8bf53a91c83a055c depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - krb5 >=1.21.3,<1.22.0a0 - - libnghttp2 >=1.58.0,<2.0a0 - - libssh2 >=1.11.0,<2.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: curl license_family: MIT - size: 379948 - timestamp: 1726660033582 -- kind: conda - name: libcurl - version: 8.10.1 - build: h1ee3ff0_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.10.1-h1ee3ff0_0.conda - sha256: dfbac497c4fee74f67391f9c4a40cab559468b7d04ff9fad4b404a26b5e1d5b8 - md5: 7ead800e22ff7b4bccb73e42a8f7a0f4 + size: 423011 + timestamp: 1733999897624 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.11.1-h6702fde_0.conda + sha256: 9fc65d21a58f4aad1bc39dfb94a178893aeb035850c5cf0ed9736674279f390b + md5: 7dec1cd271c403d1636bda5aa388a55d depends: - krb5 >=1.21.3,<1.22.0a0 - - libssh2 >=1.11.0,<2.0a0 + - libgcc >=13 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - openssl >=3.4.0,<4.0a0 + - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: curl license_family: MIT - size: 342388 - timestamp: 1726660508261 -- kind: conda - name: libcurl - version: 8.10.1 - build: h3ec0cbf_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libcurl-8.10.1-h3ec0cbf_0.conda - sha256: 7c4983001c727f713b4448280ed4803d301087c184cd2819ba0b788ca62b73d1 - md5: f43539295c4e0cd15202d41bc72b8a26 + size: 440737 + timestamp: 1733999835504 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.11.1-h5dec5d8_0.conda + sha256: a4ee3da1a5fd753a382d129dffb079a1e8a244e5c7ff3f7aadc15bf127f8b5e5 + md5: 2f80e92674f4a92e9f8401494496ee62 depends: + - __osx >=10.13 - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libnghttp2 >=1.58.0,<2.0a0 - - libssh2 >=1.11.0,<2.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: osx license: curl license_family: MIT - size: 439171 - timestamp: 1726659843118 -- kind: conda - name: libcurl - version: 8.10.1 - build: h58e7537_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libcurl-8.10.1-h58e7537_0.conda - sha256: 662fe145459ed58dee882e525588d1da4dcc4cbd10cfca0725d1fc3840461798 - md5: 6c8669d8228a2bbd0283911cc6d6726e + size: 406590 + timestamp: 1734000110972 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcurl-8.11.1-h73640d1_0.conda + sha256: f47c35938144c23278987c7d12096f6a42d7c850ffc277222b032073412383b6 + md5: 46d7524cabfdd199bffe63f8f19a552b depends: - - __osx >=10.13 + - __osx >=11.0 - krb5 >=1.21.3,<1.22.0a0 - - libnghttp2 >=1.58.0,<2.0a0 - - libssh2 >=1.11.0,<2.0a0 + - libnghttp2 >=1.64.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx license: curl license_family: MIT - size: 402588 - timestamp: 1726660264675 -- kind: conda - name: libcurl - version: 8.10.1 - build: hbbe4b11_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libcurl-8.10.1-hbbe4b11_0.conda - sha256: 54e6114dfce566c3a22ad3b7b309657e3600cdb668398e95f1301360d5d52c99 - md5: 6e801c50a40301f6978c53976917b277 + size: 385098 + timestamp: 1734000160270 +- conda: https://conda.anaconda.org/conda-forge/win-64/libcurl-8.11.1-h88aaa65_0.conda + sha256: 1a67f01da0e35296c6d1fdf6baddc45ad3cc2114132ff4638052eb7cf258aab2 + md5: 071d3f18dba5a6a13c6bb70cdb42678f depends: - - __glibc >=2.17,<3.0.a0 - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libnghttp2 >=1.58.0,<2.0a0 - - libssh2 >=1.11.0,<2.0a0 + - libssh2 >=1.11.1,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 - - zstd >=1.5.6,<1.6.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: curl license_family: MIT - size: 424900 - timestamp: 1726659794676 -- kind: conda - name: libcxx - version: 19.1.4 - build: ha82da77_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.4-ha82da77_0.conda - sha256: 342896ebc1d6acbf022ca6df006a936b9a472579e91e3c502cb1f52f218b78e9 - md5: a2d3d484d95889fccdd09498d8f6bf9a - depends: - - __osx >=11.0 - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - size: 520678 - timestamp: 1732060258949 -- kind: conda - name: libcxx - version: 19.1.4 - build: hf95d169_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.4-hf95d169_0.conda - sha256: 48c6d0ab9dd0c66693f79f4a032cd9ebb64fb88329dfa747aeac5299f9b3f33b - md5: 5f23923c08151687ff2fc3002b0a7234 + size: 349553 + timestamp: 1734000095720 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-19.1.6-hf95d169_1.conda + sha256: c40661648c34c08e21b69e0eec021ccaf090ffff070d2a9cbcb1519e1b310568 + md5: 1bad6c181a0799298aad42fc5a7e98b7 depends: - __osx >=10.13 + arch: x86_64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 529010 - timestamp: 1732060320836 -- kind: conda - name: libcxx-devel - version: 17.0.6 - build: h86353a2_6 - build_number: 6 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-17.0.6-h86353a2_6.conda - sha256: 914cc589f356dfc64ddc4f0dc305fce401356b688730b62e24b4f52358595a58 - md5: 555639d6c7a4c6838cec6e50453fea43 + size: 527370 + timestamp: 1734494305140 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-19.1.6-ha82da77_1.conda + sha256: 2b2443404503cd862385fd2f2a2c73f9624686fd1e5a45050b4034cfc06904ec + md5: ce5252d8db110cdb4ae4173d0a63c7c5 depends: - - libcxx >=17.0.6 + - __osx >=11.0 + arch: arm64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 820887 - timestamp: 1725403726157 -- kind: conda - name: libcxx-devel - version: 17.0.6 - build: h8f8a49f_6 - build_number: 6 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-17.0.6-h8f8a49f_6.conda + size: 520992 + timestamp: 1734494699681 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libcxx-devel-17.0.6-h8f8a49f_6.conda sha256: 3b23efafbf36b8d30bbd2f421e189ef4eb805ac29e65249c174391c23afd665b md5: faa013d493ffd2d5f2d2fc6df5f98f2e depends: - libcxx >=17.0.6 + arch: x86_64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache size: 822480 timestamp: 1725403649896 -- kind: conda - name: libdeflate - version: '1.22' - build: h00291cd_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.22-h00291cd_0.conda - sha256: 681035346974c3315685dc40898e26f65f1c00cbb0b5fd80cc2599e207a34b31 - md5: a15785ccc62ae2a8febd299424081efb +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libcxx-devel-17.0.6-h86353a2_6.conda + sha256: 914cc589f356dfc64ddc4f0dc305fce401356b688730b62e24b4f52358595a58 + md5: 555639d6c7a4c6838cec6e50453fea43 depends: - - __osx >=10.13 - license: MIT - license_family: MIT - size: 70407 - timestamp: 1728177128525 -- kind: conda - name: libdeflate - version: '1.22' - build: h2466b09_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.22-h2466b09_0.conda - sha256: 579c634b7de8869cb1d76eccd4c032dc275d5a017212128502ea4dc828a5b361 - md5: a3439ce12d4e3cd887270d9436f9a4c8 + - libcxx >=17.0.6 + arch: arm64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 820887 + timestamp: 1725403726157 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.23-h4ddbbb0_0.conda + sha256: 511d801626d02f4247a04fff957cc6e9ec4cc7e8622bd9acd076bcdc5de5fe66 + md5: 8dfae1d2e74767e9ce36d5fa0d8605db depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 155506 - timestamp: 1728177485361 -- kind: conda - name: libdeflate - version: '1.22' - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.22-h86ecc28_0.conda - sha256: 986207f130703897300ddc3637c52e86a5b21c735fe384bf48554d9a6d91c56d - md5: ff6a44e8b1707d02be2fe9a36ea88d4a + size: 72255 + timestamp: 1734373823254 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdeflate-1.23-h5e3c512_0.conda + sha256: 959419d87cd2b789a9055db95704c614f31aeb70bef7949fa2f734122a3a2863 + md5: 7e7ca2607b11b180120cefc2354fc0cb depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 69601 - timestamp: 1728177137503 -- kind: conda - name: libdeflate - version: '1.22' - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libdeflate-1.22-hb9d3cd8_0.conda - sha256: 780f0530a3adfc1497ba49d626931c6afc978c540e1abfde6ccd57128ded6ad6 - md5: b422943d5d772b7cc858b36ad2a92db5 + size: 69862 + timestamp: 1734373858306 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libdeflate-1.23-he65b83e_0.conda + sha256: 20c1e685e7409bb82c819ba55b9f7d9a654e8e6d597081581493badb7464520e + md5: 120f8f7ba6a8defb59f4253447db4bb4 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=10.13 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 72242 - timestamp: 1728177071251 -- kind: conda - name: libdeflate - version: '1.22' - build: hd74edd7_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.22-hd74edd7_0.conda - sha256: 3552894ca62bebc33d05982937cda25a4fa19e56a82af2ff20944ff4c2532fda - md5: 2d3e3f3d8ab315748420ef58d5a3ae0f + size: 69309 + timestamp: 1734374105905 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libdeflate-1.23-hec38601_0.conda + sha256: 887c02deaed6d583459eba6367023e36d8761085b2f7126e389424f57155da53 + md5: 1d8b9588be14e71df38c525767a1ac30 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 54089 - timestamp: 1728177149927 -- kind: conda - name: libdrm - version: 2.4.123 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libdrm-2.4.123-h86ecc28_0.conda - sha256: 9a5dc3585a6468b266fc80e21fd2b6f3d8236818ee3fa853b6972ab0a44d7804 - md5: 4e3c67f6999ea7ccac41611f930d19d4 + size: 54132 + timestamp: 1734373971372 +- conda: https://conda.anaconda.org/conda-forge/win-64/libdeflate-1.23-h9062f6e_0.conda + sha256: 96c47725a8258159295996ea2758fa0ff9bea330e72b59641642e16be8427ce8 + md5: a9624935147a25b06013099d3038e467 depends: - - libgcc-ng >=13 - - libpciaccess >=0.18,<0.19.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: MIT license_family: MIT - size: 273843 - timestamp: 1724719291504 -- kind: conda - name: libdrm - version: 2.4.123 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.123-hb9d3cd8_0.conda - sha256: 5f274243fc7480b721a4ed6623c72d07b86a508a1363a85f0f16451ab655ace8 - md5: ee605e794bdc14e2b7f84c4faa0d8c2c + size: 155723 + timestamp: 1734374084110 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libdrm-2.4.124-hb9d3cd8_0.conda + sha256: f0d5ffbdf3903a7840184d14c14154b503e1a96767c328f61d99ad24b6963e52 + md5: 8bc89311041d7fcb510238cf0848ccae depends: - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=13 + - libgcc >=13 - libpciaccess >=0.18,<0.19.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 303108 - timestamp: 1724719521496 -- kind: conda - name: libdrm-cos6-x86_64 - version: 2.4.65 - build: h9b0a68f_1105 - build_number: 1105 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libdrm-cos6-x86_64-2.4.65-h9b0a68f_1105.tar.bz2 - sha256: cb560fe03609a58a04157ba6eee7cb26c1e34a955de5a1c2e54b037be3a48450 - md5: f00f5e13f771e4e973b60860e6650186 + size: 242533 + timestamp: 1733424409299 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libdrm-2.4.124-h86ecc28_0.conda + sha256: a0a89edcd142942ec5730f2b7d3b3f3e702b9be2d4c675fea3a8b62d40e6adc3 + md5: a8058bcb6b4fa195aaa20452437c7727 depends: - - sysroot_linux-64 2.12.* + - libgcc >=13 + - libpciaccess >=0.18,<0.19.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 135872 - timestamp: 1627477794457 -- kind: conda - name: libdrm-cos7-aarch64 - version: 2.4.97 - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libdrm-cos7-aarch64-2.4.97-ha675448_1106.tar.bz2 - sha256: 43ed4e6542b0f512464664ed39adcb56c31ca0eac06aa92cfb3040b29f590dc3 - md5: 5adf3f3e00b981ec5259836b3f5db422 + size: 246299 + timestamp: 1733424417343 +- conda: https://conda.anaconda.org/conda-forge/noarch/libdrm-cos6-x86_64-2.4.65-h9b0a68f_1105.tar.bz2 + sha256: cb560fe03609a58a04157ba6eee7cb26c1e34a955de5a1c2e54b037be3a48450 + md5: f00f5e13f771e4e973b60860e6650186 depends: - - sysroot_linux-aarch64 2.17.* + - sysroot_linux-64 2.12.* license: MIT - license_family: MIT - size: 110468 - timestamp: 1726571625258 -- kind: conda - name: libedit - version: 3.1.20191231 - build: h0678c8f_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2 - sha256: dbd3c3f2eca1d21c52e4c03b21930bbce414c4592f8ce805801575b9e9256095 - md5: 6016a8a1d0e63cac3de2c352cd40208b - depends: - - ncurses >=6.2,<7.0.0a0 - license: BSD-2-Clause - license_family: BSD - size: 105382 - timestamp: 1597616576726 -- kind: conda - name: libedit - version: 3.1.20191231 - build: hc8eb9b7_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 - sha256: 3912636197933ecfe4692634119e8644904b41a58f30cad9d1fc02f6ba4d9fca - md5: 30e4362988a2623e9eb34337b83e01f9 + license_family: MIT + size: 135872 + timestamp: 1627477794457 +- conda: https://conda.anaconda.org/conda-forge/noarch/libdrm-cos7-aarch64-2.4.97-ha675448_1106.tar.bz2 + sha256: 43ed4e6542b0f512464664ed39adcb56c31ca0eac06aa92cfb3040b29f590dc3 + md5: 5adf3f3e00b981ec5259836b3f5db422 depends: - - ncurses >=6.2,<7.0.0a0 - license: BSD-2-Clause - license_family: BSD - size: 96607 - timestamp: 1597616630749 -- kind: conda - name: libedit - version: 3.1.20191231 - build: he28a2e2_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 + - sysroot_linux-aarch64 2.17.* + license: MIT + license_family: MIT + size: 110468 + timestamp: 1726571625258 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 sha256: a57d37c236d8f7c886e01656f4949d9dcca131d2a0728609c6f7fa338b65f1cf md5: 4d331e44109e3f0e19b4cb8f9b82f3e1 depends: - libgcc-ng >=7.5.0 - ncurses >=6.2,<7.0.0a0 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD size: 123878 timestamp: 1597616541093 -- kind: conda - name: libedit - version: 3.1.20191231 - build: he28a2e2_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libedit-3.1.20191231-he28a2e2_2.tar.bz2 sha256: debc31fb2f07ba2b0363f90e455873670734082822926ba4a9556431ec0bf36d md5: 29371161d77933a54fccf1bb66b96529 depends: - libgcc-ng >=7.5.0 - ncurses >=6.2,<7.0.0a0 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 134104 timestamp: 1597617110769 -- kind: conda - name: libegl - version: 1.7.0 - build: ha4b6fd6_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/libedit-3.1.20191231-h0678c8f_2.tar.bz2 + sha256: dbd3c3f2eca1d21c52e4c03b21930bbce414c4592f8ce805801575b9e9256095 + md5: 6016a8a1d0e63cac3de2c352cd40208b + depends: + - ncurses >=6.2,<7.0.0a0 + arch: x86_64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 105382 + timestamp: 1597616576726 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libedit-3.1.20191231-hc8eb9b7_2.tar.bz2 + sha256: 3912636197933ecfe4692634119e8644904b41a58f30cad9d1fc02f6ba4d9fca + md5: 30e4362988a2623e9eb34337b83e01f9 + depends: + - ncurses >=6.2,<7.0.0a0 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 96607 + timestamp: 1597616630749 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libegl-1.7.0-ha4b6fd6_2.conda sha256: 7fd5408d359d05a969133e47af580183fbf38e2235b562193d427bb9dad79723 md5: c151d5eb730e9b7480e6d48c0fc44048 depends: - __glibc >=2.17,<3.0.a0 - libglvnd 1.7.0 ha4b6fd6_2 + arch: x86_64 + platform: linux license: LicenseRef-libglvnd size: 44840 timestamp: 1731330973553 -- kind: conda - name: libegl - version: 1.7.0 - build: hd24410f_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libegl-1.7.0-hd24410f_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libegl-1.7.0-hd24410f_2.conda sha256: 8962abf38a58c235611ce356b9899f6caeb0352a8bce631b0bcc59352fda455e md5: cf105bce884e4ef8c8ccdca9fe6695e7 depends: - libglvnd 1.7.0 hd24410f_2 + arch: aarch64 + platform: linux license: LicenseRef-libglvnd size: 53551 timestamp: 1731330990477 -- kind: conda - name: libev - version: '4.33' - build: h10d778d_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda - sha256: 0d238488564a7992942aa165ff994eca540f687753b4f0998b29b4e4d030ff43 - md5: 899db79329439820b7e8f8de41bca902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda + sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 + md5: 172bf1cd1ff8629f2b1179945ed45055 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD - size: 106663 - timestamp: 1702146352558 -- kind: conda - name: libev - version: '4.33' - build: h31becfc_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda + size: 112766 + timestamp: 1702146165126 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libev-4.33-h31becfc_2.conda sha256: 973af77e297f1955dd1f69c2cbdc5ab9dfc88388a5576cd152cda178af0fd006 md5: a9a13cb143bbaa477b1ebaefbe47a302 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 115123 timestamp: 1702146237623 -- kind: conda - name: libev - version: '4.33' - build: h93a5062_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/libev-4.33-h10d778d_2.conda + sha256: 0d238488564a7992942aa165ff994eca540f687753b4f0998b29b4e4d030ff43 + md5: 899db79329439820b7e8f8de41bca902 + arch: x86_64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 106663 + timestamp: 1702146352558 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libev-4.33-h93a5062_2.conda sha256: 95cecb3902fbe0399c3a7e67a5bed1db813e5ab0e22f4023a5e0f722f2cc214f md5: 36d33e440c31857372a72137f78bacf5 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 107458 timestamp: 1702146414478 -- kind: conda - name: libev - version: '4.33' - build: hd590300_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libev-4.33-hd590300_2.conda - sha256: 1cd6048169fa0395af74ed5d8f1716e22c19a81a8a36f934c110ca3ad4dd27b4 - md5: 172bf1cd1ff8629f2b1179945ed45055 - depends: - - libgcc-ng >=12 - license: BSD-2-Clause - license_family: BSD - size: 112766 - timestamp: 1702146165126 -- kind: conda - name: libexpat - version: 2.6.4 - build: h240833e_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda - sha256: d10f43d0c5df6c8cf55259bce0fe14d2377eed625956cddce06f58827d288c59 - md5: 20307f4049a735a78a29073be1be2626 - depends: - - __osx >=10.13 - constrains: - - expat 2.6.4.* - license: MIT - license_family: MIT - size: 70758 - timestamp: 1730967204736 -- kind: conda - name: libexpat - version: 2.6.4 - build: h286801f_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda - sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 - md5: 38d2656dd914feb0cab8c629370768bf - depends: - - __osx >=11.0 - constrains: - - expat 2.6.4.* - license: MIT - license_family: MIT - size: 64693 - timestamp: 1730967175868 -- kind: conda - name: libexpat - version: 2.6.4 - build: h5888daf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libexpat-2.6.4-h5888daf_0.conda sha256: 56541b98447b58e52d824bd59d6382d609e11de1f8adf20b23143e353d2b8d26 md5: db833e03127376d461e1e13e76f09b6c depends: @@ -10886,32 +8067,52 @@ packages: - libgcc >=13 constrains: - expat 2.6.4.* + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 73304 timestamp: 1730967041968 -- kind: conda - name: libexpat - version: 2.6.4 - build: h5ad3122_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libexpat-2.6.4-h5ad3122_0.conda sha256: f42e758009ba9db90d1fe7992bc3e60d0c52f71fb20923375d2c44ae69a5a2b3 md5: f1b3fab36861b3ce945a13f0dfdfc688 depends: - libgcc >=13 constrains: - expat 2.6.4.* + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 72345 timestamp: 1730967203789 -- kind: conda - name: libexpat - version: 2.6.4 - build: he0c23c2_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/libexpat-2.6.4-h240833e_0.conda + sha256: d10f43d0c5df6c8cf55259bce0fe14d2377eed625956cddce06f58827d288c59 + md5: 20307f4049a735a78a29073be1be2626 + depends: + - __osx >=10.13 + constrains: + - expat 2.6.4.* + arch: x86_64 + platform: osx + license: MIT + license_family: MIT + size: 70758 + timestamp: 1730967204736 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libexpat-2.6.4-h286801f_0.conda + sha256: e42ab5ace927ee7c84e3f0f7d813671e1cf3529f5f06ee5899606630498c2745 + md5: 38d2656dd914feb0cab8c629370768bf + depends: + - __osx >=11.0 + constrains: + - expat 2.6.4.* + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 64693 + timestamp: 1730967175868 +- conda: https://conda.anaconda.org/conda-forge/win-64/libexpat-2.6.4-he0c23c2_0.conda sha256: 0c0447bf20d1013d5603499de93a16b6faa92d7ead870d96305c0f065b6a5a12 md5: eb383771c680aa792feb529eaf9df82f depends: @@ -10920,105 +8121,78 @@ packages: - vc14_runtime >=14.29.30139 constrains: - expat 2.6.4.* + arch: x86_64 + platform: win license: MIT license_family: MIT size: 139068 timestamp: 1730967442102 -- kind: conda - name: libffi - version: 3.4.2 - build: h0d85af4_5 - build_number: 5 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 - sha256: 7a2d27a936ceee6942ea4d397f9c7d136f12549d86f7617e8b6bad51e01a941f - md5: ccb34fb14960ad8b125962d3d79b31a9 - license: MIT - license_family: MIT - size: 51348 - timestamp: 1636488394370 -- kind: conda - name: libffi - version: 3.4.2 - build: h3422bc3_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 - sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca - md5: 086914b672be056eb70fd4285b6783b6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 + sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e + md5: d645c6d2ac96843a2bfaccd2d62b3ac3 + depends: + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 39020 - timestamp: 1636488587153 -- kind: conda - name: libffi - version: 3.4.2 - build: h3557bc0_5 - build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 + size: 58292 + timestamp: 1636488182923 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libffi-3.4.2-h3557bc0_5.tar.bz2 sha256: 7e9258a102480757fe3faeb225a3ca04dffd10fecd2a958c65cdb4cdf75f2c3c md5: dddd85f4d52121fab0a8b099c5e06501 depends: - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 59450 timestamp: 1636488255090 -- kind: conda - name: libffi - version: 3.4.2 - build: h7f98852_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libffi-3.4.2-h7f98852_5.tar.bz2 - sha256: ab6e9856c21709b7b517e940ae7028ae0737546122f83c2aa5d692860c3b149e - md5: d645c6d2ac96843a2bfaccd2d62b3ac3 - depends: - - libgcc-ng >=9.4.0 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libffi-3.4.2-h0d85af4_5.tar.bz2 + sha256: 7a2d27a936ceee6942ea4d397f9c7d136f12549d86f7617e8b6bad51e01a941f + md5: ccb34fb14960ad8b125962d3d79b31a9 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 58292 - timestamp: 1636488182923 -- kind: conda - name: libffi - version: 3.4.2 - build: h8ffe710_5 - build_number: 5 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 + size: 51348 + timestamp: 1636488394370 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libffi-3.4.2-h3422bc3_5.tar.bz2 + sha256: 41b3d13efb775e340e4dba549ab5c029611ea6918703096b2eaa9c015c0750ca + md5: 086914b672be056eb70fd4285b6783b6 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 39020 + timestamp: 1636488587153 +- conda: https://conda.anaconda.org/conda-forge/win-64/libffi-3.4.2-h8ffe710_5.tar.bz2 sha256: 1951ab740f80660e9bc07d2ed3aefb874d78c107264fd810f24a1a6211d4b1a5 md5: 2c96d1b6915b408893f9472569dee135 depends: - vc >=14.1,<15.0a0 - vs2015_runtime >=14.16.27012 + arch: x86_64 + platform: win license: MIT license_family: MIT size: 42063 timestamp: 1636489106777 -- kind: conda - name: libflang - version: 19.1.4 - build: he0c23c2_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libflang-19.1.4-he0c23c2_0.conda - sha256: 4db846feeba16968bbbf5a615f2536e8d2d2bd0b1c36b6a45b47a6a0d758170f - md5: 3ab7fed52b5a1935fa35add8c5a6406e +- conda: https://conda.anaconda.org/conda-forge/win-64/libflang-19.1.6-he0c23c2_0.conda + sha256: 02d32de1da248e735ea0d270c2bf8f512c37980cc5f1e96788bd8d2ab4ae85d6 + md5: 758980bd5bacb337bda25a925e8e30ff depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: Apache-2.0 license_family: APACHE - size: 1164314 - timestamp: 1732123778818 -- kind: conda - name: libgcc - version: 14.2.0 - build: h77fa898_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda + size: 1166007 + timestamp: 1734540400785 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-14.2.0-h77fa898_1.conda sha256: 53eb8a79365e58849e7b1a068d31f4f9e718dc938d6f2c03e960345739a03569 md5: 3cb76c3f10d3bc7f1105b2fc9db984df depends: @@ -11027,17 +8201,13 @@ packages: constrains: - libgomp 14.2.0 h77fa898_1 - libgcc-ng ==14.2.0=*_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 848745 timestamp: 1729027721139 -- kind: conda - name: libgcc - version: 14.2.0 - build: he277a41_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-14.2.0-he277a41_1.conda sha256: 5d56757ccad208c79214395b00d006d8d18929a4ba49c47bd9460789a7620943 md5: 511b511c5445e324066c3377481bcab8 depends: @@ -11045,18 +8215,13 @@ packages: constrains: - libgcc-ng ==14.2.0=*_1 - libgomp 14.2.0 he277a41_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 535243 timestamp: 1729089435134 -- kind: conda - name: libgcc-devel_linux-64 - version: 13.3.0 - build: h84ea5a7_101 - build_number: 101 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-13.3.0-h84ea5a7_101.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-64-13.3.0-h84ea5a7_101.conda sha256: 027cfb011328a108bc44f512a2dec6d954db85709e0b79b748c3392f85de0c64 md5: 0ce69d40c142915ac9734bc6134e514a depends: @@ -11065,14 +8230,7 @@ packages: license_family: GPL size: 2598313 timestamp: 1724801050802 -- kind: conda - name: libgcc-devel_linux-aarch64 - version: 13.3.0 - build: h0c07274_101 - build_number: 101 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-13.3.0-h0c07274_101.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/libgcc-devel_linux-aarch64-13.3.0-h0c07274_101.conda sha256: 2e4b691f811c1bddc72984e09d605c8b45532ec32307c3be007a84fac698bee2 md5: 4729642346d35283ed198d32ecc41206 depends: @@ -11081,122 +8239,94 @@ packages: license_family: GPL size: 2063611 timestamp: 1724801861173 -- kind: conda - name: libgcc-ng - version: 14.2.0 - build: h69a702a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgcc-ng-14.2.0-h69a702a_1.conda sha256: 3a76969c80e9af8b6e7a55090088bc41da4cffcde9e2c71b17f44d37b7cb87f7 md5: e39480b9ca41323497b05492a63bc35b depends: - libgcc 14.2.0 h77fa898_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54142 timestamp: 1729027726517 -- kind: conda - name: libgcc-ng - version: 14.2.0 - build: he9431aa_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgcc-ng-14.2.0-he9431aa_1.conda sha256: 9b5cf168a6c7361cae869cb74b716766ee7c6d6b3f6172b32ba9bf91135efdc4 md5: 0694c249c61469f2c0f7e2990782af21 depends: - libgcc 14.2.0 he277a41_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54104 timestamp: 1729089444587 -- kind: conda - name: libgd - version: 2.3.3 - build: h085315d_10 - build_number: 10 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h085315d_10.conda - sha256: 301b6da73cef796766945299a3dea776728703298aac90827aa6bf15134bc03c - md5: ac0cda3730da6013715a0d9e8e677d83 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-hd3e95f3_10.conda + sha256: b0fa27d4d09fb24750c04e89dbd0aee898dc028bde99e62621065a9bde43efe8 + md5: 30ee3a29c84cf7b842a8c5828c4b7c13 depends: + - __glibc >=2.17,<3.0.a0 - fontconfig >=2.14.2,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - icu >=75.1,<76.0a0 - libexpat >=2.6.2,<3.0a0 + - libgcc-ng >=12 - libjpeg-turbo >=3.0.0,<4.0a0 - libpng >=1.6.43,<1.7.0a0 - libtiff >=4.6.0,<4.8.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - - xorg-libxpm >=3.5.17,<4.0a0 + arch: x86_64 + platform: linux license: GD license_family: BSD - size: 344264 - timestamp: 1722928697150 -- kind: conda - name: libgd - version: 2.3.3 - build: h2e77e4f_10 - build_number: 10 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h2e77e4f_10.conda - sha256: b5ae19078f96912058d0f96120bf56dae11a417178cfcf220219486778ef868d - md5: a87f68ea91c66e1a9fb515f6aeba6ba2 + size: 225113 + timestamp: 1722928278395 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgd-2.3.3-h6818b27_10.conda + sha256: 4c8e3609db541a4e7da428b32da27f395a2604e2feb43dfebc5ee0317d304e74 + md5: 33725322288f22cd4e29db5356653d76 depends: - - __osx >=10.13 - fontconfig >=2.14.2,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - icu >=75.1,<76.0a0 - libexpat >=2.6.2,<3.0a0 - - libiconv >=1.17,<2.0a0 + - libgcc-ng >=12 - libjpeg-turbo >=3.0.0,<4.0a0 - libpng >=1.6.43,<1.7.0a0 - libtiff >=4.6.0,<4.8.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: GD license_family: BSD - size: 200456 - timestamp: 1722928713359 -- kind: conda - name: libgd - version: 2.3.3 - build: h6818b27_10 - build_number: 10 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgd-2.3.3-h6818b27_10.conda - sha256: 4c8e3609db541a4e7da428b32da27f395a2604e2feb43dfebc5ee0317d304e74 - md5: 33725322288f22cd4e29db5356653d76 + size: 227975 + timestamp: 1722928173564 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgd-2.3.3-h2e77e4f_10.conda + sha256: b5ae19078f96912058d0f96120bf56dae11a417178cfcf220219486778ef868d + md5: a87f68ea91c66e1a9fb515f6aeba6ba2 depends: + - __osx >=10.13 - fontconfig >=2.14.2,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - icu >=75.1,<76.0a0 - libexpat >=2.6.2,<3.0a0 - - libgcc-ng >=12 + - libiconv >=1.17,<2.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 - libpng >=1.6.43,<1.7.0a0 - libtiff >=4.6.0,<4.8.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: osx license: GD license_family: BSD - size: 227975 - timestamp: 1722928173564 -- kind: conda - name: libgd - version: 2.3.3 - build: hac1b3a8_10 - build_number: 10 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hac1b3a8_10.conda + size: 200456 + timestamp: 1722928713359 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgd-2.3.3-hac1b3a8_10.conda sha256: d15beaa2e862a09526e704f22f7d0b7fa73b114b868106dd686e167b9d65558e md5: c9e450ce5ced76f107c494fbd37325f5 depends: @@ -11212,95 +8342,63 @@ packages: - libtiff >=4.6.0,<4.8.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: GD license_family: BSD size: 200309 timestamp: 1722928354606 -- kind: conda - name: libgd - version: 2.3.3 - build: hd3e95f3_10 - build_number: 10 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgd-2.3.3-hd3e95f3_10.conda - sha256: b0fa27d4d09fb24750c04e89dbd0aee898dc028bde99e62621065a9bde43efe8 - md5: 30ee3a29c84cf7b842a8c5828c4b7c13 +- conda: https://conda.anaconda.org/conda-forge/win-64/libgd-2.3.3-h085315d_10.conda + sha256: 301b6da73cef796766945299a3dea776728703298aac90827aa6bf15134bc03c + md5: ac0cda3730da6013715a0d9e8e677d83 depends: - - __glibc >=2.17,<3.0.a0 - fontconfig >=2.14.2,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - icu >=75.1,<76.0a0 - libexpat >=2.6.2,<3.0a0 - - libgcc-ng >=12 - libjpeg-turbo >=3.0.0,<4.0a0 - libpng >=1.6.43,<1.7.0a0 - libtiff >=4.6.0,<4.8.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - xorg-libxpm >=3.5.17,<4.0a0 + arch: x86_64 + platform: win license: GD license_family: BSD - size: 225113 - timestamp: 1722928278395 -- kind: conda - name: libgettextpo - version: 0.22.5 - build: h8414b35_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.22.5-h8414b35_3.conda - sha256: bc446fad58155e96a01b28e99254415c2151bdddf57f9a2c00c44e6f0298bb62 - md5: c8cd7295cfb7bda5cbabea4fef904349 - depends: - - __osx >=11.0 - - libiconv >=1.17,<2.0a0 - - libintl 0.22.5 h8414b35_3 - license: GPL-3.0-or-later - license_family: GPL - size: 159800 - timestamp: 1723627007035 -- kind: conda - name: libgettextpo - version: 0.22.5 - build: hdfe23c8_3 - build_number: 3 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libgettextpo-0.22.5-hdfe23c8_3.conda + size: 344264 + timestamp: 1722928697150 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgettextpo-0.22.5-hdfe23c8_3.conda sha256: 8f7631d03a093272a5a8423181ac2c66514503e082e5494a2e942737af8a34ad md5: ba6eeccaee150e24a544be8ae71aeca1 depends: - __osx >=10.13 - libiconv >=1.17,<2.0a0 - libintl 0.22.5 hdfe23c8_3 + arch: x86_64 + platform: osx license: GPL-3.0-or-later license_family: GPL size: 172305 timestamp: 1723626852373 -- kind: conda - name: libgettextpo-devel - version: 0.22.5 - build: h8414b35_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-devel-0.22.5-h8414b35_3.conda - sha256: ea3ca757bf11ed25965b39466b50411c7c2a43f3b90ab4a36fc0ef43f7ab98ac - md5: 7074dc1c9aae1bb5d7bccb4ff03746ca +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-0.22.5-h8414b35_3.conda + sha256: bc446fad58155e96a01b28e99254415c2151bdddf57f9a2c00c44e6f0298bb62 + md5: c8cd7295cfb7bda5cbabea4fef904349 depends: - __osx >=11.0 - - libgettextpo 0.22.5 h8414b35_3 - libiconv >=1.17,<2.0a0 - libintl 0.22.5 h8414b35_3 + arch: arm64 + platform: osx license: GPL-3.0-or-later license_family: GPL - size: 37153 - timestamp: 1723627048279 -- kind: conda - name: libgettextpo-devel - version: 0.22.5 - build: hdfe23c8_3 - build_number: 3 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libgettextpo-devel-0.22.5-hdfe23c8_3.conda + size: 159800 + timestamp: 1723627007035 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgettextpo-devel-0.22.5-hdfe23c8_3.conda sha256: 8ea6bcba8c002f547edfd51e27e1e81465c8838033877c56439d20bcbc8f32a3 md5: efbba22e1657ef214c9ce9105b2ca562 depends: @@ -11308,257 +8406,186 @@ packages: - libgettextpo 0.22.5 hdfe23c8_3 - libiconv >=1.17,<2.0a0 - libintl 0.22.5 hdfe23c8_3 + arch: x86_64 + platform: osx license: GPL-3.0-or-later license_family: GPL size: 36977 timestamp: 1723626874373 -- kind: conda - name: libgfortran - version: 5.0.0 - build: 13_2_0_h97931a8_3 - build_number: 3 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda - sha256: 4874422e567b68334705c135c17e5acdca1404de8255673ce30ad3510e00be0d - md5: 0b6e23a012ee7a9a5f6b244f5a92c1d5 - depends: - - libgfortran5 13.2.0 h2873a65_3 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 110106 - timestamp: 1707328956438 -- kind: conda - name: libgfortran - version: 5.0.0 - build: 13_2_0_hd922786_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda - sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b - md5: 4a55d9e169114b2b90d3ec4604cd7bbf +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgettextpo-devel-0.22.5-h8414b35_3.conda + sha256: ea3ca757bf11ed25965b39466b50411c7c2a43f3b90ab4a36fc0ef43f7ab98ac + md5: 7074dc1c9aae1bb5d7bccb4ff03746ca depends: - - libgfortran5 13.2.0 hf226fd6_3 - license: GPL-3.0-only WITH GCC-exception-3.1 + - __osx >=11.0 + - libgettextpo 0.22.5 h8414b35_3 + - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 h8414b35_3 + arch: arm64 + platform: osx + license: GPL-3.0-or-later license_family: GPL - size: 110233 - timestamp: 1707330749033 -- kind: conda - name: libgfortran - version: 14.2.0 - build: h69a702a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda + size: 37153 + timestamp: 1723627048279 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-14.2.0-h69a702a_1.conda sha256: fc9e7f22a17faf74da904ebfc4d88699013d2992e55505e4aa0eb01770290977 md5: f1fd30127802683586f768875127a987 depends: - libgfortran5 14.2.0 hd5240d6_1 constrains: - libgfortran-ng ==14.2.0=*_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 53997 timestamp: 1729027752995 -- kind: conda - name: libgfortran - version: 14.2.0 - build: he9431aa_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-14.2.0-he9431aa_1.conda sha256: cb66e411fa32a5c6040f4e5e2a63c00897aae4c3133a9c004c2e929ccf19575b md5: 0294b92d2f47a240bebb1e3336b495f1 depends: - libgfortran5 14.2.0 hb6113d0_1 constrains: - libgfortran-ng ==14.2.0=*_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54105 timestamp: 1729089471124 -- kind: conda - name: libgfortran-devel_osx-64 - version: 13.2.0 - build: h80d4556_3 - build_number: 3 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-64-13.2.0-h80d4556_3.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran-5.0.0-13_2_0_h97931a8_3.conda + sha256: 4874422e567b68334705c135c17e5acdca1404de8255673ce30ad3510e00be0d + md5: 0b6e23a012ee7a9a5f6b244f5a92c1d5 + depends: + - libgfortran5 13.2.0 h2873a65_3 + arch: x86_64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110106 + timestamp: 1707328956438 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran-5.0.0-13_2_0_hd922786_3.conda + sha256: 44e541b4821c96b28b27fef5630883a60ce4fee91fd9c79f25a199f8f73f337b + md5: 4a55d9e169114b2b90d3ec4604cd7bbf + depends: + - libgfortran5 13.2.0 hf226fd6_3 + arch: arm64 + platform: osx + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 110233 + timestamp: 1707330749033 +- conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-64-13.2.0-h80d4556_3.conda sha256: 841525b5e40b6a0fc7deb325721313cb26b6b50c2dcc202a508b746a851d0c1b md5: 3a689f0d733e67828ad00eac5f3cf26e license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 457364 timestamp: 1707328861468 -- kind: conda - name: libgfortran-devel_osx-arm64 - version: 13.2.0 - build: h5d7a38c_3 - build_number: 3 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-arm64-13.2.0-h5d7a38c_3.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/libgfortran-devel_osx-arm64-13.2.0-h5d7a38c_3.conda sha256: 932daa12d7af965db25cd08485031ca857a91886c80d56b02365d4636729362b md5: 54386854330df39e779228c7922379a5 license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 1964427 timestamp: 1707330674197 -- kind: conda - name: libgfortran-ng - version: 14.2.0 - build: h69a702a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran-ng-14.2.0-h69a702a_1.conda sha256: 423f1e2403f0c665748e42d335e421e53fd03c08d457cfb6f360d329d9459851 md5: 0a7f4cd238267c88e5d69f7826a407eb depends: - libgfortran 14.2.0 h69a702a_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54106 timestamp: 1729027945817 -- kind: conda - name: libgfortran-ng - version: 14.2.0 - build: he9431aa_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-ng-14.2.0-he9431aa_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran-ng-14.2.0-he9431aa_1.conda sha256: cdd5bae1e33d6bdafe837c2e6ea594faf5bb7f880272ac1984468c7967adff41 md5: 5e90005d310d69708ba0aa7f4fed1de6 depends: - libgfortran 14.2.0 he9431aa_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54111 timestamp: 1729089714658 -- kind: conda - name: libgfortran5 - version: 13.2.0 - build: h2873a65_3 - build_number: 3 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda + sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d + md5: 9822b874ea29af082e5d36098d25427d + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1462645 + timestamp: 1729027735353 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda + sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f + md5: fc068e11b10e18f184e027782baa12b6 + depends: + - libgcc >=14.2.0 + constrains: + - libgfortran 14.2.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 1102158 + timestamp: 1729089452640 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libgfortran5-13.2.0-h2873a65_3.conda sha256: da3db4b947e30aec7596a3ef92200d17e774cccbbf7efc47802529a4ca5ca31b md5: e4fb4d23ec2870ff3c40d10afe305aec depends: - llvm-openmp >=8.0.0 constrains: - libgfortran 5.0.0 13_2_0_*_3 + arch: x86_64 + platform: osx license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 1571379 timestamp: 1707328880361 -- kind: conda - name: libgfortran5 - version: 13.2.0 - build: hf226fd6_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libgfortran5-13.2.0-hf226fd6_3.conda sha256: bafc679eedb468a86aa4636061c55966186399ee0a04b605920d208d97ac579a md5: 66ac81d54e95c534ae488726c1f698ea depends: - llvm-openmp >=8.0.0 constrains: - libgfortran 5.0.0 13_2_0_*_3 + arch: arm64 + platform: osx license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 997381 timestamp: 1707330687590 -- kind: conda - name: libgfortran5 - version: 14.2.0 - build: hb6113d0_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgfortran5-14.2.0-hb6113d0_1.conda - sha256: a87ff46d19916403cbf68cf1d785bf56b4d1ab7b2552468d2ea775d70782493f - md5: fc068e11b10e18f184e027782baa12b6 - depends: - - libgcc >=14.2.0 - constrains: - - libgfortran 14.2.0 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 1102158 - timestamp: 1729089452640 -- kind: conda - name: libgfortran5 - version: 14.2.0 - build: hd5240d6_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgfortran5-14.2.0-hd5240d6_1.conda - sha256: d149a37ca73611e425041f33b9d8dbed6e52ec506fe8cc1fc0ee054bddeb6d5d - md5: 9822b874ea29af082e5d36098d25427d - depends: - - libgcc >=14.2.0 - constrains: - - libgfortran 14.2.0 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 1462645 - timestamp: 1729027735353 -- kind: conda - name: libgl - version: 1.7.0 - build: ha4b6fd6_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgl-1.7.0-ha4b6fd6_2.conda sha256: dc2752241fa3d9e40ce552c1942d0a4b5eeb93740c9723873f6fcf8d39ef8d2d md5: 928b8be80851f5d8ffb016f9c81dae7a depends: - __glibc >=2.17,<3.0.a0 - libglvnd 1.7.0 ha4b6fd6_2 - libglx 1.7.0 ha4b6fd6_2 + arch: x86_64 + platform: linux license: LicenseRef-libglvnd size: 134712 timestamp: 1731330998354 -- kind: conda - name: libgl - version: 1.7.0 - build: hd24410f_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgl-1.7.0-hd24410f_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgl-1.7.0-hd24410f_2.conda sha256: 3e954380f16255d1c8ae5da3bd3044d3576a0e1ac2e3c3ff2fe8f2f1ad2e467a md5: 0d00176464ebb25af83d40736a2cd3bb depends: - libglvnd 1.7.0 hd24410f_2 - libglx 1.7.0 hd24410f_2 + arch: aarch64 + platform: linux license: LicenseRef-libglvnd size: 145442 timestamp: 1731331005019 -- kind: conda - name: libglib - version: 2.82.2 - build: h07bd6cf_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-h07bd6cf_0.conda - sha256: 101fb31c509d6a69ac5d612b51d4088ddbc675fca18cf0c3589cfee26cd01ca0 - md5: 890783f64502fa6bfcdc723cfbf581b4 - depends: - - __osx >=11.0 - - libffi >=3.4,<4.0a0 - - libiconv >=1.17,<2.0a0 - - libintl >=0.22.5,<1.0a0 - - libzlib >=1.3.1,<2.0a0 - - pcre2 >=10.44,<10.45.0a0 - constrains: - - glib 2.82.2 *_0 - license: LGPL-2.1-or-later - size: 3635416 - timestamp: 1729191799117 -- kind: conda - name: libglib - version: 2.82.2 - build: h2ff4ddf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglib-2.82.2-h2ff4ddf_0.conda sha256: 49ee9401d483a76423461c50dcd37f91d070efaec7e4dc2828d8cdd2ce694231 md5: 13e8e54035ddd2b91875ba399f0f7c04 depends: @@ -11570,37 +8597,28 @@ packages: - pcre2 >=10.44,<10.45.0a0 constrains: - glib 2.82.2 *_0 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later size: 3931898 timestamp: 1729191404130 -- kind: conda - name: libglib - version: 2.82.2 - build: h7025463_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libglib-2.82.2-h7025463_0.conda - sha256: 7dfbf492b736f8d379f8c3b32a823f0bf2167ff69963e4c940339b146a04c54a - md5: 3e379c1b908a7101ecbc503def24613f +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.82.2-hc486b8e_0.conda + sha256: 6797d24de7acd298f81a86078c64e4f3fea6d551a3e8892205c9e72a37a7cc3c + md5: 47f6d85fe47b865e56c539f2ba5f4dad depends: - libffi >=3.4,<4.0a0 + - libgcc >=13 - libiconv >=1.17,<2.0a0 - - libintl >=0.22.5,<1.0a0 - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.44,<10.45.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 constrains: - glib 2.82.2 *_0 + arch: aarch64 + platform: linux license: LGPL-2.1-or-later - size: 3810166 - timestamp: 1729192227078 -- kind: conda - name: libglib - version: 2.82.2 - build: hb6ef654_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.82.2-hb6ef654_0.conda + size: 4020802 + timestamp: 1729191545578 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libglib-2.82.2-hb6ef654_0.conda sha256: d782be2d8d6784f0b8584ca3cfa93357cddc71b0975560a2bcabd174dac60fff md5: 2e0511f82f1481210f148e1205fe2482 depends: @@ -11612,34 +8630,48 @@ packages: - pcre2 >=10.44,<10.45.0a0 constrains: - glib 2.82.2 *_0 + arch: x86_64 + platform: osx license: LGPL-2.1-or-later size: 3692367 timestamp: 1729191628049 -- kind: conda - name: libglib - version: 2.82.2 - build: hc486b8e_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libglib-2.82.2-hc486b8e_0.conda - sha256: 6797d24de7acd298f81a86078c64e4f3fea6d551a3e8892205c9e72a37a7cc3c - md5: 47f6d85fe47b865e56c539f2ba5f4dad +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libglib-2.82.2-h07bd6cf_0.conda + sha256: 101fb31c509d6a69ac5d612b51d4088ddbc675fca18cf0c3589cfee26cd01ca0 + md5: 890783f64502fa6bfcdc723cfbf581b4 + depends: + - __osx >=11.0 + - libffi >=3.4,<4.0a0 + - libiconv >=1.17,<2.0a0 + - libintl >=0.22.5,<1.0a0 + - libzlib >=1.3.1,<2.0a0 + - pcre2 >=10.44,<10.45.0a0 + constrains: + - glib 2.82.2 *_0 + arch: arm64 + platform: osx + license: LGPL-2.1-or-later + size: 3635416 + timestamp: 1729191799117 +- conda: https://conda.anaconda.org/conda-forge/win-64/libglib-2.82.2-h7025463_0.conda + sha256: 7dfbf492b736f8d379f8c3b32a823f0bf2167ff69963e4c940339b146a04c54a + md5: 3e379c1b908a7101ecbc503def24613f depends: - libffi >=3.4,<4.0a0 - - libgcc >=13 - libiconv >=1.17,<2.0a0 + - libintl >=0.22.5,<1.0a0 - libzlib >=1.3.1,<2.0a0 - pcre2 >=10.44,<10.45.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 constrains: - glib 2.82.2 *_0 + arch: x86_64 + platform: win license: LGPL-2.1-or-later - size: 4020802 - timestamp: 1729191545578 -- kind: conda - name: libglu - version: 9.0.3 - build: h03adeef_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h03adeef_0.conda + size: 3810166 + timestamp: 1729192227078 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglu-9.0.3-h03adeef_0.conda sha256: cabd78b5ede1f3f161037d3a6cfb6b8a262ec474f9408859c364ef55ba778097 md5: b1df5affe904efe82ef890826b68881d depends: @@ -11654,15 +8686,12 @@ packages: - xorg-libxdamage >=1.1.6,<2.0a0 - xorg-libxext >=1.3.6,<2.0a0 - xorg-libxxf86vm >=1.1.5,<2.0a0 + arch: x86_64 + platform: linux license: SGI-2 size: 325361 timestamp: 1731470892413 -- kind: conda - name: libglu - version: 9.0.3 - build: hc7f7585_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libglu-9.0.3-hc7f7585_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglu-9.0.3-hc7f7585_0.conda sha256: fafab7ffb5522d6b788a9c83eab44a76750efa1a71380467599a458c4f7bf849 md5: cf9ff275dd030e5e8c9d336f5086da98 depends: @@ -11678,43 +8707,30 @@ packages: - xorg-libxdmcp >=1.1.5,<2.0a0 - xorg-libxext >=1.3.6,<2.0a0 - xorg-libxxf86vm >=1.1.5,<2.0a0 + arch: aarch64 + platform: linux license: SGI-2 size: 317433 timestamp: 1731470978326 -- kind: conda - name: libglvnd - version: 1.7.0 - build: ha4b6fd6_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglvnd-1.7.0-ha4b6fd6_2.conda sha256: 1175f8a7a0c68b7f81962699751bb6574e6f07db4c9f72825f978e3016f46850 md5: 434ca7e50e40f4918ab701e3facd59a0 depends: - __glibc >=2.17,<3.0.a0 + arch: x86_64 + platform: linux license: LicenseRef-libglvnd size: 132463 timestamp: 1731330968309 -- kind: conda - name: libglvnd - version: 1.7.0 - build: hd24410f_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libglvnd-1.7.0-hd24410f_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglvnd-1.7.0-hd24410f_2.conda sha256: 57ec3898a923d4bcc064669e90e8abfc4d1d945a13639470ba5f3748bd3090da md5: 9e115653741810778c9a915a2f8439e7 + arch: aarch64 + platform: linux license: LicenseRef-libglvnd size: 152135 timestamp: 1731330986070 -- kind: conda - name: libglvnd-cos7-aarch64 - version: 1.0.1 - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libglvnd-cos7-aarch64-1.0.1-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/libglvnd-cos7-aarch64-1.0.1-ha675448_1106.tar.bz2 sha256: 7b98dad41277b130a7f49a3a46094c3d9fa54bd5adac7b46d322b4ea5eb4331c md5: 252273b7e6c71f51b0db597a46b991dc depends: @@ -11723,14 +8739,7 @@ packages: license_family: MIT size: 127163 timestamp: 1726577722203 -- kind: conda - name: libglvnd-glx-cos7-aarch64 - version: 1.0.1 - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libglvnd-glx-cos7-aarch64-1.0.1-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/libglvnd-glx-cos7-aarch64-1.0.1-ha675448_1106.tar.bz2 sha256: e34c221c5ee2ad08789d3c656dc347f0be472a50752d1d5bc8abaf7067104d8a md5: 4ffb207537e29036a555ac48aa4e138e depends: @@ -11740,71 +8749,64 @@ packages: license_family: MIT size: 176808 timestamp: 1726579609474 -- kind: conda - name: libglx - version: 1.7.0 - build: ha4b6fd6_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libglx-1.7.0-ha4b6fd6_2.conda sha256: 2d35a679624a93ce5b3e9dd301fff92343db609b79f0363e6d0ceb3a6478bfa7 md5: c8013e438185f33b13814c5c488acd5c depends: - __glibc >=2.17,<3.0.a0 - libglvnd 1.7.0 ha4b6fd6_2 - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux license: LicenseRef-libglvnd size: 75504 timestamp: 1731330988898 -- kind: conda - name: libglx - version: 1.7.0 - build: hd24410f_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libglx-1.7.0-hd24410f_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libglx-1.7.0-hd24410f_2.conda sha256: 6591af640cb05a399fab47646025f8b1e1a06a0d4bbb4d2e320d6629b47a1c61 md5: 1d4269e233636148696a67e2d30dad2a depends: - libglvnd 1.7.0 hd24410f_2 - xorg-libx11 >=1.8.9,<2.0a0 + arch: aarch64 + platform: linux license: LicenseRef-libglvnd size: 77736 timestamp: 1731330998960 -- kind: conda - name: libgomp - version: 14.2.0 - build: h77fa898_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libgomp-14.2.0-h77fa898_1.conda sha256: 1911c29975ec99b6b906904040c855772ccb265a1c79d5d75c8ceec4ed89cd63 md5: cc3573974587f12dda90d96e3e55a702 depends: - _libgcc_mutex 0.1 conda_forge + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 460992 timestamp: 1729027639220 -- kind: conda - name: libgomp - version: 14.2.0 - build: he277a41_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libgomp-14.2.0-he277a41_1.conda sha256: 5aa53874a5e57a00f2e0c2e2910684eb674429cd5fcb803619b226a73e89aedf md5: 376f0e73abbda6d23c0cb749adc195ef + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 463521 timestamp: 1729089357313 -- kind: conda - name: libhiredis - version: 1.0.2 - build: h05efe27_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libhiredis-1.0.2-h05efe27_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhiredis-1.0.2-h2cc385e_0.tar.bz2 + sha256: ee39c69df4fb39cfe1139ac4f7405bb066eba773e11ba3ab7c33835be00c2e48 + md5: b34907d3a81a3cd8095ee83d174c074a + depends: + - libgcc-ng >=9.4.0 + - libgfortran-ng + - libgfortran5 >=9.4.0 + - libstdcxx-ng >=9.4.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 147325 + timestamp: 1633982069195 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libhiredis-1.0.2-h05efe27_0.tar.bz2 sha256: f8878068428e83acd4783186c57d51d963aa331e6aa1e14d01fe86dffa982cf3 md5: a87f068744fd20334cd41489eb163bee depends: @@ -11812,81 +8814,51 @@ packages: - libgfortran-ng - libgfortran5 >=9.4.0 - libstdcxx-ng >=9.4.0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 145989 timestamp: 1633983079265 -- kind: conda - name: libhiredis - version: 1.0.2 - build: h0e60522_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libhiredis-1.0.2-h0e60522_0.tar.bz2 - sha256: 671f9ddab4cc4675e0a1e4a5c2a99c45ade031924556523fe999f13b22f23dc6 - md5: f92ce316734c9fa1e18f05b49b67cd56 - depends: - - vc >=14.1,<15.0a0 - - vs2015_runtime >=14.16.27012 - license: BSD-3-Clause - license_family: BSD - size: 56988 - timestamp: 1633982299028 -- kind: conda - name: libhiredis - version: 1.0.2 - build: h2beb688_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libhiredis-1.0.2-h2beb688_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libhiredis-1.0.2-h2beb688_0.tar.bz2 sha256: f5347083dad7527a5c1732fcf4df914e9b728aae6af6660856ac7954d28948be md5: 524282b2c46c9dedf051b3bc2ae05494 depends: - libcxx >=11.1.0 - libgfortran 5.* - libgfortran5 >=9.3.0 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD size: 53043 timestamp: 1633982331651 -- kind: conda - name: libhiredis - version: 1.0.2 - build: h2cc385e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libhiredis-1.0.2-h2cc385e_0.tar.bz2 - sha256: ee39c69df4fb39cfe1139ac4f7405bb066eba773e11ba3ab7c33835be00c2e48 - md5: b34907d3a81a3cd8095ee83d174c074a - depends: - - libgcc-ng >=9.4.0 - - libgfortran-ng - - libgfortran5 >=9.4.0 - - libstdcxx-ng >=9.4.0 - license: BSD-3-Clause - license_family: BSD - size: 147325 - timestamp: 1633982069195 -- kind: conda - name: libhiredis - version: 1.0.2 - build: hbec66e7_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libhiredis-1.0.2-hbec66e7_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhiredis-1.0.2-hbec66e7_0.tar.bz2 sha256: a77b7097b3a557e8bc2c2a6e5257bde72e6c828ab8dd9996cec3895cc6cbcf9e md5: 37ca71a16015b17397da4a5e6883f66f depends: - libcxx >=11.1.0 - libgfortran 5.* - libgfortran5 >=11.0.1.dev0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 51945 timestamp: 1633982449355 -- kind: conda - name: libhwloc - version: 2.11.2 - build: default_h0d58e46_1001 - build_number: 1001 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/libhiredis-1.0.2-h0e60522_0.tar.bz2 + sha256: 671f9ddab4cc4675e0a1e4a5c2a99c45ade031924556523fe999f13b22f23dc6 + md5: f92ce316734c9fa1e18f05b49b67cd56 + depends: + - vc >=14.1,<15.0a0 + - vs2015_runtime >=14.16.27012 + arch: x86_64 + platform: win + license: BSD-3-Clause + license_family: BSD + size: 56988 + timestamp: 1633982299028 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libhwloc-2.11.2-default_h0d58e46_1001.conda sha256: d14c016482e1409ae1c50109a9ff933460a50940d2682e745ab1c172b5282a69 md5: 804ca9e91bcaea0824a341d55b1684f2 depends: @@ -11894,68 +8866,52 @@ packages: - libgcc >=13 - libstdcxx >=13 - libxml2 >=2.13.4,<3.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 2423200 timestamp: 1731374922090 -- kind: conda - name: libhwloc - version: 2.11.2 - build: default_h2c612a5_1001 - build_number: 1001 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libhwloc-2.11.2-default_h2c612a5_1001.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libhwloc-2.11.2-default_h2c612a5_1001.conda sha256: 8c7bf410afb4f068063c718a8691de611eeb75f3d0c6122698c7961e90820445 md5: 8f42119cdfd1ac905e19f0eeebe9ccfa depends: - libgcc >=13 - libstdcxx >=13 - libxml2 >=2.13.4,<3.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 2436762 timestamp: 1731374851939 -- kind: conda - name: libhwloc - version: 2.11.2 - build: default_h4cdd727_1001 - build_number: 1001 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libhwloc-2.11.2-default_h4cdd727_1001.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/libhwloc-2.11.2-default_h4cdd727_1001.conda sha256: 989917281abf762b7e7a2b5968db2b6b0e89f46e704042ab8ec61a66951e0e0b md5: 52bbb10ac083c563d00df035c94f9a63 depends: - __osx >=10.13 - libcxx >=18 - libxml2 >=2.13.4,<3.0a0 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD size: 2359326 timestamp: 1731375067281 -- kind: conda - name: libhwloc - version: 2.11.2 - build: default_hbce5d74_1001 - build_number: 1001 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libhwloc-2.11.2-default_hbce5d74_1001.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libhwloc-2.11.2-default_hbce5d74_1001.conda sha256: dcac7144ad93cf3f276ec14c5553aa34de07443a9b1db6b3cd8d2e117b173c40 md5: ff6438cf47cff4899ae9900bf9253c41 depends: - __osx >=11.0 - libcxx >=18 - libxml2 >=2.13.4,<3.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 2332319 timestamp: 1731375088576 -- kind: conda - name: libhwloc - version: 2.11.2 - build: default_hc8275d1_1000 - build_number: 1000 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_hc8275d1_1000.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/libhwloc-2.11.2-default_hc8275d1_1000.conda sha256: 29db3126762be449bf137d0ce6662e0c95ce79e83a0685359012bb86c9ceef0a md5: 2805c2eb3a74df931b3e2b724fcb965e depends: @@ -11964,205 +8920,161 @@ packages: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD size: 2389010 timestamp: 1727380221363 -- kind: conda - name: libiconv - version: '1.17' - build: h0d3ecfb_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda - sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 - md5: 69bda57310071cf6d2b86caf11573d2d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda + sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 + md5: d66573916ffcf376178462f1b61c941e + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.1-only - size: 676469 - timestamp: 1702682458114 -- kind: conda - name: libiconv - version: '1.17' - build: h31becfc_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda + size: 705775 + timestamp: 1702682170569 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libiconv-1.17-h31becfc_2.conda sha256: a30e09d089cb75a0d5b8e5c354694c1317da98261185ed65aa3793e741060614 md5: 9a8eb13f14de7d761555a98712e6df65 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: LGPL-2.1-only size: 705787 timestamp: 1702684557134 -- kind: conda - name: libiconv - version: '1.17' - build: hcfcfb64_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda + sha256: 23d4923baeca359423a7347c2ed7aaf48c68603df0cf8b87cc94a10b0d4e9a23 + md5: 6c3628d047e151efba7cf08c5e54d1ca + arch: x86_64 + platform: osx + license: LGPL-2.1-only + size: 666538 + timestamp: 1702682713201 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libiconv-1.17-h0d3ecfb_2.conda + sha256: bc7de5097b97bcafcf7deaaed505f7ce02f648aac8eccc0d5a47cc599a1d0304 + md5: 69bda57310071cf6d2b86caf11573d2d + arch: arm64 + platform: osx + license: LGPL-2.1-only + size: 676469 + timestamp: 1702682458114 +- conda: https://conda.anaconda.org/conda-forge/win-64/libiconv-1.17-hcfcfb64_2.conda sha256: 5f844dd19b046d43174ad80c6ea75b5d504020e3b63cfbc4ace97b8730d35c7b md5: e1eb10b1cca179f2baa3601e4efc8712 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: LGPL-2.1-only size: 636146 timestamp: 1702682547199 -- kind: conda - name: libiconv - version: '1.17' - build: hd590300_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libiconv-1.17-hd590300_2.conda - sha256: 8ac2f6a9f186e76539439e50505d98581472fedb347a20e7d1f36429849f05c9 - md5: d66573916ffcf376178462f1b61c941e - depends: - - libgcc-ng >=12 - license: LGPL-2.1-only - size: 705775 - timestamp: 1702682170569 -- kind: conda - name: libiconv - version: '1.17' - build: hd75f5a5_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libiconv-1.17-hd75f5a5_2.conda - sha256: 23d4923baeca359423a7347c2ed7aaf48c68603df0cf8b87cc94a10b0d4e9a23 - md5: 6c3628d047e151efba7cf08c5e54d1ca - license: LGPL-2.1-only - size: 666538 - timestamp: 1702682713201 -- kind: conda - name: libintl - version: 0.22.5 - build: h5728263_3 - build_number: 3 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda - sha256: c7e4600f28bcada8ea81456a6530c2329312519efcf0c886030ada38976b0511 - md5: 2cf0cf76cc15d360dfa2f17fd6cf9772 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.22.5-hdfe23c8_3.conda + sha256: 0dbb662440a73e20742f12d88e51785a5a5117b8b150783a032b8818a8c043af + md5: 52d4d643ed26c07599736326c46bf12f depends: + - __osx >=10.13 - libiconv >=1.17,<2.0a0 + arch: x86_64 + platform: osx license: LGPL-2.1-or-later - size: 95568 - timestamp: 1723629479451 -- kind: conda - name: libintl - version: 0.22.5 - build: h8414b35_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda + size: 88086 + timestamp: 1723626826235 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-0.22.5-h8414b35_3.conda sha256: 7c1d238d4333af385e594c89ebcb520caad7ed83a735c901099ec0970a87a891 md5: 3b98ec32e91b3b59ad53dbb9c96dd334 depends: - __osx >=11.0 - libiconv >=1.17,<2.0a0 + arch: arm64 + platform: osx license: LGPL-2.1-or-later size: 81171 timestamp: 1723626968270 -- kind: conda - name: libintl - version: 0.22.5 - build: hdfe23c8_3 - build_number: 3 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libintl-0.22.5-hdfe23c8_3.conda - sha256: 0dbb662440a73e20742f12d88e51785a5a5117b8b150783a032b8818a8c043af - md5: 52d4d643ed26c07599736326c46bf12f +- conda: https://conda.anaconda.org/conda-forge/win-64/libintl-0.22.5-h5728263_3.conda + sha256: c7e4600f28bcada8ea81456a6530c2329312519efcf0c886030ada38976b0511 + md5: 2cf0cf76cc15d360dfa2f17fd6cf9772 + depends: + - libiconv >=1.17,<2.0a0 + arch: x86_64 + platform: win + license: LGPL-2.1-or-later + size: 95568 + timestamp: 1723629479451 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libintl-devel-0.22.5-hdfe23c8_3.conda + sha256: 4913a20244520d6fae14452910613b652752982193a401482b7d699ee70bb13a + md5: aeb045f400ec2b068c6c142b16f87c7e depends: - __osx >=10.13 - libiconv >=1.17,<2.0a0 + - libintl 0.22.5 hdfe23c8_3 + arch: x86_64 + platform: osx license: LGPL-2.1-or-later - size: 88086 - timestamp: 1723626826235 -- kind: conda - name: libintl-devel - version: 0.22.5 - build: h8414b35_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8414b35_3.conda + size: 38249 + timestamp: 1723626863306 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libintl-devel-0.22.5-h8414b35_3.conda sha256: c9d1d4fdfb5775828e54bc9fb443b1a6de9319a04b81d1bac52c26114a763154 md5: 271646de11b018c66e81eb4c4717b291 depends: - __osx >=11.0 - libiconv >=1.17,<2.0a0 - libintl 0.22.5 h8414b35_3 + arch: arm64 + platform: osx license: LGPL-2.1-or-later size: 38584 timestamp: 1723627022409 -- kind: conda - name: libintl-devel - version: 0.22.5 - build: hdfe23c8_3 - build_number: 3 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libintl-devel-0.22.5-hdfe23c8_3.conda - sha256: 4913a20244520d6fae14452910613b652752982193a401482b7d699ee70bb13a - md5: aeb045f400ec2b068c6c142b16f87c7e +- conda: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda + sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f + md5: ea25936bb4080d843790b586850f82b8 depends: - - __osx >=10.13 - - libiconv >=1.17,<2.0a0 - - libintl 0.22.5 hdfe23c8_3 - license: LGPL-2.1-or-later - size: 38249 - timestamp: 1723626863306 -- kind: conda - name: libjpeg-turbo - version: 3.0.0 - build: h0dc2134_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda - sha256: d9572fd1024adc374aae7c247d0f29fdf4b122f1e3586fe62acc18067f40d02f - md5: 72507f8e3961bc968af17435060b6dd6 + - libgcc-ng >=12 constrains: - jpeg <0.0.0a + arch: x86_64 + platform: linux license: IJG AND BSD-3-Clause AND Zlib - size: 579748 - timestamp: 1694475265912 -- kind: conda - name: libjpeg-turbo - version: 3.0.0 - build: h31becfc_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda + size: 618575 + timestamp: 1694474974816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libjpeg-turbo-3.0.0-h31becfc_1.conda sha256: 675bc1f2a8581cd34a86c412663ec29c5f90c1d9f8d11866aa1ade5cdbdf8429 md5: ed24e702928be089d9ba3f05618515c6 depends: - libgcc-ng >=12 constrains: - jpeg <0.0.0a + arch: aarch64 + platform: linux license: IJG AND BSD-3-Clause AND Zlib size: 647126 timestamp: 1694475003570 -- kind: conda - name: libjpeg-turbo - version: 3.0.0 - build: hb547adb_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/libjpeg-turbo-3.0.0-h0dc2134_1.conda + sha256: d9572fd1024adc374aae7c247d0f29fdf4b122f1e3586fe62acc18067f40d02f + md5: 72507f8e3961bc968af17435060b6dd6 + constrains: + - jpeg <0.0.0a + arch: x86_64 + platform: osx + license: IJG AND BSD-3-Clause AND Zlib + size: 579748 + timestamp: 1694475265912 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libjpeg-turbo-3.0.0-hb547adb_1.conda sha256: a42054eaa38e84fc1e5ab443facac4bbc9d1b6b6f23f54b7bf4f1eb687e1d993 md5: 3ff1e053dc3a2b8e36b9bfa4256a58d1 constrains: - jpeg <0.0.0a + arch: arm64 + platform: osx license: IJG AND BSD-3-Clause AND Zlib size: 547541 timestamp: 1694475104253 -- kind: conda - name: libjpeg-turbo - version: 3.0.0 - build: hcfcfb64_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/libjpeg-turbo-3.0.0-hcfcfb64_1.conda sha256: 4e7808e3098b4b4ed7e287f63bb24f9045cc4d95bfd39f0db870fc2837d74dff md5: 3f1b948619c45b1ca714d60c7389092c depends: @@ -12171,146 +9083,92 @@ packages: - vc14_runtime >=14.29.30139 constrains: - jpeg <0.0.0a + arch: x86_64 + platform: win license: IJG AND BSD-3-Clause AND Zlib size: 822966 timestamp: 1694475223854 -- kind: conda - name: libjpeg-turbo - version: 3.0.0 - build: hd590300_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libjpeg-turbo-3.0.0-hd590300_1.conda - sha256: b954e09b7e49c2f2433d6f3bb73868eda5e378278b0f8c1dd10a7ef090e14f2f - md5: ea25936bb4080d843790b586850f82b8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-26_linux64_openblas.conda + build_number: 26 + sha256: b76458c36331376911e0f98fa68109e02f4d5e5ebfffa79587ac69cef748bba1 + md5: 3792604c43695d6a273bc5faaac47d48 depends: - - libgcc-ng >=12 - constrains: - - jpeg <0.0.0a - license: IJG AND BSD-3-Clause AND Zlib - size: 618575 - timestamp: 1694474974816 -- kind: conda - name: liblapack - version: 3.9.0 - build: 25_linux64_openblas - build_number: 25 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/liblapack-3.9.0-25_linux64_openblas.conda - sha256: 9d1ff017714edb2d84868f0f931a4a0e7c289a971062b2ac66cfc8145df7e20e - md5: 4dc03a53fc69371a6158d0ed37214cd3 - depends: - - libblas 3.9.0 25_linux64_openblas + - libblas 3.9.0 26_linux64_openblas constrains: - - liblapacke 3.9.0 25_linux64_openblas - - libcblas 3.9.0 25_linux64_openblas + - libcblas 3.9.0 26_linux64_openblas + - liblapacke 3.9.0 26_linux64_openblas - blas * openblas + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 15608 - timestamp: 1729642910812 -- kind: conda - name: liblapack - version: 3.9.0 - build: 25_linuxaarch64_openblas - build_number: 25 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-25_linuxaarch64_openblas.conda - sha256: 2b399e65e0338bf249657b98333e910cd7086ea1332d4d6f303735883ca49318 - md5: 0eb74e81de46454960bde9e44e7ee378 + size: 16338 + timestamp: 1734432576650 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblapack-3.9.0-26_linuxaarch64_openblas.conda + build_number: 26 + sha256: a42bd01498efe2ccf6d08d56ac3cbd3ceab79e06699ff5aac3da8e45a66738f7 + md5: a5d4e18876393633da62fd8492c00156 depends: - - libblas 3.9.0 25_linuxaarch64_openblas + - libblas 3.9.0 26_linuxaarch64_openblas constrains: - blas * openblas - - liblapacke 3.9.0 25_linuxaarch64_openblas - - libcblas 3.9.0 25_linuxaarch64_openblas - license: BSD-3-Clause - license_family: BSD - size: 15711 - timestamp: 1729643010817 -- kind: conda - name: liblapack - version: 3.9.0 - build: 25_osx64_openblas - build_number: 25 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-25_osx64_openblas.conda - sha256: 2a9a6143d103e7e21511cbf439521645bdd506bfabfcac9d6398dd0562c6905c - md5: dda0e24b4605ebbd381e48606a107bed - depends: - - libblas 3.9.0 25_osx64_openblas + - liblapacke 3.9.0 26_linuxaarch64_openblas + - libcblas 3.9.0 26_linuxaarch64_openblas + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 16403 + timestamp: 1734432585123 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblapack-3.9.0-26_osx64_openblas.conda + build_number: 26 + sha256: 166b07a129d122dbe90b06b582b5c29fbe5b958547fb474ca497cb084846810d + md5: c0c54bb6382ff1e52bf08f1da539e9b4 + depends: + - libblas 3.9.0 26_osx64_openblas constrains: - - liblapacke 3.9.0 25_osx64_openblas + - libcblas 3.9.0 26_osx64_openblas - blas * openblas - - libcblas 3.9.0 25_osx64_openblas - license: BSD-3-Clause - license_family: BSD - size: 15852 - timestamp: 1729643174413 -- kind: conda - name: liblapack - version: 3.9.0 - build: 25_osxarm64_openblas - build_number: 25 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-25_osxarm64_openblas.conda - sha256: fdd742407672a9af20e70764550cf18b3ab67f12e48bf04163b90492fbc401e7 - md5: 19bbddfec972d401838330453186108d - depends: - - libblas 3.9.0 25_osxarm64_openblas + - liblapacke 3.9.0 26_osx64_openblas + arch: x86_64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 16588 + timestamp: 1734432968940 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblapack-3.9.0-26_osxarm64_openblas.conda + build_number: 26 + sha256: dd6d9a21e672aee4332f019c8229ce70cf5eaf6c2f4cbd1443b105fb66c00dc5 + md5: cebad79038a75cfd28fa90d147a2d34d + depends: + - libblas 3.9.0 26_osxarm64_openblas constrains: + - liblapacke 3.9.0 26_osxarm64_openblas + - libcblas 3.9.0 26_osxarm64_openblas - blas * openblas - - liblapacke 3.9.0 25_osxarm64_openblas - - libcblas 3.9.0 25_osxarm64_openblas - license: BSD-3-Clause - license_family: BSD - size: 15823 - timestamp: 1729643275943 -- kind: conda - name: liblapack - version: 3.9.0 - build: 25_win64_mkl - build_number: 25 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-25_win64_mkl.conda - sha256: 98c13a28596389539abe3f608c6fbd2826df47671f77c58a331df878c6140c53 - md5: f716ef84564c574e8e74ae725f5d5f93 - depends: - - libblas 3.9.0 25_win64_mkl + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 16624 + timestamp: 1734433068120 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblapack-3.9.0-26_win64_mkl.conda + build_number: 26 + sha256: 6701bd162d105531b75d05acf82b4ad9fbc5a24ffbccf8c66efa9e72c386b33c + md5: 0a717f5fda7279b77bcce671b324408a + depends: + - libblas 3.9.0 26_win64_mkl constrains: + - liblapacke 3.9.0 26_win64_mkl - blas * mkl - - libcblas 3.9.0 25_win64_mkl - - liblapacke 3.9.0 25_win64_mkl - license: BSD-3-Clause - license_family: BSD - size: 3736560 - timestamp: 1729643588182 -- kind: conda - name: libllvm17 - version: 17.0.6 - build: h5090b49_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm17-17.0.6-h5090b49_2.conda - sha256: 5829e490e395d85442fb6c7edb0ec18d1a5bb1bc529919a89337d34235205064 - md5: 443b26505722696a9535732bc2a07576 - depends: - - __osx >=11.0 - - libcxx >=16 - - libxml2 >=2.12.7,<3.0a0 - - libzlib >=1.3.1,<2.0a0 - - zstd >=1.5.6,<1.6.0a0 - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - size: 24612870 - timestamp: 1718320971519 -- kind: conda - name: libllvm17 - version: 17.0.6 - build: hbedff68_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libllvm17-17.0.6-hbedff68_1.conda + - libcblas 3.9.0 26_win64_mkl + arch: x86_64 + platform: win + license: BSD-3-Clause + license_family: BSD + size: 3732160 + timestamp: 1734432822278 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm17-17.0.6-hbedff68_1.conda sha256: 605460ecc4ccc04163d0b06c99693864e5bcba7a9f014a5263c9856195282265 md5: fcd38f0553a99fa279fb66a5bfc2fb28 depends: @@ -12318,391 +9176,275 @@ packages: - libxml2 >=2.12.1,<3.0.0a0 - libzlib >=1.2.13,<2.0.0a0 - zstd >=1.5.5,<1.6.0a0 + arch: x86_64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache size: 26306756 timestamp: 1701378823527 -- kind: conda - name: libllvm19 - version: 19.1.4 - build: h2edbd07_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm19-19.1.4-h2edbd07_1.conda - sha256: 69500653cb2e6e4e1ed60e3bc69aa339fde7b1c062a0f927e16d74a10efec34b - md5: 9d2f8214e95ad15bd0da345a65c5f67f +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm17-17.0.6-h5090b49_2.conda + sha256: 5829e490e395d85442fb6c7edb0ec18d1a5bb1bc529919a89337d34235205064 + md5: 443b26505722696a9535732bc2a07576 depends: - - libgcc >=13 - - libstdcxx >=13 - - libxml2 >=2.13.5,<3.0a0 + - __osx >=11.0 + - libcxx >=16 + - libxml2 >=2.12.7,<3.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 39414816 - timestamp: 1732684916099 -- kind: conda - name: libllvm19 - version: 19.1.4 - build: h3089188_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libllvm19-19.1.4-h3089188_1.conda - sha256: f92cf16a44bd0cb8fa7d1e6989d654b6ba3190293728ed209fb5b9f298f3b70d - md5: 94de0da27387129a3358a8c7d824bbfe + size: 24612870 + timestamp: 1718320971519 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libllvm19-19.1.6-ha7bfdaf_0.conda + sha256: 1d9d4657179d74dcbd429a17555e13c9e1253cc7c9aa1244cf5c5bca2cb46c25 + md5: ec6abc65eefc96cba8443b2716dcc43b depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - libxml2 >=2.13.5,<3.0a0 - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 54790 - timestamp: 1732684335020 -- kind: conda - name: libllvm19 - version: 19.1.4 - build: ha7bfdaf_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libllvm19-19.1.4-ha7bfdaf_1.conda - sha256: 2e87601b308667b6962b41ee63d16ecaacb65ce92c2f7f4328e82edaff013de8 - md5: 886acc67bcba28a5c6b429aad2f057ce + size: 40121731 + timestamp: 1734486321896 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libllvm19-19.1.6-h2edbd07_0.conda + sha256: ead0ad0a4a1f57b3b010e7aefccd60f287976258ddc20cd5ca79e1044c14e457 + md5: 9e755607ec3a05f5ca9eba87abc76d65 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - libxml2 >=2.13.5,<3.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 40124450 - timestamp: 1732690957253 -- kind: conda - name: libllvm19 - version: 19.1.4 - build: hc29ff6c_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libllvm19-19.1.4-hc29ff6c_1.conda - sha256: 68e8107b245333abb3b6d23c79c517eb66a1c6f924db51251ac1aeb493c9ad98 - md5: becb4d53f86081c79d6d14baccd27c2d + size: 39424641 + timestamp: 1734483121382 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libllvm19-19.1.6-hc29ff6c_0.conda + sha256: 0418a2c81bddf36ae433b6186266c9e1be643b185665346a2a7aaf66d12dfc2f + md5: 1f158b8d6e5728c9f52010ca512112a4 depends: - __osx >=10.13 - libcxx >=18 - libxml2 >=2.13.5,<3.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 28848789 - timestamp: 1732683616680 -- kind: conda - name: libllvm19 - version: 19.1.4 - build: hc4b4ae8_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm19-19.1.4-hc4b4ae8_1.conda - sha256: 1611a8c5b68e1cb75540132907aba34961a4ec956ff9515053674096f98b38f5 - md5: 7ae03e9e8845bb6ad637aed0c56a3c0f + size: 28851697 + timestamp: 1734484313034 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libllvm19-19.1.6-hc4b4ae8_0.conda + sha256: 9a06e46067f50717cc7e5f84d814eff547e07efd5a53c5a9786432e4ce882f0f + md5: a41dba61fe9eaf5152b865fea1c4e7e0 depends: - __osx >=11.0 - libcxx >=18 - libxml2 >=2.13.5,<3.0a0 - libzlib >=1.3.1,<2.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 27017037 - timestamp: 1732681230676 -- kind: conda - name: libmamba - version: 2.0.4 - build: h4621f14_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libmamba-2.0.4-h4621f14_0.conda - sha256: 944d6eabeae47b4338cd473ac9b3345ffb758d9cd6abf3f2f96d15ac6259be82 - md5: d5fc4b7a9eddbd7a3780f50929dec39f + size: 27009220 + timestamp: 1734483231075 +- conda: https://conda.anaconda.org/conda-forge/win-64/libllvm19-19.1.6-h3089188_0.conda + sha256: cfd7203c6adc3344c3f836d8fc0c990380b98825ccfbe3fa2144e7ac1281ae84 + md5: 6a5d077a5f29a56d410d4c275a0d1766 depends: - - __osx >=11.0 - - cpp-expected >=1.1.0,<1.2.0a0 - - fmt >=11.0.2,<11.1.0a0 - - fmt >=11.0.2,<12.0a0 - - libarchive >=3.7.4,<3.8.0a0 - - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 - - libsolv >=0.7.30,<0.7.31.0a0 - - libsolv >=0.7.30,<0.8.0a0 - - nlohmann_json >=3.11.3,<3.12.0a0 - - openssl >=3.4.0,<4.0a0 - - reproc >=14.2,<15.0a0 - - reproc >=14.2.5.0inf.0,<14.3.0a0 - - reproc-cpp >=14.2,<15.0a0 - - reproc-cpp >=14.2.5.0inf.0,<14.3.0a0 - - simdjson >=3.10.1,<3.11.0a0 - - spdlog >=1.14.1,<1.15.0a0 - - yaml-cpp >=0.8.0,<0.9.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 - zstd >=1.5.6,<1.6.0a0 - license: BSD-3-Clause - license_family: BSD - size: 1404987 - timestamp: 1732522780004 -- kind: conda - name: libmamba - version: 2.0.4 - build: h489cd8b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libmamba-2.0.4-h489cd8b_0.conda - sha256: e11ed722a2658b3e6b45681f0333f20f2f9f0341039199ffe23b68e97bf384aa - md5: d029990ff4ab245b7aad8601c27783ac - depends: - - cpp-expected >=1.1.0,<1.2.0a0 - - fmt >=11.0.2,<11.1.0a0 - - fmt >=11.0.2,<12.0a0 - - libarchive >=3.7.4,<3.8.0a0 - - libcurl >=8.10.1,<9.0a0 + arch: x86_64 + platform: win + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 54865 + timestamp: 1734490583603 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-5.6.3-hb9d3cd8_1.conda + sha256: e6e425252f3839e2756e4af1ea2074dffd3396c161bf460629f9dfd6a65f15c6 + md5: 2ecf2f1c7e4e21fcfe6423a51a992d84 + depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libsolv >=0.7.30,<0.7.31.0a0 - - libsolv >=0.7.30,<0.8.0a0 - - libstdcxx >=13 - - nlohmann_json >=3.11.3,<3.12.0a0 - - openssl >=3.4.0,<4.0a0 - - reproc >=14.2,<15.0a0 - - reproc >=14.2.4.0inf.0,<14.3.0a0 - - reproc-cpp >=14.2,<15.0a0 - - reproc-cpp >=14.2.4.0inf.0,<14.3.0a0 - - simdjson >=3.10.1,<3.11.0a0 - - spdlog >=1.14.1,<1.15.0a0 - - yaml-cpp >=0.8.0,<0.9.0a0 - - zstd >=1.5.6,<1.6.0a0 - license: BSD-3-Clause - license_family: BSD - size: 1899073 - timestamp: 1732522794555 -- kind: conda - name: libmamba - version: 2.0.4 - build: h81425b0_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libmamba-2.0.4-h81425b0_0.conda - sha256: 088fa49166762209fd73ac2d760d8ddb96acd39468e1196f12c7467be8ce33b4 - md5: ccbd7d88f7e662c528328574630759dc - depends: - - cpp-expected >=1.1.0,<1.2.0a0 - - fmt >=11.0.2,<11.1.0a0 - - fmt >=11.0.2,<12.0a0 - - libarchive >=3.7.4,<3.8.0a0 - - libcurl >=8.10.1,<9.0a0 - - libsolv >=0.7.30,<0.7.31.0a0 - - libsolv >=0.7.30,<0.8.0a0 - - nlohmann_json >=3.11.3,<3.12.0a0 - - openssl >=3.4.0,<4.0a0 - - reproc >=14.2,<15.0a0 - - reproc >=14.2.5.0inf.0,<14.3.0a0 - - reproc-cpp >=14.2,<15.0a0 - - reproc-cpp >=14.2.5.0inf.0,<14.3.0a0 - - simdjson >=3.10.1,<3.11.0a0 - - spdlog >=1.14.1,<1.15.0a0 + arch: x86_64 + platform: linux + license: 0BSD + size: 111132 + timestamp: 1733407410083 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-5.6.3-h86ecc28_1.conda + sha256: d1cce0b7d62d1e54e2164d3e0667ee808efc6c3870256e5b47a150cd0bf46824 + md5: eb08b903681f9f2432c320e8ed626723 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: 0BSD + size: 124138 + timestamp: 1733409137214 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-5.6.3-hd471939_1.conda + sha256: c70639ff3cb034a8e31cb081c907879b6a639bb12b0e090069a68eb69125b10e + md5: f9e9205fed9c664421c1c09f0b90ce6d + depends: + - __osx >=10.13 + arch: x86_64 + platform: osx + license: 0BSD + size: 103745 + timestamp: 1733407504892 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-5.6.3-h39f12f2_1.conda + sha256: d863b8257406918ffdc50ae65502f2b2d6cede29404d09a094f59509d6a0aaf1 + md5: b2553114a7f5e20ccd02378a77d836aa + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: 0BSD + size: 99129 + timestamp: 1733407496073 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-5.6.3-h2466b09_1.conda + sha256: 24d04bd55adfa44c421c99ce169df38cb1ad2bba5f43151bc847fc802496a1fa + md5: 015b9c0bd1eef60729ab577a38aaf0b5 + depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - - yaml-cpp >=0.8.0,<0.9.0a0 - - zstd >=1.5.6,<1.6.0a0 - license: BSD-3-Clause + arch: x86_64 + platform: win + license: 0BSD + size: 104332 + timestamp: 1733407872569 +- conda: https://conda.anaconda.org/conda-forge/linux-64/liblzma-devel-5.6.3-hb9d3cd8_1.conda + sha256: ca17f037a0a7137874597866a171166677e4812a9a8a853007f0f582e3ff6d1d + md5: cc4687e1814ed459f3bd6d8e05251ab2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_1 + arch: x86_64 + platform: linux + license: 0BSD + size: 376794 + timestamp: 1733407421190 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/liblzma-devel-5.6.3-h86ecc28_1.conda + sha256: 6e9ca2041f89c7df63d7ceba31a46b8f9ab28e88ce39f9f5c30b1fd0c629111c + md5: ca1606232471b17724ab99904cf90195 + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_1 + arch: aarch64 + platform: linux + license: 0BSD + size: 376914 + timestamp: 1733409269260 +- conda: https://conda.anaconda.org/conda-forge/osx-64/liblzma-devel-5.6.3-hd471939_1.conda + sha256: c2858d952a019739ab8a13f8ffd9f511c07b40deed4579ddc1b2923c1011a439 + md5: 370a48ecf97500fa1e92d49e55de3153 + depends: + - __osx >=10.13 + - liblzma 5.6.3 hd471939_1 + arch: x86_64 + platform: osx + license: 0BSD + size: 113085 + timestamp: 1733407525591 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/liblzma-devel-5.6.3-h39f12f2_1.conda + sha256: c785d43d4758e18153b502c7d7d3a9181f3c95b2ae64a389fe49af5bf3a53f05 + md5: 692ccac07529215d42c051c6a60bc5a5 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_1 + arch: arm64 + platform: osx + license: 0BSD + size: 113099 + timestamp: 1733407511832 +- conda: https://conda.anaconda.org/conda-forge/win-64/liblzma-devel-5.6.3-h2466b09_1.conda + sha256: 771a99f8cd58358fe38192fc0df679cf6276facb8222016469693de7b0c8ff47 + md5: 5f9978adba7aa8aa7d237cdb8b542537 + depends: + - liblzma 5.6.3 h2466b09_1 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win + license: 0BSD + size: 125790 + timestamp: 1733407900270 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libmpdec-4.0.0-h4bc722e_0.conda + sha256: d02d1d3304ecaf5c728e515eb7416517a0b118200cd5eacbe829c432d1664070 + md5: aeb98fdeb2e8f25d43ef71fbacbeec80 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: BSD-2-Clause + license_family: BSD + size: 89991 + timestamp: 1723817448345 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libmpdec-4.0.0-h68df207_0.conda + sha256: 1c63ef313c5d4ac02cdf21471fdba99c188bfcb87068a127a0f0964f7ec170ac + md5: 5a03ba481cb547e6f31a1d81ebc5e319 + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: BSD-2-Clause license_family: BSD - size: 4345006 - timestamp: 1732522729053 -- kind: conda - name: libmamba - version: 2.0.4 - build: hd41e4cc_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libmamba-2.0.4-hd41e4cc_0.conda - sha256: ab76dc5da58271107e91f66ada653c8aa87f64083b38383e198dcc1f51a63055 - md5: e5d16aaf7e0ccf6e12085efeb8cc5b03 + size: 110277 + timestamp: 1723861247377 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libmpdec-4.0.0-hfdf4475_0.conda + sha256: 791be3d30d8e37ec49bcc23eb8f1e1415d911a7c023fa93685f2ea485179e258 + md5: ed625b2e59dff82859c23dd24774156b depends: - __osx >=10.13 - - cpp-expected >=1.1.0,<1.2.0a0 - - fmt >=11.0.2,<11.1.0a0 - - fmt >=11.0.2,<12.0a0 - - libarchive >=3.7.4,<3.8.0a0 - - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 - - libsolv >=0.7.30,<0.7.31.0a0 - - libsolv >=0.7.30,<0.8.0a0 - - nlohmann_json >=3.11.3,<3.12.0a0 - - openssl >=3.4.0,<4.0a0 - - reproc >=14.2,<15.0a0 - - reproc >=14.2.5.0inf.0,<14.3.0a0 - - reproc-cpp >=14.2,<15.0a0 - - reproc-cpp >=14.2.5.0inf.0,<14.3.0a0 - - simdjson >=3.10.1,<3.11.0a0 - - spdlog >=1.14.1,<1.15.0a0 - - yaml-cpp >=0.8.0,<0.9.0a0 - - zstd >=1.5.6,<1.6.0a0 - license: BSD-3-Clause + arch: x86_64 + platform: osx + license: BSD-2-Clause license_family: BSD - size: 1516189 - timestamp: 1732523119031 -- kind: conda - name: libmamba - version: 2.0.4 - build: hf72d635_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libmamba-2.0.4-hf72d635_0.conda - sha256: 6533ce4158d726f5fbf1cbb7ddad4e82d86e647bffc530b01b93a9cc484d38f8 - md5: ee936d20425961886b3ddc68e7021bb9 + size: 76561 + timestamp: 1723817691512 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libmpdec-4.0.0-h99b78c6_0.conda + sha256: f7917de9117d3a5fe12a39e185c7ce424f8d5010a6f97b4333e8a1dcb2889d16 + md5: 7476305c35dd9acef48da8f754eedb40 depends: - - __glibc >=2.17,<3.0.a0 - - cpp-expected >=1.1.0,<1.2.0a0 - - fmt >=11.0.2,<11.1.0a0 - - fmt >=11.0.2,<12.0a0 - - libarchive >=3.7.4,<3.8.0a0 - - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - - libsolv >=0.7.30,<0.7.31.0a0 - - libsolv >=0.7.30,<0.8.0a0 - - libstdcxx >=13 - - nlohmann_json >=3.11.3,<3.12.0a0 - - openssl >=3.4.0,<4.0a0 - - reproc >=14.2,<15.0a0 - - reproc >=14.2.5.0inf.0,<14.3.0a0 - - reproc-cpp >=14.2,<15.0a0 - - reproc-cpp >=14.2.5.0inf.0,<14.3.0a0 - - simdjson >=3.10.1,<3.11.0a0 - - spdlog >=1.14.1,<1.15.0a0 - - yaml-cpp >=0.8.0,<0.9.0a0 - - zstd >=1.5.6,<1.6.0a0 - license: BSD-3-Clause + - __osx >=11.0 + arch: arm64 + platform: osx + license: BSD-2-Clause license_family: BSD - size: 1994153 - timestamp: 1732522697290 -- kind: conda - name: libmambapy - version: 2.0.4 - build: py312h0252a60_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libmambapy-2.0.4-py312h0252a60_0.conda - sha256: 0ec33a3cd9eada858bf6409c0a5ab8c56678834ce57258d072cdc72c29b77b09 - md5: 3b4311a45cc42437756aeb1238f0fcf9 + size: 69263 + timestamp: 1723817629767 +- conda: https://conda.anaconda.org/conda-forge/win-64/libmpdec-4.0.0-h2466b09_0.conda + sha256: fc529fc82c7caf51202cc5cec5bb1c2e8d90edbac6d0a4602c966366efe3c7bf + md5: 74860100b2029e2523cf480804c76b9b depends: - - __osx >=10.13 - - fmt >=11.0.2,<12.0a0 - - libcxx >=18 - - libmamba 2.0.4 hd41e4cc_0 - - openssl >=3.4.0,<4.0a0 - - pybind11-abi 4 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - yaml-cpp >=0.8.0,<0.9.0a0 - license: BSD-3-Clause - license_family: BSD - size: 571096 - timestamp: 1732523923834 -- kind: conda - name: libmambapy - version: 2.0.4 - build: py312h33c3f33_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libmambapy-2.0.4-py312h33c3f33_0.conda - sha256: 4a08b73c674624a90964e9108ff299e4aa5af0e75ef2dfb7e2d6dbd190391224 - md5: 3ddc274bddc333702a797e761b809c66 - depends: - - fmt >=11.0.2,<12.0a0 - - libgcc >=13 - - libmamba 2.0.4 h489cd8b_0 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - - pybind11-abi 4 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yaml-cpp >=0.8.0,<0.9.0a0 - license: BSD-3-Clause - license_family: BSD - size: 537947 - timestamp: 1732523642579 -- kind: conda - name: libmambapy - version: 2.0.4 - build: py312h643a1bd_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libmambapy-2.0.4-py312h643a1bd_0.conda - sha256: 82c0a32c90feb2b259bce8a041186d7d158f95fe7a0b37c5758108197ddec877 - md5: 9f83de7c93e731ea07f442ec660e6e22 - depends: - - fmt >=11.0.2,<12.0a0 - - libmamba 2.0.4 h81425b0_0 - - openssl >=3.4.0,<4.0a0 - - pybind11-abi 4 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - - yaml-cpp >=0.8.0,<0.9.0a0 - license: BSD-3-Clause + arch: x86_64 + platform: win + license: BSD-2-Clause license_family: BSD - size: 426897 - timestamp: 1732523258885 -- kind: conda - name: libmambapy - version: 2.0.4 - build: py312hd07f1d4_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libmambapy-2.0.4-py312hd07f1d4_0.conda - sha256: c9c1fe80b481a5d5580810683cf8a5d0536a33db6d704c66e8c8b0eefed13739 - md5: 20d71dbe802ce1ba4957ba899a001369 - depends: - - __osx >=11.0 - - fmt >=11.0.2,<12.0a0 - - libcxx >=18 - - libmamba 2.0.4 h4621f14_0 - - openssl >=3.4.0,<4.0a0 - - pybind11-abi 4 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - yaml-cpp >=0.8.0,<0.9.0a0 - license: BSD-3-Clause - license_family: BSD - size: 534524 - timestamp: 1732523725615 -- kind: conda - name: libmambapy - version: 2.0.4 - build: py312hf3f0a4e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libmambapy-2.0.4-py312hf3f0a4e_0.conda - sha256: d9ff7aa0bd3e9e26f26dd5ae65e446e3b1ac58c71bbe8a75499d308e790f6c13 - md5: 60e5a30eb41b8c3e77e6a460cbb9f6ec - depends: - - __glibc >=2.17,<3.0.a0 - - fmt >=11.0.2,<12.0a0 - - libgcc >=13 - - libmamba 2.0.4 hf72d635_0 - - libstdcxx >=13 - - openssl >=3.4.0,<4.0a0 - - pybind11-abi 4 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - yaml-cpp >=0.8.0,<0.9.0a0 - license: BSD-3-Clause - license_family: BSD - size: 623914 - timestamp: 1732522849216 -- kind: conda - name: libnetcdf - version: 4.9.2 - build: nompi_h2564987_115 - build_number: 115 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.2-nompi_h2564987_115.conda - sha256: 77d9536095a076414b787a0c2497bb35fcd72f71eb899fae5acb9853a64b4ec4 - md5: c5ce70b76c77a6c9a3107be8d8e8ab0b + size: 88657 + timestamp: 1723861474602 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnetcdf-4.9.2-nompi_h5ddbaa4_116.conda + sha256: 6c61842c8d8f885019f52a2f989d197b6bf33c030b030226e665f01ca0fa3f71 + md5: f51573abc223afed7e5374f34135ce05 depends: - __glibc >=2.17,<3.0.a0 - blosc >=1.21.6,<2.0a0 @@ -12713,25 +9455,21 @@ packages: - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 - - libxml2 >=2.12.7,<3.0a0 - - libzip >=1.11.1,<2.0a0 + - libxml2 >=2.13.5,<3.0a0 + - libzip >=1.11.2,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - zlib - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 835104 - timestamp: 1728055792846 -- kind: conda - name: libnetcdf - version: 4.9.2 - build: nompi_h4c91916_115 - build_number: 115 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libnetcdf-4.9.2-nompi_h4c91916_115.conda - sha256: 57c5d85d7765e45c37df15f10c7eeac5610fefe4847061e6b8d68b28aea7e232 - md5: 3055787b9f2544e6d17538959763f924 + size: 832800 + timestamp: 1733232193218 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnetcdf-4.9.2-nompi_h46655bb_116.conda + sha256: 3cef53598ba8cad6b5dd3ddedafe681f439df84599c91cd446f026532851b4d8 + md5: 94e5e219d5a306226c30472cfa429285 depends: - blosc >=1.21.6,<2.0a0 - bzip2 >=1.0.8,<2.0a0 @@ -12741,81 +9479,69 @@ packages: - libcurl >=8.10.1,<9.0a0 - libgcc >=13 - libstdcxx >=13 - - libxml2 >=2.12.7,<3.0a0 - - libzip >=1.11.1,<2.0a0 + - libxml2 >=2.13.5,<3.0a0 + - libzip >=1.11.2,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - zlib - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 851765 - timestamp: 1728149993918 -- kind: conda - name: libnetcdf - version: 4.9.2 - build: nompi_h853a48d_115 - build_number: 115 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libnetcdf-4.9.2-nompi_h853a48d_115.conda - sha256: 8d7c9ede65241de34aa5aa4c1cf04964fd6e027e2a7d4e8cce654b2350c0f2d3 - md5: 94b3a12456a4e257e65c6b962c785190 + size: 852231 + timestamp: 1733232606148 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libnetcdf-4.9.2-nompi_hd7a758f_116.conda + sha256: d0d766af25adce60b6308a41104358007a08e06359b7e9318784a24a44618c0a + md5: 25ba70595ea5495448e9dd55e4836177 depends: - - __osx >=11.0 + - __osx >=10.13 - blosc >=1.21.6,<2.0a0 - bzip2 >=1.0.8,<2.0a0 - hdf4 >=4.2.15,<4.2.16.0a0 - hdf5 >=1.14.4,<1.14.5.0a0 - libaec >=1.1.3,<2.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=17 - - libxml2 >=2.12.7,<3.0a0 - - libzip >=1.11.1,<2.0a0 + - libcxx >=18 + - libxml2 >=2.13.5,<3.0a0 + - libzip >=1.11.2,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - zlib - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 678786 - timestamp: 1728055979264 -- kind: conda - name: libnetcdf - version: 4.9.2 - build: nompi_h976d569_115 - build_number: 115 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libnetcdf-4.9.2-nompi_h976d569_115.conda - sha256: 90fbe85be42ce31b4d41b54fe2d686049435c08ffbc60f8b6a9c39de51102031 - md5: cece37517cf646a6a710080f8fc1528d + size: 726457 + timestamp: 1733232775356 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnetcdf-4.9.2-nompi_h6569565_116.conda + sha256: 09d0194d8639e1f061f1a11d809a61030abcf335feefb10a10e65e43812a1205 + md5: 6257f1136b1285acf5c3b171249fdf52 depends: - - __osx >=10.13 + - __osx >=11.0 - blosc >=1.21.6,<2.0a0 - bzip2 >=1.0.8,<2.0a0 - hdf4 >=4.2.15,<4.2.16.0a0 - hdf5 >=1.14.4,<1.14.5.0a0 - libaec >=1.1.3,<2.0a0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=17 - - libxml2 >=2.12.7,<3.0a0 - - libzip >=1.11.1,<2.0a0 + - libcxx >=18 + - libxml2 >=2.13.5,<3.0a0 + - libzip >=1.11.2,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 - zlib - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 724239 - timestamp: 1728056183743 -- kind: conda - name: libnetcdf - version: 4.9.2 - build: nompi_he239ae6_115 - build_number: 115 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libnetcdf-4.9.2-nompi_he239ae6_115.conda - sha256: bdf67732b92836287bdf6618093dada2ec20f2be4102d031a80f736e082cc410 - md5: 582fd971ca8f54b59f007f2c1f1a113e + size: 685178 + timestamp: 1733232329857 +- conda: https://conda.anaconda.org/conda-forge/win-64/libnetcdf-4.9.2-nompi_h5bdc103_116.conda + sha256: fa0591430e03ac302782dec8261bc85e1bb1e374f47e2bbbcd23469680d8e5f2 + md5: a95ec17163d3e07bc0bf3f5ca9c86fde depends: - blosc >=1.21.6,<2.0a0 - bzip2 >=1.0.8,<2.0a0 @@ -12823,24 +9549,21 @@ packages: - hdf5 >=1.14.4,<1.14.5.0a0 - libaec >=1.1.3,<2.0a0 - libcurl >=8.10.1,<9.0a0 - - libxml2 >=2.12.7,<3.0a0 - - libzip >=1.11.1,<2.0a0 + - libxml2 >=2.13.5,<3.0a0 + - libzip >=1.11.2,<2.0a0 - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - zlib - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: win license: MIT license_family: MIT - size: 625327 - timestamp: 1728056291410 -- kind: conda - name: libnghttp2 - version: 1.64.0 - build: h161d5f1_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda + size: 625802 + timestamp: 1733232741492 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnghttp2-1.64.0-h161d5f1_0.conda sha256: b0f2b3695b13a989f75d8fd7f4778e1c7aabe3b36db83f0fe80b2cd812c0e975 md5: 19e57602824042dfd0446292ef90488b depends: @@ -12852,36 +9575,30 @@ packages: - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 647599 timestamp: 1729571887612 -- kind: conda - name: libnghttp2 - version: 1.64.0 - build: h6d7220d_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda - sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f - md5: 3408c02539cee5f1141f9f11450b6a51 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda + sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 + md5: f52c614fa214a8bedece9421c771670d depends: - - __osx >=11.0 - - c-ares >=1.34.2,<2.0a0 - - libcxx >=17 + - c-ares >=1.32.3,<2.0a0 - libev >=4.33,<4.34.0a0 - libev >=4.33,<5.0a0 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 566719 - timestamp: 1729572385640 -- kind: conda - name: libnghttp2 - version: 1.64.0 - build: hc7306c3_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.64.0-hc7306c3_0.conda + size: 714610 + timestamp: 1729571912479 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libnghttp2-1.64.0-hc7306c3_0.conda sha256: 0dcfdcf3a445d2d7de4f3b186ab0a794dc872f4ea21622f9b997be72712c027f md5: ab21007194b97beade22ceb7a3f6fee5 depends: @@ -12892,229 +9609,150 @@ packages: - libev >=4.33,<5.0a0 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: osx license: MIT license_family: MIT size: 606663 timestamp: 1729572019083 -- kind: conda - name: libnghttp2 - version: 1.64.0 - build: hc8609a4_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libnghttp2-1.64.0-hc8609a4_0.conda - sha256: c093c6d370aadbf0409c20b6c54c488ee2f6fea976181919fcc63e87ee232673 - md5: f52c614fa214a8bedece9421c771670d +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libnghttp2-1.64.0-h6d7220d_0.conda + sha256: 00cc685824f39f51be5233b54e19f45abd60de5d8847f1a56906f8936648b72f + md5: 3408c02539cee5f1141f9f11450b6a51 depends: - - c-ares >=1.32.3,<2.0a0 + - __osx >=11.0 + - c-ares >=1.34.2,<2.0a0 + - libcxx >=17 - libev >=4.33,<4.34.0a0 - libev >=4.33,<5.0a0 - - libgcc >=13 - - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 714610 - timestamp: 1729571912479 -- kind: conda - name: libnsl - version: 2.0.1 - build: h31becfc_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda - sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 - md5: c14f32510f694e3185704d89967ec422 - depends: - - libgcc-ng >=12 - license: LGPL-2.1-only - license_family: GPL - size: 34501 - timestamp: 1697358973269 -- kind: conda - name: libnsl - version: 2.0.1 - build: hd590300_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda + size: 566719 + timestamp: 1729572385640 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libnsl-2.0.1-hd590300_0.conda sha256: 26d77a3bb4dceeedc2a41bd688564fe71bf2d149fdcf117049970bc02ff1add6 md5: 30fd6e37fe21f86f4bd26d6ee73eeec7 depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.1-only license_family: GPL size: 33408 timestamp: 1697359010159 -- kind: conda - name: libntlm - version: '1.4' - build: h0d85af4_1002 - build_number: 1002 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libntlm-1.4-h0d85af4_1002.tar.bz2 - sha256: c536513b3b7a74a1a46ee426ff6d5511df521b2218ebaff0ac7badc474cddb9a - md5: d9c13a9ec123f376ac38db038b7dfbb6 - license: LGPL-2.1-or-later - size: 32149 - timestamp: 1661533559256 -- kind: conda - name: libntlm - version: '1.4' - build: h3422bc3_1002 - build_number: 1002 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libntlm-1.4-h3422bc3_1002.tar.bz2 - sha256: d0047d4d967e4e3e1d0ad0dd0e45ed4b0effdd0ae57ec88b4850122b0635d8fe - md5: 02fb3eb7be85f98c084bcee20cf925f1 - license: LGPL-2.1-or-later - size: 32219 - timestamp: 1661533625744 -- kind: conda - name: libntlm - version: '1.4' - build: h7f98852_1002 - build_number: 1002 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.4-h7f98852_1002.tar.bz2 - sha256: 63244b73156033ea3b7c2a1581526e79b4670349d64b15f645dcdb12de441d1a - md5: e728e874159b042d92b90238a3cb0dc2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libnsl-2.0.1-h31becfc_0.conda + sha256: fd18c2b75d7411096428d36a70b36b1a17e31f7b8956b6905d145792d49e97f8 + md5: c14f32510f694e3185704d89967ec422 depends: - - libgcc-ng >=9.3.0 + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-only + license_family: GPL + size: 34501 + timestamp: 1697358973269 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libntlm-1.8-hb9d3cd8_0.conda + sha256: 3b3f19ced060013c2dd99d9d46403be6d319d4601814c772a3472fe2955612b0 + md5: 7c7927b404672409d9917d49bff5f2d6 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later - size: 33201 - timestamp: 1609781914458 -- kind: conda - name: libntlm - version: '1.4' - build: hf897c2e_1002 - build_number: 1002 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libntlm-1.4-hf897c2e_1002.tar.bz2 + size: 33418 + timestamp: 1734670021371 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libntlm-1.4-hf897c2e_1002.tar.bz2 sha256: 0e303d7a8845391bd1634efb65dc9d9b82b5608ebeb32fb77a56d1ed696d2eee md5: 835c7c4137821de5c309f4266a51ba89 depends: - libgcc-ng >=9.3.0 + arch: aarch64 + platform: linux license: LGPL-2.1-or-later size: 39449 timestamp: 1609781865660 -- kind: conda - name: libogg - version: 1.3.5 - build: h0b9eccb_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda - sha256: e65acc318b7535fb8f2b5e994fe6eac3ae0be3bdb2acbe6037841d033c51f290 - md5: 15cb67b1b9dd0d4b37c81daba785e6ad +- conda: https://conda.anaconda.org/conda-forge/osx-64/libntlm-1.8-h6e16a3a_0.conda + sha256: 2ab918f7cc00852d70088e0b9e49fda4ef95229126cf3c52a8297686938385f2 + md5: 23d706dbe90b54059ad86ff826677f39 depends: - - libgcc-ng >=12 - license: BSD-3-Clause - license_family: BSD - size: 208233 - timestamp: 1719301637185 -- kind: conda - name: libogg - version: 1.3.5 - build: h2466b09_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libogg-1.3.5-h2466b09_0.conda - sha256: fcffdf32c620569738b85c98ddd25e1c84c8add80cd732743d90d469b7b532bb - md5: 44a4d173e62c5ed6d715f18ae7c46b7a + - __osx >=10.13 + arch: x86_64 + platform: osx + license: LGPL-2.1-or-later + size: 33742 + timestamp: 1734670081910 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libntlm-1.8-h5505292_0.conda + sha256: ea8c680924d957e12270dca549620327d5e986f23c4bd5f45627167ca6ef7a3b + md5: c90c1d3bd778f5ec0d4bb4ef36cbd5b6 depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: BSD-3-Clause - license_family: BSD - size: 35459 - timestamp: 1719302192495 -- kind: conda - name: libogg - version: 1.3.5 - build: h4ab18f5_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda + - __osx >=11.0 + arch: arm64 + platform: osx + license: LGPL-2.1-or-later + size: 31099 + timestamp: 1734670168822 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libogg-1.3.5-h4ab18f5_0.conda sha256: 5eda3fe92b99b25dd4737226a9485078ab405672d9f621be75edcb68f1e9026d md5: 601bfb4b3c6f0b844443bb81a56651e0 depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 205914 timestamp: 1719301575771 -- kind: conda - name: libogg - version: 1.3.5 - build: h99b78c6_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda - sha256: 685f73b7241978007dfe0cecb9cae46c6a26d87d192b6f85a09eb65023c0b99e - md5: 57b668b9b78dea2c08e44bb2385d57c0 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libogg-1.3.5-h0b9eccb_0.conda + sha256: e65acc318b7535fb8f2b5e994fe6eac3ae0be3bdb2acbe6037841d033c51f290 + md5: 15cb67b1b9dd0d4b37c81daba785e6ad depends: - - __osx >=11.0 + - libgcc-ng >=12 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 205451 - timestamp: 1719301708541 -- kind: conda - name: libogg - version: 1.3.5 - build: hfdf4475_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libogg-1.3.5-hfdf4475_0.conda + size: 208233 + timestamp: 1719301637185 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libogg-1.3.5-hfdf4475_0.conda sha256: bebf5797e2a278fd2094f2b0c29ccdfc51d400f4736701108a7e544a49705c64 md5: 7497372c91a31d3e8d64ce3f1a9632e8 depends: - __osx >=10.13 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD size: 203604 timestamp: 1719301669662 -- kind: conda - name: libopenblas - version: 0.3.28 - build: openmp_hbf64a52_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.28-openmp_hbf64a52_1.conda - sha256: cef5856952688ce9303f85f5bc62c99e8c2256b4c679f63afdfb381f222e90c7 - md5: cd2c572c02a73b88c4d378eb31110e85 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libogg-1.3.5-h99b78c6_0.conda + sha256: 685f73b7241978007dfe0cecb9cae46c6a26d87d192b6f85a09eb65023c0b99e + md5: 57b668b9b78dea2c08e44bb2385d57c0 depends: - - __osx >=10.13 - - libgfortran 5.* - - libgfortran5 >=13.2.0 - - llvm-openmp >=18.1.8 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 + - __osx >=11.0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 6165715 - timestamp: 1730773348340 -- kind: conda - name: libopenblas - version: 0.3.28 - build: openmp_hf332438_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda - sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 - md5: 40803a48d947c8639da6704e9a44d3ce + size: 205451 + timestamp: 1719301708541 +- conda: https://conda.anaconda.org/conda-forge/win-64/libogg-1.3.5-h2466b09_0.conda + sha256: fcffdf32c620569738b85c98ddd25e1c84c8add80cd732743d90d469b7b532bb + md5: 44a4d173e62c5ed6d715f18ae7c46b7a depends: - - __osx >=11.0 - - libgfortran 5.* - - libgfortran5 >=13.2.0 - - llvm-openmp >=18.1.8 - constrains: - - openblas >=0.3.28,<0.3.29.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD - size: 4165774 - timestamp: 1730772154295 -- kind: conda - name: libopenblas - version: 0.3.28 - build: pthreads_h94d23a6_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda + size: 35459 + timestamp: 1719302192495 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenblas-0.3.28-pthreads_h94d23a6_1.conda sha256: 99ba271d8a80a1af2723f2e124ffd91d850074c0389c067e6d96d72a2dbfeabe md5: 62857b389e42b36b686331bec0922050 depends: @@ -13124,17 +9762,13 @@ packages: - libgfortran5 >=14.2.0 constrains: - openblas >=0.3.28,<0.3.29.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 5578513 timestamp: 1730772671118 -- kind: conda - name: libopenblas - version: 0.3.28 - build: pthreads_h9d3fd7e_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenblas-0.3.28-pthreads_h9d3fd7e_1.conda sha256: 30623a40764e935aa77e0d4db54c1a1589189a9bf3a03fdb445505c1e319b5a6 md5: e8dde93dd199da3c1f2c1fcfd0042cd4 depends: @@ -13143,1100 +9777,878 @@ packages: - libgfortran5 >=14.2.0 constrains: - openblas >=0.3.28,<0.3.29.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 4793435 timestamp: 1730773029647 -- kind: conda - name: libopengl - version: 1.7.0 - build: ha4b6fd6_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenblas-0.3.28-openmp_hbf64a52_1.conda + sha256: cef5856952688ce9303f85f5bc62c99e8c2256b4c679f63afdfb381f222e90c7 + md5: cd2c572c02a73b88c4d378eb31110e85 + depends: + - __osx >=10.13 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.28,<0.3.29.0a0 + arch: x86_64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 6165715 + timestamp: 1730773348340 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenblas-0.3.28-openmp_hf332438_1.conda + sha256: 62bb669c37a845129096f73d446cdb6bb170e4927f2fea2b661329680dbbc373 + md5: 40803a48d947c8639da6704e9a44d3ce + depends: + - __osx >=11.0 + - libgfortran 5.* + - libgfortran5 >=13.2.0 + - llvm-openmp >=18.1.8 + constrains: + - openblas >=0.3.28,<0.3.29.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 4165774 + timestamp: 1730772154295 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopengl-1.7.0-ha4b6fd6_2.conda sha256: 215086c108d80349e96051ad14131b751d17af3ed2cb5a34edd62fa89bfe8ead md5: 7df50d44d4a14d6c31a2c54f2cd92157 depends: - __glibc >=2.17,<3.0.a0 - libglvnd 1.7.0 ha4b6fd6_2 + arch: x86_64 + platform: linux license: LicenseRef-libglvnd size: 50757 timestamp: 1731330993524 -- kind: conda - name: libopengl - version: 1.7.0 - build: hd24410f_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopengl-1.7.0-hd24410f_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopengl-1.7.0-hd24410f_2.conda sha256: e359df399fb2f308774237384414e318fac8870c1bf6481bdc67ae16e0bd2a02 md5: cf9d12bfab305e48d095a4c79002c922 depends: - libglvnd 1.7.0 hd24410f_2 + arch: aarch64 + platform: linux license: LicenseRef-libglvnd size: 56355 timestamp: 1731331001820 -- kind: conda - name: libopenvino - version: 2024.4.0 - build: h84cb933_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-2024.4.0-h84cb933_2.conda - sha256: 7cddc199a26c7d2889b0dbd025726a49978bfc47166ca464d740942e4f600610 - md5: 2dbab95dc55ef0be83138374220e3cd6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-2024.5.0-hac27bb2_0.conda + sha256: 1f71a7a52cca4ffbd205f93a900ec7ac32bf41c09c89c256ca66c547287bb263 + md5: 9b7a4ae9edab6f9604f56b790c3e1d02 depends: - - __osx >=10.15 - - libcxx >=17 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 - pugixml >=1.14,<1.15.0a0 - tbb >=2021.13.0 - size: 4243159 - timestamp: 1729589312735 -- kind: conda - name: libopenvino - version: 2024.4.0 - build: hac27bb2_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-2024.4.0-hac27bb2_2.conda - sha256: 1f804b6238951d59b3a431c2e01bd831d44e015ea6835809775bb60b6978e3b3 - md5: ba5ac0bb9ec5aec38dec37c230b12d64 + arch: x86_64 + platform: linux + size: 5514235 + timestamp: 1732895282760 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-2024.5.0-hd7d4d4f_0.conda + sha256: 4233ba280bc621f6bf2dd63c2d9267e77efea79383b1e3b6c7a4fb98802c8b9f + md5: 7917593cbbb44fc42fd82c80c3ade623 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - pugixml >=1.14,<1.15.0a0 - tbb >=2021.13.0 - size: 5362131 - timestamp: 1729594675874 -- kind: conda - name: libopenvino - version: 2024.4.0 - build: hbfeda7a_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-2024.4.0-hbfeda7a_2.conda - sha256: 372064e0ae774b50ce66522699648b3115837afad6261d7a6dec447b701611d2 - md5: bfb018530a5e9beacd8ef7d01ce01708 + arch: aarch64 + platform: linux + size: 5004136 + timestamp: 1732888525696 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-2024.5.0-h5e1b680_0.conda + sha256: eec1b8cf16a2fa8745c982cde3a37be1efffa68acb1af6dff0dc8b888dbcf77f + md5: ec5d06987d3b542115a24f347e766d41 + depends: + - __osx >=10.15 + - libcxx >=18 + - pugixml >=1.14,<1.15.0a0 + - tbb >=2021.13.0 + arch: x86_64 + platform: osx + size: 4348022 + timestamp: 1732889289402 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-2024.5.0-h97facdf_0.conda + sha256: add86fb1e9e6760fc15009a9803efa89a3765da06f77d2aab15ed2c187e2d7b4 + md5: 281f56347576dadb951a869450da65e0 depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 - pugixml >=1.14,<1.15.0a0 - tbb >=2021.13.0 - size: 3947154 - timestamp: 1729589796148 -- kind: conda - name: libopenvino - version: 2024.4.0 - build: hd7d4d4f_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-2024.4.0-hd7d4d4f_2.conda - sha256: fa92fa4e9da3cb1a6ac37004c0f63922e62d3b2fe631385c923436a51d76005e - md5: 842ca0bee620b70ce30d397d7eb47d26 + arch: arm64 + platform: osx + size: 4022179 + timestamp: 1732887203663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-arm-cpu-plugin-2024.5.0-hd7d4d4f_0.conda + sha256: a505b95f5e2b0d2e2f034d844514fc19c785f980c98e76f2f5e665d785cf1f06 + md5: 2882dac1b23547ba9669a17ac52748bd depends: - libgcc >=13 + - libopenvino 2024.5.0 hd7d4d4f_0 - libstdcxx >=13 - pugixml >=1.14,<1.15.0a0 - tbb >=2021.13.0 - size: 4902384 - timestamp: 1729590142049 -- kind: conda - name: libopenvino-arm-cpu-plugin - version: 2024.4.0 - build: hbfeda7a_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-arm-cpu-plugin-2024.4.0-hbfeda7a_2.conda - sha256: 1d6119f9012bdf4d5c044bd23ae7bea05fab435e216b9861521b2d241ba186c2 - md5: 76383ff76071f723294edff67968ed18 + arch: aarch64 + platform: linux + size: 8542314 + timestamp: 1732888546260 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-arm-cpu-plugin-2024.5.0-h97facdf_0.conda + sha256: 18ad41ac95b4d41e38589070bb641092a45ad38c625f7ee6da490f3cc5eba286 + md5: 185d0fc89c80098a602f38bc77328081 depends: - __osx >=11.0 - - libcxx >=17 - - libopenvino 2024.4.0 hbfeda7a_2 + - libcxx >=18 + - libopenvino 2024.5.0 h97facdf_0 - pugixml >=1.14,<1.15.0a0 - tbb >=2021.13.0 - size: 7430916 - timestamp: 1729589826098 -- kind: conda - name: libopenvino-arm-cpu-plugin - version: 2024.4.0 - build: hd7d4d4f_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-arm-cpu-plugin-2024.4.0-hd7d4d4f_2.conda - sha256: f8c598062b07f7c7047c1a3fe5479aad30884cf02bbb49842e9fdcd1ed1468fb - md5: e5817f6e796293f49bd94c9ce47b2d69 - depends: - - libgcc >=13 - - libopenvino 2024.4.0 hd7d4d4f_2 + arch: arm64 + platform: osx + size: 7518887 + timestamp: 1732887229651 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-batch-plugin-2024.5.0-h4d9b6c2_0.conda + sha256: 0c7f3410689a73abce1219aae4eb1c680ef9b49f78ef10e44ce5d8248c4a8a25 + md5: c787d5a3d5b0776f0336004583297536 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libopenvino 2024.5.0 hac27bb2_0 - libstdcxx >=13 - - pugixml >=1.14,<1.15.0a0 - tbb >=2021.13.0 - size: 8377593 - timestamp: 1729590158748 -- kind: conda - name: libopenvino-auto-batch-plugin - version: 2024.4.0 - build: h4d9b6c2_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-batch-plugin-2024.4.0-h4d9b6c2_2.conda - sha256: dc596ff555b7ae19a7cd62af8965445575e1441dd486b8aec6a647f9ecbada3a - md5: 1d05a25da36ba5f98291d7237fc6b8ce + arch: x86_64 + platform: linux + size: 110859 + timestamp: 1732895305563 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-auto-batch-plugin-2024.5.0-hf15766e_0.conda + sha256: b23d4b4da985d54c07b1c696d3a21f8e5a2b77138e2f7ebb9e4a2125d1ec1b90 + md5: 87139e43604eeb9c22275d0be79a036e depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libopenvino 2024.4.0 hac27bb2_2 + - libopenvino 2024.5.0 hd7d4d4f_0 - libstdcxx >=13 - tbb >=2021.13.0 - size: 111701 - timestamp: 1729594696807 -- kind: conda - name: libopenvino-auto-batch-plugin - version: 2024.4.0 - build: h92dab7a_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-auto-batch-plugin-2024.4.0-h92dab7a_2.conda - sha256: 241f05b5f2519e1a18276a91fdf623f07911a8175142d0925574bbc41b192db1 - md5: a0eab88b714e3d6ddcfe7b1b3fa99283 + arch: aarch64 + platform: linux + size: 107502 + timestamp: 1732888576535 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-auto-batch-plugin-2024.5.0-h4464f52_0.conda + sha256: 23f1abca1e2c9821535bb693ffbe631bb383ad81f30347bb1f50ac6db9e7582e + md5: 07f783d05e58bb9588e696b71b206e9b depends: - __osx >=10.15 - - libcxx >=17 - - libopenvino 2024.4.0 h84cb933_2 - - tbb >=2021.13.0 - size: 105809 - timestamp: 1729589338818 -- kind: conda - name: libopenvino-auto-batch-plugin - version: 2024.4.0 - build: hf15766e_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-auto-batch-plugin-2024.4.0-hf15766e_2.conda - sha256: f0c1a7e5a5654328c88814590ed53aa98ac6d079d336c3335d9f0ba00d70ffc0 - md5: 1f737fa48eadcbadc5e35cd86c1b0036 - depends: - - libgcc >=13 - - libopenvino 2024.4.0 hd7d4d4f_2 - - libstdcxx >=13 + - libcxx >=18 + - libopenvino 2024.5.0 h5e1b680_0 - tbb >=2021.13.0 - size: 108042 - timestamp: 1729590183012 -- kind: conda - name: libopenvino-auto-batch-plugin - version: 2024.4.0 - build: hf276634_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-auto-batch-plugin-2024.4.0-hf276634_2.conda - sha256: 1d182574a0987728971e9d119b11bb4cfadf71fde28f0e357e11c7af2b7a82b9 - md5: a8669452d6178b41f9bc9ead21f9b7d3 + arch: x86_64 + platform: osx + size: 106018 + timestamp: 1732889324575 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-auto-batch-plugin-2024.5.0-h7f72211_0.conda + sha256: f86d43d40c672540717d2c5ae1a9436626bd6cc6fb28fcb6c30142b1972318b7 + md5: 949c76a1df0aff860e8ab37ae19d9a56 depends: - __osx >=11.0 - - libcxx >=17 - - libopenvino 2024.4.0 hbfeda7a_2 + - libcxx >=18 + - libopenvino 2024.5.0 h97facdf_0 - tbb >=2021.13.0 - size: 104374 - timestamp: 1729589873528 -- kind: conda - name: libopenvino-auto-plugin - version: 2024.4.0 - build: h4d9b6c2_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-plugin-2024.4.0-h4d9b6c2_2.conda - sha256: 27b732f1ba3ae7dc8263f59e69447eebabcc76de86e2ec4c9722842a1d2f4aa8 - md5: 838b2db868f9ab69a7bad9c065a3362d + arch: arm64 + platform: osx + size: 104328 + timestamp: 1732887271788 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-auto-plugin-2024.5.0-h4d9b6c2_0.conda + sha256: ac4fd5ac79f7a36231556cf4ee623ac3e8735e43da1e4bc5c46bf9c469cd1074 + md5: ad1ed56f60ec9a8e710703f38b860315 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libopenvino 2024.4.0 hac27bb2_2 + - libopenvino 2024.5.0 hac27bb2_0 - libstdcxx >=13 - tbb >=2021.13.0 - size: 237694 - timestamp: 1729594707449 -- kind: conda - name: libopenvino-auto-plugin - version: 2024.4.0 - build: h92dab7a_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-auto-plugin-2024.4.0-h92dab7a_2.conda - sha256: b69690a03c940e00e3d373c5d31131745a54f4cb40b51826d53e3a6cc95c6676 - md5: 4492ac7a52a13ed860ade97d1353c890 + arch: x86_64 + platform: linux + size: 237878 + timestamp: 1732895319611 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-auto-plugin-2024.5.0-hf15766e_0.conda + sha256: 0efa6e975c95af02f5b86d4f3d5f5e901fe667a5b0b0ede4eeb99e4eb081bebe + md5: 968c9121574914ae6101a3efe327ffab depends: - - __osx >=10.15 - - libcxx >=17 - - libopenvino 2024.4.0 h84cb933_2 - - tbb >=2021.13.0 - size: 218057 - timestamp: 1729589358476 -- kind: conda - name: libopenvino-auto-plugin - version: 2024.4.0 - build: hf15766e_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-auto-plugin-2024.4.0-hf15766e_2.conda - sha256: 2de62ad880f30283778fa9c148b6e9095a206f0a1f0fb6b6d5f7bcaf9572d184 - md5: 040cfcec2cccffd2599ba746d8dac9a6 - depends: - - libgcc >=13 - - libopenvino 2024.4.0 hd7d4d4f_2 + - libgcc >=13 + - libopenvino 2024.5.0 hd7d4d4f_0 - libstdcxx >=13 - tbb >=2021.13.0 - size: 224080 - timestamp: 1729590192079 -- kind: conda - name: libopenvino-auto-plugin - version: 2024.4.0 - build: hf276634_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-auto-plugin-2024.4.0-hf276634_2.conda - sha256: 52c22114bd16956d5a810c9dc9a624a53446578a872a2cdb4188333256b04dac - md5: 0a6f2709c335049b804d7ce23c1dc46f + arch: aarch64 + platform: linux + size: 223148 + timestamp: 1732888587549 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-auto-plugin-2024.5.0-h4464f52_0.conda + sha256: 70462c806fe5c527eb69eee72ba84e3b09ec8ad68633616e09678f422ff2f265 + md5: 1426674189a086f02c1808c3676293c7 depends: - - __osx >=11.0 - - libcxx >=17 - - libopenvino 2024.4.0 hbfeda7a_2 + - __osx >=10.15 + - libcxx >=18 + - libopenvino 2024.5.0 h5e1b680_0 - tbb >=2021.13.0 - size: 211623 - timestamp: 1729589895613 -- kind: conda - name: libopenvino-hetero-plugin - version: 2024.4.0 - build: h03892cd_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-hetero-plugin-2024.4.0-h03892cd_2.conda - sha256: 5ec87af2db01843ed4ecef25485e772b75e77d1b484b459a9ce56c28442b4e56 - md5: cfd28b170b1a6e097a014c4e1f514bdc + arch: x86_64 + platform: osx + size: 214756 + timestamp: 1732889356970 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-auto-plugin-2024.5.0-h7f72211_0.conda + sha256: a25de2cae4c03d0184c028fb2603f3b4768e72b76815b13a37ac0efa479b5ff1 + md5: 11b3c4baaa9cde9633a8804e48a3b834 depends: - __osx >=11.0 - - libcxx >=17 - - libopenvino 2024.4.0 hbfeda7a_2 + - libcxx >=18 + - libopenvino 2024.5.0 h97facdf_0 + - tbb >=2021.13.0 + arch: arm64 + platform: osx + size: 209325 + timestamp: 1732887288462 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-hetero-plugin-2024.5.0-h3f63f65_0.conda + sha256: 62df96bd821eb8734965d7d7dd22703cd1e13d4b635cc08cc4c87028d427b55d + md5: 5bcc0022e2565606e3af7395ec3e156d + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libopenvino 2024.5.0 hac27bb2_0 + - libstdcxx >=13 - pugixml >=1.14,<1.15.0a0 - size: 174162 - timestamp: 1729589920318 -- kind: conda - name: libopenvino-hetero-plugin - version: 2024.4.0 - build: h14156cc_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-hetero-plugin-2024.4.0-h14156cc_2.conda - sha256: 47a1f9ea6c9887c6f04eb2b36231f6466bca2adda5477536e5899c85c187f85b - md5: 3225cf138956bff656e09f88af51aa13 + arch: x86_64 + platform: linux + size: 196712 + timestamp: 1732895334039 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-hetero-plugin-2024.5.0-h6ef32b0_0.conda + sha256: 58e0332a109537457d1bbd696ef26b7026dc67570cf037628756927525746764 + md5: fdf03aea2cd2e0e0dc847d4ff3d2904e + depends: + - libgcc >=13 + - libopenvino 2024.5.0 hd7d4d4f_0 + - libstdcxx >=13 + - pugixml >=1.14,<1.15.0a0 + arch: aarch64 + platform: linux + size: 184194 + timestamp: 1732888598871 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-hetero-plugin-2024.5.0-h3435d20_0.conda + sha256: cddcc9b691b9b1e34fcd8ec2b200f5ac87839877c27db1355f8be944a6078757 + md5: 0bb59b2d6a856513dd6cc1e85ce5a7d8 depends: - __osx >=10.15 - - libcxx >=17 - - libopenvino 2024.4.0 h84cb933_2 + - libcxx >=18 + - libopenvino 2024.5.0 h5e1b680_0 + - pugixml >=1.14,<1.15.0a0 + arch: x86_64 + platform: osx + size: 182161 + timestamp: 1732889392141 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-hetero-plugin-2024.5.0-hd3d436d_0.conda + sha256: 59a80e8a1bdd3aefda80a617ef741dba3e05a147d1157811a927edd73c5df18e + md5: 216f428651721d794a59f1f5081fda67 + depends: + - __osx >=11.0 + - libcxx >=18 + - libopenvino 2024.5.0 h97facdf_0 - pugixml >=1.14,<1.15.0a0 - size: 181211 - timestamp: 1729589379396 -- kind: conda - name: libopenvino-hetero-plugin - version: 2024.4.0 - build: h3f63f65_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-hetero-plugin-2024.4.0-h3f63f65_2.conda - sha256: 0c7cd10c9e3d99d6f23e4d7b48cd8e72aeb4a1c7acb801b6ca9add0f87f238d3 - md5: 00a6127960a3f41d4bfcabd35d5fbeec + arch: arm64 + platform: osx + size: 175706 + timestamp: 1732887307322 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-cpu-plugin-2024.5.0-hac27bb2_0.conda + sha256: 44661d1ee58481a77af7bac269968dae430c2f54003613af3b76595555c112b6 + md5: 594ab1b892569c9cd15bcae9781a42b2 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libopenvino 2024.4.0 hac27bb2_2 - - libstdcxx >=13 - - pugixml >=1.14,<1.15.0a0 - size: 197567 - timestamp: 1729594718187 -- kind: conda - name: libopenvino-hetero-plugin - version: 2024.4.0 - build: h6ef32b0_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-hetero-plugin-2024.4.0-h6ef32b0_2.conda - sha256: 215665ba9169a61f30d96c197bf799b85223963af483fdd137f508e7865fa057 - md5: b106de2dc7ebc8cb930061cffbd117e0 - depends: - - libgcc >=13 - - libopenvino 2024.4.0 hd7d4d4f_2 + - libopenvino 2024.5.0 hac27bb2_0 - libstdcxx >=13 - pugixml >=1.14,<1.15.0a0 - size: 184694 - timestamp: 1729590203040 -- kind: conda - name: libopenvino-intel-cpu-plugin - version: 2024.4.0 - build: h84cb933_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-intel-cpu-plugin-2024.4.0-h84cb933_2.conda - sha256: 369d68c966507b3a46562f87462bb17740adfdeb86f02e4a12e9bff2d931d8d2 - md5: 0c91ffaa947cbc17dc3b579b69b2c5d1 + - tbb >=2021.13.0 + arch: x86_64 + platform: linux + size: 12307696 + timestamp: 1732895348960 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-intel-cpu-plugin-2024.5.0-h5e1b680_0.conda + sha256: 2c50ed74d98b91f38b45a101664069aa02ffefb27a88004d88c3f83ca32e29bd + md5: f101a28b8ef1f0fccc30a3c954fa67ba depends: - __osx >=10.15 - - libcxx >=17 - - libopenvino 2024.4.0 h84cb933_2 + - libcxx >=18 + - libopenvino 2024.5.0 h5e1b680_0 - pugixml >=1.14,<1.15.0a0 - tbb >=2021.13.0 - size: 11143246 - timestamp: 1729589403635 -- kind: conda - name: libopenvino-intel-cpu-plugin - version: 2024.4.0 - build: hac27bb2_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-cpu-plugin-2024.4.0-hac27bb2_2.conda - sha256: 5642443645408f030e9dfbe20dbe2c2ab6d852daf02c9a36eac123b44bf2980f - md5: 6cfc840bc39c17d92fb25e5a35789e5b + arch: x86_64 + platform: osx + size: 11367912 + timestamp: 1732889461400 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-gpu-plugin-2024.5.0-hac27bb2_0.conda + sha256: e410af906d75a880d93fcaf56b30efd28262751b50cae7db88b076602498350a + md5: 485e057ea6a17096b0539ca7473e4829 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libopenvino 2024.4.0 hac27bb2_2 + - libopenvino 2024.5.0 hac27bb2_0 - libstdcxx >=13 + - ocl-icd >=2.3.2,<3.0a0 - pugixml >=1.14,<1.15.0a0 - tbb >=2021.13.0 - size: 12101994 - timestamp: 1729594729554 -- kind: conda - name: libopenvino-intel-gpu-plugin - version: 2024.4.0 - build: hac27bb2_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-gpu-plugin-2024.4.0-hac27bb2_2.conda - sha256: 508d0e36febebfb66628d8cb0312b4133c212eac1e8d891fc8977e0d85b23741 - md5: 9e9814b40d8fdfd8485451e3fa2f1719 + arch: x86_64 + platform: linux + size: 9492513 + timestamp: 1732895398556 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-npu-plugin-2024.5.0-hac27bb2_0.conda + sha256: 841d84663bbc1562cdd445fa199fdd835121936a1f6abc161e6f055a819db9cd + md5: f0a9e23aa51b84be0a74a4518d4020ca depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libopenvino 2024.4.0 hac27bb2_2 + - libopenvino 2024.5.0 hac27bb2_0 - libstdcxx >=13 - - ocl-icd >=2.3.2,<3.0a0 - pugixml >=1.14,<1.15.0a0 - tbb >=2021.13.0 - size: 8885078 - timestamp: 1729594772427 -- kind: conda - name: libopenvino-intel-npu-plugin - version: 2024.4.0 - build: hac27bb2_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-intel-npu-plugin-2024.4.0-hac27bb2_2.conda - sha256: a07bdb55c3214cd5b27736ee6d06abe55782ddf1cfaeb9fffee96179bf12390b - md5: 724719ce97feb6f310f88ae8dbb40afd + arch: x86_64 + platform: linux + size: 968361 + timestamp: 1732895433119 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-ir-frontend-2024.5.0-h3f63f65_0.conda + sha256: 1e708b6ae887aea1af2f13a17e005059a9b2b5b6fdacf8563b350963ac23f5d0 + md5: ae37e91183788f64935657b255cbff21 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libopenvino 2024.4.0 hac27bb2_2 + - libopenvino 2024.5.0 hac27bb2_0 - libstdcxx >=13 - pugixml >=1.14,<1.15.0a0 - - tbb >=2021.13.0 - size: 799335 - timestamp: 1729594804720 -- kind: conda - name: libopenvino-ir-frontend - version: 2024.4.0 - build: h03892cd_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-ir-frontend-2024.4.0-h03892cd_2.conda - sha256: 60026c3fe4655c210bde3c447ab84c8f23c9794657f4ea758f27427983056b90 - md5: 928ecc20581599707acda5c5434bf98d + arch: x86_64 + platform: linux + size: 207421 + timestamp: 1732895446002 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-ir-frontend-2024.5.0-h6ef32b0_0.conda + sha256: a6d4427ab09a9a368bee3ff6d6d7865bef4c612572c1e43feef701510d3ced9b + md5: 303abca080fbcae1a4ab25fd6d3ef20b depends: - - __osx >=11.0 - - libcxx >=17 - - libopenvino 2024.4.0 hbfeda7a_2 + - libgcc >=13 + - libopenvino 2024.5.0 hd7d4d4f_0 + - libstdcxx >=13 - pugixml >=1.14,<1.15.0a0 - size: 173928 - timestamp: 1729589940535 -- kind: conda - name: libopenvino-ir-frontend - version: 2024.4.0 - build: h14156cc_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-ir-frontend-2024.4.0-h14156cc_2.conda - sha256: a665badcd30db3dddd46f18e1fb3a7f58513a49859d2cafddf554045dc4b9960 - md5: fa87ea4e22a4b782f0a1bff5f983afcd + arch: aarch64 + platform: linux + size: 194989 + timestamp: 1732888611832 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-ir-frontend-2024.5.0-h3435d20_0.conda + sha256: 95ccddcc6ec6e0c41cf14c5fe565cd29924f7b4807ad47b5861593e03ca04794 + md5: 501f0fedaf5431cc4d488836f2d9cae0 depends: - __osx >=10.15 - - libcxx >=17 - - libopenvino 2024.4.0 h84cb933_2 + - libcxx >=18 + - libopenvino 2024.5.0 h5e1b680_0 - pugixml >=1.14,<1.15.0a0 - size: 182877 - timestamp: 1729589458940 -- kind: conda - name: libopenvino-ir-frontend - version: 2024.4.0 - build: h3f63f65_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-ir-frontend-2024.4.0-h3f63f65_2.conda - sha256: 6038aefea84aeb9534aaf6963d2b266eb757fa36c1a7a9f5e29d6d813bd85a2c - md5: 8908f31eab30f65636eb61ab9cb1f3ad + arch: x86_64 + platform: osx + size: 183280 + timestamp: 1732889543856 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-ir-frontend-2024.5.0-hd3d436d_0.conda + sha256: 9a1ba113c7eb85f5bd9ed39e613659b82d966a21c8a83b705ea8230aabc82ea6 + md5: 215a37c113e53637c91bce2da5368709 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libopenvino 2024.4.0 hac27bb2_2 - - libstdcxx >=13 - - pugixml >=1.14,<1.15.0a0 - size: 204163 - timestamp: 1729594816408 -- kind: conda - name: libopenvino-ir-frontend - version: 2024.4.0 - build: h6ef32b0_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-ir-frontend-2024.4.0-h6ef32b0_2.conda - sha256: 846de69b4e387684857d824974e07a42213781d6519ab59a7bca768d94c49736 - md5: 60f6f88fa0b0cda9c635963aef4013d7 - depends: - - libgcc >=13 - - libopenvino 2024.4.0 hd7d4d4f_2 - - libstdcxx >=13 + - __osx >=11.0 + - libcxx >=18 + - libopenvino 2024.5.0 h97facdf_0 - pugixml >=1.14,<1.15.0a0 - size: 192130 - timestamp: 1729590212150 -- kind: conda - name: libopenvino-onnx-frontend - version: 2024.4.0 - build: h5c8f2c3_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-onnx-frontend-2024.4.0-h5c8f2c3_2.conda - sha256: b68c2ee5fd08c0974ad9395ea0de809b306c261485114cbcbbc0f55c1e0285b3 - md5: e098caa87868e8dcc7ed5d011981207d + arch: arm64 + platform: osx + size: 173886 + timestamp: 1732887323720 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-onnx-frontend-2024.5.0-h5c8f2c3_0.conda + sha256: a121addb8a11de7e8ce9dd9e066beed3331a0d495e20c3648678e6c62a8d40ab + md5: 23e82dd5b616fa8879620609428791c9 depends: - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 - - libopenvino 2024.4.0 hac27bb2_2 + - libopenvino 2024.5.0 hac27bb2_0 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 - size: 1559399 - timestamp: 1729594827815 -- kind: conda - name: libopenvino-onnx-frontend - version: 2024.4.0 - build: h7f5a098_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-onnx-frontend-2024.4.0-h7f5a098_2.conda - sha256: 6f7e9871a71e06e8dae9f2cd43db209fdbe4f957ac778cc7f0f0bed556e04f26 - md5: 26dcc0a3c16a97c717f88981472db4aa - depends: - - __osx >=11.0 - - libabseil * cxx17* - - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 - - libopenvino 2024.4.0 hbfeda7a_2 - - libprotobuf >=5.28.2,<5.28.3.0a0 - size: 1227299 - timestamp: 1729589977734 -- kind: conda - name: libopenvino-onnx-frontend - version: 2024.4.0 - build: haa99d6a_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-onnx-frontend-2024.4.0-haa99d6a_2.conda - sha256: e33692a3da876040d877c207290e7df5bef56639466769cb7fdec935754e699d - md5: a626d0a2138aea9e65f978e936069fe5 + arch: x86_64 + platform: linux + size: 1621729 + timestamp: 1732895458321 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-onnx-frontend-2024.5.0-haa99d6a_0.conda + sha256: dea592b50ab0796eaf3da31b2fc367d5d5dce9da1f475b73d1bef3f41d04884d + md5: bbe328828404e8f1d9fc3128cc8b0b53 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 - - libopenvino 2024.4.0 hd7d4d4f_2 + - libopenvino 2024.5.0 hd7d4d4f_0 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 - size: 1404356 - timestamp: 1729590221767 -- kind: conda - name: libopenvino-onnx-frontend - version: 2024.4.0 - build: he28f95a_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-onnx-frontend-2024.4.0-he28f95a_2.conda - sha256: 63542752306ef2fa873074bb65b8166bdccfd76c2012e3460147334edf318b5b - md5: bc40f66f9d366cac822c806d330af921 + arch: aarch64 + platform: linux + size: 1458225 + timestamp: 1732888623490 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-onnx-frontend-2024.5.0-he7801b2_0.conda + sha256: d845b466f655cfb0db88e3693f9911905eeb13e93be56b4b8b2adb368b112dde + md5: cc0d51dab6f3a7d77d1adb6d3bbe7c11 depends: - __osx >=10.15 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 - - libopenvino 2024.4.0 h84cb933_2 + - libcxx >=18 + - libopenvino 2024.5.0 h5e1b680_0 - libprotobuf >=5.28.2,<5.28.3.0a0 - size: 1281082 - timestamp: 1729589492958 -- kind: conda - name: libopenvino-paddle-frontend - version: 2024.4.0 - build: h5c8f2c3_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-paddle-frontend-2024.4.0-h5c8f2c3_2.conda - sha256: fa57b201fb92af0adc2118de8e92648959b98c0dc1a60b278ba2b79c5601eea6 - md5: 59bb8c3502cb9d35f1fb26691730288c + arch: x86_64 + platform: osx + size: 1327778 + timestamp: 1732889598875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-onnx-frontend-2024.5.0-h3192354_0.conda + sha256: 4fd28490e2f253d151a91ed421f775020b103232231b5ef00e3e90d176d4c5bf + md5: 0041525416d1ba26fef3bf3619d687b1 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libopenvino 2024.4.0 hac27bb2_2 + - libcxx >=18 + - libopenvino 2024.5.0 h97facdf_0 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 - size: 653105 - timestamp: 1729594841297 -- kind: conda - name: libopenvino-paddle-frontend - version: 2024.4.0 - build: h7f5a098_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-paddle-frontend-2024.4.0-h7f5a098_2.conda - sha256: 4bc7994673c5b7bfe700ca6297f563d7f535403ba28178e6b7f4d54959534aa2 - md5: c109c0314b83a852d7c85a91b98b277f + arch: arm64 + platform: osx + size: 1270929 + timestamp: 1732887357507 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-paddle-frontend-2024.5.0-h5c8f2c3_0.conda + sha256: e6ee95c7d28261ec8e90076bcaf2dc521ff4d4322f662cbd3e91ada9a1f07880 + md5: ecf440381b082f7d2b9cb66d62d76efb depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 - - libopenvino 2024.4.0 hbfeda7a_2 + - libgcc >=13 + - libopenvino 2024.5.0 hac27bb2_0 - libprotobuf >=5.28.2,<5.28.3.0a0 - size: 418862 - timestamp: 1729590007426 -- kind: conda - name: libopenvino-paddle-frontend - version: 2024.4.0 - build: haa99d6a_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-paddle-frontend-2024.4.0-haa99d6a_2.conda - sha256: 43c3ef7aeb90bcafe93e3946c063d72dc82933818eff7f9eb7a5b51bad430703 - md5: 75480960fe1dfcfc5f8eeea26e56b4be + - libstdcxx >=13 + arch: x86_64 + platform: linux + size: 658113 + timestamp: 1732895472761 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-paddle-frontend-2024.5.0-haa99d6a_0.conda + sha256: 6b95d4309ccc5b4b98c2bb263eaa66e80c69f2661e3afeeaee183c140c84cc28 + md5: c306e99e1b99294478912f2b766eb4d3 depends: - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 - - libopenvino 2024.4.0 hd7d4d4f_2 + - libopenvino 2024.5.0 hd7d4d4f_0 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 - size: 605764 - timestamp: 1729590232511 -- kind: conda - name: libopenvino-paddle-frontend - version: 2024.4.0 - build: he28f95a_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-paddle-frontend-2024.4.0-he28f95a_2.conda - sha256: 6b59752d19e7082b05c4e1fa62fd597bafad952c974fedd3452ea7a37e9d20e1 - md5: 3da602a667ba557a94d42944216bfc39 + arch: aarch64 + platform: linux + size: 609117 + timestamp: 1732888636823 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-paddle-frontend-2024.5.0-he7801b2_0.conda + sha256: 31d92f007566af6930c785e9641e5012183e7132734f00feca1086b6ac85240c + md5: 1fbe446de684e3cb70111cdd135b874a depends: - __osx >=10.15 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 - - libopenvino 2024.4.0 h84cb933_2 + - libcxx >=18 + - libopenvino 2024.5.0 h5e1b680_0 - libprotobuf >=5.28.2,<5.28.3.0a0 - size: 427736 - timestamp: 1729589516305 -- kind: conda - name: libopenvino-pytorch-frontend - version: 2024.4.0 - build: h5833ebf_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-pytorch-frontend-2024.4.0-h5833ebf_2.conda - sha256: 2b6ee15f5b2f44331c5e161cff01c15b2b109582131f73c6557666748633faac - md5: 31f2b940f1c0a5390353b10b72449832 + arch: x86_64 + platform: osx + size: 437285 + timestamp: 1732889636088 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-paddle-frontend-2024.5.0-h3192354_0.conda + sha256: a83f5b11b3d4bc4304f00b6936a6406f9c90fdc427f6de314c8ce75079c47082 + md5: 1dc53fe2ee97ad3cdf3152abcc2b3f80 depends: - __osx >=11.0 - - libcxx >=17 - - libopenvino 2024.4.0 hbfeda7a_2 - size: 766073 - timestamp: 1729590028174 -- kind: conda - name: libopenvino-pytorch-frontend - version: 2024.4.0 - build: h5888daf_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-pytorch-frontend-2024.4.0-h5888daf_2.conda - sha256: a029b3ebff1e8d1d2736a548a616c20066ed6508f238782afbf3a77a4f57c6cd - md5: e0b88fd64dc95f715ef52e607a9af89b + - libabseil * cxx17* + - libabseil >=20240722.0,<20240723.0a0 + - libcxx >=18 + - libopenvino 2024.5.0 h97facdf_0 + - libprotobuf >=5.28.2,<5.28.3.0a0 + arch: arm64 + platform: osx + size: 425801 + timestamp: 1732887379705 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-pytorch-frontend-2024.5.0-h5888daf_0.conda + sha256: f7e04c73d88a3c7cc6e58f34e878b7f8fa5dbd5ed198ed6c69d6901bac35b739 + md5: a5baecc3ef0d0cca99d08cf335c06c03 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libopenvino 2024.4.0 hac27bb2_2 + - libopenvino 2024.5.0 hac27bb2_0 - libstdcxx >=13 - size: 1075090 - timestamp: 1729594854413 -- kind: conda - name: libopenvino-pytorch-frontend - version: 2024.4.0 - build: h5ad3122_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-pytorch-frontend-2024.4.0-h5ad3122_2.conda - sha256: e86b89a8d7fda8d1015abc1918a23785310348f64b73012e1ea87a639e27a14a - md5: fbeb65db200c04bac9e95ad05b859161 - depends: - - libgcc >=13 - - libopenvino 2024.4.0 hd7d4d4f_2 + arch: x86_64 + platform: linux + size: 1102383 + timestamp: 1732895486898 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-pytorch-frontend-2024.5.0-h5ad3122_0.conda + sha256: 570ad01cb055f52ddc69e4243f65e4f048130fa9cdae69c1b1cfaef98f799b59 + md5: c9014176771facb2565f42eede0e94c1 + depends: + - libgcc >=13 + - libopenvino 2024.5.0 hd7d4d4f_0 - libstdcxx >=13 - size: 996903 - timestamp: 1729590242095 -- kind: conda - name: libopenvino-pytorch-frontend - version: 2024.4.0 - build: hc3d39de_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-pytorch-frontend-2024.4.0-hc3d39de_2.conda - sha256: b336c446fc28c07e832424c96758f244f3fae1d63968129f9948d023a86951be - md5: 55223d989ddad9d8908ec1310b28b0f8 + arch: aarch64 + platform: linux + size: 1021520 + timestamp: 1732888648727 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-pytorch-frontend-2024.5.0-hbcac03e_0.conda + sha256: ebde318589632445da2cfd573be7e9d2471b0e488507b9938c8469757a258b25 + md5: 8fd7f8c0a683cde9fbc854b8c8662461 depends: - __osx >=10.15 - - libcxx >=17 - - libopenvino 2024.4.0 h84cb933_2 - size: 788593 - timestamp: 1729589537016 -- kind: conda - name: libopenvino-tensorflow-frontend - version: 2024.4.0 - build: h488aad4_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-tensorflow-frontend-2024.4.0-h488aad4_2.conda - sha256: 15633c02ffb36dc695f653b06c74e723610b8d4de45a812f0cb950bb32e45a31 - md5: 9dc93ef2d110b5b5268627d8c879e6a8 + - libcxx >=18 + - libopenvino 2024.5.0 h5e1b680_0 + arch: x86_64 + platform: osx + size: 811927 + timestamp: 1732889679935 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-pytorch-frontend-2024.5.0-h286801f_0.conda + sha256: f29d0a46a15136dd0f6afdd5bfa6eb0665bf94f786570b4cb74763fd0d3922de + md5: 2c5d806c6737c92240ad9db8b6d75a50 depends: - - __osx >=10.15 + - __osx >=11.0 + - libcxx >=18 + - libopenvino 2024.5.0 h97facdf_0 + arch: arm64 + platform: osx + size: 789277 + timestamp: 1732887397836 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-frontend-2024.5.0-h6481b9d_0.conda + sha256: 86fc768f2b6f6ac659531f1a1a111eaf16798ec4d9d1e2e16366fe38635d146f + md5: 698ad10adfc7aa6553392677fffe054f + depends: + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 - - libopenvino 2024.4.0 h84cb933_2 + - libgcc >=13 + - libopenvino 2024.5.0 hac27bb2_0 - libprotobuf >=5.28.2,<5.28.3.0a0 + - libstdcxx >=13 - snappy >=1.2.1,<1.3.0a0 - size: 976222 - timestamp: 1729589585972 -- kind: conda - name: libopenvino-tensorflow-frontend - version: 2024.4.0 - build: h6481b9d_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-frontend-2024.4.0-h6481b9d_2.conda - sha256: fdc4871a05bbb61cfe6db1e60018d74cbd6d65d82f03b9be515c3ad41bb7ca04 - md5: 12bf831b85f17368bc71a26ac93a8493 + arch: x86_64 + platform: linux + size: 1311249 + timestamp: 1732895503314 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-tensorflow-frontend-2024.5.0-he24a241_0.conda + sha256: 651bd6452bc37cbadeefd4942e07b80bdd893574d51962fbfcc0aece56f0583e + md5: 1dded3e7fbb49dde6a35e4e1cca4793f depends: - - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 - - libopenvino 2024.4.0 hac27bb2_2 + - libopenvino 2024.5.0 hd7d4d4f_0 - libprotobuf >=5.28.2,<5.28.3.0a0 - libstdcxx >=13 - snappy >=1.2.1,<1.3.0a0 - size: 1282840 - timestamp: 1729594867098 -- kind: conda - name: libopenvino-tensorflow-frontend - version: 2024.4.0 - build: h9d544f2_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-tensorflow-frontend-2024.4.0-h9d544f2_2.conda - sha256: 577dff3fa81c389878312200a649b4360f44430c4aaf06c93c8f827256b5c6ac - md5: 9acac136a616aa3f36fd317eb9ff821a + arch: aarch64 + platform: linux + size: 1218204 + timestamp: 1732888661860 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-tensorflow-frontend-2024.5.0-h080520f_0.conda + sha256: 9a71ab7f1be1bbe34ba513a3fb14e79441b16b6ff9aa05cf5cda60ac40d78ce7 + md5: 26243a4a1d2a0a91d0d80b684932441d depends: - - __osx >=11.0 + - __osx >=10.15 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libcxx >=17 - - libopenvino 2024.4.0 hbfeda7a_2 + - libcxx >=18 + - libopenvino 2024.5.0 h5e1b680_0 - libprotobuf >=5.28.2,<5.28.3.0a0 - snappy >=1.2.1,<1.3.0a0 - size: 932555 - timestamp: 1729590076653 -- kind: conda - name: libopenvino-tensorflow-frontend - version: 2024.4.0 - build: he24a241_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-tensorflow-frontend-2024.4.0-he24a241_2.conda - sha256: d7f2247da62e2605f768694144100637afff046989aa6b5d4aff8bc74cdeffbc - md5: 91a86ff710cd96f4241ef18aa594a764 + arch: x86_64 + platform: osx + size: 995422 + timestamp: 1732889788047 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-tensorflow-frontend-2024.5.0-hafbd6be_0.conda + sha256: 027101dd9ce0ff87025256b2380161874b059c3300a73af21bba89ce5e8cf33c + md5: 23d5a1ca31bd32543a169d25eeec10fc depends: + - __osx >=11.0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - - libgcc >=13 - - libopenvino 2024.4.0 hd7d4d4f_2 + - libcxx >=18 + - libopenvino 2024.5.0 h97facdf_0 - libprotobuf >=5.28.2,<5.28.3.0a0 - - libstdcxx >=13 - snappy >=1.2.1,<1.3.0a0 - size: 1192974 - timestamp: 1729590252604 -- kind: conda - name: libopenvino-tensorflow-lite-frontend - version: 2024.4.0 - build: h5833ebf_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-tensorflow-lite-frontend-2024.4.0-h5833ebf_2.conda - sha256: 0583c58e6c6796f7c756a10937fa6c7a1c52b1afc1f75451c4690a38ec57f7fd - md5: e6b793ea4b5dc41ea6ae1dfc65becabc - depends: - - __osx >=11.0 - - libcxx >=17 - - libopenvino 2024.4.0 hbfeda7a_2 - size: 369779 - timestamp: 1729590097301 -- kind: conda - name: libopenvino-tensorflow-lite-frontend - version: 2024.4.0 - build: h5888daf_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-lite-frontend-2024.4.0-h5888daf_2.conda - sha256: a8f26058cf57159492c63fb0622ea2858763ea22338c507ff40a6e9bb792295e - md5: d48c774c40ea2047adbff043e9076e7a + arch: arm64 + platform: osx + size: 955360 + timestamp: 1732887450214 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopenvino-tensorflow-lite-frontend-2024.5.0-h5888daf_0.conda + sha256: 7842fedd0ca9f319b3727da4ff0f911742a9398babf852fefffd407bd73f3d20 + md5: 1c25d4e1965049a85c83762eaecb4436 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libopenvino 2024.4.0 hac27bb2_2 + - libopenvino 2024.5.0 hac27bb2_0 - libstdcxx >=13 - size: 466563 - timestamp: 1729594879557 -- kind: conda - name: libopenvino-tensorflow-lite-frontend - version: 2024.4.0 - build: h5ad3122_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-tensorflow-lite-frontend-2024.4.0-h5ad3122_2.conda - sha256: b67b4c74e97a810a902e4aa81a173db9281955270dae2890afc29320df7659ae - md5: a3f82dbd3189dffd49ed67216f21e35a - depends: - - libgcc >=13 - - libopenvino 2024.4.0 hd7d4d4f_2 + arch: x86_64 + platform: linux + size: 485880 + timestamp: 1732895516864 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopenvino-tensorflow-lite-frontend-2024.5.0-h5ad3122_0.conda + sha256: 78db09a57d5cb1f4fc7ea6aac46c23588869a9b57cd1c863a3f6460dfc779ab9 + md5: 05d085ba8ccf33d75c0f57565c194382 + depends: + - libgcc >=13 + - libopenvino 2024.5.0 hd7d4d4f_0 - libstdcxx >=13 - size: 430404 - timestamp: 1729590264452 -- kind: conda - name: libopenvino-tensorflow-lite-frontend - version: 2024.4.0 - build: hc3d39de_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-tensorflow-lite-frontend-2024.4.0-hc3d39de_2.conda - sha256: 9076a899090bb8f9f9d5c2ef5c0d2c46f69570af4b5b3f6b46870f36e62cf1de - md5: ac195e5406bc31fd5650208d88def549 + arch: aarch64 + platform: linux + size: 448771 + timestamp: 1732888676221 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopenvino-tensorflow-lite-frontend-2024.5.0-hbcac03e_0.conda + sha256: b3d58177978e513ae46ac3d2fb2987b411276d41ef360fc1a6d53a890ebc353f + md5: 0546ff56c5ea6b3c47bd65fa2b963f47 depends: - __osx >=10.15 - - libcxx >=17 - - libopenvino 2024.4.0 h84cb933_2 - size: 368215 - timestamp: 1729589610964 -- kind: conda - name: libopus - version: 1.3.1 - build: h27ca646_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 - sha256: e9912101a58cbc609a1917c5289f3bd1f600c82ed3a1c90a6dd4ca02df77958a - md5: 3d0dbee0ccd2f6d6781d270313627b62 - license: BSD-3-Clause - license_family: BSD - size: 252854 - timestamp: 1606823635137 -- kind: conda - name: libopus - version: 1.3.1 - build: h7f98852_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 + - libcxx >=18 + - libopenvino 2024.5.0 h5e1b680_0 + arch: x86_64 + platform: osx + size: 382154 + timestamp: 1732889839211 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopenvino-tensorflow-lite-frontend-2024.5.0-h286801f_0.conda + sha256: 849b46b38089c54d1db78eedd626c77b0895debda609c1e041839f2b7478307e + md5: 644a7de9e56a05fa1cd8ebd2ded78c1a + depends: + - __osx >=11.0 + - libcxx >=18 + - libopenvino 2024.5.0 h97facdf_0 + arch: arm64 + platform: osx + size: 384440 + timestamp: 1732887471048 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libopus-1.3.1-h7f98852_1.tar.bz2 sha256: 0e1c2740ebd1c93226dc5387461bbcf8142c518f2092f3ea7551f77755decc8f md5: 15345e56d527b330e1cacbdf58676e8f depends: - libgcc-ng >=9.3.0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 260658 timestamp: 1606823578035 -- kind: conda - name: libopus - version: 1.3.1 - build: h8ffe710_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libopus-1.3.1-h8ffe710_1.tar.bz2 - sha256: b2e5ec193762a5b4f905f8100437370e164df3db0ea5c18b4ce09390f5d3d525 - md5: e35a6bcfeb20ea83aab21dfc50ae62a4 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 + sha256: 92a87ade11af2cff41c35cf941f1a79390fde1f113f8e51e1cce30d31b7c8305 + md5: ac7534c50934ed25e4749d74b04c667a depends: - - vc >=14.1,<15.0a0 - - vs2015_runtime >=14.16.27012 + - libgcc-ng >=9.3.0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 260615 - timestamp: 1606824019288 -- kind: conda - name: libopus - version: 1.3.1 - build: hc929b4f_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libopus-1.3.1-hc929b4f_1.tar.bz2 + size: 328825 + timestamp: 1606823775764 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libopus-1.3.1-hc929b4f_1.tar.bz2 sha256: c126fc225bece591a8f010e95ca7d010ea2d02df9251830bec24a19bf823fc31 md5: 380b9ea5f6a7a277e6c1ac27d034369b + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD size: 279983 timestamp: 1606823633642 -- kind: conda - name: libopus - version: 1.3.1 - build: hf897c2e_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libopus-1.3.1-hf897c2e_1.tar.bz2 - sha256: 92a87ade11af2cff41c35cf941f1a79390fde1f113f8e51e1cce30d31b7c8305 - md5: ac7534c50934ed25e4749d74b04c667a +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libopus-1.3.1-h27ca646_1.tar.bz2 + sha256: e9912101a58cbc609a1917c5289f3bd1f600c82ed3a1c90a6dd4ca02df77958a + md5: 3d0dbee0ccd2f6d6781d270313627b62 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 252854 + timestamp: 1606823635137 +- conda: https://conda.anaconda.org/conda-forge/win-64/libopus-1.3.1-h8ffe710_1.tar.bz2 + sha256: b2e5ec193762a5b4f905f8100437370e164df3db0ea5c18b4ce09390f5d3d525 + md5: e35a6bcfeb20ea83aab21dfc50ae62a4 depends: - - libgcc-ng >=9.3.0 + - vc >=14.1,<15.0a0 + - vs2015_runtime >=14.16.27012 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD - size: 328825 - timestamp: 1606823775764 -- kind: conda - name: libpciaccess - version: '0.18' - build: h31becfc_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpciaccess-0.18-h31becfc_0.conda + size: 260615 + timestamp: 1606824019288 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hd590300_0.conda + sha256: c0a30ac74eba66ea76a4f0a39acc7833f5ed783a632ca3bb6665b2d81aabd2fb + md5: 48f4330bfcd959c3cfb704d424903c82 + depends: + - libgcc-ng >=12 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 28361 + timestamp: 1707101388552 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpciaccess-0.18-h31becfc_0.conda sha256: 0c6806dcd53da457c472cf22ad7793aef074cb198a10677a91b02c7dceeee770 md5: 6d48179630f00e8c9ad9e30879ce1e54 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 29211 timestamp: 1707101477910 -- kind: conda - name: libpciaccess - version: '0.18' - build: hd590300_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libpciaccess-0.18-hd590300_0.conda - sha256: c0a30ac74eba66ea76a4f0a39acc7833f5ed783a632ca3bb6665b2d81aabd2fb - md5: 48f4330bfcd959c3cfb704d424903c82 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda + sha256: e5b14f7a01c2db4362d8591f42f82f336ed48d5e4079e4d1f65d0c2a3637ea78 + md5: f4cc49d7aa68316213e4b12be35308d1 depends: - - libgcc-ng >=12 - license: MIT - license_family: MIT - size: 28361 - timestamp: 1707101388552 -- kind: conda - name: libpng - version: 1.6.44 - build: h3ca93ac_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.44-h3ca93ac_0.conda - sha256: 0d3d6ff9225f6918ac225e3839c0d91e5af1da08a4ebf59cac1bfd86018db945 - md5: 639ac6b55a40aa5de7b8c1b4d78f9e81 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux + license: zlib-acknowledgement + size: 290661 + timestamp: 1726234747153 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda + sha256: 23b5ce15cf9c6017641a8396bab00ae807dd9f662718cfa7f61de114d0c97647 + md5: 5d25802b25fcc7419fa13e21affaeb3a depends: + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + arch: aarch64 + platform: linux license: zlib-acknowledgement - size: 348933 - timestamp: 1726235196095 -- kind: conda - name: libpng - version: 1.6.44 - build: h4b8f8c9_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.44-h4b8f8c9_0.conda + size: 294907 + timestamp: 1726236639270 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libpng-1.6.44-h4b8f8c9_0.conda sha256: 12b44e58f8832798d7a5c0a7480c95e905dbd6c3558dec09739062411f9e08d1 md5: f32ac2c8dd390dbf169f550887ed09d9 depends: - __osx >=10.13 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: osx license: zlib-acknowledgement size: 268073 timestamp: 1726234803010 -- kind: conda - name: libpng - version: 1.6.44 - build: hadc24fc_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libpng-1.6.44-hadc24fc_0.conda - sha256: e5b14f7a01c2db4362d8591f42f82f336ed48d5e4079e4d1f65d0c2a3637ea78 - md5: f4cc49d7aa68316213e4b12be35308d1 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - license: zlib-acknowledgement - size: 290661 - timestamp: 1726234747153 -- kind: conda - name: libpng - version: 1.6.44 - build: hc14010f_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpng-1.6.44-hc14010f_0.conda sha256: 38f8759a3eb8060deabd4db41f0f023514d853e46ddcbd0ba21768fc4e563bb1 md5: fb36e93f0ea6a6f5d2b99984f34b049e depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: zlib-acknowledgement size: 263385 timestamp: 1726234714421 -- kind: conda - name: libpng - version: 1.6.44 - build: hc4a20ef_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpng-1.6.44-hc4a20ef_0.conda - sha256: 23b5ce15cf9c6017641a8396bab00ae807dd9f662718cfa7f61de114d0c97647 - md5: 5d25802b25fcc7419fa13e21affaeb3a +- conda: https://conda.anaconda.org/conda-forge/win-64/libpng-1.6.44-h3ca93ac_0.conda + sha256: 0d3d6ff9225f6918ac225e3839c0d91e5af1da08a4ebf59cac1bfd86018db945 + md5: 639ac6b55a40aa5de7b8c1b4d78f9e81 depends: - - libgcc >=13 - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: zlib-acknowledgement - size: 294907 - timestamp: 1726236639270 -- kind: conda - name: libpq - version: '17.2' - build: h04577a9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libpq-17.2-h04577a9_0.conda - sha256: d8ed60436b8f1484d74f68b01f98301d6c8174df1d77a3e89ba42f033dcb43c5 - md5: 52dd46162c6fb2765b49e6fd06adf8d5 + size: 348933 + timestamp: 1726235196095 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libpq-17.2-h3b95a9b_1.conda + sha256: 7e0debdb22c81e069c4c6fed8b5b82fcfa0f37cccba2fb00e833e657dc75113f + md5: 37724d8bae042345a19ca1a25dde786b depends: - __glibc >=2.17,<3.0.a0 - icu >=75.1,<76.0a0 - krb5 >=1.21.3,<1.22.0a0 - libgcc >=13 - - openldap >=2.6.8,<2.7.0a0 + - openldap >=2.6.9,<2.7.0a0 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: PostgreSQL - size: 2588868 - timestamp: 1732204566030 -- kind: conda - name: libpq - version: '17.2' - build: h081282e_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libpq-17.2-h081282e_0.conda - sha256: 428b051d888c17c2399f5f18f69938cec2440f35b078a0d0530e5a48e4a886ae - md5: cfef255cbd6e1c9d5b15fad06667aa02 + size: 2656919 + timestamp: 1733427612100 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libpq-17.2-hd56632b_1.conda + sha256: 58e436707668a51f2eec2b398cbc2c1a1b8ec5ae46d0df5c9c1260da079231a9 + md5: 2113425a121b0aa65dc87728ed5601ac depends: - icu >=75.1,<76.0a0 - krb5 >=1.21.3,<1.22.0a0 - libgcc >=13 - - openldap >=2.6.8,<2.7.0a0 + - openldap >=2.6.9,<2.7.0a0 - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux license: PostgreSQL - size: 2585867 - timestamp: 1732204520732 -- kind: conda - name: libpq - version: '17.2' - build: h9b1ab17_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libpq-17.2-h9b1ab17_0.conda - sha256: 3df7defd514d989ead1280cabb13618e03f7cdace828e6b7a307f2e47845123d - md5: 0ba6b6772a08c40de13427c957ceaf67 + size: 2779208 + timestamp: 1733427598553 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libpq-17.2-h639cf83_1.conda + sha256: ee606d7f4d5be1391caeae72d675021e8e4ae7b113fefe14a6c8992fef8de868 + md5: e7ca8216126af3c9c1053f331e7a1fe4 depends: - - __osx >=11.0 + - __osx >=10.13 - icu >=75.1,<76.0a0 - krb5 >=1.21.3,<1.22.0a0 - - openldap >=2.6.8,<2.7.0a0 + - openldap >=2.6.9,<2.7.0a0 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: osx license: PostgreSQL - size: 2603320 - timestamp: 1732204754944 -- kind: conda - name: libpq - version: '17.2' - build: hfbed10f_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libpq-17.2-hfbed10f_0.conda - sha256: 2cdeabc2278ebdee89202a6e380b1032399aa7ee35a52915f181a215ae31f66f - md5: e833f32ff8aa5062928c768af987a875 + size: 2604411 + timestamp: 1733427915947 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libpq-17.2-ha9b7db8_1.conda + sha256: 364058029fec7f8bd27607359fa97773476cc9a7f798a3f9398efd682b5ffb8b + md5: 59375b0b03548aee1d4d1a2c8a7348b3 depends: - - __osx >=10.13 + - __osx >=11.0 - icu >=75.1,<76.0a0 - krb5 >=1.21.3,<1.22.0a0 - - openldap >=2.6.8,<2.7.0a0 + - openldap >=2.6.9,<2.7.0a0 - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx license: PostgreSQL - size: 2607354 - timestamp: 1732205034231 -- kind: conda - name: libprotobuf - version: 5.28.2 - build: h029595c_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda - sha256: d8c7b6f851bfc53494d9b8e54d473c4f11ab26483a6e64df6f7967563df166b1 - md5: 538dbe0ad9f248e2e109abb9b6809ea5 + size: 2649655 + timestamp: 1733428012273 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda + sha256: 5e8fd4aa00193c85602ce6101dd28fe31306dff85c9725048f6dc828dfa7c421 + md5: ab0bff36363bec94720275a681af8b83 depends: + - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 2802876 - timestamp: 1728564881988 -- kind: conda - name: libprotobuf - version: 5.28.2 - build: h5b01275_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libprotobuf-5.28.2-h5b01275_0.conda - sha256: 5e8fd4aa00193c85602ce6101dd28fe31306dff85c9725048f6dc828dfa7c421 - md5: ab0bff36363bec94720275a681af8b83 + size: 2945348 + timestamp: 1728565355702 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libprotobuf-5.28.2-h029595c_0.conda + sha256: d8c7b6f851bfc53494d9b8e54d473c4f11ab26483a6e64df6f7967563df166b1 + md5: 538dbe0ad9f248e2e109abb9b6809ea5 depends: - - __glibc >=2.17,<3.0.a0 - libabseil * cxx17* - libabseil >=20240722.0,<20240723.0a0 - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 2945348 - timestamp: 1728565355702 -- kind: conda - name: libprotobuf - version: 5.28.2 - build: h8b30cf6_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.28.2-h8b30cf6_0.conda + size: 2802876 + timestamp: 1728564881988 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libprotobuf-5.28.2-h8b30cf6_0.conda sha256: e240c2003e301ede0a0f4af7688adb8456559ffaa4af2eed3fce879c22c80a0e md5: 2302089e5bcb04ce891ce765c963befb depends: @@ -14245,16 +10657,13 @@ packages: - libabseil >=20240722.0,<20240723.0a0 - libcxx >=17 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD size: 2428926 timestamp: 1728565541606 -- kind: conda - name: libprotobuf - version: 5.28.2 - build: h8f0b736_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libprotobuf-5.28.2-h8f0b736_0.conda sha256: f732a6fa918428e2d5ba61e78fe11bb44a002cc8f6bb74c94ee5b1297fefcfd8 md5: d2cb5991f2fb8eb079c80084435e9ce6 depends: @@ -14263,73 +10672,61 @@ packages: - libabseil >=20240722.0,<20240723.0a0 - libcxx >=17 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 2374965 timestamp: 1728565334796 -- kind: conda - name: libraw - version: 0.21.3 - build: h0f5434b_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libraw-0.21.3-h0f5434b_0.conda - sha256: 0d2610b684cd8712bdcf0873b17b1fa3d7ce1105550264b7fd91b184a00d1a28 - md5: 075f3d5fe250279afc5d9b221d71f84b +- conda: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.21.3-hca62329_0.conda + sha256: 4b483d963686bcc1fbe225c41f48a2ec206bc97e1d9d1c16fac2d6b5709240b8 + md5: e99091d245425cf089b814107b40c349 depends: + - __glibc >=2.17,<3.0.a0 + - _openmp_mutex >=4.5 - lcms2 >=2.16,<3.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: linux license: LGPL-2.1-only license_family: LGPL - size: 489267 - timestamp: 1726766863050 -- kind: conda - name: libraw - version: 0.21.3 - build: h8f7feda_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libraw-0.21.3-h8f7feda_0.conda - sha256: 6b1cebffeedbc8d3ccf203b71e488361893060ac0172c1e8812ef1fda031484d - md5: ea73d5e8ffd5f89389303c681d48ea2b + size: 640729 + timestamp: 1726766159397 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libraw-0.21.3-hf20323b_0.conda + sha256: 94c4fe562d9f962f89e28140e04fe53868e2886e12434b834f62de9a4f7970df + md5: 885621c9ba4186c2b88c5033d301bb72 depends: - - __osx >=10.13 + - _openmp_mutex >=4.5 - lcms2 >=2.16,<3.0a0 - - libcxx >=17 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: LGPL-2.1-only license_family: LGPL - size: 581665 - timestamp: 1726766248079 -- kind: conda - name: libraw - version: 0.21.3 - build: hca62329_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libraw-0.21.3-hca62329_0.conda - sha256: 4b483d963686bcc1fbe225c41f48a2ec206bc97e1d9d1c16fac2d6b5709240b8 - md5: e99091d245425cf089b814107b40c349 + size: 650078 + timestamp: 1726766243482 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libraw-0.21.3-h8f7feda_0.conda + sha256: 6b1cebffeedbc8d3ccf203b71e488361893060ac0172c1e8812ef1fda031484d + md5: ea73d5e8ffd5f89389303c681d48ea2b depends: - - __glibc >=2.17,<3.0.a0 - - _openmp_mutex >=4.5 + - __osx >=10.13 - lcms2 >=2.16,<3.0a0 - - libgcc >=13 + - libcxx >=17 - libjpeg-turbo >=3.0.0,<4.0a0 - - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: osx license: LGPL-2.1-only license_family: LGPL - size: 640729 - timestamp: 1726766159397 -- kind: conda - name: libraw - version: 0.21.3 - build: hee66ff5_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libraw-0.21.3-hee66ff5_0.conda + size: 581665 + timestamp: 1726766248079 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libraw-0.21.3-hee66ff5_0.conda sha256: 0a3d149cdd05eda13ff7bf99ed55cd52e26ae641d8bdb52386e440e118a8eb87 md5: d2072e65b6784cf0b6000ac59f03640d depends: @@ -14338,38 +10735,33 @@ packages: - libcxx >=17 - libjpeg-turbo >=3.0.0,<4.0a0 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: LGPL-2.1-only license_family: LGPL size: 582358 timestamp: 1726766236233 -- kind: conda - name: libraw - version: 0.21.3 - build: hf20323b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libraw-0.21.3-hf20323b_0.conda - sha256: 94c4fe562d9f962f89e28140e04fe53868e2886e12434b834f62de9a4f7970df - md5: 885621c9ba4186c2b88c5033d301bb72 +- conda: https://conda.anaconda.org/conda-forge/win-64/libraw-0.21.3-h0f5434b_0.conda + sha256: 0d2610b684cd8712bdcf0873b17b1fa3d7ce1105550264b7fd91b184a00d1a28 + md5: 075f3d5fe250279afc5d9b221d71f84b depends: - - _openmp_mutex >=4.5 - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: LGPL-2.1-only license_family: LGPL - size: 650078 - timestamp: 1726766243482 -- kind: conda - name: librsvg - version: 2.58.4 - build: h00090f3_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/librsvg-2.58.4-h00090f3_0.conda - sha256: f27d29bec094cd4a9190409a0e881a8eac2affdf2bda850d9f2a580b3280ab96 - md5: e217f742afbec9f3632e73602dadb810 + size: 489267 + timestamp: 1726766863050 +- conda: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-hc0ffecb_0.conda + sha256: fda3197ffb24512e719d55defa02f9f70286038e56cad8c1d580ed6460f417fa + md5: 83f045969988f5c7a65f3950b95a8b35 depends: + - __glibc >=2.17,<3.0.a0 - cairo >=1.18.0,<2.0a0 - freetype >=2.12.1,<3.0a0 - gdk-pixbuf >=2.42.12,<3.0a0 @@ -14381,133 +10773,107 @@ packages: - pango >=1.54.0,<2.0a0 constrains: - __glibc >=2.17 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later - size: 6366018 - timestamp: 1726236562130 -- kind: conda - name: librsvg - version: 2.58.4 - build: h2682814_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h2682814_0.conda - sha256: ed2d08ef3647d1c10fa51a0480f215ddae04f73a2bd9bbd135d3f37d313d84a6 - md5: 0022c69263e9bb8c530feff2dfc431f9 + size: 6390511 + timestamp: 1726227212382 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/librsvg-2.58.4-h00090f3_0.conda + sha256: f27d29bec094cd4a9190409a0e881a8eac2affdf2bda850d9f2a580b3280ab96 + md5: e217f742afbec9f3632e73602dadb810 depends: - - __osx >=10.13 - cairo >=1.18.0,<2.0a0 + - freetype >=2.12.1,<3.0a0 - gdk-pixbuf >=2.42.12,<3.0a0 + - harfbuzz >=9.0.0,<10.0a0 + - libgcc >=13 - libglib >=2.80.3,<3.0a0 + - libpng >=1.6.43,<1.7.0a0 - libxml2 >=2.12.7,<3.0a0 - pango >=1.54.0,<2.0a0 constrains: - - __osx >=10.13 + - __glibc >=2.17 + arch: aarch64 + platform: linux license: LGPL-2.1-or-later - size: 4919155 - timestamp: 1726227702081 -- kind: conda - name: librsvg - version: 2.58.4 - build: h33bc1f6_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/librsvg-2.58.4-h33bc1f6_0.conda - sha256: 21d3c867a7cfa28ed7e77840c0275ac4ae8a3eb4d17455b920cb0c24051d84f1 - md5: 40b2421b8358e85cde3f153022b6f364 + size: 6366018 + timestamp: 1726236562130 +- conda: https://conda.anaconda.org/conda-forge/osx-64/librsvg-2.58.4-h21a6cfa_2.conda + sha256: 482cde0a3828935edc31c529e15c2686425f64b07a7e52551b6ed672360f2a15 + md5: 0aa68f5a6ebfd2254daae40170439f03 depends: - - cairo >=1.18.0,<2.0a0 + - __osx >=10.13 + - cairo >=1.18.2,<2.0a0 - gdk-pixbuf >=2.42.12,<3.0a0 - - libglib >=2.80.3,<3.0a0 - - libxml2 >=2.12.7,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libxml2 >=2.13.5,<3.0a0 - pango >=1.54.0,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.40.33810 + constrains: + - __osx >=10.13 + arch: x86_64 + platform: osx license: LGPL-2.1-or-later - size: 3871820 - timestamp: 1726228304069 -- kind: conda - name: librsvg - version: 2.58.4 - build: h40956f1_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h40956f1_0.conda - sha256: 88cd8603a6fe6c3299e9cd0a81f5e38cf431d20b7d3e2e6642c8a41113ede6db - md5: 27c333944e11caae7bc3a35178d32ac5 + size: 4841346 + timestamp: 1734902391160 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/librsvg-2.58.4-h266df6f_2.conda + sha256: c1ef2c5855166001967952d7525aa2f29707214495c74c2bbb60e691aee45ef0 + md5: 82c31ce77bac095b5700b1fdaad9a628 depends: - __osx >=11.0 - - cairo >=1.18.0,<2.0a0 + - cairo >=1.18.2,<2.0a0 - gdk-pixbuf >=2.42.12,<3.0a0 - - libglib >=2.80.3,<3.0a0 - - libxml2 >=2.12.7,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libxml2 >=2.13.5,<3.0a0 - pango >=1.54.0,<2.0a0 constrains: - __osx >=11.0 + arch: arm64 + platform: osx license: LGPL-2.1-or-later - size: 4688893 - timestamp: 1726228099207 -- kind: conda - name: librsvg - version: 2.58.4 - build: hc0ffecb_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/librsvg-2.58.4-hc0ffecb_0.conda - sha256: fda3197ffb24512e719d55defa02f9f70286038e56cad8c1d580ed6460f417fa - md5: 83f045969988f5c7a65f3950b95a8b35 + size: 4728552 + timestamp: 1734903448902 +- conda: https://conda.anaconda.org/conda-forge/win-64/librsvg-2.58.4-h5ce5fed_2.conda + sha256: dded6c84053485ed26088215e2b850a81d2995b0637a6e984521c786a749bc5b + md5: 2ef0210889174157f26990bd3e22deb7 depends: - - __glibc >=2.17,<3.0.a0 - - cairo >=1.18.0,<2.0a0 - - freetype >=2.12.1,<3.0a0 + - cairo >=1.18.2,<2.0a0 - gdk-pixbuf >=2.42.12,<3.0a0 - - harfbuzz >=9.0.0,<10.0a0 - - libgcc >=13 - - libglib >=2.80.3,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 - - libxml2 >=2.12.7,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libxml2 >=2.13.5,<3.0a0 - pango >=1.54.0,<2.0a0 - constrains: - - __glibc >=2.17 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.42.34433 + arch: x86_64 + platform: win license: LGPL-2.1-or-later - size: 6390511 - timestamp: 1726227212382 -- kind: conda - name: libsanitizer - version: 13.3.0 - build: ha58e236_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-13.3.0-ha58e236_1.conda - sha256: 6892c7e723dbfb3a7e65c9c21ad7396dee5c73fd988e039045ca96145632ee71 - md5: ed8a2074f0afb09450a009e02de65e3c - depends: - - libgcc >=13.3.0 - - libstdcxx >=13.3.0 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 4105930 - timestamp: 1724802022367 -- kind: conda - name: libsanitizer - version: 13.3.0 - build: heb74ff8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-13.3.0-heb74ff8_1.conda + size: 3877009 + timestamp: 1734902835341 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsanitizer-13.3.0-heb74ff8_1.conda sha256: c86d130f0a3099e46ff51aa7ffaab73cb44fc420d27a96076aab3b9a326fc137 md5: c4cb22f270f501f5c59a122dc2adf20a depends: - libgcc >=13.3.0 - libstdcxx >=13.3.0 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 4133922 timestamp: 1724801171589 -- kind: conda - name: libselinux-cos6-x86_64 - version: 2.0.94 - build: h9b0a68f_1105 - build_number: 1105 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libselinux-cos6-x86_64-2.0.94-h9b0a68f_1105.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsanitizer-13.3.0-ha58e236_1.conda + sha256: 6892c7e723dbfb3a7e65c9c21ad7396dee5c73fd988e039045ca96145632ee71 + md5: ed8a2074f0afb09450a009e02de65e3c + depends: + - libgcc >=13.3.0 + - libstdcxx >=13.3.0 + arch: aarch64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 4105930 + timestamp: 1724802022367 +- conda: https://conda.anaconda.org/conda-forge/noarch/libselinux-cos6-x86_64-2.0.94-h9b0a68f_1105.tar.bz2 sha256: 8b8094b66b4551f44001becc23c67a3b1da4fce588a3670f16266eec5dcdd41b md5: 99ffb774b18de97d6a934da3bec724a1 depends: @@ -14517,14 +10883,7 @@ packages: license_family: Public-Domain size: 62600 timestamp: 1627481614893 -- kind: conda - name: libselinux-cos7-aarch64 - version: '2.5' - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libselinux-cos7-aarch64-2.5-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/libselinux-cos7-aarch64-2.5-ha675448_1106.tar.bz2 sha256: e03d71ad61215337984cfc94c7f879eeb7f84b9e5c744be616e9c16620b47f43 md5: 8ccebbf0b5720b707b755bc0c7148b7d depends: @@ -14534,14 +10893,7 @@ packages: license_family: Public-Domain size: 100583 timestamp: 1726578569567 -- kind: conda - name: libsepol-cos6-x86_64 - version: 2.0.41 - build: h9b0a68f_1105 - build_number: 1105 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libsepol-cos6-x86_64-2.0.41-h9b0a68f_1105.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/libsepol-cos6-x86_64-2.0.41-h9b0a68f_1105.tar.bz2 sha256: 4c51d278f7db127692936ef7a68c13ecd22798484ffe1c03af3342685f2d7ffe md5: 774fcdf9815077e7cde4e89c93ff0594 depends: @@ -14550,14 +10902,7 @@ packages: license_family: LGPL size: 116764 timestamp: 1627479932322 -- kind: conda - name: libsepol-cos7-aarch64 - version: '2.5' - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libsepol-cos7-aarch64-2.5-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/libsepol-cos7-aarch64-2.5-ha675448_1106.tar.bz2 sha256: 3fc531308ba36824bc482d92705666318a82b006a2a347e72b76742335fa54d7 md5: ac284710bb5b5ac30f58e0543dddaf5b depends: @@ -14566,250 +10911,140 @@ packages: license_family: LGPL size: 284363 timestamp: 1726576811370 -- kind: conda - name: libsolv - version: 0.7.30 - build: h3509ff9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsolv-0.7.30-h3509ff9_0.conda - sha256: 1dddbde791efdfc34c8fefa74dc2f910eac9cf87bf37ee6c3c9132eb96a0e7d4 - md5: 02539b77d25aa4f65b20246549e256c3 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.3.1,<2.0a0 - license: BSD-3-Clause - license_family: BSD - size: 470810 - timestamp: 1720790097030 -- kind: conda - name: libsolv - version: 0.7.30 - build: h62756fc_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsolv-0.7.30-h62756fc_0.conda - sha256: 1360b034a6dfe9dd800f5a5569c5013558f128b2b8ee90f90c37239bf266d6fc - md5: 3313c18870220c75fdd8374406ef7491 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.3.1,<2.0a0 - license: BSD-3-Clause - license_family: BSD - size: 474705 - timestamp: 1720790111161 -- kind: conda - name: libsolv - version: 0.7.30 - build: h69d5d9b_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libsolv-0.7.30-h69d5d9b_0.conda - sha256: d0c8a8a448dc8b01aecc023b8e6a26f8cdd03f04263ca0a282a057d636b47b3c - md5: 8f8fd9f1740c8cb7dcfebf1a1ed7e678 - depends: - - __osx >=10.13 - - libcxx >=16 - - libzlib >=1.3.1,<2.0a0 - license: BSD-3-Clause - license_family: BSD - size: 415636 - timestamp: 1720790194490 -- kind: conda - name: libsolv - version: 0.7.30 - build: h6c9b7f8_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsolv-0.7.30-h6c9b7f8_0.conda - sha256: e5ffda8a71a334edff7af4f194aa6c72df2f0763321250270f9f68dfc8eaf439 - md5: a5795a7ca73c9c99f112abce7864b500 - depends: - - __osx >=11.0 - - libcxx >=16 - - libzlib >=1.3.1,<2.0a0 - license: BSD-3-Clause - license_family: BSD - size: 387085 - timestamp: 1720790391931 -- kind: conda - name: libsolv - version: 0.7.30 - build: hbb528cf_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libsolv-0.7.30-hbb528cf_0.conda - sha256: 9697652adc0cef5a7f284fb59bf1263c8338fd8932f5817be9f369b985981aa7 - md5: 8394b4531cef34f46297f73286a35a39 - depends: - - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: BSD-3-Clause - license_family: BSD - size: 429121 - timestamp: 1720790579319 -- kind: conda - name: libspnav - version: '1.1' - build: h4ab18f5_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libspnav-1.1-h4ab18f5_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libspnav-1.1-h4ab18f5_2.conda sha256: f1a8e35164ffb686fa08794c655b7793e2f15fed2b7c1b27c2e7a7e86d5081f8 md5: e2b57c40774ddd61f112d66d8323b157 depends: - libgcc-ng >=12 - xorg-libx11 >=1.8.4,<2.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 92594 timestamp: 1716963514988 -- kind: conda - name: libspnav - version: '1.1' - build: h68df207_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libspnav-1.1-h68df207_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libspnav-1.1-h68df207_2.conda sha256: b59985c397e0b8cfbc1fa5add725a2e21dc8d0603ce3d98130290053ff2e0817 md5: b7b0510def0c00c6911f757c4553cc54 depends: - libgcc-ng >=12 - xorg-libx11 >=1.8.4,<2.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 76492 timestamp: 1716963604586 -- kind: conda - name: libsqlite - version: 3.47.0 - build: h2466b09_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.47.0-h2466b09_1.conda - sha256: 3342d6fe787f5830f7e8466d9c65c914bfd8d67220fb5673041b338cbba47afe - md5: 5b1f36012cc3d09c4eb9f24ad0e2c379 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.2-hee588c1_0.conda + sha256: 48af21ebc2cbf358976f1e0f4a0ab9e91dfc83d0ef337cf3837c6f5bc22fb352 + md5: b58da17db24b6e08bcbf8fed2fb8c915 depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: Unlicense - size: 892175 - timestamp: 1730208431651 -- kind: conda - name: libsqlite - version: 3.47.0 - build: h2f8c449_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.47.0-h2f8c449_1.conda - sha256: a0f7381c867898a45018b1e5cf1aca68659d292d58252e8f489a4270b010fed8 - md5: af445c495253a871c3d809e1199bb12b + size: 873551 + timestamp: 1733761824646 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.2-h5eb1b54_0.conda + sha256: 885a27fa84a5a73ed9779168c02b6c386e2fc7a53f0566b32a09ceca146b42b4 + md5: d4bf59f8783a4a66c0aec568f6de3ff4 depends: - - __osx >=10.13 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: Unlicense - size: 915300 - timestamp: 1730208101739 -- kind: conda - name: libsqlite - version: 3.47.0 - build: hadc24fc_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libsqlite-3.47.0-hadc24fc_1.conda - sha256: 8a9aadf996a2399f65b679c6e7f29139d5059f699c63e6d7b50e20db10c00508 - md5: b6f02b52a174e612e89548f4663ce56a + size: 1042182 + timestamp: 1733761913736 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libsqlite-3.47.2-hdb6dae5_0.conda + sha256: 4d5e188d921f93c97ce172fc8c4341e8171670ec98d76f9961f65f6306fcda77 + md5: 44d9799fda97eb34f6d88ac1e3eb0ea6 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=10.13 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: osx license: Unlicense - size: 875349 - timestamp: 1730208050020 -- kind: conda - name: libsqlite - version: 3.47.0 - build: hbaaea75_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.0-hbaaea75_1.conda - sha256: 5a96caa566c11e5a5ebdcdb86a0759a7fb27d3c5f42e6a0fd0d6023c1e935d9e - md5: 07a14fbe439eef078cc479deca321161 + size: 923167 + timestamp: 1733761860127 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libsqlite-3.47.2-h3f77e49_0.conda + sha256: f192f3c8973de9ec4c214990715f13b781965247a5cedf9162e7f9e699cfc3c4 + md5: 122d6f29470f1a991e85608e77e56a8a depends: - __osx >=11.0 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 850553 + timestamp: 1733762057506 +- conda: https://conda.anaconda.org/conda-forge/win-64/libsqlite-3.47.2-h67fdade_0.conda + sha256: ecfc0182c3b2e63c870581be1fa0e4dbdfec70d2011cb4f5bde416ece26c41df + md5: ff00095330e0d35a16bd3bdbd1a2d3e7 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: Unlicense - size: 837683 - timestamp: 1730208293578 -- kind: conda - name: libsqlite - version: 3.47.0 - build: hc4a20ef_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libsqlite-3.47.0-hc4a20ef_1.conda - sha256: 73e143fdb966b61cd25ab804d416d87dfce43ac684e0fac3ad8b1450796331ab - md5: a6b185aac10d08028340858f77231b23 + size: 891292 + timestamp: 1733762116902 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda + sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 + md5: be2de152d8073ef1c01b7728475f2fe7 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - license: Unlicense - size: 1041855 - timestamp: 1730208187962 -- kind: conda - name: libssh2 - version: 1.11.1 - build: h3dc7d44_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-h3dc7d44_0.conda + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 304278 + timestamp: 1732349402869 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda + sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 + md5: aeffe03c0e598f015aab08dbb04f6ee4 + depends: + - libgcc >=13 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 311577 + timestamp: 1732349396421 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libssh2-1.11.1-h3dc7d44_0.conda sha256: ef2a81c9a15080b996a37f0e1712881da90a710b234e63d8539d69892353de90 md5: b1caec4561059e43a5d056684c5a2de0 depends: - __osx >=10.13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD size: 283874 timestamp: 1732349525684 -- kind: conda - name: libssh2 - version: 1.11.1 - build: h9cc3647_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libssh2-1.11.1-h9cc3647_0.conda sha256: f7047c6ed44bcaeb04432e8c74da87591940d091b0a3940c0d884b7faa8062e9 md5: ddc7194676c285513706e5fc64f214d7 depends: - libzlib >=1.3.1,<2.0a0 - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 279028 timestamp: 1732349599461 -- kind: conda - name: libssh2 - version: 1.11.1 - build: ha41c0db_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libssh2-1.11.1-ha41c0db_0.conda - sha256: 40f2af5357457546bd11cd64a3b9043d83865180f65ce602515c35f353be35c7 - md5: aeffe03c0e598f015aab08dbb04f6ee4 - depends: - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - license: BSD-3-Clause - license_family: BSD - size: 311577 - timestamp: 1732349396421 -- kind: conda - name: libssh2 - version: 1.11.1 - build: he619c9f_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-he619c9f_0.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/libssh2-1.11.1-he619c9f_0.conda sha256: 4b3256bd2b4e4b3183005d3bd8826d651eccd1a4740b70625afa2b7e7123d191 md5: af0cbf037dd614c34399b3b3e568c557 depends: @@ -14818,65 +11053,35 @@ packages: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD size: 291889 timestamp: 1732349796504 -- kind: conda - name: libssh2 - version: 1.11.1 - build: hf672d98_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libssh2-1.11.1-hf672d98_0.conda - sha256: 0407ac9fda2bb67e11e357066eff144c845801d00b5f664efbc48813af1e7bb9 - md5: be2de152d8073ef1c01b7728475f2fe7 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda + sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 + md5: 234a5554c53625688d51062645337328 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib >=1.3.1,<2.0a0 - - openssl >=3.4.0,<4.0a0 - license: BSD-3-Clause - license_family: BSD - size: 304278 - timestamp: 1732349402869 -- kind: conda - name: libstdcxx - version: 14.2.0 - build: h3f4de04_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda + - libgcc 14.2.0 h77fa898_1 + arch: x86_64 + platform: linux + license: GPL-3.0-only WITH GCC-exception-3.1 + license_family: GPL + size: 3893695 + timestamp: 1729027746910 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-14.2.0-h3f4de04_1.conda sha256: 519556d2c93f1b487091ce046d62e762286177f4a670ec10e16005177d0bcab3 md5: 37f489acd39e22b623d2d1e5ac6d195c depends: - libgcc 14.2.0 he277a41_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 3816794 timestamp: 1729089463404 -- kind: conda - name: libstdcxx - version: 14.2.0 - build: hc0a3c3a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-14.2.0-hc0a3c3a_1.conda - sha256: 4661af0eb9bdcbb5fb33e5d0023b001ad4be828fccdcc56500059d56f9869462 - md5: 234a5554c53625688d51062645337328 - depends: - - libgcc 14.2.0 h77fa898_1 - license: GPL-3.0-only WITH GCC-exception-3.1 - license_family: GPL - size: 3893695 - timestamp: 1729027746910 -- kind: conda - name: libstdcxx-devel_linux-64 - version: 13.3.0 - build: h84ea5a7_101 - build_number: 101 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-13.3.0-h84ea5a7_101.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-64-13.3.0-h84ea5a7_101.conda sha256: 0a9226c1b994f996229ffb54fa40d608cd4e4b48e8dc73a66134bea8ce949412 md5: 29b5a4ed4613fa81a07c21045e3f5bf6 depends: @@ -14885,14 +11090,7 @@ packages: license_family: GPL size: 14074676 timestamp: 1724801075448 -- kind: conda - name: libstdcxx-devel_linux-aarch64 - version: 13.3.0 - build: h0c07274_101 - build_number: 101 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-13.3.0-h0c07274_101.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/libstdcxx-devel_linux-aarch64-13.3.0-h0c07274_101.conda sha256: a2cc4cc3ef5d470c25a872a05485cf322a525950f9e1472e22cc97030d0858b1 md5: a7fdc5d75d643dd46f4e3d6092a13036 depends: @@ -14901,43 +11099,29 @@ packages: license_family: GPL size: 12182186 timestamp: 1724801911954 -- kind: conda - name: libstdcxx-ng - version: 14.2.0 - build: h4852527_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libstdcxx-ng-14.2.0-h4852527_1.conda sha256: 25bb30b827d4f6d6f0522cc0579e431695503822f144043b93c50237017fffd8 md5: 8371ac6457591af2cf6159439c1fd051 depends: - libstdcxx 14.2.0 hc0a3c3a_1 + arch: x86_64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54105 timestamp: 1729027780628 -- kind: conda - name: libstdcxx-ng - version: 14.2.0 - build: hf1166c9_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libstdcxx-ng-14.2.0-hf1166c9_1.conda sha256: 9f97461bd55a2745a7a0941f3502a047f15bfe7bb2952dc7fb204b3202f866fd md5: 0e75771b8a03afae5a2c6ce71bc733f5 depends: - libstdcxx 14.2.0 h3f4de04_1 + arch: aarch64 + platform: linux license: GPL-3.0-only WITH GCC-exception-3.1 license_family: GPL size: 54133 timestamp: 1729089498541 -- kind: conda - name: libtheora - version: 1.1.1 - build: h4ab18f5_1006 - build_number: 1006 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtheora-1.1.1-h4ab18f5_1006.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtheora-1.1.1-h4ab18f5_1006.conda sha256: 50c8cd416ac8425e415264de167b41ae8442de22a91098dfdd993ddbf9f13067 md5: 553281a034e9cf8693c9df49f6c78ea1 depends: @@ -14946,17 +11130,13 @@ packages: - libogg >=1.3.5,<1.4.0a0 - libvorbis 1.3.* - libvorbis >=1.3.7,<1.4.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 328924 timestamp: 1719667859099 -- kind: conda - name: libtheora - version: 1.1.1 - build: h68df207_1006 - build_number: 1006 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtheora-1.1.1-h68df207_1006.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtheora-1.1.1-h68df207_1006.conda sha256: b5a46b5f2cf1ab6734dcab65f370c6b95f1d62ed27d9d30fe06a828bcb9b239b md5: 5786518d6e1eff2225fe56c0e5d573d8 depends: @@ -14965,17 +11145,28 @@ packages: - libogg >=1.3.5,<1.4.0a0 - libvorbis 1.3.* - libvorbis >=1.3.7,<1.4.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 335103 timestamp: 1719667812650 -- kind: conda - name: libtheora - version: 1.1.1 - build: h99b78c6_1006 - build_number: 1006 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtheora-1.1.1-h99b78c6_1006.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/libtheora-1.1.1-hfdf4475_1006.conda + sha256: 72421637a05c2e99120d29a00951190644a4439c8155df9e8a8340983934db13 + md5: fc8c11f9f4edda643302e28aa0999b90 + depends: + - __osx >=10.13 + - libogg 1.3.* + - libogg >=1.3.5,<1.4.0a0 + - libvorbis 1.3.* + - libvorbis >=1.3.7,<1.4.0a0 + arch: x86_64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 289472 + timestamp: 1719667988764 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtheora-1.1.1-h99b78c6_1006.conda sha256: 05d8f9a4ae6669ebf8d69ec7f62c47b197b885ff989641d8a8043a1159d50c22 md5: 4b0af7570b8af42ac6796da8777589d1 depends: @@ -14984,17 +11175,13 @@ packages: - libogg >=1.3.5,<1.4.0a0 - libvorbis 1.3.* - libvorbis >=1.3.7,<1.4.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 282764 timestamp: 1719667898064 -- kind: conda - name: libtheora - version: 1.1.1 - build: hc70643c_1006 - build_number: 1006 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libtheora-1.1.1-hc70643c_1006.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/libtheora-1.1.1-hc70643c_1006.conda sha256: 7c4f8dca38604fa17d54061ff03f3e79aff78537a12e1eaf3b4a01be743b5633 md5: 90cdca71edde0b3e549e8cbb43308208 depends: @@ -15003,248 +11190,184 @@ packages: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD size: 160440 timestamp: 1719668116346 -- kind: conda - name: libtheora - version: 1.1.1 - build: hfdf4475_1006 - build_number: 1006 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libtheora-1.1.1-hfdf4475_1006.conda - sha256: 72421637a05c2e99120d29a00951190644a4439c8155df9e8a8340983934db13 - md5: fc8c11f9f4edda643302e28aa0999b90 - depends: - - __osx >=10.13 - - libogg 1.3.* - - libogg >=1.3.5,<1.4.0a0 - - libvorbis 1.3.* - - libvorbis >=1.3.7,<1.4.0a0 - license: BSD-3-Clause - license_family: BSD - size: 289472 - timestamp: 1719667988764 -- kind: conda - name: libtiff - version: 4.7.0 - build: h583c2ba_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-h583c2ba_1.conda - sha256: 4d58c695dfed6f308d0fd3ff552e0078bb98bc0be2ea0bf55820eb6e86fa5355 - md5: 4b78bcdcc8780cede8b3d090deba874d +- conda: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-hd9ff511_3.conda + sha256: b224e16b88d76ea95e4af56e2bc638c603bd26a770b98d117d04541d3aafa002 + md5: 0ea6510969e1296cc19966fad481f6de depends: - - __osx >=10.13 + - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - - libcxx >=17 - - libdeflate >=1.22,<1.23.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: HPND - size: 395980 - timestamp: 1728232302162 -- kind: conda - name: libtiff - version: 4.7.0 - build: he137b08_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libtiff-4.7.0-he137b08_1.conda - sha256: 9890121db85f6ef463fe12eb04ef1471176e3ef3b5e2d62e8d6dac713df00df4 - md5: 63872517c98aa305da58a757c443698e + size: 428173 + timestamp: 1734398813264 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-h88f7998_3.conda + sha256: 5888bd66ba7606ae8596856c7dac800940ecad0aed77d6aa37db69d434c81cf0 + md5: 36a0ea4a173338c8725dc0807e99cf22 depends: - - __glibc >=2.17,<3.0.a0 - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.22,<1.23.0a0 + - libdeflate >=1.23,<1.24.0a0 - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 - libstdcxx >=13 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: HPND - size: 428156 - timestamp: 1728232228989 -- kind: conda - name: libtiff - version: 4.7.0 - build: hec21d91_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libtiff-4.7.0-hec21d91_1.conda - sha256: 14ecb9e129b1b5ffd6d4bee48de95cd2cd0973c712e1b965d3ef977cca23936d - md5: 1f80061f5ba6956fcdc381f34618cd8d + size: 464699 + timestamp: 1734398752249 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libtiff-4.7.0-hb77a491_3.conda + sha256: bb50df7cfc1acb11eae63c5f4fdc251d381cda96bf02c086c3202c83a5200032 + md5: 6f2f9df7b093d6b33bc0c334acc7d2d9 depends: + - __osx >=10.13 - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.22,<1.23.0a0 - - libgcc >=13 + - libcxx >=18 + - libdeflate >=1.23,<1.24.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 - - libstdcxx >=13 + - liblzma >=5.6.3,<6.0a0 - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: osx license: HPND - size: 464938 - timestamp: 1728232266969 -- kind: conda - name: libtiff - version: 4.7.0 - build: hfc51747_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-hfc51747_1.conda - sha256: 902cb9f7f54d17dcfd54ce050b1ce2bc944b9bbd1748913342c2ea1e1140f8bb - md5: eac317ed1cc6b9c0af0c27297e364665 + size: 400099 + timestamp: 1734398943635 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-h551f018_3.conda + sha256: 91417846157e04992801438a496b151df89604b2e7c6775d6f701fcd0cbed5ae + md5: a5d084a957563e614ec0c0196d890654 depends: + - __osx >=11.0 - lerc >=4.0.0,<5.0a0 - - libdeflate >=1.22,<1.23.0a0 + - libcxx >=18 + - libdeflate >=1.23,<1.24.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 + - libwebp-base >=1.4.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - - xz >=5.2.6,<6.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx license: HPND - size: 978865 - timestamp: 1728232594877 -- kind: conda - name: libtiff - version: 4.7.0 - build: hfce79cd_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libtiff-4.7.0-hfce79cd_1.conda - sha256: 97ba24c74750b6e731b3fe0d2a751cda6148b4937d2cc3f72d43bf7b3885c39d - md5: b9abf45f7c64caf3303725f1aa0e9a4d + size: 370600 + timestamp: 1734398863052 +- conda: https://conda.anaconda.org/conda-forge/win-64/libtiff-4.7.0-h797046b_3.conda + sha256: c363a8baba4ce12b8f01f0ab74fe8b0dc83facd89c6604f4a191084923682768 + md5: defed79ff7a9164ad40320e3f116a138 depends: - - __osx >=11.0 - lerc >=4.0.0,<5.0a0 - - libcxx >=17 - - libdeflate >=1.22,<1.23.0a0 + - libdeflate >=1.23,<1.24.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 - - libwebp-base >=1.4.0,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: win license: HPND - size: 366323 - timestamp: 1728232400072 -- kind: conda - name: libuuid - version: 2.38.1 - build: h0b41bf4_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda + size: 978878 + timestamp: 1734399004259 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuuid-2.38.1-h0b41bf4_0.conda sha256: 787eb542f055a2b3de553614b25f09eefb0a0931b0c87dbcce6efdfd92f04f18 md5: 40b61aab5c7ba9ff276c41cfffe6b80b depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 33601 timestamp: 1680112270483 -- kind: conda - name: libuuid - version: 2.38.1 - build: hb4cce97_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuuid-2.38.1-hb4cce97_0.conda sha256: 616277b0c5f7616c2cdf36f6c316ea3f9aa5bb35f2d4476a349ab58b9b91675f md5: 000e30b09db0b7c775b21695dff30969 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 35720 timestamp: 1680113474501 -- kind: conda - name: libuv - version: 1.49.2 - build: h2466b09_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libuv-1.49.2-h2466b09_0.conda - sha256: d598c536f0e432901ba8b489564799f6f570471b2a3ce9b76e152ee0a961a380 - md5: 30ebb43533efcdc8c357ef409bad86b6 - depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: MIT - license_family: MIT - size: 290376 - timestamp: 1729322844056 -- kind: conda - name: libuv - version: 1.49.2 - build: h7ab814d_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda - sha256: 0e5176af1e788ad5006cf261c4ea5a288a935fda48993b0240ddd2e562dc3d02 - md5: 4bc348e3a1a74d20a3f9beb866d75e0a +- conda: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda + sha256: a35cd81cd1a9add11024097da83cc06b0aae83186fe4124b77710876f37d8f31 + md5: 070e3c9ddab77e38799d5c30b109c633 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 410500 - timestamp: 1729322654121 -- kind: conda - name: libuv - version: 1.49.2 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda + size: 884647 + timestamp: 1729322566955 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libuv-1.49.2-h86ecc28_0.conda sha256: adf4eca89339ac7780f2394e7e6699be81259eb91f79f9d9fdf2c1bc6b26f210 md5: 1899e1ec2be63386c41c4db31d3056af depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 627484 - timestamp: 1729322575379 -- kind: conda - name: libuv - version: 1.49.2 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libuv-1.49.2-hb9d3cd8_0.conda - sha256: a35cd81cd1a9add11024097da83cc06b0aae83186fe4124b77710876f37d8f31 - md5: 070e3c9ddab77e38799d5c30b109c633 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - size: 884647 - timestamp: 1729322566955 -- kind: conda - name: libuv - version: 1.49.2 - build: hd79239c_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.49.2-hd79239c_0.conda + size: 627484 + timestamp: 1729322575379 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libuv-1.49.2-hd79239c_0.conda sha256: a2083200357513f932b44e88858a50a638d1a751a050bc62b2cbee2ac54f102c md5: ec36c2438046ca8d2b4368d62dd5c38c depends: - __osx >=11.0 + arch: x86_64 + platform: osx license: MIT license_family: MIT size: 413607 timestamp: 1729322686826 -- kind: conda - name: libva - version: 2.22.0 - build: h8a09558_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libva-2.22.0-h8a09558_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libuv-1.49.2-h7ab814d_0.conda + sha256: 0e5176af1e788ad5006cf261c4ea5a288a935fda48993b0240ddd2e562dc3d02 + md5: 4bc348e3a1a74d20a3f9beb866d75e0a + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 410500 + timestamp: 1729322654121 +- conda: https://conda.anaconda.org/conda-forge/win-64/libuv-1.49.2-h2466b09_0.conda + sha256: d598c536f0e432901ba8b489564799f6f570471b2a3ce9b76e152ee0a961a380 + md5: 30ebb43533efcdc8c357ef409bad86b6 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win + license: MIT + license_family: MIT + size: 290376 + timestamp: 1729322844056 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libva-2.22.0-h8a09558_1.conda sha256: 0bd81019e02cce8d9d4077c96b82ca03c9b0ece67831c7437f977ca1f5a924a3 md5: 139262125a3eac8ff6eef898598745a3 depends: @@ -15260,218 +11383,179 @@ packages: - xorg-libx11 >=1.8.9,<2.0a0 - xorg-libxext >=1.3.4,<2.0a0 - xorg-libxfixes + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 217708 timestamp: 1726828458441 -- kind: conda - name: libvorbis - version: 1.3.7 - build: h01db608_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h01db608_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 + sha256: 53080d72388a57b3c31ad5805c93a7328e46ff22fab7c44ad2a86d712740af33 + md5: 309dec04b70a3cc0f1e84a4013683bc0 + depends: + - libgcc-ng >=9.3.0 + - libogg >=1.3.4,<1.4.0a0 + - libstdcxx-ng >=9.3.0 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 286280 + timestamp: 1610609811627 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvorbis-1.3.7-h01db608_0.tar.bz2 sha256: 1ade4727be5c52b287001b8094d02af66342dfe0ba13ef69222aaaf2e9be4342 md5: c2863ff72c6d8a59054f8b9102c206e9 depends: - libgcc-ng >=9.3.0 - libogg >=1.3.4,<1.4.0a0 - libstdcxx-ng >=9.3.0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 292082 timestamp: 1610616294416 -- kind: conda - name: libvorbis - version: 1.3.7 - build: h046ec9c_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libvorbis-1.3.7-h046ec9c_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libvorbis-1.3.7-h046ec9c_0.tar.bz2 sha256: fbcce1005efcd616e452dea07fe34893d8dd13c65628e74920eeb68ac549faf7 md5: fbbda1fede0aadaa252f6919148c4ce1 depends: - libcxx >=11.0.0 - libogg >=1.3.4,<1.4.0a0 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD size: 254208 timestamp: 1610609857389 -- kind: conda - name: libvorbis - version: 1.3.7 - build: h9c3ff4c_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libvorbis-1.3.7-h9c3ff4c_0.tar.bz2 - sha256: 53080d72388a57b3c31ad5805c93a7328e46ff22fab7c44ad2a86d712740af33 - md5: 309dec04b70a3cc0f1e84a4013683bc0 - depends: - - libgcc-ng >=9.3.0 - - libogg >=1.3.4,<1.4.0a0 - - libstdcxx-ng >=9.3.0 - license: BSD-3-Clause - license_family: BSD - size: 286280 - timestamp: 1610609811627 -- kind: conda - name: libvorbis - version: 1.3.7 - build: h9f76cd9_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h9f76cd9_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvorbis-1.3.7-h9f76cd9_0.tar.bz2 sha256: 60457217e20d8b24a8390c81338a8fa69c8656b440c067cd82f802a09da93cb9 md5: 92a1a88d1a1d468c19d9e1659ac8d3df depends: - libcxx >=11.0.0 - libogg >=1.3.4,<1.4.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 254839 timestamp: 1610609991029 -- kind: conda - name: libvpx - version: 1.14.1 - build: h0a1ffab_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libvpx-1.14.1-h0a1ffab_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libvpx-1.14.1-hac33072_0.conda + sha256: e7d2daf409c807be48310fcc8924e481b62988143f582eb3a58c5523a6763b13 + md5: cde393f461e0c169d9ffb2fc70f81c33 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 1022466 + timestamp: 1717859935011 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libvpx-1.14.1-h0a1ffab_0.conda sha256: 918493354f78cb3bb2c3d91264afbcb312b2afe287237e7d1c85ee7e96d15b47 md5: 3cb63f822a49e4c406639ebf8b5d87d7 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 1211700 timestamp: 1717859955539 -- kind: conda - name: libvpx - version: 1.14.1 - build: h7bae524_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libvpx-1.14.1-h7bae524_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/libvpx-1.14.1-hf036a51_0.conda + sha256: 47e70e76988c11de97d539794fd4b03db69b75289ac02cdc35ae5a595ffcd973 + md5: 9b8744a702ffb1738191e094e6eb67dc + depends: + - __osx >=10.13 + - libcxx >=16 + arch: x86_64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 1297054 + timestamp: 1717860051058 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libvpx-1.14.1-h7bae524_0.conda sha256: 5d6458b5395cba0804846f156574aa8a34eef6d5f05d39e9932ddbb4215f8bd0 md5: 95bee48afff34f203e4828444c2b2ae9 depends: - __osx >=11.0 - libcxx >=16 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 1178981 timestamp: 1717860096742 -- kind: conda - name: libvpx - version: 1.14.1 - build: hac33072_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libvpx-1.14.1-hac33072_0.conda - sha256: e7d2daf409c807be48310fcc8924e481b62988143f582eb3a58c5523a6763b13 - md5: cde393f461e0c169d9ffb2fc70f81c33 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.5.0-h851e524_0.conda + sha256: c45283fd3e90df5f0bd3dbcd31f59cdd2b001d424cf30a07223655413b158eaf + md5: 63f790534398730f59e1b899c3644d4a depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 1022466 - timestamp: 1717859935011 -- kind: conda - name: libvpx - version: 1.14.1 - build: hf036a51_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libvpx-1.14.1-hf036a51_0.conda - sha256: 47e70e76988c11de97d539794fd4b03db69b75289ac02cdc35ae5a595ffcd973 - md5: 9b8744a702ffb1738191e094e6eb67dc + size: 429973 + timestamp: 1734777489810 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.5.0-h0886dbf_0.conda + sha256: b3d881a0ae08bb07fff7fa8ead506c8d2e0388733182fe4f216f3ec5d61ffcf0 + md5: 95ef4a689b8cc1b7e18b53784d88f96b depends: - - __osx >=10.13 - - libcxx >=16 + - libgcc >=13 + constrains: + - libwebp 1.5.0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 1297054 - timestamp: 1717860051058 -- kind: conda - name: libwebp-base - version: 1.4.0 - build: h10d778d_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.4.0-h10d778d_0.conda - sha256: 7bafd8f4c637778cd0aa390bf3a894feef0e1fcf6ea6000c7ffc25c4c5a65538 - md5: b2c0047ea73819d992484faacbbe1c24 + size: 362623 + timestamp: 1734779054659 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libwebp-base-1.5.0-h6cf52b4_0.conda + sha256: 7f110eba04150f1fe5fe297f08fb5b82463eed74d1f068bc67c96637f9c63569 + md5: 5e0cefc99a231ac46ba21e27ae44689f + depends: + - __osx >=10.13 constrains: - - libwebp 1.4.0 + - libwebp 1.5.0 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 355099 - timestamp: 1713200298965 -- kind: conda - name: libwebp-base - version: 1.4.0 - build: h31becfc_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libwebp-base-1.4.0-h31becfc_0.conda - sha256: 10dded60f274e29c573cfacf6e96f5d0fc374ee431250374a44cbd773916ab9d - md5: 5fd7ab3e5f382c70607fbac6335e6e19 + size: 357662 + timestamp: 1734777539822 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.5.0-h2471fea_0.conda + sha256: f8bdb876b4bc8cb5df47c28af29188de8911c3fea4b799a33743500149de3f4a + md5: 569466afeb84f90d5bb88c11cc23d746 depends: - - libgcc-ng >=12 - constrains: - - libwebp 1.4.0 - license: BSD-3-Clause - license_family: BSD - size: 363577 - timestamp: 1713201785160 -- kind: conda - name: libwebp-base - version: 1.4.0 - build: h93a5062_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libwebp-base-1.4.0-h93a5062_0.conda - sha256: 0d4bad713a512d79bfeb4d61821f447afab8b0792aca823f505ce6b195e9fde5 - md5: c0af0edfebe780b19940e94871f1a765 + - __osx >=11.0 constrains: - - libwebp 1.4.0 + - libwebp 1.5.0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 287750 - timestamp: 1713200194013 -- kind: conda - name: libwebp-base - version: 1.4.0 - build: hcfcfb64_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.4.0-hcfcfb64_0.conda - sha256: d0ca51cb1de9192be9a3238e71fbcca5a535619c499c4f4c9b2ed41c14d36770 - md5: abd61d0ab127ec5cd68f62c2969e6f34 + size: 290013 + timestamp: 1734777593617 +- conda: https://conda.anaconda.org/conda-forge/win-64/libwebp-base-1.5.0-h3b0e114_0.conda + sha256: 1d75274614e83a5750b8b94f7bad2fc0564c2312ff407e697d99152ed095576f + md5: 33f7313967072c6e6d8f865f5493c7ae depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 constrains: - - libwebp 1.4.0 + - libwebp 1.5.0 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD - size: 274359 - timestamp: 1713200524021 -- kind: conda - name: libwebp-base - version: 1.4.0 - build: hd590300_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libwebp-base-1.4.0-hd590300_0.conda - sha256: 49bc5f6b1e11cb2babf2a2a731d1a680a5e08a858280876a779dbda06c78c35f - md5: b26e8aa824079e1be0294e7152ca4559 - depends: - - libgcc-ng >=12 - constrains: - - libwebp 1.4.0 - license: BSD-3-Clause - license_family: BSD - size: 438953 - timestamp: 1713199854503 -- kind: conda - name: libx11-common-cos6-x86_64 - version: 1.6.4 - build: h9b0a68f_1105 - build_number: 1105 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libx11-common-cos6-x86_64-1.6.4-h9b0a68f_1105.tar.bz2 + size: 273661 + timestamp: 1734777665516 +- conda: https://conda.anaconda.org/conda-forge/noarch/libx11-common-cos6-x86_64-1.6.4-h9b0a68f_1105.tar.bz2 sha256: 3434d7218322b868c726fee4392ff3d678e0bd68daccafd181f6a1a9193be12a md5: 058d747a8521521a6139776e346e9007 depends: @@ -15480,14 +11564,7 @@ packages: license_family: MIT size: 146903 timestamp: 1627478872834 -- kind: conda - name: libx11-common-cos7-aarch64 - version: 1.6.7 - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libx11-common-cos7-aarch64-1.6.7-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/libx11-common-cos7-aarch64-1.6.7-ha675448_1106.tar.bz2 sha256: 76842ec3742ade0a65beb3526e6ef8d34eb11754651d659b010bcdb0fa57426f md5: 56f8f6bfdf4cde3ed766194c929b1ad5 depends: @@ -15496,14 +11573,7 @@ packages: license_family: MIT size: 148239 timestamp: 1726575499900 -- kind: conda - name: libx11-cos6-x86_64 - version: 1.6.4 - build: h9b0a68f_1105 - build_number: 1105 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libx11-cos6-x86_64-1.6.4-h9b0a68f_1105.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/libx11-cos6-x86_64-1.6.4-h9b0a68f_1105.tar.bz2 sha256: b87edfe71094560b1a50303c0b15415e99061eb7cef6063edc5045276ffc5451 md5: ea2a73c7d4913ce9ec8cc6c50a21c6a9 depends: @@ -15513,14 +11583,7 @@ packages: license_family: MIT size: 752964 timestamp: 1627482280842 -- kind: conda - name: libx11-cos7-aarch64 - version: 1.6.7 - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libx11-cos7-aarch64-1.6.7-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/libx11-cos7-aarch64-1.6.7-ha675448_1106.tar.bz2 sha256: ba0d700a3aed99e3898172855af399e1356b44cb7b146a7f43bdc97098801da6 md5: 5c6e07141a4d9931bea7106472c5423d depends: @@ -15530,14 +11593,7 @@ packages: license_family: MIT size: 739899 timestamp: 1726583073033 -- kind: conda - name: libxau-cos6-x86_64 - version: 1.0.6 - build: h9b0a68f_1105 - build_number: 1105 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libxau-cos6-x86_64-1.0.6-h9b0a68f_1105.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/libxau-cos6-x86_64-1.0.6-h9b0a68f_1105.tar.bz2 sha256: fc228ad0bd6b4a862cd7ff39cf3f475f417d944546ebd7bb8a79ffa38d6065ae md5: 6574f3964f24ff622de05ed50aa6eeaa depends: @@ -15546,14 +11602,7 @@ packages: license_family: MIT size: 20895 timestamp: 1627478063277 -- kind: conda - name: libxau-cos7-aarch64 - version: 1.0.8 - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libxau-cos7-aarch64-1.0.8-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/libxau-cos7-aarch64-1.0.8-ha675448_1106.tar.bz2 sha256: 9cbb3974097793328236afde334c4d2a7991c4059a99214f3d3978929a62b527 md5: 8498a7400df19ded6dac69810b7f6779 depends: @@ -15562,31 +11611,22 @@ packages: license_family: MIT size: 26231 timestamp: 1726575472110 -- kind: conda - name: libxcb - version: '1.16' - build: h013a479_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.16-h013a479_1.conda - sha256: abae56e12a4c62730b899fdfb82628a9ac171c4ce144fc9f34ae024957a82a0e - md5: f0b599acdc82d5bc7e3b105833e7c5c8 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda + sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa + md5: 92ed62436b625154323d40d5f2f11dd7 depends: - - m2w64-gcc-libs - - m2w64-gcc-libs-core + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - pthread-stubs - xorg-libxau >=1.0.11,<2.0a0 - xorg-libxdmcp + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 989459 - timestamp: 1724419883091 -- kind: conda - name: libxcb - version: 1.17.0 - build: h262b8f6_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda + size: 395888 + timestamp: 1727278577118 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcb-1.17.0-h262b8f6_0.conda sha256: 461cab3d5650ac6db73a367de5c8eca50363966e862dcf60181d693236b1ae7b md5: cd14ee5cca2464a425b1dbfc24d90db2 depends: @@ -15594,34 +11634,27 @@ packages: - pthread-stubs - xorg-libxau >=1.0.11,<2.0a0 - xorg-libxdmcp + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 397493 timestamp: 1727280745441 -- kind: conda - name: libxcb - version: 1.17.0 - build: h8a09558_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxcb-1.17.0-h8a09558_0.conda - sha256: 666c0c431b23c6cec6e492840b176dde533d48b7e6fb8883f5071223433776aa - md5: 92ed62436b625154323d40d5f2f11dd7 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.17.0-hf1f96e2_0.conda + sha256: 8896cd5deff6f57d102734f3e672bc17120613647288f9122bec69098e839af7 + md5: bbeca862892e2898bdb45792a61c4afc depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=10.13 - pthread-stubs - xorg-libxau >=1.0.11,<2.0a0 - xorg-libxdmcp + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 395888 - timestamp: 1727278577118 -- kind: conda - name: libxcb - version: 1.17.0 - build: hdb1d25a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda + size: 323770 + timestamp: 1727278927545 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxcb-1.17.0-hdb1d25a_0.conda sha256: bd3816218924b1e43b275863e21a3e13a5db4a6da74cca8e60bc3c213eb62f71 md5: af523aae2eca6dfa1c8eec693f5b9a79 depends: @@ -15629,35 +11662,28 @@ packages: - pthread-stubs - xorg-libxau >=1.0.11,<2.0a0 - xorg-libxdmcp + arch: arm64 + platform: osx license: MIT license_family: MIT size: 323658 timestamp: 1727278733917 -- kind: conda - name: libxcb - version: 1.17.0 - build: hf1f96e2_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libxcb-1.17.0-hf1f96e2_0.conda - sha256: 8896cd5deff6f57d102734f3e672bc17120613647288f9122bec69098e839af7 - md5: bbeca862892e2898bdb45792a61c4afc +- conda: https://conda.anaconda.org/conda-forge/win-64/libxcb-1.16-h013a479_1.conda + sha256: abae56e12a4c62730b899fdfb82628a9ac171c4ce144fc9f34ae024957a82a0e + md5: f0b599acdc82d5bc7e3b105833e7c5c8 depends: - - __osx >=10.13 + - m2w64-gcc-libs + - m2w64-gcc-libs-core - pthread-stubs - xorg-libxau >=1.0.11,<2.0a0 - xorg-libxdmcp + arch: x86_64 + platform: win license: MIT license_family: MIT - size: 323770 - timestamp: 1727278927545 -- kind: conda - name: libxcb-cos6-x86_64 - version: '1.12' - build: h9b0a68f_1105 - build_number: 1105 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libxcb-cos6-x86_64-1.12-h9b0a68f_1105.tar.bz2 + size: 989459 + timestamp: 1724419883091 +- conda: https://conda.anaconda.org/conda-forge/noarch/libxcb-cos6-x86_64-1.12-h9b0a68f_1105.tar.bz2 sha256: 3d2ee9ac9aa8246adfb805e34dc43341627fd921f37095604915ec48d4088aa0 md5: 657f56a7df04d422c7da5d20f32b1d91 depends: @@ -15666,14 +11692,7 @@ packages: license_family: MIT size: 204518 timestamp: 1627477525951 -- kind: conda - name: libxcb-cos7-aarch64 - version: '1.13' - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libxcb-cos7-aarch64-1.13-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/libxcb-cos7-aarch64-1.13-ha675448_1106.tar.bz2 sha256: f2c0ab908d1922f51f0d7e5fabdc4a12b0d15fb8f992e23928ffb25bd772c3d3 md5: 75aee5c5c899473c267e64301ab259f8 depends: @@ -15682,42 +11701,27 @@ packages: license_family: MIT size: 246027 timestamp: 1726576807979 -- kind: conda - name: libxcrypt - version: 4.4.36 - build: h31becfc_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda - sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f - md5: b4df5d7d4b63579d081fd3a4cf99740e - depends: - - libgcc-ng >=12 - license: LGPL-2.1-or-later - size: 114269 - timestamp: 1702724369203 -- kind: conda - name: libxcrypt - version: 4.4.36 - build: hd590300_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxcrypt-4.4.36-hd590300_1.conda sha256: 6ae68e0b86423ef188196fff6207ed0c8195dd84273cb5623b85aa08033a410c md5: 5aa797f8787fe7a17d1b0821485b5adc depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later size: 100393 timestamp: 1702724383534 -- kind: conda - name: libxdamage-cos6-x86_64 - version: 1.1.3 - build: h9b0a68f_1105 - build_number: 1105 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libxdamage-cos6-x86_64-1.1.3-h9b0a68f_1105.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxcrypt-4.4.36-h31becfc_1.conda + sha256: 6b46c397644091b8a26a3048636d10b989b1bf266d4be5e9474bf763f828f41f + md5: b4df5d7d4b63579d081fd3a4cf99740e + depends: + - libgcc-ng >=12 + arch: aarch64 + platform: linux + license: LGPL-2.1-or-later + size: 114269 + timestamp: 1702724369203 +- conda: https://conda.anaconda.org/conda-forge/noarch/libxdamage-cos6-x86_64-1.1.3-h9b0a68f_1105.tar.bz2 sha256: badde3e0e29d9cd791719b7411b78a6a83fdc31f9c8613d9ce74919186cf99bf md5: 49ffcbf26a66e5d070b87a7ebb414e99 depends: @@ -15726,14 +11730,7 @@ packages: license_family: MIT size: 15356 timestamp: 1627479666414 -- kind: conda - name: libxdamage-cos7-aarch64 - version: 1.1.4 - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libxdamage-cos7-aarch64-1.1.4-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/libxdamage-cos7-aarch64-1.1.4-ha675448_1106.tar.bz2 sha256: 92ddc0854544f185ab0db0c52d5d013fd1dd7beacc2b71c375792e000b0020b0 md5: a803b17c691e0d454145b41684ba161b depends: @@ -15742,14 +11739,7 @@ packages: license_family: MIT size: 18453 timestamp: 1726575535492 -- kind: conda - name: libxext-cos6-x86_64 - version: 1.3.3 - build: h9b0a68f_1105 - build_number: 1105 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libxext-cos6-x86_64-1.3.3-h9b0a68f_1105.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/libxext-cos6-x86_64-1.3.3-h9b0a68f_1105.tar.bz2 sha256: 9ceea97572a8df82638555e86054c6ac46368e61ebe38d01fd3d1d10b133b5de md5: 9b7ffe036c99cfaf2ef454a61165328b depends: @@ -15759,14 +11749,7 @@ packages: license_family: MIT size: 34905 timestamp: 1627484818339 -- kind: conda - name: libxext-cos7-aarch64 - version: 1.3.3 - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libxext-cos7-aarch64-1.3.3-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/libxext-cos7-aarch64-1.3.3-ha675448_1106.tar.bz2 sha256: b407e56ce1fb4b0ebab0096504523da732781e6ffaaa5728592fd6d589a54d7e md5: 3b8c8e892b9351a7a2c99e20e7455db5 depends: @@ -15776,14 +11759,7 @@ packages: license_family: MIT size: 39917 timestamp: 1726584354967 -- kind: conda - name: libxfixes-cos6-x86_64 - version: 5.0.3 - build: h9b0a68f_1105 - build_number: 1105 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libxfixes-cos6-x86_64-5.0.3-h9b0a68f_1105.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/libxfixes-cos6-x86_64-5.0.3-h9b0a68f_1105.tar.bz2 sha256: 96f104ceb8fe39035ccfead27465baddd0685bee196d4f977ff476f70fac4662 md5: 687c7aaba8cb84250cad653430377dc6 depends: @@ -15793,14 +11769,7 @@ packages: license_family: MIT size: 14342 timestamp: 1627485142320 -- kind: conda - name: libxfixes-cos7-aarch64 - version: 5.0.3 - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libxfixes-cos7-aarch64-5.0.3-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/libxfixes-cos7-aarch64-5.0.3-ha675448_1106.tar.bz2 sha256: f6fa2ef949ad3576d9e4b258b18ea02f02c059e3d7023ed9ec7f76dae5733a08 md5: 1fa1e58f9a3ee0df93e36bc839072069 depends: @@ -15810,14 +11779,7 @@ packages: license_family: MIT size: 17024 timestamp: 1726585824940 -- kind: conda - name: libxi-cos6-x86_64 - version: 1.7.8 - build: h9b0a68f_1105 - build_number: 1105 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libxi-cos6-x86_64-1.7.8-h9b0a68f_1105.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/libxi-cos6-x86_64-1.7.8-h9b0a68f_1105.tar.bz2 sha256: 8e951ee4f84276f19d51f9b9528a16fa53bf9fc53b358c6972aa50a18d223d38 md5: fd5134fd220ba3cb654100b5b9ee616c depends: @@ -15827,14 +11789,7 @@ packages: license_family: MIT size: 33890 timestamp: 1627484499199 -- kind: conda - name: libxi-cos7-aarch64 - version: 1.7.9 - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libxi-cos7-aarch64-1.7.9-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/libxi-cos7-aarch64-1.7.9-ha675448_1106.tar.bz2 sha256: f665a94754fd41f372e189790d46bfb2b6174aa124f68dd64bb7773153922300 md5: d4a8f75382df3ed340a258170fd492eb depends: @@ -15844,14 +11799,7 @@ packages: license_family: MIT size: 38133 timestamp: 1726584370851 -- kind: conda - name: libxi-devel-cos6-x86_64 - version: 1.7.8 - build: h9b0a68f_1105 - build_number: 1105 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libxi-devel-cos6-x86_64-1.7.8-h9b0a68f_1105.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/libxi-devel-cos6-x86_64-1.7.8-h9b0a68f_1105.tar.bz2 sha256: f92cc61d32e7fa86c37c54c041ccb1d6b0399860b21199c05d1a0e625d09f755 md5: e4e890adb9c5e604084c4ed263be24a3 depends: @@ -15861,14 +11809,7 @@ packages: license_family: MIT size: 95784 timestamp: 1627486378997 -- kind: conda - name: libxi-devel-cos7-aarch64 - version: 1.7.9 - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libxi-devel-cos7-aarch64-1.7.9-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/libxi-devel-cos7-aarch64-1.7.9-ha675448_1106.tar.bz2 sha256: b64758b9f65dbdda54ab57136dc1c35d859544c7fbc3d4ba9a62d8c3720e0778 md5: 03ae09a32f06f5523b38cdfbcb5f8e2c depends: @@ -15878,13 +11819,7 @@ packages: license_family: MIT size: 96691 timestamp: 1726587933486 -- kind: conda - name: libxkbcommon - version: 1.7.0 - build: h2c5496b_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.7.0-h2c5496b_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxkbcommon-1.7.0-h2c5496b_1.conda sha256: 6804c2a7062d10de6f159f7106dc45ebccc8d42bfb925f7919e26e567fa6da6b md5: e2eaefa4de2b7237af7c907b8bbc760a depends: @@ -15894,17 +11829,13 @@ packages: - libxml2 >=2.12.7,<3.0a0 - xkeyboard-config - xorg-libxau >=1.0.11,<2.0a0 + arch: x86_64 + platform: linux license: MIT/X11 Derivative license_family: MIT size: 593336 timestamp: 1718819935698 -- kind: conda - name: libxkbcommon - version: 1.7.0 - build: h46f2afe_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxkbcommon-1.7.0-h46f2afe_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxkbcommon-1.7.0-h46f2afe_1.conda sha256: 8ed470f72c733aea32bb5d272bf458041add7923d7716d5046bd40edf7ddd67c md5: 78a24e611ab9c09c518f519be49c2e46 depends: @@ -15914,150 +11845,135 @@ packages: - libxml2 >=2.12.7,<3.0a0 - xkeyboard-config - xorg-libxau >=1.0.11,<2.0a0 + arch: aarch64 + platform: linux license: MIT/X11 Derivative license_family: MIT size: 596053 timestamp: 1718819931537 -- kind: conda - name: libxml2 - version: 2.13.5 - build: h442d1da_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.5-h442d1da_0.conda - sha256: 020466b17c143190bd5a6540be2ceef4c1f8d514408bd5f0adaafcd9d0057b5c - md5: 1fbabbec60a3c7c519a5973b06c3b2f4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-h8d12d68_1.conda + sha256: c3b05bdc40d27a9249f0bb60f3f71718f94104b8bcd200163a6c9d4ade7aa052 + md5: 1a21e49e190d1ffe58531a81b6e400e1 depends: + - __glibc >=2.17,<3.0.a0 + - icu >=75.1,<76.0a0 + - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 1511585 - timestamp: 1731489892312 -- kind: conda - name: libxml2 - version: 2.13.5 - build: h495214b_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.5-h495214b_0.conda - sha256: 66e1bf40699daf83b39e1281f06c64cf83499de3a9c05d59477fadded6d85b18 - md5: 8711bc6fb054192dc432741dcd233ac3 + size: 690589 + timestamp: 1733443667823 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-h2e0c361_1.conda + sha256: dc0e86d35a836af6e99d18f50c6551fc64c53ed3a3da5a9fea90e78763cf14b4 + md5: 63410f85031930cde371dfe0ee89109a depends: - - __osx >=10.13 - icu >=75.1,<76.0a0 + - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 608931 - timestamp: 1731489767386 -- kind: conda - name: libxml2 - version: 2.13.5 - build: hb346dea_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxml2-2.13.5-hb346dea_0.conda - sha256: 8c9d6a3a421ac5bf965af495d1b0a08c6fb2245ba156550bc064a7b4f8fc7bd8 - md5: c81a9f1118541aaa418ccb22190c817e + size: 732155 + timestamp: 1733443825814 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxml2-2.13.5-hebb159f_1.conda + sha256: b9332bd8d47a72b7b8fa2ae13c24387ed4f5fd4e1f7ecf0031068c6a755267ae + md5: 23c629eba5239465a34bca0ed9c0b5d3 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=10.13 - icu >=75.1,<76.0a0 - - libgcc >=13 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 689626 - timestamp: 1731489608971 -- kind: conda - name: libxml2 - version: 2.13.5 - build: hbbdcc80_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-hbbdcc80_0.conda - sha256: 936de9c0e91cb6f178c48ea14313cf6c79bdb1f474c785c117c41492b0407a98 - md5: 967d4a9dadd710415ee008d862a07c99 + size: 608447 + timestamp: 1733443783886 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxml2-2.13.5-h178c5d8_1.conda + sha256: d7af3f25a4cece170502acd38f2dafbea4521f373f46dcb28a37fbe6ac2da544 + md5: 3dc3cff0eca1640a6acbbfab2f78139e depends: - __osx >=11.0 - icu >=75.1,<76.0a0 - libiconv >=1.17,<2.0a0 + - liblzma >=5.6.3,<6.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 583082 - timestamp: 1731489765442 -- kind: conda - name: libxml2 - version: 2.13.5 - build: hf4efe5d_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxml2-2.13.5-hf4efe5d_0.conda - sha256: bb5033bd79371e82886f9e83ef86babae8e0f50b77d7f9302210345b9205d939 - md5: 5650ac8a6ed680c032bdabe40ad19ee0 + size: 582898 + timestamp: 1733443841584 +- conda: https://conda.anaconda.org/conda-forge/win-64/libxml2-2.13.5-he286e8c_1.conda + sha256: 084dd4dde342f13c43ee418d153ac5b2610f95be029073a15fa9dda22b130d06 + md5: 77eaa84f90fc90643c5a0be0aa9bdd1b depends: - - icu >=75.1,<76.0a0 - - libgcc >=13 - libiconv >=1.17,<2.0a0 - libzlib >=1.3.1,<2.0a0 - - xz >=5.2.6,<6.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: MIT license_family: MIT - size: 734453 - timestamp: 1731489860751 -- kind: conda - name: libxslt - version: 1.1.39 - build: h03b04e6_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libxslt-1.1.39-h03b04e6_0.conda - sha256: decfc5614a10231a17543b7366616fb2d88c14be6dd9dd5ecde63aa9a5acfb9e - md5: a6e0cec6b3517ffc6b5d36a920fc9312 + size: 1612294 + timestamp: 1733443909984 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.39-h76b75d6_0.conda + sha256: 684e9b67ef7b9ca0ca993762eeb39705ec58e2e7f958555c758da7ef416db9f3 + md5: e71f31f8cfb0a91439f2086fc8aa0461 depends: + - libgcc-ng >=12 - libxml2 >=2.12.1,<3.0.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 231368 - timestamp: 1701628933115 -- kind: conda - name: libxslt - version: 1.1.39 - build: h1cc9640_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libxslt-1.1.39-h1cc9640_0.conda + size: 254297 + timestamp: 1701628814990 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libxslt-1.1.39-h1cc9640_0.conda sha256: 89ce87b5f594b2ddcd3ddf66dd3f36f85bbe3562b3f408409ccec787d7ed36a3 md5: 13e1d3f9188e85c6d59a98651aced002 depends: - libgcc-ng >=12 - libxml2 >=2.12.1,<3.0.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 260979 timestamp: 1701628809171 -- kind: conda - name: libxslt - version: 1.1.39 - build: h223e5b9_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libxslt-1.1.39-h223e5b9_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/libxslt-1.1.39-h03b04e6_0.conda + sha256: decfc5614a10231a17543b7366616fb2d88c14be6dd9dd5ecde63aa9a5acfb9e + md5: a6e0cec6b3517ffc6b5d36a920fc9312 + depends: + - libxml2 >=2.12.1,<3.0.0a0 + arch: x86_64 + platform: osx + license: MIT + license_family: MIT + size: 231368 + timestamp: 1701628933115 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libxslt-1.1.39-h223e5b9_0.conda sha256: 2f1d99ef3fb960f23a63f06cf65ee621a5594a8b4616f35d9805be44617a92af md5: 560c9cacc33e927f55b998eaa0cb1732 depends: - libxml2 >=2.12.1,<3.0.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 225705 timestamp: 1701628966565 -- kind: conda - name: libxslt - version: 1.1.39 - build: h3df6e99_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libxslt-1.1.39-h3df6e99_0.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/libxslt-1.1.39-h3df6e99_0.conda sha256: 6e3d99466d2076c35e7ac8dcdfe604da3d593f55b74a5b8e96c2b2ff63c247aa md5: 279ee338c9b34871d578cb3c7aa68f70 depends: @@ -16065,33 +11981,13 @@ packages: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: MIT license_family: MIT size: 418542 timestamp: 1701629338549 -- kind: conda - name: libxslt - version: 1.1.39 - build: h76b75d6_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libxslt-1.1.39-h76b75d6_0.conda - sha256: 684e9b67ef7b9ca0ca993762eeb39705ec58e2e7f958555c758da7ef416db9f3 - md5: e71f31f8cfb0a91439f2086fc8aa0461 - depends: - - libgcc-ng >=12 - - libxml2 >=2.12.1,<3.0.0a0 - license: MIT - license_family: MIT - size: 254297 - timestamp: 1701628814990 -- kind: conda - name: libxxf86vm-cos6-x86_64 - version: 1.1.3 - build: h9b0a68f_1105 - build_number: 1105 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libxxf86vm-cos6-x86_64-1.1.3-h9b0a68f_1105.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/libxxf86vm-cos6-x86_64-1.1.3-h9b0a68f_1105.tar.bz2 sha256: c3db860723001736d032b1780dc6ada4d58cbaad871e5f453bae17d6b6ef28f9 md5: fba350c49bc22452f199b2a1846cba43 depends: @@ -16101,14 +11997,7 @@ packages: license_family: MIT size: 13580 timestamp: 1627485158222 -- kind: conda - name: libxxf86vm-cos7-aarch64 - version: 1.1.4 - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/libxxf86vm-cos7-aarch64-1.1.4-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/libxxf86vm-cos7-aarch64-1.1.4-ha675448_1106.tar.bz2 sha256: 5efd0e0c8bd5f8369585b9da30bfd1753d74230f6eb92725401a47e66ba3d5b0 md5: 4a97667afebc70c37ff30fb6a0de867e depends: @@ -16118,48 +12007,36 @@ packages: license_family: MIT size: 16318 timestamp: 1726586753803 -- kind: conda - name: libzip - version: 1.11.2 - build: h1336266_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libzip-1.11.2-h1336266_0.conda - sha256: 507599a77c1ce823c2d3acaefaae4ead0686f183f3980467a4c4b8ba209eff40 - md5: 7177414f275db66735a17d316b0a81d6 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda + sha256: 991e7348b0f650d495fb6d8aa9f8c727bdf52dabf5853c0cc671439b160dce48 + md5: a7b27c075c9b7f459f1c022090697cba depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 125507 - timestamp: 1730442214849 -- kind: conda - name: libzip - version: 1.11.2 - build: h3135430_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libzip-1.11.2-h3135430_0.conda - sha256: 8ed49d8aa0ff908e16c82f92154174027c8906429e8b63d71f0b27ecc987b43e - md5: 09066edc7810e4bd1b41ad01a6cc4706 + size: 109043 + timestamp: 1730442108429 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzip-1.11.2-h3e8f909_0.conda + sha256: 9ae7edbe6dcdaa0371736118a1e05ffa47c15c0118a092ff1b0a35cbb621ac2d + md5: faf7adbb1938c4aa7a312f110f46859b depends: - bzip2 >=1.0.8,<2.0a0 + - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 146856 - timestamp: 1730442305774 -- kind: conda - name: libzip - version: 1.11.2 - build: h31df5bb_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libzip-1.11.2-h31df5bb_0.conda + size: 117603 + timestamp: 1730442215935 +- conda: https://conda.anaconda.org/conda-forge/osx-64/libzip-1.11.2-h31df5bb_0.conda sha256: 434a4d1ad23c1c8deb7ec2da94aca05e22bc29dee445b4f7642e1c2f20fc0b0b md5: 3cf12c97a18312c9243a895580bf5be6 depends: @@ -16167,141 +12044,113 @@ packages: - bzip2 >=1.0.8,<2.0a0 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD size: 129542 timestamp: 1730442392952 -- kind: conda - name: libzip - version: 1.11.2 - build: h3e8f909_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libzip-1.11.2-h3e8f909_0.conda - sha256: 9ae7edbe6dcdaa0371736118a1e05ffa47c15c0118a092ff1b0a35cbb621ac2d - md5: faf7adbb1938c4aa7a312f110f46859b +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzip-1.11.2-h1336266_0.conda + sha256: 507599a77c1ce823c2d3acaefaae4ead0686f183f3980467a4c4b8ba209eff40 + md5: 7177414f275db66735a17d316b0a81d6 depends: + - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 117603 - timestamp: 1730442215935 -- kind: conda - name: libzip - version: 1.11.2 - build: h6991a6a_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libzip-1.11.2-h6991a6a_0.conda - sha256: 991e7348b0f650d495fb6d8aa9f8c727bdf52dabf5853c0cc671439b160dce48 - md5: a7b27c075c9b7f459f1c022090697cba + size: 125507 + timestamp: 1730442214849 +- conda: https://conda.anaconda.org/conda-forge/win-64/libzip-1.11.2-h3135430_0.conda + sha256: 8ed49d8aa0ff908e16c82f92154174027c8906429e8b63d71f0b27ecc987b43e + md5: 09066edc7810e4bd1b41ad01a6cc4706 depends: - - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - libgcc >=13 - libzlib >=1.3.1,<2.0a0 - openssl >=3.3.2,<4.0a0 - license: BSD-3-Clause - license_family: BSD - size: 109043 - timestamp: 1730442108429 -- kind: conda - name: libzlib - version: 1.3.1 - build: h2466b09_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda - sha256: ba945c6493449bed0e6e29883c4943817f7c79cbff52b83360f7b341277c6402 - md5: 41fbfac52c601159df6c01f875de31b9 - depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - constrains: - - zlib 1.3.1 *_2 - license: Zlib - license_family: Other - size: 55476 - timestamp: 1727963768015 -- kind: conda - name: libzlib - version: 1.3.1 - build: h8359307_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda - sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b - md5: 369964e85dc26bfe78f41399b366c435 + arch: x86_64 + platform: win + license: BSD-3-Clause + license_family: BSD + size: 146856 + timestamp: 1730442305774 +- conda: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda + sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 + md5: edb0dca6bc32e4f4789199455a1dbeb8 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 constrains: - zlib 1.3.1 *_2 + arch: x86_64 + platform: linux license: Zlib license_family: Other - size: 46438 - timestamp: 1727963202283 -- kind: conda - name: libzlib - version: 1.3.1 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda + size: 60963 + timestamp: 1727963148474 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/libzlib-1.3.1-h86ecc28_2.conda sha256: 5a2c1eeef69342e88a98d1d95bff1603727ab1ff4ee0e421522acd8813439b84 md5: 08aad7cbe9f5a6b460d0976076b6ae64 depends: - libgcc >=13 constrains: - zlib 1.3.1 *_2 + arch: aarch64 + platform: linux license: Zlib license_family: Other size: 66657 timestamp: 1727963199518 -- kind: conda - name: libzlib - version: 1.3.1 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/libzlib-1.3.1-hb9d3cd8_2.conda - sha256: d4bfe88d7cb447768e31650f06257995601f89076080e76df55e3112d4e47dc4 - md5: edb0dca6bc32e4f4789199455a1dbeb8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - constrains: - - zlib 1.3.1 *_2 - license: Zlib - license_family: Other - size: 60963 - timestamp: 1727963148474 -- kind: conda - name: libzlib - version: 1.3.1 - build: hd23fc13_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/libzlib-1.3.1-hd23fc13_2.conda sha256: 8412f96504fc5993a63edf1e211d042a1fd5b1d51dedec755d2058948fcced09 md5: 003a54a4e32b02f7355b50a837e699da depends: - __osx >=10.13 constrains: - zlib 1.3.1 *_2 + arch: x86_64 + platform: osx license: Zlib license_family: Other size: 57133 timestamp: 1727963183990 -- kind: conda - name: lld - version: 19.1.4 - build: hd91d51b_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/lld-19.1.4-hd91d51b_0.conda - sha256: b515b1b952e9dced5953c0b73b5791bf72501a7351527cebe076ed46b2e1be22 - md5: 100f18f987f83543b351e602ce1f047b +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/libzlib-1.3.1-h8359307_2.conda + sha256: ce34669eadaba351cd54910743e6a2261b67009624dbc7daeeafdef93616711b + md5: 369964e85dc26bfe78f41399b366c435 + depends: + - __osx >=11.0 + constrains: + - zlib 1.3.1 *_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 46438 + timestamp: 1727963202283 +- conda: https://conda.anaconda.org/conda-forge/win-64/libzlib-1.3.1-h2466b09_2.conda + sha256: ba945c6493449bed0e6e29883c4943817f7c79cbff52b83360f7b341277c6402 + md5: 41fbfac52c601159df6c01f875de31b9 + depends: + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + constrains: + - zlib 1.3.1 *_2 + arch: x86_64 + platform: win + license: Zlib + license_family: Other + size: 55476 + timestamp: 1727963768015 +- conda: https://conda.anaconda.org/conda-forge/win-64/lld-19.1.6-hd91d51b_0.conda + sha256: 583cb380429a30d6c863c13ae44531d0435e69f684cc2cdda53e4c26a2dc1e76 + md5: 6842aae8a3d7c0577cc7e058808a58a7 depends: - libxml2 >=2.13.5,<3.0a0 - libzlib >=1.3.1,<2.0a0 @@ -16310,50 +12159,59 @@ packages: - vc14_runtime >=14.29.30139 - zstd >=1.5.6,<1.6.0a0 constrains: - - llvm ==19.1.4 + - llvm ==19.1.6 + arch: x86_64 + platform: win license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 122891313 - timestamp: 1732070834010 -- kind: conda - name: llvm-openmp - version: 19.1.4 - build: ha54dae1_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.4-ha54dae1_0.conda - sha256: 69fca4a9318d7367ec3e0e7d6e6023a46ae1113dbd67da6d0f93fffa0ef54497 - md5: 193715d512f648fe0865f6f13b1957e3 + size: 122980842 + timestamp: 1734500318286 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-openmp-19.1.6-ha54dae1_0.conda + sha256: f79a1d6f8b2f6044eda1b1251c9bf49f4e11ae644e609e47486561a7eca437fd + md5: 4fe4d62071f8a3322ffb6588b49ccbb8 depends: - __osx >=10.13 constrains: - - openmp 19.1.4|19.1.4.* + - openmp 19.1.6|19.1.6.* + arch: x86_64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 305132 - timestamp: 1732102427054 -- kind: conda - name: llvm-openmp - version: 19.1.4 - build: hdb05f8b_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.4-hdb05f8b_0.conda - sha256: dfdcd8de37899d984326f9734b28f46f80b88c068e44c562933a8b3117f2401a - md5: 76ca179ec970bea6e275e2fa477c2d3c + size: 305048 + timestamp: 1734520356844 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-openmp-19.1.6-hdb05f8b_0.conda + sha256: a0f3e9139ab16f0a67b9d2bbabc15b78977168f4a5b5503fed4962dcb9a96102 + md5: 34fdeffa0555a1a56f38839415cc066c depends: - __osx >=11.0 constrains: - - openmp 19.1.4|19.1.4.* + - openmp 19.1.6|19.1.6.* + arch: arm64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: APACHE - size: 281554 - timestamp: 1732102484807 -- kind: conda - name: llvm-tools - version: 17.0.6 - build: h5090b49_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-17.0.6-h5090b49_2.conda + size: 281251 + timestamp: 1734520462311 +- conda: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-17.0.6-hbedff68_1.conda + sha256: 2380e9ac72aba8ef351ec13c9d5b1b233057c70bf4b9b3cea0b3f5bfb5a4e211 + md5: 4260f86b3dd201ad7ea758d783cd5613 + depends: + - libllvm17 17.0.6 hbedff68_1 + - libxml2 >=2.12.1,<3.0.0a0 + - libzlib >=1.2.13,<2.0.0a0 + - zstd >=1.5.5,<1.6.0a0 + constrains: + - llvm 17.0.6 + - clang 17.0.6 + - clang-tools 17.0.6 + - llvmdev 17.0.6 + arch: x86_64 + platform: osx + license: Apache-2.0 WITH LLVM-exception + license_family: Apache + size: 23219165 + timestamp: 1701378990823 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/llvm-tools-17.0.6-h5090b49_2.conda sha256: a8011fffc1ab3b49f2027fbdba0887e90a2d288240484a4ba4c1b80617522541 md5: df635fb4c27fc012c0caf53adf61f043 depends: @@ -16367,44 +12225,17 @@ packages: - llvm 17.0.6 - llvmdev 17.0.6 - clang 17.0.6 + arch: arm64 + platform: osx license: Apache-2.0 WITH LLVM-exception license_family: Apache size: 21864486 timestamp: 1718321368877 -- kind: conda - name: llvm-tools - version: 17.0.6 - build: hbedff68_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/llvm-tools-17.0.6-hbedff68_1.conda - sha256: 2380e9ac72aba8ef351ec13c9d5b1b233057c70bf4b9b3cea0b3f5bfb5a4e211 - md5: 4260f86b3dd201ad7ea758d783cd5613 +- conda: https://conda.anaconda.org/conda-forge/win-64/llvm-tools-19.1.6-h2a44499_0.conda + sha256: 67b6e3fc07a0ad15b3977acd66e3b7a386a2ff68744325e771d7cd2212eaeacb + md5: 3bc98c3e63fbe38f8b05d7d420c334a5 depends: - - libllvm17 17.0.6 hbedff68_1 - - libxml2 >=2.12.1,<3.0.0a0 - - libzlib >=1.2.13,<2.0.0a0 - - zstd >=1.5.5,<1.6.0a0 - constrains: - - llvm 17.0.6 - - clang 17.0.6 - - clang-tools 17.0.6 - - llvmdev 17.0.6 - license: Apache-2.0 WITH LLVM-exception - license_family: Apache - size: 23219165 - timestamp: 1701378990823 -- kind: conda - name: llvm-tools - version: 19.1.4 - build: h2a44499_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/llvm-tools-19.1.4-h2a44499_1.conda - sha256: e0fc92effea7a2aa7315905241c4c549983f493209630ccb17397dab45e3ea2b - md5: 7b48821232351c7e5c2905668fe31ba5 - depends: - - libllvm19 19.1.4 h3089188_1 + - libllvm19 19.1.6 h3089188_0 - libxml2 >=2.13.5,<3.0a0 - libzlib >=1.3.1,<2.0a0 - ucrt >=10.0.20348.0 @@ -16412,266 +12243,150 @@ packages: - vc14_runtime >=14.29.30139 - zstd >=1.5.6,<1.6.0a0 constrains: - - llvmdev 19.1.4 - - clang-tools 19.1.4 - - llvm 19.1.4 - - clang 19.1.4 + - llvmdev 19.1.6 + - clang 19.1.6 + - llvm 19.1.6 + - clang-tools 19.1.6 + arch: x86_64 + platform: win license: Apache-2.0 WITH LLVM-exception license_family: Apache - size: 397725696 - timestamp: 1732684783968 -- kind: conda - name: loguru - version: 0.7.2 - build: py312h2e8e312_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/loguru-0.7.2-py312h2e8e312_2.conda - sha256: a739c06ba1c020429dd7d5112ecc8c7b109b908d0b38162401a385895905d2c7 - md5: 01232802799e9861f3f9a61d4ac8ab0b + size: 396845382 + timestamp: 1734491367186 +- conda: https://conda.anaconda.org/conda-forge/linux-64/loguru-0.7.2-py313h78bf25f_2.conda + sha256: c667bca9b58c66953c8c3b39b9e00c8192316d8ad19bfec5f0b488cd2afa3061 + md5: a2d253474bc86a3e7aa382c63d573357 + depends: + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 126928 + timestamp: 1725349841791 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/loguru-0.7.2-py313h1258fbd_2.conda + sha256: 36ab2f17ff6013d2254208028b1df124fd7113485536ecbce0dc4d077b2a2a6f + md5: 71e3063101872f221bfa1ada4477970d + depends: + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 125799 + timestamp: 1725350996475 +- conda: https://conda.anaconda.org/conda-forge/osx-64/loguru-0.7.2-py313habf4b1d_2.conda + sha256: 26d7b5dcdf44086826d6ebd20bb7cd66b4872b87624974e15302fed7511c2be8 + md5: 22ff810f6a26fb7df173dc0557319623 + depends: + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: osx + license: MIT + license_family: MIT + size: 125997 + timestamp: 1725349947332 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/loguru-0.7.2-py313h8f79df9_2.conda + sha256: 0a8d95f516a041d8ee365f8c196ac1a017d80e5405a75be323cdffcfac7cf0fe + md5: d52009653b377e5f2b64d3bea2677822 + depends: + - python >=3.13.0rc1,<3.14.0a0 + - python >=3.13.0rc1,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 127794 + timestamp: 1725349988436 +- conda: https://conda.anaconda.org/conda-forge/win-64/loguru-0.7.2-py313hfa70ccb_2.conda + sha256: 7703f5afb0ad87b19e4815b5f92ec315bc19934d55e6541bf4860786dd08ac84 + md5: 00052fc5f5720314253cb6b2fe0653c1 depends: - colorama >=0.3.4 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 - win32_setctime >=1.0.0 + arch: x86_64 + platform: win license: MIT license_family: MIT - size: 123536 - timestamp: 1725349948294 -- kind: conda - name: loguru - version: 0.7.2 - build: py312h7900ff3_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/loguru-0.7.2-py312h7900ff3_2.conda - sha256: e5477e3fa7b4ef070e9ecae619cfc5845e14e3cdac8fbb2d158a03d51f967bef - md5: fddd3092f921be8e01b18f2a0266d98f - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - size: 123047 - timestamp: 1725349857430 -- kind: conda - name: loguru - version: 0.7.2 - build: py312h8025657_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/loguru-0.7.2-py312h8025657_2.conda - sha256: adccfa12dc866260f568f5d2a4bfac6c9142fdb68c4f70b765d0027e72e4b783 - md5: ffae73022f1e85223fd1f2f7de8cf1b4 - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - size: 123218 - timestamp: 1725350987665 -- kind: conda - name: loguru - version: 0.7.2 - build: py312h81bd7bf_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/loguru-0.7.2-py312h81bd7bf_2.conda - sha256: 09c51d5b2c07232c9fa84bdd6f2c6f98536d3a2568ba427ab1d45b634bd30bf4 - md5: c4bf17db944569f3b0e2e100c91c54e2 - depends: - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - size: 123434 - timestamp: 1725349952242 -- kind: conda - name: loguru - version: 0.7.2 - build: py312hb401068_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/loguru-0.7.2-py312hb401068_2.conda - sha256: e898a7db07218700ca81ccd2eb4ad045e740c88773a32ec0fdb9f2b5a0873795 - md5: 782d363c536ff818265a294b68f67127 - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - size: 122974 - timestamp: 1725349903912 -- kind: conda - name: lz4-c - version: 1.9.4 - build: hb7217d7_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda - sha256: fc343b8c82efe40819b986e29ba748366514e5ab94a1e1138df195af5f45fa24 - md5: 45505bec548634f7d05e02fb25262cb9 - depends: - - libcxx >=14.0.6 - license: BSD-2-Clause - license_family: BSD - size: 141188 - timestamp: 1674727268278 -- kind: conda - name: lz4-c - version: 1.9.4 - build: hcb278e6_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda + size: 127365 + timestamp: 1725349993152 +- conda: https://conda.anaconda.org/conda-forge/linux-64/lz4-c-1.9.4-hcb278e6_0.conda sha256: 1b4c105a887f9b2041219d57036f72c4739ab9e9fe5a1486f094e58c76b31f5f md5: 318b08df404f9c9be5712aaa5a6f0bb0 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD size: 143402 timestamp: 1674727076728 -- kind: conda - name: lz4-c - version: 1.9.4 - build: hcfcfb64_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/lz4-c-1.9.4-hcfcfb64_0.conda - sha256: a0954b4b1590735ea5f3d0f4579c3883f8ac837387afd5b398b241fda85124ab - md5: e34720eb20a33fc3bfb8451dd837ab7a - depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vs2015_runtime >=14.29.30139 - license: BSD-2-Clause - license_family: BSD - size: 134235 - timestamp: 1674728465431 -- kind: conda - name: lz4-c - version: 1.9.4 - build: hd600fc2_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/lz4-c-1.9.4-hd600fc2_0.conda sha256: 076870eb72411f41c46598c7582a2f3f42ba94c526a2d60a0c8f70a0a7a64429 md5: 500145a83ed07ce79c8cef24252f366b depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 163770 timestamp: 1674727020254 -- kind: conda - name: lz4-c - version: 1.9.4 - build: hf0c8a7f_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.9.4-hf0c8a7f_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/lz4-c-1.9.4-hf0c8a7f_0.conda sha256: 39aa0c01696e4e202bf5e337413de09dfeec061d89acd5f28e9968b4e93c3f48 md5: aa04f7143228308662696ac24023f991 depends: - libcxx >=14.0.6 + arch: x86_64 + platform: osx license: BSD-2-Clause license_family: BSD size: 156415 timestamp: 1674727335352 -- kind: conda - name: lzo - version: '2.10' - build: h10d778d_1001 - build_number: 1001 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/lzo-2.10-h10d778d_1001.conda - sha256: 4006c57f805ca6aec72ee0eb7166b2fd648dd1bf3721b9de4b909cd374196643 - md5: bfecd73e4a2dc18ffd5288acf8a212ab - license: GPL-2.0-or-later - license_family: GPL2 - size: 146405 - timestamp: 1713516112292 -- kind: conda - name: lzo - version: '2.10' - build: h31becfc_1001 - build_number: 1001 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/lzo-2.10-h31becfc_1001.conda - sha256: d8626d739ac4268e63ca4ba71329cfc4da78b59b377b8cb45a81840138e0e3c9 - md5: 004025fe20a11090e0b02154f413a758 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/lz4-c-1.9.4-hb7217d7_0.conda + sha256: fc343b8c82efe40819b986e29ba748366514e5ab94a1e1138df195af5f45fa24 + md5: 45505bec548634f7d05e02fb25262cb9 depends: - - libgcc-ng >=12 - license: GPL-2.0-or-later - license_family: GPL2 - size: 164049 - timestamp: 1713517023523 -- kind: conda - name: lzo - version: '2.10' - build: h93a5062_1001 - build_number: 1001 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/lzo-2.10-h93a5062_1001.conda - sha256: b68160b0a8ec374cea12de7afb954ca47419cdc300358232e19cec666d60b929 - md5: 915996063a7380c652f83609e970c2a7 - license: GPL-2.0-or-later - license_family: GPL2 - size: 131447 - timestamp: 1713516009610 -- kind: conda - name: lzo - version: '2.10' - build: hcfcfb64_1001 - build_number: 1001 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/lzo-2.10-hcfcfb64_1001.conda - sha256: 39e176b8cc8fe878d87594fae0504c649d1c2c6d5476dd7238237d19eb825751 - md5: 629f4f4e874cf096eb93a23240910cee + - libcxx >=14.0.6 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 141188 + timestamp: 1674727268278 +- conda: https://conda.anaconda.org/conda-forge/win-64/lz4-c-1.9.4-hcfcfb64_0.conda + sha256: a0954b4b1590735ea5f3d0f4579c3883f8ac837387afd5b398b241fda85124ab + md5: e34720eb20a33fc3bfb8451dd837ab7a depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: GPL-2.0-or-later - license_family: GPL2 - size: 142771 - timestamp: 1713516312465 -- kind: conda - name: lzo - version: '2.10' - build: hd590300_1001 - build_number: 1001 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/lzo-2.10-hd590300_1001.conda - sha256: 88433b98a9dd9da315400e7fb9cd5f70804cb17dca8b1c85163a64f90f584126 - md5: ec7398d21e2651e0dcb0044d03b9a339 - depends: - - libgcc-ng >=12 - license: GPL-2.0-or-later - license_family: GPL2 - size: 171416 - timestamp: 1713515738503 -- kind: conda - name: m2w64-gcc-libgfortran - version: 5.3.0 - build: '6' - build_number: 6 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libgfortran-5.3.0-6.tar.bz2 + - vs2015_runtime >=14.29.30139 + arch: x86_64 + platform: win + license: BSD-2-Clause + license_family: BSD + size: 134235 + timestamp: 1674728465431 +- conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libgfortran-5.3.0-6.tar.bz2 sha256: 9de95a7996d5366ae0808eef2acbc63f9b11b874aa42375f55379e6715845dc6 md5: 066552ac6b907ec6d72c0ddab29050dc depends: - m2w64-gcc-libs-core - msys2-conda-epoch ==20160418 + arch: x86_64 + platform: win license: GPL, LGPL, FDL, custom size: 350687 timestamp: 1608163451316 -- kind: conda - name: m2w64-gcc-libs - version: 5.3.0 - build: '7' - build_number: 7 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-5.3.0-7.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-5.3.0-7.tar.bz2 sha256: 3bd1ab02b7c89a5b153a17be03b36d833f1517ff2a6a77ead7c4a808b88196aa md5: fe759119b8b3bfa720b8762c6fdc35de depends: @@ -16680,474 +12395,332 @@ packages: - m2w64-gmp - m2w64-libwinpthread-git - msys2-conda-epoch ==20160418 + arch: x86_64 + platform: win license: GPL3+, partial:GCCRLE, partial:LGPL2+ size: 532390 timestamp: 1608163512830 -- kind: conda - name: m2w64-gcc-libs-core - version: 5.3.0 - build: '7' - build_number: 7 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-core-5.3.0-7.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gcc-libs-core-5.3.0-7.tar.bz2 sha256: 58afdfe859ed2e9a9b1cc06bc408720cb2c3a6a132e59d4805b090d7574f4ee0 md5: 4289d80fb4d272f1f3b56cfe87ac90bd depends: - m2w64-gmp - m2w64-libwinpthread-git - msys2-conda-epoch ==20160418 + arch: x86_64 + platform: win license: GPL3+, partial:GCCRLE, partial:LGPL2+ size: 219240 timestamp: 1608163481341 -- kind: conda - name: m2w64-gmp - version: 6.1.0 - build: '2' - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/m2w64-gmp-6.1.0-2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-gmp-6.1.0-2.tar.bz2 sha256: 7e3cd95f554660de45f8323fca359e904e8d203efaf07a4d311e46d611481ed1 md5: 53a1c73e1e3d185516d7e3af177596d9 depends: - msys2-conda-epoch ==20160418 + arch: x86_64 + platform: win license: LGPL3 size: 743501 timestamp: 1608163782057 -- kind: conda - name: m2w64-libwinpthread-git - version: 5.0.0.4634.697f757 - build: '2' - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/m2w64-libwinpthread-git-5.0.0.4634.697f757-2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/win-64/m2w64-libwinpthread-git-5.0.0.4634.697f757-2.tar.bz2 sha256: f63a09b2cae7defae0480f1740015d6235f1861afa6fe2e2d3e10bd0d1314ee0 md5: 774130a326dee16f1ceb05cc687ee4f0 depends: - msys2-conda-epoch ==20160418 + arch: x86_64 + platform: win license: MIT, BSD size: 31928 timestamp: 1608166099896 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py312h178313f_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py312h178313f_0.conda - sha256: 15f14ab429c846aacd47fada0dc4f341d64491e097782830f0906d00cb7b48b6 - md5: a755704ea0e2503f8c227d84829a8e81 +- conda: https://conda.anaconda.org/conda-forge/linux-64/markupsafe-3.0.2-py313h8060acc_1.conda + sha256: d812caf52efcea7c9fd0eafb21d45dadfd0516812f667b928bee50e87634fae5 + md5: 21b62c55924f01b6eef6827167b46acb depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 constrains: - jinja2 >=3.0.0 + arch: x86_64 + platform: linux license: BSD-3-Clause - license_family: BSD - size: 24878 - timestamp: 1729351558563 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py312h31fea79_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py312h31fea79_0.conda - sha256: eb0f3768890291f2d5fb666ab31b32b37a821e4a30968c6b3cd332472957abe7 - md5: e2ff001440760f2cbac24765d8a3d84a - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + license_family: BSD + size: 24856 + timestamp: 1733219782830 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py313h7815b11_1.conda + sha256: d91212c3c12c4dd9500ca85973c1bad28e2204e8c838e823d87c86a791bef866 + md5: 1dbae17ceddb4e6ab2f239a00c7b5e52 + depends: + - libgcc >=13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 constrains: - jinja2 >=3.0.0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 27358 - timestamp: 1729351504449 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py312h74ce7d3_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/markupsafe-3.0.2-py312h74ce7d3_0.conda - sha256: 997baf7f46bce112f6e0390efaa7fbb892b8f31567d3c554f08ac636774d74f7 - md5: 8992b90e8374193d53118f7651db0b73 + size: 25269 + timestamp: 1733220943845 +- conda: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py313h717bdf5_1.conda + sha256: 297242943522a907c270bc2f191d16142707d970541b9a093640801b767d7aa7 + md5: a6fbde71416d6eb9898fcabf505a85c5 depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - __osx >=10.13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 constrains: - jinja2 >=3.0.0 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 25013 - timestamp: 1729352489213 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py312ha0ccf2a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py312ha0ccf2a_0.conda - sha256: 360e958055f35e5087942b9c499eaafae984a951b84cf354ef7481a2806f340d - md5: c6ff9f291d011c9d4f0b840f49435c64 + size: 24363 + timestamp: 1733219815199 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/markupsafe-3.0.2-py313ha9b7d5b_1.conda + sha256: 81759af8a9872c8926af3aa59dc4986eee90a0956d1ec820b42ac4f949a71211 + md5: 3acf05d8e42ff0d99820d2d889776fff depends: - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 constrains: - jinja2 >=3.0.0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 24495 - timestamp: 1729351534830 -- kind: conda - name: markupsafe - version: 3.0.2 - build: py312hbe3f5e4_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/markupsafe-3.0.2-py312hbe3f5e4_0.conda - sha256: b2fb54718159055fdf89da7d9f0c6743ef84b31960617a56810920d17616d944 - md5: c6238833d7dc908ec295bc490b80d845 + size: 24757 + timestamp: 1733219916634 +- conda: https://conda.anaconda.org/conda-forge/win-64/markupsafe-3.0.2-py313hb4c8b1a_1.conda + sha256: f16cb398915f52d582bcea69a16cf69a56dab6ea2fab6f069da9c2c10f09534c + md5: ec9ecf6ee4cceb73a0c9a8cdfdf58bed depends: - - __osx >=10.13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 constrains: - jinja2 >=3.0.0 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD - size: 23889 - timestamp: 1729351468966 -- kind: conda - name: matplotlib - version: 3.9.3 - build: py312h1f38498_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.9.3-py312h1f38498_0.conda - sha256: 37a4c66d9f45bfd57d340b18f094dae4a3a934c50375e95936ae2cbd197c6056 - md5: d59d691e62901625bc2113cc7fc4a806 - depends: - - matplotlib-base >=3.9.3,<3.9.4.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + size: 27930 + timestamp: 1733220059655 +- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.10.0-py313h78bf25f_0.conda + sha256: d187fd6da78b845c13262e30eea4b3337bb8f49074e63c334089a6710572a37a + md5: 8db95cf01990edcecf616ed65a986fde + depends: + - matplotlib-base >=3.10.0,<3.10.1.0a0 + - pyside6 >=6.7.2 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 - tornado >=5 + arch: x86_64 + platform: linux license: PSF-2.0 license_family: PSF - size: 17057 - timestamp: 1733176577477 -- kind: conda - name: matplotlib - version: 3.9.3 - build: py312h2e8e312_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.9.3-py312h2e8e312_0.conda - sha256: 45fe92fe5466f8bcf24a7b84b5057025fc08c4c04c5d68b940ba046ff8090584 - md5: bf667ae25f3588c6f4cfc2e10bf76c05 - depends: - - matplotlib-base >=3.9.3,<3.9.4.0a0 + size: 16884 + timestamp: 1734380597099 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-3.10.0-py313h1258fbd_0.conda + sha256: f7562ab3e0a87e5d603d536e949c74bf51c8a78fefc9f34b1a3b357157e9c659 + md5: 2bdcfe0f86038f5043ff636d71872382 + depends: + - matplotlib-base >=3.10.0,<3.10.1.0a0 - pyside6 >=6.7.2 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 - tornado >=5 + arch: aarch64 + platform: linux license: PSF-2.0 license_family: PSF - size: 17349 - timestamp: 1733177072622 -- kind: conda - name: matplotlib - version: 3.9.3 - build: py312h7900ff3_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-3.9.3-py312h7900ff3_0.conda - sha256: c72176bbb4bb000e6b602f1fc2c3ef21caf9a0f4b6d2f4b0e183cbcb88e6c5a4 - md5: 4297d8db465b02727a206d6e60477246 - depends: - - matplotlib-base >=3.9.3,<3.9.4.0a0 - - pyside6 >=6.7.2 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + size: 17047 + timestamp: 1734380715001 +- conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.10.0-py313habf4b1d_0.conda + sha256: 5ec2843f3f78dff9808ecd81881e0297f7719a5c9577f75920b37afc959fc16d + md5: a1081de6446fbd9049e1bce7d965a3ac + depends: + - matplotlib-base >=3.10.0,<3.10.1.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 - tornado >=5 + arch: x86_64 + platform: osx license: PSF-2.0 license_family: PSF - size: 16831 - timestamp: 1733176212063 -- kind: conda - name: matplotlib - version: 3.9.3 - build: py312h8025657_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-3.9.3-py312h8025657_0.conda - sha256: c928604f5e60c8a35bf7703d9f7bbc0eba5922a7f023a0e4c7933d7b8780f6af - md5: eeaabc85a8a0135a0bc184df0809d179 - depends: - - matplotlib-base >=3.9.3,<3.9.4.0a0 - - pyside6 >=6.7.2 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + size: 16954 + timestamp: 1734380669266 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-3.10.0-py313h39782a4_0.conda + sha256: 90c109ff3542487c1c8205c7376a58c779f4b5067c7ba00aa367bf904ab09aa2 + md5: 0c2a9f731aca56e9e88176d69c45b98d + depends: + - matplotlib-base >=3.10.0,<3.10.1.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 - tornado >=5 + arch: arm64 + platform: osx license: PSF-2.0 license_family: PSF - size: 16987 - timestamp: 1733176482877 -- kind: conda - name: matplotlib - version: 3.9.3 - build: py312hb401068_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-3.9.3-py312hb401068_0.conda - sha256: c54ce35d834a86ce9c7d6c0d357820e1c117d5926d0cde2cfc6e3df98f39f743 - md5: 4240d065b668486449aea39a7614c4e3 - depends: - - matplotlib-base >=3.9.3,<3.9.4.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + size: 17109 + timestamp: 1734380810832 +- conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-3.10.0-py313hfa70ccb_0.conda + sha256: 38af10ff23da23df3b2b0f7427f63ca3a244005d287d3705dc62b397f183481d + md5: 5bbabd9f477539a7d3550621b33cb27b + depends: + - matplotlib-base >=3.10.0,<3.10.1.0a0 + - pyside6 >=6.7.2 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 - tornado >=5 + arch: x86_64 + platform: win license: PSF-2.0 license_family: PSF - size: 16964 - timestamp: 1733176422271 -- kind: conda - name: matplotlib-base - version: 3.9.3 - build: py312h535dea3_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.9.3-py312h535dea3_0.conda - sha256: e449ac73986596088bb14c76d3650fcf69dd5f89c50faffbc519f8f801a80c81 - md5: 79f3d3149023f3c0f8cc54a645ce704c + size: 17445 + timestamp: 1734381729911 +- conda: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.10.0-py313h129903b_0.conda + sha256: b134bf938da2ed0edcae0d374a749f5e28fdad95ff2bc00a7cda113b92d2a79e + md5: ab5b84154e1d9e41d4f11aea76d74096 depends: - - __osx >=10.13 - - certifi >=2020.06.20 + - __glibc >=2.17,<3.0.a0 - contourpy >=1.0.1 - cycler >=0.10 - fonttools >=4.22.0 - freetype >=2.12.1,<3.0a0 - kiwisolver >=1.3.1 - - libcxx >=18 - - numpy >=1.19,<3 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.21,<3 - numpy >=1.23 - packaging >=20.0 - pillow >=8 - pyparsing >=2.3.1 - - python >=3.12,<3.13.0a0 + - python >=3.13,<3.14.0a0 - python-dateutil >=2.7 - - python_abi 3.12.* *_cp312 + - python_abi 3.13.* *_cp313 - qhull >=2020.2,<2020.3.0a0 + - tk >=8.6.13,<8.7.0a0 + arch: x86_64 + platform: linux license: PSF-2.0 license_family: PSF - size: 7819443 - timestamp: 1733176386182 -- kind: conda - name: matplotlib-base - version: 3.9.3 - build: py312h90004f6_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.9.3-py312h90004f6_0.conda - sha256: f2411d7c3a8a4b479e3fe0aa201cbeff457cf906ae8bf0874098d4d41650b185 - md5: 0b704b91357a3e635db627160a3141be - depends: - - certifi >=2020.06.20 + size: 8303266 + timestamp: 1734380573857 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.10.0-py313h16bfeab_0.conda + sha256: acc8d7ac5141723c4be5297caeaf3aeba1009e41f793f80ffd1e67a8fcb525f0 + md5: 62d5ade32477747ac93730e33e568d9c + depends: - contourpy >=1.0.1 - cycler >=0.10 - fonttools >=4.22.0 - freetype >=2.12.1,<3.0a0 - kiwisolver >=1.3.1 - - numpy >=1.19,<3 + - libgcc >=13 + - libstdcxx >=13 + - numpy >=1.21,<3 - numpy >=1.23 - packaging >=20.0 - pillow >=8 - pyparsing >=2.3.1 - - python >=3.12,<3.13.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 - python-dateutil >=2.7 - - python_abi 3.12.* *_cp312 + - python_abi 3.13.* *_cp313 - qhull >=2020.2,<2020.3.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - tk >=8.6.13,<8.7.0a0 + arch: aarch64 + platform: linux license: PSF-2.0 license_family: PSF - size: 7655607 - timestamp: 1733177040555 -- kind: conda - name: matplotlib-base - version: 3.9.3 - build: py312h965bf68_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/matplotlib-base-3.9.3-py312h965bf68_0.conda - sha256: 3f2e5877b1270ae68d6ef0e53d6accdae2b776aa31c8037c81f699a4035f2c14 - md5: 1b69bc4b148a0c193791d092296d69be - depends: - - certifi >=2020.06.20 + size: 8183364 + timestamp: 1734380695704 +- conda: https://conda.anaconda.org/conda-forge/osx-64/matplotlib-base-3.10.0-py313he981572_0.conda + sha256: c1c6824022c9c8ee1781ba87415804acd596488dfe723615093dbf912441b156 + md5: 765ffe9ff0204c094692b08c08b2c0f4 + depends: + - __osx >=10.13 - contourpy >=1.0.1 - cycler >=0.10 - fonttools >=4.22.0 - freetype >=2.12.1,<3.0a0 - kiwisolver >=1.3.1 - - libgcc >=13 - - libstdcxx >=13 - - numpy >=1.19,<3 + - libcxx >=18 + - numpy >=1.21,<3 - numpy >=1.23 - packaging >=20.0 - pillow >=8 - pyparsing >=2.3.1 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - python >=3.13,<3.14.0a0 - python-dateutil >=2.7 - - python_abi 3.12.* *_cp312 + - python_abi 3.13.* *_cp313 - qhull >=2020.2,<2020.3.0a0 - - tk >=8.6.13,<8.7.0a0 + arch: x86_64 + platform: osx license: PSF-2.0 license_family: PSF - size: 7872834 - timestamp: 1733176461676 -- kind: conda - name: matplotlib-base - version: 3.9.3 - build: py312hd3ec401_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/matplotlib-base-3.9.3-py312hd3ec401_0.conda - sha256: 8e8f4e20eccc2473ad14d649609dbaae74354630dbd34e58b53870d8f15d663d - md5: b023c7b33ecc2aa6726232dc3061ac6c + size: 8123416 + timestamp: 1734380645104 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.10.0-py313haaf02c0_0.conda + sha256: 8eee189e6cb7d6828f11f8b2d1cfa3dd0ce3f098028159c188bb6c9ce5e8e156 + md5: 757272482a2b333fee3cffb24e841b0c depends: - - __glibc >=2.17,<3.0.a0 - - certifi >=2020.06.20 + - __osx >=11.0 - contourpy >=1.0.1 - cycler >=0.10 - fonttools >=4.22.0 - freetype >=2.12.1,<3.0a0 - kiwisolver >=1.3.1 - - libgcc >=13 - - libstdcxx >=13 - - numpy >=1.19,<3 + - libcxx >=18 + - numpy >=1.21,<3 - numpy >=1.23 - packaging >=20.0 - pillow >=8 - pyparsing >=2.3.1 - - python >=3.12,<3.13.0a0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 - python-dateutil >=2.7 - - python_abi 3.12.* *_cp312 + - python_abi 3.13.* *_cp313 - qhull >=2020.2,<2020.3.0a0 - - tk >=8.6.13,<8.7.0a0 + arch: arm64 + platform: osx license: PSF-2.0 license_family: PSF - size: 7923928 - timestamp: 1733176194348 -- kind: conda - name: matplotlib-base - version: 3.9.3 - build: py312hdbc7e53_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/matplotlib-base-3.9.3-py312hdbc7e53_0.conda - sha256: 390baee1a7a2d9261379dff429b701033046c14189491e6163b69fe449856dcc - md5: a3599bf612a717121cae8201d5471168 + size: 8180164 + timestamp: 1734380772123 +- conda: https://conda.anaconda.org/conda-forge/win-64/matplotlib-base-3.10.0-py313h81b4f16_0.conda + sha256: 64e4fde14305da5ceb3466ae4f36fbe3ba10e7b1e01ee48187e2b13b73d60afe + md5: bdc79d66cc01a5df0679fd9ca110ea79 depends: - - __osx >=11.0 - - certifi >=2020.06.20 - contourpy >=1.0.1 - cycler >=0.10 - fonttools >=4.22.0 - freetype >=2.12.1,<3.0a0 - kiwisolver >=1.3.1 - - libcxx >=18 - - numpy >=1.19,<3 + - numpy >=1.21,<3 - numpy >=1.23 - packaging >=20.0 - pillow >=8 - pyparsing >=2.3.1 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython + - python >=3.13,<3.14.0a0 - python-dateutil >=2.7 - - python_abi 3.12.* *_cp312 + - python_abi 3.13.* *_cp313 - qhull >=2020.2,<2020.3.0a0 - license: PSF-2.0 - license_family: PSF - size: 7791133 - timestamp: 1733176544235 -- kind: conda - name: menuinst - version: 2.2.0 - build: py312h275cf98_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/menuinst-2.2.0-py312h275cf98_0.conda - sha256: 6de0335756afcbca905e4796cc801a88c568ec0711fad3777c7ae87a81628faf - md5: c435a5681c148e369bb49f8fa15acbaf - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - license: BSD-3-Clause AND MIT - size: 133005 - timestamp: 1731147494253 -- kind: conda - name: menuinst - version: 2.2.0 - build: py312h7900ff3_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/menuinst-2.2.0-py312h7900ff3_0.conda - sha256: a3d3f509e545913b6aee004b3e91c0147723b7d569ff256db9cbc8eb2d7b1772 - md5: f22f8e77b36e67297feffe03eefd5375 - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause AND MIT - size: 166308 - timestamp: 1731147065526 -- kind: conda - name: menuinst - version: 2.2.0 - build: py312h81bd7bf_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/menuinst-2.2.0-py312h81bd7bf_0.conda - sha256: b1def1d581bfd96473e854712ce77fe039835ea5c80d9a5033b0d2d2d14cdf0c - md5: 4ecad32f75f4ad25268e38778cac2b7f - depends: - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause AND MIT - size: 166659 - timestamp: 1731147206286 -- kind: conda - name: menuinst - version: 2.2.0 - build: py312h996f985_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/menuinst-2.2.0-py312h996f985_0.conda - sha256: 467e05563f58004b3d143ec7b975443b015eddd76e98f5ea71e04fdd1657b30f - md5: ef25ec436741df9dbcb2831b4ccb160d - depends: - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause AND MIT - size: 166746 - timestamp: 1731147165325 -- kind: conda - name: menuinst - version: 2.2.0 - build: py312hb401068_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/menuinst-2.2.0-py312hb401068_0.conda - sha256: caf806b6f0d8acbfc06d87c21d89b0624b5b230fd30246860399fa01f3b0ba0f - md5: 4b908217561a1274f48b0f9952fb5359 - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause AND MIT - size: 166741 - timestamp: 1731147133148 -- kind: conda - name: mesa-dri-drivers-cos6-x86_64 - version: 11.0.7 - build: h9b0a68f_1105 - build_number: 1105 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/mesa-dri-drivers-cos6-x86_64-11.0.7-h9b0a68f_1105.tar.bz2 + arch: x86_64 + platform: win + license: PSF-2.0 + license_family: PSF + size: 7984677 + timestamp: 1734381688547 +- conda: https://conda.anaconda.org/conda-forge/noarch/mesa-dri-drivers-cos6-x86_64-11.0.7-h9b0a68f_1105.tar.bz2 sha256: cf64c767ff7c6936ccde3d29aa595b96262f37c64ae868740c4f27fd24903cf5 md5: d4dca243709fbad3e94efa457ad3181f depends: @@ -17157,14 +12730,7 @@ packages: license_family: MIT size: 21659359 timestamp: 1627482582591 -- kind: conda - name: mesa-dri-drivers-cos7-aarch64 - version: 18.3.4 - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/mesa-dri-drivers-cos7-aarch64-18.3.4-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/mesa-dri-drivers-cos7-aarch64-18.3.4-ha675448_1106.tar.bz2 sha256: c1bf8ea45f1f624a13cc98105461a14c06d6bed176e1760f5d6fc46e83cd0a2b md5: 4de51329469938463885c5ce7beaa22d depends: @@ -17174,14 +12740,7 @@ packages: license_family: MIT size: 43525774 timestamp: 1726581692498 -- kind: conda - name: mesa-dri1-drivers-cos6-x86_64 - version: '7.11' - build: h9b0a68f_1105 - build_number: 1105 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/mesa-dri1-drivers-cos6-x86_64-7.11-h9b0a68f_1105.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/mesa-dri1-drivers-cos6-x86_64-7.11-h9b0a68f_1105.tar.bz2 sha256: 4835d4dcebf4944078087d25a6daeb335248c2dd70790e37ec711ee5d752de6d md5: 155946c889d98e8c3f338ae79f38806a depends: @@ -17190,14 +12749,7 @@ packages: license_family: MIT size: 4517486 timestamp: 1627480981192 -- kind: conda - name: mesa-khr-devel-cos7-aarch64 - version: 18.3.4 - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/mesa-khr-devel-cos7-aarch64-18.3.4-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/mesa-khr-devel-cos7-aarch64-18.3.4-ha675448_1106.tar.bz2 sha256: 5c1fae6082f2afd2587c44fec49c84032d2f4dcbbbf780bd5926d817c89e431a md5: 0cb1809fea234a3523d0fd814ff5fe94 depends: @@ -17206,14 +12758,7 @@ packages: license_family: MIT size: 8427 timestamp: 1726577660477 -- kind: conda - name: mesa-libegl-cos6-x86_64 - version: 11.0.7 - build: h9b0a68f_1105 - build_number: 1105 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/mesa-libegl-cos6-x86_64-11.0.7-h9b0a68f_1105.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/mesa-libegl-cos6-x86_64-11.0.7-h9b0a68f_1105.tar.bz2 sha256: 3310453750d7bada1300a34827f7d961afc8fb79c6031493440eaa65e85620c8 md5: 863a31dcd83f582cef6d04a9db333fe2 depends: @@ -17222,14 +12767,7 @@ packages: license_family: MIT size: 62589 timestamp: 1627478612418 -- kind: conda - name: mesa-libegl-cos7-aarch64 - version: 18.3.4 - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/mesa-libegl-cos7-aarch64-18.3.4-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/mesa-libegl-cos7-aarch64-18.3.4-ha675448_1106.tar.bz2 sha256: daf165497be0c56b9fe97bce3a601eb0069b25b51162c8cd7ec6a6b374c7a577 md5: d256dcf009df018c0d99170d8b0356b9 depends: @@ -17239,14 +12777,7 @@ packages: license_family: MIT size: 111719 timestamp: 1726586775763 -- kind: conda - name: mesa-libegl-devel-cos6-x86_64 - version: 11.0.7 - build: h9b0a68f_1105 - build_number: 1105 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/mesa-libegl-devel-cos6-x86_64-11.0.7-h9b0a68f_1105.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/mesa-libegl-devel-cos6-x86_64-11.0.7-h9b0a68f_1105.tar.bz2 sha256: 6079101fcdde8dbb47e423f1785010941dc936261d950b07c50e7e16ef60d61e md5: ad36d52d7054e623f52aa4a24eac8091 depends: @@ -17256,14 +12787,7 @@ packages: license_family: MIT size: 18493 timestamp: 1627484194828 -- kind: conda - name: mesa-libegl-devel-cos7-aarch64 - version: 18.3.4 - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/mesa-libegl-devel-cos7-aarch64-18.3.4-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/mesa-libegl-devel-cos7-aarch64-18.3.4-ha675448_1106.tar.bz2 sha256: 901b780bf076fabfc6caff58df1f41a49a13457a63feea30bc13f97268d1bb50 md5: 6296ae7964a7f8ccbb2633dc0055dcb9 depends: @@ -17274,14 +12798,7 @@ packages: license_family: MIT size: 20858 timestamp: 1726589972530 -- kind: conda - name: mesa-libgbm-cos7-aarch64 - version: 18.3.4 - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/mesa-libgbm-cos7-aarch64-18.3.4-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/mesa-libgbm-cos7-aarch64-18.3.4-ha675448_1106.tar.bz2 sha256: 743eb7d4594aaaf13c6c0cd4bf65c43dc68fa4c300ce5aee19ac1ac329e3422c md5: 12d9f4962f2f0b2987a6458d7f42934b depends: @@ -17292,14 +12809,7 @@ packages: license_family: MIT size: 33552 timestamp: 1726580055743 -- kind: conda - name: mesa-libgl-cos6-x86_64 - version: 11.0.7 - build: h9b0a68f_1105 - build_number: 1105 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/mesa-libgl-cos6-x86_64-11.0.7-h9b0a68f_1105.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/mesa-libgl-cos6-x86_64-11.0.7-h9b0a68f_1105.tar.bz2 sha256: 884ecba304ea7deb493c9ff02df8ddd1fbbd9ddff6584b86515d9b3e09d2fe76 md5: 02b1f3c2a6e0e0a985a23aa23fcd0a72 depends: @@ -17311,14 +12821,7 @@ packages: license_family: MIT size: 185025 timestamp: 1627484836108 -- kind: conda - name: mesa-libgl-cos7-aarch64 - version: 18.3.4 - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/mesa-libgl-cos7-aarch64-18.3.4-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/mesa-libgl-cos7-aarch64-18.3.4-ha675448_1106.tar.bz2 sha256: a93a2604823d2a73bfc94d9224d1422d7dd314d4470bb076eb0da92c9297b053 md5: 61b68708c7bc04807bd1e51bb1434bcc depends: @@ -17330,14 +12833,7 @@ packages: license_family: MIT size: 205695 timestamp: 1726585822546 -- kind: conda - name: mesa-libgl-devel-cos6-x86_64 - version: 11.0.7 - build: h9b0a68f_1105 - build_number: 1105 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/mesa-libgl-devel-cos6-x86_64-11.0.7-h9b0a68f_1105.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/mesa-libgl-devel-cos6-x86_64-11.0.7-h9b0a68f_1105.tar.bz2 sha256: 3737ba27f72ff4ec8a781cac9e9077c0e074fc2ea7be0ef1d4de6f75d2289511 md5: f7c7657e834923f81a1cab54e0f6497e depends: @@ -17347,14 +12843,7 @@ packages: license_family: MIT size: 452529 timestamp: 1627487066171 -- kind: conda - name: mesa-libgl-devel-cos7-aarch64 - version: 18.3.4 - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/mesa-libgl-devel-cos7-aarch64-18.3.4-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/mesa-libgl-devel-cos7-aarch64-18.3.4-ha675448_1106.tar.bz2 sha256: 974ce6b95bdcf4643cc34e78a2ff458dd792852bcdbceaf31e3b514e61cf3998 md5: be200abf26c4c673f40e00647016bd8e depends: @@ -17365,14 +12854,7 @@ packages: license_family: MIT size: 166618 timestamp: 1726588682006 -- kind: conda - name: mesa-libglapi-cos7-aarch64 - version: 18.3.4 - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/mesa-libglapi-cos7-aarch64-18.3.4-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/mesa-libglapi-cos7-aarch64-18.3.4-ha675448_1106.tar.bz2 sha256: a9d4d4df5c8f9547308c45c1cbee8783a12d489c36a9ecb8a03bc132dbce3ca3 md5: 920b959c968eb7aae1e9dc6f2e3eb757 depends: @@ -17381,285 +12863,220 @@ packages: license_family: MIT size: 71737 timestamp: 1726573109829 -- kind: conda - name: mkl - version: 2024.2.2 - build: h66d3029_14 - build_number: 14 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_14.conda - sha256: 098ba4a3cb82f627bc79dc0ab1111b44859c9ef4aaa8d75ce043bce107770cb3 - md5: f011e7cc21918dc9d1efe0209e27fa16 +- conda: https://conda.anaconda.org/conda-forge/win-64/mkl-2024.2.2-h66d3029_15.conda + sha256: 20e52b0389586d0b914a49cd286c5ccc9c47949bed60ca6df004d1d295f2edbd + md5: 302dff2807f2927b3e9e0d19d60121de depends: - intel-openmp 2024.* - tbb 2021.* + arch: x86_64 + platform: win license: LicenseRef-IntelSimplifiedSoftwareOct2022 license_family: Proprietary - size: 103019089 - timestamp: 1727378392081 -- kind: conda - name: mpc - version: 1.3.1 - build: h8f1351a_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda - sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158 - md5: a5635df796b71f6ca400fc7026f50701 - depends: - - __osx >=11.0 - - gmp >=6.3.0,<7.0a0 - - mpfr >=4.2.1,<5.0a0 - license: LGPL-3.0-or-later - license_family: LGPL - size: 104766 - timestamp: 1725629165420 -- kind: conda - name: mpc - version: 1.3.1 - build: h9d8efa1_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/mpc-1.3.1-h9d8efa1_1.conda + size: 103106385 + timestamp: 1730232843711 +- conda: https://conda.anaconda.org/conda-forge/osx-64/mpc-1.3.1-h9d8efa1_1.conda sha256: dcf91571da6c2f0db96d43a1b639047def05a0e1b6436d42c9129ab14af47b10 md5: 0520855aaae268ea413d6bc913f1384c depends: - __osx >=10.13 - gmp >=6.3.0,<7.0a0 - mpfr >=4.2.1,<5.0a0 + arch: x86_64 + platform: osx license: LGPL-3.0-or-later license_family: LGPL size: 107774 timestamp: 1725629348601 -- kind: conda - name: mpfr - version: 4.2.1 - build: haed47dc_3 - build_number: 3 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.2.1-haed47dc_3.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpc-1.3.1-h8f1351a_1.conda + sha256: 2700899ad03302a1751dbf2bca135407e470dd83ac897ab91dd8675d4300f158 + md5: a5635df796b71f6ca400fc7026f50701 + depends: + - __osx >=11.0 + - gmp >=6.3.0,<7.0a0 + - mpfr >=4.2.1,<5.0a0 + arch: arm64 + platform: osx + license: LGPL-3.0-or-later + license_family: LGPL + size: 104766 + timestamp: 1725629165420 +- conda: https://conda.anaconda.org/conda-forge/osx-64/mpfr-4.2.1-haed47dc_3.conda sha256: dddb6721dff05b8dfb654c532725330231fcb81ff1e27d885ee0cdcc9fccf1c4 md5: d511e58aaaabfc23136880d9956fa7a6 depends: - __osx >=10.13 - gmp >=6.3.0,<7.0a0 + arch: x86_64 + platform: osx license: LGPL-3.0-only license_family: LGPL size: 373396 timestamp: 1725746891597 -- kind: conda - name: mpfr - version: 4.2.1 - build: hb693164_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mpfr-4.2.1-hb693164_3.conda sha256: 4463e4e2aba7668e37a1b8532859191b4477a6f3602a5d6b4d64ad4c4baaeac5 md5: 4e4ea852d54cc2b869842de5044662fb depends: - __osx >=11.0 - gmp >=6.3.0,<7.0a0 + arch: arm64 + platform: osx license: LGPL-3.0-only license_family: LGPL size: 345517 timestamp: 1725746730583 -- kind: conda - name: msgpack-python - version: 1.1.0 - build: py312h451a7dd_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/msgpack-python-1.1.0-py312h451a7dd_0.conda - sha256: 4d31391007a9bea03aa9637e5de7fde5d3c32bac2b0f55fceed0a18b0077a907 - md5: 15e5cebe90fe26204128ad169ffe0c48 +- conda: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.0-py313h33d0bda_0.conda + sha256: 40bec80e3f3e6e9791211d2336fb561f80525f228bacebd8760035e6c883c841 + md5: 7f907b1065247efa419bb70d3a3341b5 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: Apache-2.0 - license_family: Apache - size: 102609 - timestamp: 1725975196338 -- kind: conda - name: msgpack-python - version: 1.1.0 - build: py312h6142ec9_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.1.0-py312h6142ec9_0.conda - sha256: 2b8c22f8a4e0031c2d6fa81d32814c8afdaf7e7fe2e681bf2369a35ff3eab1fd - md5: 0dfc3750cc6bbc463d72c0b727e60d8a - depends: - - __osx >=11.0 - - libcxx >=17 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - python >=3.13.0rc2,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 90793 - timestamp: 1725975279147 -- kind: conda - name: msgpack-python - version: 1.1.0 - build: py312h68727a3_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/msgpack-python-1.1.0-py312h68727a3_0.conda - sha256: 4bc53333774dea1330643b7e23aa34fd6880275737fc2e07491795872d3af8dd - md5: 5c9b020a3f86799cdc6115e55df06146 + size: 105603 + timestamp: 1725975184020 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/msgpack-python-1.1.0-py313h44a8f36_0.conda + sha256: 323ba3ac81f52f6931d838b82693d3e347dc1e6d41eb57d20127e4250d4da49f + md5: 276cd7fd9539832e48610aa3ed0da147 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13.0rc2,<3.14.0a0 + - python >=3.13.0rc2,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache - size: 105271 - timestamp: 1725975182669 -- kind: conda - name: msgpack-python - version: 1.1.0 - build: py312hc5c4d5f_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.1.0-py312hc5c4d5f_0.conda - sha256: d12f400fb57eef8aae8a8b2a3c4d4917130b9bd8f08a631646e3bf4a6551bb54 - md5: 3448a4ca65790764c2f8d44d5f917f84 + size: 102333 + timestamp: 1725975235173 +- conda: https://conda.anaconda.org/conda-forge/osx-64/msgpack-python-1.1.0-py313h0c4e38b_0.conda + sha256: 0c6b789b16f43dbee013ea4f338aa0754bc7afd2b298eabab0f552d13158d8b0 + md5: 74f9203e717afb9753b5c3604b4c6bd0 depends: - __osx >=10.13 - libcxx >=17 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13.0rc2,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 90527 + timestamp: 1725975171256 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/msgpack-python-1.1.0-py313hf9c7212_0.conda + sha256: e896c0c0f68eaa72ca83aa26f5b72632360cbd63fa4ea752118c722462566561 + md5: 0bbe5d88473e2c92af8b2a977421d4cc + depends: + - __osx >=11.0 + - libcxx >=17 + - python >=3.13.0rc2,<3.14.0a0 + - python >=3.13.0rc2,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache - size: 90548 - timestamp: 1725975181015 -- kind: conda - name: msgpack-python - version: 1.1.0 - build: py312hd5eb7cc_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/msgpack-python-1.1.0-py312hd5eb7cc_0.conda - sha256: 3fd45d9c0830e931e34990cb90e88ba53cc7f89fce69fc7d1a8289639d363e85 - md5: ff4f1e63a6438a06d1ab259936e5c2ac - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + size: 91532 + timestamp: 1725975376837 +- conda: https://conda.anaconda.org/conda-forge/win-64/msgpack-python-1.1.0-py313h1ec8472_0.conda + sha256: 13b31452673afd8c88a58c254a6dc79bce354a7d163103a68f0fc7e5a100d838 + md5: 25bd95c73a146d4fd874711d77daf175 + depends: + - python >=3.13.0rc2,<3.14.0a0 + - python_abi 3.13.* *_cp313 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: Apache-2.0 license_family: Apache - size: 88169 - timestamp: 1725975418157 -- kind: conda - name: msys2-conda-epoch - version: '20160418' - build: '1' - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/msys2-conda-epoch-20160418-1.tar.bz2 + size: 89056 + timestamp: 1725975607234 +- conda: https://conda.anaconda.org/conda-forge/win-64/msys2-conda-epoch-20160418-1.tar.bz2 sha256: 99358d58d778abee4dca82ad29fb58058571f19b0f86138363c260049d4ac7f1 md5: b0309b72560df66f71a9d5e34a5efdfa + arch: x86_64 + platform: win size: 3227 timestamp: 1608166968312 -- kind: conda - name: multidict - version: 6.1.0 - build: py312h178313f_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py312h178313f_1.conda - sha256: bf9cb8487f447098bd4a8248b4f176f34dd55be729a67b8ac2fdb984b80c5d46 - md5: e397d9b841c37fc3180b73275ce7e990 +- conda: https://conda.anaconda.org/conda-forge/linux-64/multidict-6.1.0-py313h8060acc_2.conda + sha256: f816f1c06cf41401d64adc166c478c400522cbd5111bb6cd6fe289e75c631c99 + md5: f866d5040a7cd92ed1459af783bd4bd4 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 61519 - timestamp: 1729065799315 -- kind: conda - name: multidict - version: 6.1.0 - build: py312h31fea79_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/multidict-6.1.0-py312h31fea79_1.conda - sha256: 374050b314f35b7d869b7f085284a8ac3de2030f5b26e4992845e3f881626846 - md5: f5489605efd8bf8a850383d146f00d84 - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + size: 61633 + timestamp: 1733913350617 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py313h857f82b_2.conda + sha256: dd35aca882b62ff120809a14b8d25866dc321d6f85acb8d9acf3db7ba08ca3aa + md5: f9c9879c5fac2655364e299ee36959f4 + depends: + - libgcc >=13 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 56283 - timestamp: 1729066082188 -- kind: conda - name: multidict - version: 6.1.0 - build: py312h6f3313d_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/multidict-6.1.0-py312h6f3313d_1.conda - sha256: 326c92cd8e4bc85294f2f0b5cdf97d90e96158c2881915256e99f8bc07559960 - md5: 47e51ecdee53dfc456f02ad633aa43bf + size: 63224 + timestamp: 1733913307123 +- conda: https://conda.anaconda.org/conda-forge/osx-64/multidict-6.1.0-py313h797cdad_1.conda + sha256: a6485450dcf0bc8b9eee6259cd8e9f9ce1e9d527238936a7496123fb7bf55742 + md5: 2982a64f7e47c574cdec6c6efcd3a604 depends: - __osx >=10.13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: Apache-2.0 - license_family: APACHE - size: 55520 - timestamp: 1729065636269 -- kind: conda - name: multidict - version: 6.1.0 - build: py312hcc812fe_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/multidict-6.1.0-py312hcc812fe_1.conda - sha256: 39264fd518c5dcda3affed162b874a58c775a5f5eb81e0aaf2387e92408a3490 - md5: 7629c9ce86495fa01cdfc3ea5418d03f - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: osx license: Apache-2.0 license_family: APACHE - size: 62830 - timestamp: 1729065694252 -- kind: conda - name: multidict - version: 6.1.0 - build: py312hdb8e49c_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py312hdb8e49c_1.conda - sha256: 482fd09fb798090dc8cce2285fa69f43b1459099122eac2fb112d9b922b9f916 - md5: 0048335516fed938e4dd2c457b4c5b9b + size: 55685 + timestamp: 1729065631241 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/multidict-6.1.0-py313h6347b5a_1.conda + sha256: 4822ae1adb18aebd8adc4b14575af3b73a72d8fc0cdd9183abfb64806da2bdba + md5: a2fd6163d77cd463c89f8746ad11cac7 depends: - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE - size: 55968 - timestamp: 1729065664275 -- kind: conda - name: munkres - version: 1.1.4 - build: pyh9f0ad1d_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 + size: 56170 + timestamp: 1729065738448 +- conda: https://conda.anaconda.org/conda-forge/win-64/multidict-6.1.0-py313hb4c8b1a_1.conda + sha256: 5444ccc06a90bae22fb82c300ea3a5e8d272c31b0a4714903d43068ac8f952b6 + md5: f5dcac60e424267e56f8447c3de17e68 + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win + license: Apache-2.0 + license_family: APACHE + size: 57100 + timestamp: 1729066082169 +- conda: https://conda.anaconda.org/conda-forge/noarch/munkres-1.1.4-pyh9f0ad1d_0.tar.bz2 sha256: f86fb22b58e93d04b6f25e0d811b56797689d598788b59dcb47f59045b568306 md5: 2ba8498c1018c1e9c61eb99b973dfe19 depends: @@ -17668,395 +13085,299 @@ packages: license_family: Apache size: 12452 timestamp: 1600387789153 -- kind: conda - name: mysql-common - version: 9.0.1 - build: h0887d5e_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/mysql-common-9.0.1-h0887d5e_2.conda - sha256: 7769d67c3b9463e45ec8e57ea3e0adfdd2f17c0c2b32226e1e88ed669baf14fe - md5: 7643ebb29dae0a548c356c5c4d44b79e - depends: - - __osx >=11.0 - - libcxx >=17 - - openssl >=3.3.2,<4.0a0 - license: GPL-2.0-or-later - license_family: GPL - size: 630582 - timestamp: 1729802112289 -- kind: conda - name: mysql-common - version: 9.0.1 - build: h266115a_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/mysql-common-9.0.1-h266115a_2.conda - sha256: bf0c230c35ca70e2c98530eb064a99f0c4d4596793a0be3ca8a3cbd92094ef82 - md5: 85c0dc0bcd110c998b01856975486ee7 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-common-9.0.1-h266115a_4.conda + sha256: e7767d2a0f30b62ab601f84fad68877969b6317e28668e71ae3cd0b6305041ed + md5: 9a5a1e3db671a8258c3f2c1969a4c654 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux license: GPL-2.0-or-later license_family: GPL - size: 649443 - timestamp: 1729804130603 -- kind: conda - name: mysql-common - version: 9.0.1 - build: h3f5c77f_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/mysql-common-9.0.1-h3f5c77f_2.conda - sha256: 27cb52f00b2fedb89ed4e7ed2527caf7c5b245dac76a809d0aed58514e08d325 - md5: cc7bc11893dd1aee492dae85f317769e + size: 619517 + timestamp: 1735638585202 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mysql-common-9.0.1-h3f5c77f_4.conda + sha256: e7caf4da5d7e2273dd1fcaa9907771d0536019122fe64ad687665193b5edbf10 + md5: 252699a6b6e8e86d64d37c360ac8d783 depends: - libgcc >=13 - libstdcxx >=13 - - openssl >=3.3.2,<4.0a0 + - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux license: GPL-2.0-or-later license_family: GPL - size: 636837 - timestamp: 1729806881403 -- kind: conda - name: mysql-common - version: 9.0.1 - build: h918ca22_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/mysql-common-9.0.1-h918ca22_2.conda - sha256: d46a234777afaa7f7c4aa1898067a89f43d86db348909fee1b418713809e8836 - md5: 6adefe5eada0fb37f098288127961ac9 + size: 611639 + timestamp: 1735640433087 +- conda: https://conda.anaconda.org/conda-forge/osx-64/mysql-common-9.0.1-h4d37847_4.conda + sha256: 4bb83ffc66e5e7d56a9dc0080e1c098a1d0c8b9366d5abd3032a3b024ee634c3 + md5: 84d6e450a46b7c854f89874d32631430 depends: - __osx >=10.13 - - libcxx >=17 - - openssl >=3.3.2,<4.0a0 + - libcxx >=18 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: osx + license: GPL-2.0-or-later + license_family: GPL + size: 608088 + timestamp: 1735635272818 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mysql-common-9.0.1-hd7719f6_4.conda + sha256: 2c66b7ec4ccf2d0470707893bf0448df87b7b5e6f8f1272a9c8bfc92699306f6 + md5: 9fa04d5a66c24234855c105f18c05695 + depends: + - __osx >=11.0 + - libcxx >=18 + - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx license: GPL-2.0-or-later license_family: GPL - size: 644932 - timestamp: 1729801807155 -- kind: conda - name: mysql-libs - version: 9.0.1 - build: h11569fd_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/mysql-libs-9.0.1-h11569fd_2.conda - sha256: 0c014ecbb449cd10bab96bf036cae646068ce42827f582244117adc805850d04 - md5: 94c70f21e0a1f8558941d901027215a4 + size: 641582 + timestamp: 1735635250146 +- conda: https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-9.0.1-he0572af_4.conda + sha256: e5c805c3150b16dc9de9163850aa2b282a97e0e7b1ec0f6e93ee57c5d433891b + md5: af19508df9d2e9f6894a9076a0857dc7 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - mysql-common 9.0.1 h3f5c77f_2 - - openssl >=3.3.2,<4.0a0 + - mysql-common 9.0.1 h266115a_4 + - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: linux license: GPL-2.0-or-later license_family: GPL - size: 1408789 - timestamp: 1729806960210 -- kind: conda - name: mysql-libs - version: 9.0.1 - build: h502887b_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/mysql-libs-9.0.1-h502887b_2.conda - sha256: df608e92b025d8f83c10a5a932d2b3c16b983571016a04fc21d3660d04e820fe - md5: 901d570614d2c0c58a6e3800d9261cf4 + size: 1373945 + timestamp: 1735638682677 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/mysql-libs-9.0.1-h11569fd_4.conda + sha256: 410cc48096c13847f3d3d1fb5dd68f38c8be76fb7df806bfd5e24e011af3f2da + md5: 283642d922c40633996f0f1afb5c9993 depends: - - __osx >=10.13 - - libcxx >=17 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 - - mysql-common 9.0.1 h918ca22_2 - - openssl >=3.3.2,<4.0a0 + - mysql-common 9.0.1 h3f5c77f_4 + - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: aarch64 + platform: linux license: GPL-2.0-or-later license_family: GPL - size: 1329554 - timestamp: 1729802009317 -- kind: conda - name: mysql-libs - version: 9.0.1 - build: he0572af_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/mysql-libs-9.0.1-he0572af_2.conda - sha256: e376189cd11304f4089971b372dac8a1cbbab6eacda8ca978ead2c220d16b8a4 - md5: 57a9e7ee3c0840d3c8c9012473978629 + size: 1407975 + timestamp: 1735640521830 +- conda: https://conda.anaconda.org/conda-forge/osx-64/mysql-libs-9.0.1-h2381dc1_4.conda + sha256: 151b47c1d917cc9f477e51494f27a6c18cda3a02b3b61c7c53648e93689837ba + md5: 804fe1ddb235a660c5ad3c22304f2dad depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 + - __osx >=10.13 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - - mysql-common 9.0.1 h266115a_2 - - openssl >=3.3.2,<4.0a0 + - mysql-common 9.0.1 h4d37847_4 + - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: x86_64 + platform: osx license: GPL-2.0-or-later license_family: GPL - size: 1372671 - timestamp: 1729804203990 -- kind: conda - name: mysql-libs - version: 9.0.1 - build: he9bc4e1_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/mysql-libs-9.0.1-he9bc4e1_2.conda - sha256: ca89f4accacfc2297b5036aa847c2387c53aa937c8f9050ceec275c1be32eec1 - md5: f36d1cf1ffeb604bac5870c04cb4ee8f + size: 1330412 + timestamp: 1735635486887 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/mysql-libs-9.0.1-ha8be5b7_4.conda + sha256: df162ee06596e0b824c6c7eab5f3b21486681bd7b6ae3ff94e85b2ace512866b + md5: c029a6b3510dbbb2d684cc3a935dbde2 depends: - __osx >=11.0 - - libcxx >=17 + - libcxx >=18 - libzlib >=1.3.1,<2.0a0 - - mysql-common 9.0.1 h0887d5e_2 - - openssl >=3.3.2,<4.0a0 + - mysql-common 9.0.1 hd7719f6_4 + - openssl >=3.4.0,<4.0a0 - zstd >=1.5.6,<1.6.0a0 + arch: arm64 + platform: osx license: GPL-2.0-or-later license_family: GPL - size: 1346928 - timestamp: 1729802330351 -- kind: conda - name: ncurses - version: '6.5' - build: h7bae524_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda - sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc - md5: cb2b0ea909b97b3d70cd3921d1445e1a + size: 1351973 + timestamp: 1735635466941 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda + sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a + md5: 70caf8bb6cf39a0b6b7efc885f51c0fe depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + arch: x86_64 + platform: linux license: X11 AND BSD-3-Clause - size: 802321 - timestamp: 1724658775723 -- kind: conda - name: ncurses - version: '6.5' - build: hcccb83c_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda + size: 889086 + timestamp: 1724658547447 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ncurses-6.5-hcccb83c_1.conda sha256: acad4cf1f57b12ee1e42995e6fac646fa06aa026529f05eb8c07eb0a84a47a84 md5: 91d49c85cacd92caa40cf375ef72a25d depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: X11 AND BSD-3-Clause size: 924472 timestamp: 1724658573518 -- kind: conda - name: ncurses - version: '6.5' - build: he02047a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ncurses-6.5-he02047a_1.conda - sha256: 6a1d5d8634c1a07913f1c525db6455918cbc589d745fac46d9d6e30340c8731a - md5: 70caf8bb6cf39a0b6b7efc885f51c0fe - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - license: X11 AND BSD-3-Clause - size: 889086 - timestamp: 1724658547447 -- kind: conda - name: ncurses - version: '6.5' - build: hf036a51_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-hf036a51_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/ncurses-6.5-hf036a51_1.conda sha256: b0b3180039ef19502525a2abd5833c00f9624af830fd391f851934d57bffb9af md5: e102bbf8a6ceeaf429deab8032fc8977 depends: - __osx >=10.13 + arch: x86_64 + platform: osx license: X11 AND BSD-3-Clause size: 822066 timestamp: 1724658603042 -- kind: conda - name: ninja - version: 1.12.1 - build: h297d8ca_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.12.1-h297d8ca_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ncurses-6.5-h7bae524_1.conda + sha256: 27d0b9ff78ad46e1f3a6c96c479ab44beda5f96def88e2fe626e0a49429d8afc + md5: cb2b0ea909b97b3d70cd3921d1445e1a + depends: + - __osx >=11.0 + arch: arm64 + platform: osx + license: X11 AND BSD-3-Clause + size: 802321 + timestamp: 1724658775723 +- conda: https://conda.anaconda.org/conda-forge/linux-64/ninja-1.12.1-h297d8ca_0.conda sha256: 40f7b76b07067935f8a5886aab0164067b7aa71eb5ad20b7278618c0c2c98e06 md5: 3aa1c7e292afeff25a0091ddd7c69b72 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache size: 2198858 timestamp: 1715440571685 -- kind: conda - name: ninja - version: 1.12.1 - build: h3c5361c_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/ninja-1.12.1-h3c5361c_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ninja-1.12.1-h70be974_0.conda + sha256: a42f12c03a69cdcd2e7d5f95fd4e0f1e5fc43ef482aff2b8ee16a3730cc642de + md5: 216635cea46498d8045c7cf0f03eaf72 + depends: + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: aarch64 + platform: linux + license: Apache-2.0 + license_family: Apache + size: 2329583 + timestamp: 1715442512963 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ninja-1.12.1-h3c5361c_0.conda sha256: 230f11a2f73955b67550be09a0c1fd053772f5e01e98d5873547d63ebea73229 md5: a0ebabd021c8191aeb82793fe43cfdcb depends: - __osx >=10.13 - libcxx >=16 + arch: x86_64 + platform: osx license: Apache-2.0 license_family: Apache size: 124942 timestamp: 1715440780183 -- kind: conda - name: ninja - version: 1.12.1 - build: h420ef59_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ninja-1.12.1-h420ef59_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ninja-1.12.1-h420ef59_0.conda sha256: 11528acfa0f05d0c51639f6b09b51dc6611b801668449bb36c206c4b055be4f4 md5: 9166c10405d41c95ffde8fcb8e5c3d51 depends: - __osx >=11.0 - libcxx >=16 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 112576 timestamp: 1715440927034 -- kind: conda - name: ninja - version: 1.12.1 - build: h70be974_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ninja-1.12.1-h70be974_0.conda - sha256: a42f12c03a69cdcd2e7d5f95fd4e0f1e5fc43ef482aff2b8ee16a3730cc642de - md5: 216635cea46498d8045c7cf0f03eaf72 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - license: Apache-2.0 - license_family: Apache - size: 2329583 - timestamp: 1715442512963 -- kind: conda - name: ninja - version: 1.12.1 - build: hc790b64_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/ninja-1.12.1-hc790b64_0.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/ninja-1.12.1-hc790b64_0.conda sha256: b821cb72cb3ef08fab90a9bae899510e6cf3c23b5da6070d1ec30099dfe6a5be md5: a557dde55343e03c68cd7e29e7f87279 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: Apache-2.0 license_family: Apache size: 285150 timestamp: 1715441052517 -- kind: conda - name: nlohmann_json - version: 3.11.3 - build: h00cdb27_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda - sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b - md5: d2dee849c806430eee64d3acc98ce090 +- conda: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda + sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 + md5: e46f7ac4917215b49df2ea09a694a3fa depends: - - __osx >=11.0 - - libcxx >=16 + - __glibc >=2.17,<3.0.a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 123250 - timestamp: 1723652704997 -- kind: conda - name: nlohmann_json - version: 3.11.3 - build: h0a1ffab_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda + size: 122743 + timestamp: 1723652407663 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/nlohmann_json-3.11.3-h0a1ffab_1.conda sha256: c90b1f11fc337d90a9e4c5aeeacac1418c5ba6a195097086566d38bb2ecf0f24 md5: f2bd10ff23ab5c87327439c4499b3f3e depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 122755 timestamp: 1723652622631 -- kind: conda - name: nlohmann_json - version: 3.11.3 - build: he02047a_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/nlohmann_json-3.11.3-he02047a_1.conda - sha256: ce4bcced4f8eea71b7cac8bc3daac097abf7a5792f278cd811dedada199500c1 - md5: e46f7ac4917215b49df2ea09a694a3fa +- conda: https://conda.anaconda.org/conda-forge/osx-64/nlohmann_json-3.11.3-hf036a51_1.conda + sha256: 41b1aa2a67654917c9c32a5f0111970b11cfce49ed57cf44bba4aefdcd59e54b + md5: 00c3efa95b3a010ee85bc36aac6ab2f6 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __osx >=10.13 + - libcxx >=16 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 122743 - timestamp: 1723652407663 -- kind: conda - name: nlohmann_json - version: 3.11.3 - build: he0c23c2_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/nlohmann_json-3.11.3-he0c23c2_1.conda + size: 122773 + timestamp: 1723652497933 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/nlohmann_json-3.11.3-h00cdb27_1.conda + sha256: 3f4e6a4fa074bb297855f8111ab974dab6d9f98b7d4317d4dd46f8687ee2363b + md5: d2dee849c806430eee64d3acc98ce090 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 123250 + timestamp: 1723652704997 +- conda: https://conda.anaconda.org/conda-forge/win-64/nlohmann_json-3.11.3-he0c23c2_1.conda sha256: 106af14431772a6bc659e8d5a3bb1930cf1010b85e0e7eca99ecd3e556e91470 md5: 340cbb4ab78c90cd9d08f826ad22aed2 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: MIT license_family: MIT size: 124255 timestamp: 1723652081336 -- kind: conda - name: nlohmann_json - version: 3.11.3 - build: hf036a51_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/nlohmann_json-3.11.3-hf036a51_1.conda - sha256: 41b1aa2a67654917c9c32a5f0111970b11cfce49ed57cf44bba4aefdcd59e54b - md5: 00c3efa95b3a010ee85bc36aac6ab2f6 +- conda: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_1.conda + sha256: 3636eec0e60466a00069b47ce94b6d88b01419b6577d8e393da44bb5bc8d3468 + md5: 7ba3f09fceae6a120d664217e58fe686 depends: - - __osx >=10.13 - - libcxx >=16 - license: MIT - license_family: MIT - size: 122773 - timestamp: 1723652497933 -- kind: conda - name: nodeenv - version: 1.9.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/nodeenv-1.9.1-pyhd8ed1ab_0.conda - sha256: 85ee07342ab055dc081f3de8292c5e7195e43e046db9c5750f242f928f6bb8f2 - md5: dfe0528d0f1c16c1f7c528ea5536ab30 - depends: - - python 2.7|>=3.7 + - python >=3.9 - setuptools license: BSD-3-Clause license_family: BSD - size: 34489 - timestamp: 1717585382642 -- kind: conda - name: noqt5 - version: '1.0' - build: hd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/noqt5-1.0-hd8ed1ab_1.conda + size: 34574 + timestamp: 1734112236147 +- conda: https://conda.anaconda.org/conda-forge/noarch/noqt5-1.0-hd8ed1ab_1.conda sha256: b785c3daf3c6038680c2bb93ebc1aeadca076dcc127ee0797359df67e635fd26 md5: 59b5eb8b88b1c63db676a498767c1267 constrains: @@ -18066,127 +13387,106 @@ packages: license_family: BSD size: 6347 timestamp: 1732243385797 -- kind: conda - name: numpy - version: 2.1.3 - build: py312h2eb110b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-2.1.3-py312h2eb110b_0.conda - sha256: 58a089949d87c4d54b9a02adc88f986318c6ff5525f37a82b0ddcc6acc8f4f37 - md5: 09c72d80ff045b05a4bb3d3089f3e41e +- conda: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.2.1-py313hb30382a_0.conda + sha256: 53c5baea29d111126b6dbe969ac1c36d481740f0f91babe6cfd121b8d9d8e67f + md5: bacc73d89e22828efedf31fdc4b54b4e depends: + - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - libgcc >=13 - liblapack >=3.9.0,<4.0a0 - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 constrains: - numpy-base <0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 7106685 - timestamp: 1730588472368 -- kind: conda - name: numpy - version: 2.1.3 - build: py312h49bc9c5_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/numpy-2.1.3-py312h49bc9c5_0.conda - sha256: f7e6648e2e55de450c8022008eb86158c55786f360aacc91fe3a5a53ba52d5d8 - md5: 4d03cad3ea6c6cc575f1fd811691432f + size: 8478406 + timestamp: 1734904713763 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/numpy-2.2.1-py313haaed576_0.conda + sha256: ddf789946f030461b477e4bc86d8c0f9740c0797c448749869ba4deec4ecdbd0 + md5: 8c4dea0375df35c07ddeddc9b8daa871 depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 - liblapack >=3.9.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - libstdcxx >=13 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 constrains: - numpy-base <0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 6965471 - timestamp: 1730589010831 -- kind: conda - name: numpy - version: 2.1.3 - build: py312h58c1407_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/numpy-2.1.3-py312h58c1407_0.conda - sha256: e4c14f71588a5627a6935d3e7d9ca78a8387229ec8ebc91616b0988ce57ba0dc - md5: dfdbc12e6d81889ba4c494a23f23eba8 + size: 7189047 + timestamp: 1734904698409 +- conda: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.2.1-py313h6ae94ac_0.conda + sha256: 0eb6d653ab2c4f6c3718fa0bcbf4b5feb132dc6c27c3befb4a98ebfd9ffcf36f + md5: b2e20a8de4f49e1d55ec3e10b73840c1 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=10.13 - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libgcc >=13 + - libcxx >=18 - liblapack >=3.9.0,<4.0a0 - - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 constrains: - numpy-base <0a0 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 8388631 - timestamp: 1730588649810 -- kind: conda - name: numpy - version: 2.1.3 - build: py312h94ee1e1_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.1.3-py312h94ee1e1_0.conda - sha256: cd287b6c270ee8af77d200c46d56fdfe1e2a9deeff68044439718b8d073214dd - md5: a2af54c86582e08718805c69af737897 + size: 7643198 + timestamp: 1734904720875 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/numpy-2.2.1-py313ha4a2180_0.conda + sha256: c6dafb68d407bd4f34a8e178fe37be0c0c6533e6408a066d2cfcdccd6eb63402 + md5: 186189cd83b1b95e73a805a268bc7a98 depends: - __osx >=11.0 - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - libcxx >=18 - liblapack >=3.9.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 constrains: - numpy-base <0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 6398123 - timestamp: 1730588490904 -- kind: conda - name: numpy - version: 2.1.3 - build: py312hfc93d17_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/numpy-2.1.3-py312hfc93d17_0.conda - sha256: 2f120e958da2d6ab7e4785a42515b4f65f70422b8b722e1a75654962fcfb26e9 - md5: 011118baf131914d1cb48e07317f0946 + size: 6513050 + timestamp: 1734904817005 +- conda: https://conda.anaconda.org/conda-forge/win-64/numpy-2.2.1-py313hd65a2fa_0.conda + sha256: a49b54335d97b674bc09dacce0b232cf748e730500dcc45172f8dd9db3c0fb99 + md5: 80b2f22cec897016e76261aea177fde8 depends: - - __osx >=10.13 - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libcxx >=18 - liblapack >=3.9.0,<4.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 constrains: - numpy-base <0a0 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD - size: 7538388 - timestamp: 1730588494493 -- kind: conda - name: occt - version: 7.8.1 - build: all_h4c4714a_203 - build_number: 203 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/occt-7.8.1-all_h4c4714a_203.conda + size: 7147174 + timestamp: 1734905243335 +- conda: https://conda.anaconda.org/conda-forge/linux-64/occt-7.8.1-all_h4c4714a_203.conda sha256: 581ac3387afaf349f44d4b03469d7849093ad868509ef109e6e149d48211f990 md5: 43aed13aae8e2d25f232e98cb636e139 depends: @@ -18201,17 +13501,13 @@ packages: - vtk - vtk-base >=9.3.1,<9.3.2.0a0 - xorg-libxt >=1.3.0,<2.0a0 + arch: x86_64 + platform: linux license: LGPL-2.1-only license_family: LGPL size: 28529142 timestamp: 1729329346168 -- kind: conda - name: occt - version: 7.8.1 - build: all_h78e3548_203 - build_number: 203 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/occt-7.8.1-all_h78e3548_203.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/occt-7.8.1-all_h78e3548_203.conda sha256: 36df2c302b0db14d541831edca21b6bb40d27f25915556beee57deaa42cc0fe6 md5: 3f7934863b690dea888116794f309bdf depends: @@ -18225,21 +13521,17 @@ packages: - vtk - vtk-base >=9.3.1,<9.3.2.0a0 - xorg-libxt >=1.3.0,<2.0a0 + arch: aarch64 + platform: linux license: LGPL-2.1-only license_family: LGPL size: 26951693 timestamp: 1729329781771 -- kind: conda - name: occt - version: 7.8.1 - build: all_h869bdd7_203 - build_number: 203 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/occt-7.8.1-all_h869bdd7_203.conda - sha256: 0615e7a63fa4b671057bf72c9b0eb42527a2853fe15338eea76bbb36dc0201d5 - md5: 6c192205820d2919496c0e83dc52a7c2 +- conda: https://conda.anaconda.org/conda-forge/osx-64/occt-7.8.1-all_ha9a7d59_203.conda + sha256: 34a68aadfe98265a24a1c43305fd6188a01ad5f18cedc32e9c722d8b8c67d718 + md5: b1470601a9f4b2f3401c0426153bf2f5 depends: - - __osx >=11.0 + - __osx >=10.13 - fontconfig >=2.14.2,<3.0a0 - fonts-conda-ecosystem - freeimage >=3.18.0,<3.19.0a0 @@ -18248,21 +13540,17 @@ packages: - rapidjson - vtk - vtk-base >=9.3.1,<9.3.2.0a0 + arch: x86_64 + platform: osx license: LGPL-2.1-only license_family: LGPL - size: 23711359 - timestamp: 1729329035391 -- kind: conda - name: occt - version: 7.8.1 - build: all_ha9a7d59_203 - build_number: 203 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/occt-7.8.1-all_ha9a7d59_203.conda - sha256: 34a68aadfe98265a24a1c43305fd6188a01ad5f18cedc32e9c722d8b8c67d718 - md5: b1470601a9f4b2f3401c0426153bf2f5 + size: 24943534 + timestamp: 1729329001159 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/occt-7.8.1-all_h869bdd7_203.conda + sha256: 0615e7a63fa4b671057bf72c9b0eb42527a2853fe15338eea76bbb36dc0201d5 + md5: 6c192205820d2919496c0e83dc52a7c2 depends: - - __osx >=10.13 + - __osx >=11.0 - fontconfig >=2.14.2,<3.0a0 - fonts-conda-ecosystem - freeimage >=3.18.0,<3.19.0a0 @@ -18271,17 +13559,13 @@ packages: - rapidjson - vtk - vtk-base >=9.3.1,<9.3.2.0a0 + arch: arm64 + platform: osx license: LGPL-2.1-only license_family: LGPL - size: 24943534 - timestamp: 1729329001159 -- kind: conda - name: occt - version: 7.8.1 - build: all_hae6dad1_203 - build_number: 203 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/occt-7.8.1-all_hae6dad1_203.conda + size: 23711359 + timestamp: 1729329035391 +- conda: https://conda.anaconda.org/conda-forge/win-64/occt-7.8.1-all_hae6dad1_203.conda sha256: 4fdcaec136386a7348b98cd588446d7e76861a17dfc383cc0e9204666f8da9c0 md5: a4828b8b040e39e33c6de4c15b7cf1b5 depends: @@ -18295,305 +13579,271 @@ packages: - vc14_runtime >=14.29.30139 - vtk - vtk-base >=9.3.1,<9.3.2.0a0 + arch: x86_64 + platform: win license: LGPL-2.1-only license_family: LGPL size: 24824977 timestamp: 1729330486797 -- kind: conda - name: ocl-icd - version: 2.3.2 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/ocl-icd-2.3.2-hb9d3cd8_2.conda sha256: 96ddd13054032fabd54636f634d50bc74d10d8578bc946405c429b2d895db6f2 md5: 2e8d2b469559d6b2cb6fd4b34f9c8d7f depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - opencl-headers >=2024.10.24 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD size: 94934 timestamp: 1732915114536 -- kind: conda - name: opencl-headers - version: 2024.10.24 - build: h5888daf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/opencl-headers-2024.10.24-h5888daf_0.conda sha256: 7e1d3ad55d4ad3ddf826e205d4603b9ed40c5e655a9dfd66b56f459d7ba14db3 md5: 3ba02cce423fdac1a8582bd6bb189359 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE size: 54060 timestamp: 1732912937444 -- kind: conda - name: openexr - version: 3.3.2 - build: h04410fd_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openexr-3.3.2-h04410fd_0.conda - sha256: 8a6ed34ad47af3483a7dfbe6c872938fbbecd6800fcb66870a1f74e9bd39a5ec - md5: 8fad0e7c4bab81ffd76e002c1a108997 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.3.2-h6326327_1.conda + sha256: c4fe8f44c5c7c7cb872a518c9e279dc351047c479bda498bfd229ac58e6aff65 + md5: 3d2b6258db35c422c95ad89b72bf0aae depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - imath >=3.1.12,<3.1.13.0a0 - - libcxx >=18 - - libdeflate >=1.22,<1.23.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 1224909 - timestamp: 1731857788337 -- kind: conda - name: openexr - version: 3.3.2 - build: h0b01aae_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/openexr-3.3.2-h0b01aae_0.conda - sha256: 175b6ef9f515fd4e57053e69b29aab75cf22bb45d40709b020e0a2e6319c88ba - md5: 940278f54a624fbc79cb2ae04d6cb812 + size: 1406200 + timestamp: 1734400244945 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openexr-3.3.2-h8aeb21b_1.conda + sha256: 70fddfab6e5513c750c1e192e40b0d48286aad4160faf1f17d2b62aea3034e77 + md5: e9c6c384dbda9cd2b3d32d88fe169bda depends: - - __osx >=10.13 - imath >=3.1.12,<3.1.13.0a0 - - libcxx >=18 - - libdeflate >=1.22,<1.23.0a0 + - libdeflate >=1.23,<1.24.0a0 + - libgcc >=13 + - libstdcxx >=13 - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 1220832 - timestamp: 1731857835803 -- kind: conda - name: openexr - version: 3.3.2 - build: h974021d_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/openexr-3.3.2-h974021d_0.conda - sha256: 97a6faa63b4709b18625970cf0ca3313eaff4c54f64aad3e826bd7e8f11cf72b - md5: f0562f96eb6431cb9c57f0caaa472690 + size: 1355250 + timestamp: 1734400238167 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openexr-3.3.2-heaa778b_1.conda + sha256: 4b2380eec838014d6f9726acf94b02167aff0e5c5914aefccd5b7ceaf3f6d6d2 + md5: a61b89428c31ed7b31cbf01f1d380c50 depends: + - __osx >=10.13 - imath >=3.1.12,<3.1.13.0a0 - - libdeflate >=1.22,<1.23.0a0 + - libcxx >=18 + - libdeflate >=1.23,<1.24.0a0 - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 1179237 - timestamp: 1731858048554 -- kind: conda - name: openexr - version: 3.3.2 - build: haace395_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openexr-3.3.2-haace395_0.conda - sha256: 7017b76f46b6795660554cc38eea631ab995d207de0a6b3696abefc51fbf9fbb - md5: bfa35d44a93b461dbfe20f1e7ec74188 + size: 1218664 + timestamp: 1734400517405 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openexr-3.3.2-h360b6eb_1.conda + sha256: cda2f8f19b4afd684e727571beb0fc17f16b2905f549fc3964bb771bb37c5830 + md5: 60085fec202ed217091c8160b9cebb6f depends: + - __osx >=11.0 - imath >=3.1.12,<3.1.13.0a0 - - libdeflate >=1.22,<1.23.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 + - libdeflate >=1.23,<1.24.0a0 - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 1356630 - timestamp: 1731857636421 -- kind: conda - name: openexr - version: 3.3.2 - build: hccdc605_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openexr-3.3.2-hccdc605_0.conda - sha256: a503574542e97041b9357d77b598a9d4776c5fa14d8e1110512ef3a55c9a04a7 - md5: 8eab344da672927e9b417d5a26a15393 + size: 1226749 + timestamp: 1734400507047 +- conda: https://conda.anaconda.org/conda-forge/win-64/openexr-3.3.2-h3924f79_1.conda + sha256: 78064a2ffa02d3a23f27f63f04ac0ab9ad6ab95f61b2fe5e67ba883366694930 + md5: 88a5c7a59a7740104f0bfac86225a53d depends: - - __glibc >=2.17,<3.0.a0 - imath >=3.1.12,<3.1.13.0a0 - - libdeflate >=1.22,<1.23.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libdeflate >=1.23,<1.24.0a0 - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD - size: 1403157 - timestamp: 1731857539130 -- kind: conda - name: openh264 - version: 2.4.1 - build: h2f0025b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openh264-2.4.1-h2f0025b_0.conda - sha256: fbd43d4ab82fd6dfd1502a55ccade4aabae4a85fa2353396078da8d5c10941db - md5: 97fc3bbca08e95e1d7af8366d5a4ece6 + size: 1179194 + timestamp: 1734400780381 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.5.0-hf92e6e3_0.conda + sha256: dedda20c58aec3d8f9c12e3660225608b93a257a21e0da703fdd814789291519 + md5: d1b18a73fc3cfd0de9c7e786d2febb8f depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD - size: 770201 - timestamp: 1706873872574 -- kind: conda - name: openh264 - version: 2.4.1 - build: h59595ed_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openh264-2.4.1-h59595ed_0.conda - sha256: 0d4eaf15fb771f25c924aef831d76eea11d90c824778fc1e7666346e93475f42 - md5: 3dfcf61b8e78af08110f5229f79580af + size: 727504 + timestamp: 1731068122274 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openh264-2.5.0-h6c5ec6d_0.conda + sha256: 1e9623c4cb34d1f8b43884c629cb61ddbe8dfbdf03f6043ec9a772c12b6867ed + md5: d9407eab893d3bbf706d8ede547ae639 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD - size: 735244 - timestamp: 1706873814072 -- kind: conda - name: openh264 - version: 2.4.1 - build: h73e2aa4_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/openh264-2.4.1-h73e2aa4_0.conda - sha256: 4e660e62225815dd996788ed08dc50870e387c159f31d65cd8b677988dfb387b - md5: 877f116d9a4f8b826b0e1d427ac00871 + size: 785332 + timestamp: 1731068180758 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openh264-2.5.0-hdfcf091_0.conda + sha256: 521aac4f5dfb36bbaa6b9fd17aeb3dfabff30a555e3c493d8d91db98056d69c8 + md5: 402f09a0168dcebd162f5e8b0e89c997 depends: - - libcxx >=16 + - __osx >=10.13 + - libcxx >=18 + arch: x86_64 + platform: osx license: BSD-2-Clause license_family: BSD - size: 660428 - timestamp: 1706874091051 -- kind: conda - name: openh264 - version: 2.5.0 - build: h774163f_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openh264-2.5.0-h774163f_0.conda + size: 657866 + timestamp: 1731068138921 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openh264-2.5.0-h774163f_0.conda sha256: d8a72fd9a72e4a01b614485fbeca32c59cdc9a9f6ca8a344f0bb81e6e8f84f6e md5: d30a8420d9e45cf160bbe731c9d0a1be depends: - __osx >=11.0 - libcxx >=18 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD size: 599874 timestamp: 1731068229253 -- kind: conda - name: openh264 - version: 2.5.0 - build: ha9db3cd_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/openh264-2.5.0-ha9db3cd_0.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/openh264-2.5.0-ha9db3cd_0.conda sha256: 78f1610033b6de73111e29552d65e1124ceb652fe003d32585ca38f0cc351cb6 md5: 4df5f64d919b886181a16bc46b620c38 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: BSD-2-Clause license_family: BSD size: 410131 timestamp: 1731068326412 -- kind: conda - name: openjpeg - version: 2.5.2 - build: h0d9d63b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.2-h0d9d63b_0.conda - sha256: d83375856601bc67c11295b537548a937a6896ede9d0a51d78bf5e921ab07c6f - md5: fd2898519e839d5ceb778343f39a3176 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.3-h5fbd93e_0.conda + sha256: 5bee706ea5ba453ed7fd9da7da8380dd88b865c8d30b5aaec14d2b6dd32dbc39 + md5: 9e5816bc95d285c115a3ebc2f8563564 depends: - - libgcc-ng >=12 - - libpng >=1.6.43,<1.7.0a0 - - libstdcxx-ng >=12 - - libtiff >=4.6.0,<4.8.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD - size: 374964 - timestamp: 1709159226478 -- kind: conda - name: openjpeg - version: 2.5.2 - build: h3d672ee_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.2-h3d672ee_0.conda - sha256: dda71cbe094234ab208f3552dec1f4ca6f2e614175d010808d6cb66ecf0bc753 - md5: 7e7099ad94ac3b599808950cec30ad4e + size: 342988 + timestamp: 1733816638720 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openjpeg-2.5.3-h3f56577_0.conda + sha256: 92d310033e20538e896f4e4b1ea4205eb6604eee7c5c651c4965a0d8d3ca0f1d + md5: 04231368e4af50d11184b50e14250993 depends: - - libpng >=1.6.43,<1.7.0a0 - - libtiff >=4.6.0,<4.8.0a0 - - libzlib >=1.2.13,<2.0.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - libgcc >=13 + - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD - size: 237974 - timestamp: 1709159764160 -- kind: conda - name: openjpeg - version: 2.5.2 - build: h488ebb8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openjpeg-2.5.2-h488ebb8_0.conda - sha256: 5600a0b82df042bd27d01e4e687187411561dfc11cc05143a08ce29b64bf2af2 - md5: 7f2e286780f072ed750df46dc2631138 + size: 377796 + timestamp: 1733816683252 +- conda: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.3-h7fd6d84_0.conda + sha256: faea03f36c9aa3524c911213b116da41695ff64b952d880551edee2843fe115b + md5: 025c711177fc3309228ca1a32374458d depends: - - libgcc-ng >=12 - - libpng >=1.6.43,<1.7.0a0 - - libstdcxx-ng >=12 - - libtiff >=4.6.0,<4.8.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - __osx >=10.13 + - libcxx >=18 + - libpng >=1.6.44,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: osx license: BSD-2-Clause license_family: BSD - size: 341592 - timestamp: 1709159244431 -- kind: conda - name: openjpeg - version: 2.5.2 - build: h7310d3a_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/openjpeg-2.5.2-h7310d3a_0.conda - sha256: dc9c405119b9b54f8ca5984da27ba498bd848ab4f0f580da6f293009ca5adc13 - md5: 05a14cc9d725dd74995927968d6547e3 + size: 332320 + timestamp: 1733816828284 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.3-h8a3d83b_0.conda + sha256: 1d59bc72ca7faac06d349c1a280f5cfb8a57ee5896f1e24225a997189d7418c7 + md5: 4b71d78648dbcf68ce8bf22bb07ff838 depends: - - libcxx >=16 - - libpng >=1.6.43,<1.7.0a0 - - libtiff >=4.6.0,<4.8.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - __osx >=11.0 + - libcxx >=18 + - libpng >=1.6.44,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx license: BSD-2-Clause license_family: BSD - size: 331273 - timestamp: 1709159538792 -- kind: conda - name: openjpeg - version: 2.5.2 - build: h9f1df11_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openjpeg-2.5.2-h9f1df11_0.conda - sha256: 472d6eaffc1996e6af35ec8e91c967f472a536a470079bfa56383cc0dbf4d463 - md5: 5029846003f0bc14414b9128a1f7c84b + size: 319362 + timestamp: 1733816781741 +- conda: https://conda.anaconda.org/conda-forge/win-64/openjpeg-2.5.3-h4d64b90_0.conda + sha256: 410175815df192f57a07c29a6b3fdd4231937173face9e63f0830c1234272ce3 + md5: fc050366dd0b8313eb797ed1ffef3a29 depends: - - libcxx >=16 - - libpng >=1.6.43,<1.7.0a0 - - libtiff >=4.6.0,<4.8.0a0 - - libzlib >=1.2.13,<2.0.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: BSD-2-Clause license_family: BSD - size: 316603 - timestamp: 1709159627299 -- kind: conda - name: openldap - version: 2.6.9 - build: h30c48ee_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openldap-2.6.9-h30c48ee_0.conda + size: 240148 + timestamp: 1733817010335 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.9-he970967_0.conda + sha256: 224f458848f792fe9e3587ee6b626d4eaad63aead0e5e6c25cbe29aba7b05c53 + md5: ca2de8bbdc871bce41dbf59e51324165 + depends: + - __glibc >=2.17,<3.0.a0 + - cyrus-sasl >=2.1.27,<3.0a0 + - krb5 >=1.21.3,<1.22.0a0 + - libgcc >=13 + - libstdcxx >=13 + - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: linux + license: OLDAP-2.8 + license_family: BSD + size: 784483 + timestamp: 1732674189726 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openldap-2.6.9-h30c48ee_0.conda sha256: ee09612f256dd3532b1309c8ff70489d21db3bde2a0849da08393e5ffd84400d md5: c07822a5de65ce9797b9afa257faa917 depends: @@ -18602,34 +13852,13 @@ packages: - libgcc >=13 - libstdcxx >=13 - openssl >=3.4.0,<4.0a0 + arch: aarch64 + platform: linux license: OLDAP-2.8 license_family: BSD size: 904889 timestamp: 1732674273894 -- kind: conda - name: openldap - version: 2.6.9 - build: hbe55e7a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openldap-2.6.9-hbe55e7a_0.conda - sha256: 5ae85f00a9dcf438e375d4fb5c45c510c7116e32c4b7af608ffd88e9e9dc6969 - md5: 8291e59e1dd136bceecdefbc7207ecd6 - depends: - - __osx >=11.0 - - cyrus-sasl >=2.1.27,<3.0a0 - - krb5 >=1.21.3,<1.22.0a0 - - libcxx >=18 - - openssl >=3.4.0,<4.0a0 - license: OLDAP-2.8 - license_family: BSD - size: 842504 - timestamp: 1732674565486 -- kind: conda - name: openldap - version: 2.6.9 - build: hd8a590d_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/openldap-2.6.9-hd8a590d_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/openldap-2.6.9-hd8a590d_0.conda sha256: b0c541939d905a1a23c41f0f22ad34401da50470e779a6e618c37fdba6c057aa md5: 10dff9d8c67ae8b807b9fe8cfe9ca1d0 depends: @@ -18638,265 +13867,219 @@ packages: - krb5 >=1.21.3,<1.22.0a0 - libcxx >=18 - openssl >=3.4.0,<4.0a0 + arch: x86_64 + platform: osx license: OLDAP-2.8 license_family: BSD size: 777835 timestamp: 1732674429367 -- kind: conda - name: openldap - version: 2.6.9 - build: he970967_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openldap-2.6.9-he970967_0.conda - sha256: 224f458848f792fe9e3587ee6b626d4eaad63aead0e5e6c25cbe29aba7b05c53 - md5: ca2de8bbdc871bce41dbf59e51324165 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openldap-2.6.9-hbe55e7a_0.conda + sha256: 5ae85f00a9dcf438e375d4fb5c45c510c7116e32c4b7af608ffd88e9e9dc6969 + md5: 8291e59e1dd136bceecdefbc7207ecd6 depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - cyrus-sasl >=2.1.27,<3.0a0 - krb5 >=1.21.3,<1.22.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=18 - openssl >=3.4.0,<4.0a0 + arch: arm64 + platform: osx license: OLDAP-2.8 license_family: BSD - size: 784483 - timestamp: 1732674189726 -- kind: conda - name: openssl - version: 3.4.0 - build: h2466b09_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda - sha256: e03045a0837e01ff5c75e9273a572553e7522290799807f918c917a9826a6484 - md5: d0d805d9b5524a14efb51b3bff965e83 - depends: - - ca-certificates - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: Apache-2.0 - license_family: Apache - size: 8491156 - timestamp: 1731379715927 -- kind: conda - name: openssl - version: 3.4.0 - build: h39f12f2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda - sha256: bd1d58ced46e75efa3b842c61642fd12272c69e9fe4d7261078bc082153a1d53 - md5: df307bbc703324722df0293c9ca2e418 + size: 842504 + timestamp: 1732674565486 +- conda: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda + sha256: 814b9dff1847b132c676ee6cc1a8cb2d427320779b93e1b6d76552275c128705 + md5: 23cc74f77eb99315c0360ec3533147a9 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - ca-certificates + - libgcc >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 2935176 - timestamp: 1731377561525 -- kind: conda - name: openssl - version: 3.4.0 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda + size: 2947466 + timestamp: 1731377666602 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/openssl-3.4.0-h86ecc28_0.conda sha256: 64dbbdd6384fa56338124783197f7ad9048c989a02264bcd2e07355e3570f113 md5: b2f202b5bddafac824eb610b65dde98f depends: - ca-certificates - libgcc >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache size: 3474825 timestamp: 1731379200886 -- kind: conda - name: openssl - version: 3.4.0 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/openssl-3.4.0-hb9d3cd8_0.conda - sha256: 814b9dff1847b132c676ee6cc1a8cb2d427320779b93e1b6d76552275c128705 - md5: 23cc74f77eb99315c0360ec3533147a9 - depends: - - __glibc >=2.17,<3.0.a0 - - ca-certificates - - libgcc >=13 - license: Apache-2.0 - license_family: Apache - size: 2947466 - timestamp: 1731377666602 -- kind: conda - name: openssl - version: 3.4.0 - build: hd471939_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hd471939_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/openssl-3.4.0-hd471939_0.conda sha256: ba7e068ed469d6625e32ae60e6ad893e655b6695280dadf7e065ed0b6f3b885c md5: ec99d2ce0b3033a75cbad01bbc7c5b71 depends: - __osx >=10.13 - ca-certificates + arch: x86_64 + platform: osx license: Apache-2.0 license_family: Apache size: 2590683 timestamp: 1731378034404 -- kind: conda - name: packaging - version: '24.2' - build: pyhd8ed1ab_2 - build_number: 2 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/openssl-3.4.0-h39f12f2_0.conda + sha256: bd1d58ced46e75efa3b842c61642fd12272c69e9fe4d7261078bc082153a1d53 + md5: df307bbc703324722df0293c9ca2e418 + depends: + - __osx >=11.0 + - ca-certificates + arch: arm64 + platform: osx + license: Apache-2.0 + license_family: Apache + size: 2935176 + timestamp: 1731377561525 +- conda: https://conda.anaconda.org/conda-forge/win-64/openssl-3.4.0-h2466b09_0.conda + sha256: e03045a0837e01ff5c75e9273a572553e7522290799807f918c917a9826a6484 + md5: d0d805d9b5524a14efb51b3bff965e83 + depends: + - ca-certificates + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win + license: Apache-2.0 + license_family: Apache + size: 8491156 + timestamp: 1731379715927 +- conda: https://conda.anaconda.org/conda-forge/noarch/packaging-24.2-pyhd8ed1ab_2.conda sha256: da157b19bcd398b9804c5c52fc000fcb8ab0525bdb9c70f95beaa0bb42f85af1 md5: 3bfed7e6228ebf2f7b9eaa47f1b4e2aa depends: - python >=3.8 license: Apache-2.0 + license_family: APACHE size: 60164 timestamp: 1733203368787 -- kind: conda - name: pango - version: 1.54.0 - build: h115fe74_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pango-1.54.0-h115fe74_2.conda - sha256: ed400571a75027563b91bc48054a6599f22c8c2a7ee94a9c3d4e9932c02581ac - md5: 9bfd18e7d9292154b2b79ddb7145f9cf +- conda: https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h3a902e7_3.conda + sha256: b04f43a7968cedb93cc0b52854f2cac21d8b8ac150b40305865d9ff3c3d4da72 + md5: 8c12547e7b143fb70873fb732a4056b9 depends: - - __osx >=10.13 - - cairo >=1.18.0,<2.0a0 - - fontconfig >=2.14.2,<3.0a0 + - __glibc >=2.17,<3.0.a0 + - cairo >=1.18.2,<2.0a0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - fribidi >=1.0.10,<2.0a0 - harfbuzz >=9.0.0,<10.0a0 - - libglib >=2.80.3,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later - size: 423324 - timestamp: 1723832327771 -- kind: conda - name: pango - version: 1.54.0 - build: h4c5309f_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pango-1.54.0-h4c5309f_1.conda - sha256: d362237be82d5a0d532fe66ec8d68018c3b2a9705bad6d73c2b63dae2970da02 - md5: 7df02e445367703cd87a574046e3a6f0 + size: 447446 + timestamp: 1733761801816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pango-1.54.0-hf175a2e_3.conda + sha256: bdc33c9f253e7ce8ea78138c3e70cf51dd10e59e365a5f322dcf01c285784c3e + md5: 65eb800159b1182fc5d928ade03523ff depends: - - cairo >=1.18.0,<2.0a0 - - fontconfig >=2.14.2,<3.0a0 + - cairo >=1.18.2,<2.0a0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - fribidi >=1.0.10,<2.0a0 - harfbuzz >=9.0.0,<10.0a0 - - libgcc-ng >=12 - - libglib >=2.80.2,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 + arch: aarch64 + platform: linux license: LGPL-2.1-or-later - size: 447117 - timestamp: 1719839527713 -- kind: conda - name: pango - version: 1.54.0 - build: h7579590_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pango-1.54.0-h7579590_1.conda - sha256: 98e1706ef62c766e2a57f14da95d9d6652b594f901cb9a1b6c04208bd616bd99 - md5: 905145a94ad41fce135074a0214616e9 + size: 459285 + timestamp: 1733764507377 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pango-1.54.0-hb83bde0_3.conda + sha256: 6b0be88c747a20cefe501b9c1dd69e3f24bd2a000252358bc757acfc4faa99be + md5: a08306ba11b66596d245d95163e97583 depends: - - cairo >=1.18.0,<2.0a0 - - fontconfig >=2.14.2,<3.0a0 + - __osx >=10.13 + - cairo >=1.18.2,<2.0a0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - fribidi >=1.0.10,<2.0a0 - harfbuzz >=9.0.0,<10.0a0 - - libgcc-ng >=12 - - libglib >=2.80.2,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 + arch: x86_64 + platform: osx license: LGPL-2.1-or-later - size: 460989 - timestamp: 1719841137355 -- kind: conda - name: pango - version: 1.54.0 - build: h9ee27a3_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.54.0-h9ee27a3_2.conda - sha256: cfa2d11204bb75f6fbcfe1ff0cc1f6e4fc01185bf07b8eee8f698bfbd3702a79 - md5: af2a2118261adf2d7a350d6767b450f2 + size: 422897 + timestamp: 1733762004303 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pango-1.54.0-h3e3e505_3.conda + sha256: 4264f49cb550b9164c6a570978c3b9b1404215c1279dba592a90391d324a177a + md5: 89fb53976952a229a13271272bf8cb10 depends: - __osx >=11.0 - - cairo >=1.18.0,<2.0a0 - - fontconfig >=2.14.2,<3.0a0 + - cairo >=1.18.2,<2.0a0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - fribidi >=1.0.10,<2.0a0 - harfbuzz >=9.0.0,<10.0a0 - - libglib >=2.80.3,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 + arch: arm64 + platform: osx license: LGPL-2.1-or-later - size: 417224 - timestamp: 1723832458095 -- kind: conda - name: pango - version: 1.54.0 - build: hbb871f6_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-hbb871f6_2.conda - sha256: 90327dd606f78ae9c881e285f85bc2b0f57d11c807be58ee3f690742354918b2 - md5: 409c0b778deee649c025b7106549a24f + size: 417534 + timestamp: 1733762049456 +- conda: https://conda.anaconda.org/conda-forge/win-64/pango-1.54.0-h2c73655_3.conda + sha256: 12b44e5a2401c52fd175f0cc271456b5d9a559bda950a02cab07f5ba49012ea8 + md5: 6e80e05a55fdb557718db61e47792ea8 depends: - - cairo >=1.18.0,<2.0a0 - - fontconfig >=2.14.2,<3.0a0 + - cairo >=1.18.2,<2.0a0 + - fontconfig >=2.15.0,<3.0a0 - fonts-conda-ecosystem - freetype >=2.12.1,<3.0a0 - fribidi >=1.0.10,<2.0a0 - harfbuzz >=9.0.0,<10.0a0 - - libglib >=2.80.3,<3.0a0 - - libpng >=1.6.43,<1.7.0a0 + - libexpat >=2.6.4,<3.0a0 + - libglib >=2.82.2,<3.0a0 + - libpng >=1.6.44,<1.7.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: LGPL-2.1-or-later - size: 450610 - timestamp: 1723832834434 -- kind: conda - name: pcl - version: 1.14.1 - build: h4a636e1_6 - build_number: 6 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pcl-1.14.1-h4a636e1_6.conda - sha256: 498a8c127cb7b5fa27c474a16b978df06cca2e13bdbb7e69c31a1d6677b284b4 - md5: f89b349c873bb5e518ebd562e253aef8 + size: 451415 + timestamp: 1733762176576 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pcl-1.14.1-hd932182_6.conda + sha256: 2a5fb516d84648bee8c842d9164e43871f95b6839b3d5a8e9d82d719a2e16e60 + md5: c0d87dbe683557dd69d3872c8ff59ec8 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 - flann >=1.9.2,<1.9.3.0a0 - glew >=2.1.0,<2.2.0a0 - libboost >=1.86.0,<1.87.0a0 - - libcxx >=17 + - libgcc >=13 - libpng >=1.6.44,<1.7.0a0 + - libstdcxx >=13 - qhull >=2020.2,<2020.3.0a0 - qt6-main >=6.7.2,<6.8.0a0 - vtk * qt* - vtk-base >=9.3.1,<9.3.2.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 13363511 - timestamp: 1726792373457 -- kind: conda - name: pcl - version: 1.14.1 - build: h777c531_6 - build_number: 6 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pcl-1.14.1-h777c531_6.conda + size: 18246943 + timestamp: 1726788911732 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcl-1.14.1-h777c531_6.conda sha256: cc9ed2113e100d4fde8f4f0c21007d1bc6acca00c9d387b276936d62ac072a05 md5: 55e08906a39b1f208ed54a055d776edc depends: @@ -18910,46 +14093,37 @@ packages: - qt6-main >=6.7.2,<6.8.0a0 - vtk * qt* - vtk-base >=9.3.1,<9.3.2.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 17633474 timestamp: 1726789438119 -- kind: conda - name: pcl - version: 1.14.1 - build: h8d4a065_6 - build_number: 6 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pcl-1.14.1-h8d4a065_6.conda - sha256: e08315768fd12245da6f8b70b58d87c85a4ab93c62e6e18efaaab88e16978f69 - md5: edf68bc76515c901f2a359782f5ea8e0 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pcl-1.14.1-hbaf7342_6.conda + sha256: f33699537a9ca0544b3a6ef4f15d26dcc2ddc7bdeca3a6e18d2330dd110dcc1c + md5: 2862c0e45e0ac301cc6395994aa457b7 depends: + - __osx >=10.13 - flann >=1.9.2,<1.9.3.0a0 - glew >=2.1.0,<2.2.0a0 - libboost >=1.86.0,<1.87.0a0 + - libcxx >=17 - libpng >=1.6.44,<1.7.0a0 - qhull >=2020.2,<2020.3.0a0 - qt6-main >=6.7.2,<6.8.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - vtk * qt* - vtk-base >=9.3.1,<9.3.2.0a0 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 9408069 - timestamp: 1726789098083 -- kind: conda - name: pcl - version: 1.14.1 - build: hbaf7342_6 - build_number: 6 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pcl-1.14.1-hbaf7342_6.conda - sha256: f33699537a9ca0544b3a6ef4f15d26dcc2ddc7bdeca3a6e18d2330dd110dcc1c - md5: 2862c0e45e0ac301cc6395994aa457b7 + size: 13768569 + timestamp: 1726793391220 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcl-1.14.1-h4a636e1_6.conda + sha256: 498a8c127cb7b5fa27c474a16b978df06cca2e13bdbb7e69c31a1d6677b284b4 + md5: f89b349c873bb5e518ebd562e253aef8 depends: - - __osx >=10.13 + - __osx >=11.0 - flann >=1.9.2,<1.9.3.0a0 - glew >=2.1.0,<2.2.0a0 - libboost >=1.86.0,<1.87.0a0 @@ -18959,212 +14133,168 @@ packages: - qt6-main >=6.7.2,<6.8.0a0 - vtk * qt* - vtk-base >=9.3.1,<9.3.2.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 13768569 - timestamp: 1726793391220 -- kind: conda - name: pcl - version: 1.14.1 - build: hd932182_6 - build_number: 6 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pcl-1.14.1-hd932182_6.conda - sha256: 2a5fb516d84648bee8c842d9164e43871f95b6839b3d5a8e9d82d719a2e16e60 - md5: c0d87dbe683557dd69d3872c8ff59ec8 + size: 13363511 + timestamp: 1726792373457 +- conda: https://conda.anaconda.org/conda-forge/win-64/pcl-1.14.1-h8d4a065_6.conda + sha256: e08315768fd12245da6f8b70b58d87c85a4ab93c62e6e18efaaab88e16978f69 + md5: edf68bc76515c901f2a359782f5ea8e0 depends: - - __glibc >=2.17,<3.0.a0 - flann >=1.9.2,<1.9.3.0a0 - glew >=2.1.0,<2.2.0a0 - libboost >=1.86.0,<1.87.0a0 - - libgcc >=13 - libpng >=1.6.44,<1.7.0a0 - - libstdcxx >=13 - qhull >=2020.2,<2020.3.0a0 - qt6-main >=6.7.2,<6.8.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 - vtk * qt* - vtk-base >=9.3.1,<9.3.2.0a0 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD - size: 18246943 - timestamp: 1726788911732 -- kind: conda - name: pcre2 - version: '10.44' - build: h070dd5b_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.44-h070dd5b_2.conda - sha256: e9f4b912e48514771d477f2ee955f59d4ff4ef799c3d4d16e4d0f335ce91df67 - md5: 94022de9682cb1a0bb18a99cbc3541b3 + size: 9408069 + timestamp: 1726789098083 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda + sha256: 1087716b399dab91cc9511d6499036ccdc53eb29a288bebcb19cf465c51d7c0d + md5: df359c09c41cd186fffb93a2d87aa6f5 depends: + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - libgcc-ng >=12 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 884590 - timestamp: 1723488793100 -- kind: conda - name: pcre2 - version: '10.44' - build: h297a79d_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda - sha256: 83153c7d8fd99cab33c92ce820aa7bfed0f1c94fc57010cf227b6e3c50cb7796 - md5: 147c83e5e44780c7492998acbacddf52 - depends: - - __osx >=11.0 - - bzip2 >=1.0.8,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - license: BSD-3-Clause - license_family: BSD - size: 618973 - timestamp: 1723488853807 -- kind: conda - name: pcre2 - version: '10.44' - build: h3d7b363_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda - sha256: f4a12cbf8a7c5bfa2592b9dc92b492c438781898e5b02f397979b0be6e1b5851 - md5: a3a3baddcfb8c80db84bec3cb7746fb8 + size: 952308 + timestamp: 1723488734144 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pcre2-10.44-h070dd5b_2.conda + sha256: e9f4b912e48514771d477f2ee955f59d4ff4ef799c3d4d16e4d0f335ce91df67 + md5: 94022de9682cb1a0bb18a99cbc3541b3 depends: - bzip2 >=1.0.8,<2.0a0 + - libgcc-ng >=12 - libzlib >=1.3.1,<2.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 820831 - timestamp: 1723489427046 -- kind: conda - name: pcre2 - version: '10.44' - build: h7634a1b_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda + size: 884590 + timestamp: 1723488793100 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pcre2-10.44-h7634a1b_2.conda sha256: 336057fce69d45e1059f138beb38d60eb87ba858c3ad729ed49d9ecafd23669f md5: 58cde0663f487778bcd7a0c8daf50293 depends: - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 - libzlib >=1.3.1,<2.0a0 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD size: 854306 timestamp: 1723488807216 -- kind: conda - name: pcre2 - version: '10.44' - build: hba22ea6_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pcre2-10.44-hba22ea6_2.conda - sha256: 1087716b399dab91cc9511d6499036ccdc53eb29a288bebcb19cf465c51d7c0d - md5: df359c09c41cd186fffb93a2d87aa6f5 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pcre2-10.44-h297a79d_2.conda + sha256: 83153c7d8fd99cab33c92ce820aa7bfed0f1c94fc57010cf227b6e3c50cb7796 + md5: 147c83e5e44780c7492998acbacddf52 + depends: + - __osx >=11.0 + - bzip2 >=1.0.8,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 618973 + timestamp: 1723488853807 +- conda: https://conda.anaconda.org/conda-forge/win-64/pcre2-10.44-h3d7b363_2.conda + sha256: f4a12cbf8a7c5bfa2592b9dc92b492c438781898e5b02f397979b0be6e1b5851 + md5: a3a3baddcfb8c80db84bec3cb7746fb8 depends: - - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - libgcc-ng >=12 - libzlib >=1.3.1,<2.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD - size: 952308 - timestamp: 1723488734144 -- kind: conda - name: perl - version: 5.32.1 - build: 7_h10d778d_perl5 + size: 820831 + timestamp: 1723489427046 +- conda: https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-7_hd590300_perl5.conda build_number: 7 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/perl-5.32.1-7_h10d778d_perl5.conda - sha256: 8ebd35e2940055a93135b9fd11bef3662cecef72d6ee651f68d64a2f349863c7 - md5: dc442e0885c3a6b65e61c61558161a9e + sha256: 9ec32b6936b0e37bcb0ed34f22ec3116e75b3c0964f9f50ecea5f58734ed6ce9 + md5: f2cfec9406850991f4e3d960cc9e3321 + depends: + - libgcc-ng >=12 + - libxcrypt >=4.4.36 + arch: x86_64 + platform: linux license: GPL-1.0-or-later OR Artistic-1.0-Perl - size: 12334471 - timestamp: 1703311001432 -- kind: conda - name: perl - version: 5.32.1 - build: 7_h31becfc_perl5 + size: 13344463 + timestamp: 1703310653947 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/perl-5.32.1-7_h31becfc_perl5.conda build_number: 7 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/perl-5.32.1-7_h31becfc_perl5.conda sha256: d78296134263b5bf476cad838ded65451e7162db756f9997c5d06b08122572ed md5: 17d019cb2a6c72073c344e98e40dfd61 depends: - libgcc-ng >=12 - libxcrypt >=4.4.36 + arch: aarch64 + platform: linux license: GPL-1.0-or-later OR Artistic-1.0-Perl size: 13338804 timestamp: 1703310557094 -- kind: conda - name: perl - version: 5.32.1 - build: 7_h4614cfb_perl5 +- conda: https://conda.anaconda.org/conda-forge/osx-64/perl-5.32.1-7_h10d778d_perl5.conda + build_number: 7 + sha256: 8ebd35e2940055a93135b9fd11bef3662cecef72d6ee651f68d64a2f349863c7 + md5: dc442e0885c3a6b65e61c61558161a9e + arch: x86_64 + platform: osx + license: GPL-1.0-or-later OR Artistic-1.0-Perl + size: 12334471 + timestamp: 1703311001432 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/perl-5.32.1-7_h4614cfb_perl5.conda build_number: 7 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/perl-5.32.1-7_h4614cfb_perl5.conda sha256: b0c55040d2994fd6bf2f83786561d92f72306d982d6ea12889acad24a9bf43b8 md5: ba3cbe93f99e896765422cc5f7c3a79e + arch: arm64 + platform: osx license: GPL-1.0-or-later OR Artistic-1.0-Perl size: 14439531 timestamp: 1703311335652 -- kind: conda - name: perl - version: 5.32.1 - build: 7_hd590300_perl5 - build_number: 7 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/perl-5.32.1-7_hd590300_perl5.conda - sha256: 9ec32b6936b0e37bcb0ed34f22ec3116e75b3c0964f9f50ecea5f58734ed6ce9 - md5: f2cfec9406850991f4e3d960cc9e3321 - depends: - - libgcc-ng >=12 - - libxcrypt >=4.4.36 - license: GPL-1.0-or-later OR Artistic-1.0-Perl - size: 13344463 - timestamp: 1703310653947 -- kind: conda - name: pillow - version: 10.4.0 - build: py312h381445a_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pillow-10.4.0-py312h381445a_1.conda - sha256: 0b52e708ac4b72e6e1608de517cd4c8e6517dd525e23163a69bf73c7261399fc - md5: c57e54ae4acca720fb3a44bee93cb5b9 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py313h2d7ed13_0.conda + sha256: 58fa8f6e13da07d5cf9c846d1991a2147cdab9824a188fd061b3019d7a7e3087 + md5: 0d95e1cda6bf9ce501e751c02561204e depends: + - __glibc >=2.17,<3.0.a0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 + - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.6.0,<4.8.0a0 + - libtiff >=4.7.0,<4.8.0a0 - libwebp-base >=1.4.0,<2.0a0 - - libxcb >=1.16,<2.0.0a0 + - libxcb >=1.17.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - openjpeg >=2.5.2,<3.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 - tk >=8.6.13,<8.7.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: linux license: HPND - size: 42468305 - timestamp: 1726075694989 -- kind: conda - name: pillow - version: 11.0.0 - build: py312h5ab5af3_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py312h5ab5af3_0.conda - sha256: 3cf43a5eb1f67f3a5f3ef1ec3a685f8767019cce24dbe46c4b76fee8a54fbacf - md5: 1c4bdfe659cfdedd372685ce2494e97b + size: 41801299 + timestamp: 1729065786802 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pillow-11.0.0-py313h8b7b215_0.conda + sha256: d99a3365dae138a1dc528dd56f894c30ce03f80b64247b876bdd05e70287a71c + md5: 5b3d0fd06b258ef114a20450eb541d34 depends: - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 @@ -19175,20 +14305,17 @@ packages: - libxcb >=1.17.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - openjpeg >=2.5.2,<3.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 - tk >=8.6.13,<8.7.0a0 + arch: aarch64 + platform: linux license: HPND - size: 41756471 - timestamp: 1729068045876 -- kind: conda - name: pillow - version: 11.0.0 - build: py312h66fe14f_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pillow-11.0.0-py312h66fe14f_0.conda - sha256: 5e531eded0bb784c745abe3a1187c6c33478e153755bf8a8496aebff60801150 - md5: 1e49b81b5aae7af9d74bcdac0cd0d174 + size: 42163727 + timestamp: 1729067673029 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pillow-11.0.0-py313h4d44d4f_0.conda + sha256: 40a4acf761a92a8ac83b4b2add504f1f7645f672ac71f46f28d12dc3db224731 + md5: d5a3e556600840a77c61394c48ee52d9 depends: - __osx >=10.13 - freetype >=2.12.1,<3.0a0 @@ -19199,278 +14326,216 @@ packages: - libxcb >=1.17.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - openjpeg >=2.5.2,<3.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 - tk >=8.6.13,<8.7.0a0 + arch: x86_64 + platform: osx license: HPND - size: 42189378 - timestamp: 1729065985392 -- kind: conda - name: pillow - version: 11.0.0 - build: py312h7b63e92_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pillow-11.0.0-py312h7b63e92_0.conda - sha256: 13a464bea02c0df0199c20ef6bad24a6bc336aaf55bf8d6a133d0fe664463224 - md5: 385f46a4df6f97892503a841121a9acf + size: 42159288 + timestamp: 1729065923689 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py313h97432e1_0.conda + sha256: a038da085c380870c5352b3a4b136e551e4ed4cc0fc68870422e6b83aa9b48d2 + md5: 8b03a0789d01bea1e7198abc6ca2aa2c depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - libwebp-base >=1.4.0,<2.0a0 - libxcb >=1.17.0,<2.0a0 - libzlib >=1.3.1,<2.0a0 - openjpeg >=2.5.2,<3.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 - tk >=8.6.13,<8.7.0a0 + arch: arm64 + platform: osx license: HPND - size: 41948418 - timestamp: 1729065846594 -- kind: conda - name: pillow - version: 11.0.0 - build: py312haf37ca6_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pillow-11.0.0-py312haf37ca6_0.conda - sha256: 727b4c3faecdb6f6809cf20c5f32d2df4af34e0d5b9146b7588383bcba7990e8 - md5: dc9b51fbd2b6f7fea9b5123458864dbb + size: 41744326 + timestamp: 1729065895983 +- conda: https://conda.anaconda.org/conda-forge/win-64/pillow-10.4.0-py313h24ec7aa_1.conda + sha256: 5a8f33e887f7ae92df9b676f654b207aa8645404961e86c2662e46fa2b9a9df7 + md5: 267c1fdc0ef30e1e5125c90043cbab4b depends: - - __osx >=11.0 - freetype >=2.12.1,<3.0a0 - lcms2 >=2.16,<3.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 + - libtiff >=4.6.0,<4.8.0a0 - libwebp-base >=1.4.0,<2.0a0 - - libxcb >=1.17.0,<2.0a0 + - libxcb >=1.16,<2.0.0a0 - libzlib >=1.3.1,<2.0a0 - openjpeg >=2.5.2,<3.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - python >=3.13.0rc2,<3.14.0a0 + - python_abi 3.13.* *_cp313 - tk >=8.6.13,<8.7.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: HPND - size: 41737424 - timestamp: 1729065920347 -- kind: conda - name: pip - version: 24.3.1 - build: pyh8b19718_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh8b19718_0.conda - sha256: 499313e72e20225f84c2e9690bbaf5b952c8d7e0bf34b728278538f766b81628 - md5: 5dd546fe99b44fda83963d15f84263b7 - depends: - - python >=3.8,<3.13.0a0 - - setuptools - - wheel + size: 42285108 + timestamp: 1726075765971 +- conda: https://conda.anaconda.org/conda-forge/noarch/pip-24.3.1-pyh145f28c_2.conda + sha256: 7a300e856215180d292f85d40708164cd19dfcdb521ecacb894daa81f13994d7 + md5: 76601b0ccfe1fe13a21a5f8813cb38de + depends: + - python >=3.13.0a0 license: MIT license_family: MIT - size: 1243168 - timestamp: 1730203795600 -- kind: conda - name: pivy - version: 0.6.9.a0 - build: py312h1dac651_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/label/pivy_rc/osx-arm64/pivy-0.6.9.a0-py312h1dac651_1.conda - sha256: 56443f95abe70d0df54460634019c2ca9400b3dd3bbff90d58107329507bf753 - md5: dbeb99c6b527862d4e7e57ef26a4a577 + size: 1242403 + timestamp: 1734466282846 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pivy-0.6.9-py313qt6hcff3039_2.conda + sha256: 8838ed4c17d6373919bfebcff7e07cf921081139545f79f3cb17912a1a4cc386 + md5: 54d54ca414132ac11068cfa0715f5e19 depends: - - __osx >=11.0 - - coin3d >=4.0.2,<4.1.0a0 - - libcxx >=16 - - pyside6 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - qt6-main >=6.7.2,<6.8.0a0 - - soqt6 >=1.6.2,<1.7.0a0 - arch: arm64 - platform: osx + - __glibc >=2.17,<3.0.a0 + - coin3d >=4.0.3,<4.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - qt6-main >=6.7.3,<6.8.0a0 + - soqt6 >=1.6.3,<1.6.4.0a0 + arch: x86_64 + platform: linux license: ISC - size: 2100458 - timestamp: 1719780481731 -- kind: conda - name: pivy - version: 0.6.9.a0 - build: py312h27fdfec_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/label/pivy_rc/osx-64/pivy-0.6.9.a0-py312h27fdfec_1.conda - sha256: 3ddcffe7ef50a96db0c8b2c8d65c5c64880cac1b2f8a937dd6c0b8826ef74ad9 - md5: 14b142fa5c2dba9af0c899ca046bd84d + size: 2564209 + timestamp: 1728930701782 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pivy-0.6.9-py313qt6h4470820_2.conda + sha256: 0d1fa12e65bfeccd284211dbd3ac31082de7f7b8e9ef9928d7ca444b3294a3ba + md5: 044fdd90a3d68c1ba9e2f9a062639fe0 depends: - - __osx >=10.15 - - coin3d >=4.0.2,<4.1.0a0 - - libcxx >=16 - - pyside6 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - qt6-main >=6.7.2,<6.8.0a0 - - soqt6 >=1.6.2,<1.7.0a0 + - coin3d >=4.0.3,<4.1.0a0 + - libgcc >=13 + - libstdcxx >=13 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - qt6-main >=6.7.3,<6.8.0a0 + - soqt6 >=1.6.3,<1.6.4.0a0 + arch: aarch64 + platform: linux + license: ISC + size: 2355972 + timestamp: 1728930766128 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pivy-0.6.9-py313qt6hbd660c1_2.conda + sha256: 4788494dccde0b0db704feb6260e11f71e40144d837bf89ed10e112607f38e4b + md5: 426da3f1e8f0ec61cc399d2902ce71fa + depends: + - __osx >=10.13 + - coin3d >=4.0.3,<4.1.0a0 + - libcxx >=17 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - qt6-main >=6.7.3,<6.8.0a0 + - soqt6 >=1.6.3,<1.6.4.0a0 arch: x86_64 platform: osx license: ISC - size: 2191838 - timestamp: 1719780458507 -- kind: conda - name: pivy - version: 0.6.9.a0 - build: py312h615b049_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/label/pivy_rc/linux-aarch64/pivy-0.6.9.a0-py312h615b049_1.conda - sha256: 33f6ff29befbdcd9cdbb354169b81893b84f84dc5456661487c79973c8694969 - md5: 6d18fba7bceaa2c35b14b0f0b7289866 - depends: - - coin3d >=4.0.2,<4.1.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - pyside6 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - qt6-main >=6.7.2,<6.8.0a0 - - soqt6 >=1.6.2,<1.7.0a0 - arch: aarch64 - platform: linux + size: 2174884 + timestamp: 1728930811378 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pivy-0.6.9-py313qt6he8ca096_2.conda + sha256: 02457e1aba6df6ac4fac25a2dcb04452f1a4dbf972715c6f66488f60b85137cf + md5: 848c3d7433da6b55b025cfd306a6a577 + depends: + - __osx >=11.0 + - coin3d >=4.0.3,<4.1.0a0 + - libcxx >=17 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + - qt6-main >=6.7.3,<6.8.0a0 + - soqt6 >=1.6.3,<1.6.4.0a0 + arch: arm64 + platform: osx license: ISC - size: 2367973 - timestamp: 1719783387612 -- kind: conda - name: pivy - version: 0.6.9.a0 - build: py312h6680977_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/label/pivy_rc/win-64/pivy-0.6.9.a0-py312h6680977_1.conda - sha256: 6d8a36e0d18e66a04d80fb4d3d2671555c903107b5d3b98b5783fb0b71aaddab - md5: ec979a2f27189c71fa084c3d6f017cbf - depends: - - coin3d >=4.0.2,<4.1.0a0 - - pyside6 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - qt6-main >=6.7.2,<6.8.0a0 - - soqt6 >=1.6.2,<1.7.0a0 + size: 2075519 + timestamp: 1728930878018 +- conda: https://conda.anaconda.org/conda-forge/win-64/pivy-0.6.9-py313qt6h4bf16b0_2.conda + sha256: ead576f62004e77bc6dfea22044bddf141e00f68794059d172413f42c12ec0d4 + md5: 208a9a11c9c4efb6bd3353173a7aaf09 + depends: + - coin3d >=4.0.3,<4.1.0a0 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - qt6-main >=6.7.3,<6.8.0a0 + - soqt6 >=1.6.3,<1.6.4.0a0 - ucrt >=10.0.20348.0 + - vc >=14.2 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 arch: x86_64 platform: win license: ISC - size: 2370201 - timestamp: 1719780940241 -- kind: conda - name: pivy - version: 0.6.9.a0 - build: py312hc9ec64c_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/label/pivy_rc/linux-64/pivy-0.6.9.a0-py312hc9ec64c_1.conda - sha256: 34fd79439fa3e84a829b72cc068ce9d5822d8514141e62af6d8b55f1ce516e62 - md5: 9df55069647b7a4d1640269ccbf9fd79 - depends: - - coin3d >=4.0.2,<4.1.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - pyside6 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - qt6-main >=6.7.2,<6.8.0a0 - - soqt6 >=1.6.2,<1.7.0a0 + size: 2715965 + timestamp: 1728931504363 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.44.2-h29eaf8c_0.conda + sha256: 747c58db800d5583fee78e76240bf89cbaeedf7ab1ef339c2990602332b9c4be + md5: 5e2a7acfa2c24188af39e7944e1b3604 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 arch: x86_64 platform: linux - license: ISC - size: 2536574 - timestamp: 1719780408360 -- kind: conda - name: pixman - version: 0.43.2 - build: h59595ed_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pixman-0.43.2-h59595ed_0.conda - sha256: 366d28e2a0a191d6c535e234741e0cd1d94d713f76073d8af4a5ccb2a266121e - md5: 71004cbf7924e19c02746ccde9fd7123 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 license: MIT license_family: MIT - size: 386826 - timestamp: 1706549500138 -- kind: conda - name: pixman - version: 0.43.4 - build: h2f0025b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.43.4-h2f0025b_0.conda - sha256: e145b0d89c800326a20d1afd86c74f9422b81549b17fe53add46c2fa43a4c93e - md5: 81b2ddea4b0eca188da9c5a7aa4b0cff + size: 381072 + timestamp: 1733698987122 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pixman-0.44.2-h86a87f0_0.conda + sha256: 289c88d26530e427234adf7a8eb11e762d2beaf3c0a337c1c9887f60480e33e1 + md5: 95689fc369832398e82d17c56ff5df8a depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 295064 - timestamp: 1709240909660 -- kind: conda - name: pixman - version: 0.43.4 - build: h63175ca_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pixman-0.43.4-h63175ca_0.conda - sha256: 51de4d7fb41597b06d60f1b82e269dafcb55e994e08fdcca8e4d6f7d42bedd07 - md5: b98135614135d5f458b75ab9ebb9558c + size: 288697 + timestamp: 1733700860569 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.44.2-h1fd1274_0.conda + sha256: 7e5a9823e7e759355b954037f97d4aa53c26db1d73408571e749f8375b363743 + md5: 9d3ed4c1a6e21051bf4ce53851acdc96 depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - __osx >=10.13 + - libcxx >=18 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 461854 - timestamp: 1709239971654 -- kind: conda - name: pixman - version: 0.43.4 - build: h73e2aa4_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pixman-0.43.4-h73e2aa4_0.conda - sha256: 3ab44e12e566c67a6e9fd831f557ab195456aa996b8dd9af19787ca80caa5cd1 - md5: cb134c1e03fd32f4e6bea3f6de2614fd + size: 328548 + timestamp: 1733699069146 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.44.2-h2f9eb0b_0.conda + sha256: 28855d4cb2d9fc9a6bd9196dadbaecd6868ec706394cec2f88824a61ba4b1bc0 + md5: fa8e429fdb9e5b757281f69b8cc4330b depends: - - libcxx >=16 + - __osx >=11.0 + - libcxx >=18 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 323904 - timestamp: 1709239931160 -- kind: conda - name: pixman - version: 0.43.4 - build: hebf3989_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pixman-0.43.4-hebf3989_0.conda - sha256: df0ba2710ccdea5c909b63635529797f6eb3635b6fb77ae9cb2f183d08818409 - md5: 0308c68e711cd295aaa026a4f8c4b1e5 + size: 201076 + timestamp: 1733699127167 +- conda: https://conda.anaconda.org/conda-forge/win-64/pixman-0.44.2-had0cd8c_0.conda + sha256: 6648bd6e050f37c062ced1bbd4201dee617c3dacda1fc3a0de70335cf736f11b + md5: c720ac9a3bd825bf8b4dc7523ea49be4 depends: - - libcxx >=16 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: MIT license_family: MIT - size: 198755 - timestamp: 1709239846651 -- kind: conda - name: pixman-cos6-x86_64 - version: 0.32.8 - build: h9b0a68f_1105 - build_number: 1105 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/pixman-cos6-x86_64-0.32.8-h9b0a68f_1105.tar.bz2 + size: 455582 + timestamp: 1733699458861 +- conda: https://conda.anaconda.org/conda-forge/noarch/pixman-cos6-x86_64-0.32.8-h9b0a68f_1105.tar.bz2 sha256: 485cd1adeef655d19cd2767c80f2e0ab87d204677154fb81110d956bf2e33500 md5: 984df8516afa1614d455a125cd2388f5 depends: @@ -19479,14 +14544,7 @@ packages: license_family: MIT size: 273072 timestamp: 1627479886137 -- kind: conda - name: pixman-cos7-aarch64 - version: 0.34.0 - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/pixman-cos7-aarch64-0.34.0-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/pixman-cos7-aarch64-0.34.0-ha675448_1106.tar.bz2 sha256: e2f7168002fd08a061ad3a1106f2e655469c70ba3c427918487a4c8be5dc3f0d md5: 49bc6786bfc06d3d8ef1b576def6f53c depends: @@ -19495,61 +14553,27 @@ packages: license_family: MIT size: 177796 timestamp: 1726572662070 -- kind: conda - name: platformdirs - version: 4.3.6 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_0.conda - sha256: c81bdeadc4adcda216b2c7b373f0335f5c78cc480d1d55d10f21823590d7e46f - md5: fd8f2b18b65bbf62e8f653100690c8d2 +- conda: https://conda.anaconda.org/conda-forge/noarch/platformdirs-4.3.6-pyhd8ed1ab_1.conda + sha256: bb50f6499e8bc1d1a26f17716c97984671121608dc0c3ecd34858112bce59a27 + md5: 577852c7e53901ddccc7e6a9959ddebe depends: - - python >=3.8 + - python >=3.9 license: MIT license_family: MIT - size: 20625 - timestamp: 1726613611845 -- kind: conda - name: pluggy - version: 1.5.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pluggy-1.5.0-pyhd8ed1ab_0.conda - sha256: 33eaa3359948a260ebccf9cdc2fd862cea5a6029783289e13602d8e634cd9a26 - md5: d3483c8fc2dc2cc3f5cf43e26d60cabf + size: 20448 + timestamp: 1733232756001 +- conda: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_3.conda + sha256: bae453e5cecf19cab23c2e8929c6e30f4866d996a8058be16c797ed4b935461f + md5: fd5062942bfa1b0bd5e0d2a4397b099e depends: - - python >=3.8 - license: MIT - license_family: MIT - size: 23815 - timestamp: 1713667175451 -- kind: conda - name: ply - version: '3.11' - build: pyhd8ed1ab_2 - build_number: 2 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/ply-3.11-pyhd8ed1ab_2.conda - sha256: d8faaf4dcc13caed560fa32956523b35928a70499a2d08c51320947d637e3a41 - md5: 18c6deb6f9602e32446398203c8f0e91 - depends: - - python >=2.6 - license: BSD-3-Clause - license_family: BSD - size: 49196 - timestamp: 1712243121626 -- kind: conda - name: pre-commit - version: 4.0.1 - build: pyha770c72_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_0.conda - sha256: 2490b18ec802d8f085f2de8298a3d275451f7db17769353080dfb121fe386675 - md5: 5971cc64048943605f352f7f8612de6c + - python >=3.9 + license: BSD-3-Clause + license_family: BSD + size: 49052 + timestamp: 1733239818090 +- conda: https://conda.anaconda.org/conda-forge/noarch/pre-commit-4.0.1-pyha770c72_1.conda + sha256: 3cfe4c777f1bb3f869cefd732357c7c657df7f0bba5c11cd64ced21e0b0a2b5b + md5: d0ea6ed474bf7f6db88fc85e6dc809b1 depends: - cfgv >=2.0.0 - identify >=1.0.0 @@ -19559,14 +14583,9 @@ packages: - virtualenv >=20.10.0 license: MIT license_family: MIT - size: 194633 - timestamp: 1728420305558 -- kind: conda - name: proj - version: 9.5.1 - build: h0054346_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/proj-9.5.1-h0054346_0.conda + size: 193591 + timestamp: 1734267205422 +- conda: https://conda.anaconda.org/conda-forge/linux-64/proj-9.5.1-h0054346_0.conda sha256: 835afb9c8198895ec1ce2916320503d47bb0c25b75c228d744c44e505f1f4e3b md5: 398cabfd9bd75e90d0901db95224f25f depends: @@ -19579,63 +14598,53 @@ packages: - sqlite constrains: - proj4 ==999999999999 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 3108751 timestamp: 1733138115896 -- kind: conda - name: proj - version: 9.5.1 - build: h1318a7e_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/proj-9.5.1-h1318a7e_0.conda - sha256: c6289d6f1a13f28ff3754ac0cb2553f7e7bc4a3102291115f62a04995d0421eb - md5: 5eb42e77ae79b46fabcb0f6f6d130763 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/proj-9.5.1-h9655f4d_0.conda + sha256: f1cf12e3f3101e3b5eec136b54d71c11dd8a9408f2574d1e0c8307908e0461d0 + md5: 60cc005fa3ce97967d435f92adfc7cf7 depends: - - __osx >=11.0 - libcurl >=8.10.1,<9.0a0 - - libcxx >=18 + - libgcc >=13 - libsqlite >=3.47.0,<4.0a0 + - libstdcxx >=13 - libtiff >=4.7.0,<4.8.0a0 - sqlite constrains: - proj4 ==999999999999 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 2673401 - timestamp: 1733138376056 -- kind: conda - name: proj - version: 9.5.1 - build: h4f671f6_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/proj-9.5.1-h4f671f6_0.conda - sha256: ddd0be6172e3903bc6602a93394e8051826235377c1ce8c6ba2435869794e726 - md5: 7303dac2aa92318f319508aedab6a127 + size: 3038717 + timestamp: 1733139312143 +- conda: https://conda.anaconda.org/conda-forge/osx-64/proj-9.5.1-h5273da6_0.conda + sha256: 5d35d13994abdc6a7dd1801f37db98e9efca5983f0479e380844264343ec8096 + md5: 523c87f13b2f99a96295993ede863b87 depends: + - __osx >=10.13 - libcurl >=8.10.1,<9.0a0 + - libcxx >=18 - libsqlite >=3.47.0,<4.0a0 - libtiff >=4.7.0,<4.8.0a0 - sqlite - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 constrains: - proj4 ==999999999999 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 2740461 - timestamp: 1733138695290 -- kind: conda - name: proj - version: 9.5.1 - build: h5273da6_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/proj-9.5.1-h5273da6_0.conda - sha256: 5d35d13994abdc6a7dd1801f37db98e9efca5983f0479e380844264343ec8096 - md5: 523c87f13b2f99a96295993ede863b87 + size: 2840582 + timestamp: 1733138585653 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/proj-9.5.1-h1318a7e_0.conda + sha256: c6289d6f1a13f28ff3754ac0cb2553f7e7bc4a3102291115f62a04995d0421eb + md5: 5eb42e77ae79b46fabcb0f6f6d130763 depends: - - __osx >=10.13 + - __osx >=11.0 - libcurl >=8.10.1,<9.0a0 - libcxx >=18 - libsqlite >=3.47.0,<4.0a0 @@ -19643,295 +14652,229 @@ packages: - sqlite constrains: - proj4 ==999999999999 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 2840582 - timestamp: 1733138585653 -- kind: conda - name: proj - version: 9.5.1 - build: h9655f4d_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/proj-9.5.1-h9655f4d_0.conda - sha256: f1cf12e3f3101e3b5eec136b54d71c11dd8a9408f2574d1e0c8307908e0461d0 - md5: 60cc005fa3ce97967d435f92adfc7cf7 + size: 2673401 + timestamp: 1733138376056 +- conda: https://conda.anaconda.org/conda-forge/win-64/proj-9.5.1-h4f671f6_0.conda + sha256: ddd0be6172e3903bc6602a93394e8051826235377c1ce8c6ba2435869794e726 + md5: 7303dac2aa92318f319508aedab6a127 depends: - libcurl >=8.10.1,<9.0a0 - - libgcc >=13 - libsqlite >=3.47.0,<4.0a0 - - libstdcxx >=13 - libtiff >=4.7.0,<4.8.0a0 - sqlite + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 constrains: - proj4 ==999999999999 + arch: x86_64 + platform: win license: MIT license_family: MIT - size: 3038717 - timestamp: 1733139312143 -- kind: conda - name: propcache - version: 0.2.0 - build: py312h024a12e_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.0-py312h024a12e_2.conda - sha256: 0f3a04675c6c473398f0aaa95c259e0a085d5ec106b4fa89a7efeb7cc73d5dd2 - md5: 6693e523bc43c38508efe14ab3374f0c + size: 2740461 + timestamp: 1733138695290 +- conda: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.1-py313h536fd9c_0.conda + sha256: 19d3ba72bd67a4d3a734c29d0b0764c32f9162936725d0c40d836cbd73cf5af4 + md5: f261f8cf974177b5cae08ab37496dfb2 depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: Apache-2.0 - license_family: APACHE - size: 47796 - timestamp: 1728545963127 -- kind: conda - name: propcache - version: 0.2.0 - build: py312h4389bb4_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/propcache-0.2.0-py312h4389bb4_2.conda - sha256: 5b865eff7ae44f121dcf9513a6deca6ce899f6f622ae4b3598fc5e87aeea6127 - md5: 02da51b48c3cbb47552691108a764b08 - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 49834 - timestamp: 1728546297827 -- kind: conda - name: propcache - version: 0.2.0 - build: py312h66e93f0_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/propcache-0.2.0-py312h66e93f0_2.conda - sha256: be7aa0056680dd6e528b7992169a20dd525b94f62d37c8ba0fbf69bd4e8df57d - md5: 2c6c0c68f310bc33972e7c83264d7786 + size: 51769 + timestamp: 1733391998343 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.1-py313h31d5739_0.conda + sha256: 7ed10743fab596b965ef8f9cfa2a606d29c8af7aee0fea9bcf53bafcc3a40fec + md5: 60d77c5c89bc994d4b61474c4fbc03b5 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 53498 - timestamp: 1728545927816 -- kind: conda - name: propcache - version: 0.2.0 - build: py312hb2c0f52_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/propcache-0.2.0-py312hb2c0f52_2.conda - sha256: 50dad7604b6c20440baf081700b5d6829097121e65f34fd1a15508b20fbecc07 - md5: 8a258196d6f79ad32d3ea4dd4572f721 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + size: 51520 + timestamp: 1733391997502 +- conda: https://conda.anaconda.org/conda-forge/osx-64/propcache-0.2.1-py313h63b0ddb_0.conda + sha256: 7e652efd7276d481005d0a326d607118ef288137fbda38a4f11d14d91ecd6bbf + md5: 6cb1f77baea7c1f3ed812de21a8a72dd + depends: + - __osx >=10.13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: osx license: Apache-2.0 license_family: APACHE - size: 53507 - timestamp: 1728546155066 -- kind: conda - name: propcache - version: 0.2.0 - build: py312hb553811_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/propcache-0.2.0-py312hb553811_2.conda - sha256: 0945df828856b73f1005f7339a93a9bd6aabf70e021952270c17aa9243cddd7a - md5: 5710d1b099b723d6296f5c2a03a9546a + size: 46760 + timestamp: 1733392106977 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/propcache-0.2.1-py313h90d716c_0.conda + sha256: 8b3d9a95ed32a176cf94aceb7728bf0a871c104073180937bed2ac7a2df60e76 + md5: 5ca4ec33aa727e74009b69d30bd1a436 depends: - - __osx >=10.13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - __osx >=11.0 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE - size: 47459 - timestamp: 1728545894885 -- kind: conda - name: pthread-stubs - version: '0.4' - build: h00291cd_1002 - build_number: 1002 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.conda - sha256: 05944ca3445f31614f8c674c560bca02ff05cb51637a96f665cb2bbe496099e5 - md5: 8bcf980d2c6b17094961198284b8e862 + size: 47399 + timestamp: 1733392118641 +- conda: https://conda.anaconda.org/conda-forge/win-64/propcache-0.2.1-py313ha7868ed_0.conda + sha256: 1369eedaf9bdd83a7fba3d3951421c4c604820d9c9dc18b9afd85f6fdfa8e745 + md5: 9ff9fa088dbd63b3d1c1abc452eab9d5 + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win + license: Apache-2.0 + license_family: APACHE + size: 48563 + timestamp: 1733392271298 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda + sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 + md5: b3c17d95b5a10c6e64a21fa17573e70e depends: - - __osx >=10.13 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 8364 - timestamp: 1726802331537 -- kind: conda - name: pthread-stubs - version: '0.4' - build: h86ecc28_1002 - build_number: 1002 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda + size: 8252 + timestamp: 1726802366959 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pthread-stubs-0.4-h86ecc28_1002.conda sha256: 977dfb0cb3935d748521dd80262fe7169ab82920afd38ed14b7fee2ea5ec01ba md5: bb5a90c93e3bac3d5690acf76b4a6386 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 8342 timestamp: 1726803319942 -- kind: conda - name: pthread-stubs - version: '0.4' - build: hb9d3cd8_1002 - build_number: 1002 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pthread-stubs-0.4-hb9d3cd8_1002.conda - sha256: 9c88f8c64590e9567c6c80823f0328e58d3b1efb0e1c539c0315ceca764e0973 - md5: b3c17d95b5a10c6e64a21fa17573e70e - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - size: 8252 - timestamp: 1726802366959 -- kind: conda - name: pthread-stubs - version: '0.4' - build: hcd874cb_1001 - build_number: 1001 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-hcd874cb_1001.tar.bz2 - sha256: bb5a6ddf1a609a63addd6d7b488b0f58d05092ea84e9203283409bff539e202a - md5: a1f820480193ea83582b13249a7e7bd9 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pthread-stubs-0.4-h00291cd_1002.conda + sha256: 05944ca3445f31614f8c674c560bca02ff05cb51637a96f665cb2bbe496099e5 + md5: 8bcf980d2c6b17094961198284b8e862 depends: - - m2w64-gcc-libs + - __osx >=10.13 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 6417 - timestamp: 1606147814351 -- kind: conda - name: pthread-stubs - version: '0.4' - build: hd74edd7_1002 - build_number: 1002 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda + size: 8364 + timestamp: 1726802331537 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pthread-stubs-0.4-hd74edd7_1002.conda sha256: 8ed65e17fbb0ca944bfb8093b60086e3f9dd678c3448b5de212017394c247ee3 md5: 415816daf82e0b23a736a069a75e9da7 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 8381 timestamp: 1726802424786 -- kind: conda - name: pthreads-win32 - version: 2.9.1 - build: h2466b09_4 - build_number: 4 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pthreads-win32-2.9.1-h2466b09_4.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/pthread-stubs-0.4-hcd874cb_1001.tar.bz2 + sha256: bb5a6ddf1a609a63addd6d7b488b0f58d05092ea84e9203283409bff539e202a + md5: a1f820480193ea83582b13249a7e7bd9 + depends: + - m2w64-gcc-libs + arch: x86_64 + platform: win + license: MIT + license_family: MIT + size: 6417 + timestamp: 1606147814351 +- conda: https://conda.anaconda.org/conda-forge/win-64/pthreads-win32-2.9.1-h2466b09_4.conda sha256: b989bdcf0a22ba05a238adac1ad3452c11871681f565e509f629e225a26b7d45 md5: cf98a67a1ec8040b42455002a24f0b0b depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: LGPL-2.1-or-later size: 265827 timestamp: 1728400965968 -- kind: conda - name: pugixml - version: '1.14' - build: h13dd4ca_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pugixml-1.14-h13dd4ca_0.conda - sha256: 0bfeac4f1a374da9ff0a322344cdab577d397d6a0a0e5591f08cb7b491926825 - md5: 4de774bb04e03af9704ec1a2618c636c +- conda: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.14-h59595ed_0.conda + sha256: ea5f2d593177318f6b19af05018c953f41124cbb3bf21f9fdedfdb6ac42913ae + md5: 2c97dd90633508b422c11bd3018206ab depends: - - libcxx >=15.0.7 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 92472 - timestamp: 1696182843052 -- kind: conda - name: pugixml - version: '1.14' - build: h2f0025b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pugixml-1.14-h2f0025b_0.conda + size: 114871 + timestamp: 1696182708943 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pugixml-1.14-h2f0025b_0.conda sha256: 4f37f0a94bb465157e66f1a38ac1843f223db72b80c5e6a87ff354219ee86037 md5: 9af93a191056b12e841b7d32f1b01b1c depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 110831 timestamp: 1696182637281 -- kind: conda - name: pugixml - version: '1.14' - build: h59595ed_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pugixml-1.14-h59595ed_0.conda - sha256: ea5f2d593177318f6b19af05018c953f41124cbb3bf21f9fdedfdb6ac42913ae - md5: 2c97dd90633508b422c11bd3018206ab +- conda: https://conda.anaconda.org/conda-forge/osx-64/pugixml-1.14-he965462_0.conda + sha256: 8ba30eb9ead058a19a472bb8e795ab408c629b0b84fc5bb7b6899e7429d5e625 + md5: 92f9416f48c010bf04c34c9841c84b09 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - libcxx >=15.0.7 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 114871 - timestamp: 1696182708943 -- kind: conda - name: pugixml - version: '1.14' - build: h63175ca_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pugixml-1.14-h63175ca_0.conda + size: 94175 + timestamp: 1696182807580 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pugixml-1.14-h13dd4ca_0.conda + sha256: 0bfeac4f1a374da9ff0a322344cdab577d397d6a0a0e5591f08cb7b491926825 + md5: 4de774bb04e03af9704ec1a2618c636c + depends: + - libcxx >=15.0.7 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 92472 + timestamp: 1696182843052 +- conda: https://conda.anaconda.org/conda-forge/win-64/pugixml-1.14-h63175ca_0.conda sha256: 68a5cb9a7560b2ce0d72ccebc7f6623e13ca66a67f80feb1094a75199bd1a50c md5: 6794ab7a1f26ebfe0452297eba029d4f depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: MIT license_family: MIT size: 111324 timestamp: 1696182979614 -- kind: conda - name: pugixml - version: '1.14' - build: he965462_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pugixml-1.14-he965462_0.conda - sha256: 8ba30eb9ead058a19a472bb8e795ab408c629b0b84fc5bb7b6899e7429d5e625 - md5: 92f9416f48c010bf04c34c9841c84b09 - depends: - - libcxx >=15.0.7 - license: MIT - license_family: MIT - size: 94175 - timestamp: 1696182807580 -- kind: conda - name: pybind11 - version: 2.13.6 - build: pyh1ec8472_2 - build_number: 2 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-2.13.6-pyh1ec8472_2.conda sha256: 27f888492af3d5ab19553f263b0015bf3766a334668b5b3a79c7dc0416e603c1 md5: 8088a5e7b2888c780738c3130f2a969d depends: @@ -19943,28 +14886,7 @@ packages: license_family: BSD size: 186375 timestamp: 1730237816231 -- kind: conda - name: pybind11-abi - version: '4' - build: hd8ed1ab_3 - build_number: 3 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/pybind11-abi-4-hd8ed1ab_3.tar.bz2 - sha256: d4fb485b79b11042a16dc6abfb0c44c4f557707c2653ac47c81e5d32b24a3bb0 - md5: 878f923dd6acc8aeb47a75da6c4098be - license: BSD-3-Clause - license_family: BSD - size: 9906 - timestamp: 1610372835205 -- kind: conda - name: pybind11-global - version: 2.13.6 - build: pyh415d2e4_2 - build_number: 2 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyh415d2e4_2.conda sha256: 9ff0d61d86878f81779bdb7e47656a75feaab539893462cff29b8ec353026d81 md5: 120541563e520d12d8e39abd7de9092c depends: @@ -19976,14 +14898,7 @@ packages: license_family: BSD size: 179139 timestamp: 1730237481227 -- kind: conda - name: pybind11-global - version: 2.13.6 - build: pyhab904b8_2 - build_number: 2 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyhab904b8_2.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pybind11-global-2.13.6-pyhab904b8_2.conda sha256: 49b3c9b5e73bf696e7af9824095eb34e4a74334fc108af06e8739c1fec54ab9a md5: 3482d403d3fef1cb2810c53a48548185 depends: @@ -19995,163 +14910,51 @@ packages: license_family: BSD size: 182337 timestamp: 1730237499231 -- kind: conda - name: pycosat - version: 0.6.6 - build: py312h01d7ebd_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pycosat-0.6.6-py312h01d7ebd_2.conda - sha256: fabcf7191cd808ddc7ae78c7379eb7557c913e460227ae498121d022ea55e553 - md5: 9addc104aa4afd0b21a086cfdca253d5 - depends: - - __osx >=10.13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - size: 88862 - timestamp: 1732588621742 -- kind: conda - name: pycosat - version: 0.6.6 - build: py312h4389bb4_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pycosat-0.6.6-py312h4389bb4_2.conda - sha256: e8375488806c16a067f62e81f1d84aa05e149c35c72ed443b645b9292fc3b35f - md5: b05ea9cb9eb430aa417b84ea34414551 - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: MIT - license_family: MIT - size: 77781 - timestamp: 1732588951422 -- kind: conda - name: pycosat - version: 0.6.6 - build: py312h66e93f0_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pycosat-0.6.6-py312h66e93f0_2.conda - sha256: dad83b55d1511a853ecf1d5bff3027055337262aa63084986ee2e329ee26d71b - md5: 08223e6a73e0bca5ade16ec4cebebf23 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - size: 87749 - timestamp: 1732588516003 -- kind: conda - name: pycosat - version: 0.6.6 - build: py312hb2c0f52_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pycosat-0.6.6-py312hb2c0f52_2.conda - sha256: 501aff3b26b037cefcc8cfcff90954660281c62d58cf1e585fc3eb22fda7fa70 - md5: a5bd669336a31b5250e8d76dd6b8d659 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - size: 87443 - timestamp: 1732588597495 -- kind: conda - name: pycosat - version: 0.6.6 - build: py312hea69d52_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pycosat-0.6.6-py312hea69d52_2.conda - sha256: ad64eadac6b0a9534cbba1088df9de84c95f7f69c700a5a9cb8b20dfc175e6aa - md5: b62d16d1aabb9349c8e81d842dfb2268 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - size: 84234 - timestamp: 1732588806999 -- kind: conda - name: pycparser - version: '2.22' - build: pyh29332c3_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/pycparser-2.22-pyh29332c3_1.conda sha256: 79db7928d13fab2d892592223d7570f5061c192f27b9febd1a418427b719acc6 md5: 12c566707c80111f9799308d9e265aef depends: - python >=3.9 - python license: BSD-3-Clause + license_family: BSD size: 110100 timestamp: 1733195786147 -- kind: conda - name: pyparsing - version: 3.2.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.0-pyhd8ed1ab_1.conda - sha256: b846e3965cd106438cf0b9dc0de8d519670ac065f822a7d66862e9423e0229cb - md5: 035c17fbf099f50ff60bf2eb303b0a83 +- conda: https://conda.anaconda.org/conda-forge/noarch/pyparsing-3.2.1-pyhd8ed1ab_0.conda + sha256: f513fed4001fd228d3bf386269237b4ca6bff732c99ffc11fcbad8529b35407c + md5: 285e237b8f351e85e7574a2c7bfa6d46 depends: - python >=3.9 license: MIT - license_family: MIT - size: 92444 - timestamp: 1728880549923 -- kind: conda - name: pyside6 - version: 6.7.3 - build: py312h2ee7485_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.7.3-py312h2ee7485_1.conda - sha256: e3f3c1eb70a051f06c0598ac70fb9d5e770a116a56b399d48f4ce22a2c169e89 - md5: d55a97c0263d3f780726a76ae18498cc + size: 93082 + timestamp: 1735698406955 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.7.3-py313h5f61773_1.conda + sha256: f1d38b1246a73f3118b98372a3f622767b388178b3803937617ee13a4d472dd0 + md5: 360a48205ca9c13a7abc41a245821be4 depends: + - __glibc >=2.17,<3.0.a0 - libclang13 >=19.1.0 + - libegl >=1.7.0,<2.0a0 + - libgcc >=13 + - libgl >=1.7.0,<2.0a0 + - libopengl >=1.7.0,<2.0a0 + - libstdcxx >=13 - libxml2 >=2.12.7,<3.0a0 - libxslt >=1.1.39,<2.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13.0rc2,<3.14.0a0 + - python_abi 3.13.* *_cp313 - qt6-main 6.7.3.* - qt6-main >=6.7.3,<6.8.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: linux license: LGPL-3.0-only license_family: LGPL - size: 9211882 - timestamp: 1727987852185 -- kind: conda - name: pyside6 - version: 6.7.3 - build: py312h91f0f75_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyside6-6.7.3-py312h91f0f75_1.conda - sha256: e9d26444e4a554a71e885017898b101d388855277b6604f3235e50b63cc66fe0 - md5: 64a74d686fd29fa04c4c313a688e2421 + size: 10461902 + timestamp: 1727987616832 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyside6-6.7.3-py313h57f4686_1.conda + sha256: 4104e71911316227e49a44c79beb8459b3cb7d575922d6de9799d536402e2eae + md5: 282b60a181abb226589e9311e7cb0887 depends: - - __glibc >=2.17,<3.0.a0 - libclang13 >=19.1.0 - libegl >=1.7.0,<2.0a0 - libgcc >=13 @@ -20160,565 +14963,406 @@ packages: - libstdcxx >=13 - libxml2 >=2.12.7,<3.0a0 - libxslt >=1.1.39,<2.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13.0rc2,<3.14.0a0 + - python_abi 3.13.* *_cp313 - qt6-main 6.7.3.* - qt6-main >=6.7.3,<6.8.0a0 + arch: aarch64 + platform: linux license: LGPL-3.0-only license_family: LGPL - size: 10458409 - timestamp: 1727987584620 -- kind: conda - name: pyside6 - version: 6.7.3 - build: py312h943ac22_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyside6-6.7.3-py312h943ac22_1.conda - sha256: b360a1e7ae36d75442a76310aae3c2cf97dab1b759329c5e332e771130f01215 - md5: 3719540260a520b4f60a5e9e7b38d2b1 + size: 7513163 + timestamp: 1727988093851 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyside6-6.7.3-py313h7f74686_1.conda + sha256: 0e5a78f97279e9b1705f9d03cd858c8a79a4f31a0918f1a94af702afe61ef27d + md5: e0d9b08aae60333bad517463c83df031 depends: - __osx >=11.0 - libclang13 >=17.0.6 - libcxx >=17 - libxml2 >=2.12.7,<3.0a0 - libxslt >=1.1.39,<2.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13.0rc2,<3.14.0a0 + - python_abi 3.13.* *_cp313 - qt6-main 6.7.3.* - qt6-main >=6.7.3,<6.8.0a0 + arch: x86_64 + platform: osx license: LGPL-3.0-only license_family: LGPL - size: 11926619 - timestamp: 1727988075684 -- kind: conda - name: pyside6 - version: 6.7.3 - build: py312hdb00d57_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pyside6-6.7.3-py312hdb00d57_1.conda - sha256: c357b578cf360155e8465abd809d8febee0af50119c356a0c5bc9b2fa6afdf0d - md5: 7a127eaa448a53553c7e3b964d7fbbf0 + size: 12374174 + timestamp: 1727988065503 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyside6-6.7.3-py313h944b03b_1.conda + sha256: cd14de3def45e00e3ee377ea3e3fe8b57a42c6258c05c9fdea0cd73c1fef38b1 + md5: 239e93743204d59062966242ea74d771 depends: - __osx >=11.0 - libclang13 >=17.0.6 - libcxx >=17 - libxml2 >=2.12.7,<3.0a0 - libxslt >=1.1.39,<2.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13.0rc2,<3.14.0a0 + - python_abi 3.13.* *_cp313 - qt6-main 6.7.3.* - qt6-main >=6.7.3,<6.8.0a0 + arch: arm64 + platform: osx license: LGPL-3.0-only license_family: LGPL - size: 12345387 - timestamp: 1727987542743 -- kind: conda - name: pyside6 - version: 6.7.3 - build: py312hdd999d0_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyside6-6.7.3-py312hdd999d0_1.conda - sha256: 6f40c26caaf55b62707ab26d9610f4e26dc26be08e9063f0e554e0b93537313a - md5: 78311b86779f10934f0eae9323d3a2b4 + size: 11970188 + timestamp: 1727988010631 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyside6-6.7.3-py313h3e3797f_1.conda + sha256: 35acbfb81ce080e87faedf06088c9a7f7734330690fea734e6f7bd3a1bad417e + md5: 37cbd44608e96af5af5c440ff9662dbb depends: - libclang13 >=19.1.0 - - libegl >=1.7.0,<2.0a0 - - libgcc >=13 - - libgl >=1.7.0,<2.0a0 - - libopengl >=1.7.0,<2.0a0 - - libstdcxx >=13 - libxml2 >=2.12.7,<3.0a0 - libxslt >=1.1.39,<2.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13.0rc2,<3.14.0a0 + - python_abi 3.13.* *_cp313 - qt6-main 6.7.3.* - qt6-main >=6.7.3,<6.8.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: LGPL-3.0-only license_family: LGPL - size: 7537350 - timestamp: 1727987722585 -- kind: conda - name: pysocks - version: 1.7.1 - build: pyh0701188_6 - build_number: 6 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyh0701188_6.tar.bz2 - sha256: b3a612bc887f3dd0fb7c4199ad8e342bd148cf69a9b74fd9468a18cf2bef07b7 - md5: 56cd9fe388baac0e90c7149cfac95b60 - depends: - - __win - - python >=3.8 - - win_inet_pton - license: BSD-3-Clause - license_family: BSD - size: 19348 - timestamp: 1661605138291 -- kind: conda - name: pysocks - version: 1.7.1 - build: pyha2e5f31_6 - build_number: 6 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/pysocks-1.7.1-pyha2e5f31_6.tar.bz2 - sha256: a42f826e958a8d22e65b3394f437af7332610e43ee313393d1cf143f0a2d274b - md5: 2a7de29fb590ca14b5243c4c812c8025 - depends: - - __unix - - python >=3.8 - license: BSD-3-Clause - license_family: BSD - size: 18981 - timestamp: 1661604969727 -- kind: conda - name: python - version: 3.12.0 - build: h2628c8c_0_cpython - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/python-3.12.0-h2628c8c_0_cpython.conda - sha256: 90553586879bf328f2f9efb8d8faa958ecba822faf379f0a20c3461467b9b955 - md5: defd5d375853a2caff36a19d2d81a28e + size: 9186689 + timestamp: 1727987938112 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python-3.13.0-h9ebbce0_101_cp313.conda + build_number: 101 + sha256: 66a7997b24b2dca636df11402abec7bd2199ddf6971eb47a3ee6b1d27d4faee9 + md5: f4fea9d5bb3f2e61a39950a7ab70ee4e depends: + - __glibc >=2.17,<3.0.a0 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.5.0,<3.0a0 + - ld_impl_linux-64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libsqlite >=3.43.0,<4.0a0 - - libzlib >=1.2.13,<2.0.0a0 - - openssl >=3.1.3,<4.0a0 + - libgcc >=13 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - python_abi 3.13.* *_cp313 + - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - xz >=5.2.6,<6.0a0 - constrains: - - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: linux license: Python-2.0 - size: 16140836 - timestamp: 1696321871976 -- kind: conda - name: python - version: 3.12.0 - build: h30d4d87_0_cpython - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/python-3.12.0-h30d4d87_0_cpython.conda - sha256: 0a1ed3983acbd0528bef5216179e46170f024f4409032875b27865568fef46a1 - md5: d11dc8f4551011fb6baa2865f1ead48f + size: 33054218 + timestamp: 1732736838043 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.13.0-h4f870b6_101_cp313.conda + build_number: 101 + sha256: d79aa7f92e85db84f26102fa037ae9c5a6b8d16f4bb2758e993af7429986a7ef + md5: 8fc3ca3168d288483a99f467370b805c depends: - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.5.0,<3.0a0 + - ld_impl_linux-aarch64 >=2.36.1 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libsqlite >=3.43.0,<4.0a0 - - libzlib >=1.2.13,<2.0.0a0 - - ncurses >=6.4,<7.0a0 - - openssl >=3.1.3,<4.0a0 + - libgcc >=13 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libuuid >=2.38.1,<3.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - python_abi 3.13.* *_cp313 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - xz >=5.2.6,<6.0a0 - constrains: - - python_abi 3.12.* *_cp312 + arch: aarch64 + platform: linux license: Python-2.0 - size: 14529683 - timestamp: 1696323482650 -- kind: conda - name: python - version: 3.12.0 - build: h43d1f9e_0_cpython - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python-3.12.0-h43d1f9e_0_cpython.conda - sha256: d771b2eb228cefcb622e2f1aeed1d12c91ab9a41ab21acb9214a8962c7fefa3c - md5: 2e462f114cb8a6f1b3e3e934b7f4507a + size: 13511997 + timestamp: 1732734494864 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python-3.13.0-h3a8ca6c_101_cp313.conda + build_number: 101 + sha256: c8b23bbdcd0e4f24fed2028cba20bd81325a4220439c1b8e6b06694f16642a2c + md5: 0acea4c3eee2454fd642d1a4eafa2943 depends: + - __osx >=10.13 - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-aarch64 >=2.36.1 - - libexpat >=2.5.0,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libgcc-ng >=12 - - libnsl >=2.0.0,<2.1.0a0 - - libsqlite >=3.43.0,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libzlib >=1.2.13,<2.0.0a0 - - ncurses >=6.4,<7.0a0 - - openssl >=3.1.3,<4.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - python_abi 3.13.* *_cp313 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - xz >=5.2.6,<6.0a0 - constrains: - - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: osx license: Python-2.0 - size: 13856145 - timestamp: 1696323158781 -- kind: conda - name: python - version: 3.12.0 - build: h47c9636_0_cpython - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.12.0-h47c9636_0_cpython.conda - sha256: eb66f8f249caa9d5a956c3a407f079e4779d652ebfc2a4b4f50dcea078e84fa8 - md5: ed8ae98b1b510de68392971b9367d18c + size: 13941305 + timestamp: 1732736712289 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python-3.13.0-hbbac1ca_101_cp313.conda + build_number: 101 + sha256: 742544a4cf9a10cf2c16d35d96fb696c27d58b9df0cc29fbef5629283aeca941 + md5: e972e146a1e0cfb1f26da42cb6f6648c depends: + - __osx >=11.0 - bzip2 >=1.0.8,<2.0a0 - - libexpat >=2.5.0,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libsqlite >=3.43.0,<4.0a0 - - libzlib >=1.2.13,<2.0.0a0 - - ncurses >=6.4,<7.0a0 - - openssl >=3.1.3,<4.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - ncurses >=6.5,<7.0a0 + - openssl >=3.4.0,<4.0a0 + - python_abi 3.13.* *_cp313 - readline >=8.2,<9.0a0 - tk >=8.6.13,<8.7.0a0 - tzdata - xz >=5.2.6,<6.0a0 - constrains: - - python_abi 3.12.* *_cp312 + arch: arm64 + platform: osx license: Python-2.0 - size: 13306758 - timestamp: 1696322682581 -- kind: conda - name: python - version: 3.12.0 - build: hab00c5b_0_cpython - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python-3.12.0-hab00c5b_0_cpython.conda - sha256: 5398ebae6a1ccbfd3f76361eac75f3ac071527a8072627c4bf9008c689034f48 - md5: 7f97faab5bebcc2580f4f299285323da + size: 12806496 + timestamp: 1732735488999 +- conda: https://conda.anaconda.org/conda-forge/win-64/python-3.13.0-hf5aa216_101_cp313.conda + build_number: 101 + sha256: b8eba57bd86c7890b27e67b477b52b5bd547946c354f29b9dbbc70ad83f2863b + md5: 158d6077a635cf0c0c23bec3955a4833 depends: - bzip2 >=1.0.8,<2.0a0 - - ld_impl_linux-64 >=2.36.1 - - libexpat >=2.5.0,<3.0a0 + - libexpat >=2.6.4,<3.0a0 - libffi >=3.4,<4.0a0 - - libgcc-ng >=12 - - libnsl >=2.0.0,<2.1.0a0 - - libsqlite >=3.43.0,<4.0a0 - - libuuid >=2.38.1,<3.0a0 - - libzlib >=1.2.13,<2.0.0a0 - - ncurses >=6.4,<7.0a0 - - openssl >=3.1.3,<4.0a0 - - readline >=8.2,<9.0a0 + - libmpdec >=4.0.0,<5.0a0 + - libsqlite >=3.47.0,<4.0a0 + - libzlib >=1.3.1,<2.0a0 + - openssl >=3.4.0,<4.0a0 + - python_abi 3.13.* *_cp313 - tk >=8.6.13,<8.7.0a0 - tzdata + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 - xz >=5.2.6,<6.0a0 - constrains: - - python_abi 3.12.* *_cp312 + arch: x86_64 + platform: win license: Python-2.0 - size: 32123473 - timestamp: 1696324522323 -- kind: conda - name: python-dateutil - version: 2.9.0.post0 - build: pyhff2d567_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_0.conda - sha256: 3888012c5916efaef45d503e3e544bbcc571b84426c1bb9577799ada9efefb54 - md5: b6dfd90a2141e573e4b6a81630b56df5 + size: 16697406 + timestamp: 1732734725404 +- conda: https://conda.anaconda.org/conda-forge/noarch/python-dateutil-2.9.0.post0-pyhff2d567_1.conda + sha256: a50052536f1ef8516ed11a844f9413661829aa083304dc624c5925298d078d79 + md5: 5ba79d7c71f03c678c8ead841f347d6e depends: - python >=3.9 - six >=1.5 license: Apache-2.0 license_family: APACHE - size: 221925 - timestamp: 1731919374686 -- kind: conda - name: python_abi - version: '3.12' - build: 5_cp312 + size: 222505 + timestamp: 1733215763718 +- conda: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.13-5_cp313.conda build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/python_abi-3.12-5_cp312.conda - sha256: d10e93d759931ffb6372b45d65ff34d95c6000c61a07e298d162a3bc2accebb0 - md5: 0424ae29b104430108f5218a66db7260 + sha256: 438225b241c5f9bddae6f0178a97f5870a89ecf927dfca54753e689907331442 + md5: 381bbd2a92c863f640a55b6ff3c35161 constrains: - - python 3.12.* *_cpython + - python 3.13.* *_cp313 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 6238 - timestamp: 1723823388266 -- kind: conda - name: python_abi - version: '3.12' - build: 5_cp312 + size: 6217 + timestamp: 1723823393322 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.13-5_cp313.conda build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/python_abi-3.12-5_cp312.conda - sha256: 5ccdad9981753cc4a2d126e356673a21c0cd5b34e209cb8d476a3947d4ad9b39 - md5: 62b20f305498284a07dc6c45fd0e5c87 + sha256: 7f3ce809934a401ec8a91f66bd157a2f5b620d5bb5e02b53aa2453e8a6bf117e + md5: 74a44e8cf3265491bd0e7da5e788b017 constrains: - - python 3.12.* *_cpython + - python 3.13.* *_cp313 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 6329 - timestamp: 1723823366253 -- kind: conda - name: python_abi - version: '3.12' - build: 5_cp312 + size: 6323 + timestamp: 1723823381420 +- conda: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.13-5_cp313.conda build_number: 5 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/python_abi-3.12-5_cp312.conda - sha256: 4da26c7508d5bc5d8621e84dc510284402239df56aab3587a7d217de9d3c806d - md5: c34dd4920e0addf7cfcc725809f25d8e + sha256: 075ad768648e88b78d2a94099563b43d3082e7c35979f457164f26d1079b7b5c + md5: 927a2186f1f997ac018d67c4eece90a6 constrains: - - python 3.12.* *_cpython + - python 3.13.* *_cp313 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 6312 - timestamp: 1723823137004 -- kind: conda - name: python_abi - version: '3.12' - build: 5_cp312 + size: 6291 + timestamp: 1723823083064 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.13-5_cp313.conda build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/python_abi-3.12-5_cp312.conda - sha256: 49d624e4b809c799d2bf257b22c23cf3fc4460f5570d9a58e7ad86350aeaa1f4 - md5: b76f9b1c862128e56ac7aa8cd2333de9 + sha256: 4437198eae80310f40b23ae2f8a9e0a7e5c2b9ae411a8621eb03d87273666199 + md5: b8e82d0a5c1664638f87f63cc5d241fb constrains: - - python 3.12.* *_cpython + - python 3.13.* *_cp313 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 6278 - timestamp: 1723823099686 -- kind: conda - name: python_abi - version: '3.12' - build: 5_cp312 + size: 6322 + timestamp: 1723823058879 +- conda: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.13-5_cp313.conda build_number: 5 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/python_abi-3.12-5_cp312.conda - sha256: 9486662af81a219e96d343449eff242f38d7c5128ced5ce5acf85857265058d6 - md5: e8681f534453af7afab4cd2bc1423eec + sha256: 0c12cc1b84962444002c699ed21e815fb9f686f950d734332a1b74d07db97756 + md5: 44b4fe6f22b57103afb2299935c8b68e constrains: - - python 3.12.* *_cpython + - python 3.13.* *_cp313 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD - size: 6730 - timestamp: 1723823139725 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py312h024a12e_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py312h024a12e_1.conda - sha256: b06f1c15fb39695bbf707ae8fb554b9a77519af577b5556784534c7db10b52e3 - md5: 1ee23620cf46cb15900f70a1300bae55 + size: 6716 + timestamp: 1723823166911 +- conda: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py313h536fd9c_1.conda + sha256: 86ae34bf2bab82c0fff2e31a37318c8977297776436df780a83c6efa5f84749d + md5: 3789f360de131c345e96fbfc955ca80b depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 187143 - timestamp: 1725456547263 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py312h4389bb4_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py312h4389bb4_1.conda - sha256: fa3ede1fa2ed6ea0a51095aeea398f6f0f54af036c4bc525726107cfb49229d5 - md5: afb7809721516919c276b45f847c085f - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + size: 205855 + timestamp: 1725456273924 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py313h31d5739_1.conda + sha256: 3f76b99cde1581f667e414b6e36f3bdadd4b454e980115ab876da5301e60a624 + md5: a4610536c884df004c921f963d9a736d + depends: + - libgcc >=13 + - python >=3.13.0rc1,<3.14.0a0 + - python >=3.13.0rc1,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 - yaml >=0.2.5,<0.3.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 181227 - timestamp: 1725456516473 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/pyyaml-6.0.2-py312h66e93f0_1.conda - sha256: a60705971e958724168f2ebbb8ed4853067f1d3f7059843df3903e3092bbcffa - md5: 549e5930e768548a89c23f595dac5a95 + size: 198069 + timestamp: 1725456352618 +- conda: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py313ha37c0e0_1.conda + sha256: 79ca3a62f0f085e5f29f1614c0d509a20d3a34bb2ef956c079ee4cdf0e36dbfc + md5: cdaa065902c8bbf2975cf7744fb5c27d depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - __osx >=10.13 + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 206553 - timestamp: 1725456256213 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py312hb2c0f52_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/pyyaml-6.0.2-py312hb2c0f52_1.conda - sha256: 8c515ebe1e7e85d972d72b75760af9dfac06fd11a9dba7e05c42d69aedbb303c - md5: dc5de424f7dbb9772da720dbb81317b2 + size: 190014 + timestamp: 1725456352876 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/pyyaml-6.0.2-py313h20a7fcf_1.conda + sha256: f9fbafcf30cfab591c67f7550c0fd58e2bff394b53864dcdc658f5abd27ce5d6 + md5: bf2ddf70a9ce8f899b1082d17cbb3d1d depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - __osx >=11.0 + - python >=3.13.0rc1,<3.14.0a0 + - python >=3.13.0rc1,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 - yaml >=0.2.5,<0.3.0a0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 199141 - timestamp: 1725456356043 -- kind: conda - name: pyyaml - version: 6.0.2 - build: py312hb553811_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/pyyaml-6.0.2-py312hb553811_1.conda - sha256: 455ce40588b35df654cb089d29cc3f0d3c78365924ffdfc6ee93dba80cea5f33 - md5: 66514594817d51c78db7109a23ad322f + size: 187550 + timestamp: 1725456463634 +- conda: https://conda.anaconda.org/conda-forge/win-64/pyyaml-6.0.2-py313ha7868ed_1.conda + sha256: ffa21c4715aa139d20c96ae7274fbb7de12a546f3332eb8d07cc794741fcbde6 + md5: c1743e5c4c7402a14b515cf276778e59 depends: - - __osx >=10.13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 - yaml >=0.2.5,<0.3.0a0 + arch: x86_64 + platform: win license: MIT license_family: MIT - size: 189347 - timestamp: 1725456465705 -- kind: conda - name: qhull - version: '2020.2' - build: h3c5361c_5 - build_number: 5 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/qhull-2020.2-h3c5361c_5.conda - sha256: 79d804fa6af9c750e8b09482559814ae18cd8df549ecb80a4873537a5a31e06e - md5: dd1ea9ff27c93db7c01a7b7656bd4ad4 - depends: - - __osx >=10.13 - - libcxx >=16 - license: LicenseRef-Qhull - size: 528122 - timestamp: 1720814002588 -- kind: conda - name: qhull - version: '2020.2' - build: h420ef59_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/qhull-2020.2-h420ef59_5.conda - sha256: 873ac689484262a51fd79bc6103c1a1bedbf524924d7f0088fb80703042805e4 - md5: 6483b1f59526e05d7d894e466b5b6924 - depends: - - __osx >=11.0 - - libcxx >=16 - license: LicenseRef-Qhull - size: 516376 - timestamp: 1720814307311 -- kind: conda - name: qhull - version: '2020.2' - build: h434a139_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda + size: 181722 + timestamp: 1725456802746 +- conda: https://conda.anaconda.org/conda-forge/linux-64/qhull-2020.2-h434a139_5.conda sha256: 776363493bad83308ba30bcb88c2552632581b143e8ee25b1982c8c743e73abc md5: 353823361b1d27eb3960efb076dfcaf6 depends: - __glibc >=2.17,<3.0.a0 - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: LicenseRef-Qhull size: 552937 timestamp: 1720813982144 -- kind: conda - name: qhull - version: '2020.2' - build: h70be974_5 - build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/qhull-2020.2-h70be974_5.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/qhull-2020.2-h70be974_5.conda sha256: 49f777bdf3c5e030a8c7b24c58cdfe9486b51d6ae0001841079a3228bdf9fb51 md5: bb138086d938e2b64f5f364945793ebf depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: LicenseRef-Qhull size: 554571 timestamp: 1720813941183 -- kind: conda - name: qhull - version: '2020.2' - build: hc790b64_5 - build_number: 5 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/qhull-2020.2-hc790b64_5.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/qhull-2020.2-h3c5361c_5.conda + sha256: 79d804fa6af9c750e8b09482559814ae18cd8df549ecb80a4873537a5a31e06e + md5: dd1ea9ff27c93db7c01a7b7656bd4ad4 + depends: + - __osx >=10.13 + - libcxx >=16 + arch: x86_64 + platform: osx + license: LicenseRef-Qhull + size: 528122 + timestamp: 1720814002588 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/qhull-2020.2-h420ef59_5.conda + sha256: 873ac689484262a51fd79bc6103c1a1bedbf524924d7f0088fb80703042805e4 + md5: 6483b1f59526e05d7d894e466b5b6924 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: LicenseRef-Qhull + size: 516376 + timestamp: 1720814307311 +- conda: https://conda.anaconda.org/conda-forge/win-64/qhull-2020.2-hc790b64_5.conda sha256: 887d53486a37bd870da62b8fa2ebe3993f912ad04bd755e7ed7c47ced97cbaa8 md5: 854fbdff64b572b5c0b470f334d34c11 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: LicenseRef-Qhull size: 1377020 timestamp: 1720814433486 -- kind: conda - name: qt6-main - version: 6.7.3 - build: h2fbab7f_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/qt6-main-6.7.3-h2fbab7f_1.conda - sha256: dfbe1966d4c48c934a7ac2c8aaf1e98b403892a7110cf1e7c0f4083ef41384e7 - md5: 5e88d4724cd324b0cb29776605364d1f - depends: - - __osx >=11.0 - - double-conversion >=3.3.0,<3.4.0a0 - - harfbuzz >=9.0.0,<10.0a0 - - icu >=75.1,<76.0a0 - - krb5 >=1.21.3,<1.22.0a0 - - libclang-cpp17 >=17.0.6,<17.1.0a0 - - libclang13 >=17.0.6 - - libcxx >=17 - - libglib >=2.82.1,<3.0a0 - - libjpeg-turbo >=3.0.0,<4.0a0 - - libllvm17 >=17.0.6,<17.1.0a0 - - libpng >=1.6.44,<1.7.0a0 - - libpq >=17.0,<18.0a0 - - libsqlite >=3.46.1,<4.0a0 - - libtiff >=4.7.0,<4.8.0a0 - - libwebp-base >=1.4.0,<2.0a0 - - libzlib >=1.3.1,<2.0a0 - - mysql-libs >=9.0.1,<9.1.0a0 - - openssl >=3.3.2,<4.0a0 - - pcre2 >=10.44,<10.45.0a0 - - zstd >=1.5.6,<1.6.0a0 - constrains: - - qt 6.7.3 - license: LGPL-3.0-only - license_family: LGPL - size: 39497419 - timestamp: 1727939046886 -- kind: conda - name: qt6-main - version: 6.7.3 - build: h666f7c6_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/qt6-main-6.7.3-h666f7c6_1.conda - sha256: 1d13e7a753aac06a2d211b57176ff79daee4b6c1d1a6e858663d87952a85db12 - md5: e8ca639d0e06d586f7263e4d9e32b651 +- conda: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.7.3-h6e8976b_1.conda + sha256: f5e4cefa82edec73c9bfc99566391463aeb339cfae8446f9b3c7950fefec6555 + md5: f3234422a977b5d400ccf503ad55c5d1 depends: + - __glibc >=2.17,<3.0.a0 - alsa-lib >=1.2.12,<1.3.0a0 - dbus >=1.13.6,<2.0a0 - double-conversion >=3.3.0,<3.4.0a0 @@ -20760,7 +15404,7 @@ packages: - xcb-util-wm >=0.4.2,<0.5.0a0 - xorg-libice >=1.1.1,<2.0a0 - xorg-libsm >=1.2.4,<2.0a0 - - xorg-libx11 >=1.8.9,<2.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 - xorg-libxcomposite >=0.4.6,<1.0a0 - xorg-libxcursor >=1.2.2,<2.0a0 - xorg-libxdamage >=1.1.6,<2.0a0 @@ -20771,21 +15415,16 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - qt 6.7.3 + arch: x86_64 + platform: linux license: LGPL-3.0-only license_family: LGPL - size: 49156132 - timestamp: 1727941520557 -- kind: conda - name: qt6-main - version: 6.7.3 - build: h6e8976b_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/qt6-main-6.7.3-h6e8976b_1.conda - sha256: f5e4cefa82edec73c9bfc99566391463aeb339cfae8446f9b3c7950fefec6555 - md5: f3234422a977b5d400ccf503ad55c5d1 + size: 47378301 + timestamp: 1727940486113 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/qt6-main-6.7.3-h666f7c6_1.conda + sha256: 1d13e7a753aac06a2d211b57176ff79daee4b6c1d1a6e858663d87952a85db12 + md5: e8ca639d0e06d586f7263e4d9e32b651 depends: - - __glibc >=2.17,<3.0.a0 - alsa-lib >=1.2.12,<1.3.0a0 - dbus >=1.13.6,<2.0a0 - double-conversion >=3.3.0,<3.4.0a0 @@ -20827,7 +15466,7 @@ packages: - xcb-util-wm >=0.4.2,<0.5.0a0 - xorg-libice >=1.1.1,<2.0a0 - xorg-libsm >=1.2.4,<2.0a0 - - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libx11 >=1.8.9,<2.0a0 - xorg-libxcomposite >=0.4.6,<1.0a0 - xorg-libxcursor >=1.2.2,<2.0a0 - xorg-libxdamage >=1.1.6,<2.0a0 @@ -20838,17 +15477,13 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - qt 6.7.3 + arch: aarch64 + platform: linux license: LGPL-3.0-only license_family: LGPL - size: 47378301 - timestamp: 1727940486113 -- kind: conda - name: qt6-main - version: 6.7.3 - build: h8612794_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/qt6-main-6.7.3-h8612794_1.conda + size: 49156132 + timestamp: 1727941520557 +- conda: https://conda.anaconda.org/conda-forge/osx-64/qt6-main-6.7.3-h8612794_1.conda sha256: d79bd723c80855a527e541e0ec8dec9929440bcc7443a53cf8f5e0b8f60d4881 md5: 4d44b5907375ac312b76fc7996271ca6 depends: @@ -20875,17 +15510,46 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - qt 6.7.3 + arch: x86_64 + platform: osx license: LGPL-3.0-only license_family: LGPL size: 40378217 timestamp: 1727940537540 -- kind: conda - name: qt6-main - version: 6.7.3 - build: hfb098fa_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.7.3-hfb098fa_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/qt6-main-6.7.3-h2fbab7f_1.conda + sha256: dfbe1966d4c48c934a7ac2c8aaf1e98b403892a7110cf1e7c0f4083ef41384e7 + md5: 5e88d4724cd324b0cb29776605364d1f + depends: + - __osx >=11.0 + - double-conversion >=3.3.0,<3.4.0a0 + - harfbuzz >=9.0.0,<10.0a0 + - icu >=75.1,<76.0a0 + - krb5 >=1.21.3,<1.22.0a0 + - libclang-cpp17 >=17.0.6,<17.1.0a0 + - libclang13 >=17.0.6 + - libcxx >=17 + - libglib >=2.82.1,<3.0a0 + - libjpeg-turbo >=3.0.0,<4.0a0 + - libllvm17 >=17.0.6,<17.1.0a0 + - libpng >=1.6.44,<1.7.0a0 + - libpq >=17.0,<18.0a0 + - libsqlite >=3.46.1,<4.0a0 + - libtiff >=4.7.0,<4.8.0a0 + - libwebp-base >=1.4.0,<2.0a0 + - libzlib >=1.3.1,<2.0a0 + - mysql-libs >=9.0.1,<9.1.0a0 + - openssl >=3.3.2,<4.0a0 + - pcre2 >=10.44,<10.45.0a0 + - zstd >=1.5.6,<1.6.0a0 + constrains: + - qt 6.7.3 + arch: arm64 + platform: osx + license: LGPL-3.0-only + license_family: LGPL + size: 39497419 + timestamp: 1727939046886 +- conda: https://conda.anaconda.org/conda-forge/win-64/qt6-main-6.7.3-hfb098fa_1.conda sha256: c10933396b409f74f05fe7036ddf2b129e219dd3939170c3ebb0fd0790cd14ac md5: 3dd4b78a610e48def640c3c9acd0c7e7 depends: @@ -20909,636 +15573,191 @@ packages: - zstd >=1.5.6,<1.6.0a0 constrains: - qt 6.7.3 + arch: x86_64 + platform: win license: LGPL-3.0-only license_family: LGPL size: 88587578 timestamp: 1727941590323 -- kind: conda - name: rapidjson - version: 1.1.0.post20240409 - build: h00cdb27_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/rapidjson-1.1.0.post20240409-h00cdb27_1.conda - sha256: 16549f928a434713b700d429447122228400c9d1f1c516d1bef71994434fc2dc - md5: c67d4d9c7616766a7a73a06589325649 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20240409-hac33072_1.conda + sha256: 645e408a91d3c3bea6cbb24e0c208222eb45694978b48e0224424369271ca0ef + md5: d6e98530772fc26c112640461110d127 depends: - - __osx >=11.0 - - libcxx >=16 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 145601 - timestamp: 1715007159451 -- kind: conda - name: rapidjson - version: 1.1.0.post20240409 - build: h0a1ffab_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/rapidjson-1.1.0.post20240409-h0a1ffab_1.conda + size: 145404 + timestamp: 1715006973191 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rapidjson-1.1.0.post20240409-h0a1ffab_1.conda sha256: d8eed0186aa7d03c5ca1335eb5c6f9e703971eccc665935360cb45f8d5d45f35 md5: 84af91a35a124148b3e1ead8ee4588b4 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 145790 timestamp: 1715006975319 -- kind: conda - name: rapidjson - version: 1.1.0.post20240409 - build: hac33072_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/rapidjson-1.1.0.post20240409-hac33072_1.conda - sha256: 645e408a91d3c3bea6cbb24e0c208222eb45694978b48e0224424369271ca0ef - md5: d6e98530772fc26c112640461110d127 +- conda: https://conda.anaconda.org/conda-forge/osx-64/rapidjson-1.1.0.post20240409-hf036a51_1.conda + sha256: 07f88271bc5a73fc5a910895bf83bb6046b2b84a3935015c448667aef41abf9e + md5: 7b32c6b26b7c3a0d97ad484ab6f207c9 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __osx >=10.13 + - libcxx >=16 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 145404 - timestamp: 1715006973191 -- kind: conda - name: rapidjson - version: 1.1.0.post20240409 - build: he0c23c2_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/rapidjson-1.1.0.post20240409-he0c23c2_1.conda + size: 145520 + timestamp: 1715007151117 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rapidjson-1.1.0.post20240409-h00cdb27_1.conda + sha256: 16549f928a434713b700d429447122228400c9d1f1c516d1bef71994434fc2dc + md5: c67d4d9c7616766a7a73a06589325649 + depends: + - __osx >=11.0 + - libcxx >=16 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 145601 + timestamp: 1715007159451 +- conda: https://conda.anaconda.org/conda-forge/win-64/rapidjson-1.1.0.post20240409-he0c23c2_1.conda sha256: 569ccbf264ed1fd40ee92f9909e54019c87f8cfbccd508c6bb1983b1d6f93d4b md5: b16fc1a64fe3ef08c3c886d372c64934 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: MIT license_family: MIT size: 145494 timestamp: 1715007138921 -- kind: conda - name: rapidjson - version: 1.1.0.post20240409 - build: hf036a51_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/rapidjson-1.1.0.post20240409-hf036a51_1.conda - sha256: 07f88271bc5a73fc5a910895bf83bb6046b2b84a3935015c448667aef41abf9e - md5: 7b32c6b26b7c3a0d97ad484ab6f207c9 - depends: - - __osx >=10.13 - - libcxx >=16 - license: MIT - license_family: MIT - size: 145520 - timestamp: 1715007151117 -- kind: conda - name: readline - version: '8.2' - build: h8228510_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/readline-8.2-h8228510_1.conda sha256: 5435cf39d039387fbdc977b0a762357ea909a7694d9528ab40f005e9208744d7 md5: 47d31b792659ce70f470b5c82fdfb7a4 depends: - libgcc-ng >=12 - ncurses >=6.3,<7.0a0 + arch: x86_64 + platform: linux license: GPL-3.0-only license_family: GPL size: 281456 timestamp: 1679532220005 -- kind: conda - name: readline - version: '8.2' - build: h8fc344f_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/readline-8.2-h8fc344f_1.conda sha256: 4c99f7417419734e3797d45bc355e61c26520e111893b0d7087a01a7fbfbe3dd md5: 105eb1e16bf83bfb2eb380a48032b655 depends: - libgcc-ng >=12 - ncurses >=6.3,<7.0a0 + arch: aarch64 + platform: linux license: GPL-3.0-only license_family: GPL size: 294092 timestamp: 1679532238805 -- kind: conda - name: readline - version: '8.2' - build: h92ec313_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda - sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 - md5: 8cbb776a2f641b943d413b3e19df71f4 - depends: - - ncurses >=6.3,<7.0a0 - license: GPL-3.0-only - license_family: GPL - size: 250351 - timestamp: 1679532511311 -- kind: conda - name: readline - version: '8.2' - build: h9e318b2_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/readline-8.2-h9e318b2_1.conda sha256: 41e7d30a097d9b060037f0c6a2b1d4c4ae7e942c06c943d23f9d481548478568 md5: f17f77f2acf4d344734bda76829ce14e depends: - ncurses >=6.3,<7.0a0 - license: GPL-3.0-only - license_family: GPL - size: 255870 - timestamp: 1679532707590 -- kind: conda - name: reproc - version: 14.2.4.post0 - build: h31becfc_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/reproc-14.2.4.post0-h31becfc_1.conda - sha256: 4b6b5602e4b382e00c8a6311f537ee41d94a994bf44acdbbb106b9709d402c1c - md5: c148bb4ba029a018527d3e4d5c7b63fa - depends: - - libgcc-ng >=12 - license: MIT - license_family: MIT - size: 35284 - timestamp: 1698242244378 -- kind: conda - name: reproc - version: 14.2.5.post0 - build: h2466b09_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/reproc-14.2.5.post0-h2466b09_0.conda - sha256: 112dee79da4f55de91f029dd9808f4284bc5e0cf0c4d308d4cec3381bf5bc836 - md5: c3ca4c18c99a3b9832e11b11af227713 - depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: MIT - license_family: MIT - size: 37058 - timestamp: 1731926140985 -- kind: conda - name: reproc - version: 14.2.5.post0 - build: h5505292_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/reproc-14.2.5.post0-h5505292_0.conda - sha256: a5f0dbfa8099a3d3c281ea21932b6359775fd8ce89acc53877a6ee06f50642bc - md5: f1d129089830365d9dac932c4dd8c675 - depends: - - __osx >=11.0 - license: MIT - license_family: MIT - size: 32023 - timestamp: 1731926255834 -- kind: conda - name: reproc - version: 14.2.5.post0 - build: h6e16a3a_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/reproc-14.2.5.post0-h6e16a3a_0.conda - sha256: dda2a8bc1bf16b563b74c2a01dccea657bda573b0c45e708bfeee01c208bcbaf - md5: eda18d4a7dce3831016086a482965345 - depends: - - __osx >=10.13 - license: MIT - license_family: MIT - size: 31749 - timestamp: 1731926270954 -- kind: conda - name: reproc - version: 14.2.5.post0 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/reproc-14.2.5.post0-hb9d3cd8_0.conda - sha256: a1973f41a6b956f1305f9aaefdf14b2f35a8c9615cfe5f143f1784ed9aa6bf47 - md5: 69fbc0a9e42eb5fe6733d2d60d818822 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - size: 34194 - timestamp: 1731925834928 -- kind: conda - name: reproc-cpp - version: 14.2.4.post0 - build: h2f0025b_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/reproc-cpp-14.2.4.post0-h2f0025b_1.conda - sha256: 3216952572764ec7424317ee71bddf86443329fa335d1bea3d33b0cd5a8e358c - md5: 35148ef0f190022ca52cf6edd6bdc814 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - reproc 14.2.4.post0 h31becfc_1 - license: MIT - license_family: MIT - size: 25589 - timestamp: 1698242268434 -- kind: conda - name: reproc-cpp - version: 14.2.5.post0 - build: h240833e_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/reproc-cpp-14.2.5.post0-h240833e_0.conda - sha256: 4d8638b7f44082302c7687c99079789f42068d34cddc0959c11ad5d28aab3d47 - md5: 420229341978751bd96faeced92c200e - depends: - - __osx >=10.13 - - libcxx >=18 - - reproc 14.2.5.post0 h6e16a3a_0 - license: MIT - license_family: MIT - size: 24394 - timestamp: 1731926392643 -- kind: conda - name: reproc-cpp - version: 14.2.5.post0 - build: h286801f_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/reproc-cpp-14.2.5.post0-h286801f_0.conda - sha256: f1b6aa9d9131ea159a5883bc5990b91b4b8f56eb52e0dc2b01aa9622e14edc81 - md5: 11a3d09937d250fc4423bf28837d9363 + arch: x86_64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 255870 + timestamp: 1679532707590 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/readline-8.2-h92ec313_1.conda + sha256: a1dfa679ac3f6007362386576a704ad2d0d7a02e98f5d0b115f207a2da63e884 + md5: 8cbb776a2f641b943d413b3e19df71f4 depends: - - __osx >=11.0 - - libcxx >=18 - - reproc 14.2.5.post0 h5505292_0 - license: MIT - license_family: MIT - size: 24834 - timestamp: 1731926355120 -- kind: conda - name: reproc-cpp - version: 14.2.5.post0 - build: h5888daf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/reproc-cpp-14.2.5.post0-h5888daf_0.conda - sha256: 568485837b905b1ea7bdb6e6496d914b83db57feda57f6050d5a694977478691 - md5: 828302fca535f9cfeb598d5f7c204323 + - ncurses >=6.3,<7.0a0 + arch: arm64 + platform: osx + license: GPL-3.0-only + license_family: GPL + size: 250351 + timestamp: 1679532511311 +- conda: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.5-hb9d3cd8_0.conda + sha256: 04677caac29ec64a5d41d0cca8dbec5f60fa166d5458ff5a4393e4dc08a4799e + md5: 9af0e7981755f09c81421946c4bcea04 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libstdcxx >=13 - - reproc 14.2.5.post0 hb9d3cd8_0 - license: MIT - license_family: MIT - size: 25665 - timestamp: 1731925852714 -- kind: conda - name: reproc-cpp - version: 14.2.5.post0 - build: he0c23c2_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/reproc-cpp-14.2.5.post0-he0c23c2_0.conda - sha256: ccf49fb5149298015ab410aae88e43600954206608089f0dfb7aea8b771bbe8e - md5: d2ce31fa746dddeb37f24f32da0969e9 - depends: - - reproc 14.2.5.post0 h2466b09_0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: MIT - license_family: MIT - size: 30096 - timestamp: 1731926177599 -- kind: conda - name: requests - version: 2.32.3 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/requests-2.32.3-pyhd8ed1ab_0.conda - sha256: 5845ffe82a6fa4d437a2eae1e32a1ad308d7ad349f61e337c0a890fe04c513cc - md5: 5ede4753180c7a550a443c430dc8ab52 - depends: - - certifi >=2017.4.17 - - charset-normalizer >=2,<4 - - idna >=2.5,<4 - - python >=3.8 - - urllib3 >=1.21.1,<3 - constrains: - - chardet >=3.0.2,<6 - license: Apache-2.0 - license_family: APACHE - size: 58810 - timestamp: 1717057174842 -- kind: conda - name: rhash - version: 1.4.5 - build: h7ab814d_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/rhash-1.4.5-h7ab814d_0.conda - sha256: e6a3e9dbfcb5ad5d69a20c8ac237d37a282a95983314a28912fc54208c5db391 - md5: 352b210f81798ae1e2f25a98ef4b3b54 - depends: - - __osx >=11.0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 177240 - timestamp: 1728886815751 -- kind: conda - name: rhash - version: 1.4.5 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/rhash-1.4.5-h86ecc28_0.conda + size: 186921 + timestamp: 1728886721623 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/rhash-1.4.5-h86ecc28_0.conda sha256: 82f3555c8f4fa76faf111622766457a8d17755bf493c0ac72ee59f4dad71d994 md5: 93bac703d92dafc337db454e6e93a520 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 201958 timestamp: 1728886717057 -- kind: conda - name: rhash - version: 1.4.5 - build: ha44c9a9_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.5-ha44c9a9_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/rhash-1.4.5-ha44c9a9_0.conda sha256: 8680069a88f33e96046cf09c3c973074976064c5f13c282bf0e6d6a798f4f7ab md5: a7a3324229bba7fd1c06bcbbb26a420a depends: - __osx >=10.13 + arch: x86_64 + platform: osx license: MIT license_family: MIT size: 178400 timestamp: 1728886821902 -- kind: conda - name: rhash - version: 1.4.5 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/rhash-1.4.5-hb9d3cd8_0.conda - sha256: 04677caac29ec64a5d41d0cca8dbec5f60fa166d5458ff5a4393e4dc08a4799e - md5: 9af0e7981755f09c81421946c4bcea04 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - license: MIT - license_family: MIT - size: 186921 - timestamp: 1728886721623 -- kind: conda - name: ruamel.yaml - version: 0.18.6 - build: py312h0bf5046_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml-0.18.6-py312h0bf5046_1.conda - sha256: 839efe8e59d146206a9bffde190015c9bf2419a914d8f53493540fc7311184b3 - md5: c67fe5e10c151ef58bfc255b30f35f29 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - ruamel.yaml.clib >=0.1.2 - license: MIT - license_family: MIT - size: 268321 - timestamp: 1728765161983 -- kind: conda - name: ruamel.yaml - version: 0.18.6 - build: py312h3d0f464_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml-0.18.6-py312h3d0f464_1.conda - sha256: 6a7fba898720a81e2f19ec2870fc43ec2fc568dc71974390a91285d0bb75c476 - md5: 54f228329acc295c90a1961871439f58 - depends: - - __osx >=10.13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ruamel.yaml.clib >=0.1.2 - license: MIT - license_family: MIT - size: 266986 - timestamp: 1728765127326 -- kind: conda - name: ruamel.yaml - version: 0.18.6 - build: py312h4389bb4_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml-0.18.6-py312h4389bb4_1.conda - sha256: aed92a2293b89c53b1fd1de40935dca0322e7a0e08a6df3917bb82bdbb1d1f96 - md5: bc4a745d5f87eaf136035aa43455e105 - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ruamel.yaml.clib >=0.1.2 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: MIT - license_family: MIT - size: 267122 - timestamp: 1728765254935 -- kind: conda - name: ruamel.yaml - version: 0.18.6 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml-0.18.6-py312h66e93f0_1.conda - sha256: adbf638ac2916c8c376ade8e5f77cf6998e049eea4e23cc8a9f4a947c6938df3 - md5: 28ed869ade5601ee374934a31c9d628e - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ruamel.yaml.clib >=0.1.2 - license: MIT - license_family: MIT - size: 267375 - timestamp: 1728765106963 -- kind: conda - name: ruamel.yaml - version: 0.18.6 - build: py312hb2c0f52_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ruamel.yaml-0.18.6-py312hb2c0f52_1.conda - sha256: 472a68884b3752012585eae75fe3371bfb2a3c38feef6b80d57fd9849ee93f8a - md5: 2868b65b462c1c311fbb5c81aa522e36 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - ruamel.yaml.clib >=0.1.2 - license: MIT - license_family: MIT - size: 268102 - timestamp: 1728765224852 -- kind: conda - name: ruamel.yaml.clib - version: 0.2.8 - build: py312h0bf5046_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ruamel.yaml.clib-0.2.8-py312h0bf5046_1.conda - sha256: ce979a9bcb4b987e30c4aadfbd4151006cd6ac480bdbee1d059e6f0186b48bca - md5: 2ed5f254c9ea57b6d0fd4e12baa4b87f +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/rhash-1.4.5-h7ab814d_0.conda + sha256: e6a3e9dbfcb5ad5d69a20c8ac237d37a282a95983314a28912fc54208c5db391 + md5: 352b210f81798ae1e2f25a98ef4b3b54 depends: - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - size: 117121 - timestamp: 1728724705098 -- kind: conda - name: ruamel.yaml.clib - version: 0.2.8 - build: py312h3d0f464_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/ruamel.yaml.clib-0.2.8-py312h3d0f464_1.conda - sha256: b5ddb73db7ca3d4d8780af1761efb97a5f555ae489f287a91367624d4425f498 - md5: f4c0464f98dabcd65064e89991c3c9c2 - depends: - - __osx >=10.13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - size: 122331 - timestamp: 1728724619287 -- kind: conda - name: ruamel.yaml.clib - version: 0.2.8 - build: py312h4389bb4_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/ruamel.yaml.clib-0.2.8-py312h4389bb4_1.conda - sha256: d5583406ea6d17391294da0a6dadf9a22aad732d1f658f2d6d12fc50b968c0fa - md5: 5758e70a80936d7527f70196685c6695 - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 108926 - timestamp: 1728725024979 -- kind: conda - name: ruamel.yaml.clib - version: 0.2.8 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ruamel.yaml.clib-0.2.8-py312h66e93f0_1.conda - sha256: ac987b1c186d79e4e1ce4354a84724fc68db452b2bd61de3a3e1b6fc7c26138d - md5: 532c3e5d0280be4fea52396ec1fa7d5d + size: 177240 + timestamp: 1728886815751 +- conda: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.1-py313h27c5614_2.conda + sha256: 68135151888b63c9469f0f7142bd4e06b8920afc69fb2f9f9f9655ae1d81a753 + md5: 25c0eda0d2ed28962c5f3e8f7fbeace3 depends: - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - size: 145481 - timestamp: 1728724626666 -- kind: conda - name: ruamel.yaml.clib - version: 0.2.8 - build: py312hb2c0f52_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ruamel.yaml.clib-0.2.8-py312hb2c0f52_1.conda - sha256: 819677769f58b5cbcdf1b4f3fbf5a0779c2e40a8922d8fb72e48dd9357d65345 - md5: 189e58f9d58f36f522ceda028f5249f8 - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - size: 138521 - timestamp: 1728724676717 -- kind: conda - name: scipy - version: 1.14.1 - build: py312h20deb59_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.14.1-py312h20deb59_1.conda - sha256: 1a4d655609bad7dbdbe9f44ba37fd100d01fb8e4e7060dfaed3c4a044ab40052 - md5: c60ad657cccb6c2b97513f87ae27f47a - depends: - - __osx >=11.0 - - libblas >=3.9.0,<4.0a0 - - libcblas >=3.9.0,<4.0a0 - - libcxx >=17 - - libgfortran 5.* - - libgfortran5 >=13.2.0 - - liblapack >=3.9.0,<4.0a0 - - numpy <2.3 - - numpy >=1.19,<3 - - numpy >=1.23.5 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - size: 15132713 - timestamp: 1729481799441 -- kind: conda - name: scipy - version: 1.14.1 - build: py312h337df96_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/scipy-1.14.1-py312h337df96_1.conda - sha256: d0a8b9e849ae53af5c8373d1429464e071fda3ee35accb77775757b330e0d340 - md5: 7d85322084d7262008c49c85d3079c50 - depends: - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 + - libgcc >=13 + - libgfortran + - libgfortran5 >=13.3.0 - liblapack >=3.9.0,<4.0a0 - - numpy <2.3 - - numpy >=1.19,<3 + - libstdcxx >=13 + - numpy <2.4 + - numpy >=1.21,<3 - numpy >=1.23.5 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 16143541 - timestamp: 1729482531384 -- kind: conda - name: scipy - version: 1.14.1 - build: py312h62794b6_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/scipy-1.14.1-py312h62794b6_1.conda - sha256: d069a64edade554261672d8febf4756aeb56a6cb44bd91844eaa944e5d9f4eb9 - md5: b43233a9e2f62fb94affe5607ea79473 + size: 17667257 + timestamp: 1733621605879 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/scipy-1.14.1-py313h5414c24_2.conda + sha256: 918215739be20057a28f2719d826350d89c2ab3775353432de97bdc4f1aa1541 + md5: dcf09b606ade3d7637d252fd52e3cdf1 depends: - - __glibc >=2.17,<3.0.a0 - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - libgcc >=13 @@ -21546,131 +15765,127 @@ packages: - libgfortran5 >=13.3.0 - liblapack >=3.9.0,<4.0a0 - libstdcxx >=13 - - numpy <2.3 - - numpy >=1.19,<3 + - numpy <2.4 + - numpy >=1.21,<3 - numpy >=1.23.5 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - size: 17622722 - timestamp: 1729481826601 -- kind: conda - name: scipy - version: 1.14.1 - build: py312h888eae2_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.14.1-py312h888eae2_1.conda - sha256: 5a28ea91c935513e6c5f64baac5a02ce43d9ba183b98e20127220b207ec96529 - md5: ee7a4ffe9742d2df44caa858b36814b8 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 17691963 + timestamp: 1733621864193 +- conda: https://conda.anaconda.org/conda-forge/osx-64/scipy-1.14.1-py313hd641537_2.conda + sha256: 8a14ab8f050d6cdd77fbdcac1994c88c4c27d0c75c0cf25575a23e090db9d0ad + md5: 761f4433e80b2daed4d050da787db155 depends: - __osx >=10.13 - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libcxx >=17 + - libcxx >=18 - libgfortran 5.* - libgfortran5 >=13.2.0 - liblapack >=3.9.0,<4.0a0 - - numpy <2.3 - - numpy >=1.19,<3 + - numpy <2.4 + - numpy >=1.21,<3 - numpy >=1.23.5 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - size: 16032291 - timestamp: 1729481615781 -- kind: conda - name: scipy - version: 1.14.1 - build: py312hcbff3fa_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/scipy-1.14.1-py312hcbff3fa_1.conda - sha256: a17a0ec7eafee676707f4eb05d56dfd9d97cbbf82be04163f49e1ceae7d06f5b - md5: 7f7934012e929d4da282cee15a8f754e + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 16269125 + timestamp: 1733621414139 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/scipy-1.14.1-py313hc010ede_2.conda + sha256: 394a29ea372b3a14a61f019a1667005f0ad3b991831186750a1e325410db68d3 + md5: 158c3c59df41001fcec882f393a7bb1b depends: + - __osx >=11.0 - libblas >=3.9.0,<4.0a0 - libcblas >=3.9.0,<4.0a0 - - libgcc >=13 - - libgfortran - - libgfortran5 >=13.3.0 + - libcxx >=18 + - libgfortran 5.* + - libgfortran5 >=13.2.0 - liblapack >=3.9.0,<4.0a0 - - libstdcxx >=13 - - numpy <2.3 - - numpy >=1.19,<3 + - numpy <2.4 + - numpy >=1.21,<3 - numpy >=1.23.5 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: BSD-3-Clause - license_family: BSD - size: 17548771 - timestamp: 1729482405590 -- kind: conda - name: sed - version: '4.7' - build: h3efe00b_1000 - build_number: 1000 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/sed-4.7-h3efe00b_1000.tar.bz2 - sha256: c7dc65d2d43561aa20f2ee3ddcb9b8d19fd52d18802b5ca87e508f6041c0b225 - md5: 12e92b1d4ac4f839fcdd66289caea89f + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + arch: arm64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 15190591 + timestamp: 1733621686803 +- conda: https://conda.anaconda.org/conda-forge/win-64/scipy-1.14.1-py313h16bbbb2_2.conda + sha256: 3565f6ae3d04f3a8a876c4d5f609ae8b7dc42ebf5aa0b971ba3b20f55bfe45f9 + md5: 7418098c38a1353a4a1f363efb948307 depends: - - gettext >=0.19.2 - - gettext >=0.19.8.1,<1.0a0 + - libblas >=3.9.0,<4.0a0 + - libcblas >=3.9.0,<4.0a0 + - liblapack >=3.9.0,<4.0a0 + - numpy <2.4 + - numpy >=1.21,<3 + - numpy >=1.23.5 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win + license: BSD-3-Clause + license_family: BSD + size: 16111468 + timestamp: 1733622474234 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sed-4.8-he412f7d_0.tar.bz2 + sha256: 7c1f391789f3928ef688a348be998e31b8aa3cfb58a1854733c2552ef5c5a2fd + md5: 7362f0042e95681f5d371c46c83ebd08 + depends: + - libgcc-ng >=7.5.0 + arch: x86_64 + platform: linux license: GPL-3 - size: 263631 - timestamp: 1550735515743 -- kind: conda - name: sed - version: '4.8' - build: ha0d5d3d_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/sed-4.8-ha0d5d3d_0.tar.bz2 + size: 270762 + timestamp: 1605307395873 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sed-4.8-ha0d5d3d_0.tar.bz2 sha256: 1ec6d66923a767bdeb534591b530d43a31681c2ffbc453e0fab87bef3c102343 md5: c9d4b34c44d1083c857a6aee1563b0b6 depends: - libgcc-ng >=7.5.0 + arch: aarch64 + platform: linux license: GPL-3 size: 289288 timestamp: 1605308328167 -- kind: conda - name: sed - version: '4.8' - build: hc6a1b29_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/sed-4.8-hc6a1b29_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-64/sed-4.7-h3efe00b_1000.tar.bz2 + sha256: c7dc65d2d43561aa20f2ee3ddcb9b8d19fd52d18802b5ca87e508f6041c0b225 + md5: 12e92b1d4ac4f839fcdd66289caea89f + depends: + - gettext >=0.19.2 + - gettext >=0.19.8.1,<1.0a0 + arch: x86_64 + platform: osx + license: GPL-3 + size: 263631 + timestamp: 1550735515743 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sed-4.8-hc6a1b29_0.tar.bz2 sha256: a9c4193ccfa633aa7ab37aa95c7d28101a1df45b27efcaf28828d7266c2d43c1 md5: 1b410382feb5302344180b25df05b591 depends: - gettext >=0.19.2 - gettext >=0.19.8.1,<1.0a0 + arch: arm64 + platform: osx license: GPL-3 size: 279194 timestamp: 1605307517437 -- kind: conda - name: sed - version: '4.8' - build: he412f7d_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/sed-4.8-he412f7d_0.tar.bz2 - sha256: 7c1f391789f3928ef688a348be998e31b8aa3cfb58a1854733c2552ef5c5a2fd - md5: 7362f0042e95681f5d371c46c83ebd08 - depends: - - libgcc-ng >=7.5.0 - license: GPL-3 - size: 270762 - timestamp: 1605307395873 -- kind: conda - name: setuptools - version: 75.6.0 - build: pyhff2d567_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/setuptools-75.6.0-pyhff2d567_1.conda sha256: abb12e1dd515b13660aacb5d0fd43835bc2186cab472df25b7716cd65e095111 md5: fc80f7995e396cbaeabd23cf46c413dc depends: @@ -21679,133 +15894,38 @@ packages: license_family: MIT size: 774252 timestamp: 1732632769210 -- kind: conda - name: sigtool - version: 0.1.3 - build: h44b9a77_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/sigtool-0.1.3-h44b9a77_0.tar.bz2 - sha256: 70791ae00a3756830cb50451db55f63e2a42a2fa2a8f1bab1ebd36bbb7d55bff - md5: 4a2cac04f86a4540b8c9b8d8f597848f - depends: - - openssl >=3.0.0,<4.0a0 - license: MIT - license_family: MIT - size: 210264 - timestamp: 1643442231687 -- kind: conda - name: sigtool - version: 0.1.3 - build: h88f4db0_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h88f4db0_0.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-64/sigtool-0.1.3-h88f4db0_0.tar.bz2 sha256: 46fdeadf8f8d725819c4306838cdfd1099cd8fe3e17bd78862a5dfdcd6de61cf md5: fbfb84b9de9a6939cb165c02c69b1865 depends: - openssl >=3.0.0,<4.0a0 + arch: x86_64 + platform: osx license: MIT license_family: MIT size: 213817 timestamp: 1643442169866 -- kind: conda - name: simdjson - version: 3.10.1 - build: h17cf362_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/simdjson-3.10.1-h17cf362_0.conda - sha256: ba876573093886fec3eb63d250cc1374d746e63ddda6f002f7d01296277798aa - md5: 3c6b6318fff5d337af31ace509f6bb17 - depends: - - libgcc-ng >=13 - - libstdcxx-ng >=13 - license: Apache-2.0 - license_family: APACHE - size: 206716 - timestamp: 1724699003789 -- kind: conda - name: simdjson - version: 3.10.1 - build: h37c8870_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/simdjson-3.10.1-h37c8870_0.conda - sha256: 66e6968c3d14dfdd81b0cbae28c31ed55d51c6542519bb77b293a6c8ef213f29 - md5: d5048706875bc90d10a7fd6d12bbe456 - depends: - - __osx >=10.13 - - libcxx >=17 - license: Apache-2.0 - license_family: APACHE - size: 229800 - timestamp: 1724699053839 -- kind: conda - name: simdjson - version: 3.10.1 - build: h7b3277c_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/simdjson-3.10.1-h7b3277c_0.conda - sha256: 8891aaeceadfc216dcc3c670deb9bfdd743545807e6784ff66a8a7573b32aab9 - md5: 20d38192890c62d1bc30707cff2cb22a - depends: - - __osx >=11.0 - - libcxx >=17 - license: Apache-2.0 - license_family: APACHE - size: 200868 - timestamp: 1724699076143 -- kind: conda - name: simdjson - version: 3.10.1 - build: h84d6215_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/simdjson-3.10.1-h84d6215_0.conda - sha256: 0148900cdf96ad935f977aea53014b41fbfb7809afa007c10a3678e4a58520b4 - md5: 7f9bd0e5c889fae32b03dd448eb71de6 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc-ng >=13 - - libstdcxx-ng >=13 - license: Apache-2.0 - license_family: APACHE - size: 240017 - timestamp: 1724698949769 -- kind: conda - name: simdjson - version: 3.10.1 - build: hc790b64_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/simdjson-3.10.1-hc790b64_0.conda - sha256: a84d697214d1ff83734f10ef27f7cdc1b7b6ef2e0f6b7a4db1af955d62abe399 - md5: 0538768856198b49c0b91f9af17159ef +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sigtool-0.1.3-h44b9a77_0.tar.bz2 + sha256: 70791ae00a3756830cb50451db55f63e2a42a2fa2a8f1bab1ebd36bbb7d55bff + md5: 4a2cac04f86a4540b8c9b8d8f597848f depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: Apache-2.0 - license_family: APACHE - size: 248769 - timestamp: 1724699287388 -- kind: conda - name: six - version: 1.16.0 - build: pyh6c4a22f_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/six-1.16.0-pyh6c4a22f_0.tar.bz2 - sha256: a85c38227b446f42c5b90d9b642f2c0567880c15d72492d8da074a59c8f91dd6 - md5: e5f25f8dbc060e9a8d912e432202afc2 + - openssl >=3.0.0,<4.0a0 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 210264 + timestamp: 1643442231687 +- conda: https://conda.anaconda.org/conda-forge/noarch/six-1.17.0-pyhd8ed1ab_0.conda + sha256: 41db0180680cc67c3fa76544ffd48d6a5679d96f4b71d7498a759e94edc9a2db + md5: a451d576819089b0d672f18768be0f65 depends: - - python + - python >=3.9 license: MIT license_family: MIT - size: 14259 - timestamp: 1620240338595 -- kind: conda - name: smesh - version: 9.9.0.0 - build: h0d71592_13 - build_number: 13 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/smesh-9.9.0.0-h0d71592_13.conda + size: 16385 + timestamp: 1733381032766 +- conda: https://conda.anaconda.org/conda-forge/linux-64/smesh-9.9.0.0-h0d71592_13.conda sha256: b661ad37d73de52ba2c133d843fad3e20d8c0b677f194ddb0cce721900b71d8a md5: 3c66ab3d7f24ca9c0a9f79ebe950b495 depends: @@ -21816,17 +15936,13 @@ packages: - libzlib >=1.3.1,<2.0a0 - occt >=7.8.1,<7.8.2.0a0 - vtk-base >=9.3.1,<9.3.2.0a0 + arch: x86_64 + platform: linux license: LGPL-2.1-or-later license_family: LGPL size: 4535754 timestamp: 1729371963115 -- kind: conda - name: smesh - version: 9.9.0.0 - build: h212b014_13 - build_number: 13 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/smesh-9.9.0.0-h212b014_13.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/smesh-9.9.0.0-h212b014_13.conda sha256: 8c55daf93f4d7434d2051227e86a617ce7f8b66b9bf43fa4ecb034ee7bbc0d90 md5: 08ee56e0a10ca95781f960014b65a278 depends: @@ -21836,17 +15952,13 @@ packages: - libzlib >=1.3.1,<2.0a0 - occt >=7.8.1,<7.8.2.0a0 - vtk-base >=9.3.1,<9.3.2.0a0 + arch: aarch64 + platform: linux license: LGPL-2.1-or-later license_family: LGPL size: 4796963 timestamp: 1729372232913 -- kind: conda - name: smesh - version: 9.9.0.0 - build: ha774313_13 - build_number: 13 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/smesh-9.9.0.0-ha774313_13.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/smesh-9.9.0.0-ha774313_13.conda sha256: ce77d396d9c0d7836c714fa6dd74b7fedd65368414302adcf0453b682168739d md5: 8a856c4514e00f3d70332016c32eed33 depends: @@ -21856,134 +15968,109 @@ packages: - libzlib >=1.3.1,<2.0a0 - occt >=7.8.1,<7.8.2.0a0 - vtk-base >=9.3.1,<9.3.2.0a0 + arch: x86_64 + platform: osx license: LGPL-2.1-or-later license_family: LGPL size: 4202183 timestamp: 1729372719929 -- kind: conda - name: smesh - version: 9.9.0.0 - build: hdbf5530_13 - build_number: 13 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/smesh-9.9.0.0-hdbf5530_13.conda - sha256: 9664e16dbad2a2de052fae26ecae84ba8209cba9981e75ce212b6abd1713cf01 - md5: d342dd9adb2741987ad7570d376b3686 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/smesh-9.9.0.0-hf192bc0_13.conda + sha256: f0a05c7a3898dba7cd4639dd9a467999865030918f2329079442e913d9d7a45c + md5: 1c3e982e81b32ccfce0c2e36c19d5569 depends: + - __osx >=11.0 - libboost >=1.86.0,<1.87.0a0 + - libcxx >=17 - libzlib >=1.3.1,<2.0a0 - occt >=7.8.1,<7.8.2.0a0 - - pthreads-win32 - - ucrt >=10.0.20348.0 - - vc >=14.3,<15 - - vc14_runtime >=14.40.33810 - vtk-base >=9.3.1,<9.3.2.0a0 + arch: arm64 + platform: osx license: LGPL-2.1-or-later license_family: LGPL - size: 3646997 - timestamp: 1729372911260 -- kind: conda - name: smesh - version: 9.9.0.0 - build: hf192bc0_13 - build_number: 13 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/smesh-9.9.0.0-hf192bc0_13.conda - sha256: f0a05c7a3898dba7cd4639dd9a467999865030918f2329079442e913d9d7a45c - md5: 1c3e982e81b32ccfce0c2e36c19d5569 + size: 3762789 + timestamp: 1729372519693 +- conda: https://conda.anaconda.org/conda-forge/win-64/smesh-9.9.0.0-hdbf5530_13.conda + sha256: 9664e16dbad2a2de052fae26ecae84ba8209cba9981e75ce212b6abd1713cf01 + md5: d342dd9adb2741987ad7570d376b3686 depends: - - __osx >=11.0 - libboost >=1.86.0,<1.87.0a0 - - libcxx >=17 - libzlib >=1.3.1,<2.0a0 - occt >=7.8.1,<7.8.2.0a0 + - pthreads-win32 + - ucrt >=10.0.20348.0 + - vc >=14.3,<15 + - vc14_runtime >=14.40.33810 - vtk-base >=9.3.1,<9.3.2.0a0 + arch: x86_64 + platform: win license: LGPL-2.1-or-later license_family: LGPL - size: 3762789 - timestamp: 1729372519693 -- kind: conda - name: snappy - version: 1.2.1 - build: h1088aeb_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-h1088aeb_0.conda - sha256: 79f5d0a9098acf2ed16e6ecc4c11472b50ccf59feea37a7d585fd43888d7e41f - md5: e4ed5b015f525b56f95c26d85a4ea208 + size: 3646997 + timestamp: 1729372911260 +- conda: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-h8bd8927_1.conda + sha256: ec91e86eeb2c6bbf09d51351b851e945185d70661d2ada67204c9a6419d282d3 + md5: 3b3e64af585eadfb52bb90b553db5edf depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 42888 - timestamp: 1720003817527 -- kind: conda - name: snappy - version: 1.2.1 - build: h23299a8_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/snappy-1.2.1-h23299a8_0.conda - sha256: 5b9450f619aabcfbf3d284a272964250b2e1971ab0f7a7ef9143dda0ecc537b8 - md5: 7635a408509e20dcfc7653ca305ad799 + size: 42739 + timestamp: 1733501881851 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/snappy-1.2.1-hd4fb6f5_1.conda + sha256: c4a07ae5def8d55128f25a567a296ef9d7bf99a3bc79d46bd5160c076a5f50af + md5: 2fcc6cd1e5550deb509073fd2e6693e1 depends: - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - libgcc >=13 + - libstdcxx >=13 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 59350 - timestamp: 1720004197144 -- kind: conda - name: snappy - version: 1.2.1 - build: ha2e4443_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/snappy-1.2.1-ha2e4443_0.conda - sha256: dc7c8e0e8c3e8702aae81c52d940bfaabe756953ee51b1f1757e891bab62cf7f - md5: 6b7dcc7349efd123d493d2dbe85a045f + size: 43032 + timestamp: 1733501964775 +- conda: https://conda.anaconda.org/conda-forge/osx-64/snappy-1.2.1-haf3c120_1.conda + sha256: 26e8a2edd2a12618d9adcdcfc6cfd9adaca8da71aa334615d29e803d225b52be + md5: 9d6ae6d5232233e1a01eb7db524078fb depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - __osx >=10.13 + - libcxx >=18 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 42465 - timestamp: 1720003704360 -- kind: conda - name: snappy - version: 1.2.1 - build: hd02b534_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-hd02b534_0.conda - sha256: cb7a9440241c6092e0f1c795fdca149c4767023e783eaf9cfebc501f906b4897 - md5: 69d0f9694f3294418ee935da3d5f7272 + size: 36813 + timestamp: 1733502097580 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/snappy-1.2.1-h98b9ce2_1.conda + sha256: 4242f95b215127a006eb664fe26ed5a82df87e90cbdbc7ce7ff4971f0720997f + md5: ded86dee325290da2967a3fea3800eb5 depends: - __osx >=11.0 - - libcxx >=16 + - libcxx >=18 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 35708 - timestamp: 1720003794374 -- kind: conda - name: snappy - version: 1.2.1 - build: he1e6707_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/snappy-1.2.1-he1e6707_0.conda - sha256: a979319cd4916f0e7450aa92bb3cf4c2518afa80be50de99f31d075e693a6dd9 - md5: ddceef5df973c8ff7d6b32353c0cb358 + size: 35857 + timestamp: 1733502172664 +- conda: https://conda.anaconda.org/conda-forge/win-64/snappy-1.2.1-h500f7fa_1.conda + sha256: 29753b51803c0396c3cb56e4f11e68c968a2f43b71b648634bef1f9193f9e78b + md5: e32fb978aaea855ddce624eb8c8eb69a depends: - - __osx >=10.13 - - libcxx >=16 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD - size: 37036 - timestamp: 1720003862906 -- kind: conda - name: soqt6 - version: 1.6.3 - build: h23d7b0e_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/soqt6-1.6.3-h23d7b0e_0.conda + size: 59757 + timestamp: 1733502109991 +- conda: https://conda.anaconda.org/conda-forge/linux-64/soqt6-1.6.3-h23d7b0e_0.conda sha256: c8201aa5a9d22f41c0d5f42b7c0e497ecf7159feec8636a7daf6fa02950930d8 md5: 37672c8be048696b5fc10be22e8c9435 depends: @@ -21994,74 +16081,45 @@ packages: - qt6-main >=6.7.3,<6.8.0a0 constrains: - soqt <0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD size: 321109 timestamp: 1728082619106 -- kind: conda - name: soqt6 - version: 1.6.3 - build: h667e493_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/soqt6-1.6.3-h667e493_0.conda - sha256: f7fd8b27eb202efdc4d7c660b5cc37dfc942adc63d54f928ac403581db953523 - md5: 60fc4f49510c680dd54edc31cd5bced0 - depends: - - __osx >=10.13 - - coin3d >=4.0.3,<4.1.0a0 - - libcxx >=17 - - qt6-main >=6.7.3,<6.8.0a0 - constrains: - - soqt <0 - license: BSD-3-Clause - license_family: BSD - size: 261592 - timestamp: 1728082747427 -- kind: conda - name: soqt6 - version: 1.6.3 - build: h796eb14_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/soqt6-1.6.3-h796eb14_0.conda - sha256: c0fe037f622380b551313f72944790adaf43f6155609aca8a716638ac1d8e192 - md5: 0496a0fe733111cbd8dd0ba285fb73f5 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/soqt6-1.6.3-h808f404_0.conda + sha256: e42c6ef58dc3371bb43029788ed1d7ddf1fa7a3fd83fb1d78d63db5815bebb74 + md5: 4935d0d9baa48d929d88026dfe82c073 depends: - coin3d >=4.0.3,<4.1.0a0 + - libgcc >=13 + - libstdcxx >=13 - qt6-main >=6.7.3,<6.8.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 constrains: - soqt <0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 250216 - timestamp: 1728083269744 -- kind: conda - name: soqt6 - version: 1.6.3 - build: h808f404_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/soqt6-1.6.3-h808f404_0.conda - sha256: e42c6ef58dc3371bb43029788ed1d7ddf1fa7a3fd83fb1d78d63db5815bebb74 - md5: 4935d0d9baa48d929d88026dfe82c073 + size: 318319 + timestamp: 1728082634827 +- conda: https://conda.anaconda.org/conda-forge/osx-64/soqt6-1.6.3-h667e493_0.conda + sha256: f7fd8b27eb202efdc4d7c660b5cc37dfc942adc63d54f928ac403581db953523 + md5: 60fc4f49510c680dd54edc31cd5bced0 depends: + - __osx >=10.13 - coin3d >=4.0.3,<4.1.0a0 - - libgcc >=13 - - libstdcxx >=13 + - libcxx >=17 - qt6-main >=6.7.3,<6.8.0a0 constrains: - soqt <0 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 318319 - timestamp: 1728082634827 -- kind: conda - name: soqt6 - version: 1.6.3 - build: hd20b56a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/soqt6-1.6.3-hd20b56a_0.conda + size: 261592 + timestamp: 1728082747427 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/soqt6-1.6.3-hd20b56a_0.conda sha256: b800fad0d87a7bc88fe3c47e03749f9c0777687eb5e209d7db3909efa349f27a md5: efcc605289339a5fc4cc65ddf4336127 depends: @@ -22071,318 +16129,215 @@ packages: - qt6-main >=6.7.3,<6.8.0a0 constrains: - soqt <0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 258332 timestamp: 1728082869198 -- kind: conda - name: spdlog - version: 1.14.1 - build: h325aa07_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/spdlog-1.14.1-h325aa07_1.conda - sha256: ec594f80f82f69472cf518795303a222a03460cc4102c4758b33eab833640024 - md5: 4aa13d84a5c71b5df6642761a6c35ce9 - depends: - - __osx >=10.13 - - fmt >=11.0.1,<12.0a0 - - libcxx >=16 - license: MIT - license_family: MIT - size: 171455 - timestamp: 1722238446029 -- kind: conda - name: spdlog - version: 1.14.1 - build: h6d8af72_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/spdlog-1.14.1-h6d8af72_1.conda - sha256: f981d4f3555125cb913be49397892f43c6b747705c0d72cba3676f7d98709f92 - md5: 4af518b01539da8e4af17aee5fb92639 - depends: - - __osx >=11.0 - - fmt >=11.0.1,<12.0a0 - - libcxx >=16 - license: MIT - license_family: MIT - size: 164011 - timestamp: 1722238482313 -- kind: conda - name: spdlog - version: 1.14.1 - build: h9d9cc24_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/spdlog-1.14.1-h9d9cc24_1.conda - sha256: bcec80ee6145e30c1aaec1e6b4632318c9165b1fc08def6a090982de16bf299d - md5: 771630cc938de801e261c3a069d22a68 - depends: - - fmt >=11.0.1,<12.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - license: MIT - license_family: MIT - size: 194216 - timestamp: 1722238356907 -- kind: conda - name: spdlog - version: 1.14.1 - build: h9f2357e_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/spdlog-1.14.1-h9f2357e_1.conda - sha256: 3ed3e9aaeb6255914472109a6d25d5119eb196c8d6cc2ec732cffe79ccc789bf - md5: b9bff07144f2be7ee32f0b83a79ef21d +- conda: https://conda.anaconda.org/conda-forge/win-64/soqt6-1.6.3-h796eb14_0.conda + sha256: c0fe037f622380b551313f72944790adaf43f6155609aca8a716638ac1d8e192 + md5: 0496a0fe733111cbd8dd0ba285fb73f5 depends: - - fmt >=11.0.1,<12.0a0 + - coin3d >=4.0.3,<4.1.0a0 + - qt6-main >=6.7.3,<6.8.0a0 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - license: MIT - license_family: MIT - size: 169120 - timestamp: 1722238639391 -- kind: conda - name: spdlog - version: 1.14.1 - build: hed91bc2_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/spdlog-1.14.1-hed91bc2_1.conda - sha256: 0c604fe3f78ddb2b612841722bd9b5db24d0484e30ced89fac78c0a3f524dfd6 - md5: 909188c8979846bac8e586908cf1ca6a + constrains: + - soqt <0 + arch: x86_64 + platform: win + license: BSD-3-Clause + license_family: BSD + size: 250216 + timestamp: 1728083269744 +- conda: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.47.2-h9eae976_0.conda + sha256: 8bda8238ee98e318aad2c54ab3c85c533c830ecba72486c616b7c8546b9b51f7 + md5: 64a954de15d114281535a26fd4d1f294 depends: - __glibc >=2.17,<3.0.a0 - - fmt >=11.0.1,<12.0a0 - - libgcc-ng >=12 - - libstdcxx-ng >=12 - license: MIT - license_family: MIT - size: 195665 - timestamp: 1722238295031 -- kind: conda - name: sqlite - version: 3.47.0 - build: h2466b09_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/sqlite-3.47.0-h2466b09_1.conda - sha256: bc2a5ab86dbe2352790d1742265b3b6ae9a7aa5cf80345a37f26ec3e04cf9b4a - md5: 93084a590e8b7d2b62b7d5b1763d5bde - depends: - - libsqlite 3.47.0 h2466b09_1 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: Unlicense - size: 914686 - timestamp: 1730208443157 -- kind: conda - name: sqlite - version: 3.47.0 - build: h578a6b9_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.47.0-h578a6b9_1.conda - sha256: 56c340844a9d8e8bb7c5175fba309dbea5362d5e81746e3cec6a08ee42444d80 - md5: 8d4471877330ce83ef7a2a007cb34851 - depends: - - libgcc >=13 - - libsqlite 3.47.0 hc4a20ef_1 + - libgcc >=13 + - libsqlite 3.47.2 hee588c1_0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - readline >=8.2,<9.0a0 + arch: x86_64 + platform: linux license: Unlicense - size: 1070835 - timestamp: 1730208195373 -- kind: conda - name: sqlite - version: 3.47.0 - build: h6285a30_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.47.0-h6285a30_1.conda - sha256: 34eaf24c2d0b034374d7a85026650fe28e17321fa471e5c5f654b48c5cbd3c2a - md5: c1d1f4d014063068fd6c402cf741e317 + size: 884362 + timestamp: 1733761834904 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/sqlite-3.47.2-h578a6b9_0.conda + sha256: 7bc487b32d5776fcc87d5052fb81dd9f41067761621980c62f0171bd7193b6e7 + md5: adcede3e145f8372b7b0ab17d24c0259 depends: - - __osx >=10.13 - - libsqlite 3.47.0 h2f8c449_1 + - libgcc >=13 + - libsqlite 3.47.2 h5eb1b54_0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - readline >=8.2,<9.0a0 + arch: aarch64 + platform: linux license: Unlicense - size: 929527 - timestamp: 1730208118175 -- kind: conda - name: sqlite - version: 3.47.0 - build: h9eae976_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/sqlite-3.47.0-h9eae976_1.conda - sha256: 8ea1a085fa95d806301aeec0df6985c3ad0852a9a46aa62dd737d228c7862f9f - md5: 53abf1ef70b9ae213b22caa5350f97a9 + size: 1070888 + timestamp: 1733761922172 +- conda: https://conda.anaconda.org/conda-forge/osx-64/sqlite-3.47.2-h2e4c9dc_0.conda + sha256: 275414fff0154b4b043d53530219139eb8ef8eb05ca601fa8ef26ff6abe90dcb + md5: 0ecd820a95f5ab8cc2f6ec133eef73ff depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libsqlite 3.47.0 hadc24fc_1 + - __osx >=10.13 + - libsqlite 3.47.2 hdb6dae5_0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - readline >=8.2,<9.0a0 + arch: x86_64 + platform: osx license: Unlicense - size: 883666 - timestamp: 1730208056779 -- kind: conda - name: sqlite - version: 3.47.0 - build: hcd14bea_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/sqlite-3.47.0-hcd14bea_1.conda - sha256: f9975914a78d600182ec68c963a98c6c0a07eda9b9eee7d6e8bdac9310858ad2 - md5: ca42c22ab1d212895e58fee9ba32875f + size: 937962 + timestamp: 1733761877924 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/sqlite-3.47.2-hd7222ec_0.conda + sha256: 7b7e81b1cfce888d8591c8e4a6df0a1854c291dcd2a623a371f806130bb01048 + md5: fcde11e05577e05f3b69b046822b7529 depends: - __osx >=11.0 - - libsqlite 3.47.0 hbaaea75_1 + - libsqlite 3.47.2 h3f77e49_0 - libzlib >=1.3.1,<2.0a0 - ncurses >=6.5,<7.0a0 - readline >=8.2,<9.0a0 + arch: arm64 + platform: osx + license: Unlicense + size: 853604 + timestamp: 1733762084934 +- conda: https://conda.anaconda.org/conda-forge/win-64/sqlite-3.47.2-h2466b09_0.conda + sha256: 4886e43acd6d174eefaf9727c7e655168fc0fb360ed20ad0b0076fd7ad645243 + md5: 0ff53f37371775ceded312bf81ca80a4 + depends: + - libsqlite 3.47.2 h67fdade_0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: Unlicense - size: 840459 - timestamp: 1730208324005 -- kind: conda - name: svt-av1 - version: 2.3.0 - build: h5888daf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda + size: 915915 + timestamp: 1733762142683 +- conda: https://conda.anaconda.org/conda-forge/linux-64/svt-av1-2.3.0-h5888daf_0.conda sha256: df30a9be29f1a8b5a2e314dd5b16ccfbcbd1cc6a4f659340e8bc2bd4de37bc6f md5: 355898d24394b2af353eb96358db9fdd depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - libstdcxx >=13 + arch: x86_64 + platform: linux license: BSD-2-Clause license_family: BSD size: 2746291 timestamp: 1730246036363 -- kind: conda - name: svt-av1 - version: 2.3.0 - build: h5ad3122_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/svt-av1-2.3.0-h5ad3122_0.conda sha256: 2fad2496a21d198ea72f5dabfdace2fae0ced5cc3ea243922cb372fcf4c18222 md5: efb60b536bbf64772929b57f6b30298b depends: - libgcc >=13 - libstdcxx >=13 + arch: aarch64 + platform: linux license: BSD-2-Clause license_family: BSD size: 1796731 timestamp: 1730246027014 -- kind: conda - name: svt-av1 - version: 2.3.0 - build: h97d8b74_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/svt-av1-2.3.0-h97d8b74_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/svt-av1-2.3.0-h97d8b74_0.conda sha256: 8cd3878eb1d31ecf21fe982e6d2ca557787100aed2f0c7fd44d01d504e704e30 md5: c54053b3d1752308a38a9a8c48ce10da depends: - __osx >=10.13 - libcxx >=17 + arch: x86_64 + platform: osx license: BSD-2-Clause license_family: BSD size: 2413474 timestamp: 1730246540736 -- kind: conda - name: svt-av1 - version: 2.3.0 - build: he0c23c2_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/svt-av1-2.3.0-he0c23c2_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda + sha256: ab876ed8bdd20e22a868dcb8d03e9ce9bbba7762d7e652d49bfff6af768a5b8f + md5: 114c33e9eec335a379c9ee6c498bb807 + depends: + - __osx >=11.0 + - libcxx >=17 + arch: arm64 + platform: osx + license: BSD-2-Clause + license_family: BSD + size: 1387330 + timestamp: 1730246134730 +- conda: https://conda.anaconda.org/conda-forge/win-64/svt-av1-2.3.0-he0c23c2_0.conda sha256: c25bf68ef411d41ee29f353acc698c482fdd087426a77398b7b41ce9d968519e md5: ac11ae1da661e573b71870b1191ce079 depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: BSD-2-Clause license_family: BSD size: 1845727 timestamp: 1730246453216 -- kind: conda - name: svt-av1 - version: 2.3.0 - build: hf24288c_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/svt-av1-2.3.0-hf24288c_0.conda - sha256: ab876ed8bdd20e22a868dcb8d03e9ce9bbba7762d7e652d49bfff6af768a5b8f - md5: 114c33e9eec335a379c9ee6c498bb807 +- conda: https://conda.anaconda.org/conda-forge/linux-64/swig-4.3.0-heed6a68_0.conda + sha256: 4771f7a2323d7f3c4d42b1c8ed670335ede7e78b80d8ba17d3c40b781dedcbdc + md5: 0e4da15e507b716140699aca1a279a88 depends: - - __osx >=11.0 - - libcxx >=17 - license: BSD-2-Clause - license_family: BSD - size: 1387330 - timestamp: 1730246134730 -- kind: conda - name: swig - version: 4.3.0 - build: h051d1ac_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/swig-4.3.0-h051d1ac_0.conda - sha256: 40093468f8983fe331d8a4e8e631a8dbcee0167edcbb2f68aef6db2ab68aa816 - md5: 2a8e52dc5014460dc890041d31f79f93 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libstdcxx >=13 + - pcre2 >=10.44,<10.45.0a0 + arch: x86_64 + platform: linux + license: GPL-3.0-or-later + license_family: GPL + size: 1248414 + timestamp: 1729588950292 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/swig-4.3.0-h2f4baa9_0.conda + sha256: 50b8b93bd1cef4451c6a659f59ad48ca886990f1123a71dbe54c49562f64ac30 + md5: 3004200698c3e9599b255fb357628f48 depends: - - __osx >=11.0 - - libcxx >=17 + - libgcc >=13 + - libstdcxx >=13 - pcre2 >=10.44,<10.45.0a0 + arch: aarch64 + platform: linux license: GPL-3.0-or-later license_family: GPL - size: 1113443 - timestamp: 1729589137221 -- kind: conda - name: swig - version: 4.3.0 - build: h05d4bff_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/swig-4.3.0-h05d4bff_0.conda + size: 1299652 + timestamp: 1729589010660 +- conda: https://conda.anaconda.org/conda-forge/osx-64/swig-4.3.0-h05d4bff_0.conda sha256: 5d1accf5609d7152c8ee0961b7a83aa73519866f549e4e75aa0b8e2fe365db65 md5: e977150e8f2dd12aa3fa3c94c87e5b8f depends: - __osx >=10.13 - libcxx >=17 - pcre2 >=10.44,<10.45.0a0 + arch: x86_64 + platform: osx license: GPL-3.0-or-later license_family: GPL size: 1160596 timestamp: 1729589065015 -- kind: conda - name: swig - version: 4.3.0 - build: h2f4baa9_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/swig-4.3.0-h2f4baa9_0.conda - sha256: 50b8b93bd1cef4451c6a659f59ad48ca886990f1123a71dbe54c49562f64ac30 - md5: 3004200698c3e9599b255fb357628f48 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/swig-4.3.0-h051d1ac_0.conda + sha256: 40093468f8983fe331d8a4e8e631a8dbcee0167edcbb2f68aef6db2ab68aa816 + md5: 2a8e52dc5014460dc890041d31f79f93 depends: - - libgcc >=13 - - libstdcxx >=13 + - __osx >=11.0 + - libcxx >=17 - pcre2 >=10.44,<10.45.0a0 + arch: arm64 + platform: osx license: GPL-3.0-or-later license_family: GPL - size: 1299652 - timestamp: 1729589010660 -- kind: conda - name: swig - version: 4.3.0 - build: h51fbe9b_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/swig-4.3.0-h51fbe9b_0.conda + size: 1113443 + timestamp: 1729589137221 +- conda: https://conda.anaconda.org/conda-forge/win-64/swig-4.3.0-h51fbe9b_0.conda sha256: b6f66e27dac7799a844e530f2b946713223106b8df66c809a6dda4a96ae68ba3 md5: f076cd8282f1c164e57990a1daf70fd1 depends: @@ -22390,35 +16345,13 @@ packages: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: GPL-3.0-or-later license_family: GPL size: 1079944 timestamp: 1729589112085 -- kind: conda - name: swig - version: 4.3.0 - build: heed6a68_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/swig-4.3.0-heed6a68_0.conda - sha256: 4771f7a2323d7f3c4d42b1c8ed670335ede7e78b80d8ba17d3c40b781dedcbdc - md5: 0e4da15e507b716140699aca1a279a88 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - pcre2 >=10.44,<10.45.0a0 - license: GPL-3.0-or-later - license_family: GPL - size: 1248414 - timestamp: 1729588950292 -- kind: conda - name: sysroot_linux-64 - version: '2.12' - build: he073ed8_17 - build_number: 17 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.12-he073ed8_17.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-64-2.12-he073ed8_17.conda sha256: b4e4d685e41cb36cfb16f0cb15d2c61f8f94f56fab38987a44eff95d8a673fb5 md5: 595db67e32b276298ff3d94d07d47fbf depends: @@ -22427,750 +16360,422 @@ packages: license_family: GPL size: 15127123 timestamp: 1708000843849 -- kind: conda - name: sysroot_linux-aarch64 - version: '2.17' - build: h5b4a56d_18 - build_number: 18 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-aarch64-2.17-h5b4a56d_18.conda - sha256: 769a720e0066e3b5c4168d6de455dbde12c2ee11ee3a19fc614659d04f726370 - md5: d42f4bece921c5e59f56a36414106dc1 +- conda: https://conda.anaconda.org/conda-forge/noarch/sysroot_linux-aarch64-2.17-h68829e0_18.conda + sha256: 1e478bfd87c296829e62f0cae37e591568c2dcfc90ee6228c285bb1c7130b915 + md5: 5af44a8494602d062a4c6f019bcb6116 depends: - kernel-headers_linux-aarch64 4.18.0 h05a177a_18 - tzdata license: LGPL-2.0-or-later AND LGPL-2.0-or-later WITH exceptions AND GPL-2.0-or-later AND MPL-2.0 license_family: GPL - size: 15669544 - timestamp: 1729794509305 -- kind: conda - name: tapi - version: 1300.6.5 - build: h03f4b80_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tapi-1300.6.5-h03f4b80_0.conda - sha256: 37cd4f62ec023df8a6c6f9f6ffddde3d6620a83cbcab170a8fff31ef944402e5 - md5: b703bc3e6cba5943acf0e5f987b5d0e2 - depends: - - __osx >=11.0 - - libcxx >=17.0.0.a0 - - ncurses >=6.5,<7.0a0 - license: NCSA - license_family: MIT - size: 207679 - timestamp: 1725491499758 -- kind: conda - name: tapi - version: 1300.6.5 - build: h390ca13_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/tapi-1300.6.5-h390ca13_0.conda + size: 15739604 + timestamp: 1735290496248 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tapi-1300.6.5-h390ca13_0.conda sha256: f97372a1c75b749298cb990405a690527e8004ff97e452ed2c59e4bc6a35d132 md5: c6ee25eb54accb3f1c8fc39203acfaf1 depends: - __osx >=10.13 - libcxx >=17.0.0.a0 - ncurses >=6.5,<7.0a0 + arch: x86_64 + platform: osx license: NCSA license_family: MIT size: 221236 timestamp: 1725491044729 -- kind: conda - name: tbb - version: 2021.13.0 - build: h62715c5_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda - sha256: 03cc5442046485b03dd1120d0f49d35a7e522930a2ab82f275e938e17b07b302 - md5: 9190dd0a23d925f7602f9628b3aed511 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tapi-1300.6.5-h03f4b80_0.conda + sha256: 37cd4f62ec023df8a6c6f9f6ffddde3d6620a83cbcab170a8fff31ef944402e5 + md5: b703bc3e6cba5943acf0e5f987b5d0e2 + depends: + - __osx >=11.0 + - libcxx >=17.0.0.a0 + - ncurses >=6.5,<7.0a0 + arch: arm64 + platform: osx + license: NCSA + license_family: MIT + size: 207679 + timestamp: 1725491499758 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tbb-2022.0.0-hceb3a55_0.conda + sha256: 2f7931cad1682d8b6bdc90dbb51edf01f6f5c33fc00392c396d63e24437df1e8 + md5: 79f0161f3ca73804315ca980f65d9c60 depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 - libhwloc >=2.11.2,<2.11.3.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 151460 - timestamp: 1732982860332 -- kind: conda - name: tbb - version: 2022.0.0 - build: h0cbf7ec_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tbb-2022.0.0-h0cbf7ec_0.conda - sha256: f436517a16494c93e2d779b9cdb91e8f4a9b48cef67fe20a4e75e494c8631dff - md5: 44ba5ad9819821b9b176ba2bb937a79c + size: 178584 + timestamp: 1730477634943 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tbb-2022.0.0-h243be18_0.conda + sha256: 914b8f72004bc72dda573ae6579f2443f9be2556865b91a0a958368b40b189c6 + md5: adc00506117e9ea09114ce0dac3681f0 depends: - - __osx >=11.0 - - libcxx >=17 + - libgcc >=13 - libhwloc >=2.11.2,<2.11.3.0a0 + - libstdcxx >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: APACHE - size: 117825 - timestamp: 1730477755617 -- kind: conda - name: tbb - version: 2022.0.0 - build: h0ec6371_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/tbb-2022.0.0-h0ec6371_0.conda + size: 146414 + timestamp: 1730479107676 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tbb-2022.0.0-h0ec6371_0.conda sha256: a69e71e18f2da8807b23615f1d3c1989bbb27862709b9d29c6b67c6f19d0523f md5: a490face63f9af5b631921c8ddfd7383 depends: - __osx >=10.13 - libcxx >=17 - libhwloc >=2.11.2,<2.11.3.0a0 + arch: x86_64 + platform: osx license: Apache-2.0 license_family: APACHE size: 162933 timestamp: 1730477787840 -- kind: conda - name: tbb - version: 2022.0.0 - build: h243be18_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tbb-2022.0.0-h243be18_0.conda - sha256: 914b8f72004bc72dda573ae6579f2443f9be2556865b91a0a958368b40b189c6 - md5: adc00506117e9ea09114ce0dac3681f0 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tbb-2022.0.0-h0cbf7ec_0.conda + sha256: f436517a16494c93e2d779b9cdb91e8f4a9b48cef67fe20a4e75e494c8631dff + md5: 44ba5ad9819821b9b176ba2bb937a79c depends: - - libgcc >=13 + - __osx >=11.0 + - libcxx >=17 - libhwloc >=2.11.2,<2.11.3.0a0 - - libstdcxx >=13 + arch: arm64 + platform: osx license: Apache-2.0 license_family: APACHE - size: 146414 - timestamp: 1730479107676 -- kind: conda - name: tbb - version: 2022.0.0 - build: hceb3a55_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tbb-2022.0.0-hceb3a55_0.conda - sha256: 2f7931cad1682d8b6bdc90dbb51edf01f6f5c33fc00392c396d63e24437df1e8 - md5: 79f0161f3ca73804315ca980f65d9c60 + size: 117825 + timestamp: 1730477755617 +- conda: https://conda.anaconda.org/conda-forge/win-64/tbb-2021.13.0-h62715c5_1.conda + sha256: 03cc5442046485b03dd1120d0f49d35a7e522930a2ab82f275e938e17b07b302 + md5: 9190dd0a23d925f7602f9628b3aed511 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - libhwloc >=2.11.2,<2.11.3.0a0 - - libstdcxx >=13 - license: Apache-2.0 - license_family: APACHE - size: 178584 - timestamp: 1730477634943 -- kind: conda - name: tbb-devel - version: 2021.13.0 - build: h47441b3_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/tbb-devel-2021.13.0-h47441b3_1.conda - sha256: c290681bb8e03f13ec490e7ed048dc74da884f23d146c7f98283c0d218532dcb - md5: e372dfa2ea4bf2143ee2072e8adc8ac7 - depends: - - tbb 2021.13.0 h62715c5_1 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - size: 1062747 - timestamp: 1732982884583 -- kind: conda - name: tbb-devel - version: 2022.0.0 - build: h1f99690_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tbb-devel-2022.0.0-h1f99690_0.conda - sha256: 67a58fa88d4c8d353a72c8ab2130b4e2a96afbfeca6e8438b07b9fc76e551090 - md5: 52317967d0c3dc2ef6f73c2e6a60e005 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libstdcxx >=13 - - tbb 2022.0.0 hceb3a55_0 - size: 1075564 - timestamp: 1730477658219 -- kind: conda - name: tbb-devel - version: 2022.0.0 - build: h6e261d1_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tbb-devel-2022.0.0-h6e261d1_0.conda + arch: x86_64 + platform: win + license: Apache-2.0 + license_family: APACHE + size: 151460 + timestamp: 1732982860332 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tbb-devel-2022.0.0-h6e261d1_0.conda sha256: 50d10fd8d6be3deaf7fabbd40d61c82cf13b70e2e09603e67c0a41161214b279 md5: f0ab986bef824b8045c44737d7e6464e depends: - __osx >=11.0 - libcxx >=17 - tbb 2022.0.0 h0cbf7ec_0 + arch: arm64 + platform: osx size: 1075822 timestamp: 1730477778601 -- kind: conda - name: tbb-devel - version: 2022.0.0 - build: h80d89ef_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/tbb-devel-2022.0.0-h80d89ef_0.conda - sha256: 057720aeed52e84f5620025d736e8d1be265387e3632b7ccc2725be9ab7b430a - md5: b5f7717fe68aed91bda2366a18035dfb +- conda: https://conda.anaconda.org/conda-forge/win-64/tbb-devel-2021.13.0-h47441b3_1.conda + sha256: c290681bb8e03f13ec490e7ed048dc74da884f23d146c7f98283c0d218532dcb + md5: e372dfa2ea4bf2143ee2072e8adc8ac7 depends: - - __osx >=10.13 - - libcxx >=17 - - tbb 2022.0.0 h0ec6371_0 - size: 1074771 - timestamp: 1730477812192 -- kind: conda - name: tbb-devel - version: 2022.0.0 - build: h9a8439e_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tbb-devel-2022.0.0-h9a8439e_0.conda - sha256: 3eedbece2bbd25e683d7ab0257fcfe8606f35955c20b4ea39750c46eb7b91153 - md5: b26ac5ef7be85db0dbb7c5f828145277 + - tbb 2021.13.0 h62715c5_1 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win + size: 1062747 + timestamp: 1732982884583 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda + sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e + md5: d453b98d9c83e71da0741bb0ff4d76bc depends: - - libgcc >=13 - - libstdcxx >=13 - - tbb 2022.0.0 h243be18_0 - size: 1075158 - timestamp: 1730479266699 -- kind: conda - name: tk - version: 8.6.13 - build: h194ca79_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda + - libgcc-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux + license: TCL + license_family: BSD + size: 3318875 + timestamp: 1699202167581 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tk-8.6.13-h194ca79_0.conda sha256: 7fa27cc512d3a783f38bd16bbbffc008807372499d5b65d089a8e43bde9db267 md5: f75105e0585851f818e0009dd1dde4dc depends: - libgcc-ng >=12 - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux license: TCL license_family: BSD size: 3351802 timestamp: 1695506242997 -- kind: conda - name: tk - version: 8.6.13 - build: h1abcd95_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/tk-8.6.13-h1abcd95_1.conda sha256: 30412b2e9de4ff82d8c2a7e5d06a15f4f4fef1809a72138b6ccb53a33b26faf5 md5: bf830ba5afc507c6232d4ef0fb1a882d depends: - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: osx license: TCL license_family: BSD size: 3270220 timestamp: 1699202389792 -- kind: conda - name: tk - version: 8.6.13 - build: h5083fa2_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tk-8.6.13-h5083fa2_1.conda sha256: 72457ad031b4c048e5891f3f6cb27a53cb479db68a52d965f796910e71a403a8 md5: b50a57ba89c32b62428b71a875291c9b depends: - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx license: TCL license_family: BSD size: 3145523 timestamp: 1699202432999 -- kind: conda - name: tk - version: 8.6.13 - build: h5226925_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/tk-8.6.13-h5226925_1.conda sha256: 2c4e914f521ccb2718946645108c9bd3fc3216ba69aea20c2c3cedbd8db32bb1 md5: fc048363eb8f03cd1737600a5d08aafe depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: TCL license_family: BSD size: 3503410 timestamp: 1699202577803 -- kind: conda - name: tk - version: 8.6.13 - build: noxft_h4845f30_101 - build_number: 101 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tk-8.6.13-noxft_h4845f30_101.conda - sha256: e0569c9caa68bf476bead1bed3d79650bb080b532c64a4af7d8ca286c08dea4e - md5: d453b98d9c83e71da0741bb0ff4d76bc - depends: - - libgcc-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - license: TCL - license_family: BSD - size: 3318875 - timestamp: 1699202167581 -- kind: conda - name: tornado - version: 6.4.2 - build: py312h01d7ebd_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py312h01d7ebd_0.conda - sha256: a7b0796b9f8a02121a866ee396f0f8674c302504ccb9a3a2830699eedbc000b0 - md5: 1b977164053085b356297127d3d6be49 +- conda: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py313h536fd9c_0.conda + sha256: fddab13f9a6046518d20ce0c264299c670cc6ad3eb23a8aba209d2cd7d3b5b44 + md5: 5f5cbdd527d2e74e270d8b6255ba714f depends: - - __osx >=10.13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: Apache-2.0 - license_family: Apache - size: 837113 - timestamp: 1732616134981 -- kind: conda - name: tornado - version: 6.4.2 - build: py312h4389bb4_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py312h4389bb4_0.conda - sha256: e21f24e5d598d9a31c604f510c82fbe73d756696bc70a69f11811a2ea9dd5d95 - md5: f06104f71f496b0784b35b23e30e7990 - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 844347 - timestamp: 1732616435803 -- kind: conda - name: tornado - version: 6.4.2 - build: py312h52516f5_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py312h52516f5_0.conda - sha256: 4c19a544354172b2273553267e734795a6da3c78a04c2d19f8e9e159ca3178bc - md5: e28996d9d2d44d777b7e6fb12f63715b - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + size: 861808 + timestamp: 1732615990936 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/tornado-6.4.2-py313h6a51379_0.conda + sha256: b6d9978170d00423f2b87f62be2861d9481e7e931893a1080f0858e9725d675c + md5: f05c44876313b2d74d7b9c7bcef8f3fd + depends: + - libgcc >=13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache - size: 841662 - timestamp: 1732616934923 -- kind: conda - name: tornado - version: 6.4.2 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/tornado-6.4.2-py312h66e93f0_0.conda - sha256: 062a3a3a37fa8615ce57929ba7e982c76f5a5810bcebd435950f6d6c4147c310 - md5: e417822cb989e80a0d2b1b576fdd1657 + size: 866768 + timestamp: 1732616918312 +- conda: https://conda.anaconda.org/conda-forge/osx-64/tornado-6.4.2-py313h63b0ddb_0.conda + sha256: 209dbf187e031dd3c565ff2da0f17847e84e8edb7648efecac28e61744345a41 + md5: 74a3a14f82dc65fa19f4fd4e2eb8da93 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - __osx >=10.13 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: osx license: Apache-2.0 license_family: Apache - size: 840414 - timestamp: 1732616043734 -- kind: conda - name: tornado - version: 6.4.2 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py312hea69d52_0.conda - sha256: 964a2705a36c50040c967b18b45b9cc8de3c2aff4af546979a574e0b38e58e39 - md5: fb0605888a475d6a380ae1d1a819d976 + size: 862737 + timestamp: 1732616091334 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/tornado-6.4.2-py313h90d716c_0.conda + sha256: 33ef243265af82d7763c248fedd9196523210cc295b2caa512128202eda5e9e8 + md5: 6790d50f184874a9ea298be6bcbc7710 depends: - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache - size: 842549 - timestamp: 1732616081362 -- kind: conda - name: tqdm - version: 4.67.1 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/tqdm-4.67.1-pyhd8ed1ab_0.conda - sha256: 5673b7104350a6998cb86cccf1d0058217d86950e8d6c927d8530606028edb1d - md5: 4085c9db273a148e149c03627350e22c - depends: - - colorama - - python >=3.7 - license: MPL-2.0 or MIT - size: 89484 - timestamp: 1732497312317 -- kind: conda - name: truststore - version: 0.10.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/truststore-0.10.0-pyhd8ed1ab_0.conda - sha256: 0d23d3b370fc0393d05468fbff5152826317d4495446f6b2cc4d446e21050808 - md5: ad1c20cd193e3044bcf17798c33b9d67 - depends: - - python >=3.10 - license: MIT - license_family: MIT - size: 21799 - timestamp: 1729762456098 -- kind: conda - name: typing_extensions - version: 4.12.2 - build: pyha770c72_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/typing_extensions-4.12.2-pyha770c72_1.conda - sha256: 337be7af5af8b2817f115b3b68870208b30c31d3439bec07bfb2d8f4823e3568 - md5: d17f13df8b65464ca316cbc000a3cb64 - depends: - - python >=3.9 - license: PSF-2.0 - license_family: PSF - size: 39637 - timestamp: 1733188758212 -- kind: conda - name: tzdata - version: 2024b - build: hc8b5060_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda + size: 863363 + timestamp: 1732616174714 +- conda: https://conda.anaconda.org/conda-forge/win-64/tornado-6.4.2-py313ha7868ed_0.conda + sha256: 062e8b77b825463fc59f373d4033fae7cf65a4170e761814bcbf25cd0627bd1d + md5: 3d63fe6a4757924a085ab10196049854 + depends: + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win + license: Apache-2.0 + license_family: Apache + size: 865881 + timestamp: 1732616355868 +- conda: https://conda.anaconda.org/conda-forge/noarch/tzdata-2024b-hc8b5060_0.conda sha256: 4fde5c3008bf5d2db82f2b50204464314cc3c91c1d953652f7bd01d9e52aefdf md5: 8ac3367aafb1cc0a068483c580af8015 license: LicenseRef-Public-Domain size: 122354 timestamp: 1728047496079 -- kind: conda - name: ucrt - version: 10.0.22621.0 - build: h57928b3_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/ucrt-10.0.22621.0-h57928b3_1.conda sha256: db8dead3dd30fb1a032737554ce91e2819b43496a0db09927edf01c32b577450 md5: 6797b005cd0f439c4c5c9ac565783700 constrains: - vs2015_runtime >=14.29.30037 + arch: x86_64 + platform: win license: LicenseRef-MicrosoftWindowsSDK10 size: 559710 timestamp: 1728377334097 -- kind: conda - name: ukkonen - version: 1.0.1 - build: py312h451a7dd_5 - build_number: 5 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/ukkonen-1.0.1-py312h451a7dd_5.conda - sha256: a4fdd0ce8532174bb7caf475fac947d3cdfe85d3b71ebeb2892281c650614c08 - md5: 800fc7dab0bb640c93f530f8fa280c7b +- conda: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py313h33d0bda_5.conda + sha256: 4edcb6a933bb8c03099ab2136118d5e5c25285e3fd2b0ff0fa781916c53a1fb7 + md5: 5bcffe10a500755da4a71cc0fb62a420 depends: + - __glibc >=2.17,<3.0.a0 - cffi - libgcc >=13 - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: MIT - license_family: MIT - size: 14718 - timestamp: 1725784301836 -- kind: conda - name: ukkonen - version: 1.0.1 - build: py312h6142ec9_5 - build_number: 5 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py312h6142ec9_5.conda - sha256: 1e4452b4a12d8a69c237f14b876fbf0cdc456914170b49ba805779c749c31eca - md5: 2b485a809d1572cbe7f0ad9ee107e4b0 - depends: - - __osx >=11.0 - - cffi - - libcxx >=17 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 13605 - timestamp: 1725784243533 -- kind: conda - name: ukkonen - version: 1.0.1 - build: py312h68727a3_5 - build_number: 5 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/ukkonen-1.0.1-py312h68727a3_5.conda - sha256: 9fb020083a7f4fee41f6ece0f4840f59739b3e249f157c8a407bb374ffb733b5 - md5: f9664ee31aed96c85b7319ab0a693341 + size: 13916 + timestamp: 1725784177558 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/ukkonen-1.0.1-py313h44a8f36_5.conda + sha256: d2aed135eaeafff397dab98f9c068e1e5c12ad3f80d6e7dff4c1b7fc847abf21 + md5: d8fa57c936faaa0829f8c1ac263dc484 depends: - - __glibc >=2.17,<3.0.a0 - cffi - libgcc >=13 - libstdcxx >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13.0rc1,<3.14.0a0 + - python >=3.13.0rc1,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 13904 - timestamp: 1725784191021 -- kind: conda - name: ukkonen - version: 1.0.1 - build: py312hc5c4d5f_5 - build_number: 5 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py312hc5c4d5f_5.conda - sha256: f6433143294c1ca52410bf8bbca6029a04f2061588d32e6d2b67c7fd886bc4e0 - md5: f270aa502d8817e9cb3eb33541f78418 + size: 14819 + timestamp: 1725784294677 +- conda: https://conda.anaconda.org/conda-forge/osx-64/ukkonen-1.0.1-py313h0c4e38b_5.conda + sha256: 6abf14f984a1fc3641908cb7e96ba8f2ce56e6f81069852b384e1755f8f5225e + md5: 6185cafe9e489071688304666923c2ad depends: - __osx >=10.13 - cffi - libcxx >=17 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 13031 - timestamp: 1725784199719 -- kind: conda - name: ukkonen - version: 1.0.1 - build: py312hd5eb7cc_5 - build_number: 5 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py312hd5eb7cc_5.conda - sha256: f1944f3d9645a6fa2770966ff010791136e7ce0eaa0c751822b812ac04fee7d6 - md5: d8c5ef1991a5121de95ea8e44c34e13a + size: 13126 + timestamp: 1725784265187 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/ukkonen-1.0.1-py313hf9c7212_5.conda + sha256: 482eac475928c031948790647ae10c2cb1d4a779c2e8f35f5fd1925561b13203 + md5: 8ddba23e26957f0afe5fc9236c73124a depends: + - __osx >=11.0 - cffi - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - libcxx >=17 + - python >=3.13.0rc1,<3.14.0a0 + - python >=3.13.0rc1,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 17213 - timestamp: 1725784449622 -- kind: conda - name: unicodedata2 - version: 15.1.0 - build: py312h0bf5046_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/unicodedata2-15.1.0-py312h0bf5046_1.conda - sha256: 236961004c088f190d8b27863b2898f1d43c2d5dc769f135abdacc644b033fab - md5: eda2082df9c9c6259af246424b7f3db1 - depends: - - __osx >=11.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: Apache-2.0 - license_family: Apache - size: 372492 - timestamp: 1729704995151 -- kind: conda - name: unicodedata2 - version: 15.1.0 - build: py312h3d0f464_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/unicodedata2-15.1.0-py312h3d0f464_1.conda - sha256: e1d8da8eed41f5479eacff7d4b42ad69e8476eb370dcebd3ffff26819a7da4ea - md5: f4627b5e2f46389140760303124b4c49 + size: 13689 + timestamp: 1725784235751 +- conda: https://conda.anaconda.org/conda-forge/win-64/ukkonen-1.0.1-py313h1ec8472_5.conda + sha256: 4f57f2eccd5584421f1b4d8c96c167c1008cba660d7fab5bdec1de212a0e0ff0 + md5: 97337494471e4265a203327f9a194234 depends: - - __osx >=10.13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: Apache-2.0 - license_family: Apache - size: 364385 - timestamp: 1729704742038 -- kind: conda - name: unicodedata2 - version: 15.1.0 - build: py312h4389bb4_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/unicodedata2-15.1.0-py312h4389bb4_1.conda - sha256: 92abc9d85c1cec3349db089a9942266a981cf347ac6a9ddbeaa3d3162958d81b - md5: 9cf863b723d64077f74396cfe4d7c00c - depends: - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - cffi + - python >=3.13.0rc1,<3.14.0a0 + - python_abi 3.13.* *_cp313 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - license: Apache-2.0 - license_family: Apache - size: 365482 - timestamp: 1729705063982 -- kind: conda - name: unicodedata2 - version: 15.1.0 - build: py312h66e93f0_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/unicodedata2-15.1.0-py312h66e93f0_1.conda - sha256: 1fcba6d363d901d9a06381e1aee2d5634f82389965dd7a339f19b3ae81ce6da0 - md5: 588486a61153f94c7c13816f7069e440 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: Apache-2.0 - license_family: Apache - size: 368550 - timestamp: 1729704685856 -- kind: conda - name: unicodedata2 - version: 15.1.0 - build: py312hb2c0f52_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/unicodedata2-15.1.0-py312hb2c0f52_1.conda - sha256: d4d824f7b349255c78f793361d3ba0e7ca4be4b3e0862c0bba29df0ba2363a8a - md5: 8af221242377135de97413db7eea49fd - depends: - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - license: Apache-2.0 - license_family: Apache - size: 368846 - timestamp: 1729704767444 -- kind: conda - name: urllib3 - version: 2.2.3 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/urllib3-2.2.3-pyhd8ed1ab_1.conda - sha256: 416e30a1c3262275f01a3e22e783118d9e9d2872a739a9ed860d06fa9c7593d5 - md5: 4a2d8ef7c37b8808c5b9b750501fffce - depends: - - brotli-python >=1.0.9 - - h2 >=4,<5 - - pysocks >=1.5.6,<2.0,!=1.5.7 - - python >=3.9 - - zstandard >=0.18.0 + arch: x86_64 + platform: win license: MIT license_family: MIT - size: 98077 - timestamp: 1733206968917 -- kind: conda - name: utfcpp - version: 4.0.6 - build: h005c6e1_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/utfcpp-4.0.6-h005c6e1_0.conda + size: 17210 + timestamp: 1725784604368 +- conda: https://conda.anaconda.org/conda-forge/linux-64/utfcpp-4.0.6-h005c6e1_0.conda sha256: ec540ff477cd6d209b98f9b201e9c440908ea3a8b62e9e02dd12fcb60fff6d08 md5: 9464e297fa2bf08030c65a54342b48c3 + arch: x86_64 + platform: linux license: BSL-1.0 size: 13447 timestamp: 1730672182037 -- kind: conda - name: utfcpp - version: 4.0.6 - build: h01cc221_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/utfcpp-4.0.6-h01cc221_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/utfcpp-4.0.6-h01cc221_0.conda sha256: c8b19a825ec19387181be2c2a63a649f408b6c77fe5f01389565011755150c86 md5: 4bc420dcc08be7b850d1d6e9e32e0a0e + arch: aarch64 + platform: linux license: BSL-1.0 size: 13427 timestamp: 1730672219363 -- kind: conda - name: utfcpp - version: 4.0.6 - build: h54c0426_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/utfcpp-4.0.6-h54c0426_0.conda - sha256: f35ec947f1c7cf49a0171db562a767d81b59ebbca37989bce34d36d43020fb76 - md5: 663093debcad11b7f3f1e8d62469af05 - license: BSL-1.0 - size: 13663 - timestamp: 1730672215514 -- kind: conda - name: utfcpp - version: 4.0.6 - build: h93fb1c9_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/utfcpp-4.0.6-h93fb1c9_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/utfcpp-4.0.6-h93fb1c9_0.conda sha256: ddf50c776d1b12e6b1274c204ecb94e82e0656d0259bd4019fcb7f2863ea001c md5: 674132c65b17f287badb24a9cd807f96 + arch: x86_64 + platform: osx license: BSL-1.0 size: 13644 timestamp: 1730672214332 -- kind: conda - name: utfcpp - version: 4.0.6 - build: hc1507ef_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/utfcpp-4.0.6-hc1507ef_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/utfcpp-4.0.6-h54c0426_0.conda + sha256: f35ec947f1c7cf49a0171db562a767d81b59ebbca37989bce34d36d43020fb76 + md5: 663093debcad11b7f3f1e8d62469af05 + arch: arm64 + platform: osx + license: BSL-1.0 + size: 13663 + timestamp: 1730672215514 +- conda: https://conda.anaconda.org/conda-forge/win-64/utfcpp-4.0.6-hc1507ef_0.conda sha256: 71ee67c739bb32a2b684231f156150e1f7fd6c852aa2ceaae50e56909c073227 md5: 7071f524e58d346948d4ac7ae7b5d2f2 + arch: x86_64 + platform: win license: BSL-1.0 size: 13983 timestamp: 1730672186474 -- kind: conda - name: vc - version: '14.3' - build: ha32ba9b_23 - build_number: 23 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/vc-14.3-ha32ba9b_23.conda sha256: 986ddaf8feec2904eac9535a7ddb7acda1a1dfb9482088fdb8129f1595181663 md5: 7c10ec3158d1eb4ddff7007c9101adb0 depends: - vc14_runtime >=14.38.33135 + arch: x86_64 + platform: win track_features: - vc14 license: BSD-3-Clause license_family: BSD size: 17479 timestamp: 1731710827215 -- kind: conda - name: vc14_runtime - version: 14.42.34433 - build: he29a5d6_23 - build_number: 23 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/vc14_runtime-14.42.34433-he29a5d6_23.conda sha256: c483b090c4251a260aba6ff3e83a307bcfb5fb24ad7ced872ab5d02971bd3a49 md5: 32b37d0cfa80da34548501cdc913a832 depends: - ucrt >=10.0.20348.0 constrains: - vs2015_runtime 14.42.34433.* *_23 + arch: x86_64 + platform: win license: LicenseRef-MicrosoftVisualCpp2015-2022Runtime license_family: Proprietary size: 754247 timestamp: 1731710681163 -- kind: conda - name: virtualenv - version: 20.28.0 - build: pyhd8ed1ab_0 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.28.0-pyhd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/virtualenv-20.28.0-pyhd8ed1ab_0.conda sha256: 82776f74e90a296b79415361faa6b10f360755c1fb8e6d59ca68509e6fe7e115 md5: 1d601bc1d28b5ce6d112b90f4b9b8ede depends: @@ -23182,315 +16787,268 @@ packages: license_family: MIT size: 3350255 timestamp: 1732609542072 -- kind: conda - name: vs2015_runtime - version: 14.42.34433 - build: hdffcdeb_23 - build_number: 23 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/vs2015_runtime-14.42.34433-hdffcdeb_23.conda sha256: 568ce8151eaae256f1cef752fc78651ad7a86ff05153cc7a4740b52ae6536118 md5: 5c176975ca2b8366abad3c97b3cd1e83 depends: - vc14_runtime >=14.42.34433 + arch: x86_64 + platform: win + license: BSD-3-Clause + license_family: BSD + size: 17572 + timestamp: 1731710685291 +- conda: https://conda.anaconda.org/conda-forge/win-64/vs2019_win-64-19.29.30139-he1865b1_23.conda + sha256: c41039f7f19a6570ad2af6ef7a8534111fe1e6157b187505fb81265d755bb825 + md5: 245e19dde23580d186b11a29bfd3b99e + depends: + - vswhere + constrains: + - vs_win-64 2019.11 + arch: x86_64 + platform: win + track_features: + - vc14 + license: BSD-3-Clause + license_family: BSD + size: 20163 + timestamp: 1731710669471 +- conda: https://conda.anaconda.org/conda-forge/win-64/vswhere-3.1.7-h57928b3_0.conda + sha256: 8caeda9c0898cb8ee2cf4f45640dbbbdf772ddc01345cfb0f7b352c58b4d8025 + md5: ba83df93b48acfc528f5464c9a882baa + arch: x86_64 + platform: win + license: MIT + license_family: MIT + size: 219013 + timestamp: 1719460515960 +- conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-9.3.1-qt_py313h3d4e8c9_211.conda + sha256: 944050d4abd69e7163aec662de1e78a9cd1dcf5e1a05f7647324b99b79572645 + md5: e98adc97febc052f1e7f2c631147e23d + depends: + - vtk-base 9.3.1 qt_py313h4f3260d_211 + - vtk-io-ffmpeg 9.3.1 qt_py313h3d4e8c9_211 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23091 + timestamp: 1734568444089 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-9.3.1-qt_py313h502ffb0_212.conda + sha256: b4c41158dfcb2bc2b8997caa38f3075c09c0e9673e82be30261826dc77535470 + md5: f46a18eeca0333af3da66008cf305acc + depends: + - vtk-base 9.3.1 qt_py313h60ad838_212 + - vtk-io-ffmpeg 9.3.1 qt_py313h502ffb0_212 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 23280 + timestamp: 1734596962138 +- conda: https://conda.anaconda.org/conda-forge/osx-64/vtk-9.3.1-qt_py313h6e7d914_212.conda + sha256: a3ca03b23dddf95ba8e10ea7f9be7a46604da7c0db77e9ecefec0fa2b1fe9bf1 + md5: 29b0a1b534397ebd617323a6fa394dfc + depends: + - vtk-base 9.3.1 qt_py313he77fd1e_212 + - vtk-io-ffmpeg 9.3.1 qt_py313h6e7d914_212 + arch: x86_64 + platform: osx + license: BSD-3-Clause + license_family: BSD + size: 23143 + timestamp: 1734587411827 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/vtk-9.3.1-qt_py313h8d5bf7a_209.conda + sha256: 8371d7ea248754fbcd76ce136cf5cf8034873f5d0efd05fc96ab74ed66dc36a1 + md5: 6ceb578ae26528425ad825e18fb8c605 + depends: + - vtk-base 9.3.1 qt_py313hc8fffa2_209 + - vtk-io-ffmpeg 9.3.1 qt_py313hf99a90b_209 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 17572 - timestamp: 1731710685291 -- kind: conda - name: vs2019_win-64 - version: 19.29.30139 - build: he1865b1_23 - build_number: 23 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/vs2019_win-64-19.29.30139-he1865b1_23.conda - sha256: c41039f7f19a6570ad2af6ef7a8534111fe1e6157b187505fb81265d755bb825 - md5: 245e19dde23580d186b11a29bfd3b99e + size: 23251 + timestamp: 1728214521355 +- conda: https://conda.anaconda.org/conda-forge/win-64/vtk-9.3.1-qt_py313h88e836f_209.conda + sha256: faecf9faaa809326470b9e762a60f4100e1a46b615221b3b33466337e80ac09a + md5: 39447b6b1400e03a175e7d63387a3420 depends: - - vswhere - constrains: - - vs_win-64 2019.11 - track_features: - - vc14 + - vtk-base 9.3.1 qt_py313hdcf24be_209 + arch: x86_64 + platform: win license: BSD-3-Clause license_family: BSD - size: 20163 - timestamp: 1731710669471 -- kind: conda - name: vswhere - version: 3.1.7 - build: h57928b3_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/vswhere-3.1.7-h57928b3_0.conda - sha256: 8caeda9c0898cb8ee2cf4f45640dbbbdf772ddc01345cfb0f7b352c58b4d8025 - md5: ba83df93b48acfc528f5464c9a882baa - license: MIT - license_family: MIT - size: 219013 - timestamp: 1719460515960 -- kind: conda - name: vtk - version: 9.3.1 - build: qt_py312h88e836f_209 - build_number: 209 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/vtk-9.3.1-qt_py312h88e836f_209.conda - sha256: 77763e06d5053f144e65bb3cf4407213abb883db146dd46cfb3ec2c0fcd82ac1 - md5: 03069480d8623812484944dc1c81e1c3 - depends: - - vtk-base 9.3.1 qt_py312h44e7938_209 - license: BSD-3-Clause - license_family: BSD - size: 23229 - timestamp: 1728220734977 -- kind: conda - name: vtk - version: 9.3.1 - build: qt_py312h8bbc2db_209 - build_number: 209 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/vtk-9.3.1-qt_py312h8bbc2db_209.conda - sha256: 2900b519275f17322a15e24f440ecacdf80930fc0a8957696e599c420cf837d2 - md5: 99c2b59c3b35010a778a1b87c04a6242 - depends: - - vtk-base 9.3.1 qt_py312hfd5146d_209 - - vtk-io-ffmpeg 9.3.1 qt_py312h98fac4b_209 - license: BSD-3-Clause - license_family: BSD - size: 23086 - timestamp: 1728209135633 -- kind: conda - name: vtk - version: 9.3.1 - build: qt_py312h8d5bf7a_209 - build_number: 209 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/vtk-9.3.1-qt_py312h8d5bf7a_209.conda - sha256: b1e3cec3215c04bf3bd4072c837ca960ee21bd765c4c324cdad356707e652e13 - md5: 0bd6884908c2b85fd19f77dc5a077bcc - depends: - - vtk-base 9.3.1 qt_py312h679c1d7_209 - - vtk-io-ffmpeg 9.3.1 qt_py312hf99a90b_209 - license: BSD-3-Clause - license_family: BSD - size: 23224 - timestamp: 1728213890380 -- kind: conda - name: vtk - version: 9.3.1 - build: qt_py312hbfbf3b8_209 - build_number: 209 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-9.3.1-qt_py312hbfbf3b8_209.conda - sha256: 66e881f7076b1fa7c74560dc3f14c724687115d018b1c5be8b2bd1854572de58 - md5: 354adaf21f5ed76b1c81538bb9523731 - depends: - - vtk-base 9.3.1 qt_py312hc7336a2_209 - - vtk-io-ffmpeg 9.3.1 qt_py312hf51569e_209 - license: BSD-3-Clause - license_family: BSD - size: 23296 - timestamp: 1728216891060 -- kind: conda - name: vtk - version: 9.3.1 - build: qt_py312he5e186c_209 - build_number: 209 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/vtk-9.3.1-qt_py312he5e186c_209.conda - sha256: 3df9725ff352d06d163e84bffb1afc501469960be872ad706ebcc9a72736886d - md5: c6aba64b606a07b20b345b1e4146494b - depends: - - vtk-base 9.3.1 qt_py312hc73667e_209 - - vtk-io-ffmpeg 9.3.1 qt_py312hc8241c7_209 - license: BSD-3-Clause - license_family: BSD - size: 23210 - timestamp: 1728211068636 -- kind: conda - name: vtk-base - version: 9.3.1 - build: qt_py312h44e7938_209 - build_number: 209 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/vtk-base-9.3.1-qt_py312h44e7938_209.conda - sha256: f363ec7dabfd8be3d3d40ac0b0e9f091efd6f2238004e7dfe538f962c676e18f - md5: d14ebe8928517da5eb33ffe8bab36573 + size: 23453 + timestamp: 1728222666844 +- conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.3.1-qt_py313h4f3260d_211.conda + sha256: e3439db005c1183eb6d64396bc7fd62fe0b616092bf1f9e57eb569d94d24d090 + md5: dcbf00934284d28c391e047eb6a7267d depends: + - __glibc >=2.17,<3.0.a0 - double-conversion >=3.3.0,<3.4.0a0 - - eigen - - expat - - ffmpeg >=7.1.0,<8.0a0 - freetype >=2.12.1,<3.0a0 - gl2ps >=1.4.2,<1.4.3.0a0 - glew >=2.1.0,<2.2.0a0 - hdf5 >=1.14.4,<1.14.5.0a0 - jsoncpp >=1.9.6,<1.9.7.0a0 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libgl >=1.7.0,<2.0a0 + - libglvnd >=1.7.0,<2.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 - libnetcdf >=4.9.2,<4.9.3.0a0 - libogg >=1.3.5,<1.4.0a0 - libpng >=1.6.44,<1.7.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libsqlite >=3.47.2,<4.0a0 + - libstdcxx >=13 - libtheora >=1.1.1,<1.2.0a0 - libtiff >=4.7.0,<4.8.0a0 - - libxml2 >=2.12.7,<3.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcb >=1.17.0,<2.0a0 + - libxml2 >=2.13.5,<3.0a0 - libzlib >=1.3.1,<2.0a0 - loguru - lz4-c >=1.9.3,<1.10.0a0 - nlohmann_json - numpy - - proj >=9.5.0,<9.6.0a0 + - proj >=9.5.1,<9.6.0a0 - pugixml >=1.14,<1.15.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 - qt6-main >=6.7.3,<6.8.0a0 - - sqlite - tbb >=2021.13.0 - - tbb-devel - - ucrt >=10.0.20348.0 + - tk >=8.6.13,<8.7.0a0 - utfcpp - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - wslink - - zlib + - xorg-libice >=1.1.2,<2.0a0 + - xorg-libsm >=1.2.5,<2.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxau >=1.0.12,<2.0a0 + - xorg-libxdamage >=1.1.6,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + - xorg-libxt >=1.3.1,<2.0a0 + - xorg-libxxf86vm >=1.1.6,<2.0a0 constrains: - libboost_headers - paraview ==9999999999 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 33640598 - timestamp: 1728220616890 -- kind: conda - name: vtk-base - version: 9.3.1 - build: qt_py312h679c1d7_209 - build_number: 209 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/vtk-base-9.3.1-qt_py312h679c1d7_209.conda - sha256: 899eb8c18b57c5ac42bdf462a594837f2cdccce10d3face5cab767a24d44c63d - md5: a06f56bc999e607e8c2fac1fc3f3450f + size: 46539058 + timestamp: 1734568239631 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-base-9.3.1-qt_py313h60ad838_212.conda + sha256: 5c1f08751400d1dad718c7ba5e039cb56adc5fb14e9dd06eaee51f5c9f172a8c + md5: 23b18a28f71486764ea9e406f3859232 depends: - - __osx >=11.0 - double-conversion >=3.3.0,<3.4.0a0 - - eigen - - expat - freetype >=2.12.1,<3.0a0 - gl2ps >=1.4.2,<1.4.3.0a0 - glew >=2.1.0,<2.2.0a0 - hdf5 >=1.14.4,<1.14.5.0a0 - jsoncpp >=1.9.6,<1.9.7.0a0 - - libcxx >=17 - - libexpat >=2.6.3,<3.0a0 + - libexpat >=2.6.4,<3.0a0 + - libgcc >=13 + - libgl >=1.7.0,<2.0a0 + - libglvnd >=1.7.0,<2.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 - libnetcdf >=4.9.2,<4.9.3.0a0 - libogg >=1.3.5,<1.4.0a0 - libpng >=1.6.44,<1.7.0a0 - - libsqlite >=3.46.1,<4.0a0 + - libsqlite >=3.47.2,<4.0a0 + - libstdcxx >=13 - libtheora >=1.1.1,<1.2.0a0 - libtiff >=4.7.0,<4.8.0a0 - - libxml2 >=2.12.7,<3.0a0 + - libuuid >=2.38.1,<3.0a0 + - libxcb >=1.17.0,<2.0a0 + - libxml2 >=2.13.5,<3.0a0 - libzlib >=1.3.1,<2.0a0 - loguru - lz4-c >=1.9.3,<1.10.0a0 - nlohmann_json - numpy - - proj >=9.5.0,<9.6.0a0 + - proj >=9.5.1,<9.6.0a0 - pugixml >=1.14,<1.15.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 - qt6-main >=6.7.3,<6.8.0a0 - - sqlite - tbb >=2021.13.0 - - tbb-devel - tk >=8.6.13,<8.7.0a0 - utfcpp - wslink - - zlib + - xorg-libice >=1.1.2,<2.0a0 + - xorg-libsm >=1.2.5,<2.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxau >=1.0.12,<2.0a0 + - xorg-libxdamage >=1.1.6,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + - xorg-libxt >=1.3.1,<2.0a0 + - xorg-libxxf86vm >=1.1.6,<2.0a0 constrains: - - libboost_headers - paraview ==9999999999 + - libboost_headers + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 34598480 - timestamp: 1728213794188 -- kind: conda - name: vtk-base - version: 9.3.1 - build: qt_py312hc7336a2_209 - build_number: 209 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-base-9.3.1-qt_py312hc7336a2_209.conda - sha256: fba059d914838487c36614da6c98d58b9ce60acaab28915fe792256e3a1cba3e - md5: 75b61d63b7ed6a377ba486cfd33a93b1 + size: 43069689 + timestamp: 1734596779661 +- conda: https://conda.anaconda.org/conda-forge/osx-64/vtk-base-9.3.1-qt_py313he77fd1e_212.conda + sha256: 7f4507075fa5d8230ec7b2e9b079f8aebc0a00390f9ffaf23a108082c4b5246b + md5: bab7f4d26dde515307c24b99c05c763d depends: + - __osx >=10.13 - double-conversion >=3.3.0,<3.4.0a0 - - eigen - - expat - freetype >=2.12.1,<3.0a0 - gl2ps >=1.4.2,<1.4.3.0a0 - glew >=2.1.0,<2.2.0a0 - hdf5 >=1.14.4,<1.14.5.0a0 - jsoncpp >=1.9.6,<1.9.7.0a0 - - libexpat >=2.6.3,<3.0a0 - - libgcc >=13 + - libcxx >=18 + - libexpat >=2.6.4,<3.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 + - liblzma >=5.6.3,<6.0a0 - libnetcdf >=4.9.2,<4.9.3.0a0 - libogg >=1.3.5,<1.4.0a0 - libpng >=1.6.44,<1.7.0a0 - - libsqlite >=3.46.1,<4.0a0 - - libstdcxx >=13 + - libsqlite >=3.47.2,<4.0a0 - libtheora >=1.1.1,<1.2.0a0 - libtiff >=4.7.0,<4.8.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcb >=1.17.0,<2.0a0 - - libxml2 >=2.12.7,<3.0a0 + - libxml2 >=2.13.5,<3.0a0 - libzlib >=1.3.1,<2.0a0 - loguru - lz4-c >=1.9.3,<1.10.0a0 - nlohmann_json - numpy - - proj >=9.5.0,<9.6.0a0 + - proj >=9.5.1,<9.6.0a0 - pugixml >=1.14,<1.15.0a0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 - qt6-main >=6.7.3,<6.8.0a0 - - sqlite - tbb >=2021.13.0 - - tbb-devel - tk >=8.6.13,<8.7.0a0 - utfcpp - wslink - - xorg-libice >=1.1.1,<2.0a0 - - xorg-libsm >=1.2.4,<2.0a0 - - xorg-libx11 >=1.8.9,<2.0a0 - - xorg-libxau >=1.0.11,<2.0a0 - - xorg-libxdamage >=1.1.6,<2.0a0 - - xorg-libxext >=1.3.6,<2.0a0 - - xorg-libxfixes >=6.0.1,<7.0a0 - - xorg-libxt >=1.3.0,<2.0a0 - - xorg-libxxf86vm >=1.1.5,<2.0a0 - - zlib constrains: - paraview ==9999999999 - libboost_headers + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 43091968 - timestamp: 1728216764685 -- kind: conda - name: vtk-base - version: 9.3.1 - build: qt_py312hc73667e_209 - build_number: 209 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/vtk-base-9.3.1-qt_py312hc73667e_209.conda - sha256: 872e10f79f8dcdfa3305093be55c712184d290aefb2ad346b8358fcfe7bcba08 - md5: e2967eddf4ea06a8b645da9967f370be + size: 36725758 + timestamp: 1734587286334 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/vtk-base-9.3.1-qt_py313hc8fffa2_209.conda + sha256: ce00e993dfb603253398842595ff186a3d55cce43c96912d5dcd303ef5a8391f + md5: 980c7437d1a5ff448411e9a37f7cbd3b depends: - - __glibc >=2.17,<3.0.a0 + - __osx >=11.0 - double-conversion >=3.3.0,<3.4.0a0 - eigen - expat @@ -23499,18 +17057,15 @@ packages: - glew >=2.1.0,<2.2.0a0 - hdf5 >=1.14.4,<1.14.5.0a0 - jsoncpp >=1.9.6,<1.9.7.0a0 + - libcxx >=17 - libexpat >=2.6.3,<3.0a0 - - libgcc >=13 - libjpeg-turbo >=3.0.0,<4.0a0 - libnetcdf >=4.9.2,<4.9.3.0a0 - libogg >=1.3.5,<1.4.0a0 - libpng >=1.6.44,<1.7.0a0 - libsqlite >=3.46.1,<4.0a0 - - libstdcxx >=13 - libtheora >=1.1.1,<1.2.0a0 - libtiff >=4.7.0,<4.8.0a0 - - libuuid >=2.38.1,<3.0a0 - - libxcb >=1.17.0,<2.0a0 - libxml2 >=2.12.7,<3.0a0 - libzlib >=1.3.1,<2.0a0 - loguru @@ -23519,8 +17074,9 @@ packages: - numpy - proj >=9.5.0,<9.6.0a0 - pugixml >=1.14,<1.15.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13.0rc3,<3.14.0a0 + - python >=3.13.0rc3,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 - qt6-main >=6.7.3,<6.8.0a0 - sqlite - tbb >=2021.13.0 @@ -23528,43 +17084,29 @@ packages: - tk >=8.6.13,<8.7.0a0 - utfcpp - wslink - - xorg-libice >=1.1.1,<2.0a0 - - xorg-libsm >=1.2.4,<2.0a0 - - xorg-libx11 >=1.8.10,<2.0a0 - - xorg-libxau >=1.0.11,<2.0a0 - - xorg-libxdamage >=1.1.6,<2.0a0 - - xorg-libxext >=1.3.6,<2.0a0 - - xorg-libxfixes >=6.0.1,<7.0a0 - - xorg-libxt >=1.3.0,<2.0a0 - - xorg-libxxf86vm >=1.1.5,<2.0a0 - zlib constrains: - libboost_headers - paraview ==9999999999 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 46554009 - timestamp: 1728210911160 -- kind: conda - name: vtk-base - version: 9.3.1 - build: qt_py312hfd5146d_209 - build_number: 209 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/vtk-base-9.3.1-qt_py312hfd5146d_209.conda - sha256: 7238f2c36c3a65e1eb5f18a6b1da8009a634779035de323de63b5b7b4b27c2c0 - md5: b51e75d9ac3041abb005e1ea33dc5b12 + size: 34693744 + timestamp: 1728214423504 +- conda: https://conda.anaconda.org/conda-forge/win-64/vtk-base-9.3.1-qt_py313hdcf24be_209.conda + sha256: bb141c4174420e86a5da53764eef521b4084056b8925b3e8160f6fa926aac4c3 + md5: 21dfe0b0c5f1dc07b6037081470d82aa depends: - - __osx >=10.13 - double-conversion >=3.3.0,<3.4.0a0 - eigen - expat + - ffmpeg >=7.1.0,<8.0a0 - freetype >=2.12.1,<3.0a0 - gl2ps >=1.4.2,<1.4.3.0a0 - glew >=2.1.0,<2.2.0a0 - hdf5 >=1.14.4,<1.14.5.0a0 - jsoncpp >=1.9.6,<1.9.7.0a0 - - libcxx >=17 - libexpat >=2.6.3,<3.0a0 - libjpeg-turbo >=3.0.0,<4.0a0 - libnetcdf >=4.9.2,<4.9.3.0a0 @@ -23581,93 +17123,76 @@ packages: - numpy - proj >=9.5.0,<9.6.0a0 - pugixml >=1.14,<1.15.0a0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - python >=3.13.0rc3,<3.14.0a0 + - python_abi 3.13.* *_cp313 - qt6-main >=6.7.3,<6.8.0a0 - sqlite - tbb >=2021.13.0 - tbb-devel - - tk >=8.6.13,<8.7.0a0 + - ucrt >=10.0.20348.0 - utfcpp + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 - wslink - zlib constrains: - - libboost_headers - paraview ==9999999999 + - libboost_headers + arch: x86_64 + platform: win + license: BSD-3-Clause + license_family: BSD + size: 33611185 + timestamp: 1728222515511 +- conda: https://conda.anaconda.org/conda-forge/linux-64/vtk-io-ffmpeg-9.3.1-qt_py313h3d4e8c9_211.conda + sha256: 9c3a50e326d85c3442d65edb6c1904c479bcbf4a4035b6e906369a12ab544600 + md5: 84ef3a1fff42cf4f2dc91a1c07fdfdca + depends: + - ffmpeg >=7.1.0,<8.0a0 + - vtk-base 9.3.1 qt_py313h4f3260d_211 + arch: x86_64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 81285 + timestamp: 1734568443558 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-io-ffmpeg-9.3.1-qt_py313h502ffb0_212.conda + sha256: 4ed07b7cc3cf56992f4a4d7e871ca2fdc63f7999d9c112e8c2e20836dfa0b68a + md5: fff99ee337b0aec170e6aa0edfa46034 + depends: + - ffmpeg >=7.1.0,<8.0a0 + - vtk-base 9.3.1 qt_py313h60ad838_212 + arch: aarch64 + platform: linux + license: BSD-3-Clause + license_family: BSD + size: 81030 + timestamp: 1734596961483 +- conda: https://conda.anaconda.org/conda-forge/osx-64/vtk-io-ffmpeg-9.3.1-qt_py313h6e7d914_212.conda + sha256: 88d448043c9f6fe63367178c658a3080749777927dccbaed31cc01e7c7e41a5d + md5: 025e878a9ddcecf2e7924c65eef0dd35 + depends: + - ffmpeg >=7.1.0,<8.0a0 + - vtk-base 9.3.1 qt_py313he77fd1e_212 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 36622552 - timestamp: 1728209037567 -- kind: conda - name: vtk-io-ffmpeg - version: 9.3.1 - build: qt_py312h98fac4b_209 - build_number: 209 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/vtk-io-ffmpeg-9.3.1-qt_py312h98fac4b_209.conda - sha256: b568d87890ac6a2cd7457291bdf2d8729913d1600e5b7690c00d039475554479 - md5: 52a5fe5bd553f2ac1b9c3f14e9eaa314 - depends: - - ffmpeg >=6.1.2,<7.0a0 - - vtk-base 9.3.1 qt_py312hfd5146d_209 - license: BSD-3-Clause - license_family: BSD - size: 70648 - timestamp: 1728209132800 -- kind: conda - name: vtk-io-ffmpeg - version: 9.3.1 - build: qt_py312hc8241c7_209 - build_number: 209 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/vtk-io-ffmpeg-9.3.1-qt_py312hc8241c7_209.conda - sha256: 63220461882a0693797e1d3b1012654a8959a4689fc8401eb6e8088e8344b92c - md5: 1354402d09a8614821d6d3c13d826863 - depends: - - ffmpeg >=6.1.2,<7.0a0 - - vtk-base 9.3.1 qt_py312hc73667e_209 - license: BSD-3-Clause - license_family: BSD - size: 81237 - timestamp: 1728211067908 -- kind: conda - name: vtk-io-ffmpeg - version: 9.3.1 - build: qt_py312hf51569e_209 - build_number: 209 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/vtk-io-ffmpeg-9.3.1-qt_py312hf51569e_209.conda - sha256: b28f9357ff5e4db38bdc3f7ceb7d1113071d3171472315d23091cd3d12815b06 - md5: d88278094c98cefcd2cc53a09641f179 - depends: - - ffmpeg >=6.1.2,<7.0a0 - - vtk-base 9.3.1 qt_py312hc7336a2_209 - license: BSD-3-Clause - license_family: BSD - size: 82057 - timestamp: 1728216890470 -- kind: conda - name: vtk-io-ffmpeg - version: 9.3.1 - build: qt_py312hf99a90b_209 - build_number: 209 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/vtk-io-ffmpeg-9.3.1-qt_py312hf99a90b_209.conda - sha256: 7402d29bd018e879073ce6b6eb3585882d0892ab351ab13e4fed6733e7459642 - md5: 315d5caf5dbf1002be7ef40070ac9440 + size: 70768 + timestamp: 1734587410735 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/vtk-io-ffmpeg-9.3.1-qt_py313hf99a90b_209.conda + sha256: deefdd8f39415b2e0a22b1ffb253588c511d78cc19a815fed969e2fce74ca26e + md5: c4a8bdce1f4048146d56307c7c77b4d0 depends: - ffmpeg >=7.1.0,<8.0a0 - - vtk-base 9.3.1 qt_py312h679c1d7_209 + - vtk-base 9.3.1 qt_py313hc8fffa2_209 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD - size: 71275 - timestamp: 1728213888280 -- kind: conda - name: wayland - version: 1.23.1 - build: h3e06ad9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda + size: 71235 + timestamp: 1728214519029 +- conda: https://conda.anaconda.org/conda-forge/linux-64/wayland-1.23.1-h3e06ad9_0.conda sha256: 0884b2023a32d2620192cf2e2fc6784b8d1e31cf9f137e49e00802d4daf7d1c1 md5: 0a732427643ae5e0486a727927791da1 depends: @@ -23676,16 +17201,13 @@ packages: - libffi >=3.4,<4.0a0 - libgcc-ng >=13 - libstdcxx-ng >=13 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 321561 timestamp: 1724530461598 -- kind: conda - name: wayland - version: 1.23.1 - build: h698ed42_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/wayland-1.23.1-h698ed42_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/wayland-1.23.1-h698ed42_0.conda sha256: 71c591803459e1f68f9ad206a4f2fa3971147502bad8791e94fd18d8362f8ce6 md5: 2661f9252065051914f1cdf5835e7430 depends: @@ -23693,17 +17215,13 @@ packages: - libffi >=3.4,<4.0a0 - libgcc-ng >=13 - libstdcxx-ng >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 324815 timestamp: 1724530528414 -- kind: conda - name: wayland-protocols - version: '1.37' - build: hd8ed1ab_0 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/wayland-protocols-1.37-hd8ed1ab_0.conda +- conda: https://conda.anaconda.org/conda-forge/noarch/wayland-protocols-1.37-hd8ed1ab_0.conda sha256: f6cac1efd4d2a6e30c1671f0566d4e6ac3fe2dc34c9ff7f309bbbc916520ebcf md5: 73ec79a77d31eb7e4a3276cd246b776c depends: @@ -23712,62 +17230,16 @@ packages: license_family: MIT size: 95953 timestamp: 1725657284103 -- kind: conda - name: wheel - version: 0.45.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/wheel-0.45.1-pyhd8ed1ab_1.conda - sha256: 1b34021e815ff89a4d902d879c3bd2040bc1bd6169b32e9427497fa05c55f1ce - md5: 75cb7132eb58d97896e173ef12ac9986 - depends: - - python >=3.9 - license: MIT - license_family: MIT - size: 62931 - timestamp: 1733130309598 -- kind: conda - name: win32_setctime - version: 1.1.0 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/win32_setctime-1.1.0-pyhd8ed1ab_1.conda - sha256: 6e5a606c9a30b71f4027f479c79a836fef47166f3567281a6d40607cbc753e00 - md5: 8f74f61d6f2a1a107aa3f58b3b23f670 +- conda: https://conda.anaconda.org/conda-forge/noarch/win32_setctime-1.2.0-pyhd8ed1ab_0.conda + sha256: d7b3128166949d462133d7a86fd8a8d80224dd2ce49cfbdcde9e4b3f8b67bbf2 + md5: e79f83003ee3dba79bf795fcd1bfcc89 depends: - python >=3.9 license: MIT license_family: MIT - size: 9386 - timestamp: 1733125195840 -- kind: conda - name: win_inet_pton - version: 1.1.0 - build: pyh7428d3b_8 - build_number: 8 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/win_inet_pton-1.1.0-pyh7428d3b_8.conda - sha256: 93807369ab91f230cf9e6e2a237eaa812492fe00face5b38068735858fba954f - md5: 46e441ba871f524e2b067929da3051c2 - depends: - - __win - - python >=3.9 - license: LicenseRef-Public-Domain - size: 9555 - timestamp: 1733130678956 -- kind: conda - name: wslink - version: 2.2.1 - build: pyhd8ed1ab_1 - build_number: 1 - subdir: noarch - noarch: python - url: https://conda.anaconda.org/conda-forge/noarch/wslink-2.2.1-pyhd8ed1ab_1.conda + size: 9751 + timestamp: 1733752552137 +- conda: https://conda.anaconda.org/conda-forge/noarch/wslink-2.2.1-pyhd8ed1ab_1.conda sha256: c5710a9637faf9c1391741f5bbe3445745f758f01575517c6cb403cd2f55f82b md5: af249fc92d1344913ff6c811f5b9096b depends: @@ -23778,194 +17250,157 @@ packages: license_family: BSD size: 34575 timestamp: 1733083632985 -- kind: conda - name: x264 - version: 1!164.3095 - build: h166bdaf_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/x264-1!164.3095-h166bdaf_2.tar.bz2 sha256: 175315eb3d6ea1f64a6ce470be00fa2ee59980108f246d3072ab8b977cb048a5 md5: 6c99772d483f566d59e25037fea2c4b1 depends: - libgcc-ng >=12 + arch: x86_64 + platform: linux license: GPL-2.0-or-later license_family: GPL size: 897548 timestamp: 1660323080555 -- kind: conda - name: x264 - version: 1!164.3095 - build: h4e544f5_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/x264-1!164.3095-h4e544f5_2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/x264-1!164.3095-h4e544f5_2.tar.bz2 sha256: b48f150db8c052c197691c9d76f59e252d3a7f01de123753d51ebf2eed1cf057 md5: 0efaf807a0b5844ce5f605bd9b668281 depends: - libgcc-ng >=12 + arch: aarch64 + platform: linux license: GPL-2.0-or-later license_family: GPL size: 1000661 timestamp: 1660324722559 -- kind: conda - name: x264 - version: 1!164.3095 - build: h57fd34a_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/x264-1!164.3095-h57fd34a_2.tar.bz2 - sha256: debdf60bbcfa6a60201b12a1d53f36736821db281a28223a09e0685edcce105a - md5: b1f6dccde5d3a1f911960b6e567113ff - license: GPL-2.0-or-later - license_family: GPL - size: 717038 - timestamp: 1660323292329 -- kind: conda - name: x264 - version: 1!164.3095 - build: h775f41a_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/x264-1!164.3095-h775f41a_2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-64/x264-1!164.3095-h775f41a_2.tar.bz2 sha256: de611da29f4ed0733a330402e163f9260218e6ba6eae593a5f945827d0ee1069 md5: 23e9c3180e2c0f9449bb042914ec2200 + arch: x86_64 + platform: osx license: GPL-2.0-or-later license_family: GPL size: 937077 timestamp: 1660323305349 -- kind: conda - name: x264 - version: 1!164.3095 - build: h8ffe710_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/x264-1!164.3095-h8ffe710_2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/x264-1!164.3095-h57fd34a_2.tar.bz2 + sha256: debdf60bbcfa6a60201b12a1d53f36736821db281a28223a09e0685edcce105a + md5: b1f6dccde5d3a1f911960b6e567113ff + arch: arm64 + platform: osx + license: GPL-2.0-or-later + license_family: GPL + size: 717038 + timestamp: 1660323292329 +- conda: https://conda.anaconda.org/conda-forge/win-64/x264-1!164.3095-h8ffe710_2.tar.bz2 sha256: 97166b318f8c68ffe4d50b2f4bd36e415219eeaef233e7d41c54244dc6108249 md5: 19e39905184459760ccb8cf5c75f148b depends: - vc >=14.1,<15 - vs2015_runtime >=14.16.27033 + arch: x86_64 + platform: win license: GPL-2.0-or-later license_family: GPL size: 1041889 timestamp: 1660323726084 -- kind: conda - name: x265 - version: '3.5' - build: h2d74725_3 - build_number: 3 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/x265-3.5-h2d74725_3.tar.bz2 - sha256: 02b9874049112f2b7335c9a3e880ac05d99a08d9a98160c5a98898b2b3ac42b2 - md5: ca7129a334198f08347fb19ac98a2de9 - depends: - - vc >=14.1,<15 - - vs2015_runtime >=14.16.27033 - license: GPL-2.0-or-later - license_family: GPL - size: 5517425 - timestamp: 1646611941216 -- kind: conda - name: x265 - version: '3.5' - build: h924138e_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/x265-3.5-h924138e_3.tar.bz2 sha256: 76c7405bcf2af639971150f342550484efac18219c0203c5ee2e38b8956fe2a0 md5: e7f6ed84d4623d52ee581325c1587a6b depends: - libgcc-ng >=10.3.0 - libstdcxx-ng >=10.3.0 + arch: x86_64 + platform: linux license: GPL-2.0-or-later license_family: GPL size: 3357188 timestamp: 1646609687141 -- kind: conda - name: x265 - version: '3.5' - build: hbb4e6a2_3 - build_number: 3 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/x265-3.5-hbb4e6a2_3.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/x265-3.5-hdd96247_3.tar.bz2 + sha256: cb2227f2441499900bdc0168eb423d7b2056c8fd5a3541df4e2d05509a88c668 + md5: 786853760099c74a1d4f0da98dd67aea + depends: + - libgcc-ng >=10.3.0 + - libstdcxx-ng >=10.3.0 + arch: aarch64 + platform: linux + license: GPL-2.0-or-later + license_family: GPL + size: 1018181 + timestamp: 1646610147365 +- conda: https://conda.anaconda.org/conda-forge/osx-64/x265-3.5-hbb4e6a2_3.tar.bz2 sha256: 6b6a57710192764d0538f72ea1ccecf2c6174a092e0bc76d790f8ca36bbe90e4 md5: a3bf3e95b7795871a6734a784400fcea depends: - libcxx >=12.0.1 + arch: x86_64 + platform: osx license: GPL-2.0-or-later license_family: GPL size: 3433205 timestamp: 1646610148268 -- kind: conda - name: x265 - version: '3.5' - build: hbc6ce65_3 - build_number: 3 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/x265-3.5-hbc6ce65_3.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/x265-3.5-hbc6ce65_3.tar.bz2 sha256: 2fed6987dba7dee07bd9adc1a6f8e6c699efb851431bcb6ebad7de196e87841d md5: b1f7f2780feffe310b068c021e8ff9b2 depends: - libcxx >=12.0.1 + arch: arm64 + platform: osx license: GPL-2.0-or-later license_family: GPL size: 1832744 timestamp: 1646609481185 -- kind: conda - name: x265 - version: '3.5' - build: hdd96247_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/x265-3.5-hdd96247_3.tar.bz2 - sha256: cb2227f2441499900bdc0168eb423d7b2056c8fd5a3541df4e2d05509a88c668 - md5: 786853760099c74a1d4f0da98dd67aea +- conda: https://conda.anaconda.org/conda-forge/win-64/x265-3.5-h2d74725_3.tar.bz2 + sha256: 02b9874049112f2b7335c9a3e880ac05d99a08d9a98160c5a98898b2b3ac42b2 + md5: ca7129a334198f08347fb19ac98a2de9 depends: - - libgcc-ng >=10.3.0 - - libstdcxx-ng >=10.3.0 + - vc >=14.1,<15 + - vs2015_runtime >=14.16.27033 + arch: x86_64 + platform: win license: GPL-2.0-or-later license_family: GPL - size: 1018181 - timestamp: 1646610147365 -- kind: conda - name: xcb-util - version: 0.4.1 - build: h5c728e9_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-0.4.1-h5c728e9_2.conda + size: 5517425 + timestamp: 1646611941216 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-hb711507_2.conda + sha256: 416aa55d946ce4ab173ab338796564893a2f820e80e04e098ff00c25fb981263 + md5: 8637c3e5821654d0edf97e2b0404b443 + depends: + - libgcc-ng >=12 + - libxcb >=1.16,<2.0.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 19965 + timestamp: 1718843348208 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-0.4.1-h5c728e9_2.conda sha256: 59f586defd3c1295a32d8eb587036302ab254300d88e605354e8eaa4a27563ec md5: b4cf8ba6cff9cdf1249bcfe1314222b0 depends: - libgcc-ng >=12 - libxcb >=1.16,<2.0.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 20597 timestamp: 1718844955591 -- kind: conda - name: xcb-util - version: 0.4.1 - build: hb711507_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-0.4.1-hb711507_2.conda - sha256: 416aa55d946ce4ab173ab338796564893a2f820e80e04e098ff00c25fb981263 - md5: 8637c3e5821654d0edf97e2b0404b443 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-cursor-0.1.5-hb9d3cd8_0.conda + sha256: c7b35db96f6e32a9e5346f97adc968ef2f33948e3d7084295baebc0e33abdd5b + md5: eb44b3b6deb1cab08d72cb61686fe64c depends: - - libgcc-ng >=12 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libxcb >=1.13 - libxcb >=1.16,<2.0.0a0 + - xcb-util-image >=0.4.0,<0.5.0a0 + - xcb-util-renderutil >=0.3.10,<0.4.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 19965 - timestamp: 1718843348208 -- kind: conda - name: xcb-util-cursor - version: 0.1.5 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-cursor-0.1.5-h86ecc28_0.conda + size: 20296 + timestamp: 1726125844850 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-cursor-0.1.5-h86ecc28_0.conda sha256: c2608dc625c7aacffff938813f985c5f21c6d8a4da3280d57b5287ba1b27ec21 md5: d6bb2038d26fa118d5cbc2761116f3e5 depends: @@ -23974,387 +17409,316 @@ packages: - libxcb >=1.16,<2.0.0a0 - xcb-util-image >=0.4.0,<0.5.0a0 - xcb-util-renderutil >=0.3.10,<0.4.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 21123 timestamp: 1726125922919 -- kind: conda - name: xcb-util-cursor - version: 0.1.5 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-cursor-0.1.5-hb9d3cd8_0.conda - sha256: c7b35db96f6e32a9e5346f97adc968ef2f33948e3d7084295baebc0e33abdd5b - md5: eb44b3b6deb1cab08d72cb61686fe64c +- conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-hb711507_2.conda + sha256: 94b12ff8b30260d9de4fd7a28cca12e028e572cbc504fd42aa2646ec4a5bded7 + md5: a0901183f08b6c7107aab109733a3c91 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libxcb >=1.13 + - libgcc-ng >=12 - libxcb >=1.16,<2.0.0a0 - - xcb-util-image >=0.4.0,<0.5.0a0 - - xcb-util-renderutil >=0.3.10,<0.4.0a0 + - xcb-util >=0.4.1,<0.5.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 20296 - timestamp: 1726125844850 -- kind: conda - name: xcb-util-image - version: 0.4.0 - build: h5c728e9_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-image-0.4.0-h5c728e9_2.conda + size: 24551 + timestamp: 1718880534789 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-image-0.4.0-h5c728e9_2.conda sha256: a43058edc001e8fb97f9b291028a6ca16a8969d9b56a998c7aecea083323ac97 md5: b82e5c78dbbfa931980e8bfe83bce913 depends: - libgcc-ng >=12 - libxcb >=1.16,<2.0.0a0 - xcb-util >=0.4.1,<0.5.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 24910 timestamp: 1718880504308 -- kind: conda - name: xcb-util-image - version: 0.4.0 - build: hb711507_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-image-0.4.0-hb711507_2.conda - sha256: 94b12ff8b30260d9de4fd7a28cca12e028e572cbc504fd42aa2646ec4a5bded7 - md5: a0901183f08b6c7107aab109733a3c91 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.1-hb711507_0.conda + sha256: 546e3ee01e95a4c884b6401284bb22da449a2f4daf508d038fdfa0712fe4cc69 + md5: ad748ccca349aec3e91743e08b5e2b50 depends: - libgcc-ng >=12 - libxcb >=1.16,<2.0.0a0 - - xcb-util >=0.4.1,<0.5.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 24551 - timestamp: 1718880534789 -- kind: conda - name: xcb-util-keysyms - version: 0.4.1 - build: h5c728e9_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-keysyms-0.4.1-h5c728e9_0.conda + size: 14314 + timestamp: 1718846569232 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-keysyms-0.4.1-h5c728e9_0.conda sha256: 9d92daa7feb0e14f81bf0d4b3f0b6ff1e8cec3ff514df8a0c06c4d49b518c315 md5: 57ca8564599ddf8b633c4ea6afee6f3a depends: - libgcc-ng >=12 - libxcb >=1.16,<2.0.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 14343 timestamp: 1718846624153 -- kind: conda - name: xcb-util-keysyms - version: 0.4.1 - build: hb711507_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-keysyms-0.4.1-hb711507_0.conda - sha256: 546e3ee01e95a4c884b6401284bb22da449a2f4daf508d038fdfa0712fe4cc69 - md5: ad748ccca349aec3e91743e08b5e2b50 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.10-hb711507_0.conda + sha256: 2d401dadc43855971ce008344a4b5bd804aca9487d8ebd83328592217daca3df + md5: 0e0cbe0564d03a99afd5fd7b362feecd depends: - libgcc-ng >=12 - libxcb >=1.16,<2.0.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 14314 - timestamp: 1718846569232 -- kind: conda - name: xcb-util-renderutil - version: 0.3.10 - build: h5c728e9_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-renderutil-0.3.10-h5c728e9_0.conda + size: 16978 + timestamp: 1718848865819 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-renderutil-0.3.10-h5c728e9_0.conda sha256: 5827f5617c9741599f72bb7f090726f89c6ef91e4bada621895fdc2bbadfb0f1 md5: 7beeda4223c5484ef72d89fb66b7e8c1 depends: - libgcc-ng >=12 - libxcb >=1.16,<2.0.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 18139 timestamp: 1718849914457 -- kind: conda - name: xcb-util-renderutil - version: 0.3.10 - build: hb711507_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-renderutil-0.3.10-hb711507_0.conda - sha256: 2d401dadc43855971ce008344a4b5bd804aca9487d8ebd83328592217daca3df - md5: 0e0cbe0564d03a99afd5fd7b362feecd +- conda: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.2-hb711507_0.conda + sha256: 31d44f297ad87a1e6510895740325a635dd204556aa7e079194a0034cdd7e66a + md5: 608e0ef8256b81d04456e8d211eee3e8 depends: - libgcc-ng >=12 - libxcb >=1.16,<2.0.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 16978 - timestamp: 1718848865819 -- kind: conda - name: xcb-util-wm - version: 0.4.2 - build: h5c728e9_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-wm-0.4.2-h5c728e9_0.conda + size: 51689 + timestamp: 1718844051451 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xcb-util-wm-0.4.2-h5c728e9_0.conda sha256: 3f52cd8783e7d953c54266255fd11886c611c2620545eabc28ec8cf470ae8be7 md5: f14dcda6894722e421da2b7dcffb0b78 depends: - libgcc-ng >=12 - libxcb >=1.16,<2.0.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 50772 timestamp: 1718845072660 -- kind: conda - name: xcb-util-wm - version: 0.4.2 - build: hb711507_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xcb-util-wm-0.4.2-hb711507_0.conda - sha256: 31d44f297ad87a1e6510895740325a635dd204556aa7e079194a0034cdd7e66a - md5: 608e0ef8256b81d04456e8d211eee3e8 - depends: - - libgcc-ng >=12 - - libxcb >=1.16,<2.0.0a0 - license: MIT - license_family: MIT - size: 51689 - timestamp: 1718844051451 -- kind: conda - name: xerces-c - version: 3.3.0 - build: h595f43b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xerces-c-3.3.0-h595f43b_0.conda - sha256: 2e46a23e7763b750b074a85cf3df88c44261550306c501de4514d2ae9a4a2439 - md5: 58602537eb97764dfd262dfddd763cfe +- conda: https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.3.0-h988505b_0.conda + sha256: dbed30e56bea060c8b077773138f388144686c24793172ee3d39b69aa0628165 + md5: eeecd6ccca69409a39ac99721a72f387 depends: + - __glibc >=2.17,<3.0.a0 - icu >=75.1,<76.0a0 - libgcc >=13 - libnsl >=2.0.1,<2.1.0a0 - libstdcxx >=13 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 1629566 - timestamp: 1728976186820 -- kind: conda - name: xerces-c - version: 3.3.0 - build: h988505b_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xerces-c-3.3.0-h988505b_0.conda - sha256: dbed30e56bea060c8b077773138f388144686c24793172ee3d39b69aa0628165 - md5: eeecd6ccca69409a39ac99721a72f387 + size: 1637176 + timestamp: 1728975948928 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xerces-c-3.3.0-h595f43b_0.conda + sha256: 2e46a23e7763b750b074a85cf3df88c44261550306c501de4514d2ae9a4a2439 + md5: 58602537eb97764dfd262dfddd763cfe depends: - - __glibc >=2.17,<3.0.a0 - icu >=75.1,<76.0a0 - libgcc >=13 - libnsl >=2.0.1,<2.1.0a0 - libstdcxx >=13 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache - size: 1637176 - timestamp: 1728975948928 -- kind: conda - name: xerces-c - version: 3.3.0 - build: hd0321b6_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/xerces-c-3.3.0-hd0321b6_0.conda + size: 1629566 + timestamp: 1728976186820 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xerces-c-3.3.0-hd0321b6_0.conda sha256: 8769f3f08e78f26fdf6f530efc84a48d05ce7d8dbde405bd81d87e5dc43cb2d9 md5: 3ad24748832587b79c7a1f96ca874376 depends: - __osx >=10.13 - icu >=75.1,<76.0a0 - libcxx >=17 + arch: x86_64 + platform: osx license: Apache-2.0 license_family: Apache size: 1353665 timestamp: 1728976213621 -- kind: conda - name: xerces-c - version: 3.3.0 - build: hd62221f_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xerces-c-3.3.0-hd62221f_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xerces-c-3.3.0-hd62221f_0.conda sha256: 54e36cb8172675de7f8ce39b5914de602b860c1febb1770b758f0f220836f41e md5: 619c817c693a09599ecb7e864d538f63 depends: - __osx >=11.0 - icu >=75.1,<76.0a0 - libcxx >=17 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache size: 1277136 timestamp: 1728976036185 -- kind: conda - name: xerces-c - version: 3.3.0 - build: he0c23c2_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/xerces-c-3.3.0-he0c23c2_0.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/xerces-c-3.3.0-he0c23c2_0.conda sha256: bba9bc42593fc8e1da32bc8f810c305ab3fd230689c41b59e6fe77ab79cbe7d7 md5: 9c600d9aaba64595d0c3561f1b9d700b depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: Apache-2.0 license_family: Apache size: 3560268 timestamp: 1728976534703 -- kind: conda - name: xkeyboard-config - version: '2.43' - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xkeyboard-config-2.43-h86ecc28_0.conda - sha256: b3f09cc99b6b7707aa8812bbc7556fd431999ad3a48292e4ff82335b5fda976c - md5: a809b8e3776fbc05696c82f8cf6f5a92 - depends: - - libgcc >=13 - - xorg-libx11 >=1.8.9,<2.0a0 - license: MIT - license_family: MIT - size: 391011 - timestamp: 1727840308426 -- kind: conda - name: xkeyboard-config - version: '2.43' - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.43-hb9d3cd8_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xkeyboard-config-2.43-hb9d3cd8_0.conda sha256: 0d89b5873515a1f05d311f37ea4e087bbccc0418afa38f2f6189e97280db3179 md5: f725c7425d6d7c15e31f3b99a88ea02f depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 389475 timestamp: 1727840188958 -- kind: conda - name: xorg-kbproto - version: 1.0.7 - build: hcd874cb_1002 - build_number: 1002 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/xorg-kbproto-1.0.7-hcd874cb_1002.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xkeyboard-config-2.43-h86ecc28_0.conda + sha256: b3f09cc99b6b7707aa8812bbc7556fd431999ad3a48292e4ff82335b5fda976c + md5: a809b8e3776fbc05696c82f8cf6f5a92 + depends: + - libgcc >=13 + - xorg-libx11 >=1.8.9,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 391011 + timestamp: 1727840308426 +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-kbproto-1.0.7-hcd874cb_1002.tar.bz2 sha256: 5b16e1ca1ecc0d2907f236bc4d8e6ecfd8417db013c862a01afb7f9d78e48c09 md5: 8d11c1dac4756ca57e78c1bfe173bba4 depends: - m2w64-gcc-libs + arch: x86_64 + platform: win license: MIT license_family: MIT size: 28166 timestamp: 1610028297505 -- kind: conda - name: xorg-libice - version: 1.1.1 - build: h57736b2_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.1-h57736b2_1.conda - sha256: 525f197136d0c136dcba68b16d8f3636f27be111d677b2a06d8b99cf3f45ba4a - md5: 99a9c8245a1cc6dacd292ffeca39425f - depends: - - libgcc >=13 - license: MIT - license_family: MIT - size: 60151 - timestamp: 1727533134400 -- kind: conda - name: xorg-libice - version: 1.1.1 - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.1-hb9d3cd8_1.conda - sha256: ec276da68d1c4a3d34a63195b35ca5b248d4aff0812464dcd843d74649b5cec4 - md5: 19608a9656912805b2b9a2f6bd257b04 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libice-1.1.2-hb9d3cd8_0.conda + sha256: c12396aabb21244c212e488bbdc4abcdef0b7404b15761d9329f5a4a39113c4b + md5: fb901ff28063514abb6046c9ec2c4a45 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 58628 + timestamp: 1734227592886 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libice-1.1.2-h86ecc28_0.conda + sha256: a2ba1864403c7eb4194dacbfe2777acf3d596feae43aada8d1b478617ce45031 + md5: c8d8ec3e00cd0fd8a231789b91a7c5b7 + depends: + - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 58159 - timestamp: 1727531850109 -- kind: conda - name: xorg-libice - version: 1.1.1 - build: hcd874cb_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.1-hcd874cb_0.conda + size: 60433 + timestamp: 1734229908988 +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libice-1.1.1-hcd874cb_0.conda sha256: 353e07e311eb10e934f03e0123d0f05d9b3770a70b0c3993e6d11cf74d85689f md5: 5271e3af4791170e2c55d02818366916 depends: - m2w64-gcc-libs - m2w64-gcc-libs-core - xorg-libx11 >=1.8.4,<2.0a0 + arch: x86_64 + platform: win license: MIT license_family: MIT size: 158086 timestamp: 1685308072189 -- kind: conda - name: xorg-libsm - version: 1.2.4 - build: hbac51e1_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.4-hbac51e1_1.conda - sha256: 3d3c78a2e2a915d96b8bf8a670ba91e5abba50f55dc3ff699d345c958118e94c - md5: 18655ac9fc6624db89b33a89fed51c5f +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.5-he73a12e_0.conda + sha256: 760f43df6c2ce8cbbbcb8f2f3b7fc0f306716c011e28d1d340f3dfa8ccf29185 + md5: 4c3e9fab69804ec6077697922d70c6e2 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libuuid >=2.38.1,<3.0a0 + - xorg-libice >=1.1.2,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 27198 + timestamp: 1734229639785 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libsm-1.2.5-h0808dbd_0.conda + sha256: 2749a32a00ccd8feaab6039d7848ed875880c13d3b2601afd1788600ce5f9075 + md5: 3983c253f53f67a9d8710fc96646950f depends: - libgcc >=13 - libuuid >=2.38.1,<3.0a0 - xorg-libice >=1.1.1,<2.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 28357 - timestamp: 1727635998392 -- kind: conda - name: xorg-libsm - version: 1.2.4 - build: hcd874cb_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.4-hcd874cb_0.conda + size: 28061 + timestamp: 1734232077988 +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libsm-1.2.4-hcd874cb_0.conda sha256: 3a8cc151142c379d3ec3ec4420395d3a273873d3a45a94cd3038d143f5a519e8 md5: 25926681339df15918243d9a7cec25a1 depends: - m2w64-gcc-libs - m2w64-gcc-libs-core - xorg-libice >=1.1.1,<2.0a0 + arch: x86_64 + platform: win license: MIT license_family: MIT size: 86397 timestamp: 1685454296879 -- kind: conda - name: xorg-libsm - version: 1.2.4 - build: he73a12e_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libsm-1.2.4-he73a12e_1.conda - sha256: 70e903370977d44c9120a5641ab563887bd48446e9ef6fc2a3f5f60531c2cd6c - md5: 05a8ea5f446de33006171a7afe6ae857 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_1.conda + sha256: f53994d54f0604df881c4e984279b3cf6a1648a22d4b2113e2c89829968784c9 + md5: 125f34a17d7b4bea418a83904ea82ea6 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libuuid >=2.38.1,<3.0a0 - - xorg-libice >=1.1.1,<2.0a0 + - libxcb >=1.17.0,<2.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 27516 - timestamp: 1727634669421 -- kind: conda - name: xorg-libx11 - version: 1.8.9 - build: h0076a8d_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.9-h0076a8d_1.conda + size: 837524 + timestamp: 1733324962639 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.10-hca56bd8_1.conda + sha256: 5604f295906dfc496a4590e8ec19f775ccb40c5d503e6dfbac0781b5446b5391 + md5: 6e3e980940b26a060e553266ae0181a9 + depends: + - libgcc >=13 + - libxcb >=1.17.0,<2.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 858427 + timestamp: 1733325062374 +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libx11-1.8.9-h0076a8d_1.conda sha256: c378304044321e74c6acd483674f404864a229ab2a8841bf9515bc1a30783e99 md5: 0296a4de2235cad9ad3112134f8e4519 depends: @@ -24364,161 +17728,112 @@ packages: - xorg-kbproto - xorg-xextproto >=7.3.0,<8.0a0 - xorg-xproto + arch: x86_64 + platform: win license: MIT license_family: MIT size: 814589 timestamp: 1718847832308 -- kind: conda - name: xorg-libx11 - version: 1.8.9 - build: he755bbd_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libx11-1.8.9-he755bbd_2.conda - sha256: bcd9ebdd7ca25d8ab1eb4f3f919113e264a8ad84fa713c48e737e9167a82fb4b - md5: 7acc45f80415e6ec352b729105dc0375 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.12-hb9d3cd8_0.conda + sha256: ed10c9283974d311855ae08a16dfd7e56241fac632aec3b92e3cfe73cff31038 + md5: f6ebe2cb3f82ba6c057dde5d9debe4f7 depends: + - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libxcb >=1.17.0,<2.0a0 - - xorg-xorgproto + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 863528 - timestamp: 1727352755656 -- kind: conda - name: xorg-libx11 - version: 1.8.10 - build: h4f16b4b_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libx11-1.8.10-h4f16b4b_0.conda - sha256: c4650634607864630fb03696474a0535f6fce5fda7d81a6462346e071b53dfa7 - md5: 0b666058a179b744a622d0a4a0c56353 + size: 14780 + timestamp: 1734229004433 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.12-h86ecc28_0.conda + sha256: 7829a0019b99ba462aece7592d2d7f42e12d12ccd3b9614e529de6ddba453685 + md5: d5397424399a66d33c80b1f2345a36a6 depends: - - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - libxcb >=1.17.0,<2.0a0 - - xorg-xorgproto + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 838308 - timestamp: 1727356837875 -- kind: conda - name: xorg-libxau - version: 1.0.11 - build: h00291cd_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.11-h00291cd_1.conda - sha256: 96177823ec38336b0f4b7e7c2413da61f8d008d800cc4a5b8ad21f9128fb7de0 - md5: c6cc91149a08402bbb313c5dc0142567 + size: 15873 + timestamp: 1734230458294 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxau-1.0.12-h6e16a3a_0.conda + sha256: b4d2225135aa44e551576c4f3cf999b3252da6ffe7b92f0ad45bb44b887976fc + md5: 4cf40e60b444d56512a64f39d12c20bd depends: - __osx >=10.13 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 13176 - timestamp: 1727034772877 -- kind: conda - name: xorg-libxau - version: 1.0.11 - build: h86ecc28_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxau-1.0.11-h86ecc28_1.conda - sha256: a00c4c6054209c84fb460c5e4ae7193c335a9ee1851645c9ad59312438e853f7 - md5: c5f72a733c461aa7785518d29b997cc8 - depends: - - libgcc >=13 - license: MIT - license_family: MIT - size: 15690 - timestamp: 1727036097294 -- kind: conda - name: xorg-libxau - version: 1.0.11 - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxau-1.0.11-hb9d3cd8_1.conda - sha256: 532a046fee0b3a402db867b6ec55c84ba4cdedb91d817147c8feeae9766be3d6 - md5: 77cbc488235ebbaab2b6e912d3934bae + size: 13290 + timestamp: 1734229077182 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.12-h5505292_0.conda + sha256: f33e6f013fc36ebc200f09ddead83468544cb5c353a3b50499b07b8c34e28a8d + md5: 50901e0764b7701d8ed7343496f4f301 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT - size: 14679 - timestamp: 1727034741045 -- kind: conda - name: xorg-libxau - version: 1.0.11 - build: hcd874cb_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.11-hcd874cb_0.conda + size: 13593 + timestamp: 1734229104321 +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxau-1.0.11-hcd874cb_0.conda sha256: 8c5b976e3b36001bdefdb41fb70415f9c07eff631f1f0155f3225a7649320e77 md5: c46ba8712093cb0114404ae8a7582e1a depends: - m2w64-gcc-libs - m2w64-gcc-libs-core + arch: x86_64 + platform: win license: MIT license_family: MIT size: 51297 timestamp: 1684638355740 -- kind: conda - name: xorg-libxau - version: 1.0.11 - build: hd74edd7_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxau-1.0.11-hd74edd7_1.conda - sha256: 7113618021cf6c80831a429b2ebb9d639f3c43cf7fe2257d235dc6ae0ab43289 - md5: 7e0125f8fb619620a0011dc9297e2493 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda + sha256: 753f73e990c33366a91fd42cc17a3d19bb9444b9ca5ff983605fa9e953baf57f + md5: d3c295b50f092ab525ffe3c2aa4b7413 depends: - - __osx >=11.0 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 13515 - timestamp: 1727034783560 -- kind: conda - name: xorg-libxcomposite - version: 0.4.6 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxcomposite-0.4.6-h86ecc28_2.conda + size: 13603 + timestamp: 1727884600744 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxcomposite-0.4.6-h86ecc28_2.conda sha256: 0cb82160412adb6d83f03cf50e807a8e944682d556b2215992a6fbe9ced18bc0 md5: 86051eee0766c3542be24844a9c3cf36 depends: - libgcc >=13 - xorg-libx11 >=1.8.9,<2.0a0 - xorg-libxfixes >=6.0.1,<7.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 13982 timestamp: 1727884626338 -- kind: conda - name: xorg-libxcomposite - version: 0.4.6 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcomposite-0.4.6-hb9d3cd8_2.conda - sha256: 753f73e990c33366a91fd42cc17a3d19bb9444b9ca5ff983605fa9e953baf57f - md5: d3c295b50f092ab525ffe3c2aa4b7413 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda + sha256: 832f538ade441b1eee863c8c91af9e69b356cd3e9e1350fff4fe36cc573fc91a + md5: 2ccd714aa2242315acaf0a67faea780b depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - xorg-libx11 >=1.8.10,<2.0a0 - xorg-libxfixes >=6.0.1,<7.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 13603 - timestamp: 1727884600744 -- kind: conda - name: xorg-libxcursor - version: 1.2.3 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxcursor-1.2.3-h86ecc28_0.conda + size: 32533 + timestamp: 1730908305254 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxcursor-1.2.3-h86ecc28_0.conda sha256: c5d3692520762322a9598e7448492309f5ee9d8f3aff72d787cf06e77c42507f md5: f2054759c2203d12d0007005e1f1296d depends: @@ -24526,34 +17841,28 @@ packages: - xorg-libx11 >=1.8.9,<2.0a0 - xorg-libxfixes >=6.0.1,<7.0a0 - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 34596 timestamp: 1730908388714 -- kind: conda - name: xorg-libxcursor - version: 1.2.3 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxcursor-1.2.3-hb9d3cd8_0.conda - sha256: 832f538ade441b1eee863c8c91af9e69b356cd3e9e1350fff4fe36cc573fc91a - md5: 2ccd714aa2242315acaf0a67faea780b +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda + sha256: 43b9772fd6582bf401846642c4635c47a9b0e36ca08116b3ec3df36ab96e0ec0 + md5: b5fcc7172d22516e1f965490e65e33a4 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 - xorg-libxfixes >=6.0.1,<7.0a0 - - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 32533 - timestamp: 1730908305254 -- kind: conda - name: xorg-libxdamage - version: 1.1.6 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdamage-1.1.6-h86ecc28_0.conda + size: 13217 + timestamp: 1727891438799 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdamage-1.1.6-h86ecc28_0.conda sha256: 3afaa2f43eb4cb679fc0c3d9d7c50f0f2c80cc5d3df01d5d5fd60655d0bfa9be md5: d5773c4e4d64428d7ddaa01f6f845dc7 depends: @@ -24561,201 +17870,132 @@ packages: - xorg-libx11 >=1.8.9,<2.0a0 - xorg-libxext >=1.3.6,<2.0a0 - xorg-libxfixes >=6.0.1,<7.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 13794 timestamp: 1727891406431 -- kind: conda - name: xorg-libxdamage - version: 1.1.6 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdamage-1.1.6-hb9d3cd8_0.conda - sha256: 43b9772fd6582bf401846642c4635c47a9b0e36ca08116b3ec3df36ab96e0ec0 - md5: b5fcc7172d22516e1f965490e65e33a4 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda + sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee + md5: 8035c64cb77ed555e3f150b7b3972480 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - - xorg-libx11 >=1.8.10,<2.0a0 - - xorg-libxext >=1.3.6,<2.0a0 - - xorg-libxfixes >=6.0.1,<7.0a0 - license: MIT - license_family: MIT - size: 13217 - timestamp: 1727891438799 -- kind: conda - name: xorg-libxdmcp - version: 1.1.3 - build: hcd874cb_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.3-hcd874cb_0.tar.bz2 - sha256: f51205d33c07d744ec177243e5d9b874002910c731954f2c8da82459be462b93 - md5: 46878ebb6b9cbd8afcf8088d7ef00ece - depends: - - m2w64-gcc-libs - license: MIT - license_family: MIT - size: 67908 - timestamp: 1610072296570 -- kind: conda - name: xorg-libxdmcp - version: 1.1.5 - build: h00291cd_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h00291cd_0.conda - sha256: bb4d1ef9cafef535494adf9296130b6193b3a44375883185b5167de03eb1ac7f - md5: 9f438e1b6f4e73fd9e6d78bfe7c36743 - depends: - - __osx >=10.13 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 18465 - timestamp: 1727794980957 -- kind: conda - name: xorg-libxdmcp - version: 1.1.5 - build: h57736b2_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda + size: 19901 + timestamp: 1727794976192 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxdmcp-1.1.5-h57736b2_0.conda sha256: efcc150da5926cf244f757b8376d96a4db78bc15b8d90ca9f56ac6e75755971f md5: 25a5a7b797fe6e084e04ffe2db02fc62 depends: - libgcc >=13 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 20615 timestamp: 1727796660574 -- kind: conda - name: xorg-libxdmcp - version: 1.1.5 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxdmcp-1.1.5-hb9d3cd8_0.conda - sha256: 6b250f3e59db07c2514057944a3ea2044d6a8cdde8a47b6497c254520fade1ee - md5: 8035c64cb77ed555e3f150b7b3972480 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xorg-libxdmcp-1.1.5-h00291cd_0.conda + sha256: bb4d1ef9cafef535494adf9296130b6193b3a44375883185b5167de03eb1ac7f + md5: 9f438e1b6f4e73fd9e6d78bfe7c36743 depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - __osx >=10.13 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 19901 - timestamp: 1727794976192 -- kind: conda - name: xorg-libxdmcp - version: 1.1.5 - build: hd74edd7_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda + size: 18465 + timestamp: 1727794980957 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xorg-libxdmcp-1.1.5-hd74edd7_0.conda sha256: 9939a166d780700d81023546759102b33fdc2c5f11ef09f5f66c77210fd334c8 md5: 77c447f48cab5d3a15ac224edb86a968 depends: - __osx >=11.0 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 18487 timestamp: 1727795205022 -- kind: conda - name: xorg-libxext - version: 1.3.4 - build: hcd874cb_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.4-hcd874cb_2.conda - sha256: 829320f05866ea1cc51924828427f215f4d0db093e748a662e3bb68b764785a4 - md5: 2aa695ac3c56193fd8d526e3b511e021 +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxdmcp-1.1.3-hcd874cb_0.tar.bz2 + sha256: f51205d33c07d744ec177243e5d9b874002910c731954f2c8da82459be462b93 + md5: 46878ebb6b9cbd8afcf8088d7ef00ece depends: - m2w64-gcc-libs - - xorg-libx11 >=1.7.2,<2.0a0 - - xorg-xextproto - license: MIT - license_family: MIT - size: 221821 - timestamp: 1677038179908 -- kind: conda - name: xorg-libxext - version: 1.3.6 - build: h57736b2_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.6-h57736b2_0.conda - sha256: 8e216b024f52e367463b4173f237af97cf7053c77d9ce3e958bc62473a053f71 - md5: bd1e86dd8aa3afd78a4bfdb4ef918165 - depends: - - libgcc >=13 - - xorg-libx11 >=1.8.9,<2.0a0 + arch: x86_64 + platform: win license: MIT license_family: MIT - size: 50746 - timestamp: 1727754268156 -- kind: conda - name: xorg-libxext - version: 1.3.6 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda + size: 67908 + timestamp: 1610072296570 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxext-1.3.6-hb9d3cd8_0.conda sha256: da5dc921c017c05f38a38bd75245017463104457b63a1ce633ed41f214159c14 md5: febbab7d15033c913d53c7a2c102309d depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 50060 timestamp: 1727752228921 -- kind: conda - name: xorg-libxfixes - version: 6.0.1 - build: h57736b2_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.1-h57736b2_0.conda - sha256: f5c71e0555681a82a65c483374b91d91b2cb9a9903b3a22ddc00f36719fce549 - md5: 78f8715c002cc66991d7c11e3cf66039 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxext-1.3.6-h57736b2_0.conda + sha256: 8e216b024f52e367463b4173f237af97cf7053c77d9ce3e958bc62473a053f71 + md5: bd1e86dd8aa3afd78a4bfdb4ef918165 depends: - libgcc >=13 - xorg-libx11 >=1.8.9,<2.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 20289 - timestamp: 1727796500830 -- kind: conda - name: xorg-libxfixes - version: 6.0.1 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda + size: 50746 + timestamp: 1727754268156 +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxext-1.3.4-hcd874cb_2.conda + sha256: 829320f05866ea1cc51924828427f215f4d0db093e748a662e3bb68b764785a4 + md5: 2aa695ac3c56193fd8d526e3b511e021 + depends: + - m2w64-gcc-libs + - xorg-libx11 >=1.7.2,<2.0a0 + - xorg-xextproto + arch: x86_64 + platform: win + license: MIT + license_family: MIT + size: 221821 + timestamp: 1677038179908 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxfixes-6.0.1-hb9d3cd8_0.conda sha256: 2fef37e660985794617716eb915865ce157004a4d567ed35ec16514960ae9271 md5: 4bdb303603e9821baf5fe5fdff1dc8f8 depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 19575 timestamp: 1727794961233 -- kind: conda - name: xorg-libxi - version: 1.8.2 - build: h57736b2_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxi-1.8.2-h57736b2_0.conda - sha256: 7b587407ecb9ccd2bbaf0fb94c5dbdde4d015346df063e9502dc0ce2b682fb5e - md5: eeee3bdb31c6acde2b81ad1b8c287087 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxfixes-6.0.1-h57736b2_0.conda + sha256: f5c71e0555681a82a65c483374b91d91b2cb9a9903b3a22ddc00f36719fce549 + md5: 78f8715c002cc66991d7c11e3cf66039 depends: - libgcc >=13 - xorg-libx11 >=1.8.9,<2.0a0 - - xorg-libxext >=1.3.6,<2.0a0 - - xorg-libxfixes >=6.0.1,<7.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 48197 - timestamp: 1727801059062 -- kind: conda - name: xorg-libxi - version: 1.8.2 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda + size: 20289 + timestamp: 1727796500830 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxi-1.8.2-hb9d3cd8_0.conda sha256: 1a724b47d98d7880f26da40e45f01728e7638e6ec69f35a3e11f92acd05f9e7a md5: 17dcc85db3c7886650b8908b183d6876 depends: @@ -24764,16 +18004,27 @@ packages: - xorg-libx11 >=1.8.10,<2.0a0 - xorg-libxext >=1.3.6,<2.0a0 - xorg-libxfixes >=6.0.1,<7.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 47179 timestamp: 1727799254088 -- kind: conda - name: xorg-libxpm - version: 3.5.17 - build: hcd874cb_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-hcd874cb_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxi-1.8.2-h57736b2_0.conda + sha256: 7b587407ecb9ccd2bbaf0fb94c5dbdde4d015346df063e9502dc0ce2b682fb5e + md5: eeee3bdb31c6acde2b81ad1b8c287087 + depends: + - libgcc >=13 + - xorg-libx11 >=1.8.9,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxfixes >=6.0.1,<7.0a0 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 48197 + timestamp: 1727801059062 +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxpm-3.5.17-hcd874cb_0.conda sha256: d5cc2f026658e8b85679813bff35c16c857f873ba02489e6eb6e30d5865dacc4 md5: 029be9b667bf3896fa28bc32adb1bfc3 depends: @@ -24784,33 +18035,13 @@ packages: - xorg-libxt >=1.3.0,<2.0a0 - xorg-xextproto >=7.3.0,<8.0a0 - xorg-xproto + arch: x86_64 + platform: win license: MIT license_family: MIT size: 195881 timestamp: 1696449889560 -- kind: conda - name: xorg-libxrandr - version: 1.5.4 - build: h86ecc28_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrandr-1.5.4-h86ecc28_0.conda - sha256: b2588a2b101d1b0a4e852532c8b9c92c59ef584fc762dd700567bdbf8cd00650 - md5: dd3e74283a082381aa3860312e3c721e - depends: - - libgcc >=13 - - xorg-libx11 >=1.8.9,<2.0a0 - - xorg-libxext >=1.3.6,<2.0a0 - - xorg-libxrender >=0.9.11,<0.10.0a0 - license: MIT - license_family: MIT - size: 30197 - timestamp: 1727794957221 -- kind: conda - name: xorg-libxrandr - version: 1.5.4 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrandr-1.5.4-hb9d3cd8_0.conda sha256: ac0f037e0791a620a69980914a77cb6bb40308e26db11698029d6708f5aa8e0d md5: 2de7f99d6581a4a7adbff607b5c278ca depends: @@ -24819,89 +18050,52 @@ packages: - xorg-libx11 >=1.8.10,<2.0a0 - xorg-libxext >=1.3.6,<2.0a0 - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 29599 timestamp: 1727794874300 -- kind: conda - name: xorg-libxrender - version: 0.9.11 - build: h57736b2_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.11-h57736b2_1.conda - sha256: 50c000a26e828313b668902c2ae5ff7956d9d34418b4fc6fc15f73cba31b45e0 - md5: 19fb476dc5cdd51b67719a6342fab237 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrandr-1.5.4-h86ecc28_0.conda + sha256: b2588a2b101d1b0a4e852532c8b9c92c59ef584fc762dd700567bdbf8cd00650 + md5: dd3e74283a082381aa3860312e3c721e depends: - libgcc >=13 - xorg-libx11 >=1.8.9,<2.0a0 - - xorg-xorgproto + - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxrender >=0.9.11,<0.10.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 38052 - timestamp: 1727530023529 -- kind: conda - name: xorg-libxrender - version: 0.9.11 - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.11-hb9d3cd8_1.conda - sha256: f1217e902c0b1d8bc5d3ce65e483ebf38b049c823c9117b7198cfb16bd2b9143 - md5: a7a49a8b85122b49214798321e2e96b4 + size: 30197 + timestamp: 1727794957221 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxrender-0.9.12-hb9d3cd8_0.conda + sha256: 044c7b3153c224c6cedd4484dd91b389d2d7fd9c776ad0f4a34f099b3389f4a1 + md5: 96d57aba173e878a2089d5638016dc5e depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - xorg-libx11 >=1.8.10,<2.0a0 - - xorg-xorgproto - license: MIT - license_family: MIT - size: 37780 - timestamp: 1727529943015 -- kind: conda - name: xorg-libxt - version: 1.3.0 - build: hcd874cb_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.0-hcd874cb_1.conda - sha256: d513e0c627f098ef6655ce188eca79a672eaf763b0bbf37b228cb46dc82a66ca - md5: 511a29edd2ff3d973f63e54f19dcc06e - depends: - - m2w64-gcc-libs - - m2w64-gcc-libs-core - - xorg-kbproto - - xorg-libice >=1.1.1,<2.0a0 - - xorg-libsm >=1.2.4,<2.0a0 - - xorg-libx11 >=1.8.6,<2.0a0 - - xorg-xproto + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 671704 - timestamp: 1690289114426 -- kind: conda - name: xorg-libxt - version: 1.3.1 - build: h57736b2_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxt-1.3.1-h57736b2_0.conda - sha256: 7c109792b60720809a580612aba7f8eb2a0bd425b9fc078748a9d6ffc97cbfa8 - md5: a9e4852c8e0b68ee783e7240030b696f + size: 33005 + timestamp: 1734229037766 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxrender-0.9.12-h86ecc28_0.conda + sha256: ffd77ee860c9635a28cfda46163dcfe9224dc6248c62404c544ae6b564a0be1f + md5: ae2c2dd0e2d38d249887727db2af960e depends: - libgcc >=13 - - xorg-libice >=1.1.1,<2.0a0 - - xorg-libsm >=1.2.4,<2.0a0 - - xorg-libx11 >=1.8.9,<2.0a0 + - xorg-libx11 >=1.8.10,<2.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 384752 - timestamp: 1731860572314 -- kind: conda - name: xorg-libxt - version: 1.3.1 - build: hb9d3cd8_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda + size: 33649 + timestamp: 1734229123157 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxt-1.3.1-hb9d3cd8_0.conda sha256: a8afba4a55b7b530eb5c8ad89737d60d60bc151a03fbef7a2182461256953f0e md5: 279b0de5f6ba95457190a1c459a64e31 depends: @@ -24910,35 +18104,44 @@ packages: - xorg-libice >=1.1.1,<2.0a0 - xorg-libsm >=1.2.4,<2.0a0 - xorg-libx11 >=1.8.10,<2.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 379686 timestamp: 1731860547604 -- kind: conda - name: xorg-libxtst - version: 1.2.5 - build: h57736b2_3 - build_number: 3 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxtst-1.2.5-h57736b2_3.conda - sha256: 6eaffce5a34fc0a16a21ddeaefb597e792a263b1b0c387c1ce46b0a967d558e1 - md5: c05698071b5c8e0da82a282085845860 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxt-1.3.1-h57736b2_0.conda + sha256: 7c109792b60720809a580612aba7f8eb2a0bd425b9fc078748a9d6ffc97cbfa8 + md5: a9e4852c8e0b68ee783e7240030b696f depends: - libgcc >=13 + - xorg-libice >=1.1.1,<2.0a0 + - xorg-libsm >=1.2.4,<2.0a0 - xorg-libx11 >=1.8.9,<2.0a0 - - xorg-libxext >=1.3.6,<2.0a0 - - xorg-libxi >=1.7.10,<2.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 33786 - timestamp: 1727964907993 -- kind: conda - name: xorg-libxtst - version: 1.2.5 - build: hb9d3cd8_3 - build_number: 3 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda + size: 384752 + timestamp: 1731860572314 +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-libxt-1.3.0-hcd874cb_1.conda + sha256: d513e0c627f098ef6655ce188eca79a672eaf763b0bbf37b228cb46dc82a66ca + md5: 511a29edd2ff3d973f63e54f19dcc06e + depends: + - m2w64-gcc-libs + - m2w64-gcc-libs-core + - xorg-kbproto + - xorg-libice >=1.1.1,<2.0a0 + - xorg-libsm >=1.2.4,<2.0a0 + - xorg-libx11 >=1.8.6,<2.0a0 + - xorg-xproto + arch: x86_64 + platform: win + license: MIT + license_family: MIT + size: 671704 + timestamp: 1690289114426 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxtst-1.2.5-hb9d3cd8_3.conda sha256: 752fdaac5d58ed863bbf685bb6f98092fe1a488ea8ebb7ed7b606ccfce08637a md5: 7bbe9a0cc0df0ac5f5a8ad6d6a11af2f depends: @@ -24947,53 +18150,54 @@ packages: - xorg-libx11 >=1.8.10,<2.0a0 - xorg-libxext >=1.3.6,<2.0a0 - xorg-libxi >=1.7.10,<2.0a0 + arch: x86_64 + platform: linux license: MIT license_family: MIT size: 32808 timestamp: 1727964811275 -- kind: conda - name: xorg-libxxf86vm - version: 1.1.5 - build: h57736b2_4 - build_number: 4 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxxf86vm-1.1.5-h57736b2_4.conda - sha256: db7455e84e3427e800e4830296247e8a465a13f2cd0b389415a5aec989f5fab0 - md5: 82fa1f5642ef7ac7172e295327ce20e2 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxtst-1.2.5-h57736b2_3.conda + sha256: 6eaffce5a34fc0a16a21ddeaefb597e792a263b1b0c387c1ce46b0a967d558e1 + md5: c05698071b5c8e0da82a282085845860 depends: - libgcc >=13 - xorg-libx11 >=1.8.9,<2.0a0 - xorg-libxext >=1.3.6,<2.0a0 + - xorg-libxi >=1.7.10,<2.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 18392 - timestamp: 1728920054223 -- kind: conda - name: xorg-libxxf86vm - version: 1.1.5 - build: hb9d3cd8_4 - build_number: 4 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.5-hb9d3cd8_4.conda - sha256: 0b8f062a5b4a2c3833267285b7d41b3542f54d2c935c86ca98504c3e5296354c - md5: 7da9007c0582712c4bad4131f89c8372 + size: 33786 + timestamp: 1727964907993 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-libxxf86vm-1.1.6-hb9d3cd8_0.conda + sha256: 8a4e2ee642f884e6b78c20c0892b85dd9b2a6e64a6044e903297e616be6ca35b + md5: 5efa5fa6243a622445fdfd72aee15efa depends: - __glibc >=2.17,<3.0.a0 - libgcc >=13 - xorg-libx11 >=1.8.10,<2.0a0 - xorg-libxext >=1.3.6,<2.0a0 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 17819 + timestamp: 1734214575628 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-libxxf86vm-1.1.6-h86ecc28_0.conda + sha256: 012f0d1fd9fb1d949e0dccc0b28d9dd5a8895a1f3e2a7edc1fa2e1b33fc0f233 + md5: d745faa2d7c15092652e40a22bb261ed + depends: + - libgcc >=13 + - xorg-libx11 >=1.8.10,<2.0a0 + - xorg-libxext >=1.3.6,<2.0a0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 18072 - timestamp: 1728920051869 -- kind: conda - name: xorg-x11-server-common-cos6-x86_64 - version: 1.17.4 - build: h9b0a68f_1105 - build_number: 1105 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/xorg-x11-server-common-cos6-x86_64-1.17.4-h9b0a68f_1105.tar.bz2 + size: 18185 + timestamp: 1734214652726 +- conda: https://conda.anaconda.org/conda-forge/noarch/xorg-x11-server-common-cos6-x86_64-1.17.4-h9b0a68f_1105.tar.bz2 sha256: dc16f8736d4d2eca76e5aee55fe54fb6e89d199d69a79f2b11801fc0c6a926e1 md5: f0d4038619aa27bcb25361a6f84d2668 depends: @@ -25003,14 +18207,7 @@ packages: license_family: MIT size: 36034 timestamp: 1627484163369 -- kind: conda - name: xorg-x11-server-common-cos7-aarch64 - version: 1.20.4 - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/xorg-x11-server-common-cos7-aarch64-1.20.4-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/xorg-x11-server-common-cos7-aarch64-1.20.4-ha675448_1106.tar.bz2 sha256: 098c286c7d396a46a76220c5af8d001df60c200ea9bb8792707b08066da289ec md5: a326ae44054c0bdab5f5554301919398 depends: @@ -25020,14 +18217,7 @@ packages: license_family: MIT size: 37103 timestamp: 1726579230177 -- kind: conda - name: xorg-x11-server-xvfb-cos6-x86_64 - version: 1.17.4 - build: h9b0a68f_1105 - build_number: 1105 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/xorg-x11-server-xvfb-cos6-x86_64-1.17.4-h9b0a68f_1105.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/xorg-x11-server-xvfb-cos6-x86_64-1.17.4-h9b0a68f_1105.tar.bz2 sha256: 601e3376ebd1f55a8cdc437ac88653c9242e0098b3195c39f2584dbb301e1b6e md5: f1ef25fdcd06ff28d6505b81282d35f3 depends: @@ -25037,14 +18227,7 @@ packages: license_family: GPL2 size: 881810 timestamp: 1627486074557 -- kind: conda - name: xorg-x11-server-xvfb-cos7-aarch64 - version: 1.20.4 - build: ha675448_1106 - build_number: 1106 - subdir: noarch - noarch: generic - url: https://conda.anaconda.org/conda-forge/noarch/xorg-x11-server-xvfb-cos7-aarch64-1.20.4-ha675448_1106.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/noarch/xorg-x11-server-xvfb-cos7-aarch64-1.20.4-ha675448_1106.tar.bz2 sha256: 67b6a87e18dbf2a6cad85d2f56ab645fcb0587d8eb32c8dc6d2a6974ee04c07d md5: 28c076e3c354d09fd1202fd46d93a164 depends: @@ -25054,639 +18237,546 @@ packages: license_family: GPL2 size: 914549 timestamp: 1726586249979 -- kind: conda - name: xorg-xextproto - version: 7.3.0 - build: hcd874cb_1003 - build_number: 1003 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/xorg-xextproto-7.3.0-hcd874cb_1003.conda +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xextproto-7.3.0-hcd874cb_1003.conda sha256: 04c0a08fd34fa33406c20f729e8f9cc40e8fd898072b952a5c14280fcf26f2e6 md5: 6e6c2639620e436bddb7c040cd4f3adb depends: - m2w64-gcc-libs + arch: x86_64 + platform: win license: MIT license_family: MIT size: 31034 timestamp: 1677037259999 -- kind: conda - name: xorg-xorgproto - version: '2024.1' - build: h86ecc28_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xorgproto-2024.1-h86ecc28_1.conda - sha256: 3dbbf4cdb5ad82d3479ab2aa68ae67de486a6d57d67f0402d8e55869f6f13aec - md5: 91cef7867bf2b47f614597b59705ff56 - depends: - - libgcc >=13 - license: MIT - license_family: MIT - size: 566948 - timestamp: 1726847598167 -- kind: conda - name: xorg-xorgproto - version: '2024.1' - build: hb9d3cd8_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xorg-xorgproto-2024.1-hb9d3cd8_1.conda - sha256: 1316680be6edddee0156b86ec1102fc8286f51c1a5440366ed1db596a2dc3731 - md5: 7c21106b851ec72c037b162c216d8f05 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xorg-xproto-7.0.31-hb9d3cd8_1008.conda + sha256: ea02425c898d6694167952794e9a865e02e14e9c844efb067374f90b9ce8ce33 + md5: a63f5b66876bb1ec734ab4bdc4d11e86 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + arch: x86_64 + platform: linux + license: MIT + license_family: MIT + size: 73315 + timestamp: 1726845753874 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xorg-xproto-7.0.31-h57736b2_1008.conda + sha256: 3415c89f81a03c26c0f2327c6d9b34a77de2e584d88a9157a5fd940f8cae0292 + md5: 3dd2b75fd06be7955bd3b0c0afa4fb8f + depends: + - libgcc >=13 + arch: aarch64 + platform: linux + license: MIT + license_family: MIT + size: 73800 + timestamp: 1726845752367 +- conda: https://conda.anaconda.org/conda-forge/win-64/xorg-xproto-7.0.31-hcd874cb_1007.tar.bz2 + sha256: b84cacba8479fa14199c9255fb62e005cacc619e90198c53b1653973709ec331 + md5: 88f3c65d2ad13826a9e0b162063be023 + depends: + - m2w64-gcc-libs + arch: x86_64 + platform: win + license: MIT + license_family: MIT + size: 75708 + timestamp: 1607292254607 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-5.6.3-hbcc6ac9_1.conda + sha256: 9cef529dcff25222427c9d90b9fc376888a59e138794b4336bbcd3331a5eea22 + md5: 62aae173382a8aae284726353c6a6a24 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_1 + - liblzma-devel 5.6.3 hb9d3cd8_1 + - xz-gpl-tools 5.6.3 hbcc6ac9_1 + - xz-tools 5.6.3 hb9d3cd8_1 + arch: x86_64 + platform: linux + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23477 + timestamp: 1733407455801 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.6.3-h2dbfc1b_1.conda + sha256: b497245803e6753a9d4fe4014eb71fcb94e3fe1c7be9cc54aefcd0d02266b67f + md5: 0ed81af8ecd07369f2ce2533fd904a25 + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_1 + - liblzma-devel 5.6.3 h86ecc28_1 + - xz-gpl-tools 5.6.3 h2dbfc1b_1 + - xz-tools 5.6.3 h86ecc28_1 + arch: aarch64 + platform: linux + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23495 + timestamp: 1733409682598 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-5.6.3-h357f2ed_1.conda + sha256: ce1bd60d9bad89eda89c3f2d094d1f5db67e271ab35d2f74b445dc98a9e38f76 + md5: 5b8d1e12d8a51a553b59e0957ba08103 + depends: + - __osx >=10.13 + - liblzma 5.6.3 hd471939_1 + - liblzma-devel 5.6.3 hd471939_1 + - xz-gpl-tools 5.6.3 h357f2ed_1 + - xz-tools 5.6.3 hd471939_1 + arch: x86_64 + platform: osx + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23640 + timestamp: 1733407599563 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.6.3-h9a6d368_1.conda + sha256: 84f9405312032638a7c6249573c8f50423c314c8a4d149b34b720caecc0dc83c + md5: 1d79c34d99f1e839a06b4631df091b64 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_1 + - liblzma-devel 5.6.3 h39f12f2_1 + - xz-gpl-tools 5.6.3 h9a6d368_1 + - xz-tools 5.6.3 h39f12f2_1 + arch: arm64 + platform: osx + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23692 + timestamp: 1733407556613 +- conda: https://conda.anaconda.org/conda-forge/win-64/xz-5.6.3-h208afaa_1.conda + sha256: 636687c7ff74e37e464b57ddddc921016713f13fb48126ba8db426eb2d978392 + md5: fce59c05fc73134677e81b7b8184b397 + depends: + - liblzma 5.6.3 h2466b09_1 + - liblzma-devel 5.6.3 h2466b09_1 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + - xz-tools 5.6.3 h2466b09_1 + arch: x86_64 + platform: win + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 23925 + timestamp: 1733407963901 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-gpl-tools-5.6.3-hbcc6ac9_1.conda + sha256: 4e104b7c75c2f26a96032a1c6cda51430da1dea318c74f9e3568902b2f5030e1 + md5: f529917bab7862aaad6867bf2ea47a99 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_1 + arch: x86_64 + platform: linux + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33354 + timestamp: 1733407444641 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-gpl-tools-5.6.3-h2dbfc1b_1.conda + sha256: 025f53e2f269b55ab46a627afa47e7288e5199c9d6752ac079c91c22d2a18c07 + md5: 5987f52add76f6fe246fcb2a554ee206 + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_1 + arch: aarch64 + platform: linux + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33218 + timestamp: 1733409548701 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-gpl-tools-5.6.3-h357f2ed_1.conda + sha256: 42f94fc8fae4ef1cd89b6e56deefdeddd065f7975a77d366ff2cb82106fb62ea + md5: a08d5c883e4c9df9b73afb623a3f94ab + depends: + - __osx >=10.13 + - liblzma 5.6.3 hd471939_1 + arch: x86_64 + platform: osx + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33298 + timestamp: 1733407576656 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-gpl-tools-5.6.3-h9a6d368_1.conda + sha256: 98f71ea5d19c9cf4daed3b26a5102862baf8c63210f039e305f283fe399554b0 + md5: cf05cc17aa7eb2ff843ca5c45d63a324 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_1 + arch: arm64 + platform: osx + license: 0BSD AND LGPL-2.1-or-later AND GPL-2.0-or-later + size: 33402 + timestamp: 1733407540403 +- conda: https://conda.anaconda.org/conda-forge/linux-64/xz-tools-5.6.3-hb9d3cd8_1.conda + sha256: 6e80f838096345c35e8755b827814c083dd0274594006d6f76bff71bc969c3b8 + md5: de3f31a6eed01bc2b8c7dcad07ad9034 + depends: + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - liblzma 5.6.3 hb9d3cd8_1 + arch: x86_64 + platform: linux + license: 0BSD AND LGPL-2.1-or-later + size: 90354 + timestamp: 1733407433418 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-tools-5.6.3-h86ecc28_1.conda + sha256: c4d136b10ba6d2afe133bc5bc2c6db6ec336793932b6ff1e166b5b1790abe1c5 + md5: 5d1bedf30d9b471b6f880351cec41bf0 + depends: + - libgcc >=13 + - liblzma 5.6.3 h86ecc28_1 + arch: aarch64 + platform: linux + license: 0BSD AND LGPL-2.1-or-later + size: 95924 + timestamp: 1733409414633 +- conda: https://conda.anaconda.org/conda-forge/osx-64/xz-tools-5.6.3-hd471939_1.conda + sha256: aa025a3b2547e80b1c84732ff6a380f288c505f334411122ef7945378ccd682b + md5: c3b85d24bddf7f6e9d8c917c6d300b43 + depends: + - __osx >=10.13 + - liblzma 5.6.3 hd471939_1 + arch: x86_64 + platform: osx + license: 0BSD AND LGPL-2.1-or-later + size: 80968 + timestamp: 1733407552376 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/xz-tools-5.6.3-h39f12f2_1.conda + sha256: b785955dd3d5eb1b00e3f1b1fbc3a9bf14276b2c0a950d0735a503d9abea7b5d + md5: 0fea5aff7b3a33856288c26326d937f7 + depends: + - __osx >=11.0 + - liblzma 5.6.3 h39f12f2_1 + arch: arm64 + platform: osx + license: 0BSD AND LGPL-2.1-or-later + size: 81028 + timestamp: 1733407527563 +- conda: https://conda.anaconda.org/conda-forge/win-64/xz-tools-5.6.3-h2466b09_1.conda + sha256: 0cb621f748ec0b9b5edafb9a15e342f6f6f42a3f462ab0276c821a35e8bf39c0 + md5: 4100be41430c9b2310468d3489597071 + depends: + - liblzma 5.6.3 h2466b09_1 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win + license: 0BSD AND LGPL-2.1-or-later + size: 63898 + timestamp: 1733407936888 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 + sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 + md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 + - libgcc-ng >=9.4.0 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 565425 - timestamp: 1726846388217 -- kind: conda - name: xorg-xproto - version: 7.0.31 - build: hcd874cb_1007 - build_number: 1007 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/xorg-xproto-7.0.31-hcd874cb_1007.tar.bz2 - sha256: b84cacba8479fa14199c9255fb62e005cacc619e90198c53b1653973709ec331 - md5: 88f3c65d2ad13826a9e0b162063be023 + size: 89141 + timestamp: 1641346969816 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 + sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e + md5: b853307650cb226731f653aa623936a4 depends: - - m2w64-gcc-libs + - libgcc-ng >=9.4.0 + arch: aarch64 + platform: linux license: MIT license_family: MIT - size: 75708 - timestamp: 1607292254607 -- kind: conda - name: xz - version: 5.2.6 - build: h166bdaf_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/xz-5.2.6-h166bdaf_0.tar.bz2 - sha256: 03a6d28ded42af8a347345f82f3eebdd6807a08526d47899a42d62d319609162 - md5: 2161070d867d1b1204ea749c8eec4ef0 - depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 418368 - timestamp: 1660346797927 -- kind: conda - name: xz - version: 5.2.6 - build: h57fd34a_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/xz-5.2.6-h57fd34a_0.tar.bz2 - sha256: 59d78af0c3e071021cfe82dc40134c19dab8cdf804324b62940f5c8cd71803ec - md5: 39c6b54e94014701dd157f4f576ed211 - license: LGPL-2.1 and GPL-2.0 - size: 235693 - timestamp: 1660346961024 -- kind: conda - name: xz - version: 5.2.6 - build: h775f41a_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/xz-5.2.6-h775f41a_0.tar.bz2 - sha256: eb09823f34cc2dd663c0ec4ab13f246f45dcd52e5b8c47b9864361de5204a1c8 - md5: a72f9d4ea13d55d745ff1ed594747f10 - license: LGPL-2.1 and GPL-2.0 - size: 238119 - timestamp: 1660346964847 -- kind: conda - name: xz - version: 5.2.6 - build: h8d14728_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/xz-5.2.6-h8d14728_0.tar.bz2 - sha256: 54d9778f75a02723784dc63aff4126ff6e6749ba21d11a6d03c1f4775f269fe0 - md5: 515d77642eaa3639413c6b1bc3f94219 - depends: - - vc >=14.1,<15 - - vs2015_runtime >=14.16.27033 - license: LGPL-2.1 and GPL-2.0 - size: 217804 - timestamp: 1660346976440 -- kind: conda - name: xz - version: 5.2.6 - build: h9cdd2b7_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/xz-5.2.6-h9cdd2b7_0.tar.bz2 - sha256: 93f58a7b393adf41fa007ac8c55978765e957e90cd31877ece1e5a343cb98220 - md5: 83baad393a31d59c20b63ba4da6592df - depends: - - libgcc-ng >=12 - license: LGPL-2.1 and GPL-2.0 - size: 440555 - timestamp: 1660348056328 -- kind: conda - name: yaml - version: 0.2.5 - build: h0d85af4_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 + size: 92927 + timestamp: 1641347626613 +- conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-0.2.5-h0d85af4_2.tar.bz2 sha256: 5301417e2c8dea45b401ffee8df3957d2447d4ce80c83c5ff151fc6bfe1c4148 md5: d7e08fcf8259d742156188e8762b4d20 + arch: x86_64 + platform: osx license: MIT license_family: MIT size: 84237 timestamp: 1641347062780 -- kind: conda - name: yaml - version: 0.2.5 - build: h3422bc3_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-0.2.5-h3422bc3_2.tar.bz2 sha256: 93181a04ba8cfecfdfb162fc958436d868cc37db504c58078eab4c1a3e57fbb7 md5: 4bb3f014845110883a3c5ee811fd84b4 + arch: arm64 + platform: osx license: MIT license_family: MIT size: 88016 timestamp: 1641347076660 -- kind: conda - name: yaml - version: 0.2.5 - build: h7f98852_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yaml-0.2.5-h7f98852_2.tar.bz2 - sha256: a4e34c710eeb26945bdbdaba82d3d74f60a78f54a874ec10d373811a5d217535 - md5: 4cb3ad778ec2d5a7acbdf254eb1c42ae - depends: - - libgcc-ng >=9.4.0 - license: MIT - license_family: MIT - size: 89141 - timestamp: 1641346969816 -- kind: conda - name: yaml - version: 0.2.5 - build: h8ffe710_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 +- conda: https://conda.anaconda.org/conda-forge/win-64/yaml-0.2.5-h8ffe710_2.tar.bz2 sha256: 4e2246383003acbad9682c7c63178e2e715ad0eb84f03a8df1fbfba455dfedc5 md5: adbfb9f45d1004a26763652246a33764 depends: - vc >=14.1,<15.0a0 - vs2015_runtime >=14.16.27012 + arch: x86_64 + platform: win license: MIT license_family: MIT size: 63274 timestamp: 1641347623319 -- kind: conda - name: yaml - version: 0.2.5 - build: hf897c2e_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-0.2.5-hf897c2e_2.tar.bz2 - sha256: 8bc601d6dbe249eba44b3c456765265cd8f42ef1e778f8df9b0c9c88b8558d7e - md5: b853307650cb226731f653aa623936a4 - depends: - - libgcc-ng >=9.4.0 - license: MIT - license_family: MIT - size: 92927 - timestamp: 1641347626613 -- kind: conda - name: yaml-cpp - version: 0.8.0 - build: h13dd4ca_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-cpp-0.8.0-h13dd4ca_0.conda - sha256: e65a52fb1c9821ba3a7a670d650314f8ff983865e77ba9f69f74e0906844943d - md5: e783a232972a5c7dca549111e63a78b2 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h59595ed_0.conda + sha256: a65bb5284369e548a15a44b14baf1f7ac34fa4718d7d987dd29032caba2ecf20 + md5: 965eaacd7c18eb8361fd12bb9e7a57d7 depends: - - libcxx >=15.0.7 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + arch: x86_64 + platform: linux license: MIT license_family: MIT - size: 130329 - timestamp: 1695712959746 -- kind: conda - name: yaml-cpp - version: 0.8.0 - build: h2f0025b_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-cpp-0.8.0-h2f0025b_0.conda + size: 204867 + timestamp: 1695710312002 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yaml-cpp-0.8.0-h2f0025b_0.conda sha256: 3ca47a7b43f4453e72cfc8333fbffe99b68e936a5e54457afa0a89e39239e251 md5: b5da38ee183c1e50e3e7ffb171a2eca5 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 + arch: aarch64 + platform: linux license: MIT license_family: MIT size: 193472 timestamp: 1695710254150 -- kind: conda - name: yaml-cpp - version: 0.8.0 - build: h59595ed_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yaml-cpp-0.8.0-h59595ed_0.conda - sha256: a65bb5284369e548a15a44b14baf1f7ac34fa4718d7d987dd29032caba2ecf20 - md5: 965eaacd7c18eb8361fd12bb9e7a57d7 +- conda: https://conda.anaconda.org/conda-forge/osx-64/yaml-cpp-0.8.0-he965462_0.conda + sha256: 6e5e4afa1011a1ad5a734e895b8d2b2ad0fbc9ef6538aac8f852b33b2ebe44a8 + md5: 1bb3addc859ed1338370da6e2996ef47 depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 + - libcxx >=15.0.7 + arch: x86_64 + platform: osx license: MIT license_family: MIT - size: 204867 - timestamp: 1695710312002 -- kind: conda - name: yaml-cpp - version: 0.8.0 - build: h63175ca_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/yaml-cpp-0.8.0-h63175ca_0.conda + size: 130328 + timestamp: 1695710502498 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yaml-cpp-0.8.0-h13dd4ca_0.conda + sha256: e65a52fb1c9821ba3a7a670d650314f8ff983865e77ba9f69f74e0906844943d + md5: e783a232972a5c7dca549111e63a78b2 + depends: + - libcxx >=15.0.7 + arch: arm64 + platform: osx + license: MIT + license_family: MIT + size: 130329 + timestamp: 1695712959746 +- conda: https://conda.anaconda.org/conda-forge/win-64/yaml-cpp-0.8.0-h63175ca_0.conda sha256: d2e506baddde40388700f2c83586a002b927810d453272065b9e7b69d422fcca md5: 9032e2129ea7afcc1a8e3d85715a931d depends: - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win license: MIT license_family: MIT size: 136608 timestamp: 1695710737262 -- kind: conda - name: yaml-cpp - version: 0.8.0 - build: he965462_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/yaml-cpp-0.8.0-he965462_0.conda - sha256: 6e5e4afa1011a1ad5a734e895b8d2b2ad0fbc9ef6538aac8f852b33b2ebe44a8 - md5: 1bb3addc859ed1338370da6e2996ef47 - depends: - - libcxx >=15.0.7 - license: MIT - license_family: MIT - size: 130328 - timestamp: 1695710502498 -- kind: conda - name: yarl - version: 1.18.0 - build: py312h01d7ebd_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/yarl-1.18.0-py312h01d7ebd_0.conda - sha256: 298c1c6f692c6bfb61020e7058a863697d4341e8ff075cbeaf57d1c1a9ad3db9 - md5: 568eba0c8021ecf4aa5be6e7a42d5d3d - depends: - - __osx >=10.13 - - idna >=2.0 - - multidict >=4.0 - - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - license: Apache-2.0 - license_family: Apache - size: 139914 - timestamp: 1732221098939 -- kind: conda - name: yarl - version: 1.18.0 - build: py312h4389bb4_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/yarl-1.18.0-py312h4389bb4_0.conda - sha256: 5d784a5df4d0a58e5cb665935b3c585311a3eb8f2513477483d49ca09c2731c8 - md5: 1a39a4322ee5162c4c0defdcb6c99c64 +- conda: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.3-py313h536fd9c_0.conda + sha256: 7a7995baac465031eca969c4c1abbd0adbe9be20094fe49f2a66f58239f6f448 + md5: 6365bef6cb4980dadee99e5249a3b755 depends: + - __glibc >=2.17,<3.0.a0 - idna >=2.0 + - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 + - propcache >=0.2.1 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: linux license: Apache-2.0 license_family: Apache - size: 140928 - timestamp: 1732221264363 -- kind: conda - name: yarl - version: 1.18.0 - build: py312h66e93f0_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/yarl-1.18.0-py312h66e93f0_0.conda - sha256: 8a1e51303ecac64f10dd0ec548d472c49954c3e2f38023ef28899191580795e1 - md5: 601d2b19a54fd9346ba18c07c2516339 + size: 152098 + timestamp: 1733428918023 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.3-py313h31d5739_0.conda + sha256: 3c06ed6d9ae6b56457fe24484a95d6328c11455ffc1794f7efb51beda1ee38ff + md5: f77c0f7d2f5ac51a2028c0149556447e depends: - - __glibc >=2.17,<3.0.a0 - idna >=2.0 - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - propcache >=0.2.1 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + arch: aarch64 + platform: linux license: Apache-2.0 license_family: Apache - size: 151247 - timestamp: 1732220988648 -- kind: conda - name: yarl - version: 1.18.0 - build: py312hb2c0f52_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/yarl-1.18.0-py312hb2c0f52_0.conda - sha256: 2ead24d5c50a2edd6348be5888677100b12b98921d1b6fe2f4cd980b0b85ffb2 - md5: 7dbbd950a7f762c2c8ab835932b12001 + size: 150601 + timestamp: 1733429112942 +- conda: https://conda.anaconda.org/conda-forge/osx-64/yarl-1.18.3-py313h63b0ddb_0.conda + sha256: c52ab1b5208c05e18afeda506358165537d70a731c2c307b36135450c7f52ef2 + md5: 4e423db31371096531d8b723a50f98bb depends: + - __osx >=10.13 - idna >=2.0 - - libgcc >=13 - multidict >=4.0 - - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - propcache >=0.2.1 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 + arch: x86_64 + platform: osx license: Apache-2.0 license_family: Apache - size: 149149 - timestamp: 1732221057827 -- kind: conda - name: yarl - version: 1.18.0 - build: py312hea69d52_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.0-py312hea69d52_0.conda - sha256: 4c90de12b1569f85126a12dbbb89f3dc10cee5838335b9c9993ead8bf1594cd3 - md5: f538709098e1642d50f4a01707e7dfdb + size: 141891 + timestamp: 1733429041177 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/yarl-1.18.3-py313h90d716c_0.conda + sha256: 8895e2dc703791fedd810e83fe2bf295771e073e343d531e90b1d08edbbf4d0e + md5: f5eca481d561942a76a84619ecaa3d3f depends: - __osx >=11.0 - idna >=2.0 - multidict >=4.0 - - propcache >=0.2.0 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 + - propcache >=0.2.1 + - python >=3.13,<3.14.0a0 + - python >=3.13,<3.14.0a0 *_cp313 + - python_abi 3.13.* *_cp313 + arch: arm64 + platform: osx license: Apache-2.0 license_family: Apache - size: 141452 - timestamp: 1732221306526 -- kind: conda - name: zlib - version: 1.3.1 - build: h2466b09_2 - build_number: 2 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda - sha256: 8c688797ba23b9ab50cef404eca4d004a948941b6ee533ead0ff3bf52012528c - md5: be60c4e8efa55fddc17b4131aa47acbd + size: 142568 + timestamp: 1733429107902 +- conda: https://conda.anaconda.org/conda-forge/win-64/yarl-1.18.3-py313ha7868ed_0.conda + sha256: fc7039866d0fc8f438ae9ed255b4deb6c8d8960c9f81cdd6c7081fa744851009 + md5: 3e403df081a84d3c1023fa8b92a7cf80 depends: - - libzlib 1.3.1 h2466b09_2 + - idna >=2.0 + - multidict >=4.0 + - propcache >=0.2.1 + - python >=3.13,<3.14.0a0 + - python_abi 3.13.* *_cp313 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - license: Zlib - license_family: Other - size: 107439 - timestamp: 1727963788936 -- kind: conda - name: zlib - version: 1.3.1 - build: h8359307_2 - build_number: 2 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda - sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 - md5: e3170d898ca6cb48f1bb567afb92f775 + arch: x86_64 + platform: win + license: Apache-2.0 + license_family: Apache + size: 311374 + timestamp: 1733429311302 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda + sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab + md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 depends: - - __osx >=11.0 - - libzlib 1.3.1 h8359307_2 + - __glibc >=2.17,<3.0.a0 + - libgcc >=13 + - libzlib 1.3.1 hb9d3cd8_2 + arch: x86_64 + platform: linux license: Zlib license_family: Other - size: 77606 - timestamp: 1727963209370 -- kind: conda - name: zlib - version: 1.3.1 - build: h86ecc28_2 - build_number: 2 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda + size: 92286 + timestamp: 1727963153079 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zlib-1.3.1-h86ecc28_2.conda sha256: b4f649aa3ecdae384d5dad7074e198bff120edd3dfb816588e31738fc6d627b1 md5: bc230abb5d21b63ff4799b0e75204783 depends: - libgcc >=13 - libzlib 1.3.1 h86ecc28_2 + arch: aarch64 + platform: linux license: Zlib license_family: Other size: 95582 timestamp: 1727963203597 -- kind: conda - name: zlib - version: 1.3.1 - build: hb9d3cd8_2 - build_number: 2 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zlib-1.3.1-hb9d3cd8_2.conda - sha256: 5d7c0e5f0005f74112a34a7425179f4eb6e73c92f5d109e6af4ddeca407c92ab - md5: c9f075ab2f33b3bbee9e62d4ad0a6cd8 - depends: - - __glibc >=2.17,<3.0.a0 - - libgcc >=13 - - libzlib 1.3.1 hb9d3cd8_2 - license: Zlib - license_family: Other - size: 92286 - timestamp: 1727963153079 -- kind: conda - name: zlib - version: 1.3.1 - build: hd23fc13_2 - build_number: 2 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/zlib-1.3.1-hd23fc13_2.conda sha256: 219edbdfe7f073564375819732cbf7cc0d7c7c18d3f546a09c2dfaf26e4d69f3 md5: c989e0295dcbdc08106fe5d9e935f0b9 depends: - __osx >=10.13 - libzlib 1.3.1 hd23fc13_2 + arch: x86_64 + platform: osx license: Zlib license_family: Other size: 88544 timestamp: 1727963189976 -- kind: conda - name: zstandard - version: 0.23.0 - build: py312h15fbf35_1 - build_number: 1 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zstandard-0.23.0-py312h15fbf35_1.conda - sha256: d00ca25c1e28fd31199b26a94f8c96574475704a825d244d7a6351ad3745eeeb - md5: a4cde595509a7ad9c13b1a3809bcfe51 +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zlib-1.3.1-h8359307_2.conda + sha256: 58f8860756680a4831c1bf4f294e2354d187f2e999791d53b1941834c4b37430 + md5: e3170d898ca6cb48f1bb567afb92f775 depends: - __osx >=11.0 - - cffi >=1.11 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - license: BSD-3-Clause - license_family: BSD - size: 330788 - timestamp: 1725305806565 -- kind: conda - name: zstandard - version: 0.23.0 - build: py312h7122b0e_1 - build_number: 1 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/zstandard-0.23.0-py312h7122b0e_1.conda - sha256: 2685dde42478fae0780fba5d1f8a06896a676ae105f215d32c9f9e76f3c6d8fd - md5: bd132ba98f3fc0a6067f355f8efe4cb6 + - libzlib 1.3.1 h8359307_2 + arch: arm64 + platform: osx + license: Zlib + license_family: Other + size: 77606 + timestamp: 1727963209370 +- conda: https://conda.anaconda.org/conda-forge/win-64/zlib-1.3.1-h2466b09_2.conda + sha256: 8c688797ba23b9ab50cef404eca4d004a948941b6ee533ead0ff3bf52012528c + md5: be60c4e8efa55fddc17b4131aa47acbd depends: - - __osx >=10.13 - - cffi >=1.11 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - license: BSD-3-Clause - license_family: BSD - size: 410873 - timestamp: 1725305688706 -- kind: conda - name: zstandard - version: 0.23.0 - build: py312h7606c53_1 - build_number: 1 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/zstandard-0.23.0-py312h7606c53_1.conda - sha256: 3e0c718aa18dcac7f080844dbe0aea41a9cea75083019ce02e8a784926239826 - md5: a92cc3435b2fd6f51463f5a4db5c50b1 - depends: - - cffi >=1.11 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 + - libzlib 1.3.1 h2466b09_2 - ucrt >=10.0.20348.0 - vc >=14.2,<15 - vc14_runtime >=14.29.30139 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - license: BSD-3-Clause - license_family: BSD - size: 320624 - timestamp: 1725305934189 -- kind: conda - name: zstandard - version: 0.23.0 - build: py312hb698573_1 - build_number: 1 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/zstandard-0.23.0-py312hb698573_1.conda - sha256: 2681c2a249752bdc7978e59ee2f34fcdfcbfda80029b84b8e5fec8dbc9e3af25 - md5: ffcb8e97e62af42075e0e5f46bb9856e - depends: - - cffi >=1.11 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python >=3.12,<3.13.0a0 *_cpython - - python_abi 3.12.* *_cp312 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 - license: BSD-3-Clause - license_family: BSD - size: 392496 - timestamp: 1725305808244 -- kind: conda - name: zstandard - version: 0.23.0 - build: py312hef9b889_1 - build_number: 1 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zstandard-0.23.0-py312hef9b889_1.conda - sha256: b97015e146437283f2213ff0e95abdc8e2480150634d81fbae6b96ee09f5e50b - md5: 8b7069e9792ee4e5b4919a7a306d2e67 + arch: x86_64 + platform: win + license: Zlib + license_family: Other + size: 107439 + timestamp: 1727963788936 +- conda: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda + sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b + md5: 4d056880988120e29d75bfff282e0f45 depends: - - __glibc >=2.17,<3.0.a0 - - cffi >=1.11 - - libgcc >=13 - - python >=3.12,<3.13.0a0 - - python_abi 3.12.* *_cp312 - - zstd >=1.5.6,<1.5.7.0a0 - - zstd >=1.5.6,<1.6.0a0 + - libgcc-ng >=12 + - libstdcxx-ng >=12 + - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: linux license: BSD-3-Clause license_family: BSD - size: 419552 - timestamp: 1725305670210 -- kind: conda - name: zstd - version: 1.5.6 - build: h02f22dd_0 - subdir: linux-aarch64 - url: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda + size: 554846 + timestamp: 1714722996770 +- conda: https://conda.anaconda.org/conda-forge/linux-aarch64/zstd-1.5.6-h02f22dd_0.conda sha256: 484f9d0722c77685ae379fbff3ccd662af9ead7e59eb39cd6d0c677cdf25ff6c md5: be8d5f8cf21aed237b8b182ea86b3dd6 depends: - libgcc-ng >=12 - libstdcxx-ng >=12 - libzlib >=1.2.13,<2.0.0a0 + arch: aarch64 + platform: linux license: BSD-3-Clause license_family: BSD size: 539937 timestamp: 1714723130243 -- kind: conda - name: zstd - version: 1.5.6 - build: h0ea2cb4_0 - subdir: win-64 - url: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda - sha256: 768e30dc513568491818fb068ee867c57c514b553915536da09e5d10b4ebf3c3 - md5: 9a17230f95733c04dc40a2b1e5491d74 - depends: - - libzlib >=1.2.13,<2.0.0a0 - - ucrt >=10.0.20348.0 - - vc >=14.2,<15 - - vc14_runtime >=14.29.30139 - license: BSD-3-Clause - license_family: BSD - size: 349143 - timestamp: 1714723445995 -- kind: conda - name: zstd - version: 1.5.6 - build: h915ae27_0 - subdir: osx-64 - url: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-64/zstd-1.5.6-h915ae27_0.conda sha256: efa04a98cb149643fa54c4dad5a0179e36a5fbc88427ea0eec88ceed87fd0f96 md5: 4cb2cd56f039b129bb0e491c1164167e depends: - __osx >=10.9 - libzlib >=1.2.13,<2.0.0a0 + arch: x86_64 + platform: osx license: BSD-3-Clause license_family: BSD size: 498900 timestamp: 1714723303098 -- kind: conda - name: zstd - version: 1.5.6 - build: ha6fb4c9_0 - subdir: linux-64 - url: https://conda.anaconda.org/conda-forge/linux-64/zstd-1.5.6-ha6fb4c9_0.conda - sha256: c558b9cc01d9c1444031bd1ce4b9cff86f9085765f17627a6cd85fc623c8a02b - md5: 4d056880988120e29d75bfff282e0f45 - depends: - - libgcc-ng >=12 - - libstdcxx-ng >=12 - - libzlib >=1.2.13,<2.0.0a0 - license: BSD-3-Clause - license_family: BSD - size: 554846 - timestamp: 1714722996770 -- kind: conda - name: zstd - version: 1.5.6 - build: hb46c0d2_0 - subdir: osx-arm64 - url: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda +- conda: https://conda.anaconda.org/conda-forge/osx-arm64/zstd-1.5.6-hb46c0d2_0.conda sha256: 2d4fd1ff7ee79cd954ca8e81abf11d9d49954dd1fef80f27289e2402ae9c2e09 md5: d96942c06c3e84bfcc5efb038724a7fd depends: - __osx >=11.0 - libzlib >=1.2.13,<2.0.0a0 + arch: arm64 + platform: osx license: BSD-3-Clause license_family: BSD size: 405089 timestamp: 1714723101397 +- conda: https://conda.anaconda.org/conda-forge/win-64/zstd-1.5.6-h0ea2cb4_0.conda + sha256: 768e30dc513568491818fb068ee867c57c514b553915536da09e5d10b4ebf3c3 + md5: 9a17230f95733c04dc40a2b1e5491d74 + depends: + - libzlib >=1.2.13,<2.0.0a0 + - ucrt >=10.0.20348.0 + - vc >=14.2,<15 + - vc14_runtime >=14.29.30139 + arch: x86_64 + platform: win + license: BSD-3-Clause + license_family: BSD + size: 349143 + timestamp: 1714723445995 diff --git a/pixi.toml b/pixi.toml index 331b69c734fd..f056eea2cd94 100644 --- a/pixi.toml +++ b/pixi.toml @@ -3,7 +3,7 @@ name = "FreeCAD" version = "0.22.0" description = "pixi instructions for FreeCAD" authors = ["looooo "] -channels = ["conda-forge/label/pivy_rc", "conda-forge"] +channels = ["conda-forge"] platforms = [ "linux-64", "linux-aarch64", "osx-64", "osx-arm64", "win-64" ] [dependencies] @@ -34,7 +34,7 @@ ply = "*" pre-commit = "*" pybind11 = "*" pyside6 = "*" -python = "3.12" +python = "3.13" pyyaml = "*" qt6-main = "*" scipy = ">=1.14.1,<2" @@ -75,6 +75,7 @@ sed = "*" sysroot_linux-64 = "*" xorg-x11-server-common-cos6-x86_64 = "*" xorg-x11-server-xvfb-cos6-x86_64 = "*" +xorg-xproto = "*" ## Linux Dependencies (aarch64) [target.linux-aarch64.dependencies] @@ -108,6 +109,7 @@ sed = "*" sysroot_linux-aarch64 = "*" xorg-x11-server-common-cos7-aarch64 = "*" xorg-x11-server-xvfb-cos7-aarch64 = "*" +xorg-xproto = "*" ## macOS Dependencies (Intel) [target.osx-64.dependencies] @@ -142,6 +144,7 @@ configure-release = { cmd = [ "cmake", "-B", "build", "--preset", "conda-macos-r configure = { cmd = [ "cmake", "-B", "build", "--preset", "conda-windows-debug", "-DFREECAD_QT_VERSION=6", "-DBUILD_REVERSEENGINEERING=OFF" ], depends-on = ["initialize"]} configure-debug = { cmd = [ "cmake", "-B", "build", "--preset", "conda-windows-debug", "-DFREECAD_QT_VERSION=6", "-DBUILD_REVERSEENGINEERING=OFF" ], depends-on = ["initialize"]} configure-release = { cmd = [ "cmake", "-B", "build", "--preset", "conda-windows-release", "-DFREECAD_QT_VERSION=6", "-DBUILD_REVERSEENGINEERING=OFF" ], depends-on = ["initialize"]} +freecad = { cmd = [ ".pixi/envs/default/Library/bin/FreeCAD.exe" ], depends-on = ["install"]} ## Tasks [tasks] diff --git a/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp b/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp index e9895d615717..4e9d6dc05764 100644 --- a/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp +++ b/src/3rdParty/salomesmesh/src/SMDS/SMDS_UnstructuredGrid.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include #include @@ -249,14 +250,16 @@ void SMDS_UnstructuredGrid::compactGrid(std::vector& idNodesOldToNew, int n } } - if (this->FaceLocations) + vtkIdTypeArray* thisFaceLocations = GetFaceLocations(); + vtkIdTypeArray* thisFaces = GetFaces(); + if (thisFaceLocations) { vtkIdTypeArray *newFaceLocations = vtkIdTypeArray::New(); newFaceLocations->Initialize(); newFaceLocations->Allocate(newTypes->GetSize()); vtkIdTypeArray *newFaces = vtkIdTypeArray::New(); newFaces->Initialize(); - newFaces->Allocate(this->Faces->GetSize()); + newFaces->Allocate(thisFaces->GetSize()); for (int i = 0; i < oldCellSize; i++) { if (this->Types->GetValue(i) == VTK_EMPTY_CELL) @@ -265,16 +268,16 @@ void SMDS_UnstructuredGrid::compactGrid(std::vector& idNodesOldToNew, int n if (newTypes->GetValue(newCellId) == VTK_POLYHEDRON) { newFaceLocations->InsertNextValue(newFaces->GetMaxId()+1); - int oldFaceLoc = this->FaceLocations->GetValue(i); - int nCellFaces = this->Faces->GetValue(oldFaceLoc++); + int oldFaceLoc = thisFaceLocations->GetValue(i); + int nCellFaces = thisFaces->GetValue(oldFaceLoc++); newFaces->InsertNextValue(nCellFaces); for (int n=0; nFaces->GetValue(oldFaceLoc++); + int nptsInFace = thisFaces->GetValue(oldFaceLoc++); newFaces->InsertNextValue(nptsInFace); for (int k=0; kFaces->GetValue(oldFaceLoc++); + int oldpt = thisFaces->GetValue(oldFaceLoc++); newFaces->InsertNextValue(idNodesOldToNew[oldpt]); } } @@ -292,7 +295,7 @@ void SMDS_UnstructuredGrid::compactGrid(std::vector& idNodesOldToNew, int n } else { - this->SetCells(newTypes, newLocations, newConnectivity, FaceLocations, Faces); + this->SetCells(newTypes, newLocations, newConnectivity, thisFaceLocations, thisFaces); } newPoints->Delete(); diff --git a/src/App/Application.cpp b/src/App/Application.cpp index 5a07c132f4bf..1eb6ff50f858 100644 --- a/src/App/Application.cpp +++ b/src/App/Application.cpp @@ -2060,6 +2060,7 @@ void Application::initTypes() App::PropertyElectricCharge ::init(); App::PropertyElectricCurrent ::init(); App::PropertyElectricPotential ::init(); + App::PropertyElectromagneticPotential ::init(); App::PropertyFrequency ::init(); App::PropertyForce ::init(); App::PropertyHeatFlux ::init(); @@ -2251,6 +2252,7 @@ void parseProgramOptions(int ac, char ** av, const string& exe, variables_map& v ("run-test,t", value()->implicit_value(""),"Run a given test case (use 0 (zero) to run all tests). If no argument is provided then return list of all available tests.") ("run-open,r", value()->implicit_value(""),"Run a given test case (use 0 (zero) to run all tests). If no argument is provided then return list of all available tests. Keeps UI open after test(s) complete.") ("module-path,M", value< vector >()->composing(),"Additional module paths") + ("macro-path,E", value< vector >()->composing(),"Additional macro paths") ("python-path,P", value< vector >()->composing(),"Additional python paths") ("disable-addon", value< vector >()->composing(),"Disable a given addon.") ("single-instance", "Allow to run a single instance of the application") @@ -2293,7 +2295,7 @@ void parseProgramOptions(int ac, char ** av, const string& exe, variables_map& v #endif ; - + //0000723: improper handling of qt specific command line arguments std::vector args; bool merge=false; @@ -2428,6 +2430,15 @@ void processProgramOptions(const variables_map& vm, std::map Macros = vm["macro-path"].as< vector >(); + string temp; + for (const auto & It : Macros) + temp += It + ";"; + temp.erase(temp.end()-1); + mConfig["AdditionalMacroPaths"] = temp; + } + if (vm.count("python-path")) { vector Paths = vm["python-path"].as< vector >(); for (const auto & It : Paths) @@ -2592,7 +2603,7 @@ void Application::initConfig(int argc, char ** argv) // extract home paths ExtractUserPath(); - + if (vm.count("safe-mode")) { SafeMode::StartSafeMode(); } diff --git a/src/App/Datums.cpp b/src/App/Datums.cpp index 75a6b06e2b79..a551381c457f 100644 --- a/src/App/Datums.cpp +++ b/src/App/Datums.cpp @@ -1,24 +1,23 @@ /*************************************************************************** - * Copyright (c) 2015 Stefan Trger * + * Copyright (c) 2015 Stefan Tröger * * Copyright (c) 2015 Alexander Golubev (Fat-Zer) * * Copyright (c) 2024 Ondsel (PL Boyer) * * * - * This file is part of the FreeCAD CAx development system. * + * This file is part of FreeCAD. * * * - * This library is free software; you can redistribute it and/or * - * modify it under the terms of the GNU Library General Public * - * License as published by the Free Software Foundation; either * - * version 2 of the License, or (at your option) any later version. * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * * * - * This library is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Library General Public License for more details. * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * * * - * You should have received a copy of the GNU Library General Public * - * License along with this library; see the file COPYING.LIB. If not, * - * write to the Free Software Foundation, Inc., 59 Temple Place, * - * Suite 330, Boston, MA 02111-1307, USA * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * * * ***************************************************************************/ @@ -207,9 +206,9 @@ const std::vector& LocalCoordinateSystem::getS { static const std::vector setupData = { // clang-format off - {App::Line::getClassTypeId(), AxisRoles[0], tr("X-axis"), Base::Rotation()}, - {App::Line::getClassTypeId(), AxisRoles[1], tr("Y-axis"), Base::Rotation(Base::Vector3d(1, 1, 1), M_PI * 2 / 3)}, - {App::Line::getClassTypeId(), AxisRoles[2], tr("Z-axis"), Base::Rotation(Base::Vector3d(1,-1, 1), M_PI * 2 / 3)}, + {App::Line::getClassTypeId(), AxisRoles[0], tr("X-axis"), Base::Rotation(Base::Vector3d(1, 1, 1), M_PI * 2 / 3)}, + {App::Line::getClassTypeId(), AxisRoles[1], tr("Y-axis"), Base::Rotation(Base::Vector3d(-1, 1, 1), M_PI * 2 / 3)}, + {App::Line::getClassTypeId(), AxisRoles[2], tr("Z-axis"), Base::Rotation()}, {App::Plane::getClassTypeId(), PlaneRoles[0], tr("XY-plane"), Base::Rotation()}, {App::Plane::getClassTypeId(), PlaneRoles[1], tr("XZ-plane"), Base::Rotation(1.0, 0.0, 0.0, 1.0)}, {App::Plane::getClassTypeId(), PlaneRoles[2], tr("YZ-plane"), Base::Rotation(Base::Vector3d(1, 1, 1), M_PI * 2 / 3)}, @@ -277,6 +276,56 @@ void LocalCoordinateSystem::unsetupObject() } } +void LocalCoordinateSystem::onDocumentRestored() +{ + GeoFeature::onDocumentRestored(); + + // In 0.22 origins did not have point. + migrateOriginPoint(); + + // In 0.22 the axis placement were wrong. The X axis had identity placement instead of the Z. + // This was fixed but we need to migrate old files. + migrateXAxisPlacement(); +} + +void LocalCoordinateSystem::migrateOriginPoint() +{ + auto features = OriginFeatures.getValues(); + + auto isOrigin = [](App::DocumentObject* obj) { + return obj->isDerivedFrom() && + strcmp(static_cast(obj)->Role.getValue(), PointRoles[0]) == 0; + }; + if (std::none_of(features.begin(), features.end(), isOrigin)) { + auto data = getData(PointRoles[0]); + auto* origin = createDatum(data); + features.push_back(origin); + OriginFeatures.setValues(features); + } +} + +void LocalCoordinateSystem::migrateXAxisPlacement() +{ + constexpr const double tolerance = 1e-5; + auto features = OriginFeatures.getValues(); + + const auto& setupData = getSetupData(); + for (auto* obj : features) { + auto* feature = dynamic_cast (obj); + if (!feature) { continue; } + for (auto data : setupData) { + // ensure the rotation is correct for the role + if (std::strcmp(feature->Role.getValue(), data.role) == 0) { + if (!feature->Placement.getValue().getRotation().isSame(data.rot, tolerance)) { + feature->Placement.setValue(Base::Placement(Base::Vector3d(), data.rot)); + getDocument()->setStatus(App::Document::MigrateLCS, true); + } + break; + } + } + } +} + // ---------------------------------------------------------------------------- LocalCoordinateSystem::LCSExtension::LCSExtension(LocalCoordinateSystem* obj) diff --git a/src/App/Datums.h b/src/App/Datums.h index 8e3d567ea1d6..b199ffebd8ef 100644 --- a/src/App/Datums.h +++ b/src/App/Datums.h @@ -3,22 +3,21 @@ * Copyright (c) 2015 Alexander Golubev (Fat-Zer) * * Copyright (c) 2024 Ondsel (PL Boyer) * * * - * This file is part of the FreeCAD CAx development system. * + * This file is part of FreeCAD. * * * - * This library is free software; you can redistribute it and/or * - * modify it under the terms of the GNU Library General Public * - * License as published by the Free Software Foundation; either * - * version 2 of the License, or (at your option) any later version. * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * * * - * This library is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Library General Public License for more details. * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * * * - * You should have received a copy of the GNU Library General Public * - * License along with this library; see the file COPYING.LIB. If not, * - * write to the Free Software Foundation, Inc., 59 Temple Place, * - * Suite 330, Boston, MA 02111-1307, USA * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * * * ***************************************************************************/ @@ -201,7 +200,7 @@ class AppExport LocalCoordinateSystem: public App::GeoFeature virtual bool isOrigin() { return false; - }; + } // Axis links PropertyLinkList OriginFeatures; @@ -213,6 +212,7 @@ class AppExport LocalCoordinateSystem: public App::GeoFeature void setupObject() override; /// Removes all planes and axis if they are still linked to the document void unsetupObject() override; + void onDocumentRestored() override; private: struct SetupData; @@ -245,6 +245,9 @@ class AppExport LocalCoordinateSystem: public App::GeoFeature DatumElement* createDatum(SetupData& data); SetupData getData(const char* role); + + void migrateOriginPoint(); + void migrateXAxisPlacement(); }; } // namespace App diff --git a/src/App/Document.h b/src/App/Document.h index 36a878ee1043..d5fe85b47cc6 100644 --- a/src/App/Document.h +++ b/src/App/Document.h @@ -77,6 +77,7 @@ class AppExport Document: public App::PropertyContainer LinkStampChanged = 11, // Indicates during restore time if any linked document's time stamp has changed IgnoreErrorOnRecompute = 12, // Don't report errors if the recompute failed RecomputeOnRestore = 13, // Mark pending recompute on restore for migration purposes + MigrateLCS = 14 // Migrate local coordinate system of older versions }; // clang-format on diff --git a/src/App/Expression.cpp b/src/App/Expression.cpp index 7ec87852da8c..a6169b9697c2 100644 --- a/src/App/Expression.cpp +++ b/src/App/Expression.cpp @@ -2294,7 +2294,7 @@ Py::Object FunctionExpression::evaluate(const Expression *expr, int f, const std return Py::String(args[0]->getPyValue().as_string()); case PARSEQUANT: { auto quantity_text = args[0]->getPyValue().as_string(); - auto quantity_object = Quantity::parse(QString::fromStdString(quantity_text)); + auto quantity_object = Quantity::parse(quantity_text); return Py::asObject(new QuantityPy(new Quantity(quantity_object))); } case TRANSLATIONM: { @@ -2453,56 +2453,12 @@ Py::Object FunctionExpression::evaluate(const Expression *expr, int f, const std case ABS: unit = v1.getUnit(); break; - case SQRT: { - unit = v1.getUnit(); - - // All components of unit must be either zero or dividable by 2 - UnitSignature s = unit.getSignature(); - if ( !((s.Length % 2) == 0) && - ((s.Mass % 2) == 0) && - ((s.Time % 2) == 0) && - ((s.ElectricCurrent % 2) == 0) && - ((s.ThermodynamicTemperature % 2) == 0) && - ((s.AmountOfSubstance % 2) == 0) && - ((s.LuminousIntensity % 2) == 0) && - ((s.Angle % 2) == 0)) - _EXPR_THROW("All dimensions must be even to compute the square root.",expr); - - unit = Unit(s.Length /2, - s.Mass / 2, - s.Time / 2, - s.ElectricCurrent / 2, - s.ThermodynamicTemperature / 2, - s.AmountOfSubstance / 2, - s.LuminousIntensity / 2, - s.Angle); - break; - } - case CBRT: { - unit = v1.getUnit(); - - // All components of unit must be either zero or dividable by 3 - UnitSignature s = unit.getSignature(); - if ( !((s.Length % 3) == 0) && - ((s.Mass % 3) == 0) && - ((s.Time % 3) == 0) && - ((s.ElectricCurrent % 3) == 0) && - ((s.ThermodynamicTemperature % 3) == 0) && - ((s.AmountOfSubstance % 3) == 0) && - ((s.LuminousIntensity % 3) == 0) && - ((s.Angle % 3) == 0)) - _EXPR_THROW("All dimensions must be multiples of 3 to compute the cube root.",expr); - - unit = Unit(s.Length /3, - s.Mass / 3, - s.Time / 3, - s.ElectricCurrent / 3, - s.ThermodynamicTemperature / 3, - s.AmountOfSubstance / 3, - s.LuminousIntensity / 3, - s.Angle); + case SQRT: + unit = v1.getUnit().sqrt(); + break; + case CBRT: + unit = v1.getUnit().cbrt(); break; - } case ATAN2: if (e2.isNone()) _EXPR_THROW("Invalid second argument.",expr); diff --git a/src/App/FreeCADInit.py b/src/App/FreeCADInit.py index b020f0fd3123..f4ee025aef6e 100644 --- a/src/App/FreeCADInit.py +++ b/src/App/FreeCADInit.py @@ -98,7 +98,8 @@ def InitApplications(): LibFcDir = os.path.realpath(LibFcDir) if (os.path.exists(LibFcDir) and not LibFcDir in libpaths): libpaths.append(LibFcDir) - AddPath = FreeCAD.ConfigGet("AdditionalModulePaths").split(";") + AddPath = FreeCAD.ConfigGet("AdditionalModulePaths").split(";") + \ + FreeCAD.ConfigGet("AdditionalMacroPaths").split(";") HomeMod = FreeCAD.getUserAppDataDir()+"Mod" HomeMod = os.path.realpath(HomeMod) MacroStd = App.getUserMacroDir(False) diff --git a/src/App/GeoFeature.cpp b/src/App/GeoFeature.cpp index 98e627f7c008..d87f405cebd0 100644 --- a/src/App/GeoFeature.cpp +++ b/src/App/GeoFeature.cpp @@ -134,7 +134,7 @@ ElementNamePair GeoFeature::_getElementName(const char* name, } } -DocumentObject* GeoFeature::resolveElement(DocumentObject* obj, +DocumentObject* GeoFeature::resolveElement(const DocumentObject* obj, const char* subname, ElementNamePair& elementName, bool append, diff --git a/src/App/GeoFeature.h b/src/App/GeoFeature.h index 7288a5f3bd6f..cb4dcfbd66c5 100644 --- a/src/App/GeoFeature.h +++ b/src/App/GeoFeature.h @@ -104,7 +104,7 @@ class AppExport GeoFeature: public App::DocumentObject * * @return Return the owner object of the element */ - static DocumentObject* resolveElement(App::DocumentObject* obj, + static DocumentObject* resolveElement(const App::DocumentObject* obj, const char* subname, ElementNamePair& elementName, bool append = false, diff --git a/src/App/Property.cpp b/src/App/Property.cpp index 2b20f8f166df..904d91f8ced6 100644 --- a/src/App/Property.cpp +++ b/src/App/Property.cpp @@ -213,6 +213,7 @@ struct PropertyCleaner auto p = _RemovedProps.back(); _RemovedProps.pop_back(); if (p != prop) { + p->setContainer(nullptr); delete p; } else { diff --git a/src/App/PropertyStandard.cpp b/src/App/PropertyStandard.cpp index 696afa0ec496..606b47e07f77 100644 --- a/src/App/PropertyStandard.cpp +++ b/src/App/PropertyStandard.cpp @@ -1621,10 +1621,10 @@ void PropertyString::setPathValue(const ObjectIdentifier& path, const boost::any setValue(std::to_string(App::any_cast(value))); } else if (value.type() == typeid(Quantity)) { - setValue(boost::any_cast(value).getUserString().toUtf8().constData()); + setValue(boost::any_cast(value).getUserString().c_str()); } else if (value.type() == typeid(std::string)) { - setValue(boost::any_cast(value)); + setValue(boost::any_cast(value)); } else { Base::PyGILStateLocker lock; diff --git a/src/App/PropertyUnits.cpp b/src/App/PropertyUnits.cpp index bd8a0610bcf6..b18ea6b65f89 100644 --- a/src/App/PropertyUnits.cpp +++ b/src/App/PropertyUnits.cpp @@ -48,7 +48,9 @@ TYPESYSTEM_SOURCE(App::PropertyQuantity, App::PropertyFloat) Base::Quantity PropertyQuantity::getQuantityValue() const { - return Quantity(_dValue, _Unit); + Quantity quantity(_dValue, _Unit); + quantity.setFormat(_Format); + return quantity; } const char* PropertyQuantity::getEditorName() const @@ -66,7 +68,7 @@ Base::Quantity PropertyQuantity::createQuantityFromPy(PyObject* value) Base::Quantity quant; if (PyUnicode_Check(value)) { - quant = Quantity::parse(QString::fromUtf8(PyUnicode_AsUTF8(value))); + quant = Quantity::parse(PyUnicode_AsUTF8(value)); } else if (PyFloat_Check(value)) { quant = Quantity(PyFloat_AsDouble(value), _Unit); @@ -129,7 +131,9 @@ void PropertyQuantity::setPathValue(const ObjectIdentifier& /*path*/, const boos const boost::any PropertyQuantity::getPathValue(const ObjectIdentifier& /*path*/) const { - return Quantity(_dValue, _Unit); + Quantity quantity(_dValue, _Unit); + quantity.setFormat(_Format); + return quantity; } //************************************************************************** @@ -554,6 +558,17 @@ PropertyMagnetization::PropertyMagnetization() setUnit(Base::Unit::Magnetization); } +//************************************************************************** +// PropertyElectromagneticPotential +//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ + +TYPESYSTEM_SOURCE(App::PropertyElectromagneticPotential, App::PropertyQuantity) + +PropertyElectromagneticPotential::PropertyElectromagneticPotential() +{ + setUnit(Base::Unit::ElectromagneticPotential); +} + //************************************************************************** // PropertyMass //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ diff --git a/src/App/PropertyUnits.h b/src/App/PropertyUnits.h index 0d4780eac5ff..8a19ead0ceaa 100644 --- a/src/App/PropertyUnits.h +++ b/src/App/PropertyUnits.h @@ -73,6 +73,15 @@ class AppExport PropertyQuantity: public PropertyFloat return PropertyFloat::getValue(); } + const Base::QuantityFormat& getFormat() const + { + return _Format; + } + void setFormat(const Base::QuantityFormat& fmt) + { + _Format = fmt; + } + void setPathValue(const App::ObjectIdentifier& path, const boost::any& value) override; const boost::any getPathValue(const App::ObjectIdentifier& path) const override; @@ -89,6 +98,7 @@ class AppExport PropertyQuantity: public PropertyFloat protected: Base::Quantity createQuantityFromPy(PyObject* value); Base::Unit _Unit; + Base::QuantityFormat _Format; }; /** Float with Unit property @@ -546,6 +556,19 @@ class AppExport PropertyMagnetization: public PropertyQuantity ~PropertyMagnetization() override = default; }; +/** ElectromagneticPotential property + * This is a property for representing electromagnetic potentials. It is basically a float + * property. On the Gui it has a quantity like Wb/m. + */ +class AppExport PropertyElectromagneticPotential: public PropertyQuantity +{ + TYPESYSTEM_HEADER_WITH_OVERRIDE(); + +public: + PropertyElectromagneticPotential(); + ~PropertyElectromagneticPotential() override = default; +}; + /** Mass property * This is a property for representing mass. It is basically a float * property. On the Gui it has a quantity like kg. diff --git a/src/Base/CMakeLists.txt b/src/Base/CMakeLists.txt index a38b3ed60c25..3159174c119a 100644 --- a/src/Base/CMakeLists.txt +++ b/src/Base/CMakeLists.txt @@ -256,6 +256,7 @@ SET(FreeCADBase_CPP_SRCS Rotation.cpp RotationPyImp.cpp Sequencer.cpp + ServiceProvider.cpp SmartPtrPy.cpp Stream.cpp Swap.cpp @@ -319,6 +320,7 @@ SET(FreeCADBase_HPP_SRCS QtTools.h Reader.h Rotation.h + ServiceProvider.h Sequencer.h SmartPtrPy.h Stream.h @@ -356,7 +358,7 @@ IF (MSVC) ${FreeCADBase_SRCS} StackWalker.cpp StackWalker.h -) + ) ENDIF(MSVC) # Use external zipios++ if specified. diff --git a/src/Base/FileInfo.cpp b/src/Base/FileInfo.cpp index f534d8954e68..e5669ca658b3 100644 --- a/src/Base/FileInfo.cpp +++ b/src/Base/FileInfo.cpp @@ -431,9 +431,7 @@ bool FileInfo::isDir() const return ((st.st_mode & _S_IFDIR) != 0); #elif defined(FC_OS_LINUX) || defined(FC_OS_CYGWIN) || defined(FC_OS_MACOSX) || defined(FC_OS_BSD) - struct stat st - { - }; + struct stat st {}; if (stat(FileName.c_str(), &st) != 0) { return false; } @@ -463,9 +461,7 @@ unsigned int FileInfo::size() const } #elif defined(FC_OS_LINUX) || defined(FC_OS_CYGWIN) || defined(FC_OS_MACOSX) || defined(FC_OS_BSD) - struct stat st - { - }; + struct stat st {}; if (stat(FileName.c_str(), &st) == 0) { bytes = st.st_size; } @@ -487,9 +483,7 @@ TimeInfo FileInfo::lastModified() const } #elif defined(FC_OS_LINUX) || defined(FC_OS_CYGWIN) || defined(FC_OS_MACOSX) || defined(FC_OS_BSD) - struct stat st - { - }; + struct stat st {}; if (stat(FileName.c_str(), &st) == 0) { ti.setTime_t(st.st_mtime); } @@ -511,9 +505,7 @@ TimeInfo FileInfo::lastRead() const } #elif defined(FC_OS_LINUX) || defined(FC_OS_CYGWIN) || defined(FC_OS_MACOSX) || defined(FC_OS_BSD) - struct stat st - { - }; + struct stat st {}; if (stat(FileName.c_str(), &st) == 0) { ti.setTime_t(st.st_atime); } diff --git a/src/Base/Placement.cpp b/src/Base/Placement.cpp index 6e335d495e72..e9b66932e186 100644 --- a/src/Base/Placement.cpp +++ b/src/Base/Placement.cpp @@ -22,6 +22,8 @@ #include "PreCompiled.h" +#include + #include "Placement.h" #include "Matrix.h" #include "Rotation.h" @@ -209,3 +211,18 @@ Placement Placement::sclerp(const Placement& p0, const Placement& p1, double t, Placement trf = p0.inverse() * p1; return p0 * trf.pow(t, shorten); } + +std::string Placement::toString() const +{ + Base::Vector3d pos = getPosition(); + Base::Rotation rot = getRotation(); + + Base::Vector3d axis; + double angle {}; + rot.getRawValue(axis, angle); + + // clang-format off + return fmt::format("position ({:.1f}, {:.1f}, {:.1f}), axis ({:.1f}, {:.1f}, {:.1f}), angle {:.1f}\n", + pos.x, pos.y, pos.z, axis.x, axis.y, axis.z, angle); + // clang-format on +} diff --git a/src/Base/Placement.h b/src/Base/Placement.h index 39c11d470f4c..41bafc4faab2 100644 --- a/src/Base/Placement.h +++ b/src/Base/Placement.h @@ -23,6 +23,8 @@ #ifndef BASE_PLACEMENT_H #define BASE_PLACEMENT_H +#include + #include "Rotation.h" #include "Vector3D.h" @@ -105,6 +107,9 @@ class BaseExport Placement static Placement sclerp(const Placement& p0, const Placement& p1, double t, bool shorten = true); + /// Returns string representation of the placement, useful for debugging + std::string toString() const; + private: Vector3 _pos; Base::Rotation _rot; diff --git a/src/Base/Quantity.cpp b/src/Base/Quantity.cpp index fe4c0e1e9538..41002c6f66cb 100644 --- a/src/Base/Quantity.cpp +++ b/src/Base/Quantity.cpp @@ -22,17 +22,17 @@ #include "PreCompiled.h" #ifndef _PreComp_ -#ifdef FC_OS_WIN32 #define _USE_MATH_DEFINES -#endif // FC_OS_WIN32 +#include #include #endif +#include #include -#include "Quantity.h" + #include "Exception.h" +#include "Quantity.h" #include "UnitsApi.h" -#include /** \defgroup Units Units system \ingroup BASE @@ -81,10 +81,10 @@ Quantity::Quantity(double value, const Unit& unit) , myUnit {unit} {} -Quantity::Quantity(double value, const QString& unit) +Quantity::Quantity(double value, const std::string& unit) : myValue {0.0} { - if (unit.isEmpty()) { + if (unit.empty()) { this->myValue = value; this->myUnit = Unit(); return; @@ -236,29 +236,28 @@ Quantity Quantity::operator-() const return Quantity(-(this->myValue), this->myUnit); } -QString Quantity::getUserString(double& factor, QString& unitString) const +std::string Quantity::getUserString(double& factor, std::string& unitString) const { return Base::UnitsApi::schemaTranslate(*this, factor, unitString); } -QString Quantity::getUserString(UnitsSchema* schema, double& factor, QString& unitString) const +std::string +Quantity::getUserString(UnitsSchema* schema, double& factor, std::string& unitString) const { return schema->schemaTranslate(*this, factor, unitString); } -QString Quantity::getSafeUserString() const +std::string Quantity::getSafeUserString() const { - auto retString = getUserString(); - if (Q_LIKELY(this->myValue != 0)) { - auto feedbackQty = parse(retString); + auto ret = getUserString(); + if (this->myValue) { + auto feedbackQty = parse(ret); auto feedbackVal = feedbackQty.getValue(); if (feedbackVal == 0) { - retString = QStringLiteral("%1 %2").arg(this->myValue).arg(this->getUnit().getString()); + ret = fmt::format("{} {}", this->myValue, this->getUnit().getString()); } } - retString = - QString::fromStdString(Base::Tools::escapeQuotesFromString(retString.toStdString())); - return retString; + return Base::Tools::escapeQuotesFromString(ret); } /// true if it has a number without a unit @@ -282,7 +281,7 @@ bool Quantity::isQuantity() const // true if it has a number with or without a unit bool Quantity::isValid() const { - return !boost::math::isnan(myValue); + return !std::isnan(myValue); } void Quantity::setInvalid() @@ -562,11 +561,11 @@ class StringBufferCleaner #pragma GCC diagnostic pop #endif -Quantity Quantity::parse(const QString& string) +Quantity Quantity::parse(const std::string& string) { // parse from buffer QuantityParser::YY_BUFFER_STATE my_string_buffer = - QuantityParser::yy_scan_string(string.toUtf8().data()); + QuantityParser::yy_scan_string(string.c_str()); QuantityParser::StringBufferCleaner cleaner(my_string_buffer); // set the global return variables QuantResult = Quantity(DOUBLE_MIN); diff --git a/src/Base/Quantity.h b/src/Base/Quantity.h index f61dfcbd82a4..94351aa6ea4f 100644 --- a/src/Base/Quantity.h +++ b/src/Base/Quantity.h @@ -25,7 +25,7 @@ #define BASE_Quantity_H #include "Unit.h" -#include +#include // NOLINTBEGIN #ifndef DOUBLE_MAX @@ -130,7 +130,7 @@ class BaseExport Quantity Quantity(const Quantity&) = default; Quantity(Quantity&&) = default; explicit Quantity(double value, const Unit& unit = Unit()); - explicit Quantity(double value, const QString& unit); + explicit Quantity(double value, const std::string& unit); /// Destruction ~Quantity() = default; @@ -166,17 +166,17 @@ class BaseExport Quantity myFormat = fmt; } /// transfer to user preferred unit/potence - QString getUserString(double& factor, QString& unitString) const; - QString getUserString() const + std::string getUserString(double& factor, std::string& unitString) const; + std::string getUserString() const { // to satisfy GCC double dummy1 {}; - QString dummy2 {}; + std::string dummy2 {}; return getUserString(dummy1, dummy2); } - QString getUserString(UnitsSchema* schema, double& factor, QString& unitString) const; - QString getSafeUserString() const; + std::string getUserString(UnitsSchema* schema, double& factor, std::string& unitString) const; + std::string getSafeUserString() const; - static Quantity parse(const QString& string); + static Quantity parse(const std::string& string); /// returns the unit of the quantity const Unit& getUnit() const diff --git a/src/Base/QuantityPyImp.cpp b/src/Base/QuantityPyImp.cpp index 4a59496f42b9..5cf751485252 100644 --- a/src/Base/QuantityPyImp.cpp +++ b/src/Base/QuantityPyImp.cpp @@ -42,7 +42,7 @@ std::string QuantityPy::representation() const Py::Float flt(val); ret << static_cast(flt.repr()); if (!unit.isEmpty()) { - ret << " " << unit.getString().toUtf8().constData(); + ret << " " << unit.getString(); } return ret.str(); @@ -63,7 +63,7 @@ PyObject* QuantityPy::toStr(PyObject* args) ret.setf(std::ios::fixed, std::ios::floatfield); ret << val; if (!unit.isEmpty()) { - ret << " " << unit.getString().toUtf8().constData(); + ret << " " << unit.getString(); } return Py_BuildValue("s", ret.str().c_str()); @@ -127,10 +127,10 @@ int QuantityPy::PyInit(PyObject* args, PyObject* /*kwd*/) PyErr_Clear(); // set by PyArg_ParseTuple() char* string {}; if (PyArg_ParseTuple(args, "et", "utf-8", &string)) { - QString qstr = QString::fromUtf8(string); + std::string str(string); PyMem_Free(string); try { - *self = Quantity::parse(qstr); + *self = Quantity::parse(str); } catch (const Base::ParserError& e) { PyErr_SetString(PyExc_ValueError, e.what()); @@ -142,7 +142,7 @@ int QuantityPy::PyInit(PyObject* args, PyObject* /*kwd*/) PyErr_Clear(); // set by PyArg_ParseTuple() if (PyArg_ParseTuple(args, "det", &f, "utf-8", &string)) { - QString unit = QString::fromUtf8(string); + std::string unit(string); PyMem_Free(string); try { *self = Quantity(f, unit); @@ -161,15 +161,15 @@ int QuantityPy::PyInit(PyObject* args, PyObject* /*kwd*/) PyObject* QuantityPy::getUserPreferred(PyObject* /*args*/) { - QString uus; + std::string uus; double factor {}; Py::Tuple res(3); - QString uss = getQuantityPtr()->getUserString(factor, uus); + auto uss = getQuantityPtr()->getUserString(factor, uus); - res[0] = Py::String(uss.toUtf8(), "utf-8"); + res[0] = Py::String(uss, "utf-8"); res[1] = Py::Float(factor); - res[2] = Py::String(uus.toUtf8(), "utf-8"); + res[2] = Py::String(uus, "utf-8"); return Py::new_reference_to(res); } @@ -236,9 +236,9 @@ PyObject* QuantityPy::getValueAs(PyObject* args) PyErr_Clear(); char* string {}; if (PyArg_ParseTuple(args, "et", "utf-8", &string)) { - QString qstr = QString::fromUtf8(string); + std::string str(string); PyMem_Free(string); - quant = Quantity::parse(qstr); + quant = Quantity::parse(str); } } @@ -633,7 +633,7 @@ void QuantityPy::setUnit(Py::Object arg) Py::String QuantityPy::getUserString() const { - return {getQuantityPtr()->getUserString().toUtf8(), "utf-8"}; + return {getQuantityPtr()->getUserString(), "utf-8"}; } Py::Dict QuantityPy::getFormat() const diff --git a/src/Base/ServiceProvider.cpp b/src/Base/ServiceProvider.cpp new file mode 100644 index 000000000000..1f99a531008a --- /dev/null +++ b/src/Base/ServiceProvider.cpp @@ -0,0 +1,33 @@ + +// SPDX-License-Identifier: LGPL-2.1-or-later +/**************************************************************************** + * * + * Copyright (c) 2024 Kacper Donat * + * * + * This file is part of FreeCAD. * + * * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * + * * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * + * * + ***************************************************************************/ + +#include "PreCompiled.h" + +#include "ServiceProvider.h" + +Base::ServiceProvider& Base::ServiceProvider::get() +{ + static Base::ServiceProvider instance; + return instance; +} diff --git a/src/Base/ServiceProvider.h b/src/Base/ServiceProvider.h new file mode 100644 index 000000000000..738c56d17222 --- /dev/null +++ b/src/Base/ServiceProvider.h @@ -0,0 +1,143 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/**************************************************************************** + * * + * Copyright (c) 2024 Kacper Donat * + * * + * This file is part of FreeCAD. * + * * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * + * * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * + * * + ***************************************************************************/ + +#ifndef APP_SERVICE_PROVIDER_H +#define APP_SERVICE_PROVIDER_H + +#include + +#include +#include +#include +#include +#include +#include + +namespace Base +{ + +class BaseExport ServiceProvider +{ + struct ServiceDescriptor + { + std::string name; + std::any instance; + + template + T* get() const + { + return std::any_cast(instance); + } + }; + +public: + ServiceProvider() = default; + + /** + * Returns most recent implementation of service specified as T param. + * + * @tparam T Service interface + */ + template + T* provide() const + { + if (auto it = _implementations.find(typeid(T).name()); it != _implementations.end()) { + auto descriptors = it->second; + + if (descriptors.empty()) { + return nullptr; + } + + return descriptors.front().get(); + } + + return nullptr; + } + + /** + * Returns all implementations of service specified as T param. + * + * @tparam T Service interface + */ + template + std::list all() const + { + if (auto it = _implementations.find(typeid(T).name()); it != _implementations.end()) { + auto source = it->second; + + std::list result(source.size()); + + std::transform(source.begin(), + source.end(), + result.begin(), + [](const ServiceDescriptor& descriptor) { + return descriptor.get(); + }); + + return result; + } + + return {}; + } + + /** + * Adds new implementation of service T. + * + * @tparam T Service interface + */ + template + void implement(T* contract) + { + ServiceDescriptor descriptor {typeid(T).name(), contract}; + + _implementations[typeid(T).name()].push_front(descriptor); + } + + static ServiceProvider& get(); + +private: + std::map> _implementations; +}; + +template +T* provideImplementation() +{ + return ServiceProvider::get().provide(); +} + +template +std::list provideAllImplementations() +{ + return ServiceProvider::get().all(); +} + +template +void implementContract(T* implementation) +{ + ServiceProvider::get().implement(implementation); +} + +} // namespace Base + + +#endif // APP_SERVICE_PROVIDER_H diff --git a/src/Base/Unit.cpp b/src/Base/Unit.cpp index 46a5dbe3ef0a..a3c2a12c87a9 100644 --- a/src/Base/Unit.cpp +++ b/src/Base/Unit.cpp @@ -22,9 +22,12 @@ #include "PreCompiled.h" #ifndef _PreComp_ +#include +#include #include #include #include +#include #endif #include "Unit.h" @@ -35,24 +38,28 @@ using namespace Base; // clang-format off -static inline void checkPow(UnitSignature sig, double exp) -{ - auto isInt = [](double value) { - return std::fabs(std::round(value) - value) < std::numeric_limits::epsilon(); - }; - if (!isInt(sig.Length * exp) || - !isInt(sig.Mass * exp) || - !isInt(sig.Time * exp) || - !isInt(sig.ElectricCurrent * exp) || - !isInt(sig.ThermodynamicTemperature * exp) || - !isInt(sig.AmountOfSubstance * exp) || - !isInt(sig.LuminousIntensity * exp) || - !isInt(sig.Angle * exp)) { - throw Base::UnitsMismatchError("pow() of unit not possible"); - } -} - -static inline void checkRange(const char * op, int length, int mass, int time, int electricCurrent, +constexpr int UnitSignatureLengthBits = 4; +constexpr int UnitSignatureMassBits = 4; +constexpr int UnitSignatureTimeBits = 4; +constexpr int UnitSignatureElectricCurrentBits = 4; +constexpr int UnitSignatureThermodynamicTemperatureBits = 4; +constexpr int UnitSignatureAmountOfSubstanceBits = 4; +constexpr int UnitSignatureLuminousIntensityBits = 4; +constexpr int UnitSignatureAngleBits = 4; + +struct UnitSignature { + int32_t Length: UnitSignatureLengthBits; + int32_t Mass: UnitSignatureMassBits; + int32_t Time: UnitSignatureTimeBits; + int32_t ElectricCurrent: UnitSignatureElectricCurrentBits; + int32_t ThermodynamicTemperature: UnitSignatureThermodynamicTemperatureBits; + int32_t AmountOfSubstance: UnitSignatureAmountOfSubstanceBits; + int32_t LuminousIntensity: UnitSignatureLuminousIntensityBits; + int32_t Angle: UnitSignatureAngleBits; +}; + +static inline uint32_t sigVal(const std::string &op, + int length, int mass, int time, int electricCurrent, int thermodynamicTemperature, int amountOfSubstance, int luminousIntensity, int angle) { if ( ( length >= (1 << (UnitSignatureLengthBits - 1)) ) || @@ -63,7 +70,7 @@ static inline void checkRange(const char * op, int length, int mass, int time, i ( amountOfSubstance >= (1 << (UnitSignatureAmountOfSubstanceBits - 1)) ) || ( luminousIntensity >= (1 << (UnitSignatureLuminousIntensityBits - 1)) ) || ( angle >= (1 << (UnitSignatureAngleBits - 1)) ) ) { - throw Base::OverflowError((std::string("Unit overflow in ") + std::string(op)).c_str()); + throw Base::OverflowError(("Unit overflow in " + op).c_str()); } if ( ( length < -(1 << (UnitSignatureLengthBits - 1)) ) || ( mass < -(1 << (UnitSignatureMassBits - 1)) ) || @@ -73,10 +80,25 @@ static inline void checkRange(const char * op, int length, int mass, int time, i ( amountOfSubstance < -(1 << (UnitSignatureAmountOfSubstanceBits - 1)) ) || ( luminousIntensity < -(1 << (UnitSignatureLuminousIntensityBits - 1)) ) || ( angle < -(1 << (UnitSignatureAngleBits - 1)) ) ) { - throw Base::UnderflowError((std::string("Unit underflow in ") + std::string(op)).c_str()); - } + throw Base::UnderflowError(("Unit underflow in " + op).c_str()); + } + + UnitSignature Sig; + Sig.Length = length; + Sig.Mass = mass; + Sig.Time = time; + Sig.ElectricCurrent = electricCurrent; + Sig.ThermodynamicTemperature = thermodynamicTemperature; + Sig.AmountOfSubstance = amountOfSubstance; + Sig.LuminousIntensity = luminousIntensity; + Sig.Angle = angle; + + uint32_t ret; + memcpy(&ret, &Sig, sizeof(ret)); + return ret; } + Unit::Unit(int8_t Length, //NOLINT int8_t Mass, int8_t Time, @@ -86,257 +108,358 @@ Unit::Unit(int8_t Length, //NOLINT int8_t LuminousIntensity, int8_t Angle) { - checkRange("unit", - Length, - Mass, - Time, - ElectricCurrent, - ThermodynamicTemperature, - AmountOfSubstance, - LuminousIntensity, - Angle); - - Sig.Length = Length; - Sig.Mass = Mass; - Sig.Time = Time; - Sig.ElectricCurrent = ElectricCurrent; - Sig.ThermodynamicTemperature = ThermodynamicTemperature; - Sig.AmountOfSubstance = AmountOfSubstance; - Sig.LuminousIntensity = LuminousIntensity; - Sig.Angle = Angle; + Val = sigVal("unit", + Length, + Mass, + Time, + ElectricCurrent, + ThermodynamicTemperature, + AmountOfSubstance, + LuminousIntensity, + Angle); } Unit::Unit() //NOLINT { - Sig.Length = 0; - Sig.Mass = 0; - Sig.Time = 0; - Sig.ElectricCurrent = 0; - Sig.ThermodynamicTemperature = 0; - Sig.AmountOfSubstance = 0; - Sig.LuminousIntensity = 0; - Sig.Angle = 0; + Val = 0; } -Unit::Unit(const QString& expr) // NOLINT +Unit::Unit(const std::string& expr) // NOLINT { try { *this = Quantity::parse(expr).getUnit(); } catch (const Base::ParserError&) { - Sig.Length = 0; - Sig.Mass = 0; - Sig.Time = 0; - Sig.ElectricCurrent = 0; - Sig.ThermodynamicTemperature = 0; - Sig.AmountOfSubstance = 0; - Sig.LuminousIntensity = 0; - Sig.Angle = 0; + Val = 0; } } Unit Unit::pow(double exp) const { - checkPow(Sig, exp); - checkRange("pow()", - static_cast(Sig.Length * exp), - static_cast(Sig.Mass * exp), - static_cast(Sig.Time * exp), - static_cast(Sig.ElectricCurrent * exp), - static_cast(Sig.ThermodynamicTemperature * exp), - static_cast(Sig.AmountOfSubstance * exp), - static_cast(Sig.LuminousIntensity * exp), - static_cast(Sig.Angle * exp)); + UnitSignature sig; + memcpy(&sig, &Val, sizeof(Val)); + auto isInt = [](double value) { + return std::fabs(std::round(value) - value) < std::numeric_limits::epsilon(); + }; + if (!isInt(sig.Length * exp) || + !isInt(sig.Mass * exp) || + !isInt(sig.Time * exp) || + !isInt(sig.ElectricCurrent * exp) || + !isInt(sig.ThermodynamicTemperature * exp) || + !isInt(sig.AmountOfSubstance * exp) || + !isInt(sig.LuminousIntensity * exp) || + !isInt(sig.Angle * exp)) + throw Base::UnitsMismatchError("pow() of unit not possible"); Unit result; - result.Sig.Length = static_cast(Sig.Length * exp); - result.Sig.Mass = static_cast(Sig.Mass * exp); - result.Sig.Time = static_cast(Sig.Time * exp); - result.Sig.ElectricCurrent = static_cast(Sig.ElectricCurrent * exp); - result.Sig.ThermodynamicTemperature = static_cast(Sig.ThermodynamicTemperature * exp); - result.Sig.AmountOfSubstance = static_cast(Sig.AmountOfSubstance * exp); - result.Sig.LuminousIntensity = static_cast(Sig.LuminousIntensity * exp); - result.Sig.Angle = static_cast(Sig.Angle * exp); + result.Val = sigVal("pow()", + sig.Length * exp, + sig.Mass * exp, + sig.Time * exp, + sig.ElectricCurrent * exp, + sig.ThermodynamicTemperature * exp, + sig.AmountOfSubstance * exp, + sig.LuminousIntensity * exp, + sig.Angle * exp); return result; } -bool Unit::isEmpty()const +Unit Unit::sqrt() const { - return (this->Sig.Length == 0) - && (this->Sig.Mass == 0) - && (this->Sig.Time == 0) - && (this->Sig.ElectricCurrent == 0) - && (this->Sig.ThermodynamicTemperature == 0) - && (this->Sig.AmountOfSubstance == 0) - && (this->Sig.LuminousIntensity == 0) - && (this->Sig.Angle == 0); + UnitSignature sig; + memcpy(&sig, &Val, sizeof(Val)); + // All components of unit must be either zero or dividable by 2 + if (!((sig.Length % 2) == 0) && + ((sig.Mass % 2) == 0) && + ((sig.Time % 2) == 0) && + ((sig.ElectricCurrent % 2) == 0) && + ((sig.ThermodynamicTemperature % 2) == 0) && + ((sig.AmountOfSubstance % 2) == 0) && + ((sig.LuminousIntensity % 2) == 0) && + ((sig.Angle % 2) == 0)) + throw Base::UnitsMismatchError("sqrt() needs even dimensions"); + + Unit result; + result.Val = sigVal("sqrt()", + sig.Length >> 1, + sig.Mass >> 1, + sig.Time >> 1, + sig.ElectricCurrent >> 1, + sig.ThermodynamicTemperature >> 1, + sig.AmountOfSubstance >> 1, + sig.LuminousIntensity >> 1, + sig.Angle >> 1); + + return result; } -bool Unit::operator ==(const Unit& that) const +Unit Unit::cbrt() const { - return (this->Sig.Length == that.Sig.Length) - && (this->Sig.Mass == that.Sig.Mass) - && (this->Sig.Time == that.Sig.Time) - && (this->Sig.ElectricCurrent == that.Sig.ElectricCurrent) - && (this->Sig.ThermodynamicTemperature == that.Sig.ThermodynamicTemperature) - && (this->Sig.AmountOfSubstance == that.Sig.AmountOfSubstance) - && (this->Sig.LuminousIntensity == that.Sig.LuminousIntensity) - && (this->Sig.Angle == that.Sig.Angle); + UnitSignature sig; + memcpy(&sig, &Val, sizeof(Val)); + // All components of unit must be either zero or dividable by 3 + if (!((sig.Length % 3) == 0) && + ((sig.Mass % 3) == 0) && + ((sig.Time % 3) == 0) && + ((sig.ElectricCurrent % 3) == 0) && + ((sig.ThermodynamicTemperature % 3) == 0) && + ((sig.AmountOfSubstance % 3) == 0) && + ((sig.LuminousIntensity % 3) == 0) && + ((sig.Angle % 3) == 0)) + throw Base::UnitsMismatchError("cbrt() needs dimensions to be multiples of 3"); + + Unit result; + result.Val = sigVal("cbrt()", + sig.Length / 3, + sig.Mass / 3, + sig.Time / 3, + sig.ElectricCurrent / 3, + sig.ThermodynamicTemperature / 3, + sig.AmountOfSubstance / 3, + sig.LuminousIntensity / 3, + sig.Angle / 3); + + return result; } +int Unit::length() const +{ + UnitSignature sig; + memcpy(&sig, &Val, sizeof(Val)); + return sig.Length; +} -Unit Unit::operator *(const Unit &right) const +int Unit::mass() const +{ + UnitSignature sig; + memcpy(&sig, &Val, sizeof(Val)); + return sig.Mass; +} + + +int Unit::time() const +{ + UnitSignature sig; + memcpy(&sig, &Val, sizeof(Val)); + return sig.Time; +} + +int Unit::electricCurrent() const +{ + UnitSignature sig; + memcpy(&sig, &Val, sizeof(Val)); + return sig.ElectricCurrent; +} + +int Unit::thermodynamicTemperature() const +{ + UnitSignature sig; + memcpy(&sig, &Val, sizeof(Val)); + return sig.ThermodynamicTemperature; +} + +int Unit::amountOfSubstance() const +{ + UnitSignature sig; + memcpy(&sig, &Val, sizeof(Val)); + return sig.AmountOfSubstance; +} + +int Unit::luminousIntensity() const { - checkRange("* operator", - Sig.Length +right.Sig.Length, - Sig.Mass + right.Sig.Mass, - Sig.Time + right.Sig.Time, - Sig.ElectricCurrent + right.Sig.ElectricCurrent, - Sig.ThermodynamicTemperature + right.Sig.ThermodynamicTemperature, - Sig.AmountOfSubstance + right.Sig.AmountOfSubstance, - Sig.LuminousIntensity + right.Sig.LuminousIntensity, - Sig.Angle + right.Sig.Angle); + UnitSignature sig; + memcpy(&sig, &Val, sizeof(Val)); + return sig.LuminousIntensity; +} +int Unit::angle() const +{ + UnitSignature sig; + memcpy(&sig, &Val, sizeof(Val)); + return sig.Angle; +} + +bool Unit::isEmpty() const +{ + return Val == 0; +} + +int Unit::operator [](int index) const +{ + UnitSignature sig; + memcpy(&sig, &Val, sizeof(Val)); + + switch (index) { + case 0: + return sig.Length; + case 1: + return sig.Mass; + case 2: + return sig.Time; + case 3: + return sig.ElectricCurrent; + case 4: + return sig.ThermodynamicTemperature; + case 5: + return sig.AmountOfSubstance; + case 6: + return sig.LuminousIntensity; + case 7: + return sig.Angle; + default: + throw Base::IndexError("Unknown Unit element"); + } +} + +bool Unit::operator ==(const Unit& that) const +{ + return Val == that.Val; +} + +Unit Unit::operator *(const Unit &right) const +{ Unit result; - result.Sig.Length = Sig.Length + right.Sig.Length; - result.Sig.Mass = Sig.Mass + right.Sig.Mass; - result.Sig.Time = Sig.Time + right.Sig.Time; - result.Sig.ElectricCurrent = Sig.ElectricCurrent + right.Sig.ElectricCurrent; - result.Sig.ThermodynamicTemperature = Sig.ThermodynamicTemperature + right.Sig.ThermodynamicTemperature; - result.Sig.AmountOfSubstance = Sig.AmountOfSubstance + right.Sig.AmountOfSubstance; - result.Sig.LuminousIntensity = Sig.LuminousIntensity + right.Sig.LuminousIntensity; - result.Sig.Angle = Sig.Angle + right.Sig.Angle; + UnitSignature sig, rsig; + + memcpy(&sig, &Val, sizeof(Val)); + memcpy(&rsig, &right.Val, sizeof(right.Val)); + result.Val = sigVal("* operator", + sig.Length + rsig.Length, + sig.Mass + rsig.Mass, + sig.Time + rsig.Time, + sig.ElectricCurrent + rsig.ElectricCurrent, + sig.ThermodynamicTemperature + rsig.ThermodynamicTemperature, + sig.AmountOfSubstance + rsig.AmountOfSubstance, + sig.LuminousIntensity + rsig.LuminousIntensity, + sig.Angle + rsig.Angle); return result; } Unit Unit::operator /(const Unit &right) const { - checkRange("/ operator", - Sig.Length - right.Sig.Length, - Sig.Mass - right.Sig.Mass, - Sig.Time - right.Sig.Time, - Sig.ElectricCurrent - right.Sig.ElectricCurrent, - Sig.ThermodynamicTemperature - right.Sig.ThermodynamicTemperature, - Sig.AmountOfSubstance - right.Sig.AmountOfSubstance, - Sig.LuminousIntensity - right.Sig.LuminousIntensity, - Sig.Angle - right.Sig.Angle); - Unit result; - result.Sig.Length = Sig.Length - right.Sig.Length; - result.Sig.Mass = Sig.Mass - right.Sig.Mass; - result.Sig.Time = Sig.Time - right.Sig.Time; - result.Sig.ElectricCurrent = Sig.ElectricCurrent - right.Sig.ElectricCurrent; - result.Sig.ThermodynamicTemperature = Sig.ThermodynamicTemperature - right.Sig.ThermodynamicTemperature; - result.Sig.AmountOfSubstance = Sig.AmountOfSubstance - right.Sig.AmountOfSubstance; - result.Sig.LuminousIntensity = Sig.LuminousIntensity - right.Sig.LuminousIntensity; - result.Sig.Angle = Sig.Angle - right.Sig.Angle; + UnitSignature sig, rsig; + + memcpy(&sig, &Val, sizeof(Val)); + memcpy(&rsig, &right.Val, sizeof(right.Val)); + result.Val = sigVal("/ operator", + sig.Length - rsig.Length, + sig.Mass - rsig.Mass, + sig.Time - rsig.Time, + sig.ElectricCurrent - rsig.ElectricCurrent, + sig.ThermodynamicTemperature - rsig.ThermodynamicTemperature, + sig.AmountOfSubstance - rsig.AmountOfSubstance, + sig.LuminousIntensity - rsig.LuminousIntensity, + sig.Angle - rsig.Angle); return result; } -QString Unit::getString() const +std::string Unit::getString() const { - std::stringstream ret; - if (isEmpty()) { return {}; } - if (Sig.Length > 0 || - Sig.Mass > 0 || - Sig.Time > 0 || - Sig.ElectricCurrent > 0 || - Sig.ThermodynamicTemperature> 0 || - Sig.AmountOfSubstance > 0 || - Sig.LuminousIntensity > 0 || - Sig.Angle > 0 ){ + std::stringstream ret; + UnitSignature sig; + memcpy(&sig, &Val, sizeof(Val)); + + if (sig.Length > 0 || + sig.Mass > 0 || + sig.Time > 0 || + sig.ElectricCurrent > 0 || + sig.ThermodynamicTemperature > 0 || + sig.AmountOfSubstance > 0 || + sig.LuminousIntensity > 0 || + sig.Angle > 0 ) { bool mult = false; - if (Sig.Length > 0) { + if (sig.Length > 0) { mult = true; ret << "mm"; - if (Sig.Length > 1) { - ret << "^" << Sig.Length; + if (sig.Length > 1) { + ret << "^" << sig.Length; } } - if (Sig.Mass > 0) { + if (sig.Mass > 0) { if (mult) { - ret<<'*'; + ret << '*'; } mult = true; ret << "kg"; - if (Sig.Mass > 1) { - ret << "^" << Sig.Mass; + if (sig.Mass > 1) { + ret << "^" << sig.Mass; } } - if (Sig.Time > 0) { + if (sig.Time > 0) { if (mult) { - ret<<'*'; + ret << '*'; } mult = true; ret << "s"; - if (Sig.Time > 1) { - ret << "^" << Sig.Time; + if (sig.Time > 1) { + ret << "^" << sig.Time; } } - if (Sig.ElectricCurrent > 0) { + if (sig.ElectricCurrent > 0) { if (mult) { - ret<<'*'; + ret << '*'; } mult = true; ret << "A"; - if (Sig.ElectricCurrent > 1) { - ret << "^" << Sig.ElectricCurrent; + if (sig.ElectricCurrent > 1) { + ret << "^" << sig.ElectricCurrent; } } - if (Sig.ThermodynamicTemperature > 0) { + if (sig.ThermodynamicTemperature > 0) { if (mult) { - ret<<'*'; + ret << '*'; } mult = true; ret << "K"; - if (Sig.ThermodynamicTemperature > 1) { - ret << "^" << Sig.ThermodynamicTemperature; + if (sig.ThermodynamicTemperature > 1) { + ret << "^" << sig.ThermodynamicTemperature; } } - if (Sig.AmountOfSubstance > 0){ + if (sig.AmountOfSubstance > 0) { if (mult) { - ret<<'*'; + ret << '*'; } mult = true; ret << "mol"; - if (Sig.AmountOfSubstance > 1) { - ret << "^" << Sig.AmountOfSubstance; + if (sig.AmountOfSubstance > 1) { + ret << "^" << sig.AmountOfSubstance; } } - if (Sig.LuminousIntensity > 0) { + if (sig.LuminousIntensity > 0) { if (mult) { - ret<<'*'; + ret << '*'; } mult = true; ret << "cd"; - if (Sig.LuminousIntensity > 1) { - ret << "^" << Sig.LuminousIntensity; + if (sig.LuminousIntensity > 1) { + ret << "^" << sig.LuminousIntensity; } } - if (Sig.Angle > 0) { + if (sig.Angle > 0) { if (mult) { - ret<<'*'; + ret << '*'; } - mult = true; //NOLINT + mult = true; ret << "deg"; - if (Sig.Angle > 1) { - ret << "^" << Sig.Angle; + if (sig.Angle > 1) { + ret << "^" << sig.Angle; } } } @@ -344,113 +467,113 @@ QString Unit::getString() const ret << "1"; } - if (Sig.Length < 0 || - Sig.Mass < 0 || - Sig.Time < 0 || - Sig.ElectricCurrent < 0 || - Sig.ThermodynamicTemperature< 0 || - Sig.AmountOfSubstance < 0 || - Sig.LuminousIntensity < 0 || - Sig.Angle < 0 ){ + if (sig.Length < 0 || + sig.Mass < 0 || + sig.Time < 0 || + sig.ElectricCurrent < 0 || + sig.ThermodynamicTemperature < 0 || + sig.AmountOfSubstance < 0 || + sig.LuminousIntensity < 0 || + sig.Angle < 0 ) { ret << "/"; int nnom = 0; - nnom += Sig.Length<0?1:0; - nnom += Sig.Mass<0?1:0; - nnom += Sig.Time<0?1:0; - nnom += Sig.ElectricCurrent<0?1:0; - nnom += Sig.ThermodynamicTemperature<0?1:0; - nnom += Sig.AmountOfSubstance<0?1:0; - nnom += Sig.LuminousIntensity<0?1:0; - nnom += Sig.Angle<0?1:0; + nnom += sig.Length < 0 ? 1 : 0; + nnom += sig.Mass < 0 ? 1 : 0; + nnom += sig.Time < 0 ? 1 : 0; + nnom += sig.ElectricCurrent < 0 ? 1 : 0; + nnom += sig.ThermodynamicTemperature < 0 ? 1 : 0; + nnom += sig.AmountOfSubstance < 0 ? 1 : 0; + nnom += sig.LuminousIntensity < 0 ? 1 : 0; + nnom += sig.Angle < 0 ? 1 : 0; if (nnom > 1) { ret << '('; } - bool mult=false; - if (Sig.Length < 0) { + bool mult = false; + if (sig.Length < 0) { ret << "mm"; mult = true; - if (Sig.Length < -1) { - ret << "^" << abs(Sig.Length); + if (sig.Length < -1) { + ret << "^" << abs(sig.Length); } } - if (Sig.Mass < 0) { + if (sig.Mass < 0) { if (mult) { - ret<<'*'; + ret << '*'; } mult = true; ret << "kg"; - if (Sig.Mass < -1) { - ret << "^" << abs(Sig.Mass); + if (sig.Mass < -1) { + ret << "^" << abs(sig.Mass); } } - if (Sig.Time < 0) { + if (sig.Time < 0) { if (mult) { - ret<<'*'; + ret << '*'; } mult = true; ret << "s"; - if (Sig.Time < -1) { - ret << "^" << abs(Sig.Time); + if (sig.Time < -1) { + ret << "^" << abs(sig.Time); } } - if (Sig.ElectricCurrent < 0) { + if (sig.ElectricCurrent < 0) { if (mult) { - ret<<'*'; + ret << '*'; } mult = true; ret << "A"; - if (Sig.ElectricCurrent < -1) { - ret << "^" << abs(Sig.ElectricCurrent); + if (sig.ElectricCurrent < -1) { + ret << "^" << abs(sig.ElectricCurrent); } } - if (Sig.ThermodynamicTemperature < 0) { + if (sig.ThermodynamicTemperature < 0) { if (mult) { - ret<<'*'; + ret << '*'; } mult = true; ret << "K"; - if (Sig.ThermodynamicTemperature < -1) { - ret << "^" << abs(Sig.ThermodynamicTemperature); + if (sig.ThermodynamicTemperature < -1) { + ret << "^" << abs(sig.ThermodynamicTemperature); } } - if (Sig.AmountOfSubstance < 0) { + if (sig.AmountOfSubstance < 0) { if (mult) { - ret<<'*'; + ret << '*'; } mult = true; ret << "mol"; - if (Sig.AmountOfSubstance < -1) { - ret << "^" << abs(Sig.AmountOfSubstance); + if (sig.AmountOfSubstance < -1) { + ret << "^" << abs(sig.AmountOfSubstance); } } - if (Sig.LuminousIntensity < 0) { + if (sig.LuminousIntensity < 0) { if (mult) { - ret<<'*'; + ret << '*'; } mult = true; ret << "cd"; - if (Sig.LuminousIntensity < -1) { - ret << "^" << abs(Sig.LuminousIntensity); + if (sig.LuminousIntensity < -1) { + ret << "^" << abs(sig.LuminousIntensity); } } - if (Sig.Angle < 0) { + if (sig.Angle < 0) { if (mult) { - ret<<'*'; + ret << '*'; } - mult = true; //NOLINT + mult = true; ret << "deg"; - if (Sig.Angle < -1) { - ret << "^" << abs(Sig.Angle); + if (sig.Angle < -1) { + ret << "^" << abs(sig.Angle); } } @@ -459,175 +582,78 @@ QString Unit::getString() const } } - return QString::fromUtf8(ret.str().c_str()); + return ret.str(); } -QString Unit::getTypeString() const +std::string Unit::getTypeString() const { - if (*this == Unit::Acceleration) { - return QString::fromLatin1("Acceleration"); - } - if (*this == Unit::AmountOfSubstance) { - return QString::fromLatin1("AmountOfSubstance"); - } - if (*this == Unit::Angle) { - return QString::fromLatin1("Angle"); - } - if (*this == Unit::AngleOfFriction) { - return QString::fromLatin1("AngleOfFriction"); - } - if (*this == Unit::Area) { - return QString::fromLatin1("Area"); - } - if (*this == Unit::CurrentDensity) { - return QString::fromLatin1("CurrentDensity"); - } - if (*this == Unit::Density) { - return QString::fromLatin1("Density"); - } - if (*this == Unit::DissipationRate) { - return QString::fromLatin1("DissipationRate"); - } - if (*this == Unit::DynamicViscosity) { - return QString::fromLatin1("DynamicViscosity"); - } - if (*this == Unit::ElectricalCapacitance) { - return QString::fromLatin1("ElectricalCapacitance"); - } - if (*this == Unit::ElectricalConductance) { - return QString::fromLatin1("ElectricalConductance"); - } - if (*this == Unit::ElectricalConductivity) { - return QString::fromLatin1("ElectricalConductivity"); - } - if (*this == Unit::ElectricalInductance) { - return QString::fromLatin1("ElectricalInductance"); - } - if (*this == Unit::ElectricalResistance) { - return QString::fromLatin1("ElectricalResistance"); - } - if (*this == Unit::ElectricCharge) { - return QString::fromLatin1("ElectricCharge"); - } - if (*this == Unit::ElectricCurrent) { - return QString::fromLatin1("ElectricCurrent"); - } - if (*this == Unit::ElectricPotential) { - return QString::fromLatin1("ElectricPotential"); - } - if (*this == Unit::Frequency) { - return QString::fromLatin1("Frequency"); - } - if (*this == Unit::Force) { - return QString::fromLatin1("Force"); - } - if (*this == Unit::HeatFlux) { - return QString::fromLatin1("HeatFlux"); - } - if (*this == Unit::InverseArea) { - return QString::fromLatin1("InverseArea"); - } - if (*this == Unit::InverseLength) { - return QString::fromLatin1("InverseLength"); - } - if (*this == Unit::InverseVolume) { - return QString::fromLatin1("InverseVolume"); - } - if (*this == Unit::KinematicViscosity) { - return QString::fromLatin1("KinematicViscosity"); - } - if (*this == Unit::Length) { - return QString::fromLatin1("Length"); - } - if (*this == Unit::LuminousIntensity) { - return QString::fromLatin1("LuminousIntensity"); - } - if (*this == Unit::MagneticFieldStrength) { - return QString::fromLatin1("MagneticFieldStrength"); - } - if (*this == Unit::MagneticFlux) { - return QString::fromLatin1("MagneticFlux"); - } - if (*this == Unit::MagneticFluxDensity) { - return QString::fromLatin1("MagneticFluxDensity"); - } - if (*this == Unit::Magnetization) { - return QString::fromLatin1("Magnetization"); - } - if (*this == Unit::Mass) { - return QString::fromLatin1("Mass"); - } - if (*this == Unit::Pressure) { - return QString::fromLatin1("Pressure"); - } - if (*this == Unit::Power) { - return QString::fromLatin1("Power"); - } - if (*this == Unit::ShearModulus) { - return QString::fromLatin1("ShearModulus"); - } - if (*this == Unit::SpecificEnergy) { - return QString::fromLatin1("SpecificEnergy"); - } - if (*this == Unit::SpecificHeat) { - return QString::fromLatin1("SpecificHeat"); - } - if (*this == Unit::Stiffness) { - return QString::fromLatin1("Stiffness"); - } - if (*this == Unit::StiffnessDensity) { - return QString::fromLatin1("StiffnessDensity"); - } - if (*this == Unit::Stress) { - return QString::fromLatin1("Stress"); - } - if (*this == Unit::Temperature) { - return QString::fromLatin1("Temperature"); - } - if (*this == Unit::ThermalConductivity) { - return QString::fromLatin1("ThermalConductivity"); - } - if (*this == Unit::ThermalExpansionCoefficient) { - return QString::fromLatin1("ThermalExpansionCoefficient"); - } - if (*this == Unit::ThermalTransferCoefficient) { - return QString::fromLatin1("ThermalTransferCoefficient"); - } - if (*this == Unit::TimeSpan) { - return QString::fromLatin1("TimeSpan"); - } - if (*this == Unit::UltimateTensileStrength) { - return QString::fromLatin1("UltimateTensileStrength"); - } - if (*this == Unit::VacuumPermittivity) { - return QString::fromLatin1("VacuumPermittivity"); - } - if (*this == Unit::Velocity) { - return QString::fromLatin1("Velocity"); - } - if (*this == Unit::Volume) { - return QString::fromLatin1("Volume"); - } - if (*this == Unit::VolumeFlowRate) { - return QString::fromLatin1("VolumeFlowRate"); - } - if (*this == Unit::VolumetricThermalExpansionCoefficient) { - return QString::fromLatin1("VolumetricThermalExpansionCoefficient"); - } - if (*this == Unit::Work) { - return QString::fromLatin1("Work"); - } - if (*this == Unit::YieldStrength) { - return QString::fromLatin1("YieldStrength"); - } - if (*this == Unit::YoungsModulus) { - return QString::fromLatin1("YoungsModulus"); - } - if (*this == Unit::Moment) { - return QString::fromLatin1("Moment"); - } - - return {}; + static std::array, 55> unitSpecs {{ + { Unit::Acceleration, "Acceleration" }, + { Unit::AmountOfSubstance, "AmountOfSubstance" }, + { Unit::Angle, "Angle" }, + { Unit::AngleOfFriction, "AngleOfFriction" }, + { Unit::Area, "Area" }, + { Unit::CurrentDensity, "CurrentDensity" }, + { Unit::Density, "Density" }, + { Unit::DissipationRate, "DissipationRate" }, + { Unit::DynamicViscosity, "DynamicViscosity" }, + { Unit::ElectricalCapacitance, "ElectricalCapacitance" }, + { Unit::ElectricalConductance, "ElectricalConductance" }, + { Unit::ElectricalConductivity, "ElectricalConductivity" }, + { Unit::ElectricalInductance, "ElectricalInductance" }, + { Unit::ElectricalResistance, "ElectricalResistance" }, + { Unit::ElectricCharge, "ElectricCharge" }, + { Unit::ElectricCurrent, "ElectricCurrent" }, + { Unit::ElectricPotential, "ElectricPotential" }, + { Unit::ElectromagneticPotential, "ElectromagneticPotential" }, + { Unit::Frequency, "Frequency" }, + { Unit::Force, "Force" }, + { Unit::HeatFlux, "HeatFlux" }, + { Unit::InverseArea, "InverseArea" }, + { Unit::InverseLength, "InverseLength" }, + { Unit::InverseVolume, "InverseVolume" }, + { Unit::KinematicViscosity, "KinematicViscosity" }, + { Unit::Length, "Length" }, + { Unit::LuminousIntensity, "LuminousIntensity" }, + { Unit::MagneticFieldStrength, "MagneticFieldStrength" }, + { Unit::MagneticFlux, "MagneticFlux" }, + { Unit::MagneticFluxDensity, "MagneticFluxDensity" }, + { Unit::Magnetization, "Magnetization" }, + { Unit::Mass, "Mass" }, + { Unit::Pressure, "Pressure" }, + { Unit::Power, "Power" }, + { Unit::ShearModulus, "ShearModulus" }, + { Unit::SpecificEnergy, "SpecificEnergy" }, + { Unit::SpecificHeat, "SpecificHeat" }, + { Unit::Stiffness, "Stiffness" }, + { Unit::StiffnessDensity, "StiffnessDensity" }, + { Unit::Stress, "Stress" }, + { Unit::Temperature, "Temperature" }, + { Unit::ThermalConductivity, "ThermalConductivity" }, + { Unit::ThermalExpansionCoefficient, "ThermalExpansionCoefficient" }, + { Unit::ThermalTransferCoefficient, "ThermalTransferCoefficient" }, + { Unit::TimeSpan, "TimeSpan" }, + { Unit::UltimateTensileStrength, "UltimateTensileStrength" }, + { Unit::VacuumPermittivity, "VacuumPermittivity" }, + { Unit::Velocity, "Velocity" }, + { Unit::Volume, "Volume" }, + { Unit::VolumeFlowRate, "VolumeFlowRate" }, + { Unit::VolumetricThermalExpansionCoefficient, "VolumetricThermalExpansionCoefficient" }, + { Unit::Work, "Work" }, + { Unit::YieldStrength, "YieldStrength" }, + { Unit::YoungsModulus, "YoungsModulus" }, + { Unit::Moment, "Moment" }, + }}; + + const auto spec = + std::find_if(unitSpecs.begin(), unitSpecs.end(), [&](const auto& pair) { + return pair.first == *this; + }); + + if (spec == std::end(unitSpecs)) + return ""; + + return spec->second; } // SI base units @@ -656,6 +682,7 @@ const Unit Unit::ElectricalInductance (2, 1, -2, -2); const Unit Unit::ElectricalResistance (2, 1, -3, -2); const Unit Unit::ElectricCharge (0, 0, 1, 1); const Unit Unit::ElectricPotential (2, 1, -3, -1); +const Unit Unit::ElectromagneticPotential (1, 1, -2, -1); const Unit Unit::Force (1, 1, -2); const Unit Unit::Frequency (0, 0, -1); const Unit Unit::HeatFlux (0, 1, -3, 0, 0); diff --git a/src/Base/Unit.h b/src/Base/Unit.h index 5e957a97a70f..670cf6752694 100644 --- a/src/Base/Unit.h +++ b/src/Base/Unit.h @@ -25,35 +25,12 @@ #define BASE_Unit_H #include -#include +#include #include namespace Base { -#define UnitSignatureLengthBits 4 -#define UnitSignatureMassBits 4 -#define UnitSignatureTimeBits 4 -#define UnitSignatureElectricCurrentBits 4 -#define UnitSignatureThermodynamicTemperatureBits 4 -#define UnitSignatureAmountOfSubstanceBits 4 -#define UnitSignatureLuminousIntensityBits 4 -#define UnitSignatureAngleBits 4 - -// Hint: -// https://en.cppreference.com/w/cpp/language/bit_field -// https://stackoverflow.com/questions/33723631/signed-bit-field-in-c14 -struct UnitSignature -{ - int32_t Length: UnitSignatureLengthBits; - int32_t Mass: UnitSignatureMassBits; - int32_t Time: UnitSignatureTimeBits; - int32_t ElectricCurrent: UnitSignatureElectricCurrentBits; - int32_t ThermodynamicTemperature: UnitSignatureThermodynamicTemperatureBits; - int32_t AmountOfSubstance: UnitSignatureAmountOfSubstanceBits; - int32_t LuminousIntensity: UnitSignatureLuminousIntensityBits; - int32_t Angle: UnitSignatureAngleBits; -}; /** * The Unit class. */ @@ -72,15 +49,15 @@ class BaseExport Unit Unit(); Unit(const Unit&) = default; Unit(Unit&&) = default; - explicit Unit(const QString& expr); + explicit Unit(const std::string& expr); /// Destruction ~Unit() = default; - /** Operators. */ //@{ inline Unit& operator*=(const Unit& that); inline Unit& operator/=(const Unit& that); + int operator[](int index) const; Unit operator*(const Unit&) const; Unit operator/(const Unit&) const; bool operator==(const Unit&) const; @@ -91,17 +68,22 @@ class BaseExport Unit Unit& operator=(const Unit&) = default; Unit& operator=(Unit&&) = default; Unit pow(double exp) const; + Unit sqrt() const; + Unit cbrt() const; //@} - /// get the unit signature - const UnitSignature& getSignature() const - { - return Sig; - } + int length() const; + int mass() const; + int time() const; + int electricCurrent() const; + int thermodynamicTemperature() const; + int amountOfSubstance() const; + int luminousIntensity() const; + int angle() const; bool isEmpty() const; - QString getString() const; + std::string getString() const; /// get the type as an string such as "Area", "Length" or "Pressure". - QString getTypeString() const; + std::string getTypeString() const; /** Predefined Unit types. */ //@{ @@ -137,6 +119,7 @@ class BaseExport Unit static const Unit ElectricalConductance; static const Unit ElectricalResistance; static const Unit ElectricalConductivity; + static const Unit ElectromagneticPotential; static const Unit AmountOfSubstance; static const Unit LuminousIntensity; @@ -176,7 +159,7 @@ class BaseExport Unit //@} private: - UnitSignature Sig; + uint32_t Val; }; inline Unit& Unit::operator*=(const Unit& that) diff --git a/src/Base/UnitPyImp.cpp b/src/Base/UnitPyImp.cpp index 364ffb664187..b6d907f01d2b 100644 --- a/src/Base/UnitPyImp.cpp +++ b/src/Base/UnitPyImp.cpp @@ -34,23 +34,24 @@ using namespace Base; // returns a string which represents the object e.g. when printed in python std::string UnitPy::representation() const { - const UnitSignature& Sig = getUnitPtr()->getSignature(); std::stringstream ret; + Unit* self = getUnitPtr(); + ret << "Unit: "; - ret << getUnitPtr()->getString().toUtf8().constData() << " ("; - ret << Sig.Length << ","; - ret << Sig.Mass << ","; - ret << Sig.Time << ","; - ret << Sig.ElectricCurrent << ","; - ret << Sig.ThermodynamicTemperature << ","; - ret << Sig.AmountOfSubstance << ","; - ret << Sig.LuminousIntensity << ","; - ret << Sig.Angle << ")"; - std::string type = getUnitPtr()->getTypeString().toUtf8().constData(); + ret << self->getString() << " ("; + ret << (*self).length() << ","; + ret << (*self).mass() << ","; + ret << (*self).time() << ","; + ret << (*self).electricCurrent() << ","; + ret << (*self).thermodynamicTemperature() << ","; + ret << (*self).amountOfSubstance() << ","; + ret << (*self).luminousIntensity() << ","; + ret << (*self).angle() << ")"; + + std::string type = self->getTypeString(); if (!type.empty()) { ret << " [" << type << "]"; } - return ret.str(); } @@ -83,10 +84,10 @@ int UnitPy::PyInit(PyObject* args, PyObject* /*kwd*/) // get string char* string {}; if (PyArg_ParseTuple(args, "et", "utf-8", &string)) { - QString qstr = QString::fromUtf8(string); + std::string str(string); PyMem_Free(string); try { - *self = Quantity::parse(qstr).getUnit(); + *self = Quantity::parse(str).getUnit(); return 0; } catch (const Base::ParserError& e) { @@ -206,25 +207,21 @@ PyObject* UnitPy::richCompare(PyObject* v, PyObject* w, int op) Py::String UnitPy::getType() const { - return {getUnitPtr()->getTypeString().toUtf8(), "utf-8"}; + return {getUnitPtr()->getTypeString(), "utf-8"}; } Py::Tuple UnitPy::getSignature() const { - const UnitSignature& Sig = getUnitPtr()->getSignature(); Py::Tuple tuple(8); - tuple.setItem(0, Py::Long(Sig.Length)); - tuple.setItem(1, Py::Long(Sig.Mass)); - tuple.setItem(2, Py::Long(Sig.Time)); - tuple.setItem(3, Py::Long(Sig.ElectricCurrent)); - tuple.setItem(4, Py::Long(Sig.ThermodynamicTemperature)); - tuple.setItem(5, Py::Long(Sig.AmountOfSubstance)); - tuple.setItem(6, Py::Long(Sig.LuminousIntensity)); - tuple.setItem(7, Py::Long(Sig.Angle)); + Unit* self = getUnitPtr(); + + for (auto i = 0; i < tuple.size(); i++) { + tuple.setItem(i, Py::Long((*self)[i])); + } + return tuple; } - PyObject* UnitPy::getCustomAttributes(const char* /*attr*/) const { return nullptr; diff --git a/src/Base/UnitsApi.cpp b/src/Base/UnitsApi.cpp index 5dc5c955707b..2cf72552001a 100644 --- a/src/Base/UnitsApi.cpp +++ b/src/Base/UnitsApi.cpp @@ -22,12 +22,14 @@ #include "PreCompiled.h" -#ifdef __GNUC__ -#include -#endif -#include +#include +#include +#include #include + +#include +#include #include #include "Exception.h" @@ -40,19 +42,6 @@ #include "UnitsSchemaFemMilliMeterNewton.h" #include "UnitsSchemaMeterDecimal.h" -#ifndef M_PI -#define M_PI 3.14159265358979323846 -#endif -#ifndef M_E -#define M_E 2.71828182845904523536 -#endif -#ifndef DOUBLE_MAX -#define DOUBLE_MAX 1.7976931348623157E+308 /* max decimal value of a "double"*/ -#endif -#ifndef DOUBLE_MIN -#define DOUBLE_MIN 2.2250738585072014E-308 /* min decimal value of a "double"*/ -#endif - using namespace Base; // === static attributes ================================================ @@ -139,23 +128,33 @@ void UnitsApi::setSchema(UnitSystem system) // Quantity (e.g. mi=1.8km rather then 1.6km). } -QString UnitsApi::toString(const Base::Quantity& quantity, const QuantityFormat& format) +std::string UnitsApi::toString(const Base::Quantity& quantity, const QuantityFormat& format) { - QString value = QString::fromLatin1("'%1 %2'") - .arg(quantity.getValue(), 0, format.toFormat(), format.precision) - .arg(quantity.getUnit().getString()); - return value; + return fmt::format("'{} {}'", toNumber(quantity, format), quantity.getUnit().getString()); } -QString UnitsApi::toNumber(const Base::Quantity& quantity, const QuantityFormat& format) +std::string UnitsApi::toNumber(const Base::Quantity& quantity, const QuantityFormat& format) { return toNumber(quantity.getValue(), format); } -QString UnitsApi::toNumber(double value, const QuantityFormat& format) +std::string UnitsApi::toNumber(double value, const QuantityFormat& format) { - QString number = QString::fromLatin1("%1").arg(value, 0, format.toFormat(), format.precision); - return number; + std::stringstream ss; + + switch (format.format) { + case QuantityFormat::Fixed: + ss << std::fixed; + break; + case QuantityFormat::Scientific: + ss << std::scientific; + break; + default: + break; + } + ss << std::setprecision(format.precision) << value; + + return ss.str(); } // return true if the current user schema uses multiple units for length (ex. Ft/In) @@ -177,7 +176,8 @@ std::string UnitsApi::getBasicLengthUnit() // === static translation methods ========================================== -QString UnitsApi::schemaTranslate(const Base::Quantity& quant, double& factor, QString& unitString) +std::string +UnitsApi::schemaTranslate(const Base::Quantity& quant, double& factor, std::string& unitString) { return UserPrefSystem->schemaTranslate(quant, factor, unitString); } @@ -185,7 +185,7 @@ QString UnitsApi::schemaTranslate(const Base::Quantity& quant, double& factor, Q double UnitsApi::toDouble(PyObject* args, const Base::Unit& u) { if (PyUnicode_Check(args)) { - QString str = QString::fromUtf8(PyUnicode_AsUTF8(args)); + std::string str(PyUnicode_AsUTF8(args)); // Parse the string Quantity q = Quantity::parse(str); if (q.getUnit() == u) { @@ -208,7 +208,7 @@ Quantity UnitsApi::toQuantity(PyObject* args, const Base::Unit& u) { double d {}; if (PyUnicode_Check(args)) { - QString str = QString::fromUtf8(PyUnicode_AsUTF8(args)); + std::string str(PyUnicode_AsUTF8(args)); // Parse the string Quantity q = Quantity::parse(str); d = q.getValue(); diff --git a/src/Base/UnitsApi.h b/src/Base/UnitsApi.h index 66a0e1848730..672526a43b3a 100644 --- a/src/Base/UnitsApi.h +++ b/src/Base/UnitsApi.h @@ -60,12 +60,12 @@ class BaseExport UnitsApi /// Returns a brief description of a schema static QString getDescription(UnitSystem); - static QString - schemaTranslate(const Base::Quantity& quant, double& factor, QString& unitString); - static QString schemaTranslate(const Base::Quantity& quant) + static std::string + schemaTranslate(const Base::Quantity& quant, double& factor, std::string& unitString); + static std::string schemaTranslate(const Base::Quantity& quant) { // to satisfy GCC double dummy1 {}; - QString dummy2; + std::string dummy2; return UnitsApi::schemaTranslate(quant, dummy1, dummy2); } @@ -73,22 +73,22 @@ class BaseExport UnitsApi * The string is a number in C locale (i.e. the decimal separator is always a dot) and if * needed represented in scientific notation. The string also includes the unit of the quantity. */ - static QString toString(const Base::Quantity& q, - const QuantityFormat& f = QuantityFormat(QuantityFormat::Default)); + static std::string toString(const Base::Quantity& q, + const QuantityFormat& f = QuantityFormat(QuantityFormat::Default)); /** Get a number as string for a quantity of a given format. * The string is a number in C locale (i.e. the decimal separator is always a dot) and if * needed represented in scientific notation. The string doesn't include the unit of the * quantity. */ - static QString toNumber(const Base::Quantity& q, - const QuantityFormat& f = QuantityFormat(QuantityFormat::Default)); + static std::string toNumber(const Base::Quantity& q, + const QuantityFormat& f = QuantityFormat(QuantityFormat::Default)); /** Get a number as string for a double of a given format. * The string is a number in C locale (i.e. the decimal separator is always a dot) and if * needed represented in scientific notation. The string doesn't include the unit of the * quantity. */ - static QString toNumber(double value, - const QuantityFormat& f = QuantityFormat(QuantityFormat::Default)); + static std::string toNumber(double value, + const QuantityFormat& f = QuantityFormat(QuantityFormat::Default)); /// generate a value for a quantity with default user preferred system static double toDouble(PyObject* args, const Base::Unit& u = Base::Unit()); diff --git a/src/Base/UnitsApiPy.cpp b/src/Base/UnitsApiPy.cpp index 6060442972e3..730d915f4371 100644 --- a/src/Base/UnitsApiPy.cpp +++ b/src/Base/UnitsApiPy.cpp @@ -87,10 +87,10 @@ PyObject* UnitsApi::sParseQuantity(PyObject* /*self*/, PyObject* args) } Quantity rtn; - QString qstr = QString::fromUtf8(pstr); + std::string str(pstr); PyMem_Free(pstr); try { - rtn = Quantity::parse(qstr); + rtn = Quantity::parse(str); } catch (const Base::ParserError&) { PyErr_Format(PyExc_ValueError, "invalid unit expression \n"); @@ -174,13 +174,13 @@ PyObject* UnitsApi::sSchemaTranslate(PyObject* /*self*/, PyObject* args) } double factor {}; - QString uus; - QString uss = schema->schemaTranslate(quant, factor, uus); + std::string uus; + std::string uss = schema->schemaTranslate(quant, factor, uus); Py::Tuple res(3); - res[0] = Py::String(uss.toUtf8(), "utf-8"); + res[0] = Py::String(uss, "utf-8"); res[1] = Py::Float(factor); - res[2] = Py::String(uus.toUtf8(), "utf-8"); + res[2] = Py::String(uus, "utf-8"); return Py::new_reference_to(res); } @@ -221,6 +221,5 @@ PyObject* UnitsApi::sToNumber(PyObject* /*self*/, PyObject* args) return nullptr; } - QString string = toNumber(value, qf); - return Py::new_reference_to(Py::String(string.toStdString())); + return Py::new_reference_to(Py::String(toNumber(value, qf))); } diff --git a/src/Base/UnitsSchema.cpp b/src/Base/UnitsSchema.cpp index 288a1fa7ef90..5f3ad05db824 100644 --- a/src/Base/UnitsSchema.cpp +++ b/src/Base/UnitsSchema.cpp @@ -20,7 +20,6 @@ * * ***************************************************************************/ - #include "PreCompiled.h" #ifdef __GNUC__ #include @@ -31,11 +30,11 @@ #include "UnitsSchema.h" - using namespace Base; -QString -UnitsSchema::toLocale(const Base::Quantity& quant, double factor, const QString& unitString) const +std::string UnitsSchema::toLocale(const Base::Quantity& quant, + double factor, + const std::string& unitString) const { QLocale Lc; const QuantityFormat& format = quant.getFormat(); @@ -45,5 +44,7 @@ UnitsSchema::toLocale(const Base::Quantity& quant, double factor, const QString& } QString Ln = Lc.toString((quant.getValue() / factor), format.toFormat(), format.precision); - return QString::fromUtf8("%1 %2").arg(Ln, unitString); + return QString::fromStdString("%1 %2") + .arg(Ln, QString::fromStdString(unitString)) + .toStdString(); } diff --git a/src/Base/UnitsSchema.h b/src/Base/UnitsSchema.h index 5d942ccb840b..1b7af446a08f 100644 --- a/src/Base/UnitsSchema.h +++ b/src/Base/UnitsSchema.h @@ -20,14 +20,12 @@ * * ***************************************************************************/ - #ifndef BASE_UNITSSCHEMA_H #define BASE_UNITSSCHEMA_H -#include +#include #include - namespace Base { @@ -73,10 +71,11 @@ class UnitsSchema {} /// This method translates the quantity in a string as the user may expect it. - virtual QString - schemaTranslate(const Base::Quantity& quant, double& factor, QString& unitString) = 0; + virtual std::string + schemaTranslate(const Base::Quantity& quant, double& factor, std::string& unitString) = 0; - QString toLocale(const Base::Quantity& quant, double factor, const QString& unitString) const; + std::string + toLocale(const Base::Quantity& quant, double factor, const std::string& unitString) const; // return true if this schema uses multiple units for length (ex. Ft/In) virtual bool isMultiUnitLength() const @@ -97,8 +96,6 @@ class UnitsSchema } }; - } // namespace Base - #endif // BASE_UNITSSCHEMA_H diff --git a/src/Base/UnitsSchemaCentimeters.cpp b/src/Base/UnitsSchemaCentimeters.cpp index 033e5584347e..bd75f99fb7c2 100644 --- a/src/Base/UnitsSchemaCentimeters.cpp +++ b/src/Base/UnitsSchemaCentimeters.cpp @@ -22,56 +22,40 @@ #include "PreCompiled.h" -#ifdef __GNUC__ -#include +#ifndef _PreComp_ +#include +#include +#include #endif -#include - #include "UnitsSchemaCentimeters.h" - using namespace Base; - -QString UnitsSchemaCentimeters::schemaTranslate(const Base::Quantity& quant, - double& factor, - QString& unitString) +std::string UnitsSchemaCentimeters::schemaTranslate(const Base::Quantity& quant, + double& factor, + std::string& unitString) { - Unit unit = quant.getUnit(); - if (unit == Unit::Length) { - // all length units in centimeters - unitString = QString::fromLatin1("cm"); - factor = 10.0; - } - else if (unit == Unit::Area) { - // all area units in square meters - unitString = QString::fromLatin1("m^2"); - factor = 1000000.0; - } - else if (unit == Unit::Volume) { - // all area units in cubic meters - unitString = QString::fromLatin1("m^3"); - factor = 1000000000.0; - } - else if (unit == Unit::Power) { - unitString = QString::fromLatin1("W"); - factor = 1000000; - } - else if (unit == Unit::ElectricPotential) { - unitString = QString::fromLatin1("V"); - factor = 1000000; - } - else if (unit == Unit::HeatFlux) { - unitString = QString::fromLatin1("W/m^2"); - factor = 1.0; - } - else if (unit == Unit::Velocity) { - unitString = QString::fromLatin1("mm/min"); - factor = 1.0 / 60; + static std::array>, 7> unitSpecs {{ + {Unit::Length, {"cm", 10.0}}, + {Unit::Area, {"m^2", 1000000.0}}, + {Unit::Volume, {"m^3", 1000000000.0}}, + {Unit::Power, {"W", 1000000.0}}, + {Unit::ElectricPotential, {"V", 1000000.0}}, + {Unit::HeatFlux, {"W/m^2", 1.0}}, + {Unit::Velocity, {"mm/min", 1.0 / 60}}, + }}; + + const auto unit = quant.getUnit(); + const auto spec = std::find_if(unitSpecs.begin(), unitSpecs.end(), [&](const auto& pair) { + return pair.first == unit; + }); + + if (spec != std::end(unitSpecs)) { + unitString = spec->second.first; + factor = spec->second.second; } else { - // default action for all cases without special treatment: unitString = quant.getUnit().getString(); factor = 1.0; } diff --git a/src/Base/UnitsSchemaCentimeters.h b/src/Base/UnitsSchemaCentimeters.h index 5b57e014d542..afe555bb3ecb 100644 --- a/src/Base/UnitsSchemaCentimeters.h +++ b/src/Base/UnitsSchemaCentimeters.h @@ -20,14 +20,11 @@ * * ***************************************************************************/ - #ifndef BASE_UNITSSCHEMACENTIMETERS_H #define BASE_UNITSSCHEMACENTIMETERS_H -#include #include "UnitsSchema.h" - namespace Base { @@ -37,8 +34,8 @@ namespace Base class UnitsSchemaCentimeters: public UnitsSchema { public: - QString - schemaTranslate(const Base::Quantity& quant, double& factor, QString& unitString) override; + std::string + schemaTranslate(const Base::Quantity& quant, double& factor, std::string& unitString) override; std::string getBasicLengthUnit() const override { diff --git a/src/Base/UnitsSchemaFemMilliMeterNewton.cpp b/src/Base/UnitsSchemaFemMilliMeterNewton.cpp index 9baf47a9208a..1f473c4d9d18 100644 --- a/src/Base/UnitsSchemaFemMilliMeterNewton.cpp +++ b/src/Base/UnitsSchemaFemMilliMeterNewton.cpp @@ -23,37 +23,38 @@ #include "PreCompiled.h" -#ifdef __GNUC__ -#include +#ifndef _PreComp_ +#include +#include +#include #endif -#include - #include "UnitsSchemaFemMilliMeterNewton.h" - using namespace Base; - -QString UnitsSchemaFemMilliMeterNewton::schemaTranslate(const Quantity& quant, - double& factor, - QString& unitString) +std::string UnitsSchemaFemMilliMeterNewton::schemaTranslate(const Quantity& quant, + double& factor, + std::string& unitString) { - Unit unit = quant.getUnit(); - if (unit == Unit::Length) { - // all length units in millimeters - unitString = QString::fromLatin1("mm"); - factor = 1.0; - } - else if (unit == Unit::Mass) { - // all mass units in t - unitString = QString::fromUtf8("t"); - factor = 1e3; + static std::array>, 2> unitSpecs {{ + {Unit::Length, {"mm", 1.0}}, + {Unit::Mass, {"t", 1e3}}, + }}; + + const auto unit = quant.getUnit(); + const auto spec = std::find_if(unitSpecs.begin(), unitSpecs.end(), [&](const auto& pair) { + return pair.first == unit; + }); + + if (spec != std::end(unitSpecs)) { + unitString = spec->second.first; + factor = spec->second.second; } else { - // default action for all cases without special treatment: unitString = quant.getUnit().getString(); factor = 1.0; } + return toLocale(quant, factor, unitString); } diff --git a/src/Base/UnitsSchemaFemMilliMeterNewton.h b/src/Base/UnitsSchemaFemMilliMeterNewton.h index 5b47f47d9d0c..313139b17fcd 100644 --- a/src/Base/UnitsSchemaFemMilliMeterNewton.h +++ b/src/Base/UnitsSchemaFemMilliMeterNewton.h @@ -21,18 +21,14 @@ * * ***************************************************************************/ - #ifndef BASE_UNITSSCHEMAFEMMLLIMETERNEWTON_H #define BASE_UNITSSCHEMAFEMMLLIMETERNEWTON_H -#include #include "UnitsSchema.h" - namespace Base { - /* Milli metric / Newton / Seconds unit schema for use in FEM. * Lengths are always in mm. * Mass is in t. @@ -42,12 +38,10 @@ namespace Base class UnitsSchemaFemMilliMeterNewton: public UnitsSchema { public: - QString - schemaTranslate(const Base::Quantity& quant, double& factor, QString& unitString) override; + std::string + schemaTranslate(const Base::Quantity& quant, double& factor, std::string& unitString) override; }; - } // namespace Base - #endif // BASE_UNITSSCHEMAFEMMLLIMETERNEWTON_H diff --git a/src/Base/UnitsSchemaImperial1.cpp b/src/Base/UnitsSchemaImperial1.cpp index 37c6d3086077..4c6eef341724 100644 --- a/src/Base/UnitsSchemaImperial1.cpp +++ b/src/Base/UnitsSchemaImperial1.cpp @@ -30,16 +30,13 @@ #include #endif -#include - #include "UnitsSchemaImperial1.h" - using namespace Base; - -QString -UnitsSchemaImperial1::schemaTranslate(const Quantity& quant, double& factor, QString& unitString) +std::string UnitsSchemaImperial1::schemaTranslate(const Quantity& quant, + double& factor, + std::string& unitString) { double UnitValue = std::abs(quant.getValue()); Unit unit = quant.getUnit(); @@ -49,76 +46,76 @@ UnitsSchemaImperial1::schemaTranslate(const Quantity& quant, double& factor, QSt // now do special treatment on all cases seems necessary: if (unit == Unit::Length) { // Length handling ============================ if (UnitValue < 0.00000254) { // smaller then 0.001 thou -> inch and scientific notation - unitString = QString::fromLatin1("in"); + unitString = "in"; factor = 25.4; } else if (UnitValue < 2.54) { // smaller then 0.1 inch -> Thou (mil) - unitString = QString::fromLatin1("thou"); + unitString = "thou"; factor = 0.0254; } else if (UnitValue < 304.8) { - unitString = QString::fromLatin1("\""); + unitString = "\""; factor = 25.4; } else if (UnitValue < 914.4) { - unitString = QString::fromLatin1("\'"); + unitString = "\'"; factor = 304.8; } else if (UnitValue < 1609344.0) { - unitString = QString::fromLatin1("yd"); + unitString = "yd"; factor = 914.4; } else if (UnitValue < 1609344000.0) { - unitString = QString::fromLatin1("mi"); + unitString = "mi"; factor = 1609344.0; } else { // bigger then 1000 mi -> scientific notation - unitString = QString::fromLatin1("in"); + unitString = "in"; factor = 25.4; } } else if (unit == Unit::Angle) { - unitString = QString::fromUtf8("\xC2\xB0"); + unitString = "\xC2\xB0"; factor = 1.0; } else if (unit == Unit::Area) { // TODO: Cascade for the Areas // default action for all cases without special treatment: - unitString = QString::fromLatin1("in^2"); + unitString = "in^2"; factor = 645.16; } else if (unit == Unit::Volume) { // TODO: Cascade for the Volume // default action for all cases without special treatment: - unitString = QString::fromLatin1("in^3"); + unitString = "in^3"; factor = 16387.064; } else if (unit == Unit::Mass) { // TODO: Cascade for the weights // default action for all cases without special treatment: - unitString = QString::fromLatin1("lb"); + unitString = "lb"; factor = 0.45359237; } else if (unit == Unit::Pressure) { if (UnitValue < 6894.744) { // psi is the smallest - unitString = QString::fromLatin1("psi"); + unitString = "psi"; factor = 6.894744825494; } else if (UnitValue < 6894744.825) { - unitString = QString::fromLatin1("ksi"); + unitString = "ksi"; factor = 6894.744825494; } else { // bigger then 1000 ksi -> psi + scientific notation - unitString = QString::fromLatin1("psi"); + unitString = "psi"; factor = 6.894744825494; } } else if (unit == Unit::Stiffness) { // Conversion to lbf/in - unitString = QString::fromLatin1("lbf/in"); + unitString = "lbf/in"; factor = 4.448222 / 0.0254; } else if (unit == Unit::Velocity) { - unitString = QString::fromLatin1("in/min"); + unitString = "in/min"; factor = 25.4 / 60; } else { @@ -130,56 +127,55 @@ UnitsSchemaImperial1::schemaTranslate(const Quantity& quant, double& factor, QSt return toLocale(quant, factor, unitString); } -QString UnitsSchemaImperialDecimal::schemaTranslate(const Base::Quantity& quant, - double& factor, - QString& unitString) +std::string UnitsSchemaImperialDecimal::schemaTranslate(const Base::Quantity& quant, + double& factor, + std::string& unitString) { - // double UnitValue = std::abs(quant.getValue()); Unit unit = quant.getUnit(); // for imperial user/programmer mind; UnitValue is in internal system, that means // mm/kg/s. And all combined units have to be calculated from there! // now do special treatment on all cases seems necessary: if (unit == Unit::Length) { // Length handling ============================ - unitString = QString::fromLatin1("in"); + unitString = "in"; factor = 25.4; } else if (unit == Unit::Angle) { - unitString = QString::fromUtf8("\xC2\xB0"); + unitString = "\xC2\xB0"; factor = 1.0; } else if (unit == Unit::Area) { // TODO: Cascade for the Areas // default action for all cases without special treatment: - unitString = QString::fromLatin1("in^2"); + unitString = "in^2"; factor = 645.16; } else if (unit == Unit::Volume) { // TODO: Cascade for the Volume // default action for all cases without special treatment: - unitString = QString::fromLatin1("in^3"); + unitString = "in^3"; factor = 16387.064; } else if (unit == Unit::Mass) { // TODO: Cascade for the weights // default action for all cases without special treatment: - unitString = QString::fromLatin1("lb"); + unitString = "lb"; factor = 0.45359237; } else if (unit == Unit::Pressure) { - unitString = QString::fromLatin1("psi"); + unitString = "psi"; factor = 6.894744825494; } else if (unit == Unit::Stiffness) { - unitString = QString::fromLatin1("lbf/in"); + unitString = "lbf/in"; factor = 4.448222 / 0.0254; } else if (unit == Unit::Velocity) { - unitString = QString::fromLatin1("in/min"); + unitString = "in/min"; factor = 25.4 / 60; } else if (unit == Unit::Acceleration) { - unitString = QString::fromLatin1("in/min^2"); + unitString = "in/min^2"; factor = 25.4 / 3600; } else { @@ -191,15 +187,15 @@ QString UnitsSchemaImperialDecimal::schemaTranslate(const Base::Quantity& quant, return toLocale(quant, factor, unitString); } -QString UnitsSchemaImperialBuilding::schemaTranslate(const Quantity& quant, - double& factor, - QString& unitString) +std::string UnitsSchemaImperialBuilding::schemaTranslate(const Quantity& quant, + double& factor, + std::string& unitString) { // this schema expresses distances in feet + inches + fractions // ex: 3'- 4 1/4" with proper rounding Unit unit = quant.getUnit(); if (unit == Unit::Length) { - unitString = QString::fromLatin1("in"); + unitString = "in"; factor = 25.4; // Total number of inches to format @@ -227,7 +223,7 @@ QString UnitsSchemaImperialBuilding::schemaTranslate(const Quantity& quant, // If this is zero, nothing to do but return if (ntot == 0) { - return QString::fromLatin1("0"); + return "0"; } // Compute the whole number of feet and remaining units @@ -293,22 +289,22 @@ QString UnitsSchemaImperialBuilding::schemaTranslate(const Quantity& quant, } // Done! - return QString::fromLatin1(output.str().c_str()); + return output.str(); } else if (unit == Unit::Angle) { - unitString = QString::fromUtf8("\xC2\xB0"); + unitString = "\xC2\xB0"; factor = 1.0; } else if (unit == Unit::Area) { - unitString = QString::fromLatin1("sqft"); + unitString = "sqft"; factor = 92903.04; } else if (unit == Unit::Volume) { - unitString = QString::fromLatin1("cft"); + unitString = "cft"; factor = 28316846.592; } else if (unit == Unit::Velocity) { - unitString = QString::fromLatin1("in/min"); + unitString = "in/min"; factor = 25.4 / 60; } else { @@ -319,51 +315,50 @@ QString UnitsSchemaImperialBuilding::schemaTranslate(const Quantity& quant, return toLocale(quant, factor, unitString); } -QString UnitsSchemaImperialCivil::schemaTranslate(const Base::Quantity& quant, - double& factor, - QString& unitString) +std::string UnitsSchemaImperialCivil::schemaTranslate(const Base::Quantity& quant, + double& factor, + std::string& unitString) { - // double UnitValue = std::abs(quant.getValue()); Unit unit = quant.getUnit(); // for imperial user/programmer mind; UnitValue is in internal system, that means // mm/kg/s. And all combined units have to be calculated from there! // now do special treatment on all cases seems necessary: - if (unit == Unit::Length) { // Length handling ============================ - unitString = QString::fromLatin1("ft"); // always ft - factor = 304.8; // 12 * 25.4 + if (unit == Unit::Length) { // Length handling ============================ + unitString = "ft"; // always ft + factor = 304.8; // 12 * 25.4 } else if (unit == Unit::Area) { - unitString = QString::fromLatin1("ft^2"); // always sq.ft + unitString = "ft^2"; // always sq.ft factor = 92903.04; } else if (unit == Unit::Volume) { - unitString = QString::fromLatin1("ft^3"); // always cu. ft + unitString = "ft^3"; // always cu. ft factor = 28316846.592; } else if (unit == Unit::Mass) { - unitString = QString::fromLatin1("lb"); // always lbs. + unitString = "lb"; // always lbs. factor = 0.45359237; } else if (unit == Unit::Pressure) { - unitString = QString::fromLatin1("psi"); + unitString = "psi"; factor = 6.894744825494; } else if (unit == Unit::Stiffness) { - unitString = QString::fromLatin1("lbf/in"); + unitString = "lbf/in"; factor = 4.448222 / 0.0254; } else if (unit == Unit::Velocity) { - unitString = QString::fromLatin1("mph"); + unitString = "mph"; factor = 447.04; // 1mm/sec => mph } // this schema expresses angles in degrees + minutes + seconds else if (unit == Unit::Angle) { - unitString = QString::fromUtf8("deg"); - QString degreeString = QString::fromUtf8("\xC2\xB0"); // degree symbol - QString minuteString = QString::fromUtf8("\xE2\x80\xB2"); // prime symbol - QString secondString = QString::fromUtf8("\xE2\x80\xB3"); // double prime symbol - factor = 1.0; // 1deg = 1"\xC2\xB0 " + unitString = "deg"; + std::string degreeString = "\xC2\xB0"; // degree symbol + std::string minuteString = "\xE2\x80\xB2"; // prime symbol + std::string secondString = "\xE2\x80\xB3"; // double prime symbol + factor = 1.0; // 1deg = 1"\xC2\xB0 " double totalDegrees = quant.getValue() / factor; double wholeDegrees = std::floor(totalDegrees); @@ -378,12 +373,12 @@ QString UnitsSchemaImperialCivil::schemaTranslate(const Base::Quantity& quant, int outSec = static_cast(std::round(rawSeconds)); std::stringstream output; - output << outDeg << degreeString.toUtf8().constData(); + output << outDeg << degreeString; if ((outMin > 0) || (outSec > 0)) { - output << outMin << minuteString.toUtf8().constData(); + output << outMin << minuteString; } if (outSec > 0) { - output << outSec << secondString.toUtf8().constData(); + output << outSec << secondString; } // uncomment this for decimals on seconds // if (remainSeconds < (1.0 * pow(10.0,-Base::UnitsApi::getDecimals())) ) { @@ -392,7 +387,7 @@ QString UnitsSchemaImperialCivil::schemaTranslate(const Base::Quantity& quant, // output << std::setprecision(Base::UnitsApi::getDecimals()) << std::fixed << // rawSeconds << secondString.toStdString(); // } - return QString::fromUtf8(output.str().c_str()); + return output.str(); } else { // default action for all cases without special treatment: diff --git a/src/Base/UnitsSchemaImperial1.h b/src/Base/UnitsSchemaImperial1.h index e7d81b2ad1e0..fe4f10eff5d4 100644 --- a/src/Base/UnitsSchemaImperial1.h +++ b/src/Base/UnitsSchemaImperial1.h @@ -20,18 +20,14 @@ * * ***************************************************************************/ - #ifndef BASE_UNITSSCHEMAIMPERIAL1_H #define BASE_UNITSSCHEMAIMPERIAL1_H -#include #include "UnitsSchema.h" - namespace Base { - /** The schema class for the imperial unit system * Here are the definitions for the imperial unit system. * It also defines how the value/units get printed. @@ -39,10 +35,8 @@ namespace Base class UnitsSchemaImperial1: public UnitsSchema { public: - // virtual void setSchemaUnits(void); - // virtual void resetSchemaUnits(void); - QString - schemaTranslate(const Base::Quantity& quant, double& factor, QString& unitString) override; + std::string + schemaTranslate(const Base::Quantity& quant, double& factor, std::string& unitString) override; std::string getBasicLengthUnit() const override { return {"in"}; @@ -56,10 +50,8 @@ class UnitsSchemaImperial1: public UnitsSchema class UnitsSchemaImperialDecimal: public UnitsSchema { public: - // virtual void setSchemaUnits(void); - // virtual void resetSchemaUnits(void); - QString - schemaTranslate(const Base::Quantity& quant, double& factor, QString& unitString) override; + std::string + schemaTranslate(const Base::Quantity& quant, double& factor, std::string& unitString) override; std::string getBasicLengthUnit() const override { return {"in"}; @@ -73,10 +65,8 @@ class UnitsSchemaImperialDecimal: public UnitsSchema class UnitsSchemaImperialBuilding: public UnitsSchema { public: - // virtual void setSchemaUnits(void); - // virtual void resetSchemaUnits(void); - QString - schemaTranslate(const Base::Quantity& quant, double& factor, QString& unitString) override; + std::string + schemaTranslate(const Base::Quantity& quant, double& factor, std::string& unitString) override; std::string getBasicLengthUnit() const override { return {"ft"}; @@ -96,10 +86,8 @@ class UnitsSchemaImperialBuilding: public UnitsSchema class UnitsSchemaImperialCivil: public UnitsSchema { public: - // virtual void setSchemaUnits(void); - // virtual void resetSchemaUnits(void); - QString - schemaTranslate(const Base::Quantity& quant, double& factor, QString& unitString) override; + std::string + schemaTranslate(const Base::Quantity& quant, double& factor, std::string& unitString) override; std::string getBasicLengthUnit() const override { return {"ft"}; @@ -112,8 +100,6 @@ class UnitsSchemaImperialCivil: public UnitsSchema } }; - } // namespace Base - #endif // BASE_UNITSSCHEMAIMPERIAL1_H diff --git a/src/Base/UnitsSchemaInternal.cpp b/src/Base/UnitsSchemaInternal.cpp index c17cbbe99e8d..63e543d205f8 100644 --- a/src/Base/UnitsSchemaInternal.cpp +++ b/src/Base/UnitsSchemaInternal.cpp @@ -26,17 +26,13 @@ #include #endif -#include - #include "UnitsSchemaInternal.h" #include - using namespace Base; - -QString -UnitsSchemaInternal::schemaTranslate(const Quantity& quant, double& factor, QString& unitString) +std::string +UnitsSchemaInternal::schemaTranslate(const Quantity& quant, double& factor, std::string& unitString) { double UnitValue = std::abs(quant.getValue()); Unit unit = quant.getUnit(); @@ -52,575 +48,579 @@ UnitsSchemaInternal::schemaTranslate(const Quantity& quant, double& factor, QStr // now do special treatment on all cases seems necessary: if (unit == Unit::Length) { // Length handling ============================ if (UnitValue < 1e-6) { // smaller than 0.001 nm -> scientific notation - unitString = QString::fromLatin1("mm"); + unitString = "mm"; factor = 1.0; } else if (UnitValue < 1e-3) { - unitString = QString::fromLatin1("nm"); + unitString = "nm"; factor = 1e-6; } else if (UnitValue < 0.1) { - unitString = QString::fromUtf8("\xC2\xB5m"); + unitString = "\xC2\xB5m"; factor = 1e-3; } else if (UnitValue < 1e4) { - unitString = QString::fromLatin1("mm"); + unitString = "mm"; factor = 1.0; } else if (UnitValue < 1e7) { - unitString = QString::fromLatin1("m"); + unitString = "m"; factor = 1e3; } else if (UnitValue < 1e10) { - unitString = QString::fromLatin1("km"); + unitString = "km"; factor = 1e6; } else { // bigger than 1000 km -> scientific notation - unitString = QString::fromLatin1("m"); + unitString = "m"; factor = 1e3; } } else if (unit == Unit::Area) { if (UnitValue < 100) { - unitString = QString::fromLatin1("mm^2"); + unitString = "mm^2"; factor = 1.0; } else if (UnitValue < 1e6) { - unitString = QString::fromLatin1("cm^2"); + unitString = "cm^2"; factor = 100; } else if (UnitValue < 1e12) { - unitString = QString::fromLatin1("m^2"); + unitString = "m^2"; factor = 1e6; } else { // bigger than 1 square kilometer - unitString = QString::fromLatin1("km^2"); + unitString = "km^2"; factor = 1e12; } } else if (unit == Unit::Volume) { if (UnitValue < 1e3) { // smaller than 1 ul - unitString = QString::fromLatin1("mm^3"); + unitString = "mm^3"; factor = 1.0; } else if (UnitValue < 1e6) { - unitString = QString::fromLatin1("ml"); + unitString = "ml"; factor = 1e3; } else if (UnitValue < 1e9) { - unitString = QString::fromLatin1("l"); + unitString = "l"; factor = 1e6; } else { // bigger than 1000 l - unitString = QString::fromLatin1("m^3"); + unitString = "m^3"; factor = 1e9; } } else if (unit == Unit::Angle) { // TODO: Cascade for the Areas // default action for all cases without special treatment: - unitString = QString::fromUtf8("\xC2\xB0"); + unitString = "\xC2\xB0"; factor = 1.0; } else if (unit == Unit::Mass) { if (UnitValue < 1e-6) { - unitString = QString::fromUtf8("\xC2\xB5g"); + unitString = "\xC2\xB5g"; factor = 1e-9; } else if (UnitValue < 1e-3) { - unitString = QString::fromLatin1("mg"); + unitString = "mg"; factor = 1e-6; } else if (UnitValue < 1.0) { - unitString = QString::fromLatin1("g"); + unitString = "g"; factor = 1e-3; } else if (UnitValue < 1e3) { - unitString = QString::fromLatin1("kg"); + unitString = "kg"; factor = 1.0; } else { - unitString = QString::fromLatin1("t"); + unitString = "t"; factor = 1e3; } } else if (unit == Unit::Density) { if (UnitValue < 0.0001) { - unitString = QString::fromLatin1("kg/m^3"); + unitString = "kg/m^3"; factor = 1e-9; } else if (UnitValue < 1.0) { - unitString = QString::fromLatin1("kg/cm^3"); + unitString = "kg/cm^3"; factor = 0.001; } else { - unitString = QString::fromLatin1("kg/mm^3"); + unitString = "kg/mm^3"; factor = 1.0; } } else if (unit == Unit::ThermalConductivity) { if (UnitValue > 1e6) { - unitString = QString::fromLatin1("W/mm/K"); + unitString = "W/mm/K"; factor = 1e6; } else { - unitString = QString::fromLatin1("W/m/K"); + unitString = "W/m/K"; factor = 1000.0; } } else if (unit == Unit::ThermalExpansionCoefficient) { if (UnitValue < 0.001) { - unitString = QString::fromUtf8("\xC2\xB5m/m/K"); // micro-meter/meter/K + unitString = "\xC2\xB5m/m/K"; // micro-meter/meter/K factor = 1e-6; } else { - unitString = QString::fromLatin1("mm/mm/K"); + unitString = "mm/mm/K"; factor = 1.0; } } else if (unit == Unit::VolumetricThermalExpansionCoefficient) { if (UnitValue < 0.001) { - unitString = QString::fromUtf8("mm^3/m^3/K"); + unitString = "mm^3/m^3/K"; factor = 1e-9; } else { - unitString = QString::fromLatin1("m^3/m^3/K"); + unitString = "m^3/m^3/K"; factor = 1.0; } } else if (unit == Unit::SpecificHeat) { - unitString = QString::fromLatin1("J/kg/K"); + unitString = "J/kg/K"; factor = 1e6; } else if (unit == Unit::ThermalTransferCoefficient) { - unitString = QString::fromLatin1("W/m^2/K"); + unitString = "W/m^2/K"; factor = 1.0; } else if ((unit == Unit::Pressure) || (unit == Unit::Stress)) { if (UnitValue < 10.0) { // Pa is the smallest - unitString = QString::fromLatin1("Pa"); + unitString = "Pa"; factor = 0.001; } else if (UnitValue < 10000.0) { - unitString = QString::fromLatin1("kPa"); + unitString = "kPa"; factor = 1.0; } else if (UnitValue < 10000000.0) { - unitString = QString::fromLatin1("MPa"); + unitString = "MPa"; factor = 1000.0; } else if (UnitValue < 10000000000.0) { - unitString = QString::fromLatin1("GPa"); + unitString = "GPa"; factor = 1e6; } else { // bigger -> scientific notation - unitString = QString::fromLatin1("Pa"); + unitString = "Pa"; factor = 0.001; } } else if ((unit == Unit::Stiffness)) { if (UnitValue < 1) { // mN/m is the smallest - unitString = QString::fromLatin1("mN/m"); + unitString = "mN/m"; factor = 1e-3; } else if (UnitValue < 1e3) { - unitString = QString::fromLatin1("N/m"); + unitString = "N/m"; factor = 1.0; } else if (UnitValue < 1e6) { - unitString = QString::fromLatin1("kN/m"); + unitString = "kN/m"; factor = 1e3; } else { - unitString = QString::fromLatin1("MN/m"); + unitString = "MN/m"; factor = 1e6; } } else if ((unit == Unit::StiffnessDensity)) { if (UnitValue < 1e-3) { - unitString = QString::fromLatin1("Pa/m"); + unitString = "Pa/m"; factor = 1e-6; } else if (UnitValue < 1) { - unitString = QString::fromLatin1("kPa/m"); + unitString = "kPa/m"; factor = 1e-3; } else if (UnitValue < 1e3) { - unitString = QString::fromLatin1("MPa/m"); + unitString = "MPa/m"; factor = 1.0; } else { - unitString = QString::fromLatin1("GPa/m"); + unitString = "GPa/m"; factor = 1e3; } } else if (unit == Unit::Force) { if (UnitValue < 1e3) { - unitString = QString::fromLatin1("mN"); + unitString = "mN"; factor = 1.0; } else if (UnitValue < 1e6) { - unitString = QString::fromLatin1("N"); + unitString = "N"; factor = 1e3; } else if (UnitValue < 1e9) { - unitString = QString::fromLatin1("kN"); + unitString = "kN"; factor = 1e6; } else { - unitString = QString::fromLatin1("MN"); + unitString = "MN"; factor = 1e9; } } // else if (unit == Unit::Moment) { // if (UnitValue < 1e6) { - // unitString = QString::fromLatin1("mNm"); + // unitString = "mNm"; // factor = 1e3; // } // else if (UnitValue < 1e9) { - // unitString = QString::fromLatin1("Nm"); + // unitString = "Nm"; // factor = 1e6; // } // else if (UnitValue < 1e12) { - // unitString = QString::fromLatin1("kNm"); + // unitString = "kNm"; // factor = 1e9; // } // else { - // unitString = QString::fromLatin1("MNm"); + // unitString = "MNm"; // factor = 1e12; // } // } else if (unit == Unit::Power) { if (UnitValue < 1e6) { - unitString = QString::fromLatin1("mW"); + unitString = "mW"; factor = 1e3; } else if (UnitValue < 1e9) { - unitString = QString::fromLatin1("W"); + unitString = "W"; factor = 1e6; } else { - unitString = QString::fromLatin1("kW"); + unitString = "kW"; factor = 1e9; } } else if (unit == Unit::ElectricPotential) { if (UnitValue < 1e6) { - unitString = QString::fromLatin1("mV"); + unitString = "mV"; factor = 1e3; } else if (UnitValue < 1e9) { - unitString = QString::fromLatin1("V"); + unitString = "V"; factor = 1e6; } else if (UnitValue < 1e12) { - unitString = QString::fromLatin1("kV"); + unitString = "kV"; factor = 1e9; } else { // > 1000 kV scientificc notation - unitString = QString::fromLatin1("V"); + unitString = "V"; factor = 1e6; } } else if (unit == Unit::Work) { if (UnitValue < 1.602176634e-10) { - unitString = QString::fromLatin1("eV"); + unitString = "eV"; factor = 1.602176634e-13; } else if (UnitValue < 1.602176634e-7) { - unitString = QString::fromLatin1("keV"); + unitString = "keV"; factor = 1.602176634e-10; } else if (UnitValue < 1.602176634e-4) { - unitString = QString::fromLatin1("MeV"); + unitString = "MeV"; factor = 1.602176634e-7; } else if (UnitValue < 1e6) { - unitString = QString::fromLatin1("mJ"); + unitString = "mJ"; factor = 1e3; } else if (UnitValue < 1e9) { - unitString = QString::fromLatin1("J"); + unitString = "J"; factor = 1e6; } else if (UnitValue < 1e12) { - unitString = QString::fromLatin1("kJ"); + unitString = "kJ"; factor = 1e9; } else if (UnitValue < 3.6e+15) { - unitString = QString::fromLatin1("kWh"); + unitString = "kWh"; factor = 3.6e+12; } else { // bigger than 1000 kWh -> scientific notation - unitString = QString::fromLatin1("J"); + unitString = "J"; factor = 1e6; } } else if (unit == Unit::SpecificEnergy) { - unitString = QString::fromLatin1("m^2/s^2"); + unitString = "m^2/s^2"; factor = 1e6; } else if (unit == Unit::HeatFlux) { - unitString = QString::fromLatin1("W/m^2"); + unitString = "W/m^2"; factor = 1; // unit signature (0,1,-3,0,0) is length independent } else if (unit == Unit::ElectricCharge) { - unitString = QString::fromLatin1("C"); + unitString = "C"; factor = 1.0; } else if (unit == Unit::CurrentDensity) { if (UnitValue <= 1e3) { - unitString = QString::fromLatin1("A/m^2"); + unitString = "A/m^2"; factor = 1e-6; } else { - unitString = QString::fromLatin1("A/mm^2"); + unitString = "A/mm^2"; factor = 1; } } else if (unit == Unit::MagneticFluxDensity) { if (UnitValue <= 1e-3) { - unitString = QString::fromLatin1("G"); + unitString = "G"; factor = 1e-4; } else { - unitString = QString::fromLatin1("T"); + unitString = "T"; factor = 1.0; } } else if (unit == Unit::MagneticFieldStrength) { - unitString = QString::fromLatin1("A/m"); + unitString = "A/m"; factor = 1e-3; } else if (unit == Unit::MagneticFlux) { - unitString = QString::fromLatin1("Wb"); + unitString = "Wb"; factor = 1e6; } else if (unit == Unit::Magnetization) { - unitString = QString::fromLatin1("A/m"); + unitString = "A/m"; factor = 1e-3; } + else if (unit == Unit::ElectromagneticPotential) { + unitString = "Wb/m"; + factor = 1e3; + } else if (unit == Unit::ElectricalConductance) { if (UnitValue < 1e-9) { - unitString = QString::fromUtf8("\xC2\xB5S"); + unitString = "\xC2\xB5S"; factor = 1e-12; } else if (UnitValue < 1e-6) { - unitString = QString::fromLatin1("mS"); + unitString = "mS"; factor = 1e-9; } else { - unitString = QString::fromLatin1("S"); + unitString = "S"; factor = 1e-6; } } else if (unit == Unit::ElectricalResistance) { if (UnitValue < 1e9) { - unitString = QString::fromLatin1("Ohm"); + unitString = "Ohm"; factor = 1e6; } else if (UnitValue < 1e12) { - unitString = QString::fromLatin1("kOhm"); + unitString = "kOhm"; factor = 1e9; } else { - unitString = QString::fromLatin1("MOhm"); + unitString = "MOhm"; factor = 1e12; } } else if (unit == Unit::ElectricalConductivity) { if (UnitValue < 1e-3) { - unitString = QString::fromLatin1("mS/m"); + unitString = "mS/m"; factor = 1e-12; } else if (UnitValue < 1.0) { - unitString = QString::fromLatin1("S/m"); + unitString = "S/m"; factor = 1e-9; } else if (UnitValue < 1e3) { - unitString = QString::fromLatin1("kS/m"); + unitString = "kS/m"; factor = 1e-6; } else { - unitString = QString::fromLatin1("MS/m"); + unitString = "MS/m"; factor = 1e-3; } } else if (unit == Unit::ElectricalCapacitance) { if (UnitValue < 1e-15) { - unitString = QString::fromLatin1("pF"); + unitString = "pF"; factor = 1e-18; } else if (UnitValue < 1e-12) { - unitString = QString::fromLatin1("nF"); + unitString = "nF"; factor = 1e-15; } else if (UnitValue < 1e-9) { // \x reads everything to the end, therefore split - unitString = QString::fromUtf8("\xC2\xB5" - "F"); + unitString = "\xC2\xB5" + "F"; factor = 1e-12; } else if (UnitValue < 1e-6) { - unitString = QString::fromLatin1("mF"); + unitString = "mF"; factor = 1e-9; } else { - unitString = QString::fromLatin1("F"); + unitString = "F"; factor = 1e-6; } } else if (unit == Unit::ElectricalInductance) { if (UnitValue < 1.0) { - unitString = QString::fromLatin1("nH"); + unitString = "nH"; factor = 1e-3; } else if (UnitValue < 1e3) { - unitString = QString::fromUtf8("\xC2\xB5H"); + unitString = "\xC2\xB5H"; factor = 1.0; } else if (UnitValue < 1e6) { - unitString = QString::fromLatin1("mH"); + unitString = "mH"; factor = 1e3; } else { - unitString = QString::fromLatin1("H"); + unitString = "H"; factor = 1e6; } } else if (unit == Unit::VacuumPermittivity) { - unitString = QString::fromLatin1("F/m"); + unitString = "F/m"; factor = 1e-9; } else if (unit == Unit::Frequency) { if (UnitValue < 1e3) { - unitString = QString::fromLatin1("Hz"); + unitString = "Hz"; factor = 1.0; } else if (UnitValue < 1e6) { - unitString = QString::fromLatin1("kHz"); + unitString = "kHz"; factor = 1e3; } else if (UnitValue < 1e9) { - unitString = QString::fromLatin1("MHz"); + unitString = "MHz"; factor = 1e6; } else if (UnitValue < 1e12) { - unitString = QString::fromLatin1("GHz"); + unitString = "GHz"; factor = 1e9; } else { - unitString = QString::fromLatin1("THz"); + unitString = "THz"; factor = 1e12; } } else if (unit == Unit::Velocity) { - unitString = QString::fromLatin1("mm/s"); + unitString = "mm/s"; factor = 1.0; } else if (unit == Unit::DynamicViscosity) { - unitString = QString::fromLatin1("Pa*s"); + unitString = "Pa*s"; factor = 0.001; } else if (unit == Unit::KinematicViscosity) { if (UnitValue < 1e3) { - unitString = QString::fromLatin1("mm^2/s"); + unitString = "mm^2/s"; factor = 1.0; } else { - unitString = QString::fromLatin1("m^2/s"); + unitString = "m^2/s"; factor = 1e6; } } else if (unit == Unit::VolumeFlowRate) { if (UnitValue < 1e3) { - unitString = QString::fromLatin1("mm^3/s"); + unitString = "mm^3/s"; factor = 1.0; } else if (UnitValue < 1e6) { - unitString = QString::fromLatin1("ml/s"); + unitString = "ml/s"; factor = 1e3; } else if (UnitValue < 1e9) { - unitString = QString::fromLatin1("l/s"); + unitString = "l/s"; factor = 1e6; } else { - unitString = QString::fromLatin1("m^3/s"); + unitString = "m^3/s"; factor = 1e9; } } else if (unit == Unit::DissipationRate) { - unitString = QString::fromLatin1("W/kg"); + unitString = "W/kg"; factor = 1e6; } else if (unit == Unit::InverseLength) { if (UnitValue < 1e-6) { // smaller than 0.001 1/km -> scientific notation - unitString = QString::fromLatin1("1/m"); + unitString = "1/m"; factor = 1e-3; } else if (UnitValue < 1e-3) { - unitString = QString::fromLatin1("1/km"); + unitString = "1/km"; factor = 1e-6; } else if (UnitValue < 1.0) { - unitString = QString::fromLatin1("1/m"); + unitString = "1/m"; factor = 1e-3; } else if (UnitValue < 1e3) { - unitString = QString::fromLatin1("1/mm"); + unitString = "1/mm"; factor = 1.0; } else if (UnitValue < 1e6) { - unitString = QString::fromUtf8("1/\xC2\xB5m"); + unitString = "1/\xC2\xB5m"; factor = 1e3; } else if (UnitValue < 1e9) { - unitString = QString::fromLatin1("1/nm"); + unitString = "1/nm"; factor = 1e6; } else { // larger -> scientific notation - unitString = QString::fromLatin1("1/m"); + unitString = "1/m"; factor = 1e-3; } } else if (unit == Unit::InverseArea) { if (UnitValue < 1e-12) { // smaller than 0.001 1/km^2 -> scientific notation - unitString = QString::fromLatin1("1/m^2"); + unitString = "1/m^2"; factor = 1e-6; } else if (UnitValue < 1e-6) { - unitString = QString::fromLatin1("1/km^2"); + unitString = "1/km^2"; factor = 1e-12; } else if (UnitValue < 1.0) { - unitString = QString::fromLatin1("1/m^2"); + unitString = "1/m^2"; factor = 1e-6; } else if (UnitValue < 1e2) { - unitString = QString::fromLatin1("1/cm^2"); + unitString = "1/cm^2"; factor = 1e-2; } else { - unitString = QString::fromLatin1("1/mm^2"); + unitString = "1/mm^2"; factor = 1.0; } } else if (unit == Unit::InverseVolume) { if (UnitValue < 1e-6) { - unitString = QString::fromLatin1("1/m^3"); + unitString = "1/m^3"; factor = 1e-9; } else if (UnitValue < 1e-3) { - unitString = QString::fromLatin1("1/l"); + unitString = "1/l"; factor = 1e-6; } else if (UnitValue < 1.0) { - unitString = QString::fromLatin1("1/ml"); + unitString = "1/ml"; factor = 1e-3; } else { - unitString = QString::fromLatin1("1/mm^3"); + unitString = "1/mm^3"; factor = 1.0; } } diff --git a/src/Base/UnitsSchemaInternal.h b/src/Base/UnitsSchemaInternal.h index 35f9c64c590f..0231112d6037 100644 --- a/src/Base/UnitsSchemaInternal.h +++ b/src/Base/UnitsSchemaInternal.h @@ -20,18 +20,14 @@ * * ***************************************************************************/ - #ifndef BASE_UNITSSCHEMAINTERNAL_H #define BASE_UNITSSCHEMAINTERNAL_H -#include #include "UnitsSchema.h" - namespace Base { - /** The standard units schema * Here is defined what internal (base) units FreeCAD uses. * FreeCAD uses a mm/kg/deg scala. @@ -40,12 +36,10 @@ namespace Base class UnitsSchemaInternal: public UnitsSchema { public: - QString - schemaTranslate(const Base::Quantity& quant, double& factor, QString& unitString) override; + std::string + schemaTranslate(const Base::Quantity& quant, double& factor, std::string& unitString) override; }; - } // namespace Base - #endif // BASE_UNITSSCHEMAINTERNAL_H diff --git a/src/Base/UnitsSchemaMKS.cpp b/src/Base/UnitsSchemaMKS.cpp index 5d921e8166a7..98ef0545ebbd 100644 --- a/src/Base/UnitsSchemaMKS.cpp +++ b/src/Base/UnitsSchemaMKS.cpp @@ -26,16 +26,13 @@ #include #endif -#include - #include "UnitsSchemaMKS.h" #include - using namespace Base; - -QString UnitsSchemaMKS::schemaTranslate(const Quantity& quant, double& factor, QString& unitString) +std::string +UnitsSchemaMKS::schemaTranslate(const Quantity& quant, double& factor, std::string& unitString) { double UnitValue = std::abs(quant.getValue()); Unit unit = quant.getUnit(); @@ -43,571 +40,575 @@ QString UnitsSchemaMKS::schemaTranslate(const Quantity& quant, double& factor, Q // now do special treatment on all cases seems necessary: if (unit == Unit::Length) { // Length handling ============================ if (UnitValue < 1e-6) { // smaller than 0.001 nm -> scientific notation - unitString = QString::fromLatin1("mm"); + unitString = "mm"; factor = 1.0; } else if (UnitValue < 1e-3) { - unitString = QString::fromLatin1("nm"); + unitString = "nm"; factor = 1e-6; } else if (UnitValue < 0.1) { - unitString = QString::fromUtf8("\xC2\xB5m"); + unitString = "\xC2\xB5m"; factor = 1e-3; } else if (UnitValue < 1e4) { - unitString = QString::fromLatin1("mm"); + unitString = "mm"; factor = 1.0; } else if (UnitValue < 1e7) { - unitString = QString::fromLatin1("m"); + unitString = "m"; factor = 1e3; } else if (UnitValue < 1e10) { - unitString = QString::fromLatin1("km"); + unitString = "km"; factor = 1e6; } else { // bigger than 1000 km -> scientific notation - unitString = QString::fromLatin1("m"); + unitString = "m"; factor = 1e3; } } else if (unit == Unit::Area) { if (UnitValue < 100) { - unitString = QString::fromLatin1("mm^2"); + unitString = "mm^2"; factor = 1.0; } else if (UnitValue < 1e6) { - unitString = QString::fromLatin1("cm^2"); + unitString = "cm^2"; factor = 100; } else if (UnitValue < 1e12) { - unitString = QString::fromLatin1("m^2"); + unitString = "m^2"; factor = 1e6; } else { // bigger than 1 square kilometer - unitString = QString::fromLatin1("km^2"); + unitString = "km^2"; factor = 1e12; } } else if (unit == Unit::Volume) { if (UnitValue < 1e3) { // smaller than 1 ul - unitString = QString::fromLatin1("mm^3"); + unitString = "mm^3"; factor = 1.0; } else if (UnitValue < 1e6) { - unitString = QString::fromLatin1("ml"); + unitString = "ml"; factor = 1e3; } else if (UnitValue < 1e9) { - unitString = QString::fromLatin1("l"); + unitString = "l"; factor = 1e6; } else { // bigger than 1000 l - unitString = QString::fromLatin1("m^3"); + unitString = "m^3"; factor = 1e9; } } else if (unit == Unit::Mass) { if (UnitValue < 1e-6) { - unitString = QString::fromUtf8("\xC2\xB5g"); + unitString = "\xC2\xB5g"; factor = 1e-9; } else if (UnitValue < 1e-3) { - unitString = QString::fromLatin1("mg"); + unitString = "mg"; factor = 1e-6; } else if (UnitValue < 1.0) { - unitString = QString::fromLatin1("g"); + unitString = "g"; factor = 1e-3; } else if (UnitValue < 1e3) { - unitString = QString::fromLatin1("kg"); + unitString = "kg"; factor = 1.0; } else { - unitString = QString::fromLatin1("t"); + unitString = "t"; factor = 1e3; } } else if (unit == Unit::Density) { if (UnitValue < 0.0001) { - unitString = QString::fromLatin1("kg/m^3"); + unitString = "kg/m^3"; factor = 0.000000001; } else if (UnitValue < 1.0) { - unitString = QString::fromLatin1("kg/cm^3"); + unitString = "kg/cm^3"; factor = 0.001; } else { - unitString = QString::fromLatin1("kg/mm^3"); + unitString = "kg/mm^3"; factor = 1.0; } } else if (unit == Unit::Acceleration) { - unitString = QString::fromLatin1("m/s^2"); + unitString = "m/s^2"; factor = 1000.0; } else if ((unit == Unit::Pressure) || (unit == Unit::Stress)) { if (UnitValue < 10.0) { // Pa is the smallest - unitString = QString::fromLatin1("Pa"); + unitString = "Pa"; factor = 0.001; } else if (UnitValue < 10000.0) { - unitString = QString::fromLatin1("kPa"); + unitString = "kPa"; factor = 1.0; } else if (UnitValue < 10000000.0) { - unitString = QString::fromLatin1("MPa"); + unitString = "MPa"; factor = 1000.0; } else if (UnitValue < 10000000000.0) { - unitString = QString::fromLatin1("GPa"); + unitString = "GPa"; factor = 1000000.0; } else { // bigger then 1000 GPa -> scientific notation - unitString = QString::fromLatin1("Pa"); + unitString = "Pa"; factor = 0.001; } } else if ((unit == Unit::Stiffness)) { if (UnitValue < 1) { // mN/m is the smallest - unitString = QString::fromLatin1("mN/m"); + unitString = "mN/m"; factor = 1e-3; } else if (UnitValue < 1e3) { - unitString = QString::fromLatin1("N/m"); + unitString = "N/m"; factor = 1.0; } else if (UnitValue < 1e6) { - unitString = QString::fromLatin1("kN/m"); + unitString = "kN/m"; factor = 1e3; } else { - unitString = QString::fromLatin1("MN/m"); + unitString = "MN/m"; factor = 1e6; } } else if ((unit == Unit::StiffnessDensity)) { if (UnitValue < 1e-3) { - unitString = QString::fromLatin1("Pa/m"); + unitString = "Pa/m"; factor = 1e-6; } else if (UnitValue < 1) { - unitString = QString::fromLatin1("kPa/m"); + unitString = "kPa/m"; factor = 1e-3; } else if (UnitValue < 1e3) { - unitString = QString::fromLatin1("MPa/m"); + unitString = "MPa/m"; factor = 1.0; } else { - unitString = QString::fromLatin1("GPa/m"); + unitString = "GPa/m"; factor = 1e3; } } else if (unit == Unit::ThermalConductivity) { if (UnitValue > 1000000) { - unitString = QString::fromLatin1("W/mm/K"); + unitString = "W/mm/K"; factor = 1000000.0; } else { - unitString = QString::fromLatin1("W/m/K"); + unitString = "W/m/K"; factor = 1000.0; } } else if (unit == Unit::ThermalExpansionCoefficient) { if (UnitValue < 0.001) { - unitString = QString::fromUtf8("\xC2\xB5m/m/K"); + unitString = "\xC2\xB5m/m/K"; factor = 0.000001; } else { - unitString = QString::fromLatin1("m/m/K"); + unitString = "m/m/K"; factor = 1.0; } } else if (unit == Unit::VolumetricThermalExpansionCoefficient) { if (UnitValue < 0.001) { - unitString = QString::fromUtf8("mm^3/m^3/K"); + unitString = "mm^3/m^3/K"; factor = 1e-9; } else { - unitString = QString::fromLatin1("m^3/m^3/K"); + unitString = "m^3/m^3/K"; factor = 1.0; } } else if (unit == Unit::SpecificHeat) { - unitString = QString::fromLatin1("J/kg/K"); + unitString = "J/kg/K"; factor = 1000000.0; } else if (unit == Unit::ThermalTransferCoefficient) { - unitString = QString::fromLatin1("W/m^2/K"); + unitString = "W/m^2/K"; factor = 1.0; } else if (unit == Unit::Force) { if (UnitValue < 1e3) { - unitString = QString::fromLatin1("mN"); + unitString = "mN"; factor = 1.0; } else if (UnitValue < 1e6) { - unitString = QString::fromLatin1("N"); + unitString = "N"; factor = 1e3; } else if (UnitValue < 1e9) { - unitString = QString::fromLatin1("kN"); + unitString = "kN"; factor = 1e6; } else { - unitString = QString::fromLatin1("MN"); + unitString = "MN"; factor = 1e9; } } // else if (unit == Unit::Moment) { // if (UnitValue < 1e6) { - // unitString = QString::fromLatin1("mNm"); + // unitString = "mNm"; // factor = 1e3; // } // else if (UnitValue < 1e9) { - // unitString = QString::fromLatin1("Nm"); + // unitString = "Nm"; // factor = 1e6; // } // else if (UnitValue < 1e12) { - // unitString = QString::fromLatin1("kNm"); + // unitString = "kNm"; // factor = 1e9; // } // else { - // unitString = QString::fromLatin1("MNm"); + // unitString = "MNm"; // factor = 1e12; // } // } else if (unit == Unit::Power) { if (UnitValue < 1e6) { - unitString = QString::fromLatin1("mW"); + unitString = "mW"; factor = 1e3; } else if (UnitValue < 1e9) { - unitString = QString::fromLatin1("W"); + unitString = "W"; factor = 1e6; } else { - unitString = QString::fromLatin1("kW"); + unitString = "kW"; factor = 1e9; } } else if (unit == Unit::ElectricPotential) { if (UnitValue < 1e6) { - unitString = QString::fromLatin1("mV"); + unitString = "mV"; factor = 1e3; } else if (UnitValue < 1e9) { - unitString = QString::fromLatin1("V"); + unitString = "V"; factor = 1e6; } else if (UnitValue < 1e12) { - unitString = QString::fromLatin1("kV"); + unitString = "kV"; factor = 1e9; } else { // > 1000 kV scientificc notation - unitString = QString::fromLatin1("V"); + unitString = "V"; factor = 1e6; } } else if (unit == Unit::ElectricCharge) { - unitString = QString::fromLatin1("C"); + unitString = "C"; factor = 1.0; } else if (unit == Unit::CurrentDensity) { if (UnitValue <= 1e3) { - unitString = QString::fromLatin1("A/m^2"); + unitString = "A/m^2"; factor = 1e-6; } else { - unitString = QString::fromLatin1("A/mm^2"); + unitString = "A/mm^2"; factor = 1; } } else if (unit == Unit::MagneticFluxDensity) { if (UnitValue <= 1e-3) { - unitString = QString::fromLatin1("G"); + unitString = "G"; factor = 1e-4; } else { - unitString = QString::fromLatin1("T"); + unitString = "T"; factor = 1.0; } } else if (unit == Unit::MagneticFieldStrength) { - unitString = QString::fromLatin1("A/m"); + unitString = "A/m"; factor = 1e-3; } else if (unit == Unit::MagneticFlux) { - unitString = QString::fromLatin1("Wb"); + unitString = "Wb"; factor = 1e6; } else if (unit == Unit::Magnetization) { - unitString = QString::fromLatin1("A/m"); + unitString = "A/m"; factor = 1e-3; } + else if (unit == Unit::ElectromagneticPotential) { + unitString = "Wb/m"; + factor = 1e3; + } else if (unit == Unit::ElectricalConductance) { if (UnitValue < 1e-9) { - unitString = QString::fromUtf8("\xC2\xB5S"); + unitString = "\xC2\xB5S"; factor = 1e-12; } else if (UnitValue < 1e-6) { - unitString = QString::fromLatin1("mS"); + unitString = "mS"; factor = 1e-9; } else { - unitString = QString::fromLatin1("S"); + unitString = "S"; factor = 1e-6; } } else if (unit == Unit::ElectricalResistance) { if (UnitValue < 1e9) { - unitString = QString::fromLatin1("Ohm"); + unitString = "Ohm"; factor = 1e6; } else if (UnitValue < 1e12) { - unitString = QString::fromLatin1("kOhm"); + unitString = "kOhm"; factor = 1e9; } else { - unitString = QString::fromLatin1("MOhm"); + unitString = "MOhm"; factor = 1e12; } } else if (unit == Unit::ElectricalConductivity) { if (UnitValue < 1e-3) { - unitString = QString::fromLatin1("mS/m"); + unitString = "mS/m"; factor = 1e-12; } else if (UnitValue < 1.0) { - unitString = QString::fromLatin1("S/m"); + unitString = "S/m"; factor = 1e-9; } else if (UnitValue < 1e3) { - unitString = QString::fromLatin1("kS/m"); + unitString = "kS/m"; factor = 1e-6; } else { - unitString = QString::fromLatin1("MS/m"); + unitString = "MS/m"; factor = 1e-3; } } else if (unit == Unit::ElectricalCapacitance) { if (UnitValue < 1e-15) { - unitString = QString::fromLatin1("pF"); + unitString = "pF"; factor = 1e-18; } else if (UnitValue < 1e-12) { - unitString = QString::fromLatin1("nF"); + unitString = "nF"; factor = 1e-15; } else if (UnitValue < 1e-9) { // \x reads everything to the end, therefore split - unitString = QString::fromUtf8("\xC2\xB5" - "F"); + unitString = "\xC2\xB5" + "F"; factor = 1e-12; } else if (UnitValue < 1e-6) { - unitString = QString::fromLatin1("mF"); + unitString = "mF"; factor = 1e-9; } else { - unitString = QString::fromLatin1("F"); + unitString = "F"; factor = 1e-6; } } else if (unit == Unit::ElectricalInductance) { if (UnitValue < 1e-6) { - unitString = QString::fromLatin1("nH"); + unitString = "nH"; factor = 1e-3; } else if (UnitValue < 1e-3) { - unitString = QString::fromUtf8("\xC2\xB5H"); + unitString = "\xC2\xB5H"; factor = 1.0; } else if (UnitValue < 1.0) { - unitString = QString::fromLatin1("mH"); + unitString = "mH"; factor = 1e3; } else { - unitString = QString::fromLatin1("H"); + unitString = "H"; factor = 1e6; } } else if (unit == Unit::VacuumPermittivity) { - unitString = QString::fromLatin1("F/m"); + unitString = "F/m"; factor = 1e-9; } else if (unit == Unit::Work) { if (UnitValue < 1.602176634e-10) { - unitString = QString::fromLatin1("eV"); + unitString = "eV"; factor = 1.602176634e-13; } else if (UnitValue < 1.602176634e-7) { - unitString = QString::fromLatin1("keV"); + unitString = "keV"; factor = 1.602176634e-10; } else if (UnitValue < 1.602176634e-4) { - unitString = QString::fromLatin1("MeV"); + unitString = "MeV"; factor = 1.602176634e-7; } else if (UnitValue < 1e6) { - unitString = QString::fromLatin1("mJ"); + unitString = "mJ"; factor = 1e3; } else if (UnitValue < 1e9) { - unitString = QString::fromLatin1("J"); + unitString = "J"; factor = 1e6; } else if (UnitValue < 1e12) { - unitString = QString::fromLatin1("kJ"); + unitString = "kJ"; factor = 1e9; } else if (UnitValue < 3.6e+15) { - unitString = QString::fromLatin1("kWh"); + unitString = "kWh"; factor = 3.6e+12; } else { // bigger than 1000 kWh -> scientific notation - unitString = QString::fromLatin1("J"); + unitString = "J"; factor = 1e6; } } else if (unit == Unit::SpecificEnergy) { - unitString = QString::fromLatin1("m^2/s^2"); + unitString = "m^2/s^2"; factor = 1000000; } else if (unit == Unit::HeatFlux) { - unitString = QString::fromLatin1("W/m^2"); + unitString = "W/m^2"; factor = 1.0; } else if (unit == Unit::Frequency) { if (UnitValue < 1e3) { - unitString = QString::fromLatin1("Hz"); + unitString = "Hz"; factor = 1.0; } else if (UnitValue < 1e6) { - unitString = QString::fromLatin1("kHz"); + unitString = "kHz"; factor = 1e3; } else if (UnitValue < 1e9) { - unitString = QString::fromLatin1("MHz"); + unitString = "MHz"; factor = 1e6; } else if (UnitValue < 1e12) { - unitString = QString::fromLatin1("GHz"); + unitString = "GHz"; factor = 1e9; } else { - unitString = QString::fromLatin1("THz"); + unitString = "THz"; factor = 1e12; } } else if (unit == Unit::Velocity) { - unitString = QString::fromLatin1("m/s"); + unitString = "m/s"; factor = 1000.0; } else if (unit == Unit::DynamicViscosity) { - unitString = QString::fromLatin1("Pa*s"); + unitString = "Pa*s"; factor = 0.001; } else if (unit == Unit::KinematicViscosity) { - unitString = QString::fromLatin1("m^2/s"); + unitString = "m^2/s"; factor = 1e6; } else if (unit == Unit::VolumeFlowRate) { if (UnitValue < 1e-3) { // smaller than 0.001 mm^3/s -> scientific notation - unitString = QString::fromLatin1("m^3/s"); + unitString = "m^3/s"; factor = 1e9; } else if (UnitValue < 1e3) { - unitString = QString::fromLatin1("mm^3/s"); + unitString = "mm^3/s"; factor = 1.0; } else if (UnitValue < 1e6) { - unitString = QString::fromLatin1("ml/s"); + unitString = "ml/s"; factor = 1e3; } else if (UnitValue < 1e9) { - unitString = QString::fromLatin1("l/s"); + unitString = "l/s"; factor = 1e6; } else { - unitString = QString::fromLatin1("m^3/s"); + unitString = "m^3/s"; factor = 1e9; } } else if (unit == Unit::DissipationRate) { - unitString = QString::fromLatin1("W/kg"); + unitString = "W/kg"; factor = 1e6; } else if (unit == Unit::InverseLength) { if (UnitValue < 1e-6) { // smaller than 0.001 1/km -> scientific notation - unitString = QString::fromLatin1("1/m"); + unitString = "1/m"; factor = 1e-3; } else if (UnitValue < 1e-3) { - unitString = QString::fromLatin1("1/km"); + unitString = "1/km"; factor = 1e-6; } else if (UnitValue < 1.0) { - unitString = QString::fromLatin1("1/m"); + unitString = "1/m"; factor = 1e-3; } else if (UnitValue < 1e3) { - unitString = QString::fromLatin1("1/mm"); + unitString = "1/mm"; factor = 1.0; } else if (UnitValue < 1e6) { - unitString = QString::fromUtf8("1/\xC2\xB5m"); + unitString = "1/\xC2\xB5m"; factor = 1e3; } else if (UnitValue < 1e9) { - unitString = QString::fromLatin1("1/nm"); + unitString = "1/nm"; factor = 1e6; } else { // larger -> scientific notation - unitString = QString::fromLatin1("1/m"); + unitString = "1/m"; factor = 1e-3; } } else if (unit == Unit::InverseArea) { if (UnitValue < 1e-12) { // smaller than 0.001 1/km^2 -> scientific notation - unitString = QString::fromLatin1("1/m^2"); + unitString = "1/m^2"; factor = 1e-6; } else if (UnitValue < 1e-6) { - unitString = QString::fromLatin1("1/km^2"); + unitString = "1/km^2"; factor = 1e-12; } else if (UnitValue < 1.0) { - unitString = QString::fromLatin1("1/m^2"); + unitString = "1/m^2"; factor = 1e-6; } else if (UnitValue < 1e2) { - unitString = QString::fromLatin1("1/cm^2"); + unitString = "1/cm^2"; factor = 1e-2; } else { - unitString = QString::fromLatin1("1/mm^2"); + unitString = "1/mm^2"; factor = 1.0; } } else if (unit == Unit::InverseVolume) { if (UnitValue < 1e-6) { - unitString = QString::fromLatin1("1/m^3"); + unitString = "1/m^3"; factor = 1e-9; } else if (UnitValue < 1e-3) { - unitString = QString::fromLatin1("1/l"); + unitString = "1/l"; factor = 1e-6; } else if (UnitValue < 1.0) { - unitString = QString::fromLatin1("1/ml"); + unitString = "1/ml"; factor = 1e-3; } else { - unitString = QString::fromLatin1("1/mm^3"); + unitString = "1/mm^3"; factor = 1.0; } } diff --git a/src/Base/UnitsSchemaMKS.h b/src/Base/UnitsSchemaMKS.h index dff1204a3728..d6fc11c95f6b 100644 --- a/src/Base/UnitsSchemaMKS.h +++ b/src/Base/UnitsSchemaMKS.h @@ -20,30 +20,24 @@ * * ***************************************************************************/ - #ifndef BASE_UNITSSCHEMAMKS_H #define BASE_UNITSSCHEMAMKS_H -#include #include "UnitsSchema.h" - namespace Base { - /** * The UnitSchema class */ class UnitsSchemaMKS: public UnitsSchema { public: - QString - schemaTranslate(const Base::Quantity& quant, double& factor, QString& unitString) override; + std::string + schemaTranslate(const Base::Quantity& quant, double& factor, std::string& unitString) override; }; - } // namespace Base - #endif // BASE_UNITSSCHEMAMKS_H diff --git a/src/Base/UnitsSchemaMeterDecimal.cpp b/src/Base/UnitsSchemaMeterDecimal.cpp index c3cb27d5aeb0..e80bd7af7f83 100644 --- a/src/Base/UnitsSchemaMeterDecimal.cpp +++ b/src/Base/UnitsSchemaMeterDecimal.cpp @@ -29,60 +29,40 @@ */ #include "PreCompiled.h" -#ifdef __GNUC__ -#include +#ifndef _PreComp_ +#include +#include +#include #endif -#include - #include "UnitsSchemaMeterDecimal.h" - using namespace Base; - -QString UnitsSchemaMeterDecimal::schemaTranslate(const Base::Quantity& quant, - double& factor, - QString& unitString) +std::string UnitsSchemaMeterDecimal::schemaTranslate(const Base::Quantity& quant, + double& factor, + std::string& unitString) { - Unit unit = quant.getUnit(); - if (unit == Unit::Length) { - // all length units in metres - unitString = QString::fromLatin1("m"); - factor = 1e3; - } - else if (unit == Unit::Area) { - // all area units in square meters - unitString = QString::fromLatin1("m^2"); - factor = 1e6; - } - else if (unit == Unit::Volume) { - // all area units in cubic meters - unitString = QString::fromLatin1("m^3"); - factor = 1e9; - } - else if (unit == Unit::Power) { - // watts - unitString = QString::fromLatin1("W"); - factor = 1000000; - } - else if (unit == Unit::ElectricPotential) { - // volts - unitString = QString::fromLatin1("V"); - factor = 1000000; - } - else if (unit == Unit::HeatFlux) { - // watts per square metre - unitString = QString::fromLatin1("W/m^2"); - factor = 1.0; - } - else if (unit == Unit::Velocity) { - // metres per second - unitString = QString::fromLatin1("m/s"); - factor = 1e3; + static std::array>, 7> unitSpecs {{ + {Unit::Length, {"m", 1e0}}, + {Unit::Area, {"m^2", 1e6}}, + {Unit::Volume, {"m^3", 1e9}}, + {Unit::Power, {"W", 1000000}}, + {Unit::ElectricPotential, {"V", 1000000}}, + {Unit::HeatFlux, {"W/m^2", 1.0}}, + {Unit::Velocity, {"m/s", 1e3}}, + }}; + + const auto unit = quant.getUnit(); + const auto spec = std::find_if(unitSpecs.begin(), unitSpecs.end(), [&](const auto& pair) { + return pair.first == unit; + }); + + if (spec != std::end(unitSpecs)) { + unitString = spec->second.first; + factor = spec->second.second; } else { - // default action for all cases without special treatment: unitString = quant.getUnit().getString(); factor = 1.0; } diff --git a/src/Base/UnitsSchemaMeterDecimal.h b/src/Base/UnitsSchemaMeterDecimal.h index b7d7d0ee23d8..c3302602b973 100644 --- a/src/Base/UnitsSchemaMeterDecimal.h +++ b/src/Base/UnitsSchemaMeterDecimal.h @@ -29,10 +29,8 @@ #ifndef BASE_UNITSSCHEMAMETERS_H #define BASE_UNITSSCHEMAMETERS_H -#include #include "UnitsSchema.h" - namespace Base { @@ -42,8 +40,8 @@ namespace Base class UnitsSchemaMeterDecimal: public UnitsSchema { public: - QString - schemaTranslate(const Base::Quantity& quant, double& factor, QString& unitString) override; + std::string + schemaTranslate(const Base::Quantity& quant, double& factor, std::string& unitString) override; std::string getBasicLengthUnit() const override { diff --git a/src/Base/UnitsSchemaMmMin.cpp b/src/Base/UnitsSchemaMmMin.cpp index be3196361e40..dece178cd1bd 100644 --- a/src/Base/UnitsSchemaMmMin.cpp +++ b/src/Base/UnitsSchemaMmMin.cpp @@ -22,36 +22,35 @@ #include "PreCompiled.h" -#ifdef __GNUC__ -#include +#ifndef _PreComp_ +#include +#include +#include #endif -#include - #include "UnitsSchemaMmMin.h" - using namespace Base; - -QString -UnitsSchemaMmMin::schemaTranslate(const Quantity& quant, double& factor, QString& unitString) +std::string +UnitsSchemaMmMin::schemaTranslate(const Quantity& quant, double& factor, std::string& unitString) { - Unit unit = quant.getUnit(); - if (unit == Unit::Length) { - unitString = QString::fromLatin1("mm"); - factor = 1.0; - } - else if (unit == Unit::Angle) { - unitString = QString::fromUtf8("\xC2\xB0"); - factor = 1.0; - } - else if (unit == Unit::Velocity) { - unitString = QString::fromLatin1("mm/min"); - factor = 1. / 60.; + static std::array>, 3> unitSpecs {{ + {Unit::Length, {"mm", 1.0}}, + {Unit::Angle, {"\xC2\xB0", 1.0}}, + {Unit::Velocity, {"mm/min", 1.0 / 60.0}}, + }}; + + const auto unit = quant.getUnit(); + const auto spec = std::find_if(unitSpecs.begin(), unitSpecs.end(), [&](const auto& pair) { + return pair.first == unit; + }); + + if (spec != std::end(unitSpecs)) { + unitString = spec->second.first; + factor = spec->second.second; } else { - // default action for all cases without special treatment: unitString = quant.getUnit().getString(); factor = 1.0; } diff --git a/src/Base/UnitsSchemaMmMin.h b/src/Base/UnitsSchemaMmMin.h index cc51a387213a..1f6a0262a7d3 100644 --- a/src/Base/UnitsSchemaMmMin.h +++ b/src/Base/UnitsSchemaMmMin.h @@ -20,18 +20,14 @@ * * ***************************************************************************/ - #ifndef BASE_UNITSSCHEMAMMMIN_H #define BASE_UNITSSCHEMAMMMIN_H -#include #include "UnitsSchema.h" - namespace Base { - /* Metric units schema intended for design of small parts and for CNC * Lengths are always in mm. * Angles in degrees (use degree symbol) @@ -40,12 +36,10 @@ namespace Base class UnitsSchemaMmMin: public UnitsSchema { public: - QString - schemaTranslate(const Base::Quantity& quant, double& factor, QString& unitString) override; + std::string + schemaTranslate(const Base::Quantity& quant, double& factor, std::string& unitString) override; }; - } // namespace Base - #endif // BASE_UNITSSCHEMAMMMIN_H diff --git a/src/Doc/sphinx/DocumentObject.rst b/src/Doc/sphinx/DocumentObject.rst index c32918221499..7fb99bf725ef 100644 --- a/src/Doc/sphinx/DocumentObject.rst +++ b/src/Doc/sphinx/DocumentObject.rst @@ -5,14 +5,14 @@ The FreeCAD Document Object :maxdepth: 4 .. automodule:: DocumentObject - + .. autoclass:: DocumentObject :members: - + .. method:: __setstate__(value) - + allows to save custom attributes of this object as strings, so they can be saved when saving the FreeCAD document - + .. method:: __getstate__() - + reads values previously saved with __setstate__() diff --git a/src/Doc/sphinx/Matrix.rst b/src/Doc/sphinx/Matrix.rst index 90e4e8ba3f77..db9cc3805b58 100644 --- a/src/Doc/sphinx/Matrix.rst +++ b/src/Doc/sphinx/Matrix.rst @@ -3,7 +3,7 @@ The Matrix object .. toctree:: :maxdepth: 4 - + .. automodule:: FreeCAD .. autoclass:: Matrix diff --git a/src/Doc/sphinx/Placement.rst b/src/Doc/sphinx/Placement.rst index 56d596e9812a..6bb292f626df 100644 --- a/src/Doc/sphinx/Placement.rst +++ b/src/Doc/sphinx/Placement.rst @@ -3,7 +3,7 @@ The Placement object .. toctree:: :maxdepth: 4 - + .. automodule:: FreeCAD .. autoclass:: Placement diff --git a/src/Doc/sphinx/Vector.rst b/src/Doc/sphinx/Vector.rst index f7b8d9287b94..e952daf663a1 100644 --- a/src/Doc/sphinx/Vector.rst +++ b/src/Doc/sphinx/Vector.rst @@ -3,7 +3,7 @@ The Vector object .. toctree:: :maxdepth: 4 - + .. automodule:: FreeCAD .. autoclass:: Vector diff --git a/src/Gui/3Dconnexion/navlib/NavlibInterface.h b/src/Gui/3Dconnexion/navlib/NavlibInterface.h index e7f7ae795d6d..b78a74550370 100644 --- a/src/Gui/3Dconnexion/navlib/NavlibInterface.h +++ b/src/Gui/3Dconnexion/navlib/NavlibInterface.h @@ -161,5 +161,7 @@ class NavlibInterface: public CNav3D mutable std::array hitTestPattern; mutable bool patternInitialized; std::vector exportedCommandSets; + mutable bool wasPointerPick = false; + double orthoNearDistance = 0.0; }; #endif \ No newline at end of file diff --git a/src/Gui/3Dconnexion/navlib/NavlibNavigation.cpp b/src/Gui/3Dconnexion/navlib/NavlibNavigation.cpp index 9944cf3bdaad..a74c21fc1f3c 100644 --- a/src/Gui/3Dconnexion/navlib/NavlibNavigation.cpp +++ b/src/Gui/3Dconnexion/navlib/NavlibNavigation.cpp @@ -101,11 +101,16 @@ long NavlibInterface::GetPointerPosition(navlib::point_t& position) const QPoint viewPoint = currentView.pView3d->mapFromGlobal(QCursor::pos()); viewPoint.setY(currentView.pView3d->height() - viewPoint.y()); + + double scaling = inventorViewer->devicePixelRatio(); + viewPoint *= scaling; + SbVec3f worldPosition = inventorViewer->getPointOnFocalPlane(SbVec2s(viewPoint.x(), viewPoint.y())); - std::copy(worldPosition.getValue(), worldPosition.getValue() + 3, &position.x); + wasPointerPick = true; + return 0; } return navlib::make_result_code(navlib::navlib_errc::no_data_available); @@ -272,34 +277,8 @@ long NavlibInterface::SetCameraMatrix(const navlib::matrix_t& matrix) pCamera->orientation = SbRotation(cameraMatrix); pCamera->position.setValue(matrix(3, 0), matrix(3, 1), matrix(3, 2)); - - const Gui::View3DInventorViewer* inventorViewer = currentView.pView3d->getViewer(); - SoGetBoundingBoxAction action(inventorViewer->getSoRenderManager()->getViewportRegion()); - - action.apply(inventorViewer->getSceneGraph()); - - const SbBox3f boundingBox = action.getBoundingBox(); - SbVec3f modelCenter = boundingBox.getCenter(); - const float modelRadius = (boundingBox.getMin() - modelCenter).length(); - - navlib::bool_t isPerspective; - GetIsViewPerspective(isPerspective); - if (!isPerspective) { - cameraMatrix.inverse().multVecMatrix(modelCenter, modelCenter); - - const float nearDist = -(modelRadius + modelCenter.getValue()[2]); - const float farDist = nearDist + 2.0f * modelRadius; - - if (nearDist < 0.0f) { - pCamera->nearDistance.setValue(nearDist); - pCamera->farDistance.setValue(-nearDist); - } - else { - pCamera->nearDistance.setValue(-farDist); - pCamera->farDistance.setValue(farDist); - } - } pCamera->touch(); + return 0; } return navlib::make_result_code(navlib::navlib_errc::no_data_available); @@ -351,11 +330,16 @@ long NavlibInterface::GetViewExtents(navlib::box_t& extents) const return navlib::make_result_code(navlib::navlib_errc::no_data_available); const SbViewVolume viewVolume = pCamera->getViewVolume(pCamera->aspectRatio.getValue()); - const float halfHeight = viewVolume.getHeight() / 2.0f; - const float halfWidth = viewVolume.getWidth() / 2.0f; - const float farDistance = viewVolume.nearToFar + viewVolume.nearDist; + const double halfHeight = static_cast(viewVolume.getHeight() / 2.0f); + const double halfWidth = static_cast(viewVolume.getWidth() / 2.0f); + const double halfDepth = 1.0e8; - extents = {-halfWidth, -halfHeight, -farDistance, halfWidth, halfHeight, farDistance}; + extents = {-halfWidth, + -halfHeight, + -halfDepth, + halfWidth, + halfHeight, + halfDepth}; return 0; } @@ -393,6 +377,7 @@ long NavlibInterface::SetViewExtents(const navlib::box_t& extents) GetViewExtents(oldExtents); pCamera->scaleHeight(extents.max.x / oldExtents.max.x); + orthoNearDistance = pCamera->nearDistance.getValue(); return 0; } diff --git a/src/Gui/3Dconnexion/navlib/NavlibPivot.cpp b/src/Gui/3Dconnexion/navlib/NavlibPivot.cpp index 87505613b470..b244b5997301 100644 --- a/src/Gui/3Dconnexion/navlib/NavlibPivot.cpp +++ b/src/Gui/3Dconnexion/navlib/NavlibPivot.cpp @@ -138,29 +138,50 @@ long NavlibInterface::GetHitLookAt(navlib::point_t& position) const pCamera->orientation.getValue().getValue(cameraMatrix); - // Initialize the samples array if it wasn't done before + // Initialize the samples array if it wasn't done before initializePattern(); + navlib::bool_t isPerspective; + GetIsViewPerspective(isPerspective); + for (uint32_t i = 0; i < hitTestingResolution; i++) { - // Scale the sample like it was defined in camera space (placed on XY plane) - SbVec3f transform( - hitTestPattern[i][0] * ray.radius, hitTestPattern[i][1] * ray.radius, 0.0f); - // Apply the model-view transform to a sample (only the rotation) - cameraMatrix.multVecMatrix(transform, transform); + SbVec3f origin; + + if (wasPointerPick) { + origin = ray.origin; + } + else { + // Scale the sample like it was defined in camera space (placed on XY plane) + SbVec3f transform(hitTestPattern[i][0] * ray.radius, + hitTestPattern[i][1] * ray.radius, + 0.0f); + + // Apply the model-view transform to a sample (only the rotation) + cameraMatrix.multVecMatrix(transform, transform); - // Calculate origin of current hit-testing ray - SbVec3f newOrigin = ray.origin + transform; + // Calculate origin of current hit-testing ray + origin = ray.origin + transform; + } // Perform the hit-test - rayPickAction.setRay(newOrigin, ray.direction); + if (isPerspective) { + rayPickAction.setRay(origin, + ray.direction, + pCamera->nearDistance.getValue(), + pCamera->farDistance.getValue()); + } + else { + rayPickAction.setRay(origin, ray.direction); + } + rayPickAction.apply(pSceneGraph); SoPickedPoint* pickedPoint = rayPickAction.getPickedPoint(); // Check if there was a hit if (pickedPoint != nullptr) { SbVec3f hitPoint = pickedPoint->getPoint(); - float distance = (newOrigin - hitPoint).length(); + float distance = (origin - hitPoint).length(); // Save hit of the lowest depth if (distance < minLength) { @@ -168,6 +189,11 @@ long NavlibInterface::GetHitLookAt(navlib::point_t& position) const closestHitPoint = hitPoint; } } + + if (wasPointerPick) { + wasPointerPick = false; + break; + } } if (minLength < MAX_FLOAT) { @@ -221,7 +247,22 @@ long NavlibInterface::SetHitDirection(const navlib::vector_t& direction) long NavlibInterface::SetHitLookFrom(const navlib::point_t& eye) { - ray.origin.setValue(eye.x, eye.y, eye.z); + navlib::bool_t isPerspective; + + GetIsViewPerspective(isPerspective); + + if (isPerspective) { + ray.origin.setValue(eye.x, eye.y, eye.z); + } + else { + auto pCamera = getCamera(); + if (pCamera == nullptr) { + return navlib::make_result_code(navlib::navlib_errc::no_data_available); + } + + SbVec3f position = pCamera->position.getValue(); + ray.origin = position + orthoNearDistance * ray.direction; + } return 0; } diff --git a/src/Gui/Action.cpp b/src/Gui/Action.cpp index 537ab7891e7d..ecf1c143fee1 100644 --- a/src/Gui/Action.cpp +++ b/src/Gui/Action.cpp @@ -848,6 +848,25 @@ void RecentFilesAction::appendFile(const QString& filename) _pimpl->trySaveUserParameter(); } +static QString numberToLabel(int number) { + if (number > 0 && number < 10) { // NOLINT: *-magic-numbers + return QString::fromLatin1("&%1").arg(number); + } + if (number == 10) { // NOLINT: *-magic-numbers + return QString::fromLatin1("1&0"); + } + // If we have a number greater than 10, we start using the alphabet. + // So 11 becomes 'A' and so on. + constexpr char lettersStart = 11; + constexpr char lettersEnd = lettersStart + ('Z' - 'A'); + if (number >= lettersStart && number < lettersEnd) { + QChar letter = QChar::fromLatin1('A' + (number - lettersStart)); + return QString::fromLatin1("%1 (&%2)").arg(number).arg(letter); + } + // Not enough accelerators to cover this number. + return QString::fromLatin1("%1").arg(number); +} + /** * Set the list of recent files. For each item an action object is * created and added to this action group. @@ -858,8 +877,9 @@ void RecentFilesAction::setFiles(const QStringList& files) int numRecentFiles = std::min(recentFiles.count(), files.count()); for (int index = 0; index < numRecentFiles; index++) { + QString numberLabel = numberToLabel(index + 1); QFileInfo fi(files[index]); - recentFiles[index]->setText(QString::fromLatin1("%1 %2").arg(index+1).arg(fi.fileName())); + recentFiles[index]->setText(QString::fromLatin1("%1 %2").arg(numberLabel).arg(fi.fileName())); recentFiles[index]->setStatusTip(tr("Open file %1").arg(files[index])); recentFiles[index]->setToolTip(files[index]); // set the full name that we need later for saving recentFiles[index]->setData(QVariant(index)); @@ -1020,7 +1040,8 @@ void RecentMacrosAction::setFiles(const QStringList& files) auto accel_col = QString::fromStdString(shortcut_modifiers); for (int index = 0; index < numRecentFiles; index++) { QFileInfo fi(files[index]); - recentFiles[index]->setText(QString::fromLatin1("%1 %2").arg(index+1).arg(fi.completeBaseName())); + QString numberLabel = numberToLabel(index + 1); + recentFiles[index]->setText(QString::fromLatin1("%1 %2").arg(numberLabel).arg(fi.completeBaseName())); recentFiles[index]->setToolTip(files[index]); // set the full name that we need later for saving recentFiles[index]->setData(QVariant(index)); QString accel(tr("none")); diff --git a/src/Gui/Application.cpp b/src/Gui/Application.cpp index 80bf156e5937..dec82e9aa098 100644 --- a/src/Gui/Application.cpp +++ b/src/Gui/Application.cpp @@ -60,6 +60,7 @@ #include #include "Application.h" +#include "ApplicationPy.h" #include "AxisOriginPy.h" #include "BitmapFactory.h" #include "Command.h" @@ -436,7 +437,7 @@ Application::Application(bool GUIenabled) "FreeCADGui", FreeCADGui_doc, -1, - Application::Methods, + ApplicationPy::Methods, nullptr, nullptr, nullptr, @@ -447,7 +448,7 @@ Application::Application(bool GUIenabled) } else { // extend the method list - PyModule_AddFunctions(module, Application::Methods); + PyModule_AddFunctions(module, ApplicationPy::Methods); } Py::Module(module).setAttr(std::string("ActiveDocument"), Py::None()); Py::Module(module).setAttr(std::string("HasQtBug_129596"), @@ -2282,6 +2283,10 @@ void Application::runApplication() MainWindow mw; mw.setProperty("QuitOnClosed", true); + // https://forum.freecad.org/viewtopic.php?f=3&t=15540 + // Needs to be set after app is created to override platform defaults (qt commit a2aa1f81a81) + QApplication::setAttribute(Qt::AA_DontShowIconsInMenus, false); + #ifdef FC_DEBUG // redirect Coin messages to FreeCAD SoDebugError::setHandlerCallback(messageHandlerCoin, 0); #endif diff --git a/src/Gui/Application.h b/src/Gui/Application.h index 0af9884193ed..e358e6008ccb 100644 --- a/src/Gui/Application.h +++ b/src/Gui/Application.h @@ -39,6 +39,7 @@ class SoNode; class NavlibInterface; namespace Gui{ +class ApplicationPy; class BaseView; class CommandManager; class Document; @@ -263,22 +264,22 @@ class GuiExport Application const std::map> userEditModes { {0, std::make_pair( - QT_TRANSLATE_NOOP("EditMode", "Default"), + QT_TRANSLATE_NOOP("EditMode", "&Default"), QT_TRANSLATE_NOOP("EditMode", "The object will be edited using the mode defined internally to be " "the most appropriate for the object type"))}, {1, - std::make_pair(QT_TRANSLATE_NOOP("EditMode", "Transform"), + std::make_pair(QT_TRANSLATE_NOOP("EditMode", "Trans&form"), QT_TRANSLATE_NOOP("EditMode", "The object will have its placement editable with the " "Std TransformManip command"))}, {2, - std::make_pair(QT_TRANSLATE_NOOP("EditMode", "Cutting"), + std::make_pair(QT_TRANSLATE_NOOP("EditMode", "Cu&tting"), QT_TRANSLATE_NOOP("EditMode", "This edit mode is implemented as available but " "currently does not seem to be used by any object"))}, {3, - std::make_pair(QT_TRANSLATE_NOOP("EditMode", "Color"), + std::make_pair(QT_TRANSLATE_NOOP("EditMode", "&Color"), QT_TRANSLATE_NOOP("EditMode", "The object will have the color of its individual faces " "editable with the Part FaceAppearances command"))}, @@ -293,88 +294,13 @@ class GuiExport Application bool setUserEditMode(const std::string &mode); //@} -public: - //--------------------------------------------------------------------- - // python exports goes here +++++++++++++++++++++++++++++++++++++++++++ - //--------------------------------------------------------------------- - // static python wrapper of the exported functions - static PyObject* sActivateWorkbenchHandler (PyObject *self,PyObject *args); // activates a workbench object - static PyObject* sAddWorkbenchHandler (PyObject *self,PyObject *args); // adds a new workbench handler to a list - static PyObject* sRemoveWorkbenchHandler (PyObject *self,PyObject *args); // removes a workbench handler from the list - static PyObject* sGetWorkbenchHandler (PyObject *self,PyObject *args); // retrieves the workbench handler - static PyObject* sListWorkbenchHandlers (PyObject *self,PyObject *args); // retrieves a list of all workbench handlers - static PyObject* sActiveWorkbenchHandler (PyObject *self,PyObject *args); // retrieves the active workbench object - static PyObject* sAddResPath (PyObject *self,PyObject *args); // adds a path where to find resources - static PyObject* sAddLangPath (PyObject *self,PyObject *args); // adds a path to a qm file - static PyObject* sAddIconPath (PyObject *self,PyObject *args); // adds a path to an icon file - static PyObject* sAddIcon (PyObject *self,PyObject *args); // adds an icon to the cache - static PyObject* sGetIcon (PyObject *self,PyObject *args); // get an icon from the cache - static PyObject* sIsIconCached (PyObject *self,PyObject *args); // check if an icon is cached - - static PyObject* sSendActiveView (PyObject *self,PyObject *args); - static PyObject* sSendFocusView (PyObject *self,PyObject *args); - - static PyObject* sGetMainWindow (PyObject *self,PyObject *args); - static PyObject* sUpdateGui (PyObject *self,PyObject *args); - static PyObject* sUpdateLocale (PyObject *self,PyObject *args); - static PyObject* sGetLocale (PyObject *self,PyObject *args); - static PyObject* sSetLocale (PyObject *self,PyObject *args); - static PyObject* sSupportedLocales (PyObject *self,PyObject *args); - static PyObject* sCreateDialog (PyObject *self,PyObject *args); - static PyObject* sAddPreferencePage (PyObject *self,PyObject *args); - - static PyObject* sRunCommand (PyObject *self,PyObject *args); - static PyObject* sAddCommand (PyObject *self,PyObject *args); - - static PyObject* sHide (PyObject *self,PyObject *args); // deprecated - static PyObject* sShow (PyObject *self,PyObject *args); // deprecated - static PyObject* sHideObject (PyObject *self,PyObject *args); // hide view provider object - static PyObject* sShowObject (PyObject *self,PyObject *args); // show view provider object - - static PyObject* sOpen (PyObject *self,PyObject *args); // open Python scripts - static PyObject* sInsert (PyObject *self,PyObject *args); // open Python scripts - static PyObject* sExport (PyObject *self,PyObject *args); - static PyObject* sReload (PyObject *self,PyObject *args); // reload FCStd file - static PyObject* sLoadFile (PyObject *self,PyObject *args); // open all types of files - - static PyObject* sCoinRemoveAllChildren (PyObject *self,PyObject *args); - - static PyObject* sActiveDocument (PyObject *self,PyObject *args); - static PyObject* sSetActiveDocument (PyObject *self,PyObject *args); - static PyObject* sActiveView (PyObject *self,PyObject *args); - static PyObject* sActivateView (PyObject *self,PyObject *args); - static PyObject* sGetDocument (PyObject *self,PyObject *args); - static PyObject* sEditDocument (PyObject *self,PyObject *args); - - static PyObject* sDoCommand (PyObject *self,PyObject *args); - static PyObject* sDoCommandGui (PyObject *self,PyObject *args); - static PyObject* sDoCommandEval (PyObject *self,PyObject *args); - static PyObject* sDoCommandSkip (PyObject *self,PyObject *args); - static PyObject* sAddModule (PyObject *self,PyObject *args); - - static PyObject* sShowDownloads (PyObject *self,PyObject *args); - static PyObject* sShowPreferences (PyObject *self,PyObject *args); - - static PyObject* sCreateViewer (PyObject *self,PyObject *args); - static PyObject* sGetMarkerIndex (PyObject *self,PyObject *args); - - static PyObject* sAddDocObserver (PyObject *self,PyObject *args); - static PyObject* sRemoveDocObserver (PyObject *self,PyObject *args); - - static PyObject* sAddWbManipulator (PyObject *self,PyObject *args); - static PyObject* sRemoveWbManipulator (PyObject *self,PyObject *args); - - static PyObject* sListUserEditModes (PyObject *self,PyObject *args); - static PyObject* sGetUserEditMode (PyObject *self,PyObject *args); - static PyObject* sSetUserEditMode (PyObject *self,PyObject *args); - - static PyMethodDef Methods[]; - private: struct ApplicationP* d; /// workbench python dictionary - PyObject* _pcWorkbenchDictionary; + PyObject* _pcWorkbenchDictionary; NavlibInterface* pNavlibInterface; + + friend class ApplicationPy; }; } //namespace Gui diff --git a/src/Gui/ApplicationPy.cpp b/src/Gui/ApplicationPy.cpp index f3215511e0b1..1db7e93df416 100644 --- a/src/Gui/ApplicationPy.cpp +++ b/src/Gui/ApplicationPy.cpp @@ -45,6 +45,7 @@ #include #include "Application.h" +#include "ApplicationPy.h" #include "BitmapFactory.h" #include "Command.h" #include "DlgPreferencesImp.h" @@ -74,15 +75,15 @@ using namespace Gui; // Application methods structure -PyMethodDef Application::Methods[] = { - {"activateWorkbench",(PyCFunction) Application::sActivateWorkbenchHandler, METH_VARARGS, +PyMethodDef ApplicationPy::Methods[] = { + {"activateWorkbench",(PyCFunction) ApplicationPy::sActivateWorkbenchHandler, METH_VARARGS, "activateWorkbench(name) -> bool\n" "\n" "Activate workbench by its name. Return False if the workbench is\n" "already active.\n" "\n" "name : str\n Name of the workbench to activate."}, - {"addWorkbench", (PyCFunction) Application::sAddWorkbenchHandler, METH_VARARGS, + {"addWorkbench", (PyCFunction) ApplicationPy::sAddWorkbenchHandler, METH_VARARGS, "addWorkbench(workbench) -> None\n" "\n" "Add a workbench.\n" @@ -90,46 +91,46 @@ PyMethodDef Application::Methods[] = { "workbench : Workbench, Workbench type\n" " Instance of a Workbench subclass or subclass of the\n" " Workbench class."}, - {"removeWorkbench", (PyCFunction) Application::sRemoveWorkbenchHandler, METH_VARARGS, + {"removeWorkbench", (PyCFunction) ApplicationPy::sRemoveWorkbenchHandler, METH_VARARGS, "removeWorkbench(name) -> None\n" "\n" "Remove a workbench.\n" "\n" "name : str\n Name of the workbench to remove."}, - {"getWorkbench", (PyCFunction) Application::sGetWorkbenchHandler, METH_VARARGS, + {"getWorkbench", (PyCFunction) ApplicationPy::sGetWorkbenchHandler, METH_VARARGS, "getWorkbench(name) -> Workbench\n" "\n" "Get the workbench by its name.\n" "\n" "name : str\n Name of the workbench to return."}, - {"listWorkbenches", (PyCFunction) Application::sListWorkbenchHandlers, METH_VARARGS, + {"listWorkbenches", (PyCFunction) ApplicationPy::sListWorkbenchHandlers, METH_VARARGS, "listWorkbenches() -> dict\n" "\n" "Get a dictionary with all workbenches."}, - {"activeWorkbench", (PyCFunction) Application::sActiveWorkbenchHandler, METH_VARARGS, + {"activeWorkbench", (PyCFunction) ApplicationPy::sActiveWorkbenchHandler, METH_VARARGS, "activeWorkbench() -> Workbench\n" "\n" "Return the active workbench object."}, - {"addResourcePath", (PyCFunction) Application::sAddResPath, METH_VARARGS, + {"addResourcePath", (PyCFunction) ApplicationPy::sAddResPath, METH_VARARGS, "addResourcePath(path) -> None\n" "\n" "Add a new path to the system where to find resource files\n" "like icons or localization files.\n" "\n" "path : str, bytes, bytearray\n Path to resource files."}, - {"addLanguagePath", (PyCFunction) Application::sAddLangPath, METH_VARARGS, + {"addLanguagePath", (PyCFunction) ApplicationPy::sAddLangPath, METH_VARARGS, "addLanguagePath(path) -> None\n" "\n" "Add a new path to the system where to find language files.\n" "\n" "path : str, bytes, bytearray\n Path to language files."}, - {"addIconPath", (PyCFunction) Application::sAddIconPath, METH_VARARGS, + {"addIconPath", (PyCFunction) ApplicationPy::sAddIconPath, METH_VARARGS, "addIconPath(path) -> None\n" "\n" "Add a new path to the system where to find icon files.\n" "\n" "path : str, bytes, bytearray\n Path to icon files."}, - {"addIcon", (PyCFunction) Application::sAddIcon, METH_VARARGS, + {"addIcon", (PyCFunction) ApplicationPy::sAddIcon, METH_VARARGS, "addIcon(name, content, format='XPM') -> None\n" "\n" "Add an icon to the system.\n" @@ -137,53 +138,53 @@ PyMethodDef Application::Methods[] = { "name : str\n Name of the icon.\n" "content : str, bytes-like\n Content of the icon.\n" "format : str\n Format of the icon."}, - {"getIcon", (PyCFunction) Application::sGetIcon, METH_VARARGS, + {"getIcon", (PyCFunction) ApplicationPy::sGetIcon, METH_VARARGS, "getIcon(name) -> QIcon or None\n" "\n" "Get an icon in the system. If the pixmap is null, return None.\n" "\n" "name : str\n Name of the icon."}, - {"isIconCached", (PyCFunction) Application::sIsIconCached, METH_VARARGS, + {"isIconCached", (PyCFunction) ApplicationPy::sIsIconCached, METH_VARARGS, "isIconCached(name) -> Bool\n" "\n" "Check if an icon with the given name is cached.\n" "\n" "name : str\n Name of the icon."}, - {"getMainWindow", (PyCFunction) Application::sGetMainWindow, METH_VARARGS, + {"getMainWindow", (PyCFunction) ApplicationPy::sGetMainWindow, METH_VARARGS, "getMainWindow() -> QMainWindow\n" "\n" "Return the main window instance."}, - {"updateGui", (PyCFunction) Application::sUpdateGui, METH_VARARGS, + {"updateGui", (PyCFunction) ApplicationPy::sUpdateGui, METH_VARARGS, "updateGui() -> None\n" "\n" "Update the main window and all its windows."}, - {"updateLocale", (PyCFunction) Application::sUpdateLocale, METH_VARARGS, + {"updateLocale", (PyCFunction) ApplicationPy::sUpdateLocale, METH_VARARGS, "updateLocale() -> None\n" "\n" "Update the localization."}, - {"getLocale", (PyCFunction) Application::sGetLocale, METH_VARARGS, + {"getLocale", (PyCFunction) ApplicationPy::sGetLocale, METH_VARARGS, "getLocale() -> str\n" "\n" "Returns the locale currently used by FreeCAD."}, - {"setLocale", (PyCFunction) Application::sSetLocale, METH_VARARGS, + {"setLocale", (PyCFunction) ApplicationPy::sSetLocale, METH_VARARGS, "setLocale(name) -> None\n" "\n" "Sets the locale used by FreeCAD. Can be set by top-level\n" "domain (e.g. \"de\") or the language name (e.g. \"German\").\n" "\n" "name : str\n Locale name."}, - {"supportedLocales", (PyCFunction) Application::sSupportedLocales, METH_VARARGS, + {"supportedLocales", (PyCFunction) ApplicationPy::sSupportedLocales, METH_VARARGS, "supportedLocales() -> dict\n" "\n" "Returns a dict of all supported locales. The keys are the language\n" "names and the values the top-level domains."}, - {"createDialog", (PyCFunction) Application::sCreateDialog, METH_VARARGS, + {"createDialog", (PyCFunction) ApplicationPy::sCreateDialog, METH_VARARGS, "createDialog(path) -> PyResource\n" "\n" "Open a UI file.\n" "\n" "path : str\n UI file path."}, - {"addPreferencePage", (PyCFunction) Application::sAddPreferencePage, METH_VARARGS, + {"addPreferencePage", (PyCFunction) ApplicationPy::sAddPreferencePage, METH_VARARGS, "addPreferencePage(path, group) -> None\n" "addPreferencePage(dialog, group) -> None\n" "\n" @@ -192,7 +193,7 @@ PyMethodDef Application::Methods[] = { "path : str\n UI file path.\n" "group : str\n Group name.\n" "dialog : type\n Preference page."}, - {"addCommand", (PyCFunction) Application::sAddCommand, METH_VARARGS, + {"addCommand", (PyCFunction) ApplicationPy::sAddCommand, METH_VARARGS, "addCommand(name, cmd, activation) -> None\n" "\n" "Add a command object.\n" @@ -200,58 +201,58 @@ PyMethodDef Application::Methods[] = { "name : str\n Name of the command.\n" "cmd : object\n Command instance.\n" "activation : str\n Activation sequence. Optional."}, - {"runCommand", (PyCFunction) Application::sRunCommand, METH_VARARGS, + {"runCommand", (PyCFunction) ApplicationPy::sRunCommand, METH_VARARGS, "runCommand(name, index=0) -> None\n" "\n" "Run command by its name.\n" "\n" "name : str\n Name of the command.\n" "index : int\n Index of the child command."}, - {"SendMsgToActiveView", (PyCFunction) Application::sSendActiveView, METH_VARARGS, + {"SendMsgToActiveView", (PyCFunction) ApplicationPy::sSendActiveView, METH_VARARGS, "SendMsgToActiveView(name, suppress=False) -> str or None\n" "\n" "Send message to the active view. Deprecated, use class View.\n" "\n" "name : str\n Name of the view command.\n" "suppress : bool\n If the sent message fail, suppress warning message."}, - {"sendMsgToFocusView", (PyCFunction) Application::sSendFocusView, METH_VARARGS, + {"sendMsgToFocusView", (PyCFunction) ApplicationPy::sSendFocusView, METH_VARARGS, "sendMsgToFocusView(name, suppress=False) -> str or None\n" "\n" "Send message to the focused view.\n" "\n" "name : str\n Name of the view command.\n" "suppress : bool\n If send message fail, suppress warning message."}, - {"hide", (PyCFunction) Application::sHide, METH_VARARGS, + {"hide", (PyCFunction) ApplicationPy::sHide, METH_VARARGS, "hide(name) -> None\n" "\n" "Hide the given feature. Deprecated.\n" "\n" "name : str\n Feature name."}, - {"show", (PyCFunction) Application::sShow, METH_VARARGS, + {"show", (PyCFunction) ApplicationPy::sShow, METH_VARARGS, "show(name) -> None\n" "\n" "Show the given feature. Deprecated.\n" "\n" "name : str\n Feature name."}, - {"hideObject", (PyCFunction) Application::sHideObject, METH_VARARGS, + {"hideObject", (PyCFunction) ApplicationPy::sHideObject, METH_VARARGS, "hideObject(obj) -> None\n" "\n" "Hide the view provider of the given object.\n" "\n" "obj : App.DocumentObject"}, - {"showObject", (PyCFunction) Application::sShowObject, METH_VARARGS, + {"showObject", (PyCFunction) ApplicationPy::sShowObject, METH_VARARGS, "showObject(obj) -> None\n" "\n" "Show the view provider of the given object.\n" "\n" "obj : App.DocumentObject"}, - {"open", (PyCFunction) Application::sOpen, METH_VARARGS, + {"open", (PyCFunction) ApplicationPy::sOpen, METH_VARARGS, "open(fileName) -> None\n" "\n" "Open a macro, Inventor or VRML file.\n" "\n" "fileName : str, bytes, bytearray\n File name."}, - {"insert", (PyCFunction) Application::sInsert, METH_VARARGS, + {"insert", (PyCFunction) ApplicationPy::sInsert, METH_VARARGS, "insert(fileName, docName) -> None\n" "\n" "Insert a macro, Inventor or VRML file. If no document name\n" @@ -259,31 +260,31 @@ PyMethodDef Application::Methods[] = { "\n" "fileName : str, bytes, bytearray\n File name.\n" "docName : str\n Document name."}, - {"export", (PyCFunction) Application::sExport, METH_VARARGS, + {"export", (PyCFunction) ApplicationPy::sExport, METH_VARARGS, "export(objs, fileName) -> None\n" "\n" "Save scene to Inventor or VRML file.\n" "\n" "objs : sequence of App.DocumentObject\n Sequence of objects to save.\n" "fileName : str, bytes, bytearray\n File name."}, - {"activeDocument", (PyCFunction) Application::sActiveDocument, METH_VARARGS, + {"activeDocument", (PyCFunction) ApplicationPy::sActiveDocument, METH_VARARGS, "activeDocument() -> Gui.Document or None\n" "\n" "Return the active document. If no one exists, return None."}, - {"setActiveDocument", (PyCFunction) Application::sSetActiveDocument, METH_VARARGS, + {"setActiveDocument", (PyCFunction) ApplicationPy::sSetActiveDocument, METH_VARARGS, "setActiveDocument(doc) -> None\n" "\n" "Activate the specified document.\n" "\n" "doc : str, App.Document\n Document to activate."}, - {"activeView", (PyCFunction)Application::sActiveView, METH_VARARGS, + {"activeView", (PyCFunction)ApplicationPy::sActiveView, METH_VARARGS, "activeView(typeName) -> object or None\n" "\n" "Return the active view of the active document. If no one\n" "exists, return None.\n" "\n" "typeName : str\n Type name."}, - {"activateView", (PyCFunction)Application::sActivateView, METH_VARARGS, + {"activateView", (PyCFunction)ApplicationPy::sActivateView, METH_VARARGS, "activateView(typeName, create=False) -> None\n" "\n" "Activate a view of the given type in the active document.\n" @@ -292,119 +293,126 @@ PyMethodDef Application::Methods[] = { "\n" "type : str\n Type name.\n" "create : bool"}, - {"editDocument", (PyCFunction)Application::sEditDocument, METH_VARARGS, + {"editDocument", (PyCFunction)ApplicationPy::sEditDocument, METH_VARARGS, "editDocument() -> Gui.Document or None\n" "\n" "Return the current editing document. If no one exists,\n" "return None."}, - {"getDocument", (PyCFunction) Application::sGetDocument, METH_VARARGS, + {"getDocument", (PyCFunction) ApplicationPy::sGetDocument, METH_VARARGS, "getDocument(doc) -> Gui.Document\n" "\n" "Get a document.\n" "\n" "doc : str, App.Document\n `App.Document` name or `App.Document` object."}, - {"doCommand", (PyCFunction) Application::sDoCommand, METH_VARARGS, + {"doCommand", (PyCFunction) ApplicationPy::sDoCommand, METH_VARARGS, "doCommand(cmd) -> None\n" "\n" "Prints the given string in the python console and runs it.\n" "\n" "cmd : str"}, - {"doCommandGui", (PyCFunction) Application::sDoCommandGui, METH_VARARGS, + {"doCommandGui", (PyCFunction) ApplicationPy::sDoCommandGui, METH_VARARGS, "doCommandGui(cmd) -> None\n" "\n" "Prints the given string in the python console and runs it\n" "but doesn't record it in macros.\n" "\n" "cmd : str"}, - {"doCommandEval", (PyCFunction) Application::sDoCommandEval, METH_VARARGS, + {"doCommandEval", (PyCFunction) ApplicationPy::sDoCommandEval, METH_VARARGS, "doCommandEval(cmd) -> PyObject\n" "\n" "Runs the given string without showing in the python console or recording in\n" "macros, and returns the result.\n" "\n" "cmd : str"}, - {"doCommandSkip", (PyCFunction) Application::sDoCommandSkip, METH_VARARGS, + {"doCommandSkip", (PyCFunction) ApplicationPy::sDoCommandSkip, METH_VARARGS, "doCommandSkip(cmd) -> None\n" "\n" "Record the given string in the Macro but comment it out in the console\n" "\n" "cmd : str"}, - {"addModule", (PyCFunction) Application::sAddModule, METH_VARARGS, + {"addModule", (PyCFunction) ApplicationPy::sAddModule, METH_VARARGS, "addModule(mod) -> None\n" "\n" "Prints the given module import only once in the macro recording.\n" "\n" "mod : str"}, - {"showDownloads", (PyCFunction) Application::sShowDownloads, METH_VARARGS, + {"showDownloads", (PyCFunction) ApplicationPy::sShowDownloads, METH_VARARGS, "showDownloads() -> None\n\n" "Show the downloads manager window."}, - {"showPreferences", (PyCFunction) Application::sShowPreferences, METH_VARARGS, + {"showPreferences", (PyCFunction) ApplicationPy::sShowPreferences, METH_VARARGS, "showPreferences(grp, index=0) -> None\n" "\n" "Show the preferences window.\n" "\n" "grp: str\n Group to show.\n" "index : int\n Page index."}, - {"createViewer", (PyCFunction) Application::sCreateViewer, METH_VARARGS, + {"showPreferencesByName", (PyCFunction) ApplicationPy::sShowPreferencesByName, METH_VARARGS, + "showPreferencesByName(grp, pagename) -> None\n" + "\n" + "Show the preferences window.\n" + "\n" + "grp: str\n Group to show.\n" + "pagename : str\n Page to show."}, + {"createViewer", (PyCFunction) ApplicationPy::sCreateViewer, METH_VARARGS, "createViewer(views=1, name) -> View3DInventorPy or AbstractSplitViewPy\n" "\n" "Show and returns a viewer.\n" "\n" "views : int\n If > 1 a `AbstractSplitViewPy` object is returned.\n" "name : str\n Viewer title."}, - {"getMarkerIndex", (PyCFunction) Application::sGetMarkerIndex, METH_VARARGS, + {"getMarkerIndex", (PyCFunction) ApplicationPy::sGetMarkerIndex, METH_VARARGS, "getMarkerIndex(marker, size=9) -> int\n" "\n" "Get marker index according to marker name and size.\n" "\n" "marker : str\n Marker style name.\n" "size : int\n Marker size."}, - {"addDocumentObserver", (PyCFunction) Application::sAddDocObserver, METH_VARARGS, + {"addDocumentObserver", (PyCFunction) ApplicationPy::sAddDocObserver, METH_VARARGS, "addDocumentObserver(obj) -> None\n" "\n" "Add an observer to get notifications about changes on documents.\n" "\n" "obj : object"}, - {"removeDocumentObserver", (PyCFunction) Application::sRemoveDocObserver, METH_VARARGS, + {"removeDocumentObserver", (PyCFunction) ApplicationPy::sRemoveDocObserver, METH_VARARGS, "removeDocumentObserver(obj) -> None\n" "\n" "Remove an added document observer.\n" "\n" "obj : object"}, - {"addWorkbenchManipulator", (PyCFunction) Application::sAddWbManipulator, METH_VARARGS, + {"addWorkbenchManipulator", (PyCFunction) ApplicationPy::sAddWbManipulator, METH_VARARGS, "addWorkbenchManipulator(obj) -> None\n" "\n" "Add a workbench manipulator to modify a workbench when it is activated.\n" "\n" "obj : object"}, - {"removeWorkbenchManipulator", (PyCFunction) Application::sRemoveWbManipulator, METH_VARARGS, + {"removeWorkbenchManipulator", (PyCFunction) ApplicationPy::sRemoveWbManipulator, METH_VARARGS, "removeWorkbenchManipulator(obj) -> None\n" "\n" "Remove an added workbench manipulator.\n" "\n" "obj : object"}, - {"listUserEditModes", (PyCFunction) Application::sListUserEditModes, METH_VARARGS, + {"listUserEditModes", (PyCFunction) ApplicationPy::sListUserEditModes, METH_VARARGS, "listUserEditModes() -> list\n" "\n" "List available user edit modes."}, - {"getUserEditMode", (PyCFunction) Application::sGetUserEditMode, METH_VARARGS, + {"getUserEditMode", (PyCFunction) ApplicationPy::sGetUserEditMode, METH_VARARGS, "getUserEditMode() -> str\n" "\n" "Get current user edit mode."}, - {"setUserEditMode", (PyCFunction) Application::sSetUserEditMode, METH_VARARGS, + {"setUserEditMode", (PyCFunction) ApplicationPy::sSetUserEditMode, METH_VARARGS, "setUserEditMode(mode) -> bool\n" "\n" "Set user edit mode. Returns True if exists, False otherwise.\n" "\n" "mode : str"}, - {"reload", (PyCFunction) Application::sReload, METH_VARARGS, + {"reload", (PyCFunction) ApplicationPy::sReload, METH_VARARGS, "reload(name) -> App.Document or None\n" "\n" "Reload a partial opened document. If the document is not open,\n" "return None.\n" "\n" "name : str\n `App.Document` name."}, - {"loadFile", (PyCFunction) Application::sLoadFile, METH_VARARGS, + {"loadFile", (PyCFunction) ApplicationPy::sLoadFile, METH_VARARGS, "loadFile(fileName, module) -> None\n" "\n" "Loads an arbitrary file by delegating to the given Python module.\n" @@ -414,7 +422,7 @@ PyMethodDef Application::Methods[] = { "\n" "fileName : str\n" "module : str"}, - {"coinRemoveAllChildren", (PyCFunction) Application::sCoinRemoveAllChildren, METH_VARARGS, + {"coinRemoveAllChildren", (PyCFunction) ApplicationPy::sCoinRemoveAllChildren, METH_VARARGS, "coinRemoveAllChildren(node) -> None\n" "\n" "Remove all children from a group node.\n" @@ -423,59 +431,67 @@ PyMethodDef Application::Methods[] = { {nullptr, nullptr, 0, nullptr} /* Sentinel */ }; -PyObject* Gui::Application::sEditDocument(PyObject * /*self*/, PyObject *args) +PyObject* Gui::ApplicationPy::sEditDocument(PyObject * /*self*/, PyObject *args) { - if (!PyArg_ParseTuple(args, "")) + if (!PyArg_ParseTuple(args, "")) { return nullptr; + } - Document *pcDoc = Instance->editDocument(); - if (pcDoc) + Document *pcDoc = Application::Instance->editDocument(); + if (pcDoc) { return pcDoc->getPyObject(); - else - Py_Return; + } + + Py_Return; } -PyObject* Gui::Application::sActiveDocument(PyObject * /*self*/, PyObject *args) +PyObject* Gui::ApplicationPy::sActiveDocument(PyObject * /*self*/, PyObject *args) { - if (!PyArg_ParseTuple(args, "")) + if (!PyArg_ParseTuple(args, "")) { return nullptr; + } - Document *pcDoc = Instance->activeDocument(); - if (pcDoc) + Document *pcDoc = Application::Instance->activeDocument(); + if (pcDoc) { return pcDoc->getPyObject(); - else - Py_Return; + } + + Py_Return; } -PyObject* Gui::Application::sActiveView(PyObject * /*self*/, PyObject *args) +PyObject* Gui::ApplicationPy::sActiveView(PyObject * /*self*/, PyObject *args) { const char *typeName = nullptr; - if (!PyArg_ParseTuple(args, "|s", &typeName)) + if (!PyArg_ParseTuple(args, "|s", &typeName)) { return nullptr; + } PY_TRY { Base::Type type; - if(typeName) { + if (typeName) { type = Base::Type::fromName(typeName); - if(type.isBad()) { + if (type.isBad()) { PyErr_Format(PyExc_TypeError, "Invalid type '%s'", typeName); return nullptr; } } - Gui::MDIView* mdiView = Instance->activeView(); + Gui::MDIView* mdiView = Application::Instance->activeView(); if (mdiView && (type.isBad() || mdiView->isDerivedFrom(type))) { auto res = Py::asObject(mdiView->getPyObject()); - if(!res.isNone() || !type.isBad()) + if(!res.isNone() || !type.isBad()) { return Py::new_reference_to(res); + } } - if(type.isBad()) + if (type.isBad()) { type = Gui::View3DInventor::getClassTypeId(); - Instance->activateView(type, true); - mdiView = Instance->activeView(); - if (mdiView) + } + Application::Instance->activateView(type, true); + mdiView = Application::Instance->activeView(); + if (mdiView) { return mdiView->getPyObject(); + } Py_Return; @@ -483,27 +499,29 @@ PyObject* Gui::Application::sActiveView(PyObject * /*self*/, PyObject *args) PY_CATCH } -PyObject* Gui::Application::sActivateView(PyObject * /*self*/, PyObject *args) +PyObject* Gui::ApplicationPy::sActivateView(PyObject * /*self*/, PyObject *args) { - char* typeStr; + char* typeStr = nullptr; + // NOLINTNEXTLINE(cppcoreguidelines-pro-type-cstyle-cast) PyObject *create = Py_False; - if (!PyArg_ParseTuple(args, "sO!", &typeStr, &PyBool_Type, &create)) + if (!PyArg_ParseTuple(args, "sO!", &typeStr, &PyBool_Type, &create)) { return nullptr; + } Base::Type type = Base::Type::fromName(typeStr); - Instance->activateView(type, Base::asBoolean(create)); + Application::Instance->activateView(type, Base::asBoolean(create)); Py_Return; } -PyObject* Gui::Application::sSetActiveDocument(PyObject * /*self*/, PyObject *args) +PyObject* Gui::ApplicationPy::sSetActiveDocument(PyObject * /*self*/, PyObject *args) { Document *pcDoc = nullptr; do { char *pstr = nullptr; if (PyArg_ParseTuple(args, "s", &pstr)) { - pcDoc = Instance->getDocument(pstr); + pcDoc = Application::Instance->getDocument(pstr); if (!pcDoc) { PyErr_Format(PyExc_NameError, "Unknown document '%s'", pstr); return nullptr; @@ -512,9 +530,10 @@ PyObject* Gui::Application::sSetActiveDocument(PyObject * /*self*/, PyObject *ar } PyErr_Clear(); - PyObject* doc; + PyObject* doc = nullptr; if (PyArg_ParseTuple(args, "O!", &(App::DocumentPy::Type), &doc)) { - pcDoc = Instance->getDocument(static_cast(doc)->getDocumentPtr()); + // NOLINTNEXTLINE(cppcoreguidelines-pro-type-static-cast-downcast) + pcDoc = Application::Instance->getDocument(static_cast(doc)->getDocumentPtr()); if (!pcDoc) { PyErr_Format(PyExc_KeyError, "Unknown document instance"); return nullptr; @@ -529,7 +548,7 @@ PyObject* Gui::Application::sSetActiveDocument(PyObject * /*self*/, PyObject *ar return nullptr; } - if (Instance->activeDocument() != pcDoc) { + if (Application::Instance->activeDocument() != pcDoc) { Gui::MDIView* view = pcDoc->getActiveView(); getMainWindow()->setActiveWindow(view); } @@ -537,11 +556,11 @@ PyObject* Gui::Application::sSetActiveDocument(PyObject * /*self*/, PyObject *ar Py_Return; } -PyObject* Application::sGetDocument(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sGetDocument(PyObject * /*self*/, PyObject *args) { char *pstr = nullptr; if (PyArg_ParseTuple(args, "s", &pstr)) { - Document *pcDoc = Instance->getDocument(pstr); + Document *pcDoc = Application::Instance->getDocument(pstr); if (!pcDoc) { PyErr_Format(PyExc_NameError, "Unknown document '%s'", pstr); return nullptr; @@ -550,9 +569,10 @@ PyObject* Application::sGetDocument(PyObject * /*self*/, PyObject *args) } PyErr_Clear(); - PyObject* doc; + PyObject* doc = nullptr; if (PyArg_ParseTuple(args, "O!", &(App::DocumentPy::Type), &doc)) { - Document *pcDoc = Instance->getDocument(static_cast(doc)->getDocumentPtr()); + // NOLINTNEXTLINE(cppcoreguidelines-pro-type-static-cast-downcast) + Document *pcDoc = Application::Instance->getDocument(static_cast(doc)->getDocumentPtr()); if (!pcDoc) { PyErr_Format(PyExc_KeyError, "Unknown document instance"); return nullptr; @@ -564,64 +584,73 @@ PyObject* Application::sGetDocument(PyObject * /*self*/, PyObject *args) return nullptr; } -PyObject* Application::sHide(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sHide(PyObject * /*self*/, PyObject *args) { - char *psFeatStr; - if (!PyArg_ParseTuple(args, "s;Name of the object to hide has to be given!",&psFeatStr)) + char *psFeatStr = nullptr; + if (!PyArg_ParseTuple(args, "s;Name of the object to hide has to be given!",&psFeatStr)) { return nullptr; + } - Document *pcDoc = Instance->activeDocument(); + Document *pcDoc = Application::Instance->activeDocument(); - if (pcDoc) + if (pcDoc) { pcDoc->setHide(psFeatStr); + } Py_Return; } -PyObject* Application::sShow(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sShow(PyObject * /*self*/, PyObject *args) { - char *psFeatStr; - if (!PyArg_ParseTuple(args, "s;Name of the object to show has to be given!",&psFeatStr)) + char *psFeatStr = nullptr; + if (!PyArg_ParseTuple(args, "s;Name of the object to show has to be given!",&psFeatStr)) { return nullptr; + } - Document *pcDoc = Instance->activeDocument(); + Document *pcDoc = Application::Instance->activeDocument(); - if (pcDoc) + if (pcDoc) { pcDoc->setShow(psFeatStr); + } Py_Return; } -PyObject* Application::sHideObject(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sHideObject(PyObject * /*self*/, PyObject *args) { - PyObject *object; - if (!PyArg_ParseTuple(args, "O!",&(App::DocumentObjectPy::Type),&object)) + PyObject *object = nullptr; + if (!PyArg_ParseTuple(args, "O!",&(App::DocumentObjectPy::Type),&object)) { return nullptr; + } + // NOLINTNEXTLINE(cppcoreguidelines-pro-type-static-cast-downcast) App::DocumentObject* obj = static_cast(object)->getDocumentObjectPtr(); - Instance->hideViewProvider(obj); + Application::Instance->hideViewProvider(obj); Py_Return; } -PyObject* Application::sShowObject(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sShowObject(PyObject * /*self*/, PyObject *args) { - PyObject *object; - if (!PyArg_ParseTuple(args, "O!",&(App::DocumentObjectPy::Type),&object)) + PyObject *object = nullptr; + if (!PyArg_ParseTuple(args, "O!",&(App::DocumentObjectPy::Type),&object)) { return nullptr; + } + // NOLINTNEXTLINE(cppcoreguidelines-pro-type-static-cast-downcast) App::DocumentObject* obj = static_cast(object)->getDocumentObjectPtr(); - Instance->showViewProvider(obj); + Application::Instance->showViewProvider(obj); Py_Return; } -PyObject* Application::sOpen(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sOpen(PyObject * /*self*/, PyObject *args) { // only used to open Python files - char* Name; - if (!PyArg_ParseTuple(args, "et","utf-8",&Name)) + char* Name = nullptr; + if (!PyArg_ParseTuple(args, "et","utf-8",&Name)) { return nullptr; + } std::string Utf8Name = std::string(Name); PyMem_Free(Name); @@ -638,12 +667,13 @@ PyObject* Application::sOpen(PyObject * /*self*/, PyObject *args) Py_Return; } -PyObject* Application::sInsert(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sInsert(PyObject * /*self*/, PyObject *args) { - char* Name; + char* Name = nullptr; char* DocName = nullptr; - if (!PyArg_ParseTuple(args, "et|s","utf-8",&Name,&DocName)) + if (!PyArg_ParseTuple(args, "et|s","utf-8",&Name,&DocName)) { return nullptr; + } std::string Utf8Name = std::string(Name); PyMem_Free(Name); @@ -660,12 +690,13 @@ PyObject* Application::sInsert(PyObject * /*self*/, PyObject *args) Py_Return; } -PyObject* Application::sExport(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sExport(PyObject * /*self*/, PyObject *args) { - PyObject* object; - char* Name; - if (!PyArg_ParseTuple(args, "Oet",&object,"utf-8",&Name)) + PyObject* object = nullptr; + char* Name = nullptr; + if (!PyArg_ParseTuple(args, "Oet",&object,"utf-8",&Name)) { return nullptr; + } std::string Utf8Name = std::string(Name); PyMem_Free(Name); @@ -676,6 +707,7 @@ PyObject* Application::sExport(PyObject * /*self*/, PyObject *args) for (Py::Sequence::iterator it = list.begin(); it != list.end(); ++it) { PyObject* item = (*it).ptr(); if (PyObject_TypeCheck(item, &(App::DocumentObjectPy::Type))) { + // NOLINTNEXTLINE(cppcoreguidelines-pro-type-static-cast-downcast) App::DocumentObject* obj = static_cast(item)->getDocumentObjectPtr(); doc = obj->getDocument(); break; @@ -701,6 +733,7 @@ PyObject* Application::sExport(PyObject * /*self*/, PyObject *args) for (Py::Sequence::iterator it = list.begin(); it != list.end(); ++it) { PyObject* item = (*it).ptr(); if (PyObject_TypeCheck(item, &(App::DocumentObjectPy::Type))) { + // NOLINTNEXTLINE(cppcoreguidelines-pro-type-static-cast-downcast) App::DocumentObject* obj = static_cast(item)->getDocumentObjectPtr(); Gui::ViewProvider* vp = Gui::Application::Instance->getViewProvider(obj); @@ -715,11 +748,16 @@ PyObject* Application::sExport(PyObject * /*self*/, PyObject *args) action.setCanApproximate(true); action.apply(sep); + constexpr const int triangleLimit = 100000; + constexpr const int pointLimit = 30000; + constexpr const int lineLimit = 10000; + bool binary = false; - if (action.getTriangleCount() > 100000 || - action.getPointCount() > 30000 || - action.getLineCount() > 10000) + if (action.getTriangleCount() > triangleLimit || + action.getPointCount() > pointLimit || + action.getLineCount() > lineLimit) { binary = true; + } SoFCDB::writeToFile(sep, Utf8Name.c_str(), binary); sep->unref(); @@ -731,8 +769,9 @@ PyObject* Application::sExport(PyObject * /*self*/, PyObject *args) Gui::MDIView* view = gui_doc->getActiveView(); if (view) { auto view3d = qobject_cast(view); - if (view3d) + if (view3d) { view3d->viewAll(); + } QPrinter printer(QPrinter::ScreenResolution); // setPdfVersion sets the printied PDF Version to comply with PDF/A-1b, more details under: https://www.kdab.com/creating-pdfa-documents-qt/ printer.setPdfVersion(QPagedPaintDevice::PdfVersion_A1b); @@ -750,17 +789,20 @@ PyObject* Application::sExport(PyObject * /*self*/, PyObject *args) Py_Return; } -PyObject* Application::sSendActiveView(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sSendActiveView(PyObject * /*self*/, PyObject *args) { - char *psCommandStr; - PyObject *suppress=Py_False; - if (!PyArg_ParseTuple(args, "s|O!",&psCommandStr,&PyBool_Type,&suppress)) + char *psCommandStr = nullptr; + // NOLINTNEXTLINE(cppcoreguidelines-pro-type-cstyle-cast) + PyObject *suppress = Py_False; + if (!PyArg_ParseTuple(args, "s|O!",&psCommandStr,&PyBool_Type,&suppress)) { return nullptr; + } const char* ppReturn = nullptr; - if (!Instance->sendMsgToActiveView(psCommandStr,&ppReturn)) { - if (!Base::asBoolean(suppress)) + if (!Application::Instance->sendMsgToActiveView(psCommandStr,&ppReturn)) { + if (!Base::asBoolean(suppress)) { Base::Console().Warning("Unknown view command: %s\n",psCommandStr); + } } // Print the return value to the output @@ -771,17 +813,20 @@ PyObject* Application::sSendActiveView(PyObject * /*self*/, PyObject *args) Py_Return; } -PyObject* Application::sSendFocusView(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sSendFocusView(PyObject * /*self*/, PyObject *args) { - char *psCommandStr; - PyObject *suppress=Py_False; - if (!PyArg_ParseTuple(args, "s|O!",&psCommandStr,&PyBool_Type,&suppress)) + char *psCommandStr = nullptr; + // NOLINTNEXTLINE(cppcoreguidelines-pro-type-cstyle-cast) + PyObject *suppress = Py_False; + if (!PyArg_ParseTuple(args, "s|O!",&psCommandStr,&PyBool_Type,&suppress)) { return nullptr; + } const char* ppReturn = nullptr; - if (!Instance->sendMsgToFocusView(psCommandStr,&ppReturn)) { - if (!Base::asBoolean(suppress)) + if (!Application::Instance->sendMsgToFocusView(psCommandStr,&ppReturn)) { + if (!Base::asBoolean(suppress)) { Base::Console().Warning("Unknown view command: %s\n",psCommandStr); + } } // Print the return value to the output @@ -792,10 +837,11 @@ PyObject* Application::sSendFocusView(PyObject * /*self*/, PyObject *args) Py_Return; } -PyObject* Application::sGetMainWindow(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sGetMainWindow(PyObject * /*self*/, PyObject *args) { - if (!PyArg_ParseTuple(args, "")) + if (!PyArg_ParseTuple(args, "")) { return nullptr; + } try { return Py::new_reference_to(MainWindowPy::createWrapper(Gui::getMainWindow())); @@ -805,40 +851,44 @@ PyObject* Application::sGetMainWindow(PyObject * /*self*/, PyObject *args) } } -PyObject* Application::sUpdateGui(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sUpdateGui(PyObject * /*self*/, PyObject *args) { - if (!PyArg_ParseTuple(args, "")) + if (!PyArg_ParseTuple(args, "")) { return nullptr; + } qApp->processEvents(); Py_Return; } -PyObject* Application::sUpdateLocale(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sUpdateLocale(PyObject * /*self*/, PyObject *args) { - if (!PyArg_ParseTuple(args, "")) + if (!PyArg_ParseTuple(args, "")) { return nullptr; + } Translator::instance()->refresh(); Py_Return; } -PyObject* Application::sGetLocale(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sGetLocale(PyObject * /*self*/, PyObject *args) { - if (!PyArg_ParseTuple(args, "")) + if (!PyArg_ParseTuple(args, "")) { return nullptr; + } std::string locale = Translator::instance()->activeLanguage(); return PyUnicode_FromString(locale.c_str()); } -PyObject* Application::sSetLocale(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sSetLocale(PyObject * /*self*/, PyObject *args) { - char* name; - if (!PyArg_ParseTuple(args, "s", &name)) + char* name = nullptr; + if (!PyArg_ParseTuple(args, "s", &name)) { return nullptr; + } std::string cname(name); TStringMap map = Translator::instance()->supportedLocales(); @@ -853,10 +903,11 @@ PyObject* Application::sSetLocale(PyObject * /*self*/, PyObject *args) Py_Return; } -PyObject* Application::sSupportedLocales(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sSupportedLocales(PyObject * /*self*/, PyObject *args) { - if (!PyArg_ParseTuple(args, "")) + if (!PyArg_ParseTuple(args, "")) { return nullptr; + } TStringMap map = Translator::instance()->supportedLocales(); Py::Dict dict; @@ -869,15 +920,17 @@ PyObject* Application::sSupportedLocales(PyObject * /*self*/, PyObject *args) return Py::new_reference_to(dict); } -PyObject* Application::sCreateDialog(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sCreateDialog(PyObject * /*self*/, PyObject *args) { char* fn = nullptr; - if (!PyArg_ParseTuple(args, "s", &fn)) + if (!PyArg_ParseTuple(args, "s", &fn)) { return nullptr; + } PyObject* pPyResource = nullptr; try{ pPyResource = new PyResource(); + // NOLINTNEXTLINE(cppcoreguidelines-pro-type-static-cast-downcast) static_cast(pPyResource)->load(fn); } catch (const Base::Exception& e) { @@ -888,9 +941,10 @@ PyObject* Application::sCreateDialog(PyObject * /*self*/, PyObject *args) return pPyResource; } -PyObject* Application::sAddPreferencePage(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sAddPreferencePage(PyObject * /*self*/, PyObject *args) { - char *fn, *grp; + char* fn = nullptr; + char* grp = nullptr; if (PyArg_ParseTuple(args, "ss", &fn,&grp)) { QFileInfo fi(QString::fromUtf8(fn)); if (!fi.exists()) { @@ -904,7 +958,7 @@ PyObject* Application::sAddPreferencePage(PyObject * /*self*/, PyObject *args) } PyErr_Clear(); - PyObject* dlg; + PyObject* dlg = nullptr; // new style classes if (PyArg_ParseTuple(args, "O!s", &PyType_Type, &dlg, &grp)) { // add to the preferences dialog @@ -915,21 +969,22 @@ PyObject* Application::sAddPreferencePage(PyObject * /*self*/, PyObject *args) return nullptr; } -PyObject* Application::sActivateWorkbenchHandler(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sActivateWorkbenchHandler(PyObject * /*self*/, PyObject *args) { - char* psKey; - if (!PyArg_ParseTuple(args, "s", &psKey)) + char* psKey = nullptr; + if (!PyArg_ParseTuple(args, "s", &psKey)) { return nullptr; + } // search for workbench handler from the dictionary - PyObject* pcWorkbench = PyDict_GetItemString(Instance->_pcWorkbenchDictionary, psKey); + PyObject* pcWorkbench = PyDict_GetItemString(Application::Instance->_pcWorkbenchDictionary, psKey); if (!pcWorkbench) { PyErr_Format(PyExc_KeyError, "No such workbench '%s'", psKey); return nullptr; } try { - bool ok = Instance->activateWorkbench(psKey); + bool ok = Application::Instance->activateWorkbench(psKey); return Py::new_reference_to(Py::Boolean(ok)); } catch (const Base::Exception& e) { @@ -958,11 +1013,12 @@ PyObject* Application::sActivateWorkbenchHandler(PyObject * /*self*/, PyObject * } } -PyObject* Application::sAddWorkbenchHandler(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sAddWorkbenchHandler(PyObject * /*self*/, PyObject *args) { - PyObject* pcObject; - if (!PyArg_ParseTuple(args, "O", &pcObject)) + PyObject* pcObject = nullptr; + if (!PyArg_ParseTuple(args, "O", &pcObject)) { return nullptr; + } try { // get the class object 'Workbench' from the main module that is expected @@ -993,19 +1049,21 @@ PyObject* Application::sAddWorkbenchHandler(PyObject * /*self*/, PyObject *args) return nullptr; } + // NOLINTBEGIN(bugprone-unused-raii) // Search for some methods and members without invoking them Py::Callable(object.getAttr(std::string("Initialize"))); Py::Callable(object.getAttr(std::string("GetClassName"))); - std::string item = name.as_std_string("ascii"); + // NOLINTEND(bugprone-unused-raii) - PyObject* wb = PyDict_GetItemString(Instance->_pcWorkbenchDictionary,item.c_str()); + std::string item = name.as_std_string("ascii"); + PyObject* wb = PyDict_GetItemString(Application::Instance->_pcWorkbenchDictionary,item.c_str()); if (wb) { PyErr_Format(PyExc_KeyError, "'%s' already exists.", item.c_str()); return nullptr; } - PyDict_SetItemString(Instance->_pcWorkbenchDictionary,item.c_str(),object.ptr()); - Instance->signalRefreshWorkbenches(); + PyDict_SetItemString(Application::Instance->_pcWorkbenchDictionary,item.c_str(),object.ptr()); + Application::Instance->signalRefreshWorkbenches(); } catch (const Py::Exception&) { return nullptr; @@ -1014,33 +1072,35 @@ PyObject* Application::sAddWorkbenchHandler(PyObject * /*self*/, PyObject *args) Py_Return; } -PyObject* Application::sRemoveWorkbenchHandler(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sRemoveWorkbenchHandler(PyObject * /*self*/, PyObject *args) { - char* psKey; - if (!PyArg_ParseTuple(args, "s", &psKey)) + char* psKey = nullptr; + if (!PyArg_ParseTuple(args, "s", &psKey)) { return nullptr; + } - PyObject* wb = PyDict_GetItemString(Instance->_pcWorkbenchDictionary,psKey); + PyObject* wb = PyDict_GetItemString(Application::Instance->_pcWorkbenchDictionary,psKey); if (!wb) { PyErr_Format(PyExc_KeyError, "No such workbench '%s'", psKey); return nullptr; } WorkbenchManager::instance()->removeWorkbench(psKey); - PyDict_DelItemString(Instance->_pcWorkbenchDictionary,psKey); - Instance->signalRefreshWorkbenches(); + PyDict_DelItemString(Application::Instance->_pcWorkbenchDictionary,psKey); + Application::Instance->signalRefreshWorkbenches(); Py_Return; } -PyObject* Application::sGetWorkbenchHandler(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sGetWorkbenchHandler(PyObject * /*self*/, PyObject *args) { - char* psKey; - if (!PyArg_ParseTuple(args, "s", &psKey)) + char* psKey = nullptr; + if (!PyArg_ParseTuple(args, "s", &psKey)) { return nullptr; + } // get the python workbench object from the dictionary - PyObject* pcWorkbench = PyDict_GetItemString(Instance->_pcWorkbenchDictionary, psKey); + PyObject* pcWorkbench = PyDict_GetItemString(Application::Instance->_pcWorkbenchDictionary, psKey); if (!pcWorkbench) { PyErr_Format(PyExc_KeyError, "No such workbench '%s'", psKey); return nullptr; @@ -1050,19 +1110,21 @@ PyObject* Application::sGetWorkbenchHandler(PyObject * /*self*/, PyObject *args) return pcWorkbench; } -PyObject* Application::sListWorkbenchHandlers(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sListWorkbenchHandlers(PyObject * /*self*/, PyObject *args) { - if (!PyArg_ParseTuple(args, "")) + if (!PyArg_ParseTuple(args, "")) { return nullptr; + } - Py_INCREF(Instance->_pcWorkbenchDictionary); - return Instance->_pcWorkbenchDictionary; + Py_INCREF(Application::Instance->_pcWorkbenchDictionary); + return Application::Instance->_pcWorkbenchDictionary; } -PyObject* Application::sActiveWorkbenchHandler(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sActiveWorkbenchHandler(PyObject * /*self*/, PyObject *args) { - if (!PyArg_ParseTuple(args, "")) + if (!PyArg_ParseTuple(args, "")) { return nullptr; + } Workbench* actWb = WorkbenchManager::instance()->active(); if (!actWb) { @@ -1072,7 +1134,7 @@ PyObject* Application::sActiveWorkbenchHandler(PyObject * /*self*/, PyObject *ar // get the python workbench object from the dictionary std::string key = actWb->name(); - PyObject* pcWorkbench = PyDict_GetItemString(Instance->_pcWorkbenchDictionary, key.c_str()); + PyObject* pcWorkbench = PyDict_GetItemString(Application::Instance->_pcWorkbenchDictionary, key.c_str()); if (!pcWorkbench) { PyErr_Format(PyExc_KeyError, "No such workbench '%s'", key.c_str()); return nullptr; @@ -1083,11 +1145,12 @@ PyObject* Application::sActiveWorkbenchHandler(PyObject * /*self*/, PyObject *ar return pcWorkbench; } -PyObject* Application::sAddResPath(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sAddResPath(PyObject * /*self*/, PyObject *args) { - char* filePath; - if (!PyArg_ParseTuple(args, "et", "utf-8", &filePath)) + char* filePath = nullptr; + if (!PyArg_ParseTuple(args, "et", "utf-8", &filePath)) { return nullptr; + } QString path = QString::fromUtf8(filePath); PyMem_Free(filePath); @@ -1103,11 +1166,12 @@ PyObject* Application::sAddResPath(PyObject * /*self*/, PyObject *args) Py_Return; } -PyObject* Application::sAddLangPath(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sAddLangPath(PyObject * /*self*/, PyObject *args) { - char* filePath; - if (!PyArg_ParseTuple(args, "et", "utf-8", &filePath)) + char* filePath = nullptr; + if (!PyArg_ParseTuple(args, "et", "utf-8", &filePath)) { return nullptr; + } QString path = QString::fromUtf8(filePath); PyMem_Free(filePath); @@ -1122,11 +1186,12 @@ PyObject* Application::sAddLangPath(PyObject * /*self*/, PyObject *args) Py_Return; } -PyObject* Application::sAddIconPath(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sAddIconPath(PyObject * /*self*/, PyObject *args) { - char* filePath; - if (!PyArg_ParseTuple(args, "et", "utf-8", &filePath)) + char* filePath = nullptr; + if (!PyArg_ParseTuple(args, "et", "utf-8", &filePath)) { return nullptr; + } QString path = QString::fromUtf8(filePath); PyMem_Free(filePath); @@ -1141,13 +1206,14 @@ PyObject* Application::sAddIconPath(PyObject * /*self*/, PyObject *args) Py_Return; } -PyObject* Application::sAddIcon(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sAddIcon(PyObject * /*self*/, PyObject *args) { - const char *iconName; + const char *iconName = nullptr; Py_buffer content; const char *format = "XPM"; - if (!PyArg_ParseTuple(args, "ss*|s", &iconName, &content, &format)) + if (!PyArg_ParseTuple(args, "ss*|s", &iconName, &content, &format)) { return nullptr; + } QPixmap icon; if (BitmapFactory().findPixmapInCache(iconName, icon)) { @@ -1157,11 +1223,11 @@ PyObject* Application::sAddIcon(PyObject * /*self*/, PyObject *args) } const char* contentStr = static_cast(content.buf); - QByteArray ary(contentStr, content.len); + QByteArray ary(contentStr, static_cast(content.len)); icon.loadFromData(ary, format); if (icon.isNull()){ - QString file = QString::fromUtf8(contentStr, content.len); + QString file = QString::fromUtf8(contentStr, static_cast(content.len)); icon.load(file); } @@ -1177,44 +1243,49 @@ PyObject* Application::sAddIcon(PyObject * /*self*/, PyObject *args) Py_Return; } -PyObject* Application::sGetIcon(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sGetIcon(PyObject * /*self*/, PyObject *args) { - char *iconName; - if (!PyArg_ParseTuple(args, "s", &iconName)) + char *iconName = nullptr; + if (!PyArg_ParseTuple(args, "s", &iconName)) { return nullptr; + } PythonWrapper wrap; wrap.loadGuiModule(); wrap.loadWidgetsModule(); auto pixmap = BitmapFactory().pixmap(iconName); - if(!pixmap.isNull()) + if(!pixmap.isNull()) { return Py::new_reference_to(wrap.fromQIcon(new QIcon(pixmap))); + } Py_Return; } -PyObject* Application::sIsIconCached(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sIsIconCached(PyObject * /*self*/, PyObject *args) { - char *iconName; - if (!PyArg_ParseTuple(args, "s", &iconName)) + char *iconName = nullptr; + if (!PyArg_ParseTuple(args, "s", &iconName)) { return nullptr; + } QPixmap icon; return Py::new_reference_to(Py::Boolean(BitmapFactory().findPixmapInCache(iconName, icon))); } -PyObject* Application::sAddCommand(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sAddCommand(PyObject * /*self*/, PyObject *args) { - char* pName; + char* pName = nullptr; char* pSource = nullptr; - PyObject* pcCmdObj; - if (!PyArg_ParseTuple(args, "sO|s", &pName,&pcCmdObj,&pSource)) + PyObject* pcCmdObj = nullptr; + if (!PyArg_ParseTuple(args, "sO|s", &pName,&pcCmdObj,&pSource)) { return nullptr; + } // get the call stack to find the Python module name // - std::string module, group; + std::string module; + std::string group; try { Base::PyGILStateLocker lock; Py::Module mod(PyImport_ImportModule("inspect"), true); @@ -1229,8 +1300,9 @@ PyObject* Application::sAddCommand(PyObject * /*self*/, PyObject *args) // usually this is the file name of the calling script Py::Object info = list.getItem(0); PyObject *pyfile = PyStructSequence_GET_ITEM(*info,1); - if(!pyfile) + if(!pyfile) { throw Py::Exception(); + } file = Py::Object(pyfile).as_string(); Base::FileInfo fi(file); @@ -1246,10 +1318,11 @@ PyObject* Application::sAddCommand(PyObject * /*self*/, PyObject *args) } else { boost::regex rx("/Ext/freecad/(\\w+)/"); - if (boost::regex_search(file, what, rx)) + if (boost::regex_search(file, what, rx)) { group = what[1]; - else + } else { group = module; + } } } catch (Py::Exception& e) { @@ -1285,19 +1358,20 @@ PyObject* Application::sAddCommand(PyObject * /*self*/, PyObject *args) return nullptr; } catch (...) { - PyErr_SetString(Base::PyExc_FC_GeneralError, "Unknown C++ exception raised in Application::sAddCommand()"); + PyErr_SetString(Base::PyExc_FC_GeneralError, "Unknown C++ exception raised in ApplicationPy::sAddCommand()"); return nullptr; } Py_Return; } -PyObject* Application::sRunCommand(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sRunCommand(PyObject * /*self*/, PyObject *args) { - char* pName; + char* pName = nullptr; int item = 0; - if (!PyArg_ParseTuple(args, "s|i", &pName, &item)) + if (!PyArg_ParseTuple(args, "s|i", &pName, &item)) { return nullptr; + } Gui::Command::LogDisabler d1; Gui::SelectionLogDisabler d2; @@ -1307,17 +1381,17 @@ PyObject* Application::sRunCommand(PyObject * /*self*/, PyObject *args) cmd->invoke(item); Py_Return; } - else { - PyErr_Format(Base::PyExc_FC_GeneralError, "No such command '%s'", pName); - return nullptr; - } + + PyErr_Format(Base::PyExc_FC_GeneralError, "No such command '%s'", pName); + return nullptr; } -PyObject* Application::sDoCommand(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sDoCommand(PyObject * /*self*/, PyObject *args) { char *sCmd = nullptr; - if (!PyArg_ParseTuple(args, "s", &sCmd)) + if (!PyArg_ParseTuple(args, "s", &sCmd)) { return nullptr; + } Gui::Command::LogDisabler d1; Gui::SelectionLogDisabler d2; @@ -1325,25 +1399,29 @@ PyObject* Application::sDoCommand(PyObject * /*self*/, PyObject *args) Gui::Command::printPyCaller(); Gui::Application::Instance->macroManager()->addLine(MacroManager::App, sCmd); - PyObject *module, *dict; + PyObject* module = nullptr; + PyObject* dict = nullptr; Base::PyGILStateLocker locker; module = PyImport_AddModule("__main__"); - if (!module) + if (!module) { return nullptr; + } dict = PyModule_GetDict(module); - if (!dict) + if (!dict) { return nullptr; + } return PyRun_String(sCmd, Py_file_input, dict, dict); } -PyObject* Application::sDoCommandGui(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sDoCommandGui(PyObject * /*self*/, PyObject *args) { char *sCmd = nullptr; - if (!PyArg_ParseTuple(args, "s", &sCmd)) + if (!PyArg_ParseTuple(args, "s", &sCmd)) { return nullptr; + } Gui::Command::LogDisabler d1; Gui::SelectionLogDisabler d2; @@ -1351,48 +1429,56 @@ PyObject* Application::sDoCommandGui(PyObject * /*self*/, PyObject *args) Gui::Command::printPyCaller(); Gui::Application::Instance->macroManager()->addLine(MacroManager::Gui, sCmd); - PyObject *module, *dict; + PyObject* module = nullptr; + PyObject* dict = nullptr; Base::PyGILStateLocker locker; module = PyImport_AddModule("__main__"); - if (!module) + if (!module) { return nullptr; + } dict = PyModule_GetDict(module); - if (!dict) + if (!dict) { return nullptr; + } return PyRun_String(sCmd, Py_file_input, dict, dict); } -PyObject* Application::sDoCommandEval(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sDoCommandEval(PyObject * /*self*/, PyObject *args) { char *sCmd = nullptr; - if (!PyArg_ParseTuple(args, "s", &sCmd)) + if (!PyArg_ParseTuple(args, "s", &sCmd)) { return nullptr; + } Gui::Command::LogDisabler d1; Gui::SelectionLogDisabler d2; - PyObject *module, *dict; + PyObject* module = nullptr; + PyObject* dict = nullptr; Base::PyGILStateLocker locker; module = PyImport_AddModule("__main__"); - if (!module) + if (!module) { return nullptr; +} dict = PyModule_GetDict(module); - if (!dict) + if (!dict) { return nullptr; + } return PyRun_String(sCmd, Py_eval_input, dict, dict); } -PyObject* Application::sDoCommandSkip(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sDoCommandSkip(PyObject * /*self*/, PyObject *args) { char *sCmd = nullptr; - if (!PyArg_ParseTuple(args, "s", &sCmd)) + if (!PyArg_ParseTuple(args, "s", &sCmd)) { return nullptr; + } Gui::Command::LogDisabler d1; Gui::SelectionLogDisabler d2; @@ -1402,11 +1488,12 @@ PyObject* Application::sDoCommandSkip(PyObject * /*self*/, PyObject *args) return Py::None().ptr(); } -PyObject* Application::sAddModule(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sAddModule(PyObject * /*self*/, PyObject *args) { - char *pstr; - if (!PyArg_ParseTuple(args, "s", &pstr)) + char *pstr = nullptr; + if (!PyArg_ParseTuple(args, "s", &pstr)) { return nullptr; + } try { Command::addModule(Command::Doc,pstr); @@ -1418,26 +1505,50 @@ PyObject* Application::sAddModule(PyObject * /*self*/, PyObject *args) } } -PyObject* Application::sShowDownloads(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sShowDownloads(PyObject * /*self*/, PyObject *args) { - if (!PyArg_ParseTuple(args, "")) + if (!PyArg_ParseTuple(args, "")) { return nullptr; + } Gui::Dialog::DownloadManager::getInstance(); Py_Return; } -PyObject* Application::sShowPreferences(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sShowPreferences(PyObject* /*self*/, PyObject* args) { - char *pstr = nullptr; - int idx=0; - if (!PyArg_ParseTuple(args, "|si", &pstr, &idx)) + char* pstr = nullptr; + int idx = 0; + if (!PyArg_ParseTuple(args, "|si", &pstr, &idx)) { + return nullptr; + } + + Gui::Dialog::DlgPreferencesImp cDlg(getMainWindow()); + if (pstr) { + cDlg.activateGroupPage(QString::fromUtf8(pstr), idx); + } + + WaitCursor wc; + wc.restoreCursor(); + cDlg.exec(); + wc.setWaitCursor(); + + Py_Return; +} + +PyObject* ApplicationPy::sShowPreferencesByName(PyObject* /*self*/, PyObject* args) +{ + char* pstr = nullptr; + const char* prefType = ""; + if (!PyArg_ParseTuple(args, "s|s", &pstr, &prefType)) { return nullptr; + } Gui::Dialog::DlgPreferencesImp cDlg(getMainWindow()); - if (pstr) - cDlg.activateGroupPage(QString::fromUtf8(pstr),idx); + if (pstr && prefType) { + cDlg.activateGroupPageByPageName(QString::fromUtf8(pstr), QString::fromUtf8(prefType)); + } WaitCursor wc; wc.restoreCursor(); @@ -1447,40 +1558,45 @@ PyObject* Application::sShowPreferences(PyObject * /*self*/, PyObject *args) Py_Return; } -PyObject* Application::sCreateViewer(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sCreateViewer(PyObject * /*self*/, PyObject *args) { int num_of_views = 1; char* title = nullptr; // if one argument (int) is given - if (!PyArg_ParseTuple(args, "|is", &num_of_views, &title)) + if (!PyArg_ParseTuple(args, "|is", &num_of_views, &title)) { return nullptr; + } if (num_of_views <= 0) { PyErr_Format(PyExc_ValueError, "views must be > 0"); return nullptr; } - else if (num_of_views == 1) { + if (num_of_views == 1) { auto viewer = new View3DInventor(nullptr, nullptr); - if (title) + if (title) { viewer->setWindowTitle(QString::fromUtf8(title)); + } Gui::getMainWindow()->addWindow(viewer); return viewer->getPyObject(); } else { auto viewer = new SplitView3DInventor(num_of_views, nullptr, nullptr); - if (title) + if (title) { viewer->setWindowTitle(QString::fromUtf8(title)); + } Gui::getMainWindow()->addWindow(viewer); return viewer->getPyObject(); } } -PyObject* Application::sGetMarkerIndex(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sGetMarkerIndex(PyObject * /*self*/, PyObject *args) { + constexpr const int defaultSize = 9; char *pstr {}; - int defSize = 9; - if (!PyArg_ParseTuple(args, "s|i", &pstr, &defSize)) + int defSize = defaultSize; + if (!PyArg_ParseTuple(args, "s|i", &pstr, &defSize)) { return nullptr; + } PY_TRY { ParameterGrp::handle const hGrp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/View"); @@ -1509,35 +1625,39 @@ PyObject* Application::sGetMarkerIndex(PyObject * /*self*/, PyObject *args) //get the marker size auto sizeList = Gui::Inventor::MarkerBitmaps::getSupportedSizes(marker_arg); - if (std::find(std::begin(sizeList), std::end(sizeList), defSize) == std::end(sizeList)) - defSize = 9; + if (std::find(std::begin(sizeList), std::end(sizeList), defSize) == std::end(sizeList)) { + defSize = defaultSize; + } return Py_BuildValue("i", Gui::Inventor::MarkerBitmaps::getMarkerIndex(marker_arg, defSize)); } PY_CATCH; } -PyObject* Application::sReload(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sReload(PyObject * /*self*/, PyObject *args) { - const char *name; - if (!PyArg_ParseTuple(args, "s", &name)) + const char *name = nullptr; + if (!PyArg_ParseTuple(args, "s", &name)) { return nullptr; + } PY_TRY { auto doc = Application::Instance->reopen(App::GetApplication().getDocument(name)); - if(doc) + if(doc) { return doc->getPyObject(); + } Py_Return; } PY_CATCH; } -PyObject* Application::sLoadFile(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sLoadFile(PyObject * /*self*/, PyObject *args) { const char *path = ""; const char *mod = ""; - if (!PyArg_ParseTuple(args, "s|s", &path, &mod)) + if (!PyArg_ParseTuple(args, "s|s", &path, &mod)) { return nullptr; + } PY_TRY { Base::FileInfo fi(path); @@ -1554,9 +1674,8 @@ PyObject* Application::sLoadFile(PyObject * /*self*/, PyObject *args) PyErr_Format(PyExc_IOError, "Filetype %s is not supported.", ext.c_str()); return nullptr; } - else { - module = modules.front(); - } + + module = modules.front(); } Application::Instance->open(path,module.c_str()); @@ -1566,11 +1685,12 @@ PyObject* Application::sLoadFile(PyObject * /*self*/, PyObject *args) PY_CATCH } -PyObject* Application::sAddDocObserver(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sAddDocObserver(PyObject * /*self*/, PyObject *args) { - PyObject* o; - if (!PyArg_ParseTuple(args, "O",&o)) + PyObject* o = nullptr; + if (!PyArg_ParseTuple(args, "O",&o)) { return nullptr; + } PY_TRY { DocumentObserverPython::addObserver(Py::Object(o)); @@ -1579,11 +1699,12 @@ PyObject* Application::sAddDocObserver(PyObject * /*self*/, PyObject *args) PY_CATCH; } -PyObject* Application::sRemoveDocObserver(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sRemoveDocObserver(PyObject * /*self*/, PyObject *args) { - PyObject* o; - if (!PyArg_ParseTuple(args, "O",&o)) + PyObject* o = nullptr; + if (!PyArg_ParseTuple(args, "O",&o)) { return nullptr; + } PY_TRY { DocumentObserverPython::removeObserver(Py::Object(o)); @@ -1592,11 +1713,12 @@ PyObject* Application::sRemoveDocObserver(PyObject * /*self*/, PyObject *args) PY_CATCH; } -PyObject* Application::sAddWbManipulator(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sAddWbManipulator(PyObject * /*self*/, PyObject *args) { - PyObject* o; - if (!PyArg_ParseTuple(args, "O",&o)) + PyObject* o = nullptr; + if (!PyArg_ParseTuple(args, "O",&o)) { return nullptr; + } PY_TRY { WorkbenchManipulatorPython::installManipulator(Py::Object(o)); @@ -1605,11 +1727,12 @@ PyObject* Application::sAddWbManipulator(PyObject * /*self*/, PyObject *args) PY_CATCH; } -PyObject* Application::sRemoveWbManipulator(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sRemoveWbManipulator(PyObject * /*self*/, PyObject *args) { - PyObject* o; - if (!PyArg_ParseTuple(args, "O",&o)) + PyObject* o = nullptr; + if (!PyArg_ParseTuple(args, "O",&o)) { return nullptr; + } PY_TRY { WorkbenchManipulatorPython::removeManipulator(Py::Object(o)); @@ -1618,11 +1741,12 @@ PyObject* Application::sRemoveWbManipulator(PyObject * /*self*/, PyObject *args) PY_CATCH; } -PyObject* Application::sCoinRemoveAllChildren(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sCoinRemoveAllChildren(PyObject * /*self*/, PyObject *args) { - PyObject *pynode; - if (!PyArg_ParseTuple(args, "O", &pynode)) + PyObject *pynode = nullptr; + if (!PyArg_ParseTuple(args, "O", &pynode)) { return nullptr; + } PY_TRY { void* ptr = nullptr; @@ -1638,34 +1762,37 @@ PyObject* Application::sCoinRemoveAllChildren(PyObject * /*self*/, PyObject *arg PY_CATCH; } -PyObject* Application::sListUserEditModes(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sListUserEditModes(PyObject * /*self*/, PyObject *args) { Py::List ret; - if (!PyArg_ParseTuple(args, "")) + if (!PyArg_ParseTuple(args, "")) { return nullptr; + } - for (auto const &uem : Instance->listUserEditModes()) { + for (auto const &uem : Application::Instance->listUserEditModes()) { ret.append(Py::String(uem.second.first)); } return Py::new_reference_to(ret); } -PyObject* Application::sGetUserEditMode(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sGetUserEditMode(PyObject * /*self*/, PyObject *args) { - if (!PyArg_ParseTuple(args, "")) + if (!PyArg_ParseTuple(args, "")) { return nullptr; + } - return Py::new_reference_to(Py::String(Instance->getUserEditModeUIStrings().first)); + return Py::new_reference_to(Py::String(Application::Instance->getUserEditModeUIStrings().first)); } -PyObject* Application::sSetUserEditMode(PyObject * /*self*/, PyObject *args) +PyObject* ApplicationPy::sSetUserEditMode(PyObject * /*self*/, PyObject *args) { const char *mode = ""; - if (!PyArg_ParseTuple(args, "s", &mode)) + if (!PyArg_ParseTuple(args, "s", &mode)) { return nullptr; + } - bool ok = Instance->setUserEditMode(std::string(mode)); + bool ok = Application::Instance->setUserEditMode(std::string(mode)); return Py::new_reference_to(Py::Boolean(ok)); } diff --git a/src/Gui/ApplicationPy.h b/src/Gui/ApplicationPy.h new file mode 100644 index 000000000000..362cfcf88ba4 --- /dev/null +++ b/src/Gui/ApplicationPy.h @@ -0,0 +1,120 @@ +/*************************************************************************** + * Copyright (c) 2004 Jürgen Riegel * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#ifndef GUI_APPLICATIONPY_H +#define GUI_APPLICATIONPY_H + +#include + +namespace Gui{ + +/** The ApplicationPy class + * This is the Python wrapper class of Application. + * @author Jürgen Riegel, Werner Mayer + */ +class GuiExport ApplicationPy +{ +public: + // clang-format off + //--------------------------------------------------------------------- + // python exports goes here +++++++++++++++++++++++++++++++++++++++++++ + //--------------------------------------------------------------------- + // static python wrapper of the exported functions + static PyObject* sActivateWorkbenchHandler (PyObject *self,PyObject *args); // activates a workbench object + static PyObject* sAddWorkbenchHandler (PyObject *self,PyObject *args); // adds a new workbench handler to a list + static PyObject* sRemoveWorkbenchHandler (PyObject *self,PyObject *args); // removes a workbench handler from the list + static PyObject* sGetWorkbenchHandler (PyObject *self,PyObject *args); // retrieves the workbench handler + static PyObject* sListWorkbenchHandlers (PyObject *self,PyObject *args); // retrieves a list of all workbench handlers + static PyObject* sActiveWorkbenchHandler (PyObject *self,PyObject *args); // retrieves the active workbench object + static PyObject* sAddResPath (PyObject *self,PyObject *args); // adds a path where to find resources + static PyObject* sAddLangPath (PyObject *self,PyObject *args); // adds a path to a qm file + static PyObject* sAddIconPath (PyObject *self,PyObject *args); // adds a path to an icon file + static PyObject* sAddIcon (PyObject *self,PyObject *args); // adds an icon to the cache + static PyObject* sGetIcon (PyObject *self,PyObject *args); // get an icon from the cache + static PyObject* sIsIconCached (PyObject *self,PyObject *args); // check if an icon is cached + + static PyObject* sSendActiveView (PyObject *self,PyObject *args); + static PyObject* sSendFocusView (PyObject *self,PyObject *args); + + static PyObject* sGetMainWindow (PyObject *self,PyObject *args); + static PyObject* sUpdateGui (PyObject *self,PyObject *args); + static PyObject* sUpdateLocale (PyObject *self,PyObject *args); + static PyObject* sGetLocale (PyObject *self,PyObject *args); + static PyObject* sSetLocale (PyObject *self,PyObject *args); + static PyObject* sSupportedLocales (PyObject *self,PyObject *args); + static PyObject* sCreateDialog (PyObject *self,PyObject *args); + static PyObject* sAddPreferencePage (PyObject *self,PyObject *args); + + static PyObject* sRunCommand (PyObject *self,PyObject *args); + static PyObject* sAddCommand (PyObject *self,PyObject *args); + + static PyObject* sHide (PyObject *self,PyObject *args); // deprecated + static PyObject* sShow (PyObject *self,PyObject *args); // deprecated + static PyObject* sHideObject (PyObject *self,PyObject *args); // hide view provider object + static PyObject* sShowObject (PyObject *self,PyObject *args); // show view provider object + + static PyObject* sOpen (PyObject *self,PyObject *args); // open Python scripts + static PyObject* sInsert (PyObject *self,PyObject *args); // open Python scripts + static PyObject* sExport (PyObject *self,PyObject *args); + static PyObject* sReload (PyObject *self,PyObject *args); // reload FCStd file + static PyObject* sLoadFile (PyObject *self,PyObject *args); // open all types of files + + static PyObject* sCoinRemoveAllChildren (PyObject *self,PyObject *args); + + static PyObject* sActiveDocument (PyObject *self,PyObject *args); + static PyObject* sSetActiveDocument (PyObject *self,PyObject *args); + static PyObject* sActiveView (PyObject *self,PyObject *args); + static PyObject* sActivateView (PyObject *self,PyObject *args); + static PyObject* sGetDocument (PyObject *self,PyObject *args); + static PyObject* sEditDocument (PyObject *self,PyObject *args); + + static PyObject* sDoCommand (PyObject *self,PyObject *args); + static PyObject* sDoCommandGui (PyObject *self,PyObject *args); + static PyObject* sDoCommandEval (PyObject *self,PyObject *args); + static PyObject* sDoCommandSkip (PyObject *self,PyObject *args); + static PyObject* sAddModule (PyObject *self,PyObject *args); + + static PyObject* sShowDownloads (PyObject *self,PyObject *args); + static PyObject* sShowPreferences (PyObject *self,PyObject *args); + static PyObject* sShowPreferencesByName (PyObject *self,PyObject *args); + + static PyObject* sCreateViewer (PyObject *self,PyObject *args); + static PyObject* sGetMarkerIndex (PyObject *self,PyObject *args); + + static PyObject* sAddDocObserver (PyObject *self,PyObject *args); + static PyObject* sRemoveDocObserver (PyObject *self,PyObject *args); + + static PyObject* sAddWbManipulator (PyObject *self,PyObject *args); + static PyObject* sRemoveWbManipulator (PyObject *self,PyObject *args); + + static PyObject* sListUserEditModes (PyObject *self,PyObject *args); + static PyObject* sGetUserEditMode (PyObject *self,PyObject *args); + static PyObject* sSetUserEditMode (PyObject *self,PyObject *args); + + static PyMethodDef Methods[]; + // clang-format on +}; + +} //namespace Gui + +#endif diff --git a/src/Gui/BlenderNavigationStyle.cpp b/src/Gui/BlenderNavigationStyle.cpp index 4db964ae5afd..6988b34caae8 100644 --- a/src/Gui/BlenderNavigationStyle.cpp +++ b/src/Gui/BlenderNavigationStyle.cpp @@ -197,13 +197,11 @@ SbBool BlenderNavigationStyle::processSoEvent(const SoEvent * const ev) const auto * const event = (const SoLocation2Event *) ev; if (this->currentmode == NavigationStyle::ZOOMING) { this->zoomByCursor(posn, prevnormalized); - newmode = NavigationStyle::SELECTION; processed = true; } else if (this->currentmode == NavigationStyle::PANNING) { float ratio = vp.getViewportAspectRatio(); panCamera(viewer->getSoRenderManager()->getCamera(), ratio, this->panningplane, posn, prevnormalized); - newmode = NavigationStyle::SELECTION; processed = true; } else if (this->currentmode == NavigationStyle::DRAGGING) { @@ -277,6 +275,13 @@ SbBool BlenderNavigationStyle::processSoEvent(const SoEvent * const ev) break; default: + // Reset mode to IDLE when button 3 is released + // This stops the PANNING when button 3 is released but SHIFT is still pressed + // This stops the ZOOMING when button 3 is released but CTRL is still pressed + if ((curmode == NavigationStyle::PANNING || curmode == NavigationStyle::ZOOMING) + && !this->button3down) { + newmode = NavigationStyle::IDLE; + } break; } diff --git a/src/Gui/CMakeLists.txt b/src/Gui/CMakeLists.txt index e55511291f74..028f13cf5150 100644 --- a/src/Gui/CMakeLists.txt +++ b/src/Gui/CMakeLists.txt @@ -1066,6 +1066,7 @@ SET(Inventor_CPP_SRCS SoFCSelectionAction.cpp SoFCVectorizeSVGAction.cpp SoFCVectorizeU3DAction.cpp + SoDevicePixelRatioElement.cpp SoTextLabel.cpp SoDatumLabel.cpp SoTouchEvents.cpp @@ -1097,6 +1098,7 @@ SET(Inventor_SRCS SoFCSelectionAction.h SoFCVectorizeSVGAction.h SoFCVectorizeU3DAction.h + SoDevicePixelRatioElement.h SoTextLabel.h SoDatumLabel.h SoTouchEvents.h diff --git a/src/Gui/CommandDoc.cpp b/src/Gui/CommandDoc.cpp index f1899fb05205..f6791360ad63 100644 --- a/src/Gui/CommandDoc.cpp +++ b/src/Gui/CommandDoc.cpp @@ -25,6 +25,7 @@ #ifndef _PreComp_ # include # include +# include # include # include # include @@ -95,6 +96,56 @@ StdCmdOpen::StdCmdOpen() void StdCmdOpen::activated(int iMsg) { + // clang-format off + auto checkPartialRestore = [](App::Document* doc) { + if (doc && doc->testStatus(App::Document::PartialRestore)) { + QMessageBox::critical(getMainWindow(), QObject::tr("Error"), + QObject::tr("There were errors while loading the file. Some data might have been " + "modified or not recovered at all. Look in the report view for more " + "specific information about the objects involved.")); + } + }; + + auto checkRestoreError = [](App::Document* doc) { + if (doc && doc->testStatus(App::Document::RestoreError)) { + QMessageBox::critical(getMainWindow(), QObject::tr("Error"), + QObject::tr("There were serious errors while loading the file. Some data might have " + "been modified or not recovered at all. Saving the project will most " + "likely result in loss of data.")); + } + }; + + auto checkMigrationLCS = [](App::Document* doc) { + if (doc && doc->testStatus(App::Document::MigrateLCS)) { + auto grp = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/View"); + if (!grp->GetBool("ShowLCSMigrationWarning", true)) { + return; + } + + // Display the warning message + QMessageBox msgBox(QMessageBox::Warning, + QObject::tr("File Migration Warning"), + QObject::tr("This file was created with an older version of %1. " + "Origin axes had incorrect placements, which have now been corrected.\n\n" + "However, if you save this file in the current version and reopen it in an" + " older version of %1, the origin axes will be misaligned. Additionally, " + "if your file references these origin axes, your file will likely be broken.") + .arg(QApplication::applicationName()), + QMessageBox::Ok); + + QCheckBox* checkBox = new QCheckBox(QObject::tr("Don't show this warning again")); + msgBox.setCheckBox(checkBox); + + msgBox.exec(); + + // Save preference if the user selects "Don't show again" + if (checkBox->isChecked()) { + grp->SetBool("ShowLCSMigrationWarning", false); + } + } + }; + // clang-format on + Q_UNUSED(iMsg); // fill the list of registered endings @@ -139,8 +190,9 @@ void StdCmdOpen::activated(int iMsg) QString selectedFilter; QStringList fileList = FileDialog::getOpenFileNames(getMainWindow(), QObject::tr("Open document"), QString(), formatList, &selectedFilter); - if (fileList.isEmpty()) + if (fileList.isEmpty()) { return; + } // load the files with the associated modules SelectModule::Dict dict = SelectModule::importHandler(fileList, selectedFilter); @@ -161,15 +213,9 @@ void StdCmdOpen::activated(int iMsg) App::Document *doc = App::GetApplication().getActiveDocument(); - if(doc && doc->testStatus(App::Document::PartialRestore)) { - QMessageBox::critical(getMainWindow(), QObject::tr("Error"), - QObject::tr("There were errors while loading the file. Some data might have been modified or not recovered at all. Look in the report view for more specific information about the objects involved.")); - } - - if(doc && doc->testStatus(App::Document::RestoreError)) { - QMessageBox::critical(getMainWindow(), QObject::tr("Error"), - QObject::tr("There were serious errors while loading the file. Some data might have been modified or not recovered at all. Saving the project will most likely result in loss of data.")); - } + checkPartialRestore(doc); + checkRestoreError(doc); + checkMigrationLCS(doc); } } } @@ -521,7 +567,7 @@ StdCmdMergeProjects::StdCmdMergeProjects() { sAppModule = "File"; sGroup = "File"; - sMenuText = QT_TR_NOOP("Merge document..."); + sMenuText = QT_TR_NOOP("&Merge document..."); sToolTipText = QT_TR_NOOP("Merge document"); sWhatsThis = "Std_MergeProjects"; sStatusTip = QT_TR_NOOP("Merge document"); @@ -574,7 +620,7 @@ StdCmdDependencyGraph::StdCmdDependencyGraph() { // setting the sGroup = "Tools"; - sMenuText = QT_TR_NOOP("Dependency graph..."); + sMenuText = QT_TR_NOOP("Dependency gra&ph..."); sToolTipText = QT_TR_NOOP("Show the dependency graph of the objects in the active document"); sStatusTip = QT_TR_NOOP("Show the dependency graph of the objects in the active document"); sWhatsThis = "Std_DependencyGraph"; @@ -606,7 +652,7 @@ StdCmdExportDependencyGraph::StdCmdExportDependencyGraph() : Command("Std_ExportDependencyGraph") { sGroup = "Tools"; - sMenuText = QT_TR_NOOP("Export dependency graph..."); + sMenuText = QT_TR_NOOP("Export dependency &graph..."); sToolTipText = QT_TR_NOOP("Export the dependency graph to a file"); sStatusTip = QT_TR_NOOP("Export the dependency graph to a file"); sWhatsThis = "Std_ExportDependencyGraph"; @@ -735,7 +781,7 @@ StdCmdSaveCopy::StdCmdSaveCopy() :Command("Std_SaveCopy") { sGroup = "File"; - sMenuText = QT_TR_NOOP("Save a &Copy..."); + sMenuText = QT_TR_NOOP("Save a Cop&y..."); sToolTipText = QT_TR_NOOP("Save a copy of the active document under a new file name"); sWhatsThis = "Std_SaveCopy"; sStatusTip = QT_TR_NOOP("Save a copy of the active document under a new file name"); @@ -762,7 +808,7 @@ StdCmdSaveAll::StdCmdSaveAll() :Command("Std_SaveAll") { sGroup = "File"; - sMenuText = QT_TR_NOOP("Save All"); + sMenuText = QT_TR_NOOP("Sa&ve All"); sToolTipText = QT_TR_NOOP("Save all opened document"); sWhatsThis = "Std_SaveAll"; sStatusTip = QT_TR_NOOP("Save all opened document"); @@ -790,7 +836,7 @@ StdCmdRevert::StdCmdRevert() :Command("Std_Revert") { sGroup = "File"; - sMenuText = QT_TR_NOOP("Revert"); + sMenuText = QT_TR_NOOP("Rever&t"); sToolTipText = QT_TR_NOOP("Reverts to the saved version of this file"); sWhatsThis = "Std_Revert"; sStatusTip = QT_TR_NOOP("Reverts to the saved version of this file"); @@ -829,7 +875,7 @@ StdCmdProjectInfo::StdCmdProjectInfo() { // setting the sGroup = "File"; - sMenuText = QT_TR_NOOP("Document i&nformation..."); + sMenuText = QT_TR_NOOP("Doc&ument information..."); sToolTipText = QT_TR_NOOP("Show details of the currently active document"); sWhatsThis = "Std_ProjectInfo"; sStatusTip = QT_TR_NOOP("Show details of the currently active document"); @@ -860,7 +906,7 @@ StdCmdProjectUtil::StdCmdProjectUtil() // setting the sGroup = "Tools"; sWhatsThis = "Std_ProjectUtil"; - sMenuText = QT_TR_NOOP("Document utility..."); + sMenuText = QT_TR_NOOP("Do&cument utility..."); sToolTipText = QT_TR_NOOP("Utility to extract or create document files"); sStatusTip = QT_TR_NOOP("Utility to extract or create document files"); sPixmap = "Std_ProjectUtil"; @@ -919,7 +965,7 @@ StdCmdPrintPreview::StdCmdPrintPreview() :Command("Std_PrintPreview") { sGroup = "File"; - sMenuText = QT_TR_NOOP("&Print preview..."); + sMenuText = QT_TR_NOOP("Print previe&w..."); sToolTipText = QT_TR_NOOP("Print the document"); sWhatsThis = "Std_PrintPreview"; sStatusTip = QT_TR_NOOP("Print preview"); @@ -949,7 +995,7 @@ StdCmdPrintPdf::StdCmdPrintPdf() :Command("Std_PrintPdf") { sGroup = "File"; - sMenuText = QT_TR_NOOP("&Export PDF..."); + sMenuText = QT_TR_NOOP("Export P&DF..."); sToolTipText = QT_TR_NOOP("Export the document as PDF"); sWhatsThis = "Std_PrintPdf"; sStatusTip = QT_TR_NOOP("Export the document as PDF"); @@ -1094,7 +1140,7 @@ StdCmdCut::StdCmdCut() : Command("Std_Cut") { sGroup = "Edit"; - sMenuText = QT_TR_NOOP("&Cut"); + sMenuText = QT_TR_NOOP("Cu&t"); sToolTipText = QT_TR_NOOP("Cut out"); sWhatsThis = "Std_Cut"; sStatusTip = QT_TR_NOOP("Cut out"); @@ -1122,7 +1168,7 @@ StdCmdCopy::StdCmdCopy() : Command("Std_Copy") { sGroup = "Edit"; - sMenuText = QT_TR_NOOP("C&opy"); + sMenuText = QT_TR_NOOP("&Copy"); sToolTipText = QT_TR_NOOP("Copy operation"); sWhatsThis = "Std_Copy"; sStatusTip = QT_TR_NOOP("Copy operation"); @@ -1197,7 +1243,7 @@ StdCmdDuplicateSelection::StdCmdDuplicateSelection() { sAppModule = "Edit"; sGroup = "Edit"; - sMenuText = QT_TR_NOOP("Duplicate selection"); + sMenuText = QT_TR_NOOP("Duplicate selecti&on"); sToolTipText = QT_TR_NOOP("Put duplicates of the selected objects to the active document"); sWhatsThis = "Std_DuplicateSelection"; sStatusTip = QT_TR_NOOP("Put duplicates of the selected objects to the active document"); @@ -1463,7 +1509,7 @@ StdCmdRefresh::StdCmdRefresh() : Command("Std_Refresh") { sGroup = "Edit"; - sMenuText = QT_TR_NOOP("&Refresh"); + sMenuText = QT_TR_NOOP("Refres&h"); sToolTipText = QT_TR_NOOP("Recomputes the current active document"); sWhatsThis = "Std_Refresh"; sStatusTip = QT_TR_NOOP("Recomputes the current active document"); @@ -1543,7 +1589,7 @@ StdCmdPlacement::StdCmdPlacement() : Command("Std_Placement") { sGroup = "Edit"; - sMenuText = QT_TR_NOOP("Placement..."); + sMenuText = QT_TR_NOOP("P&lacement..."); sToolTipText = QT_TR_NOOP("Place the selected objects"); sStatusTip = QT_TR_NOOP("Place the selected objects"); sWhatsThis = "Std_Placement"; @@ -1590,7 +1636,7 @@ StdCmdTransformManip::StdCmdTransformManip() : Command("Std_TransformManip") { sGroup = "Edit"; - sMenuText = QT_TR_NOOP("Transform"); + sMenuText = QT_TR_NOOP("Trans&form"); sToolTipText = QT_TR_NOOP("Transform the selected object in the 3D view"); sStatusTip = QT_TR_NOOP("Transform the selected object in the 3D view"); sWhatsThis = "Std_TransformManip"; @@ -1625,7 +1671,7 @@ StdCmdAlignment::StdCmdAlignment() : Command("Std_Alignment") { sGroup = "Edit"; - sMenuText = QT_TR_NOOP("Alignment..."); + sMenuText = QT_TR_NOOP("Ali&gnment..."); sToolTipText = QT_TR_NOOP("Align the selected objects"); sStatusTip = QT_TR_NOOP("Align the selected objects"); sWhatsThis = "Std_Alignment"; @@ -1735,7 +1781,7 @@ StdCmdProperties::StdCmdProperties() : Command("Std_Properties") { sGroup = "Edit"; - sMenuText = QT_TR_NOOP("Properties"); + sMenuText = QT_TR_NOOP("Propert&ies"); sToolTipText = QT_TR_NOOP("Show the property view, which displays the properties of the selected object."); sWhatsThis = "Std_Properties"; sStatusTip = sToolTipText; diff --git a/src/Gui/CommandFeat.cpp b/src/Gui/CommandFeat.cpp index 745c7fb28ebc..4f4251103061 100644 --- a/src/Gui/CommandFeat.cpp +++ b/src/Gui/CommandFeat.cpp @@ -77,7 +77,7 @@ StdCmdRandomColor::StdCmdRandomColor() :Command("Std_RandomColor") { sGroup = "File"; - sMenuText = QT_TR_NOOP("Random color"); + sMenuText = QT_TR_NOOP("Random &color"); sToolTipText = QT_TR_NOOP("Set each selected object to a randomly-selected color"); sWhatsThis = "Std_RandomColor"; sStatusTip = QT_TR_NOOP("Set each selected object to a randomly-selected color"); diff --git a/src/Gui/CommandLink.cpp b/src/Gui/CommandLink.cpp index 812353de6c1c..875f5b093b5a 100644 --- a/src/Gui/CommandLink.cpp +++ b/src/Gui/CommandLink.cpp @@ -646,7 +646,7 @@ StdCmdLinkSelectLinked::StdCmdLinkSelectLinked() : Command("Std_LinkSelectLinked") { sGroup = "Link"; - sMenuText = QT_TR_NOOP("Go to linked object"); + sMenuText = QT_TR_NOOP("&Go to linked object"); sToolTipText = QT_TR_NOOP("Select the linked object and switch to its owner document"); sWhatsThis = "Std_LinkSelectLinked"; sStatusTip = sToolTipText; @@ -774,7 +774,7 @@ StdCmdLinkSelectLinkedFinal::StdCmdLinkSelectLinkedFinal() : Command("Std_LinkSelectLinkedFinal") { sGroup = "Link"; - sMenuText = QT_TR_NOOP("Go to the deepest linked object"); + sMenuText = QT_TR_NOOP("Go to the &deepest linked object"); sToolTipText = QT_TR_NOOP("Select the deepest linked object and switch to its owner document"); sWhatsThis = "Std_LinkSelectLinkedFinal"; sStatusTip = sToolTipText; @@ -809,7 +809,7 @@ StdCmdLinkSelectAllLinks::StdCmdLinkSelectAllLinks() : Command("Std_LinkSelectAllLinks") { sGroup = "Link"; - sMenuText = QT_TR_NOOP("Select all links"); + sMenuText = QT_TR_NOOP("Select &all links"); sToolTipText = QT_TR_NOOP("Select all links to the current selected object"); sWhatsThis = "Std_LinkSelectAllLinks"; sStatusTip = sToolTipText; @@ -849,7 +849,7 @@ class StdCmdLinkSelectActions : public GroupCommand : GroupCommand("Std_LinkSelectActions") { sGroup = "View"; - sMenuText = QT_TR_NOOP("Link navigation"); + sMenuText = QT_TR_NOOP("&Link navigation"); sToolTipText = QT_TR_NOOP("Link navigation actions"); sWhatsThis = "Std_LinkSelectActions"; sStatusTip = QT_TR_NOOP("Link navigation actions"); @@ -877,7 +877,7 @@ class StdCmdLinkActions : public GroupCommand sGroup = "View"; sMenuText = QT_TR_NOOP("Link actions"); sToolTipText = QT_TR_NOOP("Actions that apply to link objects"); - sWhatsThis = "Std_LinkMakeRelative"; + sWhatsThis = "Std_LinkActions"; sStatusTip = QT_TR_NOOP("Actions that apply to link objects"); eType = AlterDoc; bCanLog = false; diff --git a/src/Gui/CommandMacro.cpp b/src/Gui/CommandMacro.cpp index 36cce6a5953c..f192213ae85e 100644 --- a/src/Gui/CommandMacro.cpp +++ b/src/Gui/CommandMacro.cpp @@ -48,7 +48,7 @@ StdCmdDlgMacroRecord::StdCmdDlgMacroRecord() : Command("Std_DlgMacroRecord") { sGroup = "Macro"; - sMenuText = QT_TR_NOOP("&Macro recording ..."); + sMenuText = QT_TR_NOOP("&Macro recording..."); sToolTipText = QT_TR_NOOP("Opens a dialog to record a macro"); sWhatsThis = "Std_DlgMacroRecord"; sStatusTip = QT_TR_NOOP("Opens a dialog to record a macro"); @@ -91,7 +91,7 @@ StdCmdDlgMacroExecute::StdCmdDlgMacroExecute() : Command("Std_DlgMacroExecute") { sGroup = "Macro"; - sMenuText = QT_TR_NOOP("Macros ..."); + sMenuText = QT_TR_NOOP("Ma&cros..."); sToolTipText = QT_TR_NOOP("Opens a dialog to let you execute a recorded macro"); sWhatsThis = "Std_DlgMacroExecute"; sStatusTip = QT_TR_NOOP("Opens a dialog to let you execute a recorded macro"); @@ -120,7 +120,7 @@ StdCmdDlgMacroExecuteDirect::StdCmdDlgMacroExecuteDirect() : Command("Std_DlgMacroExecuteDirect") { sGroup = "Macro"; - sMenuText = QT_TR_NOOP("Execute macro"); + sMenuText = QT_TR_NOOP("&Execute macro"); sToolTipText = QT_TR_NOOP("Execute the macro in the editor"); sWhatsThis = "Std_DlgMacroExecuteDirect"; sStatusTip = QT_TR_NOOP("Execute the macro in the editor"); @@ -146,7 +146,7 @@ StdCmdMacroAttachDebugger::StdCmdMacroAttachDebugger() : Command("Std_MacroAttachDebugger") { sGroup = "Macro"; - sMenuText = QT_TR_NOOP("Attach to remote debugger..."); + sMenuText = QT_TR_NOOP("&Attach to remote debugger..."); sToolTipText = QT_TR_NOOP("Attach to a remotely running debugger"); sWhatsThis = "Std_MacroAttachDebugger"; sStatusTip = QT_TR_NOOP("Attach to a remotely running debugger"); @@ -171,7 +171,7 @@ StdCmdMacroStartDebug::StdCmdMacroStartDebug() : Command("Std_MacroStartDebug") { sGroup = "Macro"; - sMenuText = QT_TR_NOOP("Debug macro"); + sMenuText = QT_TR_NOOP("&Debug macro"); sToolTipText = QT_TR_NOOP("Start debugging of macro"); sWhatsThis = "Std_MacroStartDebug"; sStatusTip = QT_TR_NOOP("Start debugging of macro"); @@ -201,7 +201,7 @@ StdCmdMacroStopDebug::StdCmdMacroStopDebug() : Command("Std_MacroStopDebug") { sGroup = "Macro"; - sMenuText = QT_TR_NOOP("Stop debugging"); + sMenuText = QT_TR_NOOP("&Stop debugging"); sToolTipText = QT_TR_NOOP("Stop debugging of macro"); sWhatsThis = "Std_MacroStopDebug"; sStatusTip = QT_TR_NOOP("Stop debugging of macro"); @@ -228,7 +228,7 @@ StdCmdMacroStepOver::StdCmdMacroStepOver() : Command("Std_MacroStepOver") { sGroup = "Macro"; - sMenuText = QT_TR_NOOP("Step over"); + sMenuText = QT_TR_NOOP("Step &over"); sToolTipText = QT_TR_NOOP("Step to the next line in this file"); sWhatsThis = "Std_MacroStepOver"; sStatusTip = QT_TR_NOOP("Step to the next line in this file"); @@ -255,7 +255,7 @@ StdCmdMacroStepInto::StdCmdMacroStepInto() : Command("Std_MacroStepInto") { sGroup = "Macro"; - sMenuText = QT_TR_NOOP("Step into"); + sMenuText = QT_TR_NOOP("Step &into"); sToolTipText = QT_TR_NOOP("Step to the next line executed"); sWhatsThis = "Std_MacroStepInto"; sStatusTip = QT_TR_NOOP("Step to the next line executed"); @@ -282,7 +282,7 @@ StdCmdToggleBreakpoint::StdCmdToggleBreakpoint() : Command("Std_ToggleBreakpoint") { sGroup = "Macro"; - sMenuText = QT_TR_NOOP("Toggle breakpoint"); + sMenuText = QT_TR_NOOP("Toggle &breakpoint"); sToolTipText = QT_TR_NOOP("Add or remove a breakpoint at this position"); sWhatsThis = "Std_ToggleBreakpoint"; sStatusTip = QT_TR_NOOP("Add or remove a breakpoint at this position"); diff --git a/src/Gui/CommandStd.cpp b/src/Gui/CommandStd.cpp index ae571d818621..67536d6d6245 100644 --- a/src/Gui/CommandStd.cpp +++ b/src/Gui/CommandStd.cpp @@ -72,7 +72,7 @@ StdCmdWorkbench::StdCmdWorkbench() : Command("Std_Workbench") { sGroup = "View"; - sMenuText = QT_TR_NOOP("Workbench"); + sMenuText = QT_TR_NOOP("&Workbench"); sToolTipText = QT_TR_NOOP("Switch between workbenches"); sWhatsThis = "Std_Workbench"; sStatusTip = QT_TR_NOOP("Switch between workbenches"); @@ -137,7 +137,7 @@ StdCmdRecentFiles::StdCmdRecentFiles() :Command("Std_RecentFiles") { sGroup = "File"; - sMenuText = QT_TR_NOOP("Open Recent"); + sMenuText = QT_TR_NOOP("Open &Recent"); sToolTipText = QT_TR_NOOP("Recent file list"); sWhatsThis = "Std_RecentFiles"; sStatusTip = QT_TR_NOOP("Recent file list"); @@ -178,7 +178,7 @@ StdCmdRecentMacros::StdCmdRecentMacros() :Command("Std_RecentMacros") { sGroup = "Macro"; - sMenuText = QT_TR_NOOP("Recent macros"); + sMenuText = QT_TR_NOOP("&Recent macros"); sToolTipText = QT_TR_NOOP("Recent macro list"); sWhatsThis = "Std_RecentMacros"; sStatusTip = QT_TR_NOOP("Recent macro list"); @@ -378,7 +378,7 @@ StdCmdDlgParameter::StdCmdDlgParameter() :Command("Std_DlgParameter") { sGroup = "Tools"; - sMenuText = QT_TR_NOOP("E&dit parameters ..."); + sMenuText = QT_TR_NOOP("E&dit parameters..."); sToolTipText = QT_TR_NOOP("Opens a Dialog to edit the parameters"); sWhatsThis = "Std_DlgParameter"; sStatusTip = QT_TR_NOOP("Opens a Dialog to edit the parameters"); @@ -403,7 +403,7 @@ StdCmdDlgPreferences::StdCmdDlgPreferences() :Command("Std_DlgPreferences") { sGroup = "Tools"; - sMenuText = QT_TR_NOOP("&Preferences ..."); + sMenuText = QT_TR_NOOP("Prefere&nces ..."); sToolTipText = QT_TR_NOOP("Opens a Dialog to edit the preferences"); sWhatsThis = "Std_DlgPreferences"; sStatusTip = QT_TR_NOOP("Opens a Dialog to edit the preferences"); @@ -522,7 +522,7 @@ StdCmdOnlineHelp::StdCmdOnlineHelp() :Command("Std_OnlineHelp") { sGroup = "Help"; - sMenuText = QT_TR_NOOP("Help"); + sMenuText = QT_TR_NOOP("&Help"); sToolTipText = QT_TR_NOOP("Opens the Help documentation"); sWhatsThis = "Std_OnlineHelp"; sStatusTip = sToolTipText; @@ -574,7 +574,7 @@ StdCmdFreeCADDonation::StdCmdFreeCADDonation() :Command("Std_FreeCADDonation") { sGroup = "Help"; - sMenuText = QT_TR_NOOP("Support FreeCAD"); + sMenuText = QT_TR_NOOP("Support FreeCA&D"); sToolTipText = QT_TR_NOOP("Support FreeCAD development"); sWhatsThis = "Std_FreeCADDonation"; sStatusTip = sToolTipText; @@ -601,7 +601,7 @@ StdCmdFreeCADWebsite::StdCmdFreeCADWebsite() :Command("Std_FreeCADWebsite") { sGroup = "Help"; - sMenuText = QT_TR_NOOP("FreeCAD Website"); + sMenuText = QT_TR_NOOP("FreeCAD W&ebsite"); sToolTipText = QT_TR_NOOP("Navigates to the official FreeCAD website"); sWhatsThis = "Std_FreeCADWebsite"; sStatusTip = sToolTipText; @@ -629,7 +629,7 @@ StdCmdFreeCADUserHub::StdCmdFreeCADUserHub() :Command("Std_FreeCADUserHub") { sGroup = "Help"; - sMenuText = QT_TR_NOOP("User Documentation"); + sMenuText = QT_TR_NOOP("&User Documentation"); sToolTipText = QT_TR_NOOP("Opens the documentation for users"); sWhatsThis = "Std_FreeCADUserHub"; sStatusTip = sToolTipText; @@ -657,7 +657,7 @@ StdCmdFreeCADPowerUserHub::StdCmdFreeCADPowerUserHub() :Command("Std_FreeCADPowerUserHub") { sGroup = "Help"; - sMenuText = QT_TR_NOOP("Python Scripting Documentation"); + sMenuText = QT_TR_NOOP("&Python Scripting Documentation"); sToolTipText = QT_TR_NOOP("Opens the Python Scripting documentation"); sWhatsThis = "Std_FreeCADPowerUserHub"; sStatusTip = sToolTipText; @@ -685,7 +685,7 @@ StdCmdFreeCADForum::StdCmdFreeCADForum() :Command("Std_FreeCADForum") { sGroup = "Help"; - sMenuText = QT_TR_NOOP("FreeCAD Forum"); + sMenuText = QT_TR_NOOP("FreeCAD &Forum"); sToolTipText = QT_TR_NOOP("The FreeCAD forum, where you can find help from other users"); sWhatsThis = "Std_FreeCADForum"; sStatusTip = sToolTipText; @@ -713,7 +713,7 @@ StdCmdFreeCADFAQ::StdCmdFreeCADFAQ() :Command("Std_FreeCADFAQ") { sGroup = "Help"; - sMenuText = QT_TR_NOOP("FreeCAD FAQ"); + sMenuText = QT_TR_NOOP("FreeCAD FA&Q"); sToolTipText = QT_TR_NOOP("Opens the Frequently Asked Questions"); sWhatsThis = "Std_FreeCADFAQ"; sStatusTip = sToolTipText; @@ -766,7 +766,7 @@ StdCmdReportBug::StdCmdReportBug() :Command("Std_ReportBug") { sGroup = "Help"; - sMenuText = QT_TR_NOOP("Report an Issue"); + sMenuText = QT_TR_NOOP("Report an &Issue"); sToolTipText = QT_TR_NOOP("Report an issue or suggest a new feature"); sWhatsThis = "Std_ReportBug"; sStatusTip = sToolTipText; @@ -793,7 +793,7 @@ StdCmdTextDocument::StdCmdTextDocument() :Command("Std_TextDocument") { sGroup = "Tools"; - sMenuText = QT_TR_NOOP("Add text document"); + sMenuText = QT_TR_NOOP("Add te&xt document"); sToolTipText = QT_TR_NOOP("Add text document to active document"); sWhatsThis = "Std_TextDocument"; sStatusTip = QT_TR_NOOP("Add text document to active document"); @@ -862,7 +862,7 @@ StdCmdUserEditMode::StdCmdUserEditMode() : Command("Std_UserEditMode") { sGroup = "Edit"; - sMenuText = QT_TR_NOOP("Edit mode"); + sMenuText = QT_TR_NOOP("Edit &mode"); sToolTipText = QT_TR_NOOP("Defines behavior when editing an object from tree"); sStatusTip = QT_TR_NOOP("Defines behavior when editing an object from tree"); sWhatsThis = "Std_UserEditMode"; @@ -883,7 +883,7 @@ Gui::Action * StdCmdUserEditMode::createAction() for (auto const &uem : Gui::Application::Instance->listUserEditModes()) { QAction* act = pcAction->addAction(QString()); - auto modeName = QString::fromStdString(uem.second.first); + auto modeName = QString::fromStdString(uem.second.first).remove(QChar::fromLatin1('&')); act->setCheckable(true); act->setIcon(BitmapFactory().iconFromTheme(qPrintable(QString::fromLatin1("Std_UserEditMode")+modeName))); act->setObjectName(QString::fromLatin1("Std_UserEditMode")+modeName); diff --git a/src/Gui/CommandStructure.cpp b/src/Gui/CommandStructure.cpp index 1b14ce5069ba..3e5f38ae4446 100644 --- a/src/Gui/CommandStructure.cpp +++ b/src/Gui/CommandStructure.cpp @@ -156,9 +156,9 @@ void StdCmdVarSet::activated(int iMsg) // add the varset to a group if it is selected auto sels = Selection().getSelectionEx(nullptr, App::DocumentObject::getClassTypeId(), - ResolveMode::OldStyleElement, true); + ResolveMode::OldStyleElement, true); if (sels.size() == 1) { - App::DocumentObject *obj = sels[0].getObject(); + App::DocumentObject* obj = sels[0].getObject(); auto group = obj->getExtension(); if (group) { Gui::Document* docGui = Application::Instance->activeDocument(); diff --git a/src/Gui/CommandView.cpp b/src/Gui/CommandView.cpp index 9dd1018f404b..14e34c61c852 100644 --- a/src/Gui/CommandView.cpp +++ b/src/Gui/CommandView.cpp @@ -320,7 +320,7 @@ StdCmdFreezeViews::StdCmdFreezeViews() : Command("Std_FreezeViews") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Freeze display"); + sMenuText = QT_TR_NOOP("F&reeze display"); sToolTipText = QT_TR_NOOP("Freezes the current view position"); sWhatsThis = "Std_FreezeViews"; sStatusTip = QT_TR_NOOP("Freezes the current view position"); @@ -335,15 +335,15 @@ Action * StdCmdFreezeViews::createAction() applyCommandData(this->className(), pcAction); // add the action items - saveView = pcAction->addAction(QObject::tr("Save views...")); + saveView = pcAction->addAction(QObject::tr("&Save views...")); saveView->setWhatsThis(QString::fromLatin1(getWhatsThis())); - QAction* loadView = pcAction->addAction(QObject::tr("Load views...")); + QAction* loadView = pcAction->addAction(QObject::tr("&Load views...")); loadView->setWhatsThis(QString::fromLatin1(getWhatsThis())); pcAction->addAction(QString::fromLatin1(""))->setSeparator(true); - freezeView = pcAction->addAction(QObject::tr("Freeze view")); + freezeView = pcAction->addAction(QObject::tr("F&reeze view")); freezeView->setShortcut(QString::fromLatin1(getAccel())); freezeView->setWhatsThis(QString::fromLatin1(getWhatsThis())); - clearView = pcAction->addAction(QObject::tr("Clear views")); + clearView = pcAction->addAction(QObject::tr("&Clear views")); clearView->setWhatsThis(QString::fromLatin1(getWhatsThis())); separator = pcAction->addAction(QString::fromLatin1("")); separator->setSeparator(true); @@ -568,10 +568,10 @@ void StdCmdFreezeViews::languageChange() return; auto pcAction = qobject_cast(_pcAction); QList acts = pcAction->actions(); - acts[0]->setText(QObject::tr("Save views...")); - acts[1]->setText(QObject::tr("Load views...")); - acts[3]->setText(QObject::tr("Freeze view")); - acts[4]->setText(QObject::tr("Clear views")); + acts[0]->setText(QObject::tr("&Save views...")); + acts[1]->setText(QObject::tr("&Load views...")); + acts[3]->setText(QObject::tr("F&reeze view")); + acts[4]->setText(QObject::tr("&Clear views")); int index=1; for (QList::Iterator it = acts.begin()+5; it != acts.end(); ++it, index++) { if ((*it)->isVisible()) { @@ -592,7 +592,7 @@ StdCmdToggleClipPlane::StdCmdToggleClipPlane() : Command("Std_ToggleClipPlane") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Clipping plane"); + sMenuText = QT_TR_NOOP("Clippin&g plane"); sToolTipText = QT_TR_NOOP("Toggles clipping plane for active view"); sWhatsThis = "Std_ToggleClipPlane"; sStatusTip = QT_TR_NOOP("Toggles clipping plane for active view"); @@ -645,7 +645,7 @@ StdCmdDrawStyle::StdCmdDrawStyle() : Command("Std_DrawStyle") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Draw style"); + sMenuText = QT_TR_NOOP("&Draw style"); sToolTipText = QT_TR_NOOP("Change the draw style of the objects"); sStatusTip = QT_TR_NOOP("Change the draw style of the objects"); sWhatsThis = "Std_DrawStyle"; @@ -725,37 +725,37 @@ void StdCmdDrawStyle::languageChange() QList a = pcAction->actions(); a[0]->setText(QCoreApplication::translate( - "Std_DrawStyle", "As is")); + "Std_DrawStyle", "&1 As is")); a[0]->setToolTip(QCoreApplication::translate( "Std_DrawStyle", "Normal mode")); a[1]->setText(QCoreApplication::translate( - "Std_DrawStyle", "Points")); + "Std_DrawStyle", "&2 Points")); a[1]->setToolTip(QCoreApplication::translate( "Std_DrawStyle", "Points mode")); a[2]->setText(QCoreApplication::translate( - "Std_DrawStyle", "Wireframe")); + "Std_DrawStyle", "&3 Wireframe")); a[2]->setToolTip(QCoreApplication::translate( "Std_DrawStyle", "Wireframe mode")); a[3]->setText(QCoreApplication::translate( - "Std_DrawStyle", "Hidden line")); + "Std_DrawStyle", "&4 Hidden line")); a[3]->setToolTip(QCoreApplication::translate( "Std_DrawStyle", "Hidden line mode")); a[4]->setText(QCoreApplication::translate( - "Std_DrawStyle", "No shading")); + "Std_DrawStyle", "&5 No shading")); a[4]->setToolTip(QCoreApplication::translate( "Std_DrawStyle", "No shading mode")); a[5]->setText(QCoreApplication::translate( - "Std_DrawStyle", "Shaded")); + "Std_DrawStyle", "&6 Shaded")); a[5]->setToolTip(QCoreApplication::translate( "Std_DrawStyle", "Shaded mode")); a[6]->setText(QCoreApplication::translate( - "Std_DrawStyle", "Flat lines")); + "Std_DrawStyle", "&7 Flat lines")); a[6]->setToolTip(QCoreApplication::translate( "Std_DrawStyle", "Flat lines mode")); } @@ -865,7 +865,7 @@ StdCmdToggleVisibility::StdCmdToggleVisibility() : Command("Std_ToggleVisibility") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Toggle visibility"); + sMenuText = QT_TR_NOOP("Toggle &visibility"); sToolTipText = QT_TR_NOOP("Toggles visibility"); sStatusTip = QT_TR_NOOP("Toggles visibility"); sWhatsThis = "Std_ToggleVisibility"; @@ -896,7 +896,7 @@ StdCmdToggleTransparency::StdCmdToggleTransparency() : Command("Std_ToggleTransparency") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Toggle transparency"); + sMenuText = QT_TR_NOOP("Toggle transparenc&y"); static std::string toolTip = std::string("

") + QT_TR_NOOP("Toggles transparency of the selected objects. You can also fine tune transparency " "value in the Appearance taskbox (right click an object in the tree, Appearance).") @@ -1003,7 +1003,7 @@ StdCmdToggleSelectability::StdCmdToggleSelectability() : Command("Std_ToggleSelectability") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Toggle selectability"); + sMenuText = QT_TR_NOOP("Toggle se&lectability"); sToolTipText = QT_TR_NOOP("Toggles the property of the objects to get selected in the 3D-View"); sStatusTip = QT_TR_NOOP("Toggles the property of the objects to get selected in the 3D-View"); sWhatsThis = "Std_ToggleSelectability"; @@ -1055,7 +1055,7 @@ StdCmdShowSelection::StdCmdShowSelection() : Command("Std_ShowSelection") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Show selection"); + sMenuText = QT_TR_NOOP("Sho&w selection"); sToolTipText = QT_TR_NOOP("Show all selected objects"); sStatusTip = QT_TR_NOOP("Show all selected objects"); sWhatsThis = "Std_ShowSelection"; @@ -1083,7 +1083,7 @@ StdCmdHideSelection::StdCmdHideSelection() : Command("Std_HideSelection") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Hide selection"); + sMenuText = QT_TR_NOOP("&Hide selection"); sToolTipText = QT_TR_NOOP("Hide all selected objects"); sStatusTip = QT_TR_NOOP("Hide all selected objects"); sWhatsThis = "Std_HideSelection"; @@ -1111,7 +1111,7 @@ StdCmdSelectVisibleObjects::StdCmdSelectVisibleObjects() : Command("Std_SelectVisibleObjects") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Select visible objects"); + sMenuText = QT_TR_NOOP("&Select visible objects"); sToolTipText = QT_TR_NOOP("Select visible objects in the active document"); sStatusTip = QT_TR_NOOP("Select visible objects in the active document"); sWhatsThis = "Std_SelectVisibleObjects"; @@ -1153,7 +1153,7 @@ StdCmdToggleObjects::StdCmdToggleObjects() : Command("Std_ToggleObjects") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Toggle all objects"); + sMenuText = QT_TR_NOOP("To&ggle all objects"); sToolTipText = QT_TR_NOOP("Toggles visibility of all objects in the active document"); sStatusTip = QT_TR_NOOP("Toggles visibility of all objects in the active document"); sWhatsThis = "Std_ToggleObjects"; @@ -1194,7 +1194,7 @@ StdCmdShowObjects::StdCmdShowObjects() : Command("Std_ShowObjects") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Show all objects"); + sMenuText = QT_TR_NOOP("Show &all objects"); sToolTipText = QT_TR_NOOP("Show all objects in the document"); sStatusTip = QT_TR_NOOP("Show all objects in the document"); sWhatsThis = "Std_ShowObjects"; @@ -1231,7 +1231,7 @@ StdCmdHideObjects::StdCmdHideObjects() : Command("Std_HideObjects") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Hide all objects"); + sMenuText = QT_TR_NOOP("Hide all &objects"); sToolTipText = QT_TR_NOOP("Hide all objects in the document"); sStatusTip = QT_TR_NOOP("Hide all objects in the document"); sWhatsThis = "Std_HideObjects"; @@ -1268,7 +1268,7 @@ StdCmdViewHome::StdCmdViewHome() : Command("Std_ViewHome") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Home"); + sMenuText = QT_TR_NOOP("&Home"); sToolTipText = QT_TR_NOOP("Set to default home view"); sWhatsThis = "Std_ViewHome"; sStatusTip = QT_TR_NOOP("Set to default home view"); @@ -1296,7 +1296,7 @@ StdCmdViewBottom::StdCmdViewBottom() : Command("Std_ViewBottom") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Bottom"); + sMenuText = QT_TR_NOOP("&5 Bottom"); sToolTipText = QT_TR_NOOP("Set to bottom view"); sWhatsThis = "Std_ViewBottom"; sStatusTip = QT_TR_NOOP("Set to bottom view"); @@ -1320,7 +1320,7 @@ StdCmdViewFront::StdCmdViewFront() : Command("Std_ViewFront") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Front"); + sMenuText = QT_TR_NOOP("&1 Front"); sToolTipText = QT_TR_NOOP("Set to front view"); sWhatsThis = "Std_ViewFront"; sStatusTip = QT_TR_NOOP("Set to front view"); @@ -1344,7 +1344,7 @@ StdCmdViewLeft::StdCmdViewLeft() : Command("Std_ViewLeft") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Left"); + sMenuText = QT_TR_NOOP("&6 Left"); sToolTipText = QT_TR_NOOP("Set to left view"); sWhatsThis = "Std_ViewLeft"; sStatusTip = QT_TR_NOOP("Set to left view"); @@ -1368,7 +1368,7 @@ StdCmdViewRear::StdCmdViewRear() : Command("Std_ViewRear") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Rear"); + sMenuText = QT_TR_NOOP("&4 Rear"); sToolTipText = QT_TR_NOOP("Set to rear view"); sWhatsThis = "Std_ViewRear"; sStatusTip = QT_TR_NOOP("Set to rear view"); @@ -1392,7 +1392,7 @@ StdCmdViewRight::StdCmdViewRight() : Command("Std_ViewRight") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Right"); + sMenuText = QT_TR_NOOP("&3 Right"); sToolTipText = QT_TR_NOOP("Set to right view"); sWhatsThis = "Std_ViewRight"; sStatusTip = QT_TR_NOOP("Set to right view"); @@ -1416,7 +1416,7 @@ StdCmdViewTop::StdCmdViewTop() : Command("Std_ViewTop") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Top"); + sMenuText = QT_TR_NOOP("&2 Top"); sToolTipText = QT_TR_NOOP("Set to top view"); sWhatsThis = "Std_ViewTop"; sStatusTip = QT_TR_NOOP("Set to top view"); @@ -1441,7 +1441,7 @@ StdCmdViewIsometric::StdCmdViewIsometric() : Command("Std_ViewIsometric") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Isometric"); + sMenuText = QT_TR_NOOP("&Isometric"); sToolTipText= QT_TR_NOOP("Set to isometric view"); sWhatsThis = "Std_ViewIsometric"; sStatusTip = QT_TR_NOOP("Set to isometric view"); @@ -1465,7 +1465,7 @@ StdCmdViewDimetric::StdCmdViewDimetric() : Command("Std_ViewDimetric") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Dimetric"); + sMenuText = QT_TR_NOOP("&Dimetric"); sToolTipText= QT_TR_NOOP("Set to dimetric view"); sWhatsThis = "Std_ViewDimetric"; sStatusTip = QT_TR_NOOP("Set to dimetric view"); @@ -1488,7 +1488,7 @@ StdCmdViewTrimetric::StdCmdViewTrimetric() : Command("Std_ViewTrimetric") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Trimetric"); + sMenuText = QT_TR_NOOP("&Trimetric"); sToolTipText= QT_TR_NOOP("Set to trimetric view"); sWhatsThis = "Std_ViewTrimetric"; sStatusTip = QT_TR_NOOP("Set to trimetric view"); @@ -1511,7 +1511,7 @@ StdCmdViewRotateLeft::StdCmdViewRotateLeft() : Command("Std_ViewRotateLeft") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Rotate Left"); + sMenuText = QT_TR_NOOP("Rotate &Left"); sToolTipText = QT_TR_NOOP("Rotate the view by 90\xc2\xb0 counter-clockwise"); sWhatsThis = "Std_ViewRotateLeft"; sStatusTip = QT_TR_NOOP("Rotate the view by 90\xc2\xb0 counter-clockwise"); @@ -1536,7 +1536,7 @@ StdCmdViewRotateRight::StdCmdViewRotateRight() : Command("Std_ViewRotateRight") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Rotate Right"); + sMenuText = QT_TR_NOOP("Rotate &Right"); sToolTipText = QT_TR_NOOP("Rotate the view by 90\xc2\xb0 clockwise"); sWhatsThis = "Std_ViewRotateRight"; sStatusTip = QT_TR_NOOP("Rotate the view by 90\xc2\xb0 clockwise"); @@ -1561,7 +1561,7 @@ StdCmdViewFitAll::StdCmdViewFitAll() : Command("Std_ViewFitAll") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Fit all"); + sMenuText = QT_TR_NOOP("&Fit all"); sToolTipText = QT_TR_NOOP("Fits the whole content on the screen"); sWhatsThis = "Std_ViewFitAll"; sStatusTip = QT_TR_NOOP("Fits the whole content on the screen"); @@ -1592,7 +1592,7 @@ StdCmdViewFitSelection::StdCmdViewFitSelection() : Command("Std_ViewFitSelection") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Fit selection"); + sMenuText = QT_TR_NOOP("Fit &selection"); sToolTipText = QT_TR_NOOP("Fits the selected content on the screen"); sWhatsThis = "Std_ViewFitSelection"; sStatusTip = QT_TR_NOOP("Fits the selected content on the screen"); @@ -1622,7 +1622,7 @@ class StdCmdViewGroup: public Gui::GroupCommand : GroupCommand("Std_ViewGroup") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Standard views"); + sMenuText = QT_TR_NOOP("Standard &views"); sToolTipText = QT_TR_NOOP("Change to a standard view"); sStatusTip = QT_TR_NOOP("Change to a standard view"); sWhatsThis = "Std_ViewGroup"; @@ -1661,7 +1661,7 @@ StdViewDock::StdViewDock() : Command("Std_ViewDock") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Docked"); + sMenuText = QT_TR_NOOP("&Docked"); sToolTipText = QT_TR_NOOP("Display the active view either in fullscreen, in undocked or docked mode"); sWhatsThis = "Std_ViewDock"; sStatusTip = QT_TR_NOOP("Display the active view either in fullscreen, in undocked or docked mode"); @@ -1690,7 +1690,7 @@ StdViewUndock::StdViewUndock() : Command("Std_ViewUndock") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Undocked"); + sMenuText = QT_TR_NOOP("&Undocked"); sToolTipText = QT_TR_NOOP("Display the active view either in fullscreen, in undocked or docked mode"); sWhatsThis = "Std_ViewUndock"; sStatusTip = QT_TR_NOOP("Display the active view either in fullscreen, in undocked or docked mode"); @@ -1751,7 +1751,7 @@ StdViewFullscreen::StdViewFullscreen() : Command("Std_ViewFullscreen") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Fullscreen"); + sMenuText = QT_TR_NOOP("&Fullscreen"); sToolTipText = QT_TR_NOOP("Display the active view either in fullscreen, in undocked or docked mode"); sWhatsThis = "Std_ViewFullscreen"; sStatusTip = QT_TR_NOOP("Display the active view either in fullscreen, in undocked or docked mode"); @@ -1781,7 +1781,7 @@ StdViewDockUndockFullscreen::StdViewDockUndockFullscreen() : Command("Std_ViewDockUndockFullscreen") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Document window"); + sMenuText = QT_TR_NOOP("D&ocument window"); sToolTipText = QT_TR_NOOP("Display the active view either in fullscreen, in undocked or docked mode"); sWhatsThis = "Std_ViewDockUndockFullscreen"; sStatusTip = QT_TR_NOOP("Display the active view either in fullscreen, in undocked or docked mode"); @@ -1923,7 +1923,7 @@ StdViewScreenShot::StdViewScreenShot() : Command("Std_ViewScreenShot") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Save image..."); + sMenuText = QT_TR_NOOP("Save &image..."); sToolTipText= QT_TR_NOOP("Creates a screenshot of the active view"); sWhatsThis = "Std_ViewScreenShot"; sStatusTip = QT_TR_NOOP("Creates a screenshot of the active view"); @@ -2094,7 +2094,7 @@ StdViewLoadImage::StdViewLoadImage() : Command("Std_ViewLoadImage") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Load image..."); + sMenuText = QT_TR_NOOP("&Load image..."); sToolTipText= QT_TR_NOOP("Loads an image"); sWhatsThis = "Std_ViewLoadImage"; sStatusTip = QT_TR_NOOP("Loads an image"); @@ -2169,7 +2169,7 @@ StdCmdToggleNavigation::StdCmdToggleNavigation() : Command("Std_ToggleNavigation") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Toggle navigation/Edit mode"); + sMenuText = QT_TR_NOOP("Toggle navigation/&Edit mode"); sToolTipText = QT_TR_NOOP("Toggle between navigation and edit mode"); sStatusTip = QT_TR_NOOP("Toggle between navigation and edit mode"); sWhatsThis = "Std_ToggleNavigation"; @@ -2218,7 +2218,7 @@ StdCmdAxisCross::StdCmdAxisCross() : Command("Std_AxisCross") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Toggle axis cross"); + sMenuText = QT_TR_NOOP("Toggle a&xis cross"); sToolTipText = QT_TR_NOOP("Turns on or off the axis cross at the origin"); sStatusTip = QT_TR_NOOP("Turns on or off the axis cross at the origin"); sWhatsThis = "Std_AxisCross"; @@ -2349,7 +2349,7 @@ StdCmdViewIvStereoOff::StdCmdViewIvStereoOff() : Command("Std_ViewIvStereoOff") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Stereo Off"); + sMenuText = QT_TR_NOOP("Stereo &Off"); sToolTipText = QT_TR_NOOP("Switch stereo viewing off"); sWhatsThis = "Std_ViewIvStereoOff"; sStatusTip = QT_TR_NOOP("Switch stereo viewing off"); @@ -2378,7 +2378,7 @@ StdCmdViewIvStereoRedGreen::StdCmdViewIvStereoRedGreen() : Command("Std_ViewIvStereoRedGreen") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Stereo red/cyan"); + sMenuText = QT_TR_NOOP("Stereo re&d/cyan"); sToolTipText = QT_TR_NOOP("Switch stereo viewing to red/cyan"); sWhatsThis = "Std_ViewIvStereoRedGreen"; sStatusTip = QT_TR_NOOP("Switch stereo viewing to red/cyan"); @@ -2406,7 +2406,7 @@ StdCmdViewIvStereoQuadBuff::StdCmdViewIvStereoQuadBuff() : Command("Std_ViewIvStereoQuadBuff") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Stereo quad buffer"); + sMenuText = QT_TR_NOOP("Stereo &quad buffer"); sToolTipText = QT_TR_NOOP("Switch stereo viewing to quad buffer"); sWhatsThis = "Std_ViewIvStereoQuadBuff"; sStatusTip = QT_TR_NOOP("Switch stereo viewing to quad buffer"); @@ -2434,7 +2434,7 @@ StdCmdViewIvStereoInterleavedRows::StdCmdViewIvStereoInterleavedRows() : Command("Std_ViewIvStereoInterleavedRows") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Stereo Interleaved Rows"); + sMenuText = QT_TR_NOOP("Stereo Interleaved &Rows"); sToolTipText = QT_TR_NOOP("Switch stereo viewing to Interleaved Rows"); sWhatsThis = "Std_ViewIvStereoInterleavedRows"; sStatusTip = QT_TR_NOOP("Switch stereo viewing to Interleaved Rows"); @@ -2462,7 +2462,7 @@ StdCmdViewIvStereoInterleavedColumns::StdCmdViewIvStereoInterleavedColumns() : Command("Std_ViewIvStereoInterleavedColumns") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Stereo Interleaved Columns"); + sMenuText = QT_TR_NOOP("Stereo Interleaved &Columns"); sToolTipText = QT_TR_NOOP("Switch stereo viewing to Interleaved Columns"); sWhatsThis = "Std_ViewIvStereoInterleavedColumns"; sStatusTip = QT_TR_NOOP("Switch stereo viewing to Interleaved Columns"); @@ -2491,7 +2491,7 @@ StdCmdViewIvIssueCamPos::StdCmdViewIvIssueCamPos() : Command("Std_ViewIvIssueCamPos") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Issue camera position"); + sMenuText = QT_TR_NOOP("Issue camera &position"); sToolTipText = QT_TR_NOOP("Issue the camera position to the console and to a macro, to easily recall this position"); sWhatsThis = "Std_ViewIvIssueCamPos"; sStatusTip = QT_TR_NOOP("Issue the camera position to the console and to a macro, to easily recall this position"); @@ -2541,7 +2541,7 @@ StdViewZoomIn::StdViewZoomIn() : Command("Std_ViewZoomIn") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Zoom In"); + sMenuText = QT_TR_NOOP("Zoom &In"); sToolTipText = QT_TR_NOOP("Increase the zoom factor by a fixed amount"); sWhatsThis = "Std_ViewZoomIn"; sStatusTip = QT_TR_NOOP("Increase the zoom factor by a fixed amount"); @@ -2570,7 +2570,7 @@ StdViewZoomOut::StdViewZoomOut() : Command("Std_ViewZoomOut") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Zoom Out"); + sMenuText = QT_TR_NOOP("Zoom &Out"); sToolTipText = QT_TR_NOOP("Decrease the zoom factor by a fixed amount"); sWhatsThis = "Std_ViewZoomOut"; sStatusTip = QT_TR_NOOP("Decrease the zoom factor by a fixed amount"); @@ -2716,7 +2716,7 @@ StdViewBoxZoom::StdViewBoxZoom() : Command("Std_ViewBoxZoom") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Box zoom"); + sMenuText = QT_TR_NOOP("&Box zoom"); sToolTipText = QT_TR_NOOP("Activate the box zoom tool"); sWhatsThis = "Std_ViewBoxZoom"; sStatusTip = QT_TR_NOOP("Activate the box zoom tool"); @@ -2750,7 +2750,7 @@ StdBoxSelection::StdBoxSelection() : Command("Std_BoxSelection") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Box selection"); + sMenuText = QT_TR_NOOP("&Box selection"); sToolTipText = QT_TR_NOOP("Activate the box selection tool"); sWhatsThis = "Std_BoxSelection"; sStatusTip = QT_TR_NOOP("Activate the box selection tool"); @@ -2976,7 +2976,7 @@ StdBoxElementSelection::StdBoxElementSelection() : Command("Std_BoxElementSelection") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Box element selection"); + sMenuText = QT_TR_NOOP("Bo&x element selection"); sToolTipText = QT_TR_NOOP("Box element selection"); sWhatsThis = "Std_BoxElementSelection"; sStatusTip = QT_TR_NOOP("Box element selection"); @@ -3021,7 +3021,7 @@ StdTreeSelection::StdTreeSelection() : Command("Std_TreeSelection") { sGroup = "TreeView"; - sMenuText = QT_TR_NOOP("Go to selection"); + sMenuText = QT_TR_NOOP("&Go to selection"); sToolTipText = QT_TR_NOOP("Scroll to first selected item"); sWhatsThis = "Std_TreeSelection"; sStatusTip = QT_TR_NOOP("Scroll to first selected item"); @@ -3149,7 +3149,7 @@ StdCmdSceneInspector::StdCmdSceneInspector() { // setting the sGroup = "Tools"; - sMenuText = QT_TR_NOOP("Scene inspector..."); + sMenuText = QT_TR_NOOP("Scene i&nspector..."); sToolTipText = QT_TR_NOOP("Scene inspector"); sWhatsThis = "Std_SceneInspector"; sStatusTip = QT_TR_NOOP("Scene inspector"); @@ -3182,7 +3182,7 @@ StdCmdTextureMapping::StdCmdTextureMapping() { // setting the sGroup = "Tools"; - sMenuText = QT_TR_NOOP("Texture mapping..."); + sMenuText = QT_TR_NOOP("Text&ure mapping..."); sToolTipText = QT_TR_NOOP("Texture mapping"); sWhatsThis = "Std_TextureMapping"; sStatusTip = QT_TR_NOOP("Texture mapping"); @@ -3209,7 +3209,7 @@ StdCmdDemoMode::StdCmdDemoMode() : Command("Std_DemoMode") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("View turntable..."); + sMenuText = QT_TR_NOOP("View &turntable..."); sToolTipText = QT_TR_NOOP("View turntable"); sWhatsThis = "Std_DemoMode"; sStatusTip = QT_TR_NOOP("View turntable"); @@ -3238,7 +3238,7 @@ StdCmdSelBack::StdCmdSelBack() :Command("Std_SelBack") { sGroup = "View"; - sMenuText = QT_TR_NOOP("Selection back"); + sMenuText = QT_TR_NOOP("Selection &back"); static std::string toolTip = std::string("

") + QT_TR_NOOP("Restore the previous Tree view selection. " "Only works if Tree RecordSelection mode is switched on.") @@ -3272,7 +3272,7 @@ StdCmdSelForward::StdCmdSelForward() :Command("Std_SelForward") { sGroup = "View"; - sMenuText = QT_TR_NOOP("Selection forward"); + sMenuText = QT_TR_NOOP("Selection &forward"); static std::string toolTip = std::string("

") + QT_TR_NOOP("Restore the next Tree view selection. " "Only works if Tree RecordSelection mode is switched on.") @@ -3326,7 +3326,7 @@ StdTreeSingleDocument::StdTreeSingleDocument() : Command("Std_TreeSingleDocument") { sGroup = "TreeView"; - sMenuText = QT_TR_NOOP("Single document"); + sMenuText = QT_TR_NOOP("&Single document"); sToolTipText = QT_TR_NOOP("Only display the active document in the tree view"); sWhatsThis = "Std_TreeSingleDocument"; sStatusTip = QT_TR_NOOP("Only display the active document in the tree view"); @@ -3343,7 +3343,7 @@ StdTreeMultiDocument::StdTreeMultiDocument() : Command("Std_TreeMultiDocument") { sGroup = "TreeView"; - sMenuText = QT_TR_NOOP("Multi document"); + sMenuText = QT_TR_NOOP("&Multi document"); sToolTipText = QT_TR_NOOP("Display all documents in the tree view"); sWhatsThis = "Std_TreeMultiDocument"; sStatusTip = QT_TR_NOOP("Display all documents in the tree view"); @@ -3360,7 +3360,7 @@ StdTreeCollapseDocument::StdTreeCollapseDocument() : Command("Std_TreeCollapseDocument") { sGroup = "TreeView"; - sMenuText = QT_TR_NOOP("Collapse/Expand"); + sMenuText = QT_TR_NOOP("Collapse/E&xpand"); sToolTipText = QT_TR_NOOP("Expand active document and collapse all others"); sWhatsThis = "Std_TreeCollapseDocument"; sStatusTip = QT_TR_NOOP("Expand active document and collapse all others"); @@ -3399,7 +3399,7 @@ StdTreeSyncView::StdTreeSyncView() : Command("Std_TreeSyncView") { sGroup = "TreeView"; - sMenuText = QT_TR_NOOP("Sync view"); + sMenuText = QT_TR_NOOP("&1 Sync view"); sToolTipText = QT_TR_NOOP("Auto switch to the 3D view containing the selected item"); sStatusTip = sToolTipText; sWhatsThis = "Std_TreeSyncView"; @@ -3417,7 +3417,7 @@ StdTreeSyncSelection::StdTreeSyncSelection() : Command("Std_TreeSyncSelection") { sGroup = "TreeView"; - sMenuText = QT_TR_NOOP("Sync selection"); + sMenuText = QT_TR_NOOP("&2 Sync selection"); sToolTipText = QT_TR_NOOP("Auto expand tree item when the corresponding object is selected in 3D view"); sStatusTip = sToolTipText; sWhatsThis = "Std_TreeSyncSelection"; @@ -3435,7 +3435,7 @@ StdTreeSyncPlacement::StdTreeSyncPlacement() : Command("Std_TreeSyncPlacement") { sGroup = "TreeView"; - sMenuText = QT_TR_NOOP("Sync placement"); + sMenuText = QT_TR_NOOP("&3 Sync placement"); sToolTipText = QT_TR_NOOP("Auto adjust placement on drag and drop objects across coordinate systems"); sStatusTip = sToolTipText; sWhatsThis = "Std_TreeSyncPlacement"; @@ -3453,7 +3453,7 @@ StdTreePreSelection::StdTreePreSelection() : Command("Std_TreePreSelection") { sGroup = "TreeView"; - sMenuText = QT_TR_NOOP("Pre-selection"); + sMenuText = QT_TR_NOOP("&4 Pre-selection"); sToolTipText = QT_TR_NOOP("Preselect the object in 3D view when hovering the cursor over the tree item"); sStatusTip = sToolTipText; sWhatsThis = "Std_TreePreSelection"; @@ -3471,7 +3471,7 @@ StdTreeRecordSelection::StdTreeRecordSelection() : Command("Std_TreeRecordSelection") { sGroup = "TreeView"; - sMenuText = QT_TR_NOOP("Record selection"); + sMenuText = QT_TR_NOOP("&5 Record selection"); sToolTipText = QT_TR_NOOP("Record selection in tree view in order to go back/forward using navigation button"); sStatusTip = sToolTipText; sWhatsThis = "Std_TreeRecordSelection"; @@ -3489,7 +3489,7 @@ StdTreeDrag::StdTreeDrag() : Command("Std_TreeDrag") { sGroup = "TreeView"; - sMenuText = QT_TR_NOOP("Initiate dragging"); + sMenuText = QT_TR_NOOP("Initiate &dragging"); sToolTipText = QT_TR_NOOP("Initiate dragging of current selected tree items"); sStatusTip = sToolTipText; sWhatsThis = "Std_TreeDrag"; @@ -3609,7 +3609,7 @@ StdCmdDockOverlayAll::StdCmdDockOverlayAll() :Command("Std_DockOverlayAll") { sGroup = "View"; - sMenuText = QT_TR_NOOP("Toggle overlay for all"); + sMenuText = QT_TR_NOOP("Toggle overl&ay for all"); sToolTipText = QT_TR_NOOP("Toggle overlay mode for all docked windows"); sWhatsThis = "Std_DockOverlayAll"; sStatusTip = sToolTipText; @@ -3633,7 +3633,7 @@ StdCmdDockOverlayTransparentAll::StdCmdDockOverlayTransparentAll() :Command("Std_DockOverlayTransparentAll") { sGroup = "View"; - sMenuText = QT_TR_NOOP("Toggle transparent for all"); + sMenuText = QT_TR_NOOP("Toggle tra&nsparent for all"); sToolTipText = QT_TR_NOOP("Toggle transparent mode for all docked overlay windows.\n" "This makes the docked windows stay transparent at all times."); sWhatsThis = "Std_DockOverlayTransparentAll"; @@ -3658,7 +3658,7 @@ StdCmdDockOverlayToggle::StdCmdDockOverlayToggle() :Command("Std_DockOverlayToggle") { sGroup = "View"; - sMenuText = QT_TR_NOOP("Toggle overlay"); + sMenuText = QT_TR_NOOP("Toggle &overlay"); sToolTipText = QT_TR_NOOP("Toggle overlay mode for the docked window under the cursor"); sWhatsThis = "Std_DockOverlayToggle"; sStatusTip = sToolTipText; @@ -3682,7 +3682,7 @@ StdCmdDockOverlayToggleTransparent::StdCmdDockOverlayToggleTransparent() :Command("Std_DockOverlayToggleTransparent") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Toggle transparent mode"); + sMenuText = QT_TR_NOOP("Toggle tran&sparent mode"); sToolTipText = QT_TR_NOOP("Toggle transparent mode for the docked window under cursor.\n" "This makes the docked window stay transparent at all times."); sWhatsThis = "Std_DockOverlayToggleTransparent"; @@ -3707,7 +3707,7 @@ StdCmdDockOverlayToggleLeft::StdCmdDockOverlayToggleLeft() :Command("Std_DockOverlayToggleLeft") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Toggle left"); + sMenuText = QT_TR_NOOP("Toggle &left"); sToolTipText = QT_TR_NOOP("Show/hide left overlay panel"); sWhatsThis = "Std_DockOverlayToggleLeft"; sStatusTip = sToolTipText; @@ -3732,7 +3732,7 @@ StdCmdDockOverlayToggleRight::StdCmdDockOverlayToggleRight() :Command("Std_DockOverlayToggleRight") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Toggle right"); + sMenuText = QT_TR_NOOP("Toggle &right"); sToolTipText = QT_TR_NOOP("Show/hide right overlay panel"); sWhatsThis = "Std_DockOverlayToggleRight"; sStatusTip = sToolTipText; @@ -3757,7 +3757,7 @@ StdCmdDockOverlayToggleTop::StdCmdDockOverlayToggleTop() :Command("Std_DockOverlayToggleTop") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Toggle top"); + sMenuText = QT_TR_NOOP("Toggle &top"); sToolTipText = QT_TR_NOOP("Show/hide top overlay panel"); sWhatsThis = "Std_DockOverlayToggleTop"; sStatusTip = sToolTipText; @@ -3782,7 +3782,7 @@ StdCmdDockOverlayToggleBottom::StdCmdDockOverlayToggleBottom() :Command("Std_DockOverlayToggleBottom") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Toggle bottom"); + sMenuText = QT_TR_NOOP("Toggle &bottom"); sToolTipText = QT_TR_NOOP("Show/hide bottom overlay panel"); sWhatsThis = "Std_DockOverlayToggleBottom"; sStatusTip = sToolTipText; @@ -3807,7 +3807,7 @@ StdCmdDockOverlayMouseTransparent::StdCmdDockOverlayMouseTransparent() :Command("Std_DockOverlayMouseTransparent") { sGroup = "View"; - sMenuText = QT_TR_NOOP("Bypass mouse events in docked overlay windows"); + sMenuText = QT_TR_NOOP("Bypass &mouse events in docked overlay windows"); sToolTipText = QT_TR_NOOP("Bypass all mouse events in docked overlay windows"); sWhatsThis = "Std_DockOverlayMouseTransparent"; sStatusTip = sToolTipText; @@ -3881,7 +3881,7 @@ StdStoreWorkingView::StdStoreWorkingView() : Command("Std_StoreWorkingView") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Store working view"); + sMenuText = QT_TR_NOOP("St&ore working view"); sToolTipText = QT_TR_NOOP("Store a document-specific temporary working view"); sStatusTip = QT_TR_NOOP("Store a document-specific temporary working view"); sWhatsThis = "Std_StoreWorkingView"; @@ -3911,7 +3911,7 @@ StdRecallWorkingView::StdRecallWorkingView() : Command("Std_RecallWorkingView") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Recall working view"); + sMenuText = QT_TR_NOOP("R&ecall working view"); sToolTipText = QT_TR_NOOP("Recall previously stored temporary working view"); sStatusTip = QT_TR_NOOP("Recall previously stored temporary working view"); sWhatsThis = "Std_RecallWorkingView"; @@ -3943,7 +3943,7 @@ StdCmdAlignToSelection::StdCmdAlignToSelection() : Command("Std_AlignToSelection") { sGroup = "View"; - sMenuText = QT_TR_NOOP("Align to selection"); + sMenuText = QT_TR_NOOP("&Align to selection"); sToolTipText = QT_TR_NOOP("Align the view with the selection"); sWhatsThis = "Std_AlignToSelection"; sPixmap = "align-to-selection"; diff --git a/src/Gui/CommandWindow.cpp b/src/Gui/CommandWindow.cpp index fa05712d255f..db961147507d 100644 --- a/src/Gui/CommandWindow.cpp +++ b/src/Gui/CommandWindow.cpp @@ -109,7 +109,7 @@ StdCmdCloseActiveWindow::StdCmdCloseActiveWindow() : Command("Std_CloseActiveWindow") { sGroup = "Window"; - sMenuText = QT_TR_NOOP("Cl&ose"); + sMenuText = QT_TR_NOOP("&Close"); sToolTipText = QT_TR_NOOP("Close active window"); sWhatsThis = "Std_CloseActiveWindow"; sStatusTip = QT_TR_NOOP("Close active window"); @@ -141,7 +141,7 @@ StdCmdCloseAllWindows::StdCmdCloseAllWindows() : Command("Std_CloseAllWindows") { sGroup = "Window"; - sMenuText = QT_TR_NOOP("Close Al&l"); + sMenuText = QT_TR_NOOP("Close A&ll"); sToolTipText = QT_TR_NOOP("Close all windows"); sWhatsThis = "Std_CloseAllWindows"; sStatusTip = QT_TR_NOOP("Close all windows"); @@ -169,7 +169,7 @@ StdCmdActivateNextWindow::StdCmdActivateNextWindow() : Command("Std_ActivateNextWindow") { sGroup = "Window"; - sMenuText = QT_TR_NOOP("Ne&xt"); + sMenuText = QT_TR_NOOP("&Next"); sToolTipText = QT_TR_NOOP("Activate next window"); sWhatsThis = "Std_ActivateNextWindow"; sStatusTip = QT_TR_NOOP("Activate next window"); @@ -198,7 +198,7 @@ StdCmdActivatePrevWindow::StdCmdActivatePrevWindow() : Command("Std_ActivatePrevWindow") { sGroup = "Window"; - sMenuText = QT_TR_NOOP("Pre&vious"); + sMenuText = QT_TR_NOOP("&Previous"); sToolTipText = QT_TR_NOOP("Activate previous window"); sWhatsThis = "Std_ActivatePrevWindow"; sStatusTip = QT_TR_NOOP("Activate previous window"); @@ -278,7 +278,7 @@ StdCmdDockViewMenu::StdCmdDockViewMenu() : Command("Std_DockViewMenu") { sGroup = "View"; - sMenuText = QT_TR_NOOP("Panels"); + sMenuText = QT_TR_NOOP("&Panels"); sToolTipText = QT_TR_NOOP("List of available dock panels"); sWhatsThis = "Std_DockViewMenu"; sStatusTip = QT_TR_NOOP("List of available dock panels"); @@ -314,7 +314,7 @@ StdCmdToolBarMenu::StdCmdToolBarMenu() : Command("Std_ToolBarMenu") { sGroup = "View"; - sMenuText = QT_TR_NOOP("Tool&bars"); + sMenuText = QT_TR_NOOP("&Toolbars"); sToolTipText = QT_TR_NOOP("Toggles this window"); sWhatsThis = "Std_ToolBarMenu"; sStatusTip = QT_TR_NOOP("Toggles this window"); diff --git a/src/Gui/DlgAbout.cpp b/src/Gui/DlgAbout.cpp index 9738ca731272..74ec04eaee11 100644 --- a/src/Gui/DlgAbout.cpp +++ b/src/Gui/DlgAbout.cpp @@ -534,6 +534,40 @@ void AboutDialog::linkActivated(const QUrl& link) licenseView->setSource(link); } +void AboutDialog::addModuleInfo(QTextStream& str, const QString& modPath, bool& firstMod) +{ + QFileInfo mod(modPath); + if (mod.isHidden()) { // Ignore hidden directories + return; + } + if (firstMod) { + firstMod = false; + str << "Installed mods: \n"; + } + str << " * " << (mod.isDir() ? QDir(modPath).dirName() : mod.fileName()); + try { + auto metadataFile = + boost::filesystem::path(mod.absoluteFilePath().toStdString()) / "package.xml"; + if (boost::filesystem::exists(metadataFile)) { + App::Metadata metadata(metadataFile); + if (metadata.version() != App::Meta::Version()) { + str << QLatin1String(" ") + QString::fromStdString(metadata.version().str()); + } + } + } + catch (const Base::Exception& e) { + auto what = QString::fromUtf8(e.what()).trimmed().replace(QChar::fromLatin1('\n'), + QChar::fromLatin1(' ')); + str << " (Malformed metadata: " << what << ")"; + } + QFileInfo disablingFile(mod.absoluteFilePath(), QString::fromLatin1("ADDON_DISABLED")); + if (disablingFile.exists()) { + str << " (Disabled)"; + } + + str << "\n"; +} + void AboutDialog::copyToClipboard() { QString data; @@ -680,28 +714,16 @@ void AboutDialog::copyToClipboard() bool firstMod = true; if (fs::exists(modDir) && fs::is_directory(modDir)) { for (const auto& mod : fs::directory_iterator(modDir)) { - auto dirName = mod.path().filename().string(); - if (dirName[0] == '.') { // Ignore dot directories - continue; - } - if (firstMod) { - firstMod = false; - str << "Installed mods: \n"; - } - str << " * " << QString::fromStdString(mod.path().filename().string()); - auto metadataFile = mod.path() / "package.xml"; - if (fs::exists(metadataFile)) { - App::Metadata metadata(metadataFile); - if (metadata.version() != App::Meta::Version()) { - str << QLatin1String(" ") + QString::fromStdString(metadata.version().str()); - } - } - auto disablingFile = mod.path() / "ADDON_DISABLED"; - if (fs::exists(disablingFile)) { - str << " (Disabled)"; - } + auto dirName = mod.path().string(); + addModuleInfo(str, QString::fromStdString(dirName), firstMod); + } + } + auto additionalModules = config.find("AdditionalModulePaths"); - str << "\n"; + if (additionalModules != config.end()) { + auto mods = QString::fromStdString(additionalModules->second).split(QChar::fromLatin1(';')); + for (const auto& mod : mods) { + addModuleInfo(str, mod, firstMod); } } diff --git a/src/Gui/DlgAbout.h b/src/Gui/DlgAbout.h index 6908238dee88..614e6cadc835 100644 --- a/src/Gui/DlgAbout.h +++ b/src/Gui/DlgAbout.h @@ -26,6 +26,7 @@ #include #include #include +#include namespace Gui { @@ -88,6 +89,7 @@ class GuiExport AboutDialog: public QDialog void showCollectionInformation(); void showPrivacyPolicy(); void showOrHideImage(const QRect& rect); + void addModuleInfo(QTextStream& inout_str, const QString& modPath, bool& inout_first); protected: QPixmap aboutImage() const; diff --git a/src/Gui/DlgCheckableMessageBox.cpp b/src/Gui/DlgCheckableMessageBox.cpp index 7954190ffd6d..815281ec2bf0 100644 --- a/src/Gui/DlgCheckableMessageBox.cpp +++ b/src/Gui/DlgCheckableMessageBox.cpp @@ -121,7 +121,7 @@ DlgCheckableMessageBox::DlgCheckableMessageBox(QWidget *parent) : m_d->ui.setupUi(this); m_d->ui.pixmapLabel->setVisible(false); connect(m_d->ui.buttonBox, &QDialogButtonBox::accepted, this, &DlgCheckableMessageBox::accept); - connect(m_d->ui.buttonBox, &QDialogButtonBox::rejected, this, &DlgCheckableMessageBox::reject); + connect(m_d->ui.buttonBox, &QDialogButtonBox::rejected, this, &DlgCheckableMessageBox::reject); connect(m_d->ui.buttonBox, &QDialogButtonBox::clicked, this, &DlgCheckableMessageBox::slotClicked); } diff --git a/src/Gui/DlgCreateNewPreferencePack.ui b/src/Gui/DlgCreateNewPreferencePack.ui index 98f4589f0e85..38bf2d6ed26c 100644 --- a/src/Gui/DlgCreateNewPreferencePack.ui +++ b/src/Gui/DlgCreateNewPreferencePack.ui @@ -32,6 +32,13 @@ + + + + Browse + + + @@ -39,12 +46,12 @@ 1 - - 50 - 250 + + 50 + true diff --git a/src/Gui/DlgCreateNewPreferencePackImp.cpp b/src/Gui/DlgCreateNewPreferencePackImp.cpp index af7f586c2e50..5f0656ea38c6 100644 --- a/src/Gui/DlgCreateNewPreferencePackImp.cpp +++ b/src/Gui/DlgCreateNewPreferencePackImp.cpp @@ -32,6 +32,7 @@ #include "DlgCreateNewPreferencePackImp.h" #include "ui_DlgCreateNewPreferencePack.h" +#include "FileDialog.h" using namespace Gui::Dialog; @@ -54,6 +55,7 @@ DlgCreateNewPreferencePackImp::DlgCreateNewPreferencePackImp(QWidget* parent) ui->buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); connect(ui->treeWidget, &QTreeWidget::itemChanged, this, &DlgCreateNewPreferencePackImp::onItemChanged); connect(ui->lineEdit, &QLineEdit::textEdited, this, &DlgCreateNewPreferencePackImp::onLineEditTextEdited); + connect(ui->pushButton, &QPushButton::clicked, this, &DlgCreateNewPreferencePackImp::onBrowseButtonClicked); } @@ -114,6 +116,11 @@ std::string DlgCreateNewPreferencePackImp::preferencePackName() const return ui->lineEdit->text().toStdString(); } +std::string Gui::Dialog::DlgCreateNewPreferencePackImp::preferencePackDirectory() const +{ + return _cfgFileDirectory.toStdString(); +} + void DlgCreateNewPreferencePackImp::onItemChanged(QTreeWidgetItem* item, int column) { Q_UNUSED(column); @@ -151,6 +158,11 @@ void DlgCreateNewPreferencePackImp::onLineEditTextEdited(const QString& text) ui->buttonBox->button(QDialogButtonBox::Ok)->setDisabled(text.isEmpty()); } +void DlgCreateNewPreferencePackImp::onBrowseButtonClicked() +{ + _cfgFileDirectory = FileDialog::getExistingDirectory(this, tr("Export Config"), _cfgFileDirectory); +} + void Gui::Dialog::DlgCreateNewPreferencePackImp::accept() { // Ensure that the chosen name is either unique, or that the user actually wants to overwrite the old one diff --git a/src/Gui/DlgCreateNewPreferencePackImp.h b/src/Gui/DlgCreateNewPreferencePackImp.h index 9e4211b41482..bf3b390c48ad 100644 --- a/src/Gui/DlgCreateNewPreferencePackImp.h +++ b/src/Gui/DlgCreateNewPreferencePackImp.h @@ -59,6 +59,7 @@ class GuiExport DlgCreateNewPreferencePackImp : public QDialog std::vector selectedTemplates() const; std::string preferencePackName() const; + std::string preferencePackDirectory() const; protected Q_SLOTS: @@ -66,6 +67,8 @@ protected Q_SLOTS: void onLineEditTextEdited(const QString &text); + void onBrowseButtonClicked(); + void accept() override; private: @@ -74,6 +77,7 @@ protected Q_SLOTS: std::vector _templates; QRegularExpressionValidator _nameValidator; std::vector _existingPackNames; + QString _cfgFileDirectory; }; } // namespace Dialog diff --git a/src/Gui/DlgExpressionInput.cpp b/src/Gui/DlgExpressionInput.cpp index 62dd1e3d1391..61798c8fa421 100644 --- a/src/Gui/DlgExpressionInput.cpp +++ b/src/Gui/DlgExpressionInput.cpp @@ -28,6 +28,8 @@ #include #endif +#include + #include #include #include @@ -174,7 +176,7 @@ Base::Type DlgExpressionInput::determineTypeVarSet() // varset. Since unit properties are derived from App::PropertyFloat, it // allows us to create a property and set the value. - std::string unitTypeString = impliedUnit.getTypeString().toStdString(); + std::string unitTypeString = impliedUnit.getTypeString(); if (unitTypeString.empty()) { // no type was provided return Base::Type::badType(); @@ -187,7 +189,7 @@ Base::Type DlgExpressionInput::determineTypeVarSet() bool DlgExpressionInput::typeOkForVarSet() { - std::string unitType = impliedUnit.getTypeString().toStdString(); + std::string unitType = impliedUnit.getTypeString(); return determineTypeVarSet() != Base::Type::badType(); } @@ -242,12 +244,10 @@ void NumberRange::throwIfOutOfRange(const Base::Quantity& value) const if (value.getValue() < minimum || value.getValue() > maximum) { Base::Quantity minVal(minimum, value.getUnit()); Base::Quantity maxVal(maximum, value.getUnit()); - QString valStr = value.getUserString(); - QString minStr = minVal.getUserString(); - QString maxStr = maxVal.getUserString(); - QString error = QString::fromLatin1("Value out of range (%1 out of [%2, %3])").arg(valStr, minStr, maxStr); - - throw Base::ValueError(error.toStdString()); + auto valStr = value.getUserString(); + auto minStr = minVal.getUserString(); + auto maxStr = maxVal.getUserString(); + throw Base::ValueError(fmt::format("Value out of range ({} out of [{}, {}])", valStr, minStr, maxStr)); } } @@ -289,12 +289,12 @@ void DlgExpressionInput::checkExpression(const QString& text) auto * n = Base::freecad_dynamic_cast(result.get()); if (n) { Base::Quantity value = n->getQuantity(); - QString msg = value.getUserString(); - if (!value.isValid()) { throw Base::ValueError("Not a number"); } - else if (!impliedUnit.isEmpty()) { + + auto msg = value.getUserString(); + if (!impliedUnit.isEmpty()) { if (!value.getUnit().isEmpty() && value.getUnit() != impliedUnit) throw Base::UnitsMismatchError("Unit mismatch between result and required unit"); @@ -302,7 +302,7 @@ void DlgExpressionInput::checkExpression(const QString& text) } else if (!value.getUnit().isEmpty()) { - msg += QString::fromUtf8(" (Warning: unit discarded)"); + msg += " (Warning: unit discarded)"; QPalette p(ui->msg->palette()); p.setColor(QPalette::WindowText, Qt::red); @@ -311,7 +311,7 @@ void DlgExpressionInput::checkExpression(const QString& text) numberRange.throwIfOutOfRange(value); - ui->msg->setText(msg); + ui->msg->setText(QString::fromStdString(msg)); } else { ui->msg->setText(QString::fromStdString(result->toString())); diff --git a/src/Gui/DlgMacroExecuteImp.cpp b/src/Gui/DlgMacroExecuteImp.cpp index 1abe1feb8215..c008dc0b72e8 100644 --- a/src/Gui/DlgMacroExecuteImp.cpp +++ b/src/Gui/DlgMacroExecuteImp.cpp @@ -60,14 +60,30 @@ namespace Dialog class MacroItem: public QTreeWidgetItem { public: - MacroItem(QTreeWidget* widget, bool systemwide) + MacroItem(QTreeWidget* widget, bool systemwide, const QString& dirPath) : QTreeWidgetItem(widget) , systemWide(systemwide) + , dirPath(dirPath) {} + /** + * Acts same as setText method but additionally set toolTip with text of + * absolute file path. There may be different macros with same names from + * different system paths. So it could be helpful for user to show where + * exactly macro is placed. + */ + void setFileName(int column, const QString& text) + { + QFileInfo file(dirPath, text); + + setToolTip(column, file.absoluteFilePath()); + return QTreeWidgetItem::setText(column, text); + } + ~MacroItem() override = default; bool systemWide; + QString dirPath; }; } // namespace Dialog } // namespace Gui @@ -229,23 +245,37 @@ QStringList DlgMacroExecuteImp::filterFiles(const QString& folder) * Fills up the list with macro files found in the specified location * that have been filtered by both filename and by content */ -void DlgMacroExecuteImp::fillUpList() +void DlgMacroExecuteImp::fillUpListForDir(const QString& dirPath, bool systemWide) { - QStringList filteredByContent = this->filterFiles(this->macroPath); + QStringList filteredByContent = this->filterFiles(dirPath); ui->userMacroListBox->clear(); - for (auto fn : filteredByContent) { - auto item = new MacroItem(ui->userMacroListBox, false); - item->setText(0, fn); + for (auto& fn : filteredByContent) { + auto* parent = systemWide ? ui->systemMacroListBox : ui->userMacroListBox; + auto item = new MacroItem(parent, systemWide, dirPath); + item->setFileName(0, fn); } +} + +/** + * Fills up the list with macro files found in all system paths and specified by + * user location that have been filtered by both filename and by content + */ +void DlgMacroExecuteImp::fillUpList() +{ + fillUpListForDir(this->macroPath, false); QString dirstr = QString::fromStdString(App::Application::getHomePath()) + QString::fromLatin1("Macro"); - filteredByContent = this->filterFiles(dirstr); - - ui->systemMacroListBox->clear(); - for (auto fn : filteredByContent) { - auto item = new MacroItem(ui->systemMacroListBox, true); - item->setText(0, fn); + fillUpListForDir(dirstr, true); + + auto& config = App::Application::Config(); + auto additionalMacros = config.find("AdditionalMacroPaths"); + if (additionalMacros != config.end()) { + QString dirsstrs = QString::fromStdString(additionalMacros->second); + QStringList dirs = dirsstrs.split(QChar::fromLatin1(';')); + for (const auto& dirstr : dirs) { + fillUpListForDir(dirstr, true); + } } } @@ -392,17 +422,7 @@ void DlgMacroExecuteImp::accept() auto mitem = static_cast(item); - QDir dir; - - if (!mitem->systemWide) { - dir = QDir(this->macroPath); - } - else { - QString dirstr = - QString::fromStdString(App::Application::getHomePath()) + QString::fromLatin1("Macro"); - dir = QDir(dirstr); - } - + QDir dir(mitem->dirPath); QFileInfo fi(dir, item->text(0)); try { getMainWindow()->setCursor(Qt::WaitCursor); @@ -444,19 +464,15 @@ void DlgMacroExecuteImp::onFileChooserFileNameChanged(const QString& fn) */ void DlgMacroExecuteImp::onEditButtonClicked() { - QDir dir; QTreeWidgetItem* item = nullptr; int index = ui->tabMacroWidget->currentIndex(); if (index == 0) { // user-specific item = ui->userMacroListBox->currentItem(); - dir.setPath(this->macroPath); } else { // index == 1 system-wide item = ui->systemMacroListBox->currentItem(); - dir.setPath(QString::fromStdString(App::Application::getHomePath()) - + QString::fromLatin1("Macro")); } if (!item) { @@ -464,6 +480,7 @@ void DlgMacroExecuteImp::onEditButtonClicked() } auto mitem = static_cast(item); + QDir dir(mitem->dirPath); QString file = QString::fromLatin1("%1/%2").arg(dir.absolutePath(), item->text(0)); auto editor = new PythonEditor(); diff --git a/src/Gui/DlgMacroExecuteImp.h b/src/Gui/DlgMacroExecuteImp.h index 9ad454f77bbb..3be7b4b0a454 100644 --- a/src/Gui/DlgMacroExecuteImp.h +++ b/src/Gui/DlgMacroExecuteImp.h @@ -69,6 +69,7 @@ class DlgMacroExecuteImp : public QDialog, public Gui::WindowParameter protected: void fillUpList(); + void fillUpListForDir(const QString& dirPath, bool systemWide); QStringList filterFiles(const QString&); protected: diff --git a/src/Gui/DlgPreferencesImp.cpp b/src/Gui/DlgPreferencesImp.cpp index 0aea952f0392..c4e2c95eb6bc 100644 --- a/src/Gui/DlgPreferencesImp.cpp +++ b/src/Gui/DlgPreferencesImp.cpp @@ -289,7 +289,9 @@ PreferencePage* DlgPreferencesImp::createPreferencePage(const std::string& pageN auto resetMargins = [](QWidget* widget) { widget->setContentsMargins(0, 0, 0, 0); - widget->layout()->setContentsMargins(0, 0, 0, 0); + if (auto layout = widget->layout()) { + layout->setContentsMargins(0, 0, 0, 0); + } }; // settings layout already takes care for margins, we need to reset everything to 0 @@ -503,6 +505,38 @@ void DlgPreferencesImp::activateGroupPage(const QString& group, int index) } } +/** + * Activates the page with name \a pageName of the group with name \a group. + */ +void DlgPreferencesImp::activateGroupPageByPageName(const QString& group, const QString& pageName) +{ + + for (int i = 0; i < ui->groupWidgetStack->count(); i++) { + auto* pageStackWidget = qobject_cast(ui->groupWidgetStack->widget(i)); + + if (!pageStackWidget) { + continue; + } + + if (pageStackWidget->property(GroupNameProperty).toString() == group) { + ui->groupWidgetStack->setCurrentWidget(pageStackWidget); + for (int pageIdx = 0; pageIdx < pageStackWidget->count(); pageIdx++) { + auto page = qobject_cast(pageStackWidget->widget(pageIdx)); + if (page) { + if (page->property(PageNameProperty).toString() == pageName) { + pageStackWidget->setCurrentIndex(pageIdx); + break; + } + } + } + + updatePageDependentWidgets(); + + return; + } + } +} + /** * Returns the group name \a group and position \a index of the active page. */ diff --git a/src/Gui/DlgPreferencesImp.h b/src/Gui/DlgPreferencesImp.h index a1256cb2d2ad..9d40d1d308c9 100644 --- a/src/Gui/DlgPreferencesImp.h +++ b/src/Gui/DlgPreferencesImp.h @@ -149,6 +149,7 @@ class GuiExport DlgPreferencesImp : public QDialog void reject() override; void reload(); void activateGroupPage(const QString& group, int index); + void activateGroupPageByPageName(const QString& group, const QString& pageName); void activeGroupPage(QString& group, int& index) const; protected: diff --git a/src/Gui/DlgUnitsCalculatorImp.cpp b/src/Gui/DlgUnitsCalculatorImp.cpp index 0718370ac234..c1a0276c725a 100644 --- a/src/Gui/DlgUnitsCalculatorImp.cpp +++ b/src/Gui/DlgUnitsCalculatorImp.cpp @@ -105,7 +105,7 @@ DlgUnitsCalculator::DlgUnitsCalculator(QWidget* parent, Qt::WindowFlags fl) << Base::Unit::Volume << Base::Unit::VolumeFlowRate << Base::Unit::VolumetricThermalExpansionCoefficient << Base::Unit::Work; for (const Base::Unit& it : units) { - ui->unitsBox->addItem(it.getTypeString()); + ui->unitsBox->addItem(QString::fromStdString(it.getTypeString())); } ui->quantitySpinBox->setValue(1.0); @@ -138,20 +138,21 @@ void DlgUnitsCalculator::valueChanged(const Base::Quantity& quant) // explicitly check for "ee" like in "eeV" because this would trigger an exception in Base::Unit // since it expects then a scientific notation number like "1e3" if ((ui->UnitInput->text().mid(0, 2) == QString::fromLatin1("ee")) - || Base::Unit(ui->UnitInput->text()).getTypeString().isEmpty()) { + || Base::Unit(ui->UnitInput->text().toStdString()).getTypeString().empty()) { ui->ValueOutput->setText( QString::fromLatin1("%1 %2").arg(tr("unknown unit:"), ui->UnitInput->text())); ui->pushButton_Copy->setEnabled(false); } else { // the unit is valid // we can only convert units of the same type, thus check - if (Base::Unit(ui->UnitInput->text()).getTypeString() != quant.getUnit().getTypeString()) { + if (Base::Unit(ui->UnitInput->text().toStdString()).getTypeString() + != quant.getUnit().getTypeString()) { ui->ValueOutput->setText(tr("unit mismatch")); ui->pushButton_Copy->setEnabled(false); } else { // the unit is valid and has the same type double convertValue = - Base::Quantity::parse(QString::fromLatin1("1") + ui->UnitInput->text()).getValue(); + Base::Quantity::parse("1" + ui->UnitInput->text().toStdString()).getValue(); // we got now e.g. for "1 in" the value '25.4' because 1 in = 25.4 mm // the result is now just quant / convertValue because the input is always in a base // unit (an input of "1 cm" will immediately be converted to "10 mm" by Gui::InputField @@ -201,11 +202,11 @@ void DlgUnitsCalculator::onUnitsBoxActivated(int index) // SI units use [m], not [mm] for lengths // Base::Quantity q = ui->quantitySpinBox->value(); - int32_t old = q.getUnit().getSignature().Length; + int32_t old = q.getUnit().length(); double value = q.getValue(); Base::Unit unit = units[index]; - int32_t len = unit.getSignature().Length; + int32_t len = unit.length(); ui->quantitySpinBox->setValue(Base::Quantity(value * std::pow(10.0, 3 * (len - old)), unit)); } diff --git a/src/Gui/DocumentRecovery.cpp b/src/Gui/DocumentRecovery.cpp index c654f49f60ea..c839a4248121 100644 --- a/src/Gui/DocumentRecovery.cpp +++ b/src/Gui/DocumentRecovery.cpp @@ -340,7 +340,7 @@ void DocumentRecovery::accept() } } - d->ui.buttonBox->button(QDialogButtonBox::Ok)->setText(tr("Finish")); + d->ui.buttonBox->button(QDialogButtonBox::Ok)->setText(tr("&Finish")); d->ui.buttonBox->button(QDialogButtonBox::Cancel)->setEnabled(false); d->recovered = true; } diff --git a/src/Gui/EditableDatumLabel.cpp b/src/Gui/EditableDatumLabel.cpp index 9d4c7d474319..bca2b209b2d9 100644 --- a/src/Gui/EditableDatumLabel.cpp +++ b/src/Gui/EditableDatumLabel.cpp @@ -180,10 +180,10 @@ void EditableDatumLabel::stopEdit() Base::Quantity quantity = spinBox->value(); double factor{}; - QString unitStr; - QString valueStr; + std::string unitStr; + std::string valueStr; valueStr = quantity.getUserString(factor, unitStr); - label->string = SbString(valueStr.toUtf8().constData()); + label->string = SbString(valueStr.c_str()); spinBox->deleteLater(); spinBox = nullptr; diff --git a/src/Gui/InputField.cpp b/src/Gui/InputField.cpp index e581927f091a..52151a5310a7 100644 --- a/src/Gui/InputField.cpp +++ b/src/Gui/InputField.cpp @@ -169,10 +169,10 @@ void InputField::updateText(const Base::Quantity& quant) } double dFactor; - QString unitStr; - QString txt = quant.getUserString(dFactor, unitStr); + std::string unitStr; + std::string txt = quant.getUserString(dFactor, unitStr); actUnitValue = quant.getValue()/dFactor; - setText(txt); + setText(QString::fromStdString(txt)); } void InputField::resizeEvent(QResizeEvent *) @@ -256,7 +256,7 @@ void InputField::newInput(const QString & text) } } else - res = Quantity::parse(input); + res = Quantity::parse(input.toStdString()); } catch(Base::Exception &e){ QString errorText = QString::fromLatin1(e.what()); @@ -292,7 +292,7 @@ void InputField::newInput(const QString & text) } double dFactor; - QString unitStr; + std::string unitStr; res.getUserString(dFactor, unitStr); actUnitValue = res.getValue()/dFactor; // Preserve previous format @@ -456,7 +456,7 @@ const Base::Unit& InputField::getUnit() const /// get stored, valid quantity as a string QString InputField::getQuantityString() const { - return actQuantity.getUserString(); + return QString::fromStdString(actQuantity.getUserString()); } /// set, validate and display quantity from a string. Must match existing units. @@ -471,18 +471,18 @@ void InputField::setQuantityString(const QString& text) QString InputField::rawText() const { double factor; - QString unit; + std::string unit; double value = actQuantity.getValue(); actQuantity.getUserString(factor, unit); - return QString::fromLatin1("%1 %2").arg(value / factor).arg(unit); + return QString::fromLatin1("%1 %2").arg(value / factor).arg(QString::fromStdString(unit)); } /// expects the string in C locale and internally converts it into the OS-specific locale void InputField::setRawText(const QString& text) { - Base::Quantity quant = Base::Quantity::parse(text); + Base::Quantity quant = Base::Quantity::parse(text.toStdString()); // Input and then format the quantity - newInput(quant.getUserString()); + newInput(QString::fromStdString(quant.getUserString())); updateText(actQuantity); } @@ -533,7 +533,7 @@ void InputField::setMinimum(double m) void InputField::setUnitText(const QString& str) { try { - Base::Quantity quant = Base::Quantity::parse(str); + Base::Quantity quant = Base::Quantity::parse(str.toStdString()); setUnit(quant.getUnit()); } catch (...) { @@ -544,9 +544,9 @@ void InputField::setUnitText(const QString& str) QString InputField::getUnitText() { double dFactor; - QString unitStr; + std::string unitStr; actQuantity.getUserString(dFactor, unitStr); - return unitStr; + return QString::fromStdString(unitStr); } int InputField::getPrecision() const @@ -632,11 +632,11 @@ void InputField::focusInEvent(QFocusEvent *event) void InputField::focusOutEvent(QFocusEvent *event) { try { - if (Quantity::parse(this->text()).getUnit().isEmpty()) { + if (Quantity::parse(this->text().toStdString()).getUnit().isEmpty()) { // if user didn't enter a unit, we virtually compensate // the multiplication factor induced by user unit system double factor; - QString unitStr; + std::string unitStr; actQuantity.getUserString(factor, unitStr); actQuantity = actQuantity * factor; } @@ -644,7 +644,7 @@ void InputField::focusOutEvent(QFocusEvent *event) catch (const Base::ParserError&) { // do nothing, let apply the last known good value } - this->setText(actQuantity.getUserString()); + this->setText(QString::fromStdString(actQuantity.getUserString())); QLineEdit::focusOutEvent(event); } @@ -655,35 +655,29 @@ void InputField::keyPressEvent(QKeyEvent *event) return; } + double val = actUnitValue; + switch (event->key()) { case Qt::Key_Up: - { - double val = actUnitValue + StepSize; - if (val > Maximum) - val = Maximum; - double dFactor; - QString unitStr; - actQuantity.getUserString(dFactor, unitStr); - this->setText(QString::fromUtf8("%L1 %2").arg(val).arg(unitStr)); - event->accept(); - } + val += StepSize; + if (val > Maximum) + val = Maximum; break; case Qt::Key_Down: - { - double val = actUnitValue - StepSize; - if (val < Minimum) - val = Minimum; - double dFactor; - QString unitStr; - actQuantity.getUserString(dFactor, unitStr); - this->setText(QString::fromUtf8("%L1 %2").arg(val).arg(unitStr)); - event->accept(); - } + val -= StepSize; + if (val < Minimum) + val = Minimum; break; default: QLineEdit::keyPressEvent(event); - break; + return; } + + double dFactor; + std::string unitStr; + actQuantity.getUserString(dFactor, unitStr); + this->setText(QString::fromUtf8("%L1 %2").arg(val).arg(QString::fromStdString(unitStr))); + event->accept(); } void InputField::wheelEvent (QWheelEvent * event) @@ -705,10 +699,10 @@ void InputField::wheelEvent (QWheelEvent * event) val = Minimum; double dFactor; - QString unitStr; + std::string unitStr; actQuantity.getUserString(dFactor, unitStr); - this->setText(QString::fromUtf8("%L1 %2").arg(val).arg(unitStr)); + this->setText(QString::fromUtf8("%L1 %2").arg(val).arg(QString::fromStdString(unitStr))); selectNumber(); event->accept(); } @@ -737,10 +731,10 @@ QValidator::State InputField::validate(QString& input, int& pos) const Quantity res; QString text = input; fixup(text); - res = Quantity::parse(text); + res = Quantity::parse(text.toStdString()); double factor; - QString unitStr; + std::string unitStr; res.getUserString(factor, unitStr); double value = res.getValue()/factor; // disallow to enter numbers out of range diff --git a/src/Gui/Inventor/SoAxisCrossKit.cpp b/src/Gui/Inventor/SoAxisCrossKit.cpp index ff02b98d29f4..e894ff1ae26b 100644 --- a/src/Gui/Inventor/SoAxisCrossKit.cpp +++ b/src/Gui/Inventor/SoAxisCrossKit.cpp @@ -51,11 +51,10 @@ #endif #include "SoAxisCrossKit.h" - +#include "SoDevicePixelRatioElement.h" using namespace Gui; - SO_KIT_SOURCE(SoShapeScale) // Constructor. @@ -85,24 +84,29 @@ SoShapeScale::initClass() void SoShapeScale::GLRender(SoGLRenderAction * action) { - SoState * state = action->getState(); - - SoScale * scale = static_cast(this->getAnyPart(SbName("scale"), true)); + auto* scale = static_cast(this->getAnyPart(SbName("scale"), true)); if (!this->active.getValue()) { SbVec3f v(1.0f, 1.0f, 1.0f); - if (scale->scaleFactor.getValue() != v) + if (scale->scaleFactor.getValue() != v){ scale->scaleFactor = v; + } } else { + SoState* state = action->getState(); const SbViewportRegion & vp = SoViewportRegionElement::get(state); const SbViewVolume & vv = SoViewVolumeElement::get(state); + SbVec3f center(0.0f, 0.0f, 0.0f); - float nsize = this->scaleFactor.getValue() / float(vp.getViewportSizePixels()[1]); + float nsize = this->scaleFactor.getValue() / float(vp.getViewportSizePixels()[0]); SoModelMatrixElement::get(state).multVecMatrix(center, center); // world coords float sf = vv.getWorldToScreenScale(center, nsize); + + sf *= SoDevicePixelRatioElement::get(state); + SbVec3f v(sf, sf, sf); - if (scale->scaleFactor.getValue() != v) + if (scale->scaleFactor.getValue() != v){ scale->scaleFactor = v; + } } inherited::GLRender(action); diff --git a/src/Gui/Inventor/SoFCTransform.h b/src/Gui/Inventor/SoFCTransform.h index 806377dd7029..a5ad85fff666 100644 --- a/src/Gui/Inventor/SoFCTransform.h +++ b/src/Gui/Inventor/SoFCTransform.h @@ -33,11 +33,11 @@ namespace Gui /** * @class SoFCTransform * @brief A temporary workaround for coin3d/coin#534. - * + * * This class is a workaround for a missing feature to reduce the OpenGL stack size. * The issue was reported here: https://github.com/coin3d/coin/issues/534 * And was merged here: https://github.com/coin3d/coin/pull/535 - * + * * Once this feature is available in all supported versions of Coin3D, this class should * be removed and all instances should revert to using SoTransform. */ diff --git a/src/Gui/Language/FreeCAD_de.ts b/src/Gui/Language/FreeCAD_de.ts index 3ab85c18f00f..b6d1ad230939 100644 --- a/src/Gui/Language/FreeCAD_de.ts +++ b/src/Gui/Language/FreeCAD_de.ts @@ -184,12 +184,12 @@ - Toggle transparency + Toggle transparenc&y Transparenzmodus umschalten - Toggle selectability + Toggle se&lectability Selektierbarkeit an/aus @@ -283,7 +283,7 @@ - Measure + &Measure Messen @@ -425,7 +425,7 @@ EditMode - Default + &Default Standard @@ -435,7 +435,7 @@ - Transform + Trans&form Bewegen @@ -445,7 +445,7 @@ - Cutting + Cu&tting Schneiden @@ -455,7 +455,7 @@ - Color + &Color Farbe @@ -4739,7 +4739,7 @@ Die Spalte "Status" zeigt an, ob das Dokument wiederhergestellt werden konnte. - Finish + &Finish Fertig @@ -6840,7 +6840,7 @@ Stattdessen ein anderes Verzeichnis angeben? Gui::StdCmdPythonHelp - Automatic Python modules documentation + Automatic Python &Modules Documentation Automatische Python Modul Dokumentation @@ -7557,7 +7557,7 @@ Stattdessen ein anderes Verzeichnis angeben? - Preferences... + Prefere&nces... Einstellungen... @@ -7977,25 +7977,25 @@ Weitere Einzelheiten finden sich im Ausgabefenster. - Save views... + &Save views... Ansichten speichern... - Load views... + &Load views... Ansichten laden... - Freeze view + F&reeze view Ansicht einfrieren - Clear views + &Clear views Ansichten löschen @@ -8046,7 +8046,7 @@ Trotzdem fortfahren? - Save image + Save &image Bild speichern @@ -8943,7 +8943,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen. - Box element selection + Bo&x element selection Box-Element Auswahl @@ -8951,7 +8951,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdBoxSelection - Box selection + &Box selection Rechteckauswahl @@ -8993,7 +8993,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdActivateNextWindow - Ne&xt + &Next Nächs&tes Fenster @@ -9007,7 +9007,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdActivatePrevWindow - Pre&vious + &Previous &Vorheriges Fenster @@ -9021,7 +9021,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdAlignment - Alignment... + Ali&gnment... Ausrichtung... @@ -9035,7 +9035,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdAxisCross - Toggle axis cross + Toggle a&xis cross Achsenkreuz ein-/ausblenden @@ -9063,7 +9063,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdCloseActiveWindow - Cl&ose + &Close Schl&ießen @@ -9077,7 +9077,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdCloseAllWindows - Close Al&l + Close A&ll Alles sch&ließen @@ -9105,7 +9105,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdCopy - C&opy + &Copy &Kopieren @@ -9119,7 +9119,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdCut - &Cut + Cu&t &Ausschneiden @@ -9147,7 +9147,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdDemoMode - View turntable... + View &turntable... Drehscheibe... @@ -9161,7 +9161,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdDependencyGraph - Dependency graph... + Dependency gra&ph... Abhängigkeitsdiagramm... @@ -9189,7 +9189,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdDlgMacroExecute - Macros ... + Ma&cros... Makros... @@ -9203,7 +9203,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdDlgMacroExecuteDirect - Execute macro + &Execute macro Makro ausführen @@ -9217,7 +9217,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdDlgMacroRecord - &Macro recording ... + &Macro recording... &Makro aufzeichnen... @@ -9241,7 +9241,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdDlgParameter - E&dit parameters ... + E&dit parameters... P&arameter bearbeiten... @@ -9255,7 +9255,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdDlgPreferences - &Preferences ... + Prefere&nces ... &Einstellungen... @@ -9269,7 +9269,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdDockViewMenu - Panels + &Panels Fenster @@ -9283,7 +9283,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdDrawStyle - Draw style + &Draw style Darstellungsart @@ -9297,7 +9297,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdDuplicateSelection - Duplicate selection + Duplicate selecti&on Auswahl duplizieren @@ -9381,7 +9381,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdFreeCADDonation - Donate + Support FreeCA&D Spenden @@ -9394,7 +9394,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdFreeCADFAQ - FreeCAD FAQ + FreeCAD FA&Q FreeCAD FAQ @@ -9412,7 +9412,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdFreeCADForum - FreeCAD Forum + FreeCAD &Forum FreeCAD-Forum @@ -9430,12 +9430,12 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdFreeCADPowerUserHub - Python scripting documentation + &Python Scripting Documentation Python Scripting Dokumentation - Python scripting documentation on the FreeCAD website + &Python scripting documentation on the FreeCAD website Python Scripting Dokumentation auf der FreeCAD Website @@ -9449,7 +9449,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen. - Users documentation + &User Documentation Benutzerdokumentation @@ -9463,7 +9463,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen. - FreeCAD Website + FreeCAD W&ebsite FreeCAD Webseite @@ -9476,7 +9476,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdFreezeViews - Freeze display + F&reeze display Ansicht einfrieren @@ -9503,7 +9503,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdHideObjects - Hide all objects + Hide all &objects Alle Objekte ausblenden @@ -9517,7 +9517,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdHideSelection - Hide selection + &Hide selection Auswahl ausblenden @@ -9647,7 +9647,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdLinkSelectActions - Link navigation + &Link navigation Verknüpfungsnavigation @@ -9661,7 +9661,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdLinkSelectAllLinks - Select all links + Select &all links Alle Verknüpfungen auswählen @@ -9674,7 +9674,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdLinkSelectLinked - Go to linked object + &Go to linked object Zum verknüpften Objekt gehen @@ -9687,7 +9687,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdLinkSelectLinkedFinal - Go to the deepest linked object + Go to the &deepest linked object Zum tiefsten verknüpften Objekt gehen @@ -9713,7 +9713,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdMacroAttachDebugger - Attach to remote debugger... + &Attach to remote debugger... An Remote-Debugger anhängen... @@ -9727,7 +9727,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdMacroStartDebug - Debug macro + &Debug macro Makro debuggen @@ -9741,7 +9741,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdMacroStepInto - Step into + Step &into Einzelschritt @@ -9755,7 +9755,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdMacroStepOver - Step over + Step &over Einen Schritt weiter @@ -9769,7 +9769,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdMacroStopDebug - Stop debugging + &Stop debugging Debuggen stoppen @@ -9783,7 +9783,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen.StdCmdMergeProjects - Merge document... + &Merge document... Dokument zusammenführen... @@ -9830,7 +9830,7 @@ und Unterstriche enthalten und darf nicht mit einer Ziffer beginnen. - Help + &Help Hilfe @@ -9947,7 +9947,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdPrintPdf - &Export PDF... + Export P&DF... PDF &exportieren... @@ -9961,7 +9961,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdPrintPreview - &Print preview... + Print previe&w... &Druckvorschau... @@ -10007,7 +10007,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdRandomColor - Random color + Random &color Zufällige Farbe @@ -10021,7 +10021,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdRecentFiles - Open Recent + Open &Recent Zuletzt geöffnete Dateien @@ -10035,7 +10035,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdRecentMacros - Recent macros + &Recent macros Aktuelle Makros @@ -10063,7 +10063,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdRefresh - &Refresh + Refres&h A&ktualisieren @@ -10077,7 +10077,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdReportBug - Report a bug + Report an &Issue Einen Fehler melden @@ -10091,7 +10091,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdRevert - Revert + Rever&t Änderungen widerrufen @@ -10119,7 +10119,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdSaveAll - Save All + Sa&ve All Alle speichern @@ -10147,7 +10147,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdSaveCopy - Save a &Copy... + Save a Cop&y... Eine Kopie spei&chern... @@ -10167,7 +10167,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten - Scene inspector + Scene &inspector Szenengraph untersuchen @@ -10181,7 +10181,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten - Show selection bounding box + Sho&w selection bounding box Auswahlbegrenzungsrahmen zeigen @@ -10203,7 +10203,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdSelectVisibleObjects - Select visible objects + &Select visible objects Sichtbare Objekte auswählen @@ -10231,7 +10231,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdShowObjects - Show all objects + Show &all objects Alle Objekte einblenden @@ -10273,7 +10273,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdTextDocument - Add text document + Add te&xt document Textdokument hinzufügen @@ -10287,13 +10287,13 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdTextureMapping - Texture mapping... + Text&ure mapping... Texturabbildung... - Texture mapping + Text&ure mapping Texturabbildung @@ -10315,7 +10315,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdToggleBreakpoint - Toggle breakpoint + Toggle &breakpoint Haltepunkt an/aus @@ -10329,7 +10329,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdToggleClipPlane - Clipping plane + Clippin&g plane Schnittebene @@ -10343,7 +10343,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdToggleNavigation - Toggle navigation/Edit mode + Toggle navigation/&Edit mode Navigations-/Editier-Modus @@ -10357,7 +10357,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdToggleObjects - Toggle all objects + To&ggle all objects Alle Objekte umschalten @@ -10371,7 +10371,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdToggleSelectability - Toggle selectability + Toggle se&lectability Auswählbarkeit umschalten @@ -10385,7 +10385,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdToggleVisibility - Toggle visibility + Toggle &visibility Ein-/ausblenden @@ -10399,7 +10399,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdToolBarMenu - Tool&bars + &Toolbars Symbol&leisten @@ -10427,7 +10427,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdTransformManip - Transform + Trans&form Bewegen @@ -10511,7 +10511,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdUserEditMode - Edit mode + Edit &mode Bearbeitungsmodus @@ -10539,7 +10539,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdViewBottom - Bottom + &5 Bottom Untersicht @@ -10567,7 +10567,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdViewDimetric - Dimetric + &Dimetric Dimetrisch @@ -10623,7 +10623,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdViewFitAll - Fit all + &Fit all Einpassen @@ -10637,7 +10637,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdViewFitSelection - Fit selection + Fit &selection Auswahl einpassen @@ -10651,7 +10651,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdViewFront - Front + &1 Front Vorderansicht @@ -10665,7 +10665,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdViewHome - Home + &Home Home @@ -10679,7 +10679,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdViewIsometric - Isometric + &Isometric Isometrisch @@ -10693,7 +10693,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdViewIvIssueCamPos - Issue camera position + Issue camera &position Kameraposition ausgeben @@ -10707,7 +10707,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdViewIvStereoInterleavedColumns - Stereo Interleaved Columns + Stereo Interleaved &Columns Vertikales Interlacing @@ -10721,7 +10721,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdViewIvStereoInterleavedRows - Stereo Interleaved Rows + Stereo Interleaved &Rows Horizontales Interlacing @@ -10735,7 +10735,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdViewIvStereoOff - Stereo Off + Stereo &Off Stereo aus @@ -10749,7 +10749,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdViewIvStereoQuadBuff - Stereo quad buffer + Stereo &quad buffer Stereo Vierfachpuffer @@ -10763,7 +10763,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdViewIvStereoRedGreen - Stereo red/cyan + Stereo re&d/cyan Stereo rot/cyan @@ -10777,7 +10777,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdViewLeft - Left + &6 Left Seitenansicht von links @@ -10791,7 +10791,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdViewRear - Rear + &4 Rear Rückansicht @@ -10819,7 +10819,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdViewRight - Right + &3 Right Seitenansicht von rechts @@ -10833,7 +10833,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdViewRotateLeft - Rotate Left + Rotate &Left Nach links drehen @@ -10847,7 +10847,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdViewRotateRight - Rotate Right + Rotate &Right Nach rechts drehen @@ -10875,7 +10875,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdViewTop - Top + &2 Top Draufsicht @@ -10889,7 +10889,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdViewTrimetric - Trimetric + &Trimetric Trimetrisch @@ -10959,7 +10959,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdCmdWorkbench - Workbench + &Workbench Arbeitsbereich @@ -11015,7 +11015,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdRecallWorkingView - Recall working view + R&ecall working view Arbeitsansicht wiederherstellen @@ -11029,7 +11029,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdStoreWorkingView - Store working view + St&ore working view Arbeitsansicht speichern @@ -11043,7 +11043,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdTreeCollapseDocument - Collapse/Expand + Collapse/E&xpand Reduzieren/Erweitern @@ -11057,7 +11057,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdTreeDrag - Initiate dragging + Initiate &dragging Ziehen initiieren @@ -11070,7 +11070,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdTreeMultiDocument - Multi document + &Multi document Mehrfachdokument @@ -11084,7 +11084,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdTreePreSelection - Pre-selection + &4 Pre-selection Vorauswahl @@ -11097,7 +11097,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdTreeRecordSelection - Record selection + &5 Record selection Auswahl aufzeichnen @@ -11110,7 +11110,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdTreeSelection - Go to selection + &Go to selection Gehe zu Selektion @@ -11124,7 +11124,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdTreeSingleDocument - Single document + &Single document Einzeldokument @@ -11138,7 +11138,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdTreeSyncPlacement - Sync placement + &3 Sync placement Sync-Platzierung @@ -11151,7 +11151,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdTreeSyncSelection - Sync selection + &2 Sync selection Sync-Auswahl @@ -11164,7 +11164,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdTreeSyncView - Sync view + &1 Sync view Sync-Ansicht @@ -11177,7 +11177,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdViewBoxZoom - Box zoom + &Box zoom Zoomen mit Rechteck @@ -11191,7 +11191,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdViewDock - Docked + &Docked Angedockt @@ -11205,7 +11205,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdViewDockUndockFullscreen - Document window + D&ocument window Dokumentfenster @@ -11219,7 +11219,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdViewFullscreen - Fullscreen + &Fullscreen Vollbild @@ -11233,7 +11233,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdViewScreenShot - Save image... + Save &image... Bild speichern... @@ -11247,7 +11247,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdViewUndock - Undocked + &Undocked Abgedockt @@ -11261,7 +11261,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdViewZoomIn - Zoom In + Zoom &In Vergrößern @@ -11275,7 +11275,7 @@ Es ist dazu gedacht, Objekte zusammenzustellen, die eine Part-Topoform enthalten StdViewZoomOut - Zoom Out + Zoom &Out Verkleinern @@ -11316,7 +11316,7 @@ Trotzdem fortfahren? Std_DrawStyle - As is + &1 As is Original @@ -11326,7 +11326,7 @@ Trotzdem fortfahren? - Points + &2 Points Punkte @@ -11336,7 +11336,7 @@ Trotzdem fortfahren? - Wireframe + &3 Wireframe Drahtgitter @@ -11346,7 +11346,7 @@ Trotzdem fortfahren? - Hidden line + &4 Hidden line Versteckte Linie @@ -11356,7 +11356,7 @@ Trotzdem fortfahren? - No shading + &5 No shading Keine Schattierung @@ -11366,7 +11366,7 @@ Trotzdem fortfahren? - Shaded + &6 Shaded Schattiert @@ -11376,7 +11376,7 @@ Trotzdem fortfahren? - Flat lines + &7 Flat lines Flache Linien @@ -11517,7 +11517,7 @@ Trotzdem fortfahren? - Standard views + Standard &views Standardansichten @@ -11527,7 +11527,7 @@ Trotzdem fortfahren? - Axonometric + A&xonometric Axonometrisch @@ -11542,7 +11542,7 @@ Trotzdem fortfahren? - Visibility + V&isibility Sichtbarkeit @@ -12119,7 +12119,7 @@ Zurzeit verfügt dieses System über folgende Arbeitsbereiche:</p></bod StdViewLoadImage - Load image... + &Load image... Bild laden... @@ -12892,7 +12892,7 @@ Python-Konsole in das Ausgabefenster umgeleitet StdCmdExportDependencyGraph - Export dependency graph... + Export dependency &graph... Abhängigkeitsdiagramm exportieren... @@ -12906,7 +12906,7 @@ Python-Konsole in das Ausgabefenster umgeleitet StdCmdSelBack - Selection back + Selection &back Vorherige Auswahl @@ -12919,7 +12919,7 @@ Python-Konsole in das Ausgabefenster umgeleitet StdCmdSelForward - Selection forward + Selection &forward Nächste Auswahl @@ -12975,7 +12975,7 @@ Python-Konsole in das Ausgabefenster umgeleitet StdCmdToggleTransparency - Toggle transparency + Toggle transparenc&y Transparenzmodus umschalten @@ -12988,7 +12988,7 @@ Python-Konsole in das Ausgabefenster umgeleitet StdCmdDockOverlayAll - Toggle overlay for all + Toggle overl&ay for all Überlagerungsmodus für alle umschalten @@ -13001,7 +13001,7 @@ Python-Konsole in das Ausgabefenster umgeleitet StdCmdDockOverlayTransparentAll - Toggle transparent for all + Toggle tra&nsparent for all Umschalten der Transparenz für alle @@ -13016,7 +13016,7 @@ Dadurch bleiben die angedockten Fenster jederzeit transparent. StdCmdDockOverlayToggle - Toggle overlay + Toggle &overlay Überlagerungsmodus umschalten @@ -13029,7 +13029,7 @@ Dadurch bleiben die angedockten Fenster jederzeit transparent. StdCmdDockOverlayToggleTransparent - Toggle transparent mode + Toggle tran&sparent mode Transparenzmodus umschalten @@ -13044,7 +13044,7 @@ Dadurch bleibt das angedockte Fenster jederzeit transparent. StdCmdDockOverlayToggleLeft - Toggle left + Toggle &left Links umschalten @@ -13057,7 +13057,7 @@ Dadurch bleibt das angedockte Fenster jederzeit transparent. StdCmdDockOverlayToggleRight - Toggle right + Toggle &right Rechts umschalten @@ -13070,7 +13070,7 @@ Dadurch bleibt das angedockte Fenster jederzeit transparent. StdCmdDockOverlayToggleTop - Toggle top + Toggle &top Oben umschalten @@ -13083,7 +13083,7 @@ Dadurch bleibt das angedockte Fenster jederzeit transparent. StdCmdDockOverlayToggleBottom - Toggle bottom + Toggle &bottom Unten umschalten @@ -13096,7 +13096,7 @@ Dadurch bleibt das angedockte Fenster jederzeit transparent. StdCmdDockOverlayMouseTransparent - Bypass mouse events in docked overlay windows + Bypass &mouse events in docked overlay windows Mausereignisse in angedockten Überlagerungs-Fenstern umgehen @@ -13335,7 +13335,7 @@ der Region nicht transparent sind. StdCmdProjectInfo - Document i&nformation... + Doc&ument information... Dokumenti&nformation... @@ -13349,7 +13349,7 @@ der Region nicht transparent sind. StdCmdProjectUtil - Document utility... + Do&cument utility... Dokument-Dienstprogramm... @@ -13377,7 +13377,7 @@ der Region nicht transparent sind. StdCmdProperties - Properties + Propert&ies Eigenschaften @@ -13447,7 +13447,7 @@ der Region nicht transparent sind. StdCmdAlignToSelection - Align to selection + &Align to selection Auf die Auswahl ausrichten diff --git a/src/Gui/OnlineDocumentation.cpp b/src/Gui/OnlineDocumentation.cpp index e946b5336b38..b940bb2f09c0 100644 --- a/src/Gui/OnlineDocumentation.cpp +++ b/src/Gui/OnlineDocumentation.cpp @@ -322,7 +322,7 @@ StdCmdPythonHelp::StdCmdPythonHelp() , server(nullptr) { sGroup = "Tools"; - sMenuText = QT_TR_NOOP("Automatic Python Modules Documentation"); + sMenuText = QT_TR_NOOP("Automatic Python &Modules Documentation"); sToolTipText = QT_TR_NOOP("Opens the Python Modules documentation"); sWhatsThis = "Std_PythonHelp"; sStatusTip = sToolTipText; diff --git a/src/Gui/PreferencePackManager.cpp b/src/Gui/PreferencePackManager.cpp index 54b42784e4d7..d443926d8b39 100644 --- a/src/Gui/PreferencePackManager.cpp +++ b/src/Gui/PreferencePackManager.cpp @@ -504,12 +504,11 @@ static void copyTemplateParameters(/*const*/ ParameterManager& templateParameter } } -void PreferencePackManager::save(const std::string& name, const std::vector& templates) +void PreferencePackManager::save(const std::string& name, const std::string& directory, const std::vector& templates) { if (templates.empty()) return; - AddPackToMetadata(name); // Create the config file auto outputParameterManager = ParameterManager::Create(); @@ -519,9 +518,17 @@ void PreferencePackManager::save(const std::string& name, const std::vectorLoadDocument(Base::FileInfo::pathToString(t.path).c_str()); copyTemplateParameters(*templateParameterManager, *outputParameterManager); } - auto savedPreferencePacksDirectory = getSavedPreferencePacksPath(); - auto cfgFilename = savedPreferencePacksDirectory / name / (name + ".cfg"); - outputParameterManager->SaveDocument(Base::FileInfo::pathToString(cfgFilename).c_str()); + + std::string cfgFilename; + if (directory.empty()) { + AddPackToMetadata(name); + auto savedPreferencePacksDirectory = getSavedPreferencePacksPath(); + cfgFilename = Base::FileInfo::pathToString(savedPreferencePacksDirectory / name / (name + ".cfg")); + } + else { + cfgFilename = Base::FileInfo::pathToString(fs::path(directory) / (name + ".cfg")); + } + outputParameterManager->SaveDocument(cfgFilename.c_str()); } static std::vector scanForTemplateFolders(const std::string& groupName, const fs::path& entry) diff --git a/src/Gui/PreferencePackManager.h b/src/Gui/PreferencePackManager.h index 0358fe77ea6d..bb879174476e 100644 --- a/src/Gui/PreferencePackManager.h +++ b/src/Gui/PreferencePackManager.h @@ -176,7 +176,7 @@ namespace Gui { * * If the named preferencePack does not exist, this creates it on disk. If it does exist, this overwrites the original. */ - void save(const std::string& name, const std::vector& templates); + void save(const std::string& name, const std::string& directory, const std::vector& templates); std::vector templateFiles(bool rescan = false); diff --git a/src/Gui/PreferencePacks/Dark behave/Dark behave.cfg b/src/Gui/PreferencePacks/Dark behave/Dark behave.cfg index 712f2ea4b708..6d1906f64f8f 100644 --- a/src/Gui/PreferencePacks/Dark behave/Dark behave.cfg +++ b/src/Gui/PreferencePacks/Dark behave/Dark behave.cfg @@ -18,7 +18,7 @@ - + #9b4de6 diff --git a/src/Gui/PreferencePacks/FreeCAD Classic/FreeCAD Classic.cfg b/src/Gui/PreferencePacks/FreeCAD Classic/FreeCAD Classic.cfg index 70078b752fc9..f1b0e88734b5 100644 --- a/src/Gui/PreferencePacks/FreeCAD Classic/FreeCAD Classic.cfg +++ b/src/Gui/PreferencePacks/FreeCAD Classic/FreeCAD Classic.cfg @@ -51,7 +51,7 @@ - + diff --git a/src/Gui/PreferencePacks/FreeCAD Dark/FreeCAD Dark.cfg b/src/Gui/PreferencePacks/FreeCAD Dark/FreeCAD Dark.cfg index 746f1e353e6d..5684929b53bf 100644 --- a/src/Gui/PreferencePacks/FreeCAD Dark/FreeCAD Dark.cfg +++ b/src/Gui/PreferencePacks/FreeCAD Dark/FreeCAD Dark.cfg @@ -50,7 +50,7 @@ - + @@ -92,10 +92,10 @@ - + - + diff --git a/src/Gui/PreferencePacks/FreeCAD Light/FreeCAD Light.cfg b/src/Gui/PreferencePacks/FreeCAD Light/FreeCAD Light.cfg index e824875c384b..0f3e06a6eaac 100644 --- a/src/Gui/PreferencePacks/FreeCAD Light/FreeCAD Light.cfg +++ b/src/Gui/PreferencePacks/FreeCAD Light/FreeCAD Light.cfg @@ -52,7 +52,7 @@ - + diff --git a/src/Gui/PreferencePages/DlgSettingsEditor.ui b/src/Gui/PreferencePages/DlgSettingsEditor.ui index 5cecc7f9a82d..a512778b7640 100644 --- a/src/Gui/PreferencePages/DlgSettingsEditor.ui +++ b/src/Gui/PreferencePages/DlgSettingsEditor.ui @@ -205,7 +205,7 @@ Keep tabs - true + false Tabs @@ -226,6 +226,9 @@ Spaces + + true + Editor diff --git a/src/Gui/PreferencePages/DlgSettingsGeneral.cpp b/src/Gui/PreferencePages/DlgSettingsGeneral.cpp index 876c24bafb7a..4ae81c7de11e 100644 --- a/src/Gui/PreferencePages/DlgSettingsGeneral.cpp +++ b/src/Gui/PreferencePages/DlgSettingsGeneral.cpp @@ -719,7 +719,8 @@ void DlgSettingsGeneral::newPreferencePackDialogAccepted() return false; }); auto preferencePackName = newPreferencePackDialog->preferencePackName(); - Application::Instance->prefPackManager()->save(preferencePackName, selectedTemplates); + auto preferencePackDirectory = newPreferencePackDialog->preferencePackDirectory(); + Application::Instance->prefPackManager()->save(preferencePackName, preferencePackDirectory, selectedTemplates); recreatePreferencePackMenu(); } diff --git a/src/Gui/PythonConsole.cpp b/src/Gui/PythonConsole.cpp index 0722240e80cb..022402722e93 100644 --- a/src/Gui/PythonConsole.cpp +++ b/src/Gui/PythonConsole.cpp @@ -95,27 +95,12 @@ struct PythonConsoleP QString output, error, info, historyFile; QStringList statements; bool interactive; - QMap colormap; // Color map ParameterGrp::handle hGrpSettings; PythonConsoleP() { type = Normal; interactive = false; historyFile = QString::fromUtf8((App::Application::getUserAppDataDir() + "PythonHistory.log").c_str()); - colormap[QLatin1String("Text")] = qApp->palette().windowText().color(); - colormap[QLatin1String("Bookmark")] = Qt::cyan; - colormap[QLatin1String("Breakpoint")] = Qt::red; - colormap[QLatin1String("Keyword")] = Qt::blue; - colormap[QLatin1String("Comment")] = QColor(0, 170, 0); - colormap[QLatin1String("Block comment")] = QColor(160, 160, 164); - colormap[QLatin1String("Number")] = Qt::blue; - colormap[QLatin1String("String")] = Qt::red; - colormap[QLatin1String("Character")] = Qt::red; - colormap[QLatin1String("Class name")] = QColor(255, 170, 0); - colormap[QLatin1String("Define name")] = QColor(255, 170, 0); - colormap[QLatin1String("Operator")] = QColor(160, 160, 164); - colormap[QLatin1String("Python output")] = QColor(170, 170, 127); - colormap[QLatin1String("Python error")] = Qt::red; } }; @@ -435,7 +420,7 @@ void InteractiveInterpreter::clearBuffer() * Constructs a PythonConsole which is a child of 'parent'. */ PythonConsole::PythonConsole(QWidget *parent) - : TextEdit(parent), WindowParameter( "Editor" ), _sourceDrain(nullptr) + : PythonTextEditor(parent), _sourceDrain(nullptr) { d = new PythonConsoleP(); d->interactive = false; @@ -450,7 +435,10 @@ PythonConsole::PythonConsole(QWidget *parent) // use the console highlighter pythonSyntax = new PythonConsoleHighlighter(this); - pythonSyntax->setDocument(this->document()); + setSyntaxHighlighter(pythonSyntax); + + setVisibleLineNumbers(false); + setEnabledHighlightCurrentLine(false); // create the window for call tips d->callTipsList = new CallTipsList(this); @@ -467,7 +455,6 @@ PythonConsole::PythonConsole(QWidget *parent) // set colors and font from settings ParameterGrp::handle hPrefGrp = getWindowParameter(); - hPrefGrp->Attach(this); hPrefGrp->NotifyAll(); d->hGrpSettings = WindowParameter::getDefaultParameter()->GetGroup("PythonConsole"); @@ -512,8 +499,6 @@ PythonConsole::~PythonConsole() saveHistory(); Base::PyGILStateLocker lock; d->hGrpSettings->Detach(this); - getWindowParameter()->Detach(this); - delete pythonSyntax; Py_XDECREF(d->_stdoutPy); Py_XDECREF(d->_stderrPy); Py_XDECREF(d->_stdinPy); @@ -522,7 +507,7 @@ PythonConsole::~PythonConsole() } /** Set new font and colors according to the parameters. */ -void PythonConsole::OnChange(Base::Subject &rCaller, const char* sReason ) +void PythonConsole::OnChange(Base::Subject &rCaller, const char* sReason) { const auto & rGrp = static_cast(rCaller); @@ -536,33 +521,6 @@ void PythonConsole::OnChange(Base::Subject &rCaller, const char* sR } } - if (strcmp(sReason, "FontSize") == 0 || strcmp(sReason, "Font") == 0) { - int fontSize = rGrp.GetInt("FontSize", 10); - QString fontFamily = QString::fromLatin1(rGrp.GetASCII("Font", "Courier").c_str()); - - QFont font(fontFamily, fontSize); - setFont(font); - QFontMetrics metric(font); - int width = QtTools::horizontalAdvance(metric, QLatin1String("0000")); -#if QT_VERSION < QT_VERSION_CHECK(5, 10, 0) - setTabStopWidth(width); -#else - setTabStopDistance(width); -#endif - } - else { - QMap::Iterator it = d->colormap.find(QString::fromLatin1(sReason)); - if (it != d->colormap.end()) { - QColor color = it.value(); - unsigned int col = App::Color::asPackedRGB(color); - auto value = static_cast(col); - value = rGrp.GetUnsigned(sReason, value); - col = static_cast(value); - color.setRgb((col>>24)&0xff, (col>>16)&0xff, (col>>8)&0xff); - pythonSyntax->setColor(QString::fromLatin1(sReason), color); - } - } - if (strcmp(sReason, "PythonBlockCursor") == 0) { bool block = rGrp.GetBool("PythonBlockCursor", false); if (block) { @@ -572,6 +530,10 @@ void PythonConsole::OnChange(Base::Subject &rCaller, const char* sR setCursorWidth(1); } } + + if (strcmp(sReason, "EnableLineNumber") != 0) { + TextEditor::OnChange(rCaller, sReason); + } } /** @@ -613,13 +575,13 @@ void PythonConsole::keyPressEvent(QKeyEvent * e) if (e->text().isEmpty() || e->matches(QKeySequence::Copy) || e->matches(QKeySequence::SelectAll)) { - TextEdit::keyPressEvent(e); + PythonTextEditor::keyPressEvent(e); } else if (!e->text().isEmpty() && (e->modifiers() == Qt::NoModifier || e->modifiers() == Qt::ShiftModifier)) { this->moveCursor(QTextCursor::End); - TextEdit::keyPressEvent(e); + PythonTextEditor::keyPressEvent(e); } break; } @@ -671,11 +633,11 @@ void PythonConsole::keyPressEvent(QKeyEvent * e) if (e->text() == QLatin1String(".")) { // analyse context and show available call tips int contextLength = cursor.position() - inputLineBegin.position(); - TextEdit::keyPressEvent(e); + PythonTextEditor::keyPressEvent(e); d->callTipsList->showTips( inputStrg.left( contextLength ) ); } else { - TextEdit::keyPressEvent(e); + PythonTextEditor::keyPressEvent(e); } } break; @@ -707,25 +669,25 @@ void PythonConsole::keyPressEvent(QKeyEvent * e) case Qt::Key_Left: { if (cursor > inputLineBegin) - { TextEdit::keyPressEvent(e); } + { PythonTextEditor::keyPressEvent(e); } restartHistory = false; } break; case Qt::Key_Right: { - TextEdit::keyPressEvent(e); + PythonTextEditor::keyPressEvent(e); restartHistory = false; } break; case Qt::Key_Backspace: { if (cursorBeyond( cursor, inputLineBegin, +1 )) - { TextEdit::keyPressEvent(e); } + { PythonTextEditor::keyPressEvent(e); } } break; default: { - TextEdit::keyPressEvent(e); + PythonTextEditor::keyPressEvent(e); } break; } // This can't be done in CallTipsList::eventFilter() because we must first perform diff --git a/src/Gui/PythonConsole.h b/src/Gui/PythonConsole.h index 1375334cd536..633d22a2971a 100644 --- a/src/Gui/PythonConsole.h +++ b/src/Gui/PythonConsole.h @@ -97,7 +97,7 @@ class GuiExport ConsoleHistory * @author Werner Mayer */ class PythonConsoleHighlighter; -class GuiExport PythonConsole : public TextEdit, public WindowParameter +class GuiExport PythonConsole : public PythonTextEditor { Q_OBJECT diff --git a/src/Gui/PythonEditor.cpp b/src/Gui/PythonEditor.cpp index 7a46064a2105..04f4f5dfc261 100644 --- a/src/Gui/PythonEditor.cpp +++ b/src/Gui/PythonEditor.cpp @@ -65,7 +65,7 @@ struct PythonEditorP * syntax highlighting for the Python language. */ PythonEditor::PythonEditor(QWidget* parent) - : TextEditor(parent) + : PythonTextEditor(parent) { d = new PythonEditorP(); this->setSyntaxHighlighter(new PythonSyntaxHighlighter(this)); @@ -87,6 +87,25 @@ PythonEditor::~PythonEditor() delete d; } +void PythonEditor::OnChange(Base::Subject &rCaller, const char* sReason) +{ + const auto & rGrp = static_cast(rCaller); + + if (strcmp(sReason, "EnableBlockCursor") == 0 || + strcmp(sReason, "FontSize") == 0 || + strcmp(sReason, "Font") == 0) { + bool block = rGrp.GetBool("EnableBlockCursor", false); + if (block) { + setCursorWidth(QFontMetrics(font()).averageCharWidth()); + } + else { + setCursorWidth(1); + } + } + + TextEditor::OnChange(rCaller, sReason); +} + void PythonEditor::setFileName(const QString& fn) { d->filename = fn; @@ -205,7 +224,7 @@ void PythonEditor::keyPressEvent(QKeyEvent* e) setTextCursor(cursor); return; //skip default handler } - TextEditor::keyPressEvent(e); //wasn't enter key, so let base class handle it + PythonTextEditor::keyPressEvent(e); //wasn't enter key, so let base class handle it } void PythonEditor::onComment() diff --git a/src/Gui/PythonEditor.h b/src/Gui/PythonEditor.h index b2b826ba1d65..432975d9dfec 100644 --- a/src/Gui/PythonEditor.h +++ b/src/Gui/PythonEditor.h @@ -36,7 +36,7 @@ class PythonSyntaxHighlighterP; * Python text editor with syntax highlighting. * \author Werner Mayer */ -class GuiExport PythonEditor : public TextEditor +class GuiExport PythonEditor : public PythonTextEditor { Q_OBJECT @@ -44,6 +44,7 @@ class GuiExport PythonEditor : public TextEditor explicit PythonEditor(QWidget *parent = nullptr); ~PythonEditor() override; + void OnChange( Base::Subject &rCaller,const char* rcReason ) override; void toggleBreakpoint(); void showDebugMarker(int line); void hideDebugMarker(); diff --git a/src/Gui/QuantitySpinBox.cpp b/src/Gui/QuantitySpinBox.cpp index 1f93be55c185..1ca7d684e2d0 100644 --- a/src/Gui/QuantitySpinBox.cpp +++ b/src/Gui/QuantitySpinBox.cpp @@ -120,7 +120,7 @@ class QuantitySpinBoxPrivate result = quantity; // Now translate the quantity into its string representation using the user-defined unit system - input = Base::UnitsApi::schemaTranslate(result); + input = QString::fromStdString(Base::UnitsApi::schemaTranslate(result)); } } @@ -608,7 +608,7 @@ void QuantitySpinBox::setUnit(const Base::Unit &unit) void QuantitySpinBox::setUnitText(const QString& str) { try { - Base::Quantity quant = Base::Quantity::parse(str); + Base::Quantity quant = Base::Quantity::parse(str.toStdString()); setUnit(quant.getUnit()); } catch (const Base::ParserError&) { @@ -712,25 +712,26 @@ void QuantitySpinBox::clearSchema() QString QuantitySpinBox::getUserString(const Base::Quantity& val, double& factor, QString& unitString) const { Q_D(const QuantitySpinBox); - if (d->scheme) { - return val.getUserString(d->scheme.get(), factor, unitString); - } - else { - return val.getUserString(factor, unitString); - } + std::string unitStr; + std::string str = d->scheme ? val.getUserString(d->scheme.get(), factor, unitStr) + : val.getUserString(factor, unitStr); + unitString = QString::fromStdString(unitStr); + return QString::fromStdString(str); } QString QuantitySpinBox::getUserString(const Base::Quantity& val) const { Q_D(const QuantitySpinBox); + std::string str; if (d->scheme) { double factor; - QString unitString; - return val.getUserString(d->scheme.get(), factor, unitString); + std::string unitString; + str = val.getUserString(d->scheme.get(), factor, unitString); } else { - return val.getUserString(); + str = val.getUserString(); } + return QString::fromStdString(str); } void QuantitySpinBox::setExpression(std::shared_ptr expr) @@ -767,7 +768,7 @@ void QuantitySpinBox::stepBy(int steps) else if (val < d->minimum) val = d->minimum; - Quantity quant(val, d->unitStr); + Quantity quant(val, d->unitStr.toStdString()); updateText(quant); updateFromCache(true); update(); @@ -909,9 +910,7 @@ void QuantitySpinBox::selectNumber() QString QuantitySpinBox::textFromValue(const Base::Quantity& value) const { - double factor; - QString unitStr; - QString str = getUserString(value, factor, unitStr); + QString str = getUserString(value); if (qAbs(value.getValue()) >= 1000.0) { str.remove(locale().groupSeparator()); } diff --git a/src/Gui/RevitNavigationStyle.cpp b/src/Gui/RevitNavigationStyle.cpp index 3bbea4d7a753..af4e9b114e2e 100644 --- a/src/Gui/RevitNavigationStyle.cpp +++ b/src/Gui/RevitNavigationStyle.cpp @@ -272,12 +272,12 @@ SbBool RevitNavigationStyle::processSoEvent(const SoEvent * const ev) break; default: - // Reset mode to SELECTION when button 3 is released + // Reset mode to IDLE when button 3 is released // This stops the DRAGGING when button 3 is released but SHIFT is still pressed // This stops the ZOOMING when button 3 is released but CTRL is still pressed if ((curmode == NavigationStyle::DRAGGING || curmode == NavigationStyle::ZOOMING) && !this->button3down) { - newmode = NavigationStyle::SELECTION; + newmode = NavigationStyle::IDLE; } break; } diff --git a/src/Gui/Selection.cpp b/src/Gui/Selection.cpp index f056642801d9..6a5925fd51f3 100644 --- a/src/Gui/Selection.cpp +++ b/src/Gui/Selection.cpp @@ -702,7 +702,7 @@ std::array, 3> schemaTranslatePoint(double x, dou mmz.setValue(fabs(z) > precision ? z : 0.0); double xfactor, yfactor, zfactor; - QString xunit, yunit, zunit; + std::string xunit, yunit, zunit; Base::UnitsApi::schemaTranslate(mmx, xfactor, xunit); Base::UnitsApi::schemaTranslate(mmy, yfactor, yunit); @@ -712,9 +712,9 @@ std::array, 3> schemaTranslatePoint(double x, dou double yuser = fabs(y) > precision ? y / yfactor : 0.0; double zuser = fabs(z) > precision ? z / zfactor : 0.0; - std::array, 3> ret = {std::make_pair(xuser, xunit.toUtf8().constBegin()), - std::make_pair(yuser, yunit.toUtf8().constBegin()), - std::make_pair(zuser, zunit.toUtf8().constBegin())}; + std::array, 3> ret = {std::make_pair(xuser, xunit), + std::make_pair(yuser, yunit), + std::make_pair(zuser, zunit)}; return ret; } diff --git a/src/Gui/SoDevicePixelRatioElement.cpp b/src/Gui/SoDevicePixelRatioElement.cpp new file mode 100644 index 000000000000..31cf7fcf841a --- /dev/null +++ b/src/Gui/SoDevicePixelRatioElement.cpp @@ -0,0 +1,55 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later + /**************************************************************************** + * * + * Copyright (c) 2024 Pierre-Louis Boyer * + * * + * This file is part of FreeCAD. * + * * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * + * * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * + * * + ***************************************************************************/ + + +#include "PreCompiled.h" + +#ifndef _PreComp_ +#include +# include +#endif + +#include "SoDevicePixelRatioElement.h" + +SO_ELEMENT_SOURCE(SoDevicePixelRatioElement); + +void SoDevicePixelRatioElement::initClass() { + SO_ELEMENT_INIT_CLASS(SoDevicePixelRatioElement, SoFloatElement); + // Ensure the element is enabled for GLRenderAction + SO_ENABLE(SoGLRenderAction, SoDevicePixelRatioElement); +} + +void SoDevicePixelRatioElement::init(SoState* state) { + SoFloatElement::init(state); + data = 1.0f; // Default to a device pixel ratio of 1.0 +} + +void SoDevicePixelRatioElement::set(SoState* state, float dpr) { + SoFloatElement::set(classStackIndex, state, dpr); +} + +float SoDevicePixelRatioElement::get(SoState* state) { + return SoFloatElement::get(classStackIndex, state); +} + +SoDevicePixelRatioElement::~SoDevicePixelRatioElement() {} \ No newline at end of file diff --git a/src/Gui/SoDevicePixelRatioElement.h b/src/Gui/SoDevicePixelRatioElement.h new file mode 100644 index 000000000000..239a92148a60 --- /dev/null +++ b/src/Gui/SoDevicePixelRatioElement.h @@ -0,0 +1,51 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later + /**************************************************************************** + * * + * Copyright (c) 2024 Pierre-Louis Boyer * + * * + * This file is part of FreeCAD. * + * * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * + * * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * + * * + ***************************************************************************/ + +#ifndef SO_DEVICE_PIXEL_RATIO_ELEMENT_H +#define SO_DEVICE_PIXEL_RATIO_ELEMENT_H + +#include + +class SoState; + +class SoDevicePixelRatioElement : public SoFloatElement { + SO_ELEMENT_HEADER(SoDevicePixelRatioElement); + +public: + // Initializes the class + static void initClass(); + + // Initializes the element + virtual void init(SoState* state) override; + + // Sets the device pixel ratio + static void set(SoState* state, float dpr); + + // Retrieves the device pixel ratio + static float get(SoState* state); + +protected: + virtual ~SoDevicePixelRatioElement(); +}; + +#endif // SO_DEVICE_PIXEL_RATIO_ELEMENT_H \ No newline at end of file diff --git a/src/Gui/SoFCCSysDragger.cpp b/src/Gui/SoFCCSysDragger.cpp index fdb800b48e09..c7e049e5c72e 100644 --- a/src/Gui/SoFCCSysDragger.cpp +++ b/src/Gui/SoFCCSysDragger.cpp @@ -327,7 +327,7 @@ void TDragger::drag() Base::Unit::Length); QString message = - QString::fromLatin1("%1 %2").arg(QObject::tr("Translation:"), quantity.getUserString()); + QString::fromLatin1("%1 %2").arg(QObject::tr("Translation:"), QString::fromStdString(quantity.getUserString())); getMainWindow()->showMessage(message, 3000); } @@ -614,8 +614,8 @@ void TPlanarDragger::drag() QString message = QString::fromLatin1("%1 %2, %3") .arg(QObject::tr("Translation XY:"), - quantityX.getUserString(), - quantityY.getUserString()); + QString::fromStdString(quantityX.getUserString()), + QString::fromStdString(quantityY.getUserString())); getMainWindow()->showMessage(message, 3000); } @@ -940,7 +940,7 @@ void RDragger::drag() Base::Unit::Angle); QString message = - QString::fromLatin1("%1 %2").arg(QObject::tr("Rotation:"), quantity.getUserString()); + QString::fromLatin1("%1 %2").arg(QObject::tr("Rotation:"), QString::fromStdString(quantity.getUserString())); getMainWindow()->showMessage(message, 3000); } diff --git a/src/Gui/SoFCDB.cpp b/src/Gui/SoFCDB.cpp index fc746a2fbe95..75db396f8346 100644 --- a/src/Gui/SoFCDB.cpp +++ b/src/Gui/SoFCDB.cpp @@ -53,6 +53,7 @@ #include "GestureNavigationStyle.h" #include "NavigationStyle.h" #include "SelectionObject.h" +#include "SoDevicePixelRatioElement.h" #include "SoFCColorBar.h" #include "SoFCColorGradient.h" #include "SoFCColorLegend.h" @@ -94,6 +95,7 @@ SbBool Gui::SoFCDB::isInitialized() void Gui::SoFCDB::init() { SoInteraction ::init(); + SoDevicePixelRatioElement ::initClass(); SoGLRenderActionElement ::initClass(); SoFCInteractiveElement ::initClass(); SoGLWidgetElement ::initClass(); diff --git a/src/Gui/StartupProcess.cpp b/src/Gui/StartupProcess.cpp index a8658e745097..0e1a0112094d 100644 --- a/src/Gui/StartupProcess.cpp +++ b/src/Gui/StartupProcess.cpp @@ -107,8 +107,6 @@ void StartupProcess::setupApplication() // compression for tablet events here to solve that. QCoreApplication::setAttribute(Qt::AA_CompressTabletEvents); #endif - // https://forum.freecad.org/viewtopic.php?f=3&t=15540 - QApplication::setAttribute(Qt::AA_DontShowIconsInMenus, false); } void StartupProcess::execute() diff --git a/src/Gui/Stylesheets/FreeCAD Dark.qss b/src/Gui/Stylesheets/FreeCAD Dark.qss index 43f01a0f4eeb..9bb910ffcb53 100644 --- a/src/Gui/Stylesheets/FreeCAD Dark.qss +++ b/src/Gui/Stylesheets/FreeCAD Dark.qss @@ -2366,49 +2366,45 @@ QColumnView::item:!selected:hover { background-color: @ThemeAccentColor1; } -QTableCornerButton::section { - background-color: #444444; - border: 1px transparent #020202; - border-radius: 0px; -} - QTableView::item { color: white; } -QTableView { - /*qproperty-AliasedCellBackgroundColor: #f700ff;*/ - /*qproperty-aliasBgColor: #f700ff;*/ -} /* QHeaderView ------------------------------------------------------------ https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qheaderview --------------------------------------------------------------------------- */ + +QTableCornerButton::section { + background-color: #333333; + border-radius: 0px; /*if you remove this line it breaks it*/ + border-bottom: 1px solid #020202; + border-right: 1px solid #020202; + border-top: 0px solid #020202; + border-left: 0px solid #020202; +} + QHeaderView { background-color: transparent; - /* text-align: bottom; */ + margin: -1px; /* fix for misalignement*/ } QHeaderView:disabled { - /* background-color: #444444; */ color: #adadad; } QHeaderView::section { background-color: qlineargradient(x1:0, y1:0.3, x2:0, y2:1, stop:0 #333333, stop:1 #252525); - color: white; - border-bottom: 1px solid #020202; - border-right: 1px solid #020202; - border-top: 1px solid #020202; - border-left: 1px solid transparent; + color: #ffffff; + padding: 4px; } QHeaderView::section::horizontal { - /* padding-top: 1px; - padding-bottom: 1px; - padding-left: 5px; - padding-right: 0px; */ + border-bottom: 2px solid #020202; + border-right: 0px solid transparent; + border-top: 2px solid #020202; + border-left: 1px solid #020202; } QHeaderView::section::horizontal::first, QHeaderView::section::horizontal::only-one { @@ -2420,11 +2416,16 @@ QHeaderView::section::horizontal:disabled { } QHeaderView::section::vertical { + border-bottom: 0px solid transparent; + border-right: 1px solid #020202; border-top: 1px solid #020202; + border-left: 1px solid #020202; + margin-left: 1px; + margin-right: 1px; } QHeaderView::section::vertical::first, QHeaderView::section::vertical::only-one { - border-top: 2px solid #020202; + /* border-top: 2px solid #020202; */ } QHeaderView::section::vertical:disabled { diff --git a/src/Gui/Stylesheets/FreeCAD Light.qss b/src/Gui/Stylesheets/FreeCAD Light.qss index d9b0defadda2..c30c32c20678 100644 --- a/src/Gui/Stylesheets/FreeCAD Light.qss +++ b/src/Gui/Stylesheets/FreeCAD Light.qss @@ -2363,28 +2363,28 @@ QColumnView::item:!selected:hover { background-color: @ThemeAccentColor1; } -QTableCornerButton::section { - background-color: #d8d8d8; - border: 1px transparent #ababab; - border-radius: 0px; -} - QTableView::item { color: black; } -QTableView { - /*qproperty-AliasedCellBackgroundColor: #f700ff;*/ - /*qproperty-aliasBgColor: #f700ff;*/ -} - /* QHeaderView ------------------------------------------------------------ https://doc.qt.io/qt-5/stylesheet-examples.html#customizing-qheaderview --------------------------------------------------------------------------- */ + +QTableCornerButton::section { + background-color: #f0f0f0; + border-radius: 0px; /*if you remove this line it breaks it*/ + border-bottom: 1px solid #ababab; + border-right: 1px solid #ababab; + border-top: 0px solid #ababab; + border-left: 0px solid #ababab; +} + QHeaderView { background-color: transparent; /* text-align: bottom; */ + margin: -1px; /* fix for misalignement*/ } QHeaderView:disabled { @@ -2395,17 +2395,14 @@ QHeaderView:disabled { QHeaderView::section { background-color: qlineargradient(x1:0, y1:0.3, x2:0, y2:1, stop:0 #f0f0f0, stop:1 #fdfdfd); color: black; - border-bottom: 1px solid #ababab; - border-right: 1px solid #ababab; - border-top: 1px solid #ababab; - border-left: 1px solid transparent; + padding: 4px; } QHeaderView::section::horizontal { - /* padding-top: 1px; - padding-bottom: 1px; - padding-left: 5px; - padding-right: 0px; */ + border-bottom: 2px solid #ababab; + border-right: 0px solid transparent; + border-top: 2px solid #ababab; + border-left: 1px solid #ababab; } QHeaderView::section::horizontal::first, QHeaderView::section::horizontal::only-one { @@ -2417,11 +2414,16 @@ QHeaderView::section::horizontal:disabled { } QHeaderView::section::vertical { + border-bottom: 0px solid transparent; + border-right: 1px solid #ababab; border-top: 1px solid #ababab; + border-left: 1px solid #ababab; + margin-left: 1px; + margin-right: 1px; } QHeaderView::section::vertical::first, QHeaderView::section::vertical::only-one { - border-top: 2px solid #ababab; + /* border-top: 2px solid #ababab; */ } QHeaderView::section::vertical:disabled { diff --git a/src/Gui/TaskView/TaskImage.cpp b/src/Gui/TaskView/TaskImage.cpp index 357c97e353cd..f4110b56c491 100644 --- a/src/Gui/TaskView/TaskImage.cpp +++ b/src/Gui/TaskView/TaskImage.cpp @@ -534,10 +534,10 @@ void InteractiveScale::setDistance(const SbVec3f& pos3d) // Update the displayed distance double factor {}; - QString unitStr; - QString valueStr; + std::string unitStr; + std::string valueStr; valueStr = quantity.getUserString(factor, unitStr); - measureLabel->label->string = SbString(valueStr.toUtf8().constData()); + measureLabel->label->string = SbString(valueStr.c_str()); measureLabel->label->setPoints(getCoordsOnImagePlane(points[0]), getCoordsOnImagePlane(pos3d)); } diff --git a/src/Gui/TextEdit.cpp b/src/Gui/TextEdit.cpp index 79acc4672988..64c7d5698230 100644 --- a/src/Gui/TextEdit.cpp +++ b/src/Gui/TextEdit.cpp @@ -205,6 +205,8 @@ void TextEdit::createListBox() namespace Gui { struct TextEditorP { + bool highlightLine = true; + bool visibleMarker = true; QMap colormap; // Color map TextEditorP() { @@ -265,6 +267,27 @@ TextEditor::~TextEditor() delete d; } +void TextEditor::setVisibleLineNumbers(bool value) +{ + lineNumberArea->setVisible(value); + d->visibleMarker = value; +} + +bool TextEditor::isVisibleLineNumbers() const +{ + return d->visibleMarker; +} + +void TextEditor::setEnabledHighlightCurrentLine(bool value) +{ + d->highlightLine = value; +} + +bool TextEditor::isEnabledHighlightCurrentLine() const +{ + return d->highlightLine; +} + int TextEditor::lineNumberAreaWidth() { return QtTools::horizontalAdvance(fontMetrics(), QLatin1String("0000")) + 10; @@ -272,33 +295,42 @@ int TextEditor::lineNumberAreaWidth() void TextEditor::updateLineNumberAreaWidth(int /* newBlockCount */) { - setViewportMargins(lineNumberAreaWidth(), 0, 0, 0); + int left = isVisibleLineNumbers() ? lineNumberAreaWidth() : 0; + setViewportMargins(left, 0, 0, 0); } void TextEditor::updateLineNumberArea(const QRect &rect, int dy) { - if (dy) - lineNumberArea->scroll(0, dy); - else - lineNumberArea->update(0, rect.y(), lineNumberArea->width(), rect.height()); + if (isVisibleLineNumbers()) { + if (dy) { + lineNumberArea->scroll(0, dy); + } + else { + lineNumberArea->update(0, rect.y(), lineNumberArea->width(), rect.height()); + } - if (rect.contains(viewport()->rect())) - updateLineNumberAreaWidth(0); + if (rect.contains(viewport()->rect())) { + updateLineNumberAreaWidth(0); + } + } } void TextEditor::resizeEvent(QResizeEvent *e) { QPlainTextEdit::resizeEvent(e); - QRect cr = contentsRect(); - lineNumberArea->setGeometry(QRect(cr.left(), cr.top(), lineNumberAreaWidth(), cr.height())); + if (isVisibleLineNumbers()) { + QRect cr = contentsRect(); + int width = lineNumberAreaWidth(); + lineNumberArea->setGeometry(QRect(cr.left(), cr.top(), width, cr.height())); + } } void TextEditor::highlightCurrentLine() { QList extraSelections; - if (!isReadOnly()) { + if (!isReadOnly() && isEnabledHighlightCurrentLine()) { QTextEdit::ExtraSelection selection; QColor lineColor = d->colormap[QLatin1String("Current line highlight")]; unsigned int col = App::Color::asPackedRGB(lineColor); @@ -327,6 +359,9 @@ void TextEditor::drawMarker(int line, int x, int y, QPainter* p) void TextEditor::lineNumberAreaPaintEvent(QPaintEvent *event) { + if (!isVisibleLineNumbers()) { + return; + } QPainter painter(lineNumberArea); //painter.fillRect(event->rect(), Qt::lightGray); @@ -359,12 +394,71 @@ void TextEditor::setSyntaxHighlighter(SyntaxHighlighter* sh) this->highlighter = sh; } -void TextEditor::keyPressEvent (QKeyEvent * e) +/** Sets the font, font size and tab size of the editor. */ +void TextEditor::OnChange(Base::Subject &rCaller,const char* sReason) +{ + Q_UNUSED(rCaller); + ParameterGrp::handle hPrefGrp = getWindowParameter(); + if (strcmp(sReason, "FontSize") == 0 || strcmp(sReason, "Font") == 0) { +#ifdef FC_OS_LINUX + int fontSize = hPrefGrp->GetInt("FontSize", 15); +#else + int fontSize = hPrefGrp->GetInt("FontSize", 10); +#endif + QString fontFamily = QString::fromLatin1(hPrefGrp->GetASCII( "Font", "Courier" ).c_str()); + + QFont font(fontFamily, fontSize); + setFont(font); + lineNumberArea->setFont(font); + } + else { + QMap::Iterator it = d->colormap.find(QString::fromLatin1(sReason)); + if (it != d->colormap.end()) { + QColor color = it.value(); + unsigned int col = App::Color::asPackedRGB(color); + auto value = static_cast(col); + value = hPrefGrp->GetUnsigned(sReason, value); + col = static_cast(value); + color.setRgb((col>>24)&0xff, (col>>16)&0xff, (col>>8)&0xff); + if (this->highlighter) + this->highlighter->setColor(QLatin1String(sReason), color); + } + } + + if (strcmp(sReason, "TabSize") == 0 || strcmp(sReason, "FontSize") == 0) { + int tabWidth = hPrefGrp->GetInt("TabSize", 4); + QFontMetrics metric(font()); + int fontSize = QtTools::horizontalAdvance(metric, QLatin1Char('0')); + setTabStopDistance(tabWidth * fontSize); + } + + // Enables/Disables Line number in the Macro Editor from Edit->Preferences->Editor menu. + if (strcmp(sReason, "EnableLineNumber") == 0) { + int width = 0; + QRect cr = contentsRect(); + if (hPrefGrp->GetBool("EnableLineNumber", true)) { + width = lineNumberAreaWidth(); + } + lineNumberArea->setGeometry(QRect(cr.left(), cr.top(), width, cr.height())); + } +} + +// ------------------------------------------------------------------------------ + +PythonTextEditor::PythonTextEditor(QWidget *parent) + : TextEditor(parent) +{ + +} + +PythonTextEditor::~PythonTextEditor() = default; + +void PythonTextEditor::keyPressEvent (QKeyEvent * e) { if ( e->key() == Qt::Key_Tab ) { ParameterGrp::handle hPrefGrp = getWindowParameter(); + bool space = hPrefGrp->GetBool("Spaces", true); int indent = hPrefGrp->GetInt( "IndentSize", 4 ); - bool space = hPrefGrp->GetBool( "Spaces", false ); QString ch = space ? QString(indent, QLatin1Char(' ')) : QString::fromLatin1("\t"); @@ -389,7 +483,7 @@ void TextEditor::keyPressEvent (QKeyEvent * e) break; // end of selection reached cursor.setPosition(block.position()); cursor.insertText(ch); - selEnd += ch.length(); + selEnd += ch.length(); } } @@ -442,78 +536,10 @@ void TextEditor::keyPressEvent (QKeyEvent * e) return; } - TextEdit::keyPressEvent( e ); + TextEditor::keyPressEvent( e ); } -/** Sets the font, font size and tab size of the editor. */ -void TextEditor::OnChange(Base::Subject &rCaller,const char* sReason) -{ - Q_UNUSED(rCaller); - ParameterGrp::handle hPrefGrp = getWindowParameter(); - if (strcmp(sReason, "FontSize") == 0 || strcmp(sReason, "Font") == 0) { -#ifdef FC_OS_LINUX - int fontSize = hPrefGrp->GetInt("FontSize", 15); -#else - int fontSize = hPrefGrp->GetInt("FontSize", 10); -#endif - QString fontFamily = QString::fromLatin1(hPrefGrp->GetASCII( "Font", "Courier" ).c_str()); - QFont font(fontFamily, fontSize); - setFont(font); - lineNumberArea->setFont(font); - } - else { - QMap::Iterator it = d->colormap.find(QString::fromLatin1(sReason)); - if (it != d->colormap.end()) { - QColor color = it.value(); - unsigned int col = App::Color::asPackedRGB(color); - auto value = static_cast(col); - value = hPrefGrp->GetUnsigned(sReason, value); - col = static_cast(value); - color.setRgb((col>>24)&0xff, (col>>16)&0xff, (col>>8)&0xff); - if (this->highlighter) - this->highlighter->setColor(QLatin1String(sReason), color); - } - } - - if (strcmp(sReason, "TabSize") == 0 || strcmp(sReason, "FontSize") == 0) { - int tabWidth = hPrefGrp->GetInt("TabSize", 4); - QFontMetrics metric(font()); - int fontSize = QtTools::horizontalAdvance(metric, QLatin1Char('0')); -#if QT_VERSION < QT_VERSION_CHECK(5, 10, 0) - setTabStopWidth(tabWidth * fontSize); -#else - setTabStopDistance(tabWidth * fontSize); -#endif - } - - // Enables/Disables Line number in the Macro Editor from Edit->Preferences->Editor menu. - if (strcmp(sReason, "EnableLineNumber") == 0) { - QRect cr = contentsRect(); - bool show = hPrefGrp->GetBool("EnableLineNumber", true); - if(show) - lineNumberArea->setGeometry(QRect(cr.left(), cr.top(), lineNumberAreaWidth(), cr.height())); - else - lineNumberArea->setGeometry(QRect(cr.left(), cr.top(), 0, cr.height())); - } - - if (strcmp(sReason, "EnableBlockCursor") == 0 || - strcmp(sReason, "FontSize") == 0 || - strcmp(sReason, "Font") == 0) { - bool block = hPrefGrp->GetBool("EnableBlockCursor", false); - if (block) - setCursorWidth(QFontMetrics(font()).averageCharWidth()); - else - setCursorWidth(1); - } -} - -void TextEditor::paintEvent (QPaintEvent * e) -{ - TextEdit::paintEvent( e ); -} - -// ------------------------------------------------------------------------------ LineMarker::LineMarker(TextEditor* editor) : QWidget(editor), textEditor(editor) diff --git a/src/Gui/TextEdit.h b/src/Gui/TextEdit.h index c1ceb49a10f5..87e0bce5cf02 100644 --- a/src/Gui/TextEdit.h +++ b/src/Gui/TextEdit.h @@ -93,8 +93,13 @@ class GuiExport TextEditor : public TextEdit, public WindowParameter void OnChange(Base::Subject &rCaller,const char* rcReason) override; + /** Draw a beam in the line where the cursor is. */ void lineNumberAreaPaintEvent(QPaintEvent* ); int lineNumberAreaWidth(); + void setVisibleLineNumbers(bool value); + bool isVisibleLineNumbers() const; + void setEnabledHighlightCurrentLine(bool value); + bool isEnabledHighlightCurrentLine() const; private Q_SLOTS: void updateLineNumberAreaWidth(int newBlockCount); @@ -102,9 +107,6 @@ private Q_SLOTS: void highlightCurrentLine(); protected: - void keyPressEvent (QKeyEvent * e) override; - /** Draw a beam in the line where the cursor is. */ - void paintEvent (QPaintEvent * e) override; void resizeEvent(QResizeEvent* e) override; QWidget* getMarker() const { return lineNumberArea; } @@ -118,6 +120,22 @@ private Q_SLOTS: friend class SyntaxHighlighter; }; +/** subclass of TextEditor that serves as base class for the + * python editor and the python console where we handle + * the tab key conversion to spaces, depending on user settings + */ +class GuiExport PythonTextEditor : public TextEditor +{ + Q_OBJECT +public: + explicit PythonTextEditor(QWidget *parent = nullptr); + ~PythonTextEditor() override; + +protected: + void keyPressEvent(QKeyEvent *) override; +}; + + class LineMarker : public QWidget { Q_OBJECT diff --git a/src/Gui/Tree.cpp b/src/Gui/Tree.cpp index 2558afa57ca5..655fd41dc646 100644 --- a/src/Gui/Tree.cpp +++ b/src/Gui/Tree.cpp @@ -620,7 +620,6 @@ TreeWidget::TreeWidget(const char* name, QWidget* parent) this->setDragEnabled(true); this->setAcceptDrops(true); - this->setDragDropMode(QTreeWidget::InternalMove); this->setColumnCount(3); this->setItemDelegate(new TreeWidgetItemDelegate(this)); this->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding); @@ -748,6 +747,7 @@ TreeWidget::TreeWidget(const char* name, QWidget* parent) setColumnHidden(1, TreeParams::getHideColumn()); setColumnHidden(2, TreeParams::getHideInternalNames()); header()->setVisible(!TreeParams::getHideColumn() || !TreeParams::getHideInternalNames()); + TreeParams::onFontSizeChanged(); } TreeWidget::~TreeWidget() diff --git a/src/Gui/View3DInventor.cpp b/src/Gui/View3DInventor.cpp index 0b134306347c..d56e71743572 100644 --- a/src/Gui/View3DInventor.cpp +++ b/src/Gui/View3DInventor.cpp @@ -47,9 +47,11 @@ # include # include # include +# include #endif #include +#include #include #include #include @@ -70,8 +72,10 @@ #include "View3DInventorViewer.h" #include "View3DPy.h" #include "ViewProvider.h" +#include "ViewProviderDocumentObject.h" #include "WaitCursor.h" +#include "Utilities.h" using namespace Gui; @@ -773,6 +777,97 @@ void View3DInventor::setCurrentViewMode(ViewMode newmode) } } +RayPickInfo View3DInventor::getObjInfoRay(Base::Vector3d* startvec, Base::Vector3d* dirvec) +{ + double vsx, vsy, vsz; + double vdx, vdy, vdz; + vsx = startvec->x; + vsy = startvec->y; + vsz = startvec->z; + vdx = dirvec->x; + vdy = dirvec->y; + vdz = dirvec->z; + // near plane clipping is required to avoid false intersections + float nearClippingPlane = 0.1; + + RayPickInfo ret = {false, + Base::Vector3d(), + "", + "", + std::nullopt, + std::nullopt, + std::nullopt}; + SoRayPickAction action(getViewer()->getSoRenderManager()->getViewportRegion()); + action.setRay(SbVec3f(vsx, vsy, vsz), SbVec3f(vdx, vdy, vdz), nearClippingPlane); + action.apply(getViewer()->getSoRenderManager()->getSceneGraph()); + SoPickedPoint* Point = action.getPickedPoint(); + + if (!Point) { + return ret; + } + + ret.point = Base::convertTo(Point->getPoint()); + ViewProvider* vp = getViewer()->getViewProviderByPath(Point->getPath()); + if (vp && vp->isDerivedFrom(ViewProviderDocumentObject::getClassTypeId())) { + if (!vp->isSelectable()) { + return ret; + } + auto vpd = static_cast(vp); + if (vp->useNewSelectionModel()) { + std::string subname; + if (!vp->getElementPicked(Point, subname)) { + return ret; + } + auto obj = vpd->getObject(); + if (!obj) { + return ret; + } + if (!subname.empty()) { + App::ElementNamePair elementName; + auto sobj = App::GeoFeature::resolveElement(obj, subname.c_str(), elementName); + if (!sobj) { + return ret; + } + if (sobj != obj) { + ret.parentObject = obj->getExportName(); + ret.subName = subname; + obj = sobj; + } + subname = !elementName.oldName.empty() ? elementName.oldName : elementName.newName; + } + ret.document = obj->getDocument()->getName(); + ret.object = obj->getNameInDocument(); + ret.component = subname; + ret.isValid = true; + } + else { + ret.document = vpd->getObject()->getDocument()->getName(); + ret.object = vpd->getObject()->getNameInDocument(); + // search for a SoFCSelection node + SoFCDocumentObjectAction objaction; + objaction.apply(Point->getPath()); + if (objaction.isHandled()) { + ret.component = objaction.componentName.getString(); + } + } + // ok, found the node of interest + ret.isValid = true; + } + else { + // custom nodes not in a VP: search for a SoFCSelection node + SoFCDocumentObjectAction objaction; + objaction.apply(Point->getPath()); + if (objaction.isHandled()) { + ret.document = objaction.documentName.getString(); + ret.object = objaction.objectName.getString(); + ret.component = objaction.componentName.getString(); + // ok, found the node of interest + ret.isValid = true; + } + } + return ret; +} + bool View3DInventor::eventFilter(QObject* watched, QEvent* e) { // As long as this widget is a top-level window (either in 'TopLevel' or 'FullScreen' mode) we diff --git a/src/Gui/View3DInventor.h b/src/Gui/View3DInventor.h index 3bfe2b237ad9..e02d49a54b28 100644 --- a/src/Gui/View3DInventor.h +++ b/src/Gui/View3DInventor.h @@ -24,6 +24,7 @@ #define GUI_VIEW3DINVENTOR_H #include +#include #include #include @@ -31,6 +32,7 @@ #include "MDIView.h" +#include "Base/Vector3D.h" class QPrinter; class QStackedWidget; @@ -43,6 +45,16 @@ class View3DPy; class View3DSettings; class NaviCubeSettings; +struct RayPickInfo +{ + bool isValid; + Base::Vector3d point; + std::string document; + std::string object; + std::optional parentObject; + std::optional component; + std::optional subName; +}; class GuiExport GLOverlayWidget : public QWidget { Q_OBJECT @@ -98,6 +110,8 @@ class GuiExport View3DInventor : public MDIView * GL widget to get all key events in \a TopLevel or \a Fullscreen mode. */ void setCurrentViewMode(ViewMode b) override; + RayPickInfo getObjInfoRay(Base::Vector3d* startvec, + Base::Vector3d* dirvec); bool setCamera(const char* pCamera); void toggleClippingPlane(); bool hasClippingPlane() const; diff --git a/src/Gui/View3DInventorViewer.cpp b/src/Gui/View3DInventorViewer.cpp index 3a4b9cea2fc0..72d2515be543 100644 --- a/src/Gui/View3DInventorViewer.cpp +++ b/src/Gui/View3DInventorViewer.cpp @@ -35,6 +35,8 @@ # include # endif +# include + # include # include # include @@ -107,6 +109,7 @@ #include "NaviCube.h" #include "NavigationStyle.h" #include "Selection.h" +#include "SoDevicePixelRatioElement.h" #include "SoFCDB.h" #include "SoFCInteractiveElement.h" #include "SoFCOffscreenRenderer.h" @@ -2360,6 +2363,7 @@ void View3DInventorViewer::renderScene() // Render our scenegraph with the image. SoGLRenderAction* glra = this->getSoRenderManager()->getGLRenderAction(); SoState* state = glra->getState(); + SoDevicePixelRatioElement::set(state, devicePixelRatio()); SoGLWidgetElement::set(state, qobject_cast(this->getGLWidget())); SoGLRenderActionElement::set(state, glra); SoGLVBOActivatedElement::set(state, this->vboEnabled); @@ -2508,7 +2512,7 @@ void View3DInventorViewer::printDimension() const float fWidth = -1.0; getDimensions(fHeight, fWidth); - QString dim; + std::string dim; if (fWidth >= 0.0 && fHeight >= 0.0) { // Translate screen units into user's unit schema @@ -2516,14 +2520,14 @@ void View3DInventorViewer::printDimension() const Base::Quantity qHeight(Base::Quantity::MilliMetre); qWidth.setValue(fWidth); qHeight.setValue(fHeight); - QString wStr = Base::UnitsApi::schemaTranslate(qWidth); - QString hStr = Base::UnitsApi::schemaTranslate(qHeight); + auto wStr = Base::UnitsApi::schemaTranslate(qWidth); + auto hStr = Base::UnitsApi::schemaTranslate(qHeight); // Create final string and update window - dim = QString::fromLatin1("%1 x %2").arg(wStr, hStr); + dim = fmt::format("{} x {}", wStr, hStr); } - getMainWindow()->setPaneText(2, dim); + getMainWindow()->setPaneText(2, QString::fromStdString(dim)); } void View3DInventorViewer::selectAll() diff --git a/src/Gui/View3DPy.cpp b/src/Gui/View3DPy.cpp index e2e73772a5c6..41eae0c32e79 100644 --- a/src/Gui/View3DPy.cpp +++ b/src/Gui/View3DPy.cpp @@ -158,6 +158,14 @@ void View3DInventorPy::init_type() "\n" "Does the same as getObjectInfo() but returns a list of dictionaries or None.\n"); add_noargs_method("getSize",&View3DInventorPy::getSize,"getSize()"); + add_varargs_method("getObjectInfoRay",&View3DInventorPy::getObjectInfoRay, + "getObjectInfoRay(tuple(3D vector,3D vector) or tuple of 6 floats) -> dictionary or None\n" + "\n" + "Vectors represent start point and direction of intersection ray\n" + "Return a dictionary with the name of document, object and component. The\n" + "dictionary also contains the coordinates of the appropriate 3d point of\n" + "the underlying geometry in the scenegraph.\n" + "If no geometry was found 'None' is returned, instead.\n"); add_varargs_method("getPoint",&View3DInventorPy::getPointOnFocalPlane, "Same as getPointOnFocalPlane"); add_varargs_method("getPointOnFocalPlane",&View3DInventorPy::getPointOnFocalPlane, @@ -1501,6 +1509,54 @@ Py::Object View3DInventorPy::getObjectsInfo(const Py::Tuple& args) } } +Py::Object View3DInventorPy::getObjectInfoRay(const Py::Tuple& args) +{ + PyObject* vs; + PyObject* vd; + double vsx, vsy, vsz; + double vdx, vdy, vdz; + Py::Object ret = Py::None(); + if (PyArg_ParseTuple(args.ptr(), + "O!O!", + &Base::VectorPy::Type, + &vs, + &Base::VectorPy::Type, + &vd)) { + Base::Vector3d* startvec = static_cast(vs)->getVectorPtr(); + Base::Vector3d* dirvec = static_cast(vd)->getVectorPtr(); + try { + RayPickInfo pinfo = getView3DIventorPtr()->getObjInfoRay(startvec, dirvec); + if (!pinfo.isValid) { + return ret; + } + Py::Dict dict; + dict.setItem("PickedPoint", Py::asObject(new Base::VectorPy(pinfo.point))); + dict.setItem("Document", Py::String(pinfo.document)); + dict.setItem("Object", Py::String(pinfo.object)); + if (pinfo.parentObject) { + dict.setItem("ParentObject", Py::String(pinfo.parentObject.value())); + } + if (pinfo.component) { + dict.setItem("Component", Py::String(pinfo.component.value())); + } + if (pinfo.subName) { + dict.setItem("SubName", Py::String(pinfo.subName.value())); + } + ret = dict; + } + catch (const Py::Exception&) { + throw; + } + } + else { + PyErr_Clear(); + if (!PyArg_ParseTuple(args.ptr(), "dddddd", &vsx, &vsy, &vsz, &vdx, &vdy, &vdz)) { + throw Py::TypeError("Wrong arguments, two Vectors or six floats expected"); + } + } + return ret; +} + Py::Object View3DInventorPy::getSize() { try { diff --git a/src/Gui/View3DPy.h b/src/Gui/View3DPy.h index 2a63dc7d045c..08ad8aa07e93 100644 --- a/src/Gui/View3DPy.h +++ b/src/Gui/View3DPy.h @@ -95,6 +95,7 @@ class View3DInventorPy : public Py::PythonExtension Py::Object getObjectInfo(const Py::Tuple&); Py::Object getObjectsInfo(const Py::Tuple&); Py::Object getSize(); + Py::Object getObjectInfoRay(const Py::Tuple&); Py::Object getPointOnFocalPlane(const Py::Tuple&); Py::Object projectPointToLine(const Py::Tuple&); Py::Object getPointOnViewport(const Py::Tuple&); diff --git a/src/Gui/ViewProviderCoordinateSystem.cpp b/src/Gui/ViewProviderCoordinateSystem.cpp index 15c686a0239d..2d57a94c8e35 100644 --- a/src/Gui/ViewProviderCoordinateSystem.cpp +++ b/src/Gui/ViewProviderCoordinateSystem.cpp @@ -26,6 +26,8 @@ #ifndef _PreComp_ # include # include +# include +# include #endif #include @@ -95,7 +97,7 @@ void ViewProviderCoordinateSystem::setDisplayMode(const char* ModeName) ViewProviderDocumentObject::setDisplayMode(ModeName); } -void ViewProviderCoordinateSystem::setTemporaryVisibility(bool axis, bool plane) { +void ViewProviderCoordinateSystem::setTemporaryVisibility(bool axis, bool plane, bool points) { auto origin = static_cast( getObject() ); bool saveState = tempVisMap.empty(); @@ -135,7 +137,7 @@ void ViewProviderCoordinateSystem::setTemporaryVisibility(bool axis, bool plane) if (saveState) { tempVisMap[vp] = vp->isVisible(); } - vp->setVisible(plane); + vp->setVisible(points); } } @@ -168,6 +170,45 @@ bool ViewProviderCoordinateSystem::isTemporaryVisibility() { return !tempVisMap.empty(); } +void ViewProviderCoordinateSystem::setPlaneLabelVisibility(bool val) +{ + auto lcs = getObject(); + for (auto* plane : lcs->planes()) { + auto* vp = dynamic_cast( + Gui::Application::Instance->getViewProvider(plane)); + if (vp) { + vp->setLabelVisibility(val); + } + } + +} + +void ViewProviderCoordinateSystem::setTemporaryScale(double factor) +{ + auto lcs = getObject(); + auto& objs = lcs->OriginFeatures.getValues(); + for (auto* obj : objs) { + auto* vp = dynamic_cast( + Gui::Application::Instance->getViewProvider(obj)); + if (vp) { + vp->setTemporaryScale(factor); + } + } +} + +void ViewProviderCoordinateSystem::resetTemporarySize() +{ + auto lcs = getObject(); + auto& objs = lcs->OriginFeatures.getValues(); + for (auto* obj : objs) { + auto* vp = dynamic_cast( + Gui::Application::Instance->getViewProvider(obj)); + if (vp) { + vp->resetTemporarySize(); + } + } +} + void ViewProviderCoordinateSystem::updateData(const App::Property* prop) { auto* jcs = dynamic_cast(getObject()); if(jcs) { @@ -179,7 +220,7 @@ void ViewProviderCoordinateSystem::updateData(const App::Property* prop) { } bool ViewProviderCoordinateSystem::onDelete(const std::vector &) { - auto lcs = static_cast(getObject()); + auto lcs = getObject(); auto origin = dynamic_cast(lcs); if (origin && !origin->getInList().empty()) { diff --git a/src/Gui/ViewProviderCoordinateSystem.h b/src/Gui/ViewProviderCoordinateSystem.h index 02a392d4e1b4..1f812a5a6603 100644 --- a/src/Gui/ViewProviderCoordinateSystem.h +++ b/src/Gui/ViewProviderCoordinateSystem.h @@ -60,13 +60,18 @@ class GuiExport ViewProviderCoordinateSystem : public ViewProviderGeoFeatureGrou */ ///@{ /// Set temporary visibility of some of origin's objects e.g. while rotating or mirroring - void setTemporaryVisibility (bool axis, bool planes); + void setTemporaryVisibility (bool axis, bool planes, bool points = false); /// Returns true if the origin in temporary visibility mode bool isTemporaryVisibility (); /// Reset the visibility void resetTemporaryVisibility (); ///@} + void setTemporaryScale(double factor); + void resetTemporarySize(); + + void setPlaneLabelVisibility(bool val); + bool canDragObjects() const override { return false; } diff --git a/src/Gui/ViewProviderDatum.cpp b/src/Gui/ViewProviderDatum.cpp index 8195d9c242cd..c4714c9c6ee5 100644 --- a/src/Gui/ViewProviderDatum.cpp +++ b/src/Gui/ViewProviderDatum.cpp @@ -23,7 +23,6 @@ #include "PreCompiled.h" #ifndef _PreComp_ -# include # include # include # include @@ -60,17 +59,12 @@ ViewProviderDatum::ViewProviderDatum() { pRoot = new SoSeparator(); pRoot->ref(); - // Create the Label node - pLabel = new SoText2(); - pLabel->ref(); - lineThickness = 2.0; } ViewProviderDatum::~ViewProviderDatum() { pRoot->unref(); - pLabel->unref(); } @@ -78,7 +72,6 @@ void ViewProviderDatum::attach(App::DocumentObject* pcObject) { ViewProviderGeometryObject::attach(pcObject); - float defaultSz = ViewProviderCoordinateSystem::defaultSize(); // Create an external separator auto sep = new SoSeparator(); @@ -93,8 +86,8 @@ void ViewProviderDatum::attach(App::DocumentObject* pcObject) // Setup font size auto font = new SoFont(); - float fontRatio = 4.0f; - font->size.setValue(defaultSz / fontRatio); + static const float size = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/View")->GetFloat("DatumFontSize", 15.0); + font->size.setValue(size); sep->addChild(font); // Create the selection node @@ -107,13 +100,15 @@ void ViewProviderDatum::attach(App::DocumentObject* pcObject) highlight->documentName = getObject()->getDocument()->getName(); highlight->style = SoFCSelection::EMISSIVE_DIFFUSE; + // Visible features + auto visible = new SoSeparator(); // Style for normal (visible) lines auto style = new SoDrawStyle(); style->lineWidth = lineThickness; - highlight->addChild(style); + visible->addChild(style); // Visible lines - highlight->addChild(pRoot); + visible->addChild(pRoot); // Hidden features auto hidden = new SoAnnotation(); @@ -127,23 +122,32 @@ void ViewProviderDatum::attach(App::DocumentObject* pcObject) // Hidden lines hidden->addChild(pRoot); - highlight->addChild(hidden); + visible->addChild(hidden); + + sep->addChild(visible); + + soScale->setPart("shape", sep); + resetTemporarySize(); + + highlight->addChild(soScale); - sep->addChild(highlight); + addDisplayMaskMode(highlight, "Base"); +} +void ViewProviderDatum::setTemporaryScale(double factor) +{ + soScale->scaleFactor = soScale->scaleFactor.getValue() * factor; +} - // Scale feature to the given size +void ViewProviderDatum::resetTemporarySize() +{ float sz = App::GetApplication() .GetParameterGroupByPath("User parameter:BaseApp/Preferences/View") - ->GetFloat("LocalCoordinateSystemSize", 2.0); // NOLINT + ->GetFloat("LocalCoordinateSystemSize", 1.0); // NOLINT - soScale->setPart("shape", sep); soScale->scaleFactor = sz; - - addDisplayMaskMode(soScale, "Base"); } - void ViewProviderDatum::onChanged(const App::Property* prop) { ViewProviderGeometryObject::onChanged(prop); } diff --git a/src/Gui/ViewProviderDatum.h b/src/Gui/ViewProviderDatum.h index 857037ae286c..6ae24abae33b 100644 --- a/src/Gui/ViewProviderDatum.h +++ b/src/Gui/ViewProviderDatum.h @@ -25,7 +25,6 @@ #include "ViewProviderGeometryObject.h" -class SoText2; class SoScale; namespace Gui @@ -44,10 +43,7 @@ namespace Gui ~ViewProviderDatum() override; /// Get point derived classes will add their specific stuff - SoSeparator* getRoot() { return pRoot; } - - /// Get pointer to the text label associated with the feature - SoText2* getLabel() { return pLabel; } + SoSeparator* getDatumRoot() const { return pRoot; } void attach(App::DocumentObject*) override; std::vector getDisplayModes() const override; @@ -63,13 +59,15 @@ namespace Gui { } ///@} + void setTemporaryScale(double factor); + void resetTemporarySize(); + protected: void onChanged(const App::Property* prop) override; bool onDelete(const std::vector&) override; protected: SoSeparator* pRoot; SoShapeScale* soScale; - SoText2* pLabel; double lineThickness; }; diff --git a/src/Gui/ViewProviderLine.cpp b/src/Gui/ViewProviderLine.cpp index a3d99cf640fb..d2e2482c329d 100644 --- a/src/Gui/ViewProviderLine.cpp +++ b/src/Gui/ViewProviderLine.cpp @@ -25,7 +25,6 @@ #ifndef _PreComp_ # include -# include # include # include # include @@ -48,6 +47,8 @@ PROPERTY_SOURCE(Gui::ViewProviderLine, Gui::ViewProviderDatum) ViewProviderLine::ViewProviderLine() { sPixmap = "Std_Axis"; + + pLabel = new SoText2(); } ViewProviderLine::~ViewProviderLine() = default; @@ -63,38 +64,38 @@ void ViewProviderLine::attach(App::DocumentObject *obj) { if (strncmp(name, axisRoles[0], strlen(axisRoles[0])) == 0) { // X-axis: red ShapeAppearance.setDiffuseColor(ViewParams::instance()->getAxisXColor()); - pLabel->string.setValue(SbString("X")); + pLabel->string.setValue("X"); } else if (strncmp(name, axisRoles[1], strlen(axisRoles[1])) == 0) { // Y-axis: green ShapeAppearance.setDiffuseColor(ViewParams::instance()->getAxisYColor()); - pLabel->string.setValue(SbString("Y")); + pLabel->string.setValue("Y"); } else if (strncmp(name, axisRoles[2], strlen(axisRoles[2])) == 0) { // Z-axis: blue ShapeAppearance.setDiffuseColor(ViewParams::instance()->getAxisZColor()); - pLabel->string.setValue(SbString("Z")); + pLabel->string.setValue("Z"); } else { noRole = true; } - static const float size = ViewProviderCoordinateSystem::defaultSize(); + static const float size = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/View")->GetFloat("DatumLineSize", 70.0); SbVec3f verts[2]; if (noRole) { - verts[0] = SbVec3f(2 * size, 0, 0); + verts[0] = SbVec3f(0, 0, 2 * size); verts[1] = SbVec3f(0, 0, 0); } else { - verts[0] = SbVec3f(size, 0, 0); - verts[1] = SbVec3f(0.2 * size, 0, 0); + verts[0] = SbVec3f(0, 0, size); + verts[1] = SbVec3f(0, 0, 0.2 * size); } // indexes used to create the edges static const int32_t lines[4] = { 0, 1, -1 }; - SoSeparator *sep = getRoot(); + SoSeparator *sep = getDatumRoot(); auto pCoords = new SoCoordinate3 (); pCoords->point.setNum (2); @@ -107,12 +108,12 @@ void ViewProviderLine::attach(App::DocumentObject *obj) { sep->addChild ( pLines ); auto textTranslation = new SoTranslation (); - textTranslation->translation.setValue ( SbVec3f ( size * 1.1, 0, 0 ) ); + textTranslation->translation.setValue(SbVec3f(0, 0, size * 1.1)); sep->addChild ( textTranslation ); auto ps = new SoPickStyle(); ps->style.setValue(SoPickStyle::SHAPE_ON_TOP); sep->addChild(ps); - sep->addChild ( getLabel () ); + sep->addChild (pLabel); } diff --git a/src/Gui/ViewProviderLine.h b/src/Gui/ViewProviderLine.h index 7a9c8f508583..614299c304ed 100644 --- a/src/Gui/ViewProviderLine.h +++ b/src/Gui/ViewProviderLine.h @@ -27,6 +27,8 @@ #include "ViewProviderDatum.h" +class SoText2; + namespace Gui { @@ -38,6 +40,9 @@ class GuiExport ViewProviderLine : public ViewProviderDatum { ~ViewProviderLine() override; void attach ( App::DocumentObject * ) override; + +protected: + CoinPtr pLabel; }; } //namespace Gui diff --git a/src/Gui/ViewProviderPlane.cpp b/src/Gui/ViewProviderPlane.cpp index 7c567e4505de..b11c95c68bbf 100644 --- a/src/Gui/ViewProviderPlane.cpp +++ b/src/Gui/ViewProviderPlane.cpp @@ -24,7 +24,6 @@ #include "PreCompiled.h" #ifndef _PreComp_ -# include # include # include # include @@ -34,6 +33,7 @@ # include # include # include +# include # include #endif @@ -53,6 +53,8 @@ ViewProviderPlane::ViewProviderPlane() { sPixmap = "Std_Plane"; lineThickness = 1.0; + + pLabel = new SoAsciiText(); } ViewProviderPlane::~ViewProviderPlane() = default; @@ -60,44 +62,31 @@ ViewProviderPlane::~ViewProviderPlane() = default; void ViewProviderPlane::attach(App::DocumentObject * obj) { ViewProviderDatum::attach(obj); - const char* name = pcObject->getNameInDocument(); + std::string role = getRole(); + + SoSeparator* sep = getDatumRoot(); // Setup colors + // Can't use transparency because of https://github.com/FreeCAD/FreeCAD/issues/18395 + // When this issue is fixed then we can use the below and remove the material here + // and faceSeparator... + //ShapeAppearance.setTransparency(0.8); auto material = new SoMaterial(); - SbColor color; material->transparency.setValue(0.95f); - float alpha = 0.0f; - float lineTransparency = 0.5; - bool noRole = false; - auto planesRoles = App::LocalCoordinateSystem::PlaneRoles; - if (strncmp(name, planesRoles[0], strlen(planesRoles[0])) == 0) { - // XY-axis: blue - ShapeAppearance.setDiffuseColor(ViewParams::instance()->getAxisZColor()); - ShapeAppearance.setTransparency(lineTransparency); - color.setPackedValue(ViewParams::instance()->getAxisZColor(), alpha); - } - else if (strncmp(name, planesRoles[1], strlen(planesRoles[1])) == 0) { - // XZ-axis: green - ShapeAppearance.setDiffuseColor(ViewParams::instance()->getAxisYColor()); - ShapeAppearance.setTransparency(lineTransparency); - color.setPackedValue(ViewParams::instance()->getAxisYColor(), alpha); - } - else if (strncmp(name, planesRoles[2], strlen(planesRoles[2])) == 0) { - // YZ-axis: red - ShapeAppearance.setDiffuseColor(ViewParams::instance()->getAxisXColor()); - ShapeAppearance.setTransparency(lineTransparency); - color.setPackedValue(ViewParams::instance()->getAxisXColor(), alpha); - } - else { - noRole = true; + if (!role.empty()) { + ShapeAppearance.setDiffuseColor(getColor(role)); + SbColor color; + float alpha = 0.0f; + color.setPackedValue(getColor(role), alpha); + material->ambientColor.setValue(color); + material->diffuseColor.setValue(color); } - static const float size = ViewProviderCoordinateSystem::defaultSize() * 0.6; //NOLINT + static const float size = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/View")->GetFloat("DatumPlaneSize", 40.0); static const float startSize = 0.25 * size; //NOLINT - SbVec3f verts[4]; - if (noRole) { + if (role.empty()) { verts[0] = SbVec3f(size, size, 0); verts[1] = SbVec3f(size, -size, 0); verts[2] = SbVec3f(-size, -size, 0); @@ -110,29 +99,27 @@ void ViewProviderPlane::attach(App::DocumentObject * obj) { verts[3] = SbVec3f(startSize, size, 0); } - - // indexes used to create the edges - static const int32_t lines[6] = { 0, 1, 2, 3, 0, -1 }; - - SoSeparator* sep = getRoot(); - auto pCoords = new SoCoordinate3(); pCoords->point.setNum(4); pCoords->point.setValues(0, 4, verts); sep->addChild(pCoords); + auto lineSeparator = new SoSeparator(); auto pLines = new SoIndexedLineSet(); + static const int32_t lines[6] = { 0, 1, 2, 3, 0, -1 }; pLines->coordIndex.setNum(6); pLines->coordIndex.setValues(0, 6, lines); - sep->addChild(pLines); + + auto ps = new SoPickStyle(); + ps->style.setValue(SoPickStyle::SHAPE_ON_TOP); + lineSeparator->addChild(ps); + lineSeparator->addChild(pLines); + sep->addChild(lineSeparator); // add semi transparent face auto faceSeparator = new SoSeparator(); sep->addChild(faceSeparator); - - material->ambientColor.setValue(color); - material->diffuseColor.setValue(color); faceSeparator->addChild(material); // disable backface culling and render with two-sided lighting @@ -141,19 +128,75 @@ void ViewProviderPlane::attach(App::DocumentObject * obj) { shapeHints->shapeType = SoShapeHints::UNKNOWN_SHAPE_TYPE; faceSeparator->addChild(shapeHints); - auto pickStyle = new SoPickStyle(); - pickStyle->style = SoPickStyle::SHAPE_ON_TOP; - faceSeparator->addChild(pickStyle); - auto faceSet = new SoFaceSet(); auto vertexProperty = new SoVertexProperty(); vertexProperty->vertex.setValues(0, 4, verts); faceSet->vertexProperty.setValue(vertexProperty); faceSeparator->addChild(faceSet); - auto ps = new SoPickStyle(); - ps->style.setValue(SoPickStyle::BOUNDING_BOX); - sep->addChild(ps); + auto textTranslation = new SoTranslation(); + SbVec3f centeringVec = size * SbVec3f(0.36, 0.49, 0); // NOLINT + textTranslation->translation.setValue(centeringVec); + sep->addChild(textTranslation); + + pLabel->string.setValue(getLabelText(role).c_str()); - sep->addChild(getLabel()); + labelSwitch = new SoSwitch(); + setLabelVisibility(false); + labelSwitch->addChild(pLabel); + sep->addChild(labelSwitch); +} + +void ViewProviderPlane::setLabelVisibility(bool val) +{ + labelSwitch->whichChild = val ? SO_SWITCH_ALL : SO_SWITCH_NONE; } + +unsigned long ViewProviderPlane::getColor(std::string& role) +{ + auto planesRoles = App::LocalCoordinateSystem::PlaneRoles; + if (role == planesRoles[0]) { + return ViewParams::instance()->getAxisZColor(); // XY-plane + } + else if (role == planesRoles[1]) { + return ViewParams::instance()->getAxisYColor(); // XZ-plane + } + else if (role == planesRoles[2]) { + return ViewParams::instance()->getAxisXColor(); // YZ-plane + } + return 0; +} + +std::string ViewProviderPlane::getLabelText(std::string& role) +{ + std::string text; + auto planesRoles = App::LocalCoordinateSystem::PlaneRoles; + if (role == planesRoles[0]) { + text = "XY"; + } + else if (role == planesRoles[1]) { + text = "XZ"; + } + else if (role == planesRoles[2]) { + text = "YZ"; + } + return text; +} + +std::string ViewProviderPlane::getRole() +{ + // Note: Role property of App::Plane is not set yet when attaching. + const char* name = pcObject->getNameInDocument(); + auto planesRoles = App::LocalCoordinateSystem::PlaneRoles; + if (strncmp(name, planesRoles[0], strlen(planesRoles[0])) == 0) { + return planesRoles[0]; + } + else if (strncmp(name, planesRoles[1], strlen(planesRoles[1])) == 0) { + return planesRoles[1]; + } + else if (strncmp(name, planesRoles[2], strlen(planesRoles[2])) == 0) { + return planesRoles[2]; + } + + return ""; +} \ No newline at end of file diff --git a/src/Gui/ViewProviderPlane.h b/src/Gui/ViewProviderPlane.h index f1daecf4327c..eeb142a9ceca 100644 --- a/src/Gui/ViewProviderPlane.h +++ b/src/Gui/ViewProviderPlane.h @@ -27,6 +27,9 @@ #include "ViewProviderDatum.h" +class SoSwitch; +class SoAsciiText; + namespace Gui { @@ -38,7 +41,16 @@ class GuiExport ViewProviderPlane : public ViewProviderDatum ViewProviderPlane(); ~ViewProviderPlane() override; - void attach ( App::DocumentObject * ) override; + void attach (App::DocumentObject*) override; + + unsigned long getColor(std::string& role); + std::string getRole(); + std::string getLabelText(std::string& role); + void setLabelVisibility(bool val); + +private: + CoinPtr labelSwitch; + CoinPtr pLabel; }; } //namespace Gui diff --git a/src/Gui/ViewProviderPoint.cpp b/src/Gui/ViewProviderPoint.cpp index edcde697261c..22c27aaed1bb 100644 --- a/src/Gui/ViewProviderPoint.cpp +++ b/src/Gui/ViewProviderPoint.cpp @@ -52,15 +52,16 @@ void ViewProviderPoint::attach(App::DocumentObject * obj) { // The coordinates for the point (single vertex at the origin) static const SbVec3f point = SbVec3f(0, 0, 0); - SoSeparator* sep = getRoot(); + SoSeparator* sep = getDatumRoot(); auto pCoords = new SoCoordinate3(); pCoords->point.setNum(1); pCoords->point.setValue(point); sep->addChild(pCoords); + static const float size = App::GetApplication().GetParameterGroupByPath("User parameter:BaseApp/Preferences/View")->GetFloat("DatumPointSize", 2.5); auto sphere = new SoSphere(); - sphere->radius.setValue(1.0); + sphere->radius.setValue(size); sep->addChild(sphere); // Add pick style to define how the point can be selected diff --git a/src/Gui/Workbench.cpp b/src/Gui/Workbench.cpp index 32dc48f98b98..8ebe03072eb7 100644 --- a/src/Gui/Workbench.cpp +++ b/src/Gui/Workbench.cpp @@ -536,12 +536,12 @@ std::list Workbench::listCommandbars() const qApp->translate("Workbench", "Clipboard"); qApp->translate("Workbench", "Workbench"); qApp->translate("Workbench", "Structure"); - qApp->translate("Workbench", "Standard views"); + qApp->translate("Workbench", "Standard &views"); qApp->translate("Workbench", "Individual views"); - qApp->translate("Workbench", "Axonometric"); + qApp->translate("Workbench", "A&xonometric"); qApp->translate("Workbench", "&Stereo"); qApp->translate("Workbench", "&Zoom"); - qApp->translate("Workbench", "Visibility"); + qApp->translate("Workbench", "V&isibility"); qApp->translate("Workbench", "&View"); qApp->translate("Workbench", "&Tools"); qApp->translate("Workbench", "&Macro"); @@ -646,14 +646,14 @@ MenuItem* StdWorkbench::setupMenuBar() const << "Std_Edit" << "Std_Properties" << "Separator" << "Std_UserEditMode" << "Separator" << "Std_DlgPreferences"; auto axoviews = new MenuItem; - axoviews->setCommand("Axonometric"); + axoviews->setCommand("A&xonometric"); *axoviews << "Std_ViewIsometric" << "Std_ViewDimetric" << "Std_ViewTrimetric"; // Standard views auto stdviews = new MenuItem; - stdviews->setCommand("Standard views"); + stdviews->setCommand("Standard &views"); *stdviews << "Std_ViewFitAll" << "Std_ViewFitSelection" << "Std_AlignToSelection" << axoviews << "Separator" << "Std_ViewHome" << "Std_ViewFront" << "Std_ViewTop" << "Std_ViewRight" << "Std_ViewRear" << "Std_ViewBottom" << "Std_ViewLeft" @@ -674,7 +674,7 @@ MenuItem* StdWorkbench::setupMenuBar() const // Visibility auto visu = new MenuItem; - visu->setCommand("Visibility"); + visu->setCommand("V&isibility"); *visu << "Std_ToggleVisibility" << "Std_ShowSelection" << "Std_HideSelection" << "Std_SelectVisibleObjects" << "Separator" << "Std_ToggleObjects" << "Std_ShowObjects" << "Std_HideObjects" diff --git a/src/Gui/propertyeditor/PropertyItem.cpp b/src/Gui/propertyeditor/PropertyItem.cpp index ef2707bce59e..e506926b5b34 100644 --- a/src/Gui/propertyeditor/PropertyItem.cpp +++ b/src/Gui/propertyeditor/PropertyItem.cpp @@ -1163,13 +1163,12 @@ PropertyUnitItem::PropertyUnitItem() = default; QVariant PropertyUnitItem::toString(const QVariant& prop) const { const Base::Quantity& unit = prop.value(); - QString string = unit.getUserString(); + std::string str = unit.getUserString(); if (hasExpression()) { - string += - QString::fromLatin1(" ( %1 )").arg(QString::fromStdString(getExpressionString())); + str += fmt::format(" ( {} )", getExpressionString()); } - return {string}; + return {QString::fromStdString(str)}; } QVariant PropertyUnitItem::value(const App::Property* prop) const @@ -1186,8 +1185,7 @@ void PropertyUnitItem::setValue(const QVariant& value) if (!hasExpression() && value.canConvert()) { const Base::Quantity& val = value.value(); Base::QuantityFormat format(Base::QuantityFormat::Default, highPrec); - QString unit = Base::UnitsApi::toString(val, format); - setPropertyValue(unit); + setPropertyValue(Base::UnitsApi::toString(val, format)); } } @@ -1770,14 +1768,14 @@ PropertyVectorDistanceItem::PropertyVectorDistanceItem() QVariant PropertyVectorDistanceItem::toString(const QVariant& prop) const { const Base::Vector3d& value = prop.value(); - QString data = QString::fromLatin1("[") - + Base::Quantity(value.x, Base::Unit::Length).getUserString() + QString::fromLatin1(" ") - + Base::Quantity(value.y, Base::Unit::Length).getUserString() + QString::fromLatin1(" ") - + Base::Quantity(value.z, Base::Unit::Length).getUserString() + QString::fromLatin1("]"); + std::string str = fmt::format("[{} {} {}]", + Base::Quantity(value.x, Base::Unit::Length).getUserString(), + Base::Quantity(value.y, Base::Unit::Length).getUserString(), + Base::Quantity(value.z, Base::Unit::Length).getUserString()); if (hasExpression()) { - data += QString::fromLatin1(" ( %1 )").arg(QString::fromStdString(getExpressionString())); + str += fmt::format(" ( {} )", getExpressionString()); } - return {data}; + return {QString::fromStdString(str)}; } @@ -1801,11 +1799,11 @@ void PropertyVectorDistanceItem::setValue(const QVariant& variant) Base::Quantity z = Base::Quantity(value.z, Base::Unit::Length); Base::QuantityFormat format(Base::QuantityFormat::Default, highPrec); - QString data = QString::fromLatin1("(%1, %2, %3)") - .arg(Base::UnitsApi::toNumber(x, format), - Base::UnitsApi::toNumber(y, format), - Base::UnitsApi::toNumber(z, format)); - setPropertyValue(data); + std::string val = fmt::format("({}, {}, {})", + Base::UnitsApi::toNumber(x, format), + Base::UnitsApi::toNumber(y, format), + Base::UnitsApi::toNumber(z, format)); + setPropertyValue(val); } void PropertyVectorDistanceItem::setEditorData(QWidget* editor, const QVariant& data) const @@ -2516,12 +2514,13 @@ QVariant PropertyRotationItem::toolTip(const App::Property* prop) const angle = Base::toDegrees(angle); QLocale loc; - QString data = QString::fromUtf8("Axis: (%1 %2 %3)\n" - "Angle: %4") - .arg(loc.toString(dir.x, 'f', decimals()), - loc.toString(dir.y, 'f', decimals()), - loc.toString(dir.z, 'f', decimals()), - Base::Quantity(angle, Base::Unit::Angle).getUserString()); + QString data = + QString::fromUtf8("Axis: (%1 %2 %3)\n" + "Angle: %4") + .arg(loc.toString(dir.x, 'f', decimals()), + loc.toString(dir.y, 'f', decimals()), + loc.toString(dir.z, 'f', decimals()), + QString::fromStdString(Base::Quantity(angle, Base::Unit::Angle).getUserString())); return {data}; } @@ -2534,11 +2533,12 @@ QVariant PropertyRotationItem::toString(const QVariant& prop) const angle = Base::toDegrees(angle); QLocale loc; - QString data = QString::fromUtf8("[(%1 %2 %3); %4]") - .arg(loc.toString(dir.x, 'f', lowPrec), - loc.toString(dir.y, 'f', lowPrec), - loc.toString(dir.z, 'f', lowPrec), - Base::Quantity(angle, Base::Unit::Angle).getUserString()); + QString data = + QString::fromUtf8("[(%1 %2 %3); %4]") + .arg(loc.toString(dir.x, 'f', lowPrec), + loc.toString(dir.y, 'f', lowPrec), + loc.toString(dir.z, 'f', lowPrec), + QString::fromStdString(Base::Quantity(angle, Base::Unit::Angle).getUserString())); return {data}; } @@ -2557,12 +2557,12 @@ void PropertyRotationItem::setValue(const QVariant& value) double angle {}; h.getValue(axis, angle); Base::QuantityFormat format(Base::QuantityFormat::Default, highPrec); - QString data = QString::fromLatin1("App.Rotation(App.Vector(%1,%2,%3),%4)") - .arg(Base::UnitsApi::toNumber(axis.x, format), - Base::UnitsApi::toNumber(axis.y, format), - Base::UnitsApi::toNumber(axis.z, format), - Base::UnitsApi::toNumber(angle, format)); - setPropertyValue(data); + std::string val = fmt::format("App.Rotation(App.Vector({},{},{}),{})", + Base::UnitsApi::toNumber(axis.x, format), + Base::UnitsApi::toNumber(axis.y, format), + Base::UnitsApi::toNumber(axis.z, format), + Base::UnitsApi::toNumber(angle, format)); + setPropertyValue(val); } QWidget* PropertyRotationItem::createEditor(QWidget* parent, @@ -2818,16 +2818,17 @@ QVariant PropertyPlacementItem::toolTip(const App::Property* prop) const pos = p.getPosition(); QLocale loc; - QString data = QString::fromUtf8("Axis: (%1 %2 %3)\n" - "Angle: %4\n" - "Position: (%5 %6 %7)") - .arg(loc.toString(dir.x, 'f', decimals()), - loc.toString(dir.y, 'f', decimals()), - loc.toString(dir.z, 'f', decimals()), - Base::Quantity(angle, Base::Unit::Angle).getUserString(), - Base::Quantity(pos.x, Base::Unit::Length).getUserString(), - Base::Quantity(pos.y, Base::Unit::Length).getUserString(), - Base::Quantity(pos.z, Base::Unit::Length).getUserString()); + QString data = + QString::fromUtf8("Axis: (%1 %2 %3)\n" + "Angle: %4\n" + "Position: (%5 %6 %7)") + .arg(loc.toString(dir.x, 'f', decimals()), + loc.toString(dir.y, 'f', decimals()), + loc.toString(dir.z, 'f', decimals()), + QString::fromStdString(Base::Quantity(angle, Base::Unit::Angle).getUserString()), + QString::fromStdString(Base::Quantity(pos.x, Base::Unit::Length).getUserString()), + QString::fromStdString(Base::Quantity(pos.y, Base::Unit::Length).getUserString()), + QString::fromStdString(Base::Quantity(pos.z, Base::Unit::Length).getUserString())); return {data}; } @@ -2842,14 +2843,15 @@ QVariant PropertyPlacementItem::toString(const QVariant& prop) const pos = p.getPosition(); QLocale loc; - QString data = QString::fromUtf8("[(%1 %2 %3); %4; (%5 %6 %7)]") - .arg(loc.toString(dir.x, 'f', lowPrec), - loc.toString(dir.y, 'f', lowPrec), - loc.toString(dir.z, 'f', lowPrec), - Base::Quantity(angle, Base::Unit::Angle).getUserString(), - Base::Quantity(pos.x, Base::Unit::Length).getUserString(), - Base::Quantity(pos.y, Base::Unit::Length).getUserString(), - Base::Quantity(pos.z, Base::Unit::Length).getUserString()); + QString data = + QString::fromUtf8("[(%1 %2 %3); %4; (%5 %6 %7)]") + .arg(loc.toString(dir.x, 'f', lowPrec), + loc.toString(dir.y, 'f', lowPrec), + loc.toString(dir.z, 'f', lowPrec), + QString::fromStdString(Base::Quantity(angle, Base::Unit::Angle).getUserString()), + QString::fromStdString(Base::Quantity(pos.x, Base::Unit::Length).getUserString()), + QString::fromStdString(Base::Quantity(pos.y, Base::Unit::Length).getUserString()), + QString::fromStdString(Base::Quantity(pos.z, Base::Unit::Length).getUserString())); return {data}; } @@ -2872,17 +2874,17 @@ void PropertyPlacementItem::setValue(const QVariant& value) h.getValue(axis, angle); Base::QuantityFormat format(Base::QuantityFormat::Default, highPrec); - QString data = QString::fromLatin1("App.Placement(" - "App.Vector(%1,%2,%3)," - "App.Rotation(App.Vector(%4,%5,%6),%7))") - .arg(Base::UnitsApi::toNumber(pos.x, format), - Base::UnitsApi::toNumber(pos.y, format), - Base::UnitsApi::toNumber(pos.z, format), - Base::UnitsApi::toNumber(axis.x, format), - Base::UnitsApi::toNumber(axis.y, format), - Base::UnitsApi::toNumber(axis.z, format), - Base::UnitsApi::toNumber(angle, format)); - setPropertyValue(data); + std::string str = fmt::format("App.Placement(" + "App.Vector({},{},{})," + "App.Rotation(App.Vector({},{},{}),{}))", + Base::UnitsApi::toNumber(pos.x, format), + Base::UnitsApi::toNumber(pos.y, format), + Base::UnitsApi::toNumber(pos.z, format), + Base::UnitsApi::toNumber(axis.x, format), + Base::UnitsApi::toNumber(axis.y, format), + Base::UnitsApi::toNumber(axis.z, format), + Base::UnitsApi::toNumber(angle, format)); + setPropertyValue(str); } QWidget* PropertyPlacementItem::createEditor(QWidget* parent, diff --git a/src/Mod/AddonManager/Addon.py b/src/Mod/AddonManager/Addon.py index a6cac82e2644..a8f1b51a0d79 100644 --- a/src/Mod/AddonManager/Addon.py +++ b/src/Mod/AddonManager/Addon.py @@ -35,7 +35,7 @@ import addonmanager_freecad_interface as fci from addonmanager_macro import Macro import addonmanager_utilities as utils -from addonmanager_utilities import construct_git_url +from addonmanager_utilities import construct_git_url, process_date_string_to_python_datetime from addonmanager_metadata import ( Metadata, MetadataReader, @@ -49,7 +49,7 @@ # A list of internal workbenches that can be used as a dependency of an Addon INTERNAL_WORKBENCHES = { - "arch": "Arch", + "bim": "BIM", "assembly": "Assembly", "draft": "Draft", "fem": "FEM", @@ -251,49 +251,15 @@ def update_date(self): elif self.macro and self.macro.date: # Try to parse the date: try: - self._cached_update_date = self._process_date_string_to_python_datetime( + self._cached_update_date = process_date_string_to_python_datetime( self.macro.date ) - except SyntaxError as e: + except ValueError as e: fci.Console.PrintWarning(str(e) + "\n") else: fci.Console.PrintWarning(f"No update date info for {self.name}\n") return self._cached_update_date - def _process_date_string_to_python_datetime(self, date_string: str) -> datetime: - split_result = re.split(r"[ ./-]+", date_string.strip()) - if len(split_result) != 3: - raise SyntaxError( - f"In macro {self.name}, unrecognized date string '{date_string}' (expected YYYY-MM-DD)" - ) - - if int(split_result[0]) > 2000: # Assume YYYY-MM-DD - try: - year = int(split_result[0]) - month = int(split_result[1]) - day = int(split_result[2]) - return datetime(year, month, day) - except (OverflowError, OSError, ValueError): - raise SyntaxError( - f"In macro {self.name}, unrecognized date string {date_string} (expected YYYY-MM-DD)" - ) - elif int(split_result[2]) > 2000: - # Two possibilities, impossible to distinguish in the general case: DD-MM-YYYY and - # MM-DD-YYYY. See if the first one makes sense, and if not, try the second - if int(split_result[1]) <= 12: - year = int(split_result[2]) - month = int(split_result[1]) - day = int(split_result[0]) - else: - year = int(split_result[2]) - month = int(split_result[0]) - day = int(split_result[1]) - return datetime(year, month, day) - else: - raise SyntaxError( - f"In macro {self.name}, unrecognized date string '{date_string}' (expected YYYY-MM-DD)" - ) - @classmethod def from_macro(cls, macro: Macro): """Create an Addon object from a Macro wrapper object""" diff --git a/src/Mod/AddonManager/AddonManager.py b/src/Mod/AddonManager/AddonManager.py index 7d8b30cf8a3c..e84cb1a77099 100644 --- a/src/Mod/AddonManager/AddonManager.py +++ b/src/Mod/AddonManager/AddonManager.py @@ -59,7 +59,7 @@ from Widgets.addonmanager_widget_progress_bar import Progress from package_list import PackageListItemModel from Addon import Addon -from manage_python_dependencies import ( +from addonmanager_python_deps_gui import ( PythonPackageManager, ) from addonmanager_cache import local_cache_needs_update diff --git a/src/Mod/AddonManager/AddonManagerTest/app/test_utilities.py b/src/Mod/AddonManager/AddonManagerTest/app/test_utilities.py index 63f5239358f9..66035acc7406 100644 --- a/src/Mod/AddonManager/AddonManagerTest/app/test_utilities.py +++ b/src/Mod/AddonManager/AddonManagerTest/app/test_utilities.py @@ -21,17 +21,29 @@ # * * # *************************************************************************** +from datetime import datetime import unittest +from unittest.mock import MagicMock, patch, mock_open import os -import FreeCAD +import sys +import subprocess -from Addon import Addon +try: + import FreeCAD +except ImportError: + FreeCAD = None + +sys.path.append("../..") + +from AddonManagerTest.app.mocks import MockAddon as Addon from addonmanager_utilities import ( - recognized_git_location, - get_readme_url, get_assigned_string_literal, get_macro_version_from_file, + get_readme_url, + process_date_string_to_python_datetime, + recognized_git_location, + run_interruptable_subprocess, ) @@ -39,11 +51,6 @@ class TestUtilities(unittest.TestCase): MODULE = "test_utilities" # file name without extension - def setUp(self): - self.test_dir = os.path.join( - FreeCAD.getHomePath(), "Mod", "AddonManager", "AddonManagerTest", "data" - ) - @classmethod def tearDownClass(cls): try: @@ -59,7 +66,7 @@ def test_recognized_git_location(self): "https://salsa.debian.org/science-team/freecad", ] for url in recognized_urls: - repo = Addon("Test Repo", url, Addon.Status.NOT_INSTALLED, "branch") + repo = Addon("Test Repo", url, "Addon.Status.NOT_INSTALLED", "branch") self.assertTrue(recognized_git_location(repo), f"{url} was unexpectedly not recognized") unrecognized_urls = [ @@ -69,7 +76,7 @@ def test_recognized_git_location(self): "https://github.com.malware.com/", ] for url in unrecognized_urls: - repo = Addon("Test Repo", url, Addon.Status.NOT_INSTALLED, "branch") + repo = Addon("Test Repo", url, "Addon.Status.NOT_INSTALLED", "branch") self.assertFalse(recognized_git_location(repo), f"{url} was unexpectedly recognized") def test_get_readme_url(self): @@ -90,14 +97,14 @@ def test_get_readme_url(self): for url in github_urls: branch = "branchname" expected_result = f"{url}/raw/{branch}/README.md" - repo = Addon("Test Repo", url, Addon.Status.NOT_INSTALLED, branch) + repo = Addon("Test Repo", url, "Addon.Status.NOT_INSTALLED", branch) actual_result = get_readme_url(repo) self.assertEqual(actual_result, expected_result) for url in gitlab_urls: branch = "branchname" expected_result = f"{url}/-/raw/{branch}/README.md" - repo = Addon("Test Repo", url, Addon.Status.NOT_INSTALLED, branch) + repo = Addon("Test Repo", url, "Addon.Status.NOT_INSTALLED", branch) actual_result = get_readme_url(repo) self.assertEqual(actual_result, expected_result) @@ -124,15 +131,157 @@ def test_get_assigned_string_literal(self): result = get_assigned_string_literal(line) self.assertIsNone(result) - def test_get_macro_version_from_file(self): - good_file = os.path.join(self.test_dir, "good_macro_metadata.FCStd") - version = get_macro_version_from_file(good_file) - self.assertEqual(version, "1.2.3") + def test_get_macro_version_from_file_good_metadata(self): + good_metadata = """__Version__ = "1.2.3" """ + with patch("builtins.open", new_callable=mock_open, read_data=good_metadata): + version = get_macro_version_from_file("mocked_file.FCStd") + self.assertEqual(version, "1.2.3") + + def test_get_macro_version_from_file_missing_quotes(self): + bad_metadata = """__Version__ = 1.2.3 """ # No quotes + with patch("builtins.open", new_callable=mock_open, read_data=bad_metadata): + version = get_macro_version_from_file("mocked_file.FCStd") + self.assertEqual(version, "", "Bad version did not yield empty string") + + def test_get_macro_version_from_file_no_version(self): + good_metadata = "" + with patch("builtins.open", new_callable=mock_open, read_data=good_metadata): + version = get_macro_version_from_file("mocked_file.FCStd") + self.assertEqual(version, "", "Missing version did not yield empty string") + + @patch("subprocess.Popen") + def test_run_interruptable_subprocess_success_instant_return(self, mock_popen): + mock_process = MagicMock() + mock_process.communicate.return_value = ("Mocked stdout", "Mocked stderr") + mock_process.returncode = 0 + mock_popen.return_value = mock_process + + completed_process = run_interruptable_subprocess(["arg0", "arg1"]) + + self.assertEqual(completed_process.returncode, 0) + self.assertEqual(completed_process.stdout, "Mocked stdout") + self.assertEqual(completed_process.stderr, "Mocked stderr") + + @patch("subprocess.Popen") + def test_run_interruptable_subprocess_returns_nonzero(self, mock_popen): + mock_process = MagicMock() + mock_process.communicate.return_value = ("Mocked stdout", "Mocked stderr") + mock_process.returncode = 1 + mock_popen.return_value = mock_process + + with self.assertRaises(subprocess.CalledProcessError): + run_interruptable_subprocess(["arg0", "arg1"]) + + @patch("subprocess.Popen") + def test_run_interruptable_subprocess_timeout_five_times(self, mock_popen): + """Five times is below the limit for an error to be raised""" + + def raises_first_five_times(timeout): + raises_first_five_times.counter += 1 + if raises_first_five_times.counter <= 5: + raise subprocess.TimeoutExpired("Test", timeout) + return "Mocked stdout", None + + raises_first_five_times.counter = 0 + + mock_process = MagicMock() + mock_process.communicate = raises_first_five_times + mock_process.returncode = 0 + mock_popen.return_value = mock_process + + result = run_interruptable_subprocess(["arg0", "arg1"], 10) + + self.assertEqual(result.returncode, 0) + + @patch("subprocess.Popen") + def test_run_interruptable_subprocess_timeout_exceeded(self, mock_popen): + """Exceeding the set timeout gives a CalledProcessError exception""" + + def raises_one_time(timeout=0): + if not raises_one_time.raised: + raises_one_time.raised = True + raise subprocess.TimeoutExpired("Test", timeout) + return "Mocked stdout", None + + raises_one_time.raised = False + + def fake_time(): + """Time that advances by one second every time it is called""" + fake_time.time += 1.0 + return fake_time.time + + fake_time.time = 0.0 + + mock_process = MagicMock() + mock_process.communicate = raises_one_time + raises_one_time.mock_access = mock_process + mock_process.returncode = None + mock_popen.return_value = mock_process + + with self.assertRaises(subprocess.CalledProcessError): + with patch("time.time", fake_time): + run_interruptable_subprocess(["arg0", "arg1"], 0.1) + + def test_process_date_string_to_python_datetime_non_numeric(self): + with self.assertRaises(ValueError): + process_date_string_to_python_datetime("TwentyTwentyFour-January-ThirtyFirst") + + def test_process_date_string_to_python_datetime_year_first(self): + result = process_date_string_to_python_datetime("2024-01-31") + expected_result = datetime(2024, 1, 31, 0, 0) + self.assertEqual(result, expected_result) + + def test_process_date_string_to_python_datetime_day_first(self): + result = process_date_string_to_python_datetime("31-01-2024") + expected_result = datetime(2024, 1, 31, 0, 0) + self.assertEqual(result, expected_result) + + def test_process_date_string_to_python_datetime_month_first(self): + result = process_date_string_to_python_datetime("01-31-2024") + expected_result = datetime(2024, 1, 31, 0, 0) + self.assertEqual(result, expected_result) + + def test_process_date_string_to_python_datetime_ambiguous(self): + """In the ambiguous case, the code should assume that the date is in the DD-MM-YYYY format.""" + result = process_date_string_to_python_datetime("01-12-2024") + expected_result = datetime(2024, 12, 1, 0, 0) + self.assertEqual(result, expected_result) + + def test_process_date_string_to_python_datetime_invalid_date(self): + with self.assertRaises(ValueError): + process_date_string_to_python_datetime("13-31-2024") + + def test_process_date_string_to_python_datetime_too_many_components(self): + with self.assertRaises(ValueError): + process_date_string_to_python_datetime("01-01-31-2024") + + def test_process_date_string_to_python_datetime_too_few_components(self): + """Month-Year-only dates are not supported""" + with self.assertRaises(ValueError): + process_date_string_to_python_datetime("01-2024") + + def test_process_date_string_to_python_datetime_unrecognizable(self): + """Two-digit years are not supported""" + with self.assertRaises(ValueError): + process_date_string_to_python_datetime("01-02-24") + + def test_process_date_string_to_python_datetime_valid_separators(self): + """Four individual separators are supported, plus any combination of multiple of those separators""" + valid_separators = [" ", ".", "/", "-", " - ", " / ", "--"] + for separator in valid_separators: + with self.subTest(separator=separator): + result = process_date_string_to_python_datetime(f"2024{separator}01{separator}31") + expected_result = datetime(2024, 1, 31, 0, 0) + self.assertEqual(result, expected_result) + + def test_process_date_string_to_python_datetime_invalid_separators(self): + """Only the four separators [ ./-] are supported: ensure others fail""" + invalid_separators = ["a", "\\", "|", "'", ";", "*", " \\ "] + for separator in invalid_separators: + with self.subTest(separator=separator): + with self.assertRaises(ValueError): + process_date_string_to_python_datetime(f"2024{separator}01{separator}31") - bad_file = os.path.join(self.test_dir, "bad_macro_metadata.FCStd") - version = get_macro_version_from_file(bad_file) - self.assertEqual(version, "", "Bad version did not yield empty string") - empty_file = os.path.join(self.test_dir, "missing_macro_metadata.FCStd") - version = get_macro_version_from_file(empty_file) - self.assertEqual(version, "", "Missing version did not yield empty string") +if __name__ == "__main__": + unittest.main() diff --git a/src/Mod/AddonManager/AddonManagerTest/data/bad_macro_metadata.FCStd b/src/Mod/AddonManager/AddonManagerTest/data/bad_macro_metadata.FCStd deleted file mode 100644 index f3932bbfe317..000000000000 --- a/src/Mod/AddonManager/AddonManagerTest/data/bad_macro_metadata.FCStd +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- - -# *************************************************************************** -# * Copyright (c) 2022 FreeCAD Project Association * -# * * -# * This file is part of the FreeCAD CAx development system. * -# * * -# * This library is free software; you can redistribute it and/or * -# * modify it under the terms of the GNU Lesser General Public * -# * License as published by the Free Software Foundation; either * -# * version 2.1 of the License, or (at your option) any later version. * -# * * -# * This library is distributed in the hope that it will be useful, * -# * but WITHOUT ANY WARRANTY; without even the implied warranty of * -# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -# * Lesser General Public License for more details. * -# * * -# * You should have received a copy of the GNU Lesser General Public * -# * License along with this library; if not, write to the Free Software * -# * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * -# * 02110-1301 USA * -# * * -# *************************************************************************** - -__Title__ = "Test Macro' # Mismatched quotes -__Author__ = Chris Hennes # Not in quotes -__Version__ = 1.2.3 # Not in quotes and not a number -__Date__ = "2022-2-25 # Missing quote -__Comment__ = """For use with the FreeCAD unit test suite""" # Triple-quotes not allowed -__Web__ = "https://freecad.org" -__Wiki__ = "" -__Icon__ = "" -__Help__ = "" -__Status__ = "" -__Requires__ = "" -__Communication__ = "" -__Files__ = "" diff --git a/src/Mod/AddonManager/AddonManagerTest/data/depends_on_all_workbenches.xml b/src/Mod/AddonManager/AddonManagerTest/data/depends_on_all_workbenches.xml index daa49424d8ef..945134bb5e8e 100644 --- a/src/Mod/AddonManager/AddonManagerTest/data/depends_on_all_workbenches.xml +++ b/src/Mod/AddonManager/AddonManagerTest/data/depends_on_all_workbenches.xml @@ -13,7 +13,7 @@ MyFirstWorkbench Resources/icons/PackageIcon.svg - Arch + BIM Assembly DraftWB FEM WB diff --git a/src/Mod/AddonManager/AddonManagerTest/data/good_macro_metadata.FCStd b/src/Mod/AddonManager/AddonManagerTest/data/good_macro_metadata.FCStd deleted file mode 100644 index 2968bb59172c..000000000000 --- a/src/Mod/AddonManager/AddonManagerTest/data/good_macro_metadata.FCStd +++ /dev/null @@ -1,37 +0,0 @@ -# -*- coding: utf-8 -*- - -# *************************************************************************** -# * Copyright (c) 2022 FreeCAD Project Association * -# * * -# * This file is part of the FreeCAD CAx development system. * -# * * -# * This library is free software; you can redistribute it and/or * -# * modify it under the terms of the GNU Lesser General Public * -# * License as published by the Free Software Foundation; either * -# * version 2.1 of the License, or (at your option) any later version. * -# * * -# * This library is distributed in the hope that it will be useful, * -# * but WITHOUT ANY WARRANTY; without even the implied warranty of * -# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * -# * Lesser General Public License for more details. * -# * * -# * You should have received a copy of the GNU Lesser General Public * -# * License along with this library; if not, write to the Free Software * -# * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * -# * 02110-1301 USA * -# * * -# *************************************************************************** - -__Title__ = "Test Macro" -__Author__ = "Chris Hennes" -__Version__ = "1.2.3" -__Date__ = "2022-2-25" -__Comment__ = "For use with the FreeCAD unit test suite" -__Web__ = "https://freecad.org" -__Wiki__ = "" -__Icon__ = "" -__Help__ = "" -__Status__ = "" -__Requires__ = "" -__Communication__ = "" -__Files__ = "" diff --git a/src/Mod/AddonManager/AddonManagerTest/gui/gui_mocks.py b/src/Mod/AddonManager/AddonManagerTest/gui/gui_mocks.py index 7d08e7739a26..fde8d9e896b9 100644 --- a/src/Mod/AddonManager/AddonManagerTest/gui/gui_mocks.py +++ b/src/Mod/AddonManager/AddonManagerTest/gui/gui_mocks.py @@ -21,7 +21,17 @@ # * * # *************************************************************************** -from PySide import QtCore, QtWidgets +import sys + +try: + from PySide import QtCore, QtWidgets +except ImportError: + try: + from PySide6 import QtCore, QtWidgets + except ImportError: + from PySide2 import QtCore, QtWidgets + +sys.path.append("../../") # For running in standalone mode during testing from AddonManagerTest.app.mocks import SignalCatcher diff --git a/src/Mod/AddonManager/AddonManagerTest/gui/test_python_deps_gui.py b/src/Mod/AddonManager/AddonManagerTest/gui/test_python_deps_gui.py new file mode 100644 index 000000000000..be08fa37e66c --- /dev/null +++ b/src/Mod/AddonManager/AddonManagerTest/gui/test_python_deps_gui.py @@ -0,0 +1,139 @@ +import logging +import subprocess +import sys +import unittest +from unittest.mock import MagicMock, patch + +try: + import FreeCAD + import FreeCADGui +except ImportError: + try: + from PySide6 import QtCore, QtWidgets + except ImportError: + from PySide2 import QtCore, QtWidgets + +sys.path.append( + "../.." +) # So that when run standalone, the Addon Manager classes imported below are available + +from addonmanager_python_deps_gui import ( + PythonPackageManager, + call_pip, + PipFailed, + python_package_updates_are_available, + parse_pip_list_output, +) +from AddonManagerTest.gui.gui_mocks import DialogInteractor, DialogWatcher + + +class TestPythonPackageManager(unittest.TestCase): + + def setUp(self) -> None: + self.manager = PythonPackageManager([]) + + def tearDown(self) -> None: + if self.manager.worker_thread: + self.manager.worker_thread.terminate() + self.manager.worker_thread.wait() + + @patch("addonmanager_python_deps_gui.PythonPackageManager._create_list_from_pip") + def test_show(self, patched_create_list_from_pip): + dialog_watcher = DialogWatcher("Manage Python Dependencies") + self.manager.show() + self.assertTrue(dialog_watcher.dialog_found, "Failed to find the expected dialog box") + + +class TestPythonDepsStandaloneFunctions(unittest.TestCase): + + @patch("addonmanager_utilities.run_interruptable_subprocess") + def test_call_pip(self, mock_run_subprocess: MagicMock): + call_pip(["arg1", "arg2", "arg3"]) + mock_run_subprocess.assert_called() + args = mock_run_subprocess.call_args[0][0] + self.assertTrue("pip" in args) + + @patch("addonmanager_python_deps_gui.get_python_exe") + def test_call_pip_no_python(self, mock_get_python_exe: MagicMock): + mock_get_python_exe.return_value = None + with self.assertRaises(PipFailed): + call_pip(["arg1", "arg2", "arg3"]) + + @patch("addonmanager_utilities.run_interruptable_subprocess") + def test_call_pip_exception_raised(self, mock_run_subprocess: MagicMock): + mock_run_subprocess.side_effect = subprocess.CalledProcessError( + -1, "dummy_command", "Fake contents of stdout", "Fake contents of stderr" + ) + with self.assertRaises(PipFailed): + call_pip(["arg1", "arg2", "arg3"]) + + @patch("addonmanager_utilities.run_interruptable_subprocess") + def test_call_pip_splits_results(self, mock_run_subprocess: MagicMock): + result_mock = MagicMock() + result_mock.stdout = "\n".join(["Value 1", "Value 2", "Value 3"]) + mock_run_subprocess.return_value = result_mock + result = call_pip(["arg1", "arg2", "arg3"]) + self.assertEqual(len(result), 3) + + @patch("addonmanager_python_deps_gui.call_pip") + def test_python_package_updates_are_available(self, mock_call_pip: MagicMock): + mock_call_pip.return_value = "Some result" + result = python_package_updates_are_available() + self.assertEqual(result, True) + + @patch("addonmanager_python_deps_gui.call_pip") + def test_python_package_updates_are_available_no_results(self, mock_call_pip: MagicMock): + """An empty string is an indication that no updates are available""" + mock_call_pip.return_value = "" + result = python_package_updates_are_available() + self.assertEqual(result, False) + + @patch("addonmanager_python_deps_gui.call_pip") + def test_python_package_updates_are_available_pip_failure(self, mock_call_pip: MagicMock): + logging.disable() + mock_call_pip.side_effect = PipFailed("Test error message") + logging.disable() # A logging error message is expected here, but not desirable during test runs + result = python_package_updates_are_available() + self.assertEqual(result, False) + logging.disable(logging.NOTSET) + + def test_parse_pip_list_output_no_input(self): + results_dict = parse_pip_list_output("", "") + self.assertEqual(len(results_dict), 0) + + def test_parse_pip_list_output_all_packages_no_updates(self): + results_dict = parse_pip_list_output( + ["Package Version", "---------- -------", "gitdb 4.0.9", "setuptools 41.2.0"], + [], + ) + self.assertEqual(len(results_dict), 2) + self.assertTrue("gitdb" in results_dict) + self.assertTrue("setuptools" in results_dict) + self.assertEqual(results_dict["gitdb"]["installed_version"], "4.0.9") + self.assertEqual(results_dict["gitdb"]["available_version"], "") + self.assertEqual(results_dict["setuptools"]["installed_version"], "41.2.0") + self.assertEqual(results_dict["setuptools"]["available_version"], "") + + def test_parse_pip_list_output_all_packages_with_updates(self): + results_dict = parse_pip_list_output( + [], + [ + "Package Version Latest Type", + "---------- ------- ------ -----", + "pip 21.0.1 22.1.2 wheel", + "setuptools 41.2.0 63.2.0 wheel", + ], + ) + self.assertEqual(len(results_dict), 2) + self.assertTrue("pip" in results_dict) + self.assertTrue("setuptools" in results_dict) + self.assertEqual(results_dict["pip"]["installed_version"], "21.0.1") + self.assertEqual(results_dict["pip"]["available_version"], "22.1.2") + self.assertEqual(results_dict["setuptools"]["installed_version"], "41.2.0") + self.assertEqual(results_dict["setuptools"]["available_version"], "63.2.0") + + +if __name__ == "__main__": + app = QtWidgets.QApplication(sys.argv) + QtCore.QTimer.singleShot(0, unittest.main) + app.exec() diff --git a/src/Mod/AddonManager/CMakeLists.txt b/src/Mod/AddonManager/CMakeLists.txt index a311537cbf20..58b15d132b38 100644 --- a/src/Mod/AddonManager/CMakeLists.txt +++ b/src/Mod/AddonManager/CMakeLists.txt @@ -4,11 +4,20 @@ IF (BUILD_GUI) ENDIF (BUILD_GUI) SET(AddonManager_SRCS - add_toolbar_button_dialog.ui + ALLOWED_PYTHON_PACKAGES.txt Addon.py - AddonStats.py AddonManager.py AddonManager.ui + AddonManagerOptions.py + AddonManagerOptions.ui + AddonManagerOptions_AddCustomRepository.ui + AddonStats.py + Init.py + InitGui.py + NetworkManager.py + PythonDependencyUpdateDialog.ui + TestAddonManagerApp.py + add_toolbar_button_dialog.ui addonmanager_cache.py addonmanager_connection_checker.py addonmanager_dependency_installer.py @@ -17,8 +26,8 @@ SET(AddonManager_SRCS addonmanager_devmode_license_selector.py addonmanager_devmode_licenses_table.py addonmanager_devmode_metadata_checker.py - addonmanager_devmode_person_editor.py addonmanager_devmode_people_table.py + addonmanager_devmode_person_editor.py addonmanager_devmode_predictor.py addonmanager_devmode_validators.py addonmanager_firstrun.py @@ -33,18 +42,15 @@ SET(AddonManager_SRCS addonmanager_package_details_controller.py addonmanager_preferences_defaults.json addonmanager_pyside_interface.py + addonmanager_python_deps_gui.py addonmanager_readme_controller.py - addonmanager_update_all_gui.py addonmanager_uninstaller.py addonmanager_uninstaller_gui.py + addonmanager_update_all_gui.py addonmanager_utilities.py addonmanager_workers_installation.py addonmanager_workers_startup.py addonmanager_workers_utility.py - AddonManagerOptions.ui - AddonManagerOptions_AddCustomRepository.ui - AddonManagerOptions.py - ALLOWED_PYTHON_PACKAGES.txt change_branch.py change_branch.ui compact_view.py @@ -65,16 +71,10 @@ SET(AddonManager_SRCS developer_mode_tags.ui expanded_view.py first_run.ui - Init.py - InitGui.py install_to_toolbar.py loading.html - manage_python_dependencies.py - NetworkManager.py package_list.py - PythonDependencyUpdateDialog.ui select_toolbar_dialog.ui - TestAddonManagerApp.py update_all.ui ) IF (BUILD_GUI) @@ -118,13 +118,11 @@ SET(AddonManagerTestsGui_SRCS SET(AddonManagerTestsFiles_SRCS AddonManagerTest/data/__init__.py AddonManagerTest/data/addon_update_stats.json - AddonManagerTest/data/bad_macro_metadata.FCStd AddonManagerTest/data/combination.xml AddonManagerTest/data/corrupted_metadata.zip AddonManagerTest/data/depends_on_all_workbenches.xml AddonManagerTest/data/DoNothing.FCMacro AddonManagerTest/data/git_submodules.txt - AddonManagerTest/data/good_macro_metadata.FCStd AddonManagerTest/data/good_package.xml AddonManagerTest/data/icon_cache.zip AddonManagerTest/data/icon_cache.zip.sha1 diff --git a/src/Mod/AddonManager/Widgets/addonmanager_widget_filter_selector.py b/src/Mod/AddonManager/Widgets/addonmanager_widget_filter_selector.py index 5b6c1e3913db..a8fb528dc4ab 100644 --- a/src/Mod/AddonManager/Widgets/addonmanager_widget_filter_selector.py +++ b/src/Mod/AddonManager/Widgets/addonmanager_widget_filter_selector.py @@ -38,18 +38,12 @@ def translate(_: str, text: str): # Get whatever version of PySide we can try: - import PySide # Use the FreeCAD wrapper + from PySide import QtCore, QtWidgets # Use the FreeCAD wrapper except ImportError: try: - import PySide6 # Outside FreeCAD, try Qt6 first - - PySide = PySide6 + from PySide6 import QtCore, QtWidgets # Outside FreeCAD, try Qt6 first except ImportError: - import PySide2 # Fall back to Qt5 (if this fails, Python will kill this module's import) - - PySide = PySide2 - -from PySide import QtCore, QtWidgets + from PySide2 import QtCore, QtWidgets # Fall back to Qt5 class FilterType(IntEnum): diff --git a/src/Mod/AddonManager/addonmanager_freecad_interface.py b/src/Mod/AddonManager/addonmanager_freecad_interface.py index 34d5a7d2b6fc..ac66a100caa2 100644 --- a/src/Mod/AddonManager/addonmanager_freecad_interface.py +++ b/src/Mod/AddonManager/addonmanager_freecad_interface.py @@ -143,6 +143,7 @@ class DataPaths: all paths are temp directories. If not run within FreeCAD, all directories are deleted when the last reference to this class is deleted.""" + data_dir = None mod_dir = None macro_dir = None cache_dir = None @@ -152,6 +153,8 @@ class DataPaths: def __init__(self): if FreeCAD: + if self.data_dir is None: + self.data_dir = getUserAppDataDir() if self.mod_dir is None: self.mod_dir = os.path.join(getUserAppDataDir(), "Mod") if self.cache_dir is None: @@ -162,6 +165,8 @@ def __init__(self): self.home_dir = FreeCAD.getHomePath() else: self.reference_count += 1 + if self.data_dir is None: + self.data_dir = tempfile.mkdtemp() if self.mod_dir is None: self.mod_dir = tempfile.mkdtemp() if self.cache_dir is None: @@ -174,9 +179,13 @@ def __init__(self): def __del__(self): self.reference_count -= 1 if not FreeCAD and self.reference_count <= 0: - os.rmdir(self.mod_dir) - os.rmdir(self.cache_dir) - os.rmdir(self.macro_dir) + paths = [self.data_dir, self.mod_dir, self.cache_dir, self.macro_dir, self.mod_dir] + for path in paths: + try: + os.rmdir(path) + except FileNotFoundError: + pass + self.data_dir = None self.mod_dir = None self.cache_dir = None self.macro_dir = None diff --git a/src/Mod/AddonManager/manage_python_dependencies.py b/src/Mod/AddonManager/addonmanager_python_deps_gui.py similarity index 75% rename from src/Mod/AddonManager/manage_python_dependencies.py rename to src/Mod/AddonManager/addonmanager_python_deps_gui.py index cf4786a78b2a..4419b1635c07 100644 --- a/src/Mod/AddonManager/manage_python_dependencies.py +++ b/src/Mod/AddonManager/addonmanager_python_deps_gui.py @@ -1,7 +1,7 @@ # SPDX-License-Identifier: LGPL-2.1-or-later # *************************************************************************** # * * -# * Copyright (c) 2022-2023 FreeCAD Project Association * +# * Copyright (c) 2022-2024 FreeCAD Project Association AISBL * # * * # * This file is part of FreeCAD. * # * * @@ -32,18 +32,33 @@ import subprocess import sys from functools import partial -from typing import Dict, List, Tuple +from typing import Dict, Iterable, List, Tuple, TypedDict import addonmanager_freecad_interface as fci -import FreeCAD -import FreeCADGui -from freecad.utils import get_python_exe -from PySide import QtCore, QtGui, QtWidgets +try: + from PySide import QtCore, QtGui, QtWidgets + from PySide.QtUiTools import QUiLoader +except ImportError: + try: + from PySide6 import QtCore, QtGui, QtWidgets + from PySide6.QtUiTools import QUiLoader + except ImportError: + from PySide2 import QtCore, QtGui, QtWidgets + from PySide2.QtUiTools import QUiLoader + +try: + from freecad.utils import get_python_exe +except ImportError: + + def get_python_exe(): + return shutil.which("python") + import addonmanager_utilities as utils -translate = FreeCAD.Qt.translate +translate = fci.translate + # pylint: disable=too-few-public-methods @@ -65,30 +80,30 @@ def run(self): function in a parent thread. emits a python_package_updates_available signal if updates are available for any of the installed Python packages.""" - if check_for_python_package_updates(): + if python_package_updates_are_available(): self.python_package_updates_available.emit() -def check_for_python_package_updates() -> bool: +def python_package_updates_are_available() -> bool: """Returns True if any of the Python packages installed into the AdditionalPythonPackages directory have updates available, or False if they are all up-to-date.""" - vendor_path = os.path.join(FreeCAD.getUserAppDataDir(), "AdditionalPythonPackages") + vendor_path = os.path.join(fci.DataPaths().data_dir, "AdditionalPythonPackages") package_counter = 0 try: outdated_packages_stdout = call_pip(["list", "-o", "--path", vendor_path]) except PipFailed as e: - FreeCAD.Console.PrintError(str(e) + "\n") + fci.Console.PrintError(str(e) + "\n") return False - FreeCAD.Console.PrintLog("Output from pip -o:\n") + fci.Console.PrintLog("Output from pip -o:\n") for line in outdated_packages_stdout: if len(line) > 0: package_counter += 1 - FreeCAD.Console.PrintLog(f" {line}\n") + fci.Console.PrintLog(f" {line}\n") return package_counter > 0 -def call_pip(args) -> List[str]: +def call_pip(args: List[str]) -> List[str]: """Tries to locate the appropriate Python executable and run pip with version checking disabled. Fails if Python can't be found or if pip is not installed.""" @@ -103,17 +118,64 @@ def call_pip(args) -> List[str]: except subprocess.CalledProcessError: pip_failed = True - result = [] if not pip_failed: data = proc.stdout - result = data.split("\n") + return data.split("\n") elif proc: raise PipFailed(proc.stderr) else: raise PipFailed("pip timed out") else: raise PipFailed("Could not locate Python executable on this system") - return result + + +def parse_pip_list_output(all_packages, outdated_packages) -> Dict[str, Dict[str, str]]: + """Parses the output from pip into a dictionary with update information in it. The pip + output should be an array of lines of text.""" + + # All Packages output looks like this: + # Package Version + # ---------- ------- + # gitdb 4.0.9 + # setuptools 41.2.0 + + # Outdated Packages output looks like this: + # Package Version Latest Type + # ---------- ------- ------ ----- + # pip 21.0.1 22.1.2 wheel + # setuptools 41.2.0 63.2.0 wheel + + packages = {} + skip_counter = 0 + for line in all_packages: + if skip_counter < 2: + skip_counter += 1 + continue + entries = line.split() + if len(entries) > 1: + package_name = entries[0] + installed_version = entries[1] + packages[package_name] = { + "installed_version": installed_version, + "available_version": "", + } + + skip_counter = 0 + for line in outdated_packages: + if skip_counter < 2: + skip_counter += 1 + continue + entries = line.split() + if len(entries) > 1: + package_name = entries[0] + installed_version = entries[1] + available_version = entries[2] + packages[package_name] = { + "installed_version": installed_version, + "available_version": available_version, + } + + return packages class PythonPackageManager: @@ -139,14 +201,22 @@ def process(self): self.all_packages_stdout = call_pip(["list", "--path", self.vendor_path]) self.outdated_packages_stdout = call_pip(["list", "-o", "--path", self.vendor_path]) except PipFailed as e: - FreeCAD.Console.PrintError(str(e) + "\n") + fci.Console.PrintError(str(e) + "\n") self.error.emit(str(e)) self.finished.emit() + class DependentAddon(TypedDict): + name: str + optional: bool + def __init__(self, addons): - self.dlg = FreeCADGui.PySideUic.loadUi( + ui_file = QtCore.QFile( os.path.join(os.path.dirname(__file__), "PythonDependencyUpdateDialog.ui") ) + ui_file.open(QtCore.QFile.OpenModeFlag.ReadOnly) + loader = QUiLoader() + self.dlg = loader.load(ui_file) + self.addons = addons self.vendor_path = utils.get_pip_target_directory() self.worker_thread = None @@ -167,9 +237,9 @@ def show(self): "This appears to be the first time this version of Python has been used with the Addon Manager. " "Would you like to install the same auto-installed dependencies for it?", ), - QtWidgets.QMessageBox.Yes | QtWidgets.QMessageBox.No, + QtWidgets.QMessageBox.StandardButton.Yes | QtWidgets.QMessageBox.StandardButton.No, ) - if result == QtWidgets.QMessageBox.Yes: + if result == QtWidgets.QMessageBox.StandardButton.Yes: self._reinstall_all_packages() self._add_current_python_version() @@ -198,7 +268,7 @@ def _create_list_from_pip(self): QtWidgets.QTableWidgetItem(translate("AddonsInstaller", "Processing, please wait...")), ) self.dlg.tableWidget.horizontalHeader().setSectionResizeMode( - 0, QtWidgets.QHeaderView.ResizeToContents + 0, QtWidgets.QHeaderView.ResizeMode.ResizeToContents ) def _worker_finished(self): @@ -206,15 +276,13 @@ def _worker_finished(self): all_packages_stdout = self.worker_object.all_packages_stdout outdated_packages_stdout = self.worker_object.outdated_packages_stdout - self.package_list = self._parse_pip_list_output( - all_packages_stdout, outdated_packages_stdout - ) + self.package_list = parse_pip_list_output(all_packages_stdout, outdated_packages_stdout) self.dlg.buttonUpdateAll.clicked.connect( partial(self._update_all_packages, self.package_list) ) self.dlg.tableWidget.setRowCount(len(self.package_list)) - updateButtons = [] + update_buttons = [] counter = 0 update_counter = 0 self.dlg.tableWidget.setSortingEnabled(False) @@ -243,10 +311,10 @@ def _worker_finished(self): QtWidgets.QTableWidgetItem(", ".join(dependencies)), ) if len(package_details["available_version"]) > 0: - updateButtons.append(QtWidgets.QPushButton(translate("AddonsInstaller", "Update"))) - updateButtons[-1].setIcon(QtGui.QIcon(":/icons/button_up.svg")) - updateButtons[-1].clicked.connect(partial(self._update_package, package_name)) - self.dlg.tableWidget.setCellWidget(counter, 4, updateButtons[-1]) + update_buttons.append(QtWidgets.QPushButton(translate("AddonsInstaller", "Update"))) + update_buttons[-1].setIcon(QtGui.QIcon(":/icons/button_up.svg")) + update_buttons[-1].clicked.connect(partial(self._update_package, package_name)) + self.dlg.tableWidget.setCellWidget(counter, 4, update_buttons[-1]) update_counter += 1 else: self.dlg.tableWidget.removeCellWidget(counter, 3) @@ -255,16 +323,16 @@ def _worker_finished(self): self.dlg.tableWidget.horizontalHeader().setStretchLastSection(False) self.dlg.tableWidget.horizontalHeader().setSectionResizeMode( - 0, QtWidgets.QHeaderView.Stretch + 0, QtWidgets.QHeaderView.ResizeMode.Stretch ) self.dlg.tableWidget.horizontalHeader().setSectionResizeMode( - 1, QtWidgets.QHeaderView.ResizeToContents + 1, QtWidgets.QHeaderView.ResizeMode.ResizeToContents ) self.dlg.tableWidget.horizontalHeader().setSectionResizeMode( - 2, QtWidgets.QHeaderView.ResizeToContents + 2, QtWidgets.QHeaderView.ResizeMode.ResizeToContents ) self.dlg.tableWidget.horizontalHeader().setSectionResizeMode( - 3, QtWidgets.QHeaderView.ResizeToContents + 3, QtWidgets.QHeaderView.ResizeMode.ResizeToContents ) if update_counter > 0: @@ -272,7 +340,7 @@ def _worker_finished(self): else: self.dlg.buttonUpdateAll.setEnabled(False) - def _get_dependent_addons(self, package): + def _get_dependent_addons(self, package) -> List[DependentAddon]: dependent_addons = [] for addon in self.addons: # if addon.installed_version is not None: @@ -282,54 +350,6 @@ def _get_dependent_addons(self, package): dependent_addons.append({"name": addon.name, "optional": True}) return dependent_addons - def _parse_pip_list_output(self, all_packages, outdated_packages) -> Dict[str, Dict[str, str]]: - """Parses the output from pip into a dictionary with update information in it. The pip - output should be an array of lines of text.""" - - # All Packages output looks like this: - # Package Version - # ---------- ------- - # gitdb 4.0.9 - # setuptools 41.2.0 - - # Outdated Packages output looks like this: - # Package Version Latest Type - # ---------- ------- ------ ----- - # pip 21.0.1 22.1.2 wheel - # setuptools 41.2.0 63.2.0 wheel - - packages = {} - skip_counter = 0 - for line in all_packages: - if skip_counter < 2: - skip_counter += 1 - continue - entries = line.split() - if len(entries) > 1: - package_name = entries[0] - installed_version = entries[1] - packages[package_name] = { - "installed_version": installed_version, - "available_version": "", - } - - skip_counter = 0 - for line in outdated_packages: - if skip_counter < 2: - skip_counter += 1 - continue - entries = line.split() - if len(entries) > 1: - package_name = entries[0] - installed_version = entries[1] - available_version = entries[2] - packages[package_name] = { - "installed_version": installed_version, - "available_version": available_version, - } - - return packages - def _update_package(self, package_name) -> None: """Run pip --upgrade on the given package. Updates all dependent packages as well.""" for line in range(self.dlg.tableWidget.rowCount()): @@ -340,20 +360,22 @@ def _update_package(self, package_name) -> None: QtWidgets.QTableWidgetItem(translate("AddonsInstaller", "Updating...")), ) break - QtCore.QCoreApplication.processEvents(QtCore.QEventLoop.AllEvents, 50) + QtCore.QCoreApplication.processEvents(QtCore.QEventLoop.ProcessEventsFlag.AllEvents, 50) try: - FreeCAD.Console.PrintLog( + fci.Console.PrintLog( f"Running 'pip install --upgrade --target {self.vendor_path} {package_name}'\n" ) call_pip(["install", "--upgrade", package_name, "--target", self.vendor_path]) self._create_list_from_pip() while self.worker_thread.isRunning(): - QtCore.QCoreApplication.processEvents(QtCore.QEventLoop.AllEvents, 50) + QtCore.QCoreApplication.processEvents( + QtCore.QEventLoop.ProcessEventsFlag.AllEvents, 50 + ) except PipFailed as e: - FreeCAD.Console.PrintError(str(e) + "\n") + fci.Console.PrintError(str(e) + "\n") return - QtCore.QCoreApplication.processEvents(QtCore.QEventLoop.AllEvents, 50) + QtCore.QCoreApplication.processEvents(QtCore.QEventLoop.ProcessEventsFlag.AllEvents, 50) def _update_all_packages(self, package_list) -> None: """Updates all packages with available updates.""" @@ -365,7 +387,7 @@ def _update_all_packages(self, package_list) -> None: ): updates.append(package_name) - FreeCAD.Console.PrintLog(f"Running update for {len(updates)} Python packages...\n") + fci.Console.PrintLog(f"Running update for {len(updates)} Python packages...\n") for package_name in updates: self._update_package(package_name) @@ -377,7 +399,7 @@ def migrate_old_am_installations(cls) -> bool: migrated = False - old_directory = os.path.join(FreeCAD.getUserAppDataDir(), "AdditionalPythonPackages") + old_directory = os.path.join(fci.DataPaths().data_dir, "AdditionalPythonPackages") new_directory = utils.get_pip_target_directory() new_directory_name = new_directory.rsplit(os.path.sep, 1)[1] @@ -395,10 +417,10 @@ def migrate_old_am_installations(cls) -> bool: continue old_path = os.path.join(old_directory, content_item) new_path = os.path.join(new_directory, content_item) - FreeCAD.Console.PrintLog( + fci.Console.PrintLog( f"Moving {content_item} into the new (versioned) directory structure\n" ) - FreeCAD.Console.PrintLog(f" {old_path} --> {new_path}\n") + fci.Console.PrintLog(f" {old_path} --> {new_path}\n") shutil.move(old_path, new_path) migrated = True @@ -415,10 +437,9 @@ def migrate_old_am_installations(cls) -> bool: return migrated @classmethod - def get_known_python_versions(cls) -> List[Tuple[int, int, int]]: + def get_known_python_versions(cls) -> List[Tuple[int, int]]: """Get the list of Python versions that the Addon Manager has seen before.""" - pref = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Addons") - known_python_versions_string = pref.GetString("KnownPythonVersions", "[]") + known_python_versions_string = fci.Preferences().get("KnownPythonVersions") known_python_versions = json.loads(known_python_versions_string) return known_python_versions @@ -428,8 +449,7 @@ def _add_current_python_version(cls) -> None: major, minor, _ = platform.python_version_tuple() if not [major, minor] in known_python_versions: known_python_versions.append((major, minor)) - pref = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Addons") - pref.SetString("KnownPythonVersions", json.dumps(known_python_versions)) + fci.Preferences().set("KnownPythonVersions", json.dumps(known_python_versions)) @classmethod def _current_python_version_is_new(cls) -> bool: @@ -441,8 +461,8 @@ def _current_python_version_is_new(cls) -> bool: return True return False - def _load_old_package_list(self) -> List[str]: - """Gets the list of packages from the package installation manifest""" + def _load_old_package_list(self) -> Iterable[str]: + """Gets iterable of packages from the package installation manifest""" known_python_versions = self.get_known_python_versions() if not known_python_versions: @@ -450,12 +470,12 @@ def _load_old_package_list(self) -> List[str]: last_version = known_python_versions[-1] expected_directory = f"py{last_version[0]}{last_version[1]}" expected_directory = os.path.join( - FreeCAD.getUserAppDataDir(), "AdditionalPythonPackages", expected_directory + fci.DataPaths().data_dir, "AdditionalPythonPackages", expected_directory ) # For now just do this synchronously worker_object = PythonPackageManager.PipRunner(expected_directory) worker_object.process() - packages = self._parse_pip_list_output( + packages = parse_pip_list_output( worker_object.all_packages_stdout, worker_object.outdated_packages_stdout ) return packages.keys() @@ -472,5 +492,5 @@ def _reinstall_all_packages(self) -> None: try: call_pip(args) except PipFailed as e: - FreeCAD.Console.PrintError(str(e) + "\n") + fci.Console.PrintError(str(e) + "\n") return diff --git a/src/Mod/AddonManager/addonmanager_utilities.py b/src/Mod/AddonManager/addonmanager_utilities.py index 8b3f2582f618..b0e66ca00b4b 100644 --- a/src/Mod/AddonManager/addonmanager_utilities.py +++ b/src/Mod/AddonManager/addonmanager_utilities.py @@ -24,11 +24,16 @@ """ Utilities to work across different platforms, providers and python versions """ +from datetime import datetime +from typing import Optional, Any +import ctypes import os import platform +import re import shutil import stat import subprocess +import time import re import ctypes from typing import Optional, Any @@ -38,9 +43,10 @@ try: from PySide import QtCore, QtGui, QtWidgets except ImportError: - QtCore = None - QtWidgets = None - QtGui = None + try: + from PySide6 import QtCore, QtGui, QtWidgets + except ImportError: + from PySide2 import QtCore, QtGui, QtWidgets import addonmanager_freecad_interface as fci @@ -397,7 +403,7 @@ def blocking_get(url: str, method=None) -> bytes: return p -def run_interruptable_subprocess(args) -> subprocess.CompletedProcess: +def run_interruptable_subprocess(args, timeout_secs: int = 10) -> subprocess.CompletedProcess: """Wrap subprocess call so it can be interrupted gracefully.""" creation_flags = 0 if hasattr(subprocess, "CREATE_NO_WINDOW"): @@ -417,14 +423,23 @@ def run_interruptable_subprocess(args) -> subprocess.CompletedProcess: stdout = "" stderr = "" return_code = None + start_time = time.time() while return_code is None: try: - stdout, stderr = p.communicate(timeout=10) + # one second timeout allows interrupting the run once per second + stdout, stderr = p.communicate(timeout=1) return_code = p.returncode except subprocess.TimeoutExpired: - if QtCore.QThread.currentThread().isInterruptionRequested(): + if ( + hasattr(QtCore, "QThread") + and QtCore.QThread.currentThread().isInterruptionRequested() + ): p.kill() raise ProcessInterrupted() + if time.time() - start_time >= timeout_secs: # The real timeout + p.kill() + stdout, stderr = p.communicate() + return_code = -1 if return_code is None or return_code != 0: raise subprocess.CalledProcessError( return_code if return_code is not None else -1, args, stdout, stderr @@ -432,6 +447,37 @@ def run_interruptable_subprocess(args) -> subprocess.CompletedProcess: return subprocess.CompletedProcess(args, return_code, stdout, stderr) +def process_date_string_to_python_datetime(date_string: str) -> datetime: + """For modern macros the expected date format is ISO 8601, YYYY-MM-DD. For older macros this standard was not always + used, and various orderings and separators were used. This function tries to match the majority of those older + macros. Commonly-used separators are periods, slashes, and dashes.""" + + def raise_error(bad_string: str, root_cause: Exception = None): + raise ValueError( + f"Unrecognized date string '{bad_string}' (expected YYYY-MM-DD)" + ) from root_cause + + split_result = re.split(r"[ ./-]+", date_string.strip()) + if len(split_result) != 3: + raise_error(date_string) + + try: + split_result = [int(x) for x in split_result] + # The earliest possible year an addon can be created or edited is 2001: + if split_result[0] > 2000: + return datetime(split_result[0], split_result[1], split_result[2]) + elif split_result[2] > 2000: + # Generally speaking it's not possible to distinguish between DD-MM and MM-DD, so try the first, and + # only if that fails try the second + if split_result[1] <= 12: + return datetime(split_result[2], split_result[1], split_result[0]) + return datetime(split_result[2], split_result[0], split_result[1]) + else: + raise ValueError(f"Invalid year in date string '{date_string}'") + except ValueError as exception: + raise_error(date_string, exception) + + def get_main_am_window(): windows = QtWidgets.QApplication.topLevelWidgets() for widget in windows: diff --git a/src/Mod/AddonManager/addonmanager_workers_startup.py b/src/Mod/AddonManager/addonmanager_workers_startup.py index 32f590467b62..c84b226c6a34 100644 --- a/src/Mod/AddonManager/addonmanager_workers_startup.py +++ b/src/Mod/AddonManager/addonmanager_workers_startup.py @@ -32,7 +32,7 @@ import stat import threading import time -from typing import List +from typing import List, Optional import xml.etree.ElementTree from PySide import QtCore @@ -830,7 +830,7 @@ def _process_queue(self, num_macros) -> bool: time.sleep(0.1) return False - def update_and_advance(self, repo: Addon) -> None: + def update_and_advance(self, repo: Optional[Addon]) -> None: """Emit the updated signal and launch the next item from the queue.""" if repo is not None: if repo.macro.name not in self.failed: @@ -842,7 +842,10 @@ def update_and_advance(self, repo: Addon) -> None: if QtCore.QThread.currentThread().isInterruptionRequested(): return - message = translate("AddonsInstaller", "Caching {} macro").format(repo.display_name) + if repo is not None: + message = translate("AddonsInstaller", "Caching {} macro").format(repo.display_name) + else: + message = translate("AddonsInstaller", "Caching macros") self.progress_made.emit(message, len(self.repos) - self.repo_queue.qsize(), len(self.repos)) try: diff --git a/src/Mod/Assembly/App/AssemblyObject.cpp b/src/Mod/Assembly/App/AssemblyObject.cpp index ee82a21e4e0c..438dc9933211 100644 --- a/src/Mod/Assembly/App/AssemblyObject.cpp +++ b/src/Mod/Assembly/App/AssemblyObject.cpp @@ -33,6 +33,7 @@ #include #include +#include #include #include #include @@ -45,6 +46,7 @@ #include #include +#include #include #include @@ -92,25 +94,10 @@ FC_LOG_LEVEL_INIT("Assembly", true, true, true) using namespace Assembly; using namespace MbD; -/* -static void printPlacement(Base::Placement plc, const char* name) -{ - Base::Vector3d pos = plc.getPosition(); - Base::Vector3d axis; - double angle; - Base::Rotation rot = plc.getRotation(); - rot.getRawValue(axis, angle); - Base::Console().Warning( - "placement %s : position (%.1f, %.1f, %.1f) - axis (%.1f, %.1f, %.1f) angle %.1f\n", - name, - pos.x, - pos.y, - pos.z, - axis.x, - axis.y, - axis.z, - angle); -}*/ + + +namespace PartApp = Part; + // ================================ Assembly Object ============================ @@ -154,7 +141,7 @@ int AssemblyObject::solve(bool enableRedo, bool updateJCS) objectPartMap.clear(); motions.clear(); - std::vector groundedObjs = fixGroundedParts(); + auto groundedObjs = fixGroundedParts(); if (groundedObjs.empty()) { // If no part fixed we can't solve. return -6; @@ -197,7 +184,7 @@ int AssemblyObject::generateSimulation(App::DocumentObject* sim) motions = getMotionsFromSimulation(sim); - std::vector groundedObjs = fixGroundedParts(); + auto groundedObjs = fixGroundedParts(); if (groundedObjs.empty()) { // If no part fixed we can't solve. return -6; @@ -370,7 +357,8 @@ Base::Placement AssemblyObject::getMbdPlacement(std::shared_ptr mbdPar bool AssemblyObject::validateNewPlacements() { // First we check if a grounded object has moved. It can happen that they flip. - for (auto* obj : getGroundedParts()) { + auto groundedParts = getGroundedParts(); + for (auto* obj : groundedParts) { auto* propPlacement = dynamic_cast(obj->getPropertyByName("Placement")); if (propPlacement) { @@ -386,7 +374,8 @@ bool AssemblyObject::validateNewPlacements() if (!oldPlc.isSame(newPlacement)) { Base::Console().Warning( - "Assembly : Ignoring bad solve, a grounded object moved.\n"); + "Assembly : Ignoring bad solve, a grounded object (%s) moved.\n", + obj->getFullLabel()); return false; } } @@ -768,11 +757,11 @@ std::vector AssemblyObject::getJointsOfPart(App::DocumentO return jointsOf; } -std::vector AssemblyObject::getGroundedParts() +std::unordered_set AssemblyObject::getGroundedParts() { std::vector groundedJoints = getGroundedJoints(); - std::vector groundedObjs; + std::unordered_set groundedSet; for (auto gJoint : groundedJoints) { if (!gJoint) { continue; @@ -783,34 +772,49 @@ std::vector AssemblyObject::getGroundedParts() if (propObj) { App::DocumentObject* objToGround = propObj->getValue(); - groundedObjs.push_back(objToGround); + if (objToGround) { + groundedSet.insert(objToGround); + } } } - return groundedObjs; + + // We also need to add all the root-level datums objects that are not attached. + std::vector objs = Group.getValues(); + for (auto* obj : objs) { + if (obj->isDerivedFrom() + || obj->isDerivedFrom()) { + auto* pcAttach = obj->getExtensionByType(); + if (pcAttach) { + // If it's a Part datums, we check if it's attached. If yes then we ignore it. + std::string mode = pcAttach->MapMode.getValueAsString(); + if (mode != "Deactivated") { + continue; + } + } + groundedSet.insert(obj); + } + } + + // Origin is not in Group so we add it separately + groundedSet.insert(Origin.getValue()); + + return groundedSet; } -std::vector AssemblyObject::fixGroundedParts() +std::unordered_set AssemblyObject::fixGroundedParts() { - std::vector groundedJoints = getGroundedJoints(); + auto groundedParts = getGroundedParts(); - std::vector groundedObjs; - for (auto obj : groundedJoints) { + for (auto obj : groundedParts) { if (!obj) { continue; } - auto* propObj = dynamic_cast(obj->getPropertyByName("ObjectToGround")); - - if (propObj) { - App::DocumentObject* objToGround = propObj->getValue(); - - Base::Placement plc = getPlacementFromProp(obj, "Placement"); - std::string str = obj->getFullName(); - fixGroundedPart(objToGround, plc, str); - groundedObjs.push_back(objToGround); - } + Base::Placement plc = getPlacementFromProp(obj, "Placement"); + std::string str = obj->getFullName(); + fixGroundedPart(obj, plc, str); } - return groundedObjs; + return groundedParts; } void AssemblyObject::fixGroundedPart(App::DocumentObject* obj, @@ -921,7 +925,7 @@ bool AssemblyObject::isObjInSetOfObjRefs(App::DocumentObject* obj, const std::ve } void AssemblyObject::removeUnconnectedJoints(std::vector& joints, - std::vector groundedObjs) + std::unordered_set groundedObjs) { std::vector connectedParts; @@ -1013,7 +1017,7 @@ bool AssemblyObject::isPartGrounded(App::DocumentObject* obj) return false; } - std::vector groundedObjs = getGroundedParts(); + auto groundedObjs = getGroundedParts(); for (auto* groundedObj : groundedObjs) { if (groundedObj->getFullName() == obj->getFullName()) { @@ -1030,7 +1034,7 @@ bool AssemblyObject::isPartConnected(App::DocumentObject* obj) return false; } - std::vector groundedObjs = getGroundedParts(); + auto groundedObjs = getGroundedParts(); std::vector joints = getJoints(false); std::vector connectedParts; @@ -1595,8 +1599,6 @@ std::string AssemblyObject::handleOneSideOfJoint(App::DocumentObject* joint, // containing Part. if (obj->getNameInDocument() != part->getNameInDocument()) { - // Make plc relative to the containing part - // plc = objPlc * plc; // this would not work for nested parts. auto* ref = dynamic_cast(joint->getPropertyByName(propRefName)); if (!ref) { @@ -1839,9 +1841,6 @@ AssemblyObject::makeMbdPart(std::string& name, Base::Placement plc, double mass) Base::Vector3d r1 = mat.getRow(1); Base::Vector3d r2 = mat.getRow(2); mbdPart->setRotationMatrix(r0.x, r0.y, r0.z, r1.x, r1.y, r1.z, r2.x, r2.y, r2.z); - /*double q0, q1, q2, q3; - rot.getValue(q0, q1, q2, q3); - mbdPart->setQuarternions(q0, q1, q2, q3);*/ return mbdPart; } @@ -1862,9 +1861,7 @@ std::shared_ptr AssemblyObject::makeMbdMarker(std::string& name, Bas Base::Vector3d r1 = mat.getRow(1); Base::Vector3d r2 = mat.getRow(2); mbdMarker->setRotationMatrix(r0.x, r0.y, r0.z, r1.x, r1.y, r1.z, r2.x, r2.y, r2.z); - /*double q0, q1, q2, q3; - rot.getValue(q0, q1, q2, q3); - mbdMarker->setQuarternions(q0, q1, q2, q3);*/ + return mbdMarker; } @@ -1984,29 +1981,6 @@ std::vector AssemblyObject::getSubAssemblies() return subAssemblies; } -void AssemblyObject::updateGroundedJointsPlacements() -{ - std::vector groundedJoints = getGroundedJoints(); - - for (auto gJoint : groundedJoints) { - if (!gJoint) { - continue; - } - - auto* propObj = - dynamic_cast(gJoint->getPropertyByName("ObjectToGround")); - auto* propPlc = - dynamic_cast(gJoint->getPropertyByName("Placement")); - - if (propObj && propPlc) { - App::DocumentObject* obj = propObj->getValue(); - auto* propObjPlc = - dynamic_cast(obj->getPropertyByName("Placement")); - propPlc->setValue(propObjPlc->getValue()); - } - } -} - void AssemblyObject::ensureIdentityPlacements() { std::vector group = Group.getValues(); @@ -2037,36 +2011,3 @@ void AssemblyObject::ensureIdentityPlacements() } } } - -/*void Part::handleChangedPropertyType(Base::XMLReader& reader, const char* TypeName, App::Property* -prop) -{ - App::Part::handleChangedPropertyType(reader, TypeName, prop); -}*/ - -/* Apparently not necessary as App::Part doesn't have this. -// Python Assembly feature --------------------------------------------------------- - -namespace App -{ - /// @cond DOXERR - PROPERTY_SOURCE_TEMPLATE(Assembly::AssemblyObjectPython, Assembly::AssemblyObject) - template<> - const char* Assembly::AssemblyObjectPython::getViewProviderName() const - { - return "AssemblyGui::ViewProviderAssembly"; - } - template<> - PyObject* Assembly::AssemblyObjectPython::getPyObject() - { - if (PythonObject.is(Py::_None())) { - // ref counter is set to 1 - PythonObject = Py::Object(new FeaturePythonPyT(this), true); - } - return Py::new_reference_to(PythonObject); - } - /// @endcond - - // explicit template instantiation - template class AssemblyExport FeaturePythonT; -}// namespace App*/ diff --git a/src/Mod/Assembly/App/AssemblyObject.h b/src/Mod/Assembly/App/AssemblyObject.h index 8ddf548a4295..b8ea59049c81 100644 --- a/src/Mod/Assembly/App/AssemblyObject.h +++ b/src/Mod/Assembly/App/AssemblyObject.h @@ -33,7 +33,7 @@ #include #include "SimulationGroup.h" -#include <3rdParty/OndselSolver/OndselSolver/enum.h> +#include namespace MbD { @@ -157,8 +157,8 @@ class AssemblyExport AssemblyObject: public App::Part std::vector getJointsOfPart(App::DocumentObject* part); App::DocumentObject* getJointOfPartConnectingToGround(App::DocumentObject* part, std::string& name); - std::vector getGroundedParts(); - std::vector fixGroundedParts(); + std::unordered_set getGroundedParts(); + std::unordered_set fixGroundedParts(); void fixGroundedPart(App::DocumentObject* obj, Base::Placement& plc, std::string& jointName); bool isJointConnectingPartToGround(App::DocumentObject* joint, const char* partPropName); @@ -166,7 +166,7 @@ class AssemblyExport AssemblyObject: public App::Part bool isObjInSetOfObjRefs(App::DocumentObject* obj, const std::vector& pairs); void removeUnconnectedJoints(std::vector& joints, - std::vector groundedObjs); + std::unordered_set groundedObjs); void traverseAndMarkConnectedParts(App::DocumentObject* currentPart, std::vector& connectedParts, const std::vector& joints); @@ -186,7 +186,6 @@ class AssemblyExport AssemblyObject: public App::Part void setObjMasses(std::vector> objectMasses); std::vector getSubAssemblies(); - void updateGroundedJointsPlacements(); std::vector getMotionsFromSimulation(App::DocumentObject* sim); diff --git a/src/Mod/Assembly/App/AssemblyUtils.cpp b/src/Mod/Assembly/App/AssemblyUtils.cpp index d406ef5bfdd8..f48eb4dbd76c 100644 --- a/src/Mod/Assembly/App/AssemblyUtils.cpp +++ b/src/Mod/Assembly/App/AssemblyUtils.cpp @@ -33,6 +33,7 @@ #endif #include +#include #include #include #include @@ -536,7 +537,9 @@ App::DocumentObject* getObjFromRef(const App::DocumentObject* obj, const std::st // getViewProviderName instead of isDerivedFrom to avoid dependency on sketcher const auto isDerivedFromVpSketch = strcmp(obj->getViewProviderName(), "SketcherGui::ViewProviderSketch") == 0; - return isDerivedFromVpSketch || obj->isDerivedFrom(); + return isDerivedFromVpSketch || obj->isDerivedFrom() + || obj->isDerivedFrom() + || obj->isDerivedFrom(); }; // Helper function to handle PartDesign::Body objects diff --git a/src/Mod/Assembly/App/CMakeLists.txt b/src/Mod/Assembly/App/CMakeLists.txt index b945f612c16c..bf8e14e7aca7 100644 --- a/src/Mod/Assembly/App/CMakeLists.txt +++ b/src/Mod/Assembly/App/CMakeLists.txt @@ -7,11 +7,6 @@ include_directories( ${OCC_INCLUDE_DIR} ${PYTHON_INCLUDE_DIRS} ) -if (NOT FREECAD_USE_EXTERNAL_ONDSELSOLVER) -include_directories( - ${CMAKE_SOURCE_DIR}/src/3rdParty/OndselSolver -) -endif () link_directories(${OCC_LIBRARY_DIR}) set(Assembly_LIBS diff --git a/src/Mod/Assembly/CMakeLists.txt b/src/Mod/Assembly/CMakeLists.txt index e74cdbce46f0..42149923e3c6 100644 --- a/src/Mod/Assembly/CMakeLists.txt +++ b/src/Mod/Assembly/CMakeLists.txt @@ -1,3 +1,14 @@ +if (NOT FREECAD_USE_EXTERNAL_ONDSELSOLVER) +include_directories( + ${CMAKE_SOURCE_DIR}/src/3rdParty/OndselSolver +) +else () + check_include_file_cxx(OndselSolver/enum.h HAVE_ONDSELSOLVER_H) + if (NOT HAVE_ONDSELSOLVER_H) + message(FATAL_ERROR "FREECAD_USE_EXTERNAL_ONDSELSOLVER is set but the required system includes are not available") + endif () +endif () + add_subdirectory(App) if(BUILD_GUI) diff --git a/src/Mod/Assembly/CommandCreateJoint.py b/src/Mod/Assembly/CommandCreateJoint.py index 77e6b3b7f7f7..3f3dae5512f7 100644 --- a/src/Mod/Assembly/CommandCreateJoint.py +++ b/src/Mod/Assembly/CommandCreateJoint.py @@ -47,11 +47,7 @@ def noOtherTaskActive(): def isCreateJointActive(): - return ( - UtilsAssembly.isAssemblyGrounded() - and UtilsAssembly.assembly_has_at_least_n_parts(2) - and noOtherTaskActive() - ) + return UtilsAssembly.assembly_has_at_least_n_parts(1) and noOtherTaskActive() def activateJoint(index): diff --git a/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp b/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp index 1f3016927d2d..e3b78445b2d5 100644 --- a/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp +++ b/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp @@ -136,8 +136,6 @@ void ViewProviderAssembly::setupContextMenu(QMenu* menu, QObject* receiver, cons bool ViewProviderAssembly::doubleClicked() { if (isInEditMode()) { - // Part is already 'Active' so we exit edit mode. - // Gui::Command::doCommand(Gui::Command::Gui, "Gui.activeDocument().resetEdit()"); getDocument()->resetEdit(); } else { @@ -165,7 +163,6 @@ bool ViewProviderAssembly::canDragObject(App::DocumentObject* obj) const if (!obj || obj->getTypeId() == Assembly::JointGroup::getClassTypeId()) { return false; } - return true; } @@ -214,7 +211,6 @@ bool ViewProviderAssembly::canDragObjectToTarget(App::DocumentObject* obj, joint->getNameInDocument()); } } - return true; } @@ -233,19 +229,12 @@ bool ViewProviderAssembly::setEdit(int mode) PARTKEY, this->getObject()->getNameInDocument()); - // When we set edit, we update the grounded joints placements to support : - // - If user transformed the grounded object - // - For nested assemblies where the grounded object moves around. - auto* assembly = getObject(); - assembly->updateGroundedJointsPlacements(); - setDragger(); attachSelection(); return true; } - return ViewProviderPart::setEdit(mode); } @@ -257,7 +246,6 @@ void ViewProviderAssembly::unsetEdit(int mode) docsToMove.clear(); unsetDragger(); - detachSelection(); // Check if the view is still active before trying to deactivate the assembly. @@ -274,7 +262,6 @@ void ViewProviderAssembly::unsetEdit(int mode) PARTKEY); return; } - ViewProviderPart::unsetEdit(mode); } @@ -325,7 +312,6 @@ App::DocumentObject* ViewProviderAssembly::getActivePart() const if (!activeView) { return nullptr; } - return activeView->getActiveObject(PARTKEY); } @@ -347,7 +333,6 @@ bool ViewProviderAssembly::keyPressed(bool pressed, int key) if (key == SoKeyboardEvent::LEFT_CONTROL || key == SoKeyboardEvent::RIGHT_CONTROL) { ctrlPressed = pressed; } - return false; // handle all other key events } @@ -412,14 +397,12 @@ bool ViewProviderAssembly::tryMouseMove(const SbVec2s& cursorPos, Gui::View3DInv newPos = Base::Vector3d(vec[0], vec[1], vec[2]); } - for (auto& objToMove : docsToMove) { App::DocumentObject* obj = objToMove.obj; auto* propPlacement = dynamic_cast(obj->getPropertyByName("Placement")); if (propPlacement) { Base::Placement plc = objToMove.plc; - // Base::Console().Warning("newPos %f %f %f\n", newPos.x, newPos.y, newPos.z); if (dragMode == DragMode::RotationOnPlane) { Base::Vector3d center = jcsGlobalPlc.getPosition(); @@ -427,7 +410,6 @@ bool ViewProviderAssembly::tryMouseMove(const SbVec2s& cursorPos, Gui::View3DInv jcsGlobalPlc.getRotation().multVec(Base::Vector3d(0., 0., -1.)); double angle = (newPosRot - center).GetAngleOriented(initialPositionRot - center, norm); - // Base::Console().Warning("angle %f\n", angle); Base::Rotation zRotation = Base::Rotation(Base::Vector3d(0., 0., 1.), angle); Base::Placement rotatedGlovalJcsPlc = jcsGlobalPlc * Base::Placement(Base::Vector3d(), zRotation); @@ -455,7 +437,6 @@ bool ViewProviderAssembly::tryMouseMove(const SbVec2s& cursorPos, Gui::View3DInv boost::ignore_unused(projInitialPositionRot); double angle = (newPosRot - center).GetAngleOriented(initialPositionRot - center, norm); - // Base::Console().Warning("angle %f\n", angle); Base::Rotation zRotation = Base::Rotation(Base::Vector3d(0., 0., 1.), angle); Base::Placement rotatedGlovalJcsPlc = newJcsGlobalPlc * Base::Placement(Base::Vector3d(), zRotation); @@ -470,7 +451,6 @@ bool ViewProviderAssembly::tryMouseMove(const SbVec2s& cursorPos, Gui::View3DInv Base::Vector3d delta = newPos - prevPosition; Base::Vector3d pos = propPlacement->getValue().getPosition() + delta; - // Base::Vector3d pos = newPos + (plc.getPosition() - initialPosition); plc.setPosition(pos); } propPlacement->setValue(plc); @@ -484,7 +464,6 @@ bool ViewProviderAssembly::tryMouseMove(const SbVec2s& cursorPos, Gui::View3DInv "User parameter:BaseApp/Preferences/Mod/Assembly"); bool solveOnMove = hGrp->GetBool("SolveOnMove", true); if (solveOnMove && dragMode != DragMode::TranslationNoSolve) { - // assemblyPart->solve(/*enableRedo = */ false, /*updateJCS = */ false); assemblyPart->doDragStep(); } else { @@ -546,7 +525,6 @@ bool ViewProviderAssembly::mouseButtonPressed(int Button, } } } - return false; } @@ -589,7 +567,6 @@ bool ViewProviderAssembly::canDragObjectIn3d(App::DocumentObject* obj) const return true; } } - return false; } @@ -688,9 +665,6 @@ bool ViewProviderAssembly::getSelectedObjectsWithinAssembly(bool addPreselection // it is not selected at that point. So we need to get the preselection too. if (addPreselection && Gui::Selection().hasPreselection()) { - // Base::Console().Warning("Gui::Selection().getPreselection().pSubName %s\n", - // Gui::Selection().getPreselection().pSubName); - App::DocumentObject* selRoot = Gui::Selection().getPreselection().Object.getObject(); std::string sub = Gui::Selection().getPreselection().pSubName; @@ -1140,7 +1114,6 @@ bool ViewProviderAssembly::canDelete(App::DocumentObject* objBeingDeleted) const joint->getNameInDocument()); } } - return res; } diff --git a/src/Mod/Assembly/JointObject.py b/src/Mod/Assembly/JointObject.py index a2c06ea7ca5e..8fb431fcae52 100644 --- a/src/Mod/Assembly/JointObject.py +++ b/src/Mod/Assembly/JointObject.py @@ -706,20 +706,20 @@ def preSolve(self, joint, savePlc=True): part2Connected = assembly.isPartConnected(part2) joint.Activated = True else: - part1Connected = False - part2Connected = True + part1Connected = True + part2Connected = False - if not part2Connected: + if not part1Connected: if savePlc: - self.partMovedByPresolved = part2 - self.presolveBackupPlc = part2.Placement + self.partMovedByPresolved = part1 + self.presolveBackupPlc = part1.Placement - globalJcsPlc1 = UtilsAssembly.getJcsGlobalPlc(joint.Placement1, joint.Reference1) - jcsPlc2 = UtilsAssembly.getJcsPlcRelativeToPart( - assembly, joint.Placement2, joint.Reference2 + globalJcsPlc2 = UtilsAssembly.getJcsGlobalPlc(joint.Placement2, joint.Reference2) + jcsPlc1 = UtilsAssembly.getJcsPlcRelativeToPart( + assembly, joint.Placement1, joint.Reference1 ) if not sameDir: - jcsPlc2 = UtilsAssembly.flipPlacement(jcsPlc2) + jcsPlc1 = UtilsAssembly.flipPlacement(jcsPlc1) # For link groups and sub-assemblies we have to take into account # the parent placement (ie the linkgroup plc) as the linkgroup is not the moving part @@ -727,22 +727,22 @@ def preSolve(self, joint, savePlc=True): # parentPlc = UtilsAssembly.getParentPlacementIfNeeded(part2) # part2.Placement = globalJcsPlc1 * jcsPlc2.inverse() * parentPlc.inverse() - part2.Placement = globalJcsPlc1 * jcsPlc2.inverse() + part1.Placement = globalJcsPlc2 * jcsPlc1.inverse() return True - elif not part1Connected: + elif not part2Connected: if savePlc: - self.partMovedByPresolved = part1 - self.presolveBackupPlc = part1.Placement + self.partMovedByPresolved = part2 + self.presolveBackupPlc = part2.Placement - globalJcsPlc2 = UtilsAssembly.getJcsGlobalPlc(joint.Placement2, joint.Reference2) - jcsPlc1 = UtilsAssembly.getJcsPlcRelativeToPart( - assembly, joint.Placement1, joint.Reference1 + globalJcsPlc1 = UtilsAssembly.getJcsGlobalPlc(joint.Placement1, joint.Reference1) + jcsPlc2 = UtilsAssembly.getJcsPlcRelativeToPart( + assembly, joint.Placement2, joint.Reference2 ) if not sameDir: - jcsPlc1 = UtilsAssembly.flipPlacement(jcsPlc1) + jcsPlc2 = UtilsAssembly.flipPlacement(jcsPlc2) - part1.Placement = globalJcsPlc2 * jcsPlc1.inverse() + part2.Placement = globalJcsPlc1 * jcsPlc2.inverse() return True return False @@ -956,18 +956,6 @@ def __init__(self, joint, obj_to_ground): joint.ObjectToGround = obj_to_ground - joint.addProperty( - "App::PropertyPlacement", - "Placement", - "Ground", - QT_TRANSLATE_NOOP( - "App::Property", - "This is where the part is grounded.", - ), - ) - - joint.Placement = obj_to_ground.Placement - def dumps(self): return None @@ -999,7 +987,7 @@ def attach(self, vobj): if groundedObj is None: return - self.scaleFactor = 1.5 + self.scaleFactor = 3.0 lockpadColorInt = Preferences.preferences().GetUnsigned("AssemblyConstraints", 0xCC333300) self.lockpadColor = coin.SoBaseColor() @@ -1160,24 +1148,33 @@ def allow(self, doc, obj, sub): return False ref = [obj, [sub]] - selected_object = UtilsAssembly.getObject(ref) + sel_obj = UtilsAssembly.getObject(ref) - if not ( - selected_object.isDerivedFrom("Part::Feature") - or selected_object.isDerivedFrom("App::Part") + if UtilsAssembly.isLink(sel_obj): + linked = sel_obj.getLinkedObject() + if linked == sel_obj: + return True # We accept empty links + sel_obj = linked + + if sel_obj.isDerivedFrom("Part::Feature") or sel_obj.isDerivedFrom("App::Part"): + return True + + if sel_obj.isDerivedFrom("App::LocalCoordinateSystem") or sel_obj.isDerivedFrom( + "App::DatumElement" ): - if UtilsAssembly.isLink(selected_object): - linked = selected_object.getLinkedObject() - if linked == selected_object: - # We accept empty links - return True - - if not (linked.isDerivedFrom("Part::Feature") or linked.isDerivedFrom("App::Part")): - return False - else: - return False + datum = sel_obj + if datum.isDerivedFrom("App::DatumElement"): + parent = datum.getParent() + if parent.isDerivedFrom("App::LocalCoordinateSystem"): + datum = parent - return True + if self.assembly.hasObject(datum) and hasattr(datum, "MapMode"): + # accept only datum that are not attached + return datum.MapMode == "Deactivated" + + return True + + return False activeTask = None diff --git a/src/Mod/Assembly/SoSwitchMarker.py b/src/Mod/Assembly/SoSwitchMarker.py index 0b7e3a9bf528..448fb70f6fe4 100644 --- a/src/Mod/Assembly/SoSwitchMarker.py +++ b/src/Mod/Assembly/SoSwitchMarker.py @@ -43,7 +43,7 @@ def __init__(self, vobj): super().__init__() # Initialize the SoSwitch base class self.axis_thickness = 3 - self.scaleFactor = 20 + self.scaleFactor = 40 view_params = App.ParamGet("User parameter:BaseApp/Preferences/View") param_x_axis_color = view_params.GetUnsigned("AxisXColor", 0xCC333300) diff --git a/src/Mod/Assembly/UtilsAssembly.py b/src/Mod/Assembly/UtilsAssembly.py index 9474568aabb8..5995a21ad199 100644 --- a/src/Mod/Assembly/UtilsAssembly.py +++ b/src/Mod/Assembly/UtilsAssembly.py @@ -161,6 +161,21 @@ def getObject(ref): if obj.TypeId in {"App::Part", "Assembly::AssemblyObject"} or isLinkGroup(obj): continue + elif obj.isDerivedFrom("App::LocalCoordinateSystem"): + # 2 cases possible, either we have the LCS itself: "part.LCS." + # or we have a datum: "part.LCS.X_Axis" + if i + 1 < len(names): + obj2 = None + for obji in obj.OutList: + if obji.Name == names[i + 1]: + obj2 = obji + break + if obj2 and obj2.isDerivedFrom("App::DatumElement"): + return obj2 + + elif obj.isDerivedFrom("App::DatumElement"): + return obj + elif obj.TypeId == "PartDesign::Body": if i + 1 < len(names): obj2 = None @@ -168,7 +183,7 @@ def getObject(ref): if obji.Name == names[i + 1]: obj2 = obji break - if obj2 and isBodySubObject(obj2.TypeId): + if obj2 and isBodySubObject(obj2): return obj2 return obj @@ -185,7 +200,7 @@ def getObject(ref): if obji.Name == names[i + 1]: obj2 = obji break - if obj2 and isBodySubObject(obj2.TypeId): + if obj2 and isBodySubObject(obj2): return obj2 return obj elif linked_obj.isDerivedFrom("Part::Feature"): @@ -197,13 +212,12 @@ def getObject(ref): return None -def isBodySubObject(typeId): +def isBodySubObject(obj): return ( - typeId == "Sketcher::SketchObject" - or typeId == "PartDesign::Point" - or typeId == "PartDesign::Line" - or typeId == "PartDesign::Plane" - or typeId == "PartDesign::CoordinateSystem" + obj.isDerivedFrom("Sketcher::SketchObject") + or obj.isDerivedFrom("PartDesign::Datum") + or obj.isDerivedFrom("App::DatumElement") + or obj.isDerivedFrom("App::LocalCoordinateSystem") ) @@ -348,21 +362,6 @@ def getElementName(full_name): if parts[-1] in {"X", "Y", "Z", "Point", "Line", "Plane"}: return "" - # Case of origin objects - if parts[-1] == "": - if "X_Axis" in parts[-2]: - return "X_Axis" - if "Y_Axis" in parts[-2]: - return "Y_Axis" - if "Z_Axis" in parts[-2]: - return "Z_Axis" - if "XY_Plane" in parts[-2]: - return "XY_Plane" - if "XZ_Plane" in parts[-2]: - return "XZ_Plane" - if "YZ_Plane" in parts[-2]: - return "YZ_Plane" - return parts[-1] @@ -946,16 +945,8 @@ def findPlacement(ref, ignoreVertex=False): elt = getElementName(ref[1][0]) vtx = getElementName(ref[1][1]) - # case of origin objects. - if elt == "X_Axis" or elt == "YZ_Plane": - return App.Placement(App.Vector(), App.Rotation(App.Vector(0, 1, 0), -90)) - if elt == "Y_Axis" or elt == "XZ_Plane": - return App.Placement(App.Vector(), App.Rotation(App.Vector(1, 0, 0), 90)) - if elt == "Z_Axis" or elt == "XY_Plane": - return App.Placement() - if not elt or not vtx: - # case of whole parts such as PartDesign::Body or PartDesign::CordinateSystem/Point/Line/Plane. + # case of whole parts such as PartDesign::Body or App/PartDesign::CordinateSystem/Point/Line/Plane. return App.Placement() plc = App.Placement() diff --git a/src/Mod/BIM/Arch.py b/src/Mod/BIM/Arch.py index 818b860d2e47..bed653b0e584 100644 --- a/src/Mod/BIM/Arch.py +++ b/src/Mod/BIM/Arch.py @@ -114,7 +114,10 @@ def makeBuildingPart(objectslist=None,baseobj=None,name=None): if FreeCAD.GuiUp: ArchBuildingPart.ViewProviderBuildingPart(obj.ViewObject) if objectslist: - obj.addObjects(objectslist) + if isinstance(objectslist,(list,tuple)): + obj.addObjects(objectslist) + else: + obj.addObject(objectslist) return obj @@ -147,6 +150,25 @@ def makeBuilding(objectslist=None,baseobj=None,name=None): return obj +def make2DDrawing(objectslist=None,baseobj=None,name=None): + + """makes a BuildingPart and turns it into a 2D drawing view""" + + obj = makeBuildingPart(objectslist) + obj.Label = name if name else translate("Arch","Drawing") + obj.IfcType = "Annotation" + obj.ObjectType = "DRAWING" + obj.setEditorMode("Area",2) + obj.setEditorMode("Height",2) + obj.setEditorMode("LevelOffset",2) + obj.setEditorMode("OnlySolids",2) + obj.setEditorMode("HeightPropagate",2) + if FreeCAD.GuiUp: + obj.ViewObject.DisplayOffset = FreeCAD.Placement() + obj.ViewObject.ShowLevel = False + return obj + + def convertFloors(floor=None): """convert the given Floor or Building (or all Arch Floors from the @@ -674,6 +696,20 @@ def makeRoof(baseobj=None, return obj +def makeSchedule(): + """makeSchedule(): Creates a schedule object in the active document""" + + import ArchSchedule + obj = FreeCAD.ActiveDocument.addObject("App::FeaturePython","Schedule") + obj.Label = translate("Arch","Schedule") + ArchSchedule._ArchSchedule(obj) + if FreeCAD.GuiUp: + ArchSchedule._ViewProviderArchSchedule(obj.ViewObject) + if hasattr(obj,"CreateSpreadsheet") and obj.CreateSpreadsheet: + obj.Proxy.getSpreadSheet(obj, force=True) + return obj + + def makeSectionPlane(objectslist=None,name=None): """makeSectionPlane([objectslist],[name]) : Creates a Section plane objects including the @@ -776,6 +812,7 @@ def makeStairs(baseobj=None,length=None,width=None,height=None,steps=None,name=N label = name if name else translate("Arch","Stairs") def setProperty(obj,length,width,height,steps): + """setProperty(obj,length,width,height,steps): sets up the basic properties for this stair""" if length: obj.Length = length else: @@ -809,7 +846,6 @@ def setProperty(obj,length,width,height,steps): stair.Label = label ArchStairs._Stairs(stair) stairs.append(stair) - stairs[0].Label = label i = 1 else: i = 0 @@ -818,17 +854,12 @@ def setProperty(obj,length,width,height,steps): stair.Label = label ArchStairs._Stairs(stair) stairs.append(stair) - stairs[i].Label = label stairs[i].Base = baseobjI - - if len(baseobjI.Shape.Edges) > 1: - stepsI = 1 #'landing' if 'multi-edges' currently - elif steps: + if steps: stepsI = steps else: stepsI = 20 setProperty(stairs[i],None,width,height,stepsI) - if i > 1: additions.append(stairs[i]) stairs[i].LastSegment = stairs[i-1] @@ -868,6 +899,7 @@ def makeRailing(stairs): import ArchPipe def makeRailingLorR(stairs,side="L"): + """makeRailingLorR(stairs,side="L"): Creates a railing on the given side of the stairs, L or R""" for stair in reversed(stairs): if side == "L": outlineLR = stair.OutlineLeft diff --git a/src/Mod/BIM/ArchAxis.py b/src/Mod/BIM/ArchAxis.py index e5918bfa8ae3..d110f749df2f 100644 --- a/src/Mod/BIM/ArchAxis.py +++ b/src/Mod/BIM/ArchAxis.py @@ -95,15 +95,21 @@ def execute(self,obj): pl = obj.Placement geoms = [] dist = 0 - if obj.Distances and obj.Length.Value: - if len(obj.Distances) == len(obj.Angles): - for i in range(len(obj.Distances)): + distances = [0] + angles = [0] + if hasattr(obj, "Distances"): + distances = obj.Distances + if hasattr(obj, "Angles"): + angles = obj.Angles + if distances and obj.Length.Value: + if angles and len(distances) == len(angles): + for i in range(len(distances)): if hasattr(obj.Length,"Value"): l = obj.Length.Value else: l = obj.Length - dist += obj.Distances[i] - ang = math.radians(obj.Angles[i]) + dist += distances[i] + ang = math.radians(angles[i]) p1 = Vector(dist,0,0) p2 = Vector(dist+(l/math.cos(ang))*math.sin(ang),l,0) if hasattr(obj,"Limit") and obj.Limit.Value: @@ -274,8 +280,29 @@ def updateData(self,obj,prop): self.linecoords.point.setValues(verts) self.lineset.coordIndex.setValues(0,len(vset),vset) self.lineset.coordIndex.setNum(len(vset)) - self.onChanged(obj.ViewObject,"BubbleSize") - self.onChanged(obj.ViewObject,"ShowLabel") + elif prop in ["Placement", "Length"] and not hasattr(obj, "Distances"): + # copy values from FlatLines/Wireframe nodes + rn = obj.ViewObject.RootNode + if rn.getNumChildren() < 3: + return + coords = rn.getChild(1) + pts = coords.point.getValues() + self.linecoords.point.setValues(pts) + #self.linecoords.point.setNum(len(pts)) + sw = rn.getChild(2) + if sw.getNumChildren() < 4: + return + edges = sw.getChild(sw.getNumChildren()-2) + if not edges.getNumChildren(): + return + if edges.getChild(0).getNumChildren() < 4: + return + eset = edges.getChild(0).getChild(3) + vset = eset.coordIndex.getValues() + self.lineset.coordIndex.setValues(0,len(vset),vset) + self.lineset.coordIndex.setNum(len(vset)) + self.onChanged(obj.ViewObject,"BubbleSize") + self.onChanged(obj.ViewObject,"ShowLabel") def onChanged(self, vobj, prop): @@ -317,7 +344,10 @@ def onChanged(self, vobj, prop): pos = [] else: pos = [vobj.BubblePosition] - for i in range(len(vobj.Object.Distances)): + n = 0 + if hasattr(vobj.Object, "Distances"): + n = len(vobj.Object.Distances) + for i in range(n): for p in pos: if hasattr(vobj.Object,"Limit") and vobj.Object.Limit.Value: verts = [vobj.Object.Placement.inverse().multVec(vobj.Object.Shape.Edges[i].Vertexes[0].Point), @@ -679,7 +709,7 @@ def update(self): 'fills the treewidget' self.updating = True self.tree.clear() - if self.obj: + if self.obj and hasattr(self.obj, "Distances"): for i in range(len(self.obj.Distances)): item = QtGui.QTreeWidgetItem(self.tree) item.setText(0,str(i+1)) diff --git a/src/Mod/BIM/ArchBuildingPart.py b/src/Mod/BIM/ArchBuildingPart.py index 6c80064aed49..421f7355c62b 100644 --- a/src/Mod/BIM/ArchBuildingPart.py +++ b/src/Mod/BIM/ArchBuildingPart.py @@ -531,6 +531,8 @@ def getIcon(self): return ":/icons/Arch_Floor_Tree.svg" elif self.Object.IfcType == "Building": return ":/icons/Arch_Building_Tree.svg" + elif self.Object.IfcType == "Annotation": + return ":/icons/BIM_ArchView.svg" return ":/icons/Arch_BuildingPart_Tree.svg" def attach(self,vobj): diff --git a/src/Mod/BIM/ArchCommands.py b/src/Mod/BIM/ArchCommands.py index 0fcf73776503..82714de28aeb 100644 --- a/src/Mod/BIM/ArchCommands.py +++ b/src/Mod/BIM/ArchCommands.py @@ -64,14 +64,14 @@ def getStringList(objects): def getDefaultColor(objectType): '''getDefaultColor(string): returns a color value for the given object type (Wall, Structure, Window, WindowGlass)''' - transparency = 0.0 + alpha = 1.0 if objectType == "Wall": c = params.get_param_arch("WallColor") elif objectType == "Structure": c = params.get_param_arch("StructureColor") elif objectType == "WindowGlass": c = params.get_param_arch("WindowGlassColor") - transparency = params.get_param_arch("WindowTransparency") / 100.0 + alpha = 1.0 - params.get_param_arch("WindowTransparency") / 100.0 elif objectType == "Rebar": c = params.get_param_arch("RebarColor") elif objectType == "Panel": @@ -82,11 +82,11 @@ def getDefaultColor(objectType): c = params.get_param_arch("ColorHelpers") elif objectType == "Construction": c = params.get_param("constructioncolor") - transparency = 0.80 + alpha = 0.2 else: c = params.get_param_view("DefaultShapeColor") r, g, b, _ = Draft.get_rgba_tuple(c) - return (r, g, b, transparency) + return (r, g, b, alpha) def addComponents(objectsList,host): '''addComponents(objectsList,hostObject): adds the given object or the objects @@ -169,7 +169,7 @@ def removeComponents(objectsList,host=None): # Check if o and o.Base has Attachment Support, and # if the support is the host object itself - thus a cyclic # dependency and probably creating TNP. - # If above is postive, remove its AttachmentSupport: + # If above is positive, remove its AttachmentSupport: if hasattr(o,"Base") and o.Base: objList = [o, o.Base] else: @@ -746,7 +746,7 @@ def getHost(obj,strict=True): return par return None -def pruneIncluded(objectslist,strict=False): +def pruneIncluded(objectslist,strict=False,silent=False): """pruneIncluded(objectslist,[strict]): removes from a list of Arch objects, those that are subcomponents of another shape-based object, leaving only the top-level shapes. If strict is True, the object is removed only if the parent is also part of the selection.""" @@ -771,7 +771,7 @@ def pruneIncluded(objectslist,strict=False): # don't consider a PartDesign_Body with a PartDesign_Clone that references obj pass elif parent.isDerivedFrom("PartDesign::SubShapeBinder") or (hasattr(parent, "TypeId") and parent.TypeId == "PartDesign::ShapeBinder"): - # don't consider a PartDesign_SubShapeBinder or PartDesign_ShapeBinder referncing this object from another object + # don't consider a PartDesign_SubShapeBinder or PartDesign_ShapeBinder referencing this object from another object pass elif hasattr(parent,"Host") and parent.Host == obj: pass @@ -793,7 +793,7 @@ def pruneIncluded(objectslist,strict=False): toplevel = True if toplevel: newlist.append(obj) - else: + elif not silent: FreeCAD.Console.PrintWarning("pruning "+obj.Label+"\n") return newlist diff --git a/src/Mod/BIM/ArchComponent.py b/src/Mod/BIM/ArchComponent.py index 5d2890fde4ec..89e79ba173ed 100644 --- a/src/Mod/BIM/ArchComponent.py +++ b/src/Mod/BIM/ArchComponent.py @@ -315,7 +315,7 @@ def onChanged(self, obj, prop): prop: string The name of the property that has changed. """ - + import math ArchIFC.IfcProduct.onChanged(self, obj, prop) diff --git a/src/Mod/BIM/ArchCurtainWall.py b/src/Mod/BIM/ArchCurtainWall.py index 3a0c480ffc13..eb9d6736ae40 100644 --- a/src/Mod/BIM/ArchCurtainWall.py +++ b/src/Mod/BIM/ArchCurtainWall.py @@ -528,6 +528,8 @@ def colorize(self,obj,force=False): if not obj.Shape or not obj.Shape.Solids: return + if not obj.ViewObject: + return basecolor = obj.ViewObject.ShapeColor basetransparency = obj.ViewObject.Transparency/100.0 panelcolor = ArchCommands.getDefaultColor("WindowGlass") diff --git a/src/Mod/BIM/ArchRebar.py b/src/Mod/BIM/ArchRebar.py index 4674877bece9..83e6f235b046 100644 --- a/src/Mod/BIM/ArchRebar.py +++ b/src/Mod/BIM/ArchRebar.py @@ -158,13 +158,13 @@ def getRebarData(self,obj): axis = DraftGeomUtils.getNormal(obj.Base.Shape) if not axis: axis = obj.Base.Placement.Rotation.multVec(FreeCAD.Vector(0,0,-1)) - size = 0 - if father: - size = (ArchCommands.projectToVector(father.Shape.copy(),axis)).Length if hasattr(obj,"Direction"): if not DraftVecUtils.isNull(obj.Direction): axis = FreeCAD.Vector(obj.Direction) axis.normalize() + size = 0 + if father: + size = (ArchCommands.projectToVector(father.Shape.copy(),axis)).Length if hasattr(obj,"Distance"): if obj.Distance.Value: size = obj.Distance.Value diff --git a/src/Mod/BIM/ArchReference.py b/src/Mod/BIM/ArchReference.py index 23f60bfd9d0f..2a6fa18396fe 100644 --- a/src/Mod/BIM/ArchReference.py +++ b/src/Mod/BIM/ArchReference.py @@ -402,7 +402,7 @@ def getPartsListFCSTD(self, obj, filename): writemode = False elif " 1: @@ -1018,6 +1022,10 @@ def onChanged(self,vobj,prop): if hasattr(vobj,"Transparency"): self.mat2.transparency.setValue(vobj.Transparency/100.0) elif prop in ["DisplayLength","DisplayHeight","ArrowSize"]: + # for IFC objects: propagate to the object + if prop in ["DisplayLength","DisplayHeight"]: + if hasattr(vobj.Object.Proxy, "onChanged"): + vobj.Object.Proxy.onChanged(vobj.Object, prop) if hasattr(vobj,"DisplayLength") and hasattr(vobj,"DisplayHeight"): ld = vobj.DisplayLength.Value/2 hd = vobj.DisplayHeight.Value/2 diff --git a/src/Mod/BIM/ArchSite.py b/src/Mod/BIM/ArchSite.py index 4c51e0945836..ee67ead19f86 100644 --- a/src/Mod/BIM/ArchSite.py +++ b/src/Mod/BIM/ArchSite.py @@ -967,11 +967,20 @@ def addDisplaymodeTerrainSwitches(self,vobj): https://forum.freecad.org/viewtopic.php?t=75883 """ + from pivy import coin + + def find_node(parent, nodetype): + for i in range(parent.getNumChildren()): + if isinstance(parent.getChild(i), nodetype): + return parent.getChild(i) + return None + if not hasattr(self, "terrain_switches"): if vobj.RootNode.getNumChildren() > 2: - main_switch = vobj.RootNode.getChild(2) # The display mode switch. + main_switch = find_node(vobj.RootNode, coin.SoSwitch) + if not main_switch: + return if main_switch.getNumChildren() == 4: # Check if all display modes are available. - from pivy import coin self.terrain_switches = [] for node in tuple(main_switch.getChildren()): new_switch = coin.SoSwitch() diff --git a/src/Mod/BIM/ArchStairs.py b/src/Mod/BIM/ArchStairs.py index b3c208239002..a8f7dee292d6 100644 --- a/src/Mod/BIM/ArchStairs.py +++ b/src/Mod/BIM/ArchStairs.py @@ -267,8 +267,11 @@ def execute(self,obj): if self.clone(obj): return - if not self.ensureBase(obj): - return + + # Stairs can do without Base. Base validity is tested in code below. + # Remarked out ensureBase() below + #if not self.ensureBase(obj): + # return self.steps = [] self.risers = [] @@ -284,11 +287,11 @@ def execute(self,obj): if hasattr(obj.Base,"Shape"): if obj.Base.Shape: if obj.Base.Shape.Solids: - base = obj.Base.Shape.copy() - + base = Part.Shape(obj.Base.Shape) # special case NumberOfSteps = 1 : multi-edges landing if (not base) and obj.Width.Value and obj.Height.Value and (obj.NumberOfSteps > 0): - if obj.Base: + # Check if there is obj.Base and its validity to proceed + if self.ensureBase(obj): if not hasattr(obj.Base,'Shape'): return if obj.Base.Shape.Solids: @@ -331,6 +334,7 @@ def execute(self,obj): ## TODO - Found Part.sortEdges() occasionally return less edges then 'input' edges = Part.sortEdges(obj.Base.Shape.Edges)[0] self.makeMultiEdgesLanding(obj,edges) + # Build Stairs if there is no obj.Base or even obj.Base is not valid else: if not obj.Length.Value: return diff --git a/src/Mod/BIM/ArchStructure.py b/src/Mod/BIM/ArchStructure.py index 8a555a342f25..dd67c0407c73 100644 --- a/src/Mod/BIM/ArchStructure.py +++ b/src/Mod/BIM/ArchStructure.py @@ -790,7 +790,7 @@ def execute(self,obj): if self.clone(obj): return - if not self.ensureBase(obj): + if obj.Base and not self.ensureBase(obj): return base = None @@ -1006,7 +1006,7 @@ def getExtrusionData(self,obj): # TODO use Part.Shape() rather than shape.copy() ... ? baseface = f.copy() elif length and width and height: - if (length > height) and (IfcType != "Slab"): + if (length > height) and (IfcType in ["Beam", "Column"]): h2 = height/2 or 0.5 w2 = width/2 or 0.5 v1 = Vector(0,-w2,-h2) @@ -1079,7 +1079,7 @@ def getExtrusionData(self,obj): if not normal.Length: normal = Vector(0,0,1) extrusion = normal - if (length > height) and (IfcType != "Slab"): + if (length > height) and (IfcType in ["Beam", "Column"]): if length: extrusion = normal.multiply(length) else: @@ -1108,7 +1108,7 @@ def onChanged(self,obj,prop): extdata = self.getExtrusionData(obj) if extdata and not isinstance(extdata[0],list): nodes = extdata[0] - if IfcType not in ["Slab"]: + if IfcType in ["Beam", "Column"]: if not isinstance(extdata[1], FreeCAD.Vector): nodes = extdata[1] elif extdata[1].Length > 0: diff --git a/src/Mod/BIM/ArchWall.py b/src/Mod/BIM/ArchWall.py index 17eb4c24e1bf..639a57414c14 100644 --- a/src/Mod/BIM/ArchWall.py +++ b/src/Mod/BIM/ArchWall.py @@ -318,8 +318,11 @@ def execute(self,obj): if self.clone(obj): return - if not self.ensureBase(obj): - return + + # Wall can do without Base, validity to be tested in getExtrusionData() + # Remarked out ensureBase() below + #if not self.ensureBase(obj): + # return import Part import DraftGeomUtils @@ -337,7 +340,7 @@ def execute(self,obj): if hasattr(baseProxy,"getPropertySet"): # get full list of PropertySet propSetListCur = baseProxy.getPropertySet(obj.Base) - # get updated name (if any) of the selected PropertySet + # get updated name (if any) of the selected PropertySet propSetSelectedNameCur = baseProxy.getPropertySet(obj.Base, propSetUuid=propSetPickedUuidPrev) if propSetSelectedNameCur: # True if selection is not deleted @@ -613,11 +616,11 @@ def onChanged(self, obj, prop): else: FreeCAD.Console.PrintError(translate("Arch","Error: Unable to modify the base object of this wall")+"\n") - if (prop == "ArchSketchPropertySet" + if (prop == "ArchSketchPropertySet" and Draft.getType(obj.Base) == "ArchSketch"): baseProxy = obj.Base.Proxy if hasattr(baseProxy,"getPropertySet"): - uuid = baseProxy.getPropertySet(obj, + uuid = baseProxy.getPropertySet(obj, propSetName=obj.ArchSketchPropertySet) self.ArchSkPropSetPickedUuid = uuid if (hasattr(obj,"ArchSketchData") and obj.ArchSketchData @@ -832,7 +835,7 @@ def getExtrusionData(self,obj): if not height: return None if obj.Normal == Vector(0,0,0): - if obj.Base: + if obj.Base and hasattr(obj.Base,'Shape'): normal = DraftGeomUtils.get_shape_normal(obj.Base.Shape) if normal is None: normal = Vector(0,0,1) @@ -863,7 +866,8 @@ def getExtrusionData(self,obj): elif varwidth: layers.append(varwidth) - if obj.Base: + # Check if there is obj.Base and its validity to proceed + if self.ensureBase(obj): if hasattr(obj.Base,'Shape'): if obj.Base.Shape: if obj.Base.Shape.Solids: @@ -1210,6 +1214,8 @@ def getExtrusionData(self,obj): if baseface: base,placement = self.rebase(baseface) + + # Build Wall if there is no obj.Base or even obj.Base is not valid else: if layers: totalwidth = sum([abs(l) for l in layers]) diff --git a/src/Mod/BIM/CMakeLists.txt b/src/Mod/BIM/CMakeLists.txt index 8b71a2cf24c2..98756b73b6c5 100644 --- a/src/Mod/BIM/CMakeLists.txt +++ b/src/Mod/BIM/CMakeLists.txt @@ -59,12 +59,14 @@ SET(importers_SRCS importers/importWebGL.py importers/importJSON.py importers/importSH3D.py + importers/importSH3DHelper.py importers/import3DS.py importers/importSHP.py importers/importGBXML.py importers/exportIFCStructuralTools.py importers/exportIFC.py importers/exportIFCHelper.py + importers/samples/Sample.sh3d ) SET(Dice3DS_SRCS @@ -76,6 +78,7 @@ SET(Dice3DS_SRCS SET(Arch_presets Presets/profiles.csv Presets/pset_definitions.csv + Presets/qto_definitions.csv Presets/ifc_products_IFC2X3.json Presets/ifc_products_IFC4.json Presets/ifc_types_IFC2X3.json @@ -106,6 +109,7 @@ SET(bimcommands_SRCS bimcommands/BimDiff.py bimcommands/BimDimensions.py bimcommands/BimDoor.py + bimcommands/BimDrawingView.py bimcommands/BimEmptyTrash.py bimcommands/BimEquipment.py bimcommands/BimExamples.py @@ -188,6 +192,8 @@ SET(nativeifc_SRCS nativeifc/__init__.py nativeifc/ifc_openshell.py nativeifc/ifc_types.py + nativeifc/ifc_export.py + nativeifc/ifc_classification.py ) SOURCE_GROUP("" FILES ${Arch_SRCS}) @@ -196,6 +202,10 @@ SET(BIMGuiIcon_SVG Resources/icons/BIMWorkbench.svg ) +SET(ImportersSample_Files + importers/samples/Sample.sh3d +) + ADD_CUSTOM_TARGET(BIM ALL SOURCES ${Arch_SRCS} ${Arch_QRC_SRCS} @@ -208,6 +218,10 @@ ADD_CUSTOM_TARGET(BIM ALL ${BIMGuiIcon_SVG} ) +ADD_CUSTOM_TARGET(ImporterPythonTestData ALL + SOURCES ${ImportersSample_Files} +) + fc_copy_sources(BIM "${CMAKE_BINARY_DIR}/Mod/BIM" ${Arch_SRCS}) fc_copy_sources(BIM "${CMAKE_BINARY_DIR}/Mod/BIM" ${Dice3DS_SRCS}) fc_copy_sources(BIM "${CMAKE_BINARY_DIR}/Mod/BIM" ${importers_SRCS}) @@ -221,6 +235,12 @@ fc_target_copy_resource(BIM ${Arch_presets} ) +fc_target_copy_resource(ImporterPythonTestData + ${CMAKE_SOURCE_DIR}/src/Mod/BIM + ${CMAKE_BINARY_DIR}/Mod/BIM + ${ImportersSample_Files}) + + IF (BUILD_GUI) fc_target_copy_resource(BIM ${CMAKE_CURRENT_BINARY_DIR} diff --git a/src/Mod/BIM/Init.py b/src/Mod/BIM/Init.py index 10f29ae49fd3..ee23f69fdfe1 100644 --- a/src/Mod/BIM/Init.py +++ b/src/Mod/BIM/Init.py @@ -33,5 +33,5 @@ FreeCAD.addImportType("Collada (*.dae *.DAE)","importers.importDAE") FreeCAD.addExportType("Collada (*.dae)","importers.importDAE") FreeCAD.addImportType("3D Studio mesh (*.3ds *.3DS)","importers.import3DS") -FreeCAD.addImportType("SweetHome3D XML export (*.zip *.ZIP)","importers.importSH3D") +FreeCAD.addImportType("SweetHome3D (*.sh3d)","importers.importSH3D") FreeCAD.addImportType("Shapefile (*.shp *.SHP)","importers.importSHP") diff --git a/src/Mod/BIM/InitGui.py b/src/Mod/BIM/InitGui.py index ce80711699c8..2add05b4918d 100644 --- a/src/Mod/BIM/InitGui.py +++ b/src/Mod/BIM/InitGui.py @@ -95,14 +95,16 @@ def QT_TRANSLATE_NOOP(context, text): "BIM_DimensionVertical", "BIM_Leader", "Draft_Label", + "Draft_Hatch", "Arch_Axis", "Arch_AxisSystem", "Arch_Grid", "Arch_SectionPlane", - "Draft_Hatch", + "BIM_DrawingView", + "BIM_Shape2DView", + "BIM_Shape2DCut", "BIM_TDPage", "BIM_TDView", - "BIM_Shape2DView", ] self.bimtools = [ @@ -675,6 +677,7 @@ def QT_TRANSLATE_NOOP(context, text): FreeCADGui.addPreferencePage(":/ui/preferences-ifc.ui", t) FreeCADGui.addPreferencePage(":/ui/preferences-ifc-export.ui", t) FreeCADGui.addPreferencePage(":/ui/preferences-dae.ui", t) +FreeCADGui.addPreferencePage(":/ui/preferences-sh3d-import.ui", t) # Add unit tests FreeCAD.__unit_test__ += ["TestArch"] diff --git a/src/Mod/BIM/Presets/pset_definitions.csv b/src/Mod/BIM/Presets/pset_definitions.csv index 44a5a29147ce..0a122a6ad570 100644 --- a/src/Mod/BIM/Presets/pset_definitions.csv +++ b/src/Mod/BIM/Presets/pset_definitions.csv @@ -1,85 +1,152 @@ Pset_ActionRequest;RequestSourceLabel;IfcLabel;RequestComments;IfcText -Pset_ActorCommon;NumberOfActors;IfcCountMeasure;Category;IfcLabel;SkillLevel;IfcLabel +Pset_ActorCommon;NumberOfActors;IfcCountMeasure;ActorCategory;IfcLabel;SkillLevel;IfcLabel +Pset_ActuatorPHistory Pset_ActuatorTypeCommon;Reference;IfcIdentifier;ManualOverride;IfcBoolean -Pset_ActuatorTypeElectricActuator;ActuatorInputPower;IfcPowerMeasure +Pset_ActuatorTypeElectricActuator;ActuatorInputPower;IfcPowerMeasure;ControlPulseCurrent;IfcElectricCurrentMeasure Pset_ActuatorTypeHydraulicActuator;InputPressure;IfcPressureMeasure;InputFlowrate;IfcVolumetricFlowRateMeasure Pset_ActuatorTypeLinearActuation;Force;IfcForceMeasure;Stroke;IfcLengthMeasure Pset_ActuatorTypePneumaticActuator;InputPressure;IfcPressureMeasure;InputFlowrate;IfcVolumetricFlowRateMeasure Pset_ActuatorTypeRotationalActuation;Torque;IfcTorqueMeasure;RangeAngle;IfcPlaneAngleMeasure -Pset_AirSideSystemInformation;Name;IfcLabel;Description;IfcLabel;TotalAirflow;IfcVolumetricFlowRateMeasure;EnergyGainTotal;IfcPowerMeasure;AirflowSensible;IfcVolumetricFlowRateMeasure;EnergyGainSensible;IfcPowerMeasure;EnergyLoss;IfcPowerMeasure;LightingDiversity;IfcPositiveRatioMeasure;InfiltrationDiversitySummer;IfcPositiveRatioMeasure;InfiltrationDiversityWinter;IfcPositiveRatioMeasure;ApplianceDiversity;IfcPositiveRatioMeasure;LoadSafetyFactor;IfcPositiveRatioMeasure;HeatingTemperatureDelta;IfcThermodynamicTemperatureMeasure;CoolingTemperatureDelta;IfcThermodynamicTemperatureMeasure;Ventilation;IfcVolumetricFlowRateMeasure;FanPower;IfcPowerMeasure -Pset_AirTerminalBoxTypeCommon;Reference;IfcIdentifier;AirflowRateRange;IfcVolumetricFlowRateMeasure;AirPressureRange;IfcPressureMeasure;NominalAirFlowRate;IfcVolumetricFlowRateMeasure;HasSoundAttenuator;IfcBoolean;HasReturnAir;IfcBoolean;HasFan;IfcBoolean;NominalInletAirPressure;IfcPressureMeasure;NominalDamperDiameter;IfcPositiveLengthMeasure;HousingThickness;IfcLengthMeasure;OperationTemperatureRange;IfcThermodynamicTemperatureMeasure;ReturnAirFractionRange;IfcPositiveRatioMeasure +Pset_Address;Description;IfcText;UserDefinedPurpose;IfcLabel;InternalLocation;IfcLabel;AddressLines;IfcLabel;PostalBox;IfcLabel;Town;IfcLabel;Region;IfcLabel;PostalCode;IfcLabel;Country;IfcLabel;TelephoneNumbers;IfcLabel;FacsimileNumbers;IfcLabel;PagerNumber;IfcLabel;ElectronicMailAddresses;IfcLabel;WWWHomePageURL;IfcURIReference;MessagingIDs;IfcURIReference +Pset_AirSideSystemInformation;Description;IfcText;TotalAirFlow;IfcVolumetricFlowRateMeasure;EnergyGainTotal;IfcPowerMeasure;AirFlowSensible;IfcVolumetricFlowRateMeasure;EnergyGainSensible;IfcPowerMeasure;EnergyLoss;IfcPowerMeasure;InfiltrationDiversitySummer;IfcPositiveRatioMeasure;InfiltrationDiversityWinter;IfcPositiveRatioMeasure;ApplianceDiversity;IfcPositiveRatioMeasure;HeatingTemperatureDelta;IfcThermodynamicTemperatureMeasure;CoolingTemperatureDelta;IfcThermodynamicTemperatureMeasure;Ventilation;IfcVolumetricFlowRateMeasure;FanPower;IfcPowerMeasure +Pset_AirTerminalBoxPHistory +Pset_AirTerminalBoxTypeCommon;Reference;IfcIdentifier;AirFlowRateRange;IfcVolumetricFlowRateMeasure;AirPressureRange;IfcPressureMeasure;NominalAirFlowRate;IfcVolumetricFlowRateMeasure;HasSoundAttenuator;IfcBoolean;HasReturnAir;IfcBoolean;HasFan;IfcBoolean;NominalInletAirPressure;IfcPressureMeasure;NominalDamperDiameter;IfcPositiveLengthMeasure;HousingThickness;IfcLengthMeasure;OperationTemperatureRange;IfcThermodynamicTemperatureMeasure;ReturnAirFractionRange;IfcPositiveRatioMeasure Pset_AirTerminalOccurrence;AirFlowRate;IfcVolumetricFlowRateMeasure Pset_AirTerminalPHistory;InductionRatio;IfcLengthMeasure;CenterlineAirVelocity;IfcLengthMeasure -Pset_AirTerminalTypeCommon;Reference;IfcIdentifier;SlotWidth;IfcPositiveLengthMeasure;SlotLength;IfcPositiveLengthMeasure;NumberOfSlots;IfcInteger;AirFlowrateRange;IfcVolumetricFlowRateMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;ThrowLength;IfcLengthMeasure;AirDiffusionPerformanceIndex;IfcReal;FinishColor;IfcLabel;CoreSetHorizontal;IfcPlaneAngleMeasure;CoreSetVertical;IfcPlaneAngleMeasure;HasIntegralControl;IfcBoolean;HasSoundAttenuator;IfcBoolean;HasThermalInsulation;IfcBoolean;NeckArea;IfcAreaMeasure;EffectiveArea;IfcAreaMeasure;AirFlowrateVersusFlowControlElement;IfcPositiveRatioMeasure -Pset_AirToAirHeatRecoveryTypeCommon;Reference;IfcIdentifier;HasDefrost;IfcBoolean;OperationalTemperatureRange;IfcThermodynamicTemperatureMeasure;PrimaryAirflowRateRange;IfcVolumetricFlowRateMeasure;SecondaryAirflowRateRange;IfcPressureMeasure -Pset_AlarmTypeCommon;Reference;IfcIdentifier;Condition;IfcLabel +Pset_AirTerminalTypeCommon;Reference;IfcIdentifier;SlotWidth;IfcPositiveLengthMeasure;SlotLength;IfcPositiveLengthMeasure;NumberOfSlots;IfcCountMeasure;AirFlowRateRange;IfcVolumetricFlowRateMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;ThrowLength;IfcLengthMeasure;AirDiffusionPerformanceIndex;IfcReal;FinishColour;IfcLabel;CoreSetHorizontal;IfcPlaneAngleMeasure;CoreSetVertical;IfcPlaneAngleMeasure;HasIntegralControl;IfcBoolean;HasSoundAttenuator;IfcBoolean;HasThermalInsulation;IfcBoolean;NeckArea;IfcAreaMeasure;EffectiveArea;IfcAreaMeasure;AirFlowrateVersusFlowControlElement;IfcPositiveRatioMeasure +Pset_AirToAirHeatRecoveryPHistory +Pset_AirToAirHeatRecoveryTypeCommon;Reference;IfcIdentifier;HasDefrost;IfcBoolean;OperationalTemperatureRange;IfcThermodynamicTemperatureMeasure;PrimaryAirFlowRateRange;IfcVolumetricFlowRateMeasure;SecondaryAirFlowRateRange;IfcPressureMeasure +Pset_AlarmPHistory +Pset_AlarmTypeCommon;Reference;IfcIdentifier;AlarmCondition;IfcLabel +Pset_AlignmentCantSegmentCommon;CantDeficiency;IfcLengthMeasure;CantEquilibrium;IfcLengthMeasure;StartSmoothingLength;IfcPositiveLengthMeasure;EndSmoothingLength;IfcPositiveLengthMeasure +Pset_AlignmentVerticalSegmentCommon;StartElevation;IfcLengthMeasure;EndElevation;IfcLengthMeasure Pset_AnnotationContourLine;ContourValue;IfcLengthMeasure Pset_AnnotationLineOfSight;SetbackDistance;IfcPositiveLengthMeasure;VisibleAngleLeft;IfcPositivePlaneAngleMeasure;VisibleAngleRight;IfcPositivePlaneAngleMeasure;RoadVisibleDistanceLeft;IfcPositiveLengthMeasure;RoadVisibleDistanceRight;IfcPositiveLengthMeasure Pset_AnnotationSurveyArea;AccuracyQualityObtained;IfcRatioMeasure;AccuracyQualityExpected;IfcRatioMeasure +Pset_Asset;AssetStatus;IfcLabel;AssetUse;IfcLabel +Pset_AudioVisualAppliancePHistory Pset_AudioVisualApplianceTypeAmplifier;AudioAmplification;IfcSoundPowerMeasure;AudioMode;IfcLabel Pset_AudioVisualApplianceTypeCamera;IsOutdoors;IfcBoolean;VideoResolutionWidth;IfcInteger;VideoResolutionHeight;IfcInteger;VideoResolutionMode;IfcLabel;VideoCaptureInterval;IfcTimeMeasure;PanTiltZoomPreset;IfcLabel;PanHorizontal;IfcLengthMeasure;PanVertical;IfcLengthMeasure;TiltHorizontal;IfcPlaneAngleMeasure;TiltVertical;IfcPlaneAngleMeasure;Zoom;IfcPositiveLengthMeasure Pset_AudioVisualApplianceTypeCommon;Reference;IfcIdentifier;MediaSource;IfcLabel;AudioVolume;IfcSoundPowerMeasure Pset_AudioVisualApplianceTypeDisplay;NominalSize;IfcPositiveLengthMeasure;DisplayWidth;IfcPositiveLengthMeasure;DisplayHeight;IfcPositiveLengthMeasure;Brightness;IfcIlluminanceMeasure;ContrastRatio;IfcPositiveRatioMeasure;RefreshRate;IfcFrequencyMeasure;VideoResolutionWidth;IfcInteger;VideoResolutionHeight;IfcInteger;VideoResolutionMode;IfcLabel;VideoScaleMode;IfcLabel;VideoCaptionMode;IfcLabel;AudioMode;IfcLabel Pset_AudioVisualApplianceTypePlayer;PlayerMediaEject;IfcBoolean;PlayerMediaFormat;IfcLabel Pset_AudioVisualApplianceTypeProjector;VideoResolutionWidth;IfcInteger;VideoResolutionHeight;IfcInteger;VideoResolutionMode;IfcLabel;VideoScaleMode;IfcLabel;VideoCaptionMode;IfcLabel +Pset_AudioVisualApplianceTypeRailwayCommunicationTermina Pset_AudioVisualApplianceTypeReceiver;AudioAmplification;IfcRatioMeasure;AudioMode;IfcLabel -Pset_AudioVisualApplianceTypeSpeaker;SpeakerDriverSize;IfcPositiveLengthMeasure;FrequencyResponse;IfcSoundPowerMeasure;Impedance;IfcFrequencyMeasure +Pset_AudioVisualApplianceTypeRecordingEquipment;NumberOfInterfaces;IfcInteger;StorageCapacity;IfcInteger +Pset_AudioVisualApplianceTypeSpeaker;SpeakerDriverSize;IfcPositiveLengthMeasure;FrequencyResponse;IfcSoundPowerMeasure;Impedence;IfcFrequencyMeasure Pset_AudioVisualApplianceTypeTuner;TunerMode;IfcLabel;TunerChannel;IfcLabel;TunerFrequency;IfcFrequencyMeasure +Pset_AxleCountingEquipment;FailureInformation;IfcText;DetectionRange;IfcPositiveLengthMeasure;OperationalTemperatureRange;IfcThermodynamicTemperatureMeasure;NominalWeight;IfcMassMeasure;ImpactParameter;IfcAccelerationMeasure;RatedVoltage;IfcElectricVoltageMeasure;InsulationResistance;IfcElectricResistanceMeasure;AxleCounterResponseTime;IfcTimeMeasure;MaximumVibration;IfcFrequencyMeasure +Pset_BalanceWeightTensionerDesignCriteria;ReferenceDistanceRopeToPulley;IfcPositiveLengthMeasure;ReferenceDistanceTensionerToGround;IfcPositiveLengthMeasure Pset_BeamCommon;Reference;IfcIdentifier;Span;IfcPositiveLengthMeasure;Slope;IfcPlaneAngleMeasure;Roll;IfcPlaneAngleMeasure;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel +Pset_BearingCommon;DisplacementAccommodated;IfcBoolean;RotationAccommodated;IfcBoolean +Pset_BerthCommon;BerthingAngle;IfcPlaneAngleMeasure;BerthingVelocity;IfcLinearVelocityMeasure;AbnormalBerthingFactor;IfcPositiveRatioMeasure +Pset_BoilerPHistory Pset_BoilerTypeCommon;Reference;IfcIdentifier;PressureRating;IfcPressureMeasure;HeatTransferSurfaceArea;IfcAreaMeasure;NominalPartLoadRatio;IfcReal;WaterInletTemperatureRange;IfcThermodynamicTemperatureMeasure;WaterStorageCapacity;IfcVolumeMeasure;IsWaterStorageHeater;IfcBoolean;PartialLoadEfficiencyCurves;IfcNormalisedRatioMeasure;OutletTemperatureRange;IfcThermodynamicTemperatureMeasure;NominalEnergyConsumption;IfcPowerMeasure -Pset_BoilerTypeSteam;MaximumOutletPressure;IfcLabel;NominalEfficiency;IfcNormalisedRatioMeasure;HeatOutput;IfcEnergyMeasure +Pset_BoilerTypeStea;MaximumOutletPressure;IfcLabel;NominalEfficiencyTable;IfcNormalisedRatioMeasure;HeatOutput;IfcEnergyMeasure Pset_BoilerTypeWater;NominalEfficiency;IfcNormalisedRatioMeasure;HeatOutput;IfcEnergyMeasure -Pset_BuildingCommon;Reference;IfcIdentifier;BuildingID;IfcIdentifier;IsPermanentID;IfcBoolean;ConstructionMethod;IfcLabel;FireProtectionClass;IfcLabel;SprinklerProtection;IfcBoolean;SprinklerProtectionAutomatic;IfcBoolean;OccupancyType;IfcLabel;GrossPlannedArea;IfcAreaMeasure;NetPlannedArea;IfcAreaMeasure;NumberOfStoreys;IfcInteger;YearOfConstruction;IfcLabel;YearOfLastRefurbishment;IfcLabel;IsLandmarked;IfcLogical +Pset_BoreholeCommon;CapDepth;IfcPositiveLengthMeasure;CapMaterial;IfcLabel;FillingDepth;IfcPositiveLengthMeasure;FillingMaterial;IfcLabel;GroundwaterDepth;IfcPositiveLengthMeasure;LiningMaterial;IfcLabel;LiningThickness;IfcPositiveLengthMeasure +Pset_BoundedCourseCommon;SpreadingRate;IfcNumericMeasure +Pset_BreakwaterCommon;StructuralStyle;IfcLabel;Elevation;IfcLengthMeasure +Pset_BridgeCommon +Pset_BuildingCommon;Reference;IfcIdentifier;BuildingID;IfcIdentifier;IsPermanentID;IfcBoolean;ConstructionMethod;IfcLabel;FireProtectionClass;IfcLabel;SprinklerProtection;IfcBoolean;SprinklerProtectionAutomatic;IfcBoolean;OccupancyType;IfcLabel;GrossPlannedArea;IfcAreaMeasure;NetPlannedArea;IfcAreaMeasure;NumberOfStoreys;IfcCountMeasure;YearOfConstruction;IfcLabel;YearOfLastRefurbishment;IfcLabel;IsLandmarked;IfcLogical;ElevationOfRefHeight;IfcLengthMeasure;ElevationOfTerrain;IfcLengthMeasure Pset_BuildingElementProxyCommon;Reference;IfcIdentifier;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel -Pset_BuildingElementProxyProvisionForVoid;Shape;IfcLabel;Width;IfcPositiveLengthMeasure;Height;IfcPositiveLengthMeasure;Diameter;IfcPositiveLengthMeasure;Depth;IfcPositiveLengthMeasure;System;IfcLabel -Pset_BuildingStoreyCommon;Reference;IfcIdentifier;EntranceLevel;IfcBoolean;AboveGround;IfcLogical;SprinklerProtection;IfcBoolean;SprinklerProtectionAutomatic;IfcBoolean;LoadBearingCapacity;IfcPlanarForceMeasure;GrossPlannedArea;IfcAreaMeasure;NetPlannedArea;IfcAreaMeasure +Pset_BuildingStoreyCommon;Reference;IfcIdentifier;EntranceLevel;IfcBoolean;AboveGround;IfcLogical;SprinklerProtection;IfcBoolean;SprinklerProtectionAutomatic;IfcBoolean;LoadBearingCapacity;IfcPlanarForceMeasure;GrossPlannedArea;IfcAreaMeasure;NetPlannedArea;IfcAreaMeasure;ElevationOfSSLRelative;IfcLengthMeasure;ElevationOfFFLRelative;IfcLengthMeasure Pset_BuildingSystemCommon;Reference;IfcIdentifier Pset_BuildingUse;MarketCategory;IfcLabel;MarketSubCategory;IfcLabel;PlanningControlStatus;IfcLabel;NarrativeText;IfcText;VacancyRateInCategoryNow;IfcPositiveRatioMeasure;TenureModesAvailableNow;IfcLabel;MarketSubCategoriesAvailableNow;IfcLabel;RentalRatesInCategoryNow;IfcMonetaryMeasure;VacancyRateInCategoryFuture;IfcPositiveRatioMeasure;TenureModesAvailableFuture;IfcLabel;MarketSubCategoriesAvailableFuture;IfcLabel;RentalRatesInCategoryFuture;IfcMonetaryMeasure Pset_BuildingUseAdjacent;MarketCategory;IfcLabel;MarketSubCategory;IfcLabel;PlanningControlStatus;IfcLabel;NarrativeText;IfcText +Pset_BuiltSystemRailwayLine;LineID;IfcIdentifier;IsElectrified;IfcBoolean +Pset_BuiltSystemRailwayTrack;TrackID;IfcIdentifier;TrackNumber;IfcIdentifier Pset_BurnerTypeCommon;Reference;IfcIdentifier Pset_CableCarrierFittingTypeCommon;Reference;IfcIdentifier -Pset_CableCarrierSegmentTypeCableLadderSegment;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;LadderConfiguration;IfcText -Pset_CableCarrierSegmentTypeCableTraySegment;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;HasCover;IfcBoolean -Pset_CableCarrierSegmentTypeCableTrunkingSegment;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;NumberOfCompartments;IfcInteger +Pset_CableCarrierSegmentTypeCableLadderSegment;LadderConfiguration;IfcText +Pset_CableCarrierSegmentTypeCableTraySegment;HasCover;IfcBoolean +Pset_CableCarrierSegmentTypeCableTrunkingSegment;NumberOfCompartments;IfcCountMeasure +Pset_CableCarrierSegmentTypeCatenaryWire;ACResistance;IfcElectricResistanceMeasure;UltimateTensileStrength;IfcForceMeasure;CatenaryWireType;IfcLabel;ThermalExpansionCoefficient;IfcThermalExpansionCoefficientMeasure;CurrentCarryingCapacity;IfcElectricCurrentMeasure;DCResistance;IfcElectricResistanceMeasure;LayRatio;IfcPositiveRatioMeasure;MassPerLength;IfcMassPerLengthMeasure;MechanicalTension;IfcForceMeasure;StrandingMethod;IfcLabel;TensileStrength;IfcPressureMeasure;YoungModulus;IfcModulusOfElasticityMeasure Pset_CableCarrierSegmentTypeCommon;Reference;IfcIdentifier -Pset_CableCarrierSegmentTypeConduitSegment;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;IsRigid;IfcBoolean +Pset_CableCarrierSegmentTypeConduitSegment;NominalWidth;IfcNonNegativeLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;IsRigid;IfcBoolean;NominalDiameter;IfcPositiveLengthMeasure +Pset_CableCarrierSegmentTypeDropper;CurrentCarryingCapacity;IfcElectricCurrentMeasure;TensileStrength;IfcPressureMeasure;IsRigid;IfcBoolean;UltimateTensileStrength;IfcForceMeasure;IsAdjustable;IfcBoolean;IsCurrentCarrying;IfcBoolean;NominalLoad;IfcForceMeasure Pset_CableFittingTypeCommon;Reference;IfcIdentifier -Pset_CableSegmentOccurrence;DesignAmbientTemperature;IfcThermodynamicTemperatureMeasure;UserCorrectionFactor;IfcReal;NumberOfParallelCircuits;IfcInteger;InstallationMethod;IfcLabel;DistanceBetweenParallelCircuits;IfcLengthMeasure;SoilConductivity;IfcThermalConductivityMeasure;CarrierStackNumber;IfcInteger;IsHorizontalCable;IfcBoolean;IsMountedFlatCable;IfcBoolean;CurrentCarryingCapasity;IfcElectricCurrentMeasure;MaximumCableLength;IfcLengthMeasure;PowerLoss;IfcElectricCurrentMeasure -Pset_CableSegmentTypeBusBarSegment;IsHorizontalBusbar;IfcBoolean -Pset_CableSegmentTypeCableSegment;Standard;IfcLabel;NumberOfCores;IfcInteger;OverallDiameter;IfcPositiveLengthMeasure;RatedVoltage;IfcElectricVoltageMeasure;RatedTemperature;IfcThermodynamicTemperatureMeasure;ScreenDiameter;IfcPositiveLengthMeasure;HasProtectiveEarth;IfcBoolean;MaximumOperatingTemperature;IfcThermodynamicTemperatureMeasure;MaximumShortCircuitTemperature;IfcThermodynamicTemperatureMeasure;SpecialConstruction;IfcLabel;Weight;IfcMassMeasure;SelfExtinguishing60332_1;IfcBoolean;SelfExtinguishing60332_3;IfcBoolean;HalogenProof;IfcBoolean;FunctionReliable;IfcBoolean +Pset_CableFittingTypeExit;GroundResistance;IfcElectricResistanceMeasure +Pset_CableFittingTypeFanout;NumberOfTubes;IfcCountMeasure;TubeDiameter;IfcPositiveLengthMeasure +Pset_CableSegmentConnector;ConnectorAColour;IfcLabel;ConnectorBColour;IfcLabel;ConnectorAType;IfcLabel;ConnectorBType;IfcLabel +Pset_CableSegmentOccurenceFiberSegment;InUse;IfcBoolean +Pset_CableSegmentOccurrence;DesignAmbientTemperature;IfcThermodynamicTemperatureMeasure;UserCorrectionFactor;IfcReal;NumberOfParallelCircuits;IfcCountMeasure;InstallationMethod;IfcLabel;DistanceBetweenParallelCircuits;IfcLengthMeasure;SoilConductivity;IfcThermalConductivityMeasure;CarrierStackNumber;IfcInteger;IsHorizontalCable;IfcBoolean;IsMountedFlatCable;IfcBoolean;CurrentCarryingCapacity;IfcElectricCurrentMeasure;MaximumCableLength;IfcLengthMeasure;PowerLoss;IfcPowerMeasure;SequentialCode;IfcLabel +Pset_CableSegmentTypeBusBarSegment;IsHorizontalBusbar;IfcBoolean;NominalCurrent;IfcElectricCurrentMeasure;UltimateTensileStrength;IfcForceMeasure;ACResistance;IfcElectricResistanceMeasure;ThermalExpansionCoefficient;IfcThermalExpansionCoefficientMeasure;CurrentCarryingCapacity;IfcElectricCurrentMeasure;DCResistance;IfcElectricResistanceMeasure;MassPerLength;IfcMassPerLengthMeasure;TensileStrength;IfcPressureMeasure;YoungModulus;IfcModulusOfElasticityMeasure;CrossSectionalArea;IfcAreaMeasure;OverallDiameter;IfcPositiveLengthMeasure;OperationalTemperatureRange;IfcThermodynamicTemperatureMeasure;RatedVoltage;IfcElectricVoltageMeasure +Pset_CableSegmentTypeCableSegment;Standard;IfcLabel;NumberOfCores;IfcCountMeasure;OverallDiameter;IfcPositiveLengthMeasure;RatedTemperature;IfcThermodynamicTemperatureMeasure;ScreenDiameter;IfcPositiveLengthMeasure;HasProtectiveEarth;IfcBoolean;MaximumOperatingTemperature;IfcThermodynamicTemperatureMeasure;MaximumShortCircuitTemperature;IfcThermodynamicTemperatureMeasure;SpecialConstruction;IfcLabel;Weight;IfcMassMeasure;SelfExtinguishing60332_1;IfcBoolean;SelfExtinguishing60332_3;IfcBoolean;HalogenProof;IfcBoolean;FunctionReliable;IfcBoolean;ACResistance;IfcElectricResistanceMeasure;CurrentCarryingCapacity;IfcElectricCurrentMeasure;DCResistance;IfcElectricResistanceMeasure;MassPerLength;IfcMassPerLengthMeasure;MaximumCurrent;IfcElectricCurrentMeasure;MaximumBendingRadius;IfcPositiveLengthMeasure;NumberOfWires;IfcCountMeasure;InsulationVoltage;IfcElectricVoltageMeasure;RatedVoltage;IfcElectricVoltageMeasure Pset_CableSegmentTypeCommon;Reference;IfcIdentifier -Pset_CableSegmentTypeConductorSegment;CrossSectionalArea;IfcAreaMeasure -Pset_CableSegmentTypeCoreSegment;OverallDiameter;IfcPositiveLengthMeasure;RatedVoltage;IfcElectricVoltageMeasure;RatedTemperature;IfcThermodynamicTemperatureMeasure;ScreenDiameter;IfcPositiveLengthMeasure;CoreIdentifier;IfcIdentifier;Weight;IfcMassMeasure;SelfExtinguishing60332_1;IfcBoolean;SelfExtinguishing60332_3;IfcBoolean;HalogenProof;IfcBoolean;FunctionReliable;IfcBoolean;Standard;IfcLabel -Pset_ChillerTypeCommon;Reference;IfcIdentifier;NominalCapacity;IfcPowerMeasure;NominalEfficiency;IfcPositiveRatioMeasure;NominalCondensingTemperature;IfcThermodynamicTemperatureMeasure;NominalEvaporatingTemperature;IfcThermodynamicTemperatureMeasure;NominalHeatRejectionRate;IfcPowerMeasure;NominalPowerConsumption;IfcPowerMeasure;CapacityCurve;IfcPowerMeasure;CoefficientOfPerformanceCurve;IfcReal;FullLoadRatioCurve;IfcNormalisedRatioMeasure +Pset_CableSegmentTypeConductorSegment;CrossSectionalArea;IfcAreaMeasure;NominalCurrent;IfcElectricCurrentMeasure;ACResistance;IfcElectricResistanceMeasure;ThermalExpansionCoefficient;IfcThermalExpansionCoefficientMeasure;CurrentCarryingCapacity;IfcElectricCurrentMeasure;UltimateTensileStrength;IfcForceMeasure;MassPerLength;IfcMassPerLengthMeasure;TensileStrength;IfcPressureMeasure;YoungModulus;IfcModulusOfElasticityMeasure;DCResistance;IfcElectricResistanceMeasure;OverallDiameter;IfcPositiveLengthMeasure;NumberOfCores;IfcCountMeasure;RatedVoltage;IfcElectricVoltageMeasure +Pset_CableSegmentTypeContactWire;ACResistance;IfcElectricResistanceMeasure;ThermalExpansionCoefficient;IfcThermalExpansionCoefficientMeasure;CurrentCarryingCapacity;IfcElectricCurrentMeasure;DCResistance;IfcElectricResistanceMeasure;MassPerLength;IfcMassPerLengthMeasure;YoungModulus;IfcModulusOfElasticityMeasure;CrossSectionalArea;IfcAreaMeasure;TorsionalStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure +Pset_CableSegmentTypeCoreSegment;OverallDiameter;IfcPositiveLengthMeasure;RatedVoltage;IfcElectricVoltageMeasure;RatedTemperature;IfcThermodynamicTemperatureMeasure;ScreenDiameter;IfcPositiveLengthMeasure;CoreIdentifier;IfcIdentifier;Weight;IfcMassMeasure;UltimateTensileStrength;IfcForceMeasure;SelfExtinguishing60332_1;IfcBoolean;SelfExtinguishing60332_3;IfcBoolean;HalogenProof;IfcBoolean;FunctionReliable;IfcBoolean;Standard;IfcLabel;ThermalExpansionCoefficient;IfcThermalExpansionCoefficientMeasure;CurrentCarryingCapacity;IfcElectricCurrentMeasure;DCResistance;IfcElectricResistanceMeasure;LayRatio;IfcPositiveRatioMeasure;MassPerLength;IfcMassPerLengthMeasure;TensileStrength;IfcPressureMeasure;YoungModulus;IfcModulusOfElasticityMeasure;ACResistance;IfcElectricResistanceMeasure;StrandingMethod;IfcLabel +Pset_CableSegmentTypeEarthingConductor;ResistanceToGround;IfcElectricResistanceMeasure +Pset_CableSegmentTypeFiberSegment;HasTightJacket;IfcBoolean +Pset_CableSegmentTypeFiberTubeSegment;NumberOfFibers;IfcCountMeasure +Pset_CableSegmentTypeOpticalCableSegment;NumberOfFibers;IfcCountMeasure;NumberOfMultiModeFibers;IfcCountMeasure;NumberOfSingleModeFibers;IfcCountMeasure;NumberOfTubes;IfcCountMeasure +Pset_CableSegmentTypeStitchWire;NominalLength;IfcNonNegativeLengthMeasure;MechanicalTension;IfcForceMeasure;UltimateTensileStrength;IfcForceMeasure;TensileStrength;IfcPressureMeasure +Pset_CableSegmentTypeWirePairSegment;CharacteristicImpedance;IfcElectricResistanceMeasure;ConductorDiameter;IfcPositiveLengthMeasure;CoreConductorDiameter;IfcPositiveLengthMeasure;JacketColour;IfcLabel;ShieldConductorDiameter;IfcPositiveLengthMeasure +Pset_CargoCommon +Pset_CessBetweenRails;LoadCapacity;IfcForceMeasure +Pset_ChillerPHistory +Pset_ChillerTypeCommon;Reference;IfcIdentifier;ChillerCapacity;IfcPowerMeasure;NominalEfficiency;IfcPositiveRatioMeasure;NominalCondensingTemperature;IfcThermodynamicTemperatureMeasure;NominalEvaporatingTemperature;IfcThermodynamicTemperatureMeasure;NominalHeatRejectionRate;IfcPowerMeasure;NominalPowerConsumption;IfcPowerMeasure;CapacityCurve;IfcPowerMeasure;CoefficientOfPerformanceCurve;IfcReal;FullLoadRatioCurve;IfcNormalisedRatioMeasure Pset_ChimneyCommon;Reference;IfcIdentifier;NumberOfDrafts;IfcCountMeasure;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel Pset_CivilElementCommon;Reference;IfcIdentifier +Pset_CoaxialCable;CharacteristicImpedance;IfcElectricResistanceMeasure;CouplingLoss;IfcNormalisedRatioMeasure;MaximumTransmissionAttenuation;IfcSoundPowerLevelMeasure;NumberOfCoaxialPairs;IfcCountMeasure;PropagationSpeedCoefficient;IfcRatioMeasure;TransmissionLoss;IfcNormalisedRatioMeasure;RadiantFrequency;IfcFrequencyMeasure Pset_CoilOccurrence;HasSoundAttenuation;IfcBoolean -Pset_CoilTypeCommon;Reference;IfcIdentifier;OperationalTemperatureRange;IfcThermodynamicTemperatureMeasure;AirflowRateRange;IfcVolumetricFlowRateMeasure;NominalSensibleCapacity;IfcPowerMeasure;NominalLatentCapacity;IfcPowerMeasure;NominalUA;IfcReal +Pset_CoilPHistory +Pset_CoilTypeCommon;Reference;IfcIdentifier;OperationalTemperatureRange;IfcThermodynamicTemperatureMeasure;AirFlowRateRange;IfcVolumetricFlowRateMeasure;NominalSensibleCapacity;IfcPowerMeasure;NominalLatentCapacity;IfcPowerMeasure;NominalUA;IfcReal Pset_CoilTypeHydronic;FluidPressureRange;IfcPressureMeasure;CoilFaceArea;IfcAreaMeasure;HeatExchangeSurfaceArea;IfcAreaMeasure;PrimarySurfaceArea;IfcAreaMeasure;SecondarySurfaceArea;IfcAreaMeasure;TotalUACurves;IfcVolumetricFlowRateMeasure;WaterPressureDropCurve;IfcPressureMeasure;BypassFactor;IfcNormalisedRatioMeasure;SensibleHeatRatio;IfcNormalisedRatioMeasure;WetCoilFraction;IfcNormalisedRatioMeasure Pset_ColumnCommon;Reference;IfcIdentifier;Slope;IfcPlaneAngleMeasure;Roll;IfcPlaneAngleMeasure;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel +Pset_CommunicationsAppliancePHistory +Pset_CommunicationsApplianceTypeAntenna;AntennaGain;IfcRatioMeasure +Pset_CommunicationsApplianceTypeAutomaton Pset_CommunicationsApplianceTypeCommon;Reference;IfcIdentifier +Pset_CommunicationsApplianceTypeComputer;StorageCapacity;IfcInteger +Pset_CommunicationsApplianceTypeGateway;NumberOfInterfaces;IfcInteger +Pset_CommunicationsApplianceTypeIntelligentPeriphera;UserCapacity;IfcInteger +Pset_CommunicationsApplianceTypeIpNetworkEquipment;NumberOfSlots;IfcCountMeasure;EquipmentCapacity;IfcIntegerCountRateMeasure;NumberOfCoolingFans;IfcCountMeasure;SupportedProtocol;IfcLabel;ManagingSoftware;IfcLabel;NumberOfInterfaces;IfcInteger +Pset_CommunicationsApplianceTypeMode;NumberOfCommonInterfaces;IfcInteger;NumberOfTrafficInterfaces;IfcInteger +Pset_CommunicationsApplianceTypeOpticalLineTermina;NumberOfSlots;IfcCountMeasure;NumberOfInterfaces;IfcInteger +Pset_CommunicationsApplianceTypeOpticalNetworkUnit;NumberOfInterfaces;IfcInteger +Pset_CommunicationsApplianceTypeTelecommand;NumberOfWorkstations;IfcInteger;NumberOfCPUs;IfcCountMeasure +Pset_CommunicationsApplianceTypeTelephonyExchange;UserCapacity;IfcInteger +Pset_CommunicationsApplianceTypeTransportEquipment;IsUpgradable;IfcBoolean;ElectricalCrossCapacity;IfcLabel;NumberOfSlots;IfcCountMeasure +Pset_CompressorPHistory Pset_CompressorTypeCommon;Reference;IfcIdentifier;MinimumPartLoadRatio;IfcPositiveRatioMeasure;MaximumPartLoadRatio;IfcPositiveRatioMeasure;CompressorSpeed;IfcRotationalFrequencyMeasure;NominalCapacity;IfcPowerMeasure;IdealCapacity;IfcPowerMeasure;IdealShaftPower;IfcPowerMeasure;HasHotGasBypass;IfcBoolean;ImpellerDiameter;IfcPositiveLengthMeasure -Pset_ConcreteElementGeneral;ConstructionMethod;IfcLabel;StructuralClass;IfcLabel;StrengthClass;IfcLabel;ExposureClass;IfcLabel;ReinforcementVolumeRatio;IfcMassDensityMeasure;ReinforcementAreaRatio;IfcAreaDensityMeasure;DimensionalAccuracyClass;IfcLabel;ConstructionToleranceClass;IfcLabel;ConcreteCover;IfcPositiveLengthMeasure;ConcreteCoverAtMainBars;IfcPositiveLengthMeasure;ConcreteCoverAtLinks;IfcPositiveLengthMeasure;ReinforcementStrengthClass;IfcLabel +Pset_ConcreteElementGenera;StructuralClass;IfcLabel;StrengthClass;IfcLabel;ExposureClass;IfcLabel;ReinforcementVolumeRatio;IfcMassDensityMeasure;ReinforcementAreaRatio;IfcAreaDensityMeasure;DimensionalAccuracyClass;IfcLabel;ConstructionToleranceClass;IfcLabel;ConcreteCover;IfcPositiveLengthMeasure;ConcreteCoverAtMainBars;IfcPositiveLengthMeasure;ConcreteCoverAtLinks;IfcPositiveLengthMeasure;ReinforcementStrengthClass;IfcLabel +Pset_CondenserPHistory Pset_CondenserTypeCommon;Reference;IfcIdentifier;ExternalSurfaceArea;IfcAreaMeasure;InternalSurfaceArea;IfcAreaMeasure;InternalRefrigerantVolume;IfcVolumeMeasure;InternalWaterVolume;IfcVolumeMeasure;NominalHeatTransferArea;IfcAreaMeasure;NominalHeatTransferCoefficient;IfcThermalTransmittanceMeasure -Pset_Condition;AssessmentDate;IfcDate;AssessmentCondition;IfcLabel;AssessmentDescription;IfcText +Pset_Condition;AssessmentDate;IfcDate;AssessmentCondition;IfcLabel;AssessmentDescription;IfcText;AssessmentType;IfcLabel;LastAssessmentReport;IfcLabel;NextAssessmentDate;IfcDate;AssessmentFrequency;IfcTimeMeasure +Pset_ConstructionAdministration;ProcurementMethod;IfcLabel;SpecificationSectionNumber;IfcLabel;SubmittalIdentifer;IfcLabel +Pset_ConstructionOccurence;InstallationDate;IfcDate;ModelNumber;IfcLabel;TagNumber;IfcLabel;AssetIdentifier;IfcLabel +Pset_ConstructionResource +Pset_ControllerPHistory Pset_ControllerTypeCommon;Reference;IfcIdentifier Pset_ControllerTypeFloating;Labels;IfcLabel;Range;IfcReal;Value;IfcReal;SignalOffset;IfcReal;SignalFactor;IfcReal;SignalTime;IfcTimeMeasure -Pset_ControllerTypeMultiPosition;Labels;IfcLabel;Range;IfcInteger;Value;IfcInteger +Pset_ControllerTypeMultiPosition;Labels;IfcLabel;IntegerRange;IfcInteger;Value;IfcInteger Pset_ControllerTypeProgrammable;FirmwareVersion;IfcLabel;SoftwareVersion;IfcLabel -Pset_ControllerTypeProportional;Labels;IfcLabel;Range;IfcReal;Value;IfcReal;ProportionalConstant;IfcReal;IntegralConstant;IfcReal;DerivativeConstant;IfcReal;SignalTimeIncrease;IfcTimeMeasure;SignalTimeDecrease;IfcTimeMeasure +Pset_ControllerTypeProportiona;Labels;IfcLabel;Range;IfcReal;Value;IfcReal;ProportionalConstant;IfcReal;IntegralConstant;IfcReal;DerivativeConstant;IfcReal;SignalTimeIncrease;IfcTimeMeasure;SignalTimeDecrease;IfcTimeMeasure Pset_ControllerTypeTwoPosition;Labels;IfcLabel;Polarity;IfcBoolean;Value;IfcBoolean -Pset_CooledBeamTypeActive;AirflowRateRange;IfcVolumetricFlowRateMeasure;ConnectionSize;IfcLengthMeasure -Pset_CooledBeamTypeCommon;Reference;IfcIdentifier;IsFreeHanging;IfcBoolean;WaterPressureRange;IfcPressureMeasure;NominalCoolingCapacity;IfcPowerMeasure;NominalSurroundingTemperatureCooling;IfcThermodynamicTemperatureMeasure;NominalSurroundingHumidityCooling;IfcNormalisedRatioMeasure;NominalSupplyWaterTemperatureCooling;IfcThermodynamicTemperatureMeasure;NominalReturnWaterTemperatureCooling;IfcThermodynamicTemperatureMeasure;NominalWaterFlowCooling;IfcVolumetricFlowRateMeasure;NominalHeatingCapacity;IfcPowerMeasure;NominalSurroundingTemperatureHeating;IfcThermodynamicTemperatureMeasure;NominalSupplyWaterTemperatureHeating;IfcThermodynamicTemperatureMeasure;NominalReturnWaterTemperatureHeating;IfcThermodynamicTemperatureMeasure;NominalWaterFlowHeating;IfcVolumetricFlowRateMeasure;FinishColor;IfcLabel;CoilLength;IfcPositiveLengthMeasure;CoilWidth;IfcPositiveLengthMeasure -Pset_CoolingTowerTypeCommon;Reference;IfcIdentifier;NominalCapacity;IfcPowerMeasure;NumberOfCells;IfcInteger;BasinReserveVolume;IfcVolumeMeasure;LiftElevationDifference;IfcPositiveLengthMeasure;WaterRequirement;IfcVolumetricFlowRateMeasure;OperationTemperatureRange;IfcThermodynamicTemperatureMeasure;AmbientDesignDryBulbTemperature;IfcThermodynamicTemperatureMeasure;AmbientDesignWetBulbTemperature;IfcThermodynamicTemperatureMeasure -Pset_CoveringCeiling;Permeability;IfcNormalisedRatioMeasure;TileLength;IfcPositiveLengthMeasure;TileWidth;IfcPositiveLengthMeasure +Pset_CooledBeamPHistory +Pset_CooledBeamPHistoryActive +Pset_CooledBeamTypeActive;AirFlowRateRange;IfcVolumetricFlowRateMeasure;ConnectionSize;IfcPositiveLengthMeasure +Pset_CooledBeamTypeCommon;Reference;IfcIdentifier;IsFreeHanging;IfcBoolean;WaterPressureRange;IfcPressureMeasure;NominalCoolingCapacity;IfcPowerMeasure;NominalSurroundingTemperatureCooling;IfcThermodynamicTemperatureMeasure;NominalSurroundingHumidityCooling;IfcNormalisedRatioMeasure;NominalSupplyWaterTemperatureCooling;IfcThermodynamicTemperatureMeasure;NominalReturnWaterTemperatureCooling;IfcThermodynamicTemperatureMeasure;NominalWaterFlowCooling;IfcVolumetricFlowRateMeasure;NominalHeatingCapacity;IfcPowerMeasure;NominalSurroundingTemperatureHeating;IfcThermodynamicTemperatureMeasure;NominalSupplyWaterTemperatureHeating;IfcThermodynamicTemperatureMeasure;NominalReturnWaterTemperatureHeating;IfcThermodynamicTemperatureMeasure;NominalWaterFlowHeating;IfcVolumetricFlowRateMeasure;FinishColour;IfcLabel;CoilLength;IfcPositiveLengthMeasure;CoilWidth;IfcPositiveLengthMeasure +Pset_CoolingTowerPHistory +Pset_CoolingTowerTypeCommon;Reference;IfcIdentifier;NominalCapacity;IfcPowerMeasure;NumberOfCells;IfcCountMeasure;BasinReserveVolume;IfcVolumeMeasure;LiftElevationDifference;IfcPositiveLengthMeasure;WaterRequirement;IfcVolumetricFlowRateMeasure;OperationTemperatureRange;IfcThermodynamicTemperatureMeasure;AmbientDesignDryBulbTemperature;IfcThermodynamicTemperatureMeasure;AmbientDesignWetBulbTemperature;IfcThermodynamicTemperatureMeasure +Pset_CourseApplicationConditions;ApplicationTemperature;IfcThermodynamicTemperatureMeasure;WeatherConditions;IfcText +Pset_CourseCommon;NominalLength;IfcNonNegativeLengthMeasure;NominalThickness;IfcNonNegativeLengthMeasure;NominalWidth;IfcNonNegativeLengthMeasure Pset_CoveringCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;FlammabilityRating;IfcLabel;FragilityRating;IfcLabel;Combustible;IfcBoolean;SurfaceSpreadOfFlame;IfcLabel;Finish;IfcText;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;FireRating;IfcLabel Pset_CoveringFlooring;HasNonSkidSurface;IfcBoolean;HasAntiStaticSurface;IfcBoolean +Pset_CoveringTypeMembrane;NominalInstallationDepth;IfcPositiveLengthMeasure;NominalTransverseInclination;IfcPlaneAngleMeasure +Pset_CurrentInstrumentTransformer;AccuracyClass;IfcRatioMeasure;AccuracyGrade;IfcLabel;RatedVoltage;IfcElectricVoltageMeasure;NominalCurrent;IfcElectricCurrentMeasure;NominalPower;IfcPowerMeasure;NumberOfPhases;IfcCountMeasure;PrimaryFrequency;IfcFrequencyMeasure;PrimaryCurrent;IfcElectricCurrentMeasure;SecondaryFrequency;IfcFrequencyMeasure;SecondaryCurrent;IfcElectricCurrentMeasure Pset_CurtainWallCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;FireRating;IfcLabel;Combustible;IfcBoolean;SurfaceSpreadOfFlame;IfcLabel;ThermalTransmittance;IfcThermalTransmittanceMeasure;IsExternal;IfcBoolean +Pset_DamperOccurrence +Pset_DamperPHistory Pset_DamperTypeCommon;Reference;IfcIdentifier;BladeThickness;IfcPositiveLengthMeasure;NumberofBlades;IfcInteger;FaceArea;IfcAreaMeasure;MaximumAirFlowRate;IfcVolumetricFlowRateMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;MaximumWorkingPressure;IfcPressureMeasure;TemperatureRating;IfcThermodynamicTemperatureMeasure;NominalAirFlowRate;IfcVolumetricFlowRateMeasure;OpenPressureDrop;IfcPressureMeasure;LeakageFullyClosed;IfcVolumetricFlowRateMeasure;LossCoefficentCurve;IfcReal;LeakageCurve;IfcPressureMeasure;RegeneratedSoundCurve;IfcSoundPressureMeasure;FrameType;IfcLabel;FrameDepth;IfcPositiveLengthMeasure;FrameThickness;IfcPositiveLengthMeasure;CloseOffRating;IfcPressureMeasure Pset_DamperTypeControlDamper;TorqueRange;IfcTorqueMeasure Pset_DamperTypeFireDamper;FireResistanceRating;IfcLabel;FusibleLinkTemperature;IfcThermodynamicTemperatureMeasure -Pset_DamperTypeFireSmokeDamper;ControlType;IfcLabel;FireResistanceRating;IfcLabel;FusibleLinkTemperature;IfcThermodynamicTemperatureMeasure +Pset_DamperTypeFireSmokeDamper;DamperControlType;IfcLabel;FireResistanceRating;IfcLabel;FusibleLinkTemperature;IfcThermodynamicTemperatureMeasure Pset_DamperTypeSmokeDamper;ControlType;IfcLabel +Pset_DataTransmissionUnit;WorkingState;IfcLabel Pset_DiscreteAccessoryColumnShoe;ColumnShoeBasePlateThickness;IfcPositiveLengthMeasure;ColumnShoeBasePlateWidth;IfcPositiveLengthMeasure;ColumnShoeBasePlateDepth;IfcPositiveLengthMeasure;ColumnShoeCasingHeight;IfcPositiveLengthMeasure;ColumnShoeCasingWidth;IfcPositiveLengthMeasure;ColumnShoeCasingDepth;IfcPositiveLengthMeasure Pset_DiscreteAccessoryCornerFixingPlate;CornerFixingPlateLength;IfcPositiveLengthMeasure;CornerFixingPlateThickness;IfcPositiveLengthMeasure;CornerFixingPlateFlangeWidthInPlaneZ;IfcPositiveLengthMeasure;CornerFixingPlateFlangeWidthInPlaneX;IfcPositiveLengthMeasure Pset_DiscreteAccessoryDiagonalTrussConnector;DiagonalTrussHeight;IfcPositiveLengthMeasure;DiagonalTrussLength;IfcPositiveLengthMeasure;DiagonalTrussCrossBarSpacing;IfcPositiveLengthMeasure;DiagonalTrussBaseBarDiameter;IfcPositiveLengthMeasure;DiagonalTrussSecondaryBarDiameter;IfcPositiveLengthMeasure;DiagonalTrussCrossBarDiameter;IfcPositiveLengthMeasure @@ -87,128 +154,256 @@ Pset_DiscreteAccessoryEdgeFixingPlate;EdgeFixingPlateLength;IfcPositiveLengthMea Pset_DiscreteAccessoryFixingSocket;FixingSocketHeight;IfcPositiveLengthMeasure;FixingSocketThreadDiameter;IfcPositiveLengthMeasure;FixingSocketThreadLength;IfcPositiveLengthMeasure Pset_DiscreteAccessoryLadderTrussConnector;LadderTrussHeight;IfcPositiveLengthMeasure;LadderTrussLength;IfcPositiveLengthMeasure;LadderTrussCrossBarSpacing;IfcPositiveLengthMeasure;LadderTrussBaseBarDiameter;IfcPositiveLengthMeasure;LadderTrussSecondaryBarDiameter;IfcPositiveLengthMeasure;LadderTrussCrossBarDiameter;IfcPositiveLengthMeasure Pset_DiscreteAccessoryStandardFixingPlate;StandardFixingPlateWidth;IfcPositiveLengthMeasure;StandardFixingPlateDepth;IfcPositiveLengthMeasure;StandardFixingPlateThickness;IfcPositiveLengthMeasure +Pset_DiscreteAccessoryTypeBracket;IsInsulated;IfcBoolean +Pset_DiscreteAccessoryTypeCableArranger +Pset_DiscreteAccessoryTypeInsulator;RatedCurrent;IfcElectricCurrentMeasure;RatedVoltage;IfcElectricVoltageMeasure;InsulationVoltage;IfcElectricVoltageMeasure;BreakdownVoltageTolerance;IfcElectricVoltageMeasure;OperationalTemperatureRange;IfcThermodynamicTemperatureMeasure;CreepageDistance;IfcPositiveLengthMeasure;InstallationMethod;IfcLabel;LightningPeakVoltage;IfcElectricVoltageMeasure;BendingStrength;IfcPressureMeasure;RMSWithstandVoltage;IfcElectricVoltageMeasure;Voltage;IfcElectricVoltageMeasure +Pset_DiscreteAccessoryTypeLock;RequiredClosureSpacing;IfcPositiveLengthMeasure +Pset_DiscreteAccessoryTypeRailBrace;IsTemporary;IfcBoolean +Pset_DiscreteAccessoryTypeRailLubrication;MaximumNoiseEmissions;IfcSoundPowerLevelMeasure +Pset_DiscreteAccessoryTypeRailPad +Pset_DiscreteAccessoryTypeSlidingChair;IsSelfLubricated;IfcBoolean +Pset_DiscreteAccessoryTypeSoundAbsorption;SoundAbsorptionLimit;IfcSoundPowerLevelMeasure +Pset_DiscreteAccessoryTypeTensioningEquipment;ReferenceEnvironmentTemperature;IfcThermodynamicTemperatureMeasure;HasBreakLineLock;IfcBoolean;TensileStrength;IfcPressureMeasure;RatioOfWireTension;IfcPositiveRatioMeasure;TransmissionEfficiency;IfcRatioMeasure Pset_DiscreteAccessoryWireLoop;WireLoopBasePlateThickness;IfcPositiveLengthMeasure;WireLoopBasePlateWidth;IfcPositiveLengthMeasure;WireLoopBasePlateLength;IfcPositiveLengthMeasure;WireDiameter;IfcPositiveLengthMeasure;WireEmbeddingLength;IfcPositiveLengthMeasure;WireLoopLength;IfcPositiveLengthMeasure +Pset_DistributionBoardOccurrence;IsMain;IfcBoolean;IsSkilledOperator;IfcBoolean +Pset_DistributionBoardTypeCommon;Reference;IfcIdentifier +Pset_DistributionBoardTypeDispatchingBoard;NumberOfInterfaces;IfcInteger +Pset_DistributionBoardTypeDistributionFrame;PortCapacity;IfcInteger Pset_DistributionChamberElementCommon;Reference;IfcIdentifier -Pset_DistributionChamberElementTypeFormedDuct;ClearWidth;IfcPositiveLengthMeasure;ClearDepth;IfcPositiveLengthMeasure;WallThickness;IfcPositiveLengthMeasure;BaseThickness;IfcPositiveLengthMeasure;AccessCoverLoadRating;IfcText -Pset_DistributionChamberElementTypeInspectionChamber;ChamberLengthOrRadius;IfcPositiveLengthMeasure;ChamberWidth;IfcPositiveLengthMeasure;InvertLevel;IfcLengthMeasure;SoffitLevel;IfcLengthMeasure;WallThickness;IfcPositiveLengthMeasure;BaseThickness;IfcPositiveLengthMeasure;WithBackdrop;IfcBoolean;AccessLengthOrRadius;IfcPositiveLengthMeasure;AccessWidth;IfcPositiveLengthMeasure;AccessCoverLoadRating;IfcText +Pset_DistributionChamberElementTypeFormedDuct;ClearWidth;IfcPositiveLengthMeasure;ClearDepth;IfcPositiveLengthMeasure;WallThickness;IfcPositiveLengthMeasure;BaseThickness;IfcPositiveLengthMeasure;AccessCoverLoadRating;IfcText;CableDuctOccupancyRatio;IfcNormalisedRatioMeasure +Pset_DistributionChamberElementTypeInspectionChamber;ChamberLengthOrRadius;IfcPositiveLengthMeasure;ChamberWidth;IfcPositiveLengthMeasure;InspectionChamberInvertLevel;IfcLengthMeasure;SoffitLevel;IfcLengthMeasure;WallThickness;IfcPositiveLengthMeasure;BaseThickness;IfcPositiveLengthMeasure;WithBackdrop;IfcBoolean;AccessLengthOrRadius;IfcPositiveLengthMeasure;AccessWidth;IfcPositiveLengthMeasure;AccessCoverLoadRating;IfcText Pset_DistributionChamberElementTypeInspectionPit;Length;IfcPositiveLengthMeasure;Width;IfcPositiveLengthMeasure;Depth;IfcPositiveLengthMeasure -Pset_DistributionChamberElementTypeManhole;InvertLevel;IfcLengthMeasure;SoffitLevel;IfcLengthMeasure;WallThickness;IfcPositiveLengthMeasure;BaseThickness;IfcPositiveLengthMeasure;IsShallow;IfcBoolean;HasSteps;IfcBoolean;WithBackdrop;IfcBoolean;AccessLengthOrRadius;IfcPositiveLengthMeasure;AccessWidth;IfcPositiveLengthMeasure;AccessCoverLoadRating;IfcText +Pset_DistributionChamberElementTypeManhole;InvertLevel;IfcLengthMeasure;SoffitLevel;IfcLengthMeasure;WallThickness;IfcPositiveLengthMeasure;BaseThickness;IfcPositiveLengthMeasure;IsShallow;IfcBoolean;HasSteps;IfcBoolean;WithBackdrop;IfcBoolean;AccessLengthOrRadius;IfcPositiveLengthMeasure;AccessWidth;IfcPositiveLengthMeasure;AccessCoverLoadRating;IfcText;IsAccessibleOnFoot;IfcBoolean;IsLocked;IfcBoolean;NumberOfCableEntries;IfcCountMeasure;NumberOfManholeCovers;IfcCountMeasure Pset_DistributionChamberElementTypeMeterChamber;ChamberLengthOrRadius;IfcPositiveLengthMeasure;ChamberWidth;IfcPositiveLengthMeasure;WallThickness;IfcPositiveLengthMeasure;BaseThickness;IfcPositiveLengthMeasure -Pset_DistributionChamberElementTypeSump;Length;IfcPositiveLengthMeasure;Width;IfcPositiveLengthMeasure;InvertLevel;IfcPositiveLengthMeasure +Pset_DistributionChamberElementTypeSump;Length;IfcPositiveLengthMeasure;Width;IfcPositiveLengthMeasure;SumpInvertLevel;IfcPositiveLengthMeasure Pset_DistributionChamberElementTypeTrench;Width;IfcPositiveLengthMeasure;Depth;IfcPositiveLengthMeasure;InvertLevel;IfcLengthMeasure Pset_DistributionChamberElementTypeValveChamber;ChamberLengthOrRadius;IfcPositiveLengthMeasure;ChamberWidth;IfcPositiveLengthMeasure;WallThickness;IfcPositiveLengthMeasure;BaseThickness;IfcPositiveLengthMeasure -Pset_DistributionPortCommon;PortNumber;IfcInteger;ColorCode;IfcLabel -Pset_DistributionPortTypeCable;ConnectionSubtype;IfcLabel;CurrentContent3rdHarmonic;IfcPositiveRatioMeasure;Current;IfcElectricCurrentMeasure;Voltage;IfcElectricVoltageMeasure;Power;IfcPowerMeasure;Protocols;IfcIdentifier -Pset_DistributionPortTypeDuct;ConnectionSubType;IfcLabel;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;NominalThickness;IfcPositiveLengthMeasure;DryBulbTemperature;IfcThermodynamicTemperatureMeasure;WetBulbTemperature;IfcThermodynamicTemperatureMeasure;VolumetricFlowRate;IfcVolumetricFlowRateMeasure;Velocity;IfcLinearVelocityMeasure;Pressure;IfcPressureMeasure -Pset_DistributionPortTypePipe;ConnectionSubType;IfcLabel;NominalDiameter;IfcPositiveLengthMeasure;InnerDiameter;IfcPositiveLengthMeasure;OuterDiameter;IfcPositiveLengthMeasure;Temperature;IfcThermodynamicTemperatureMeasure;VolumetricFlowRate;IfcVolumetricFlowRateMeasure;MassFlowRate;IfcMassFlowRateMeasure;FlowCondition;IfcPositiveRatioMeasure;Velocity;IfcLinearVelocityMeasure;Pressure;IfcPressureMeasure +Pset_DistributionPortCommon;PortNumber;IfcInteger;ColourCode;IfcLabel +Pset_DistributionPortPHistoryCable +Pset_DistributionPortPHistoryDuct +Pset_DistributionPortPHistoryPipe +Pset_DistributionPortTypeCable;ConnectionSubtype;IfcLabel;CurrentContent3rdHarmonic;IfcPositiveRatioMeasure;Current;IfcElectricCurrentMeasure;Voltage;IfcElectricVoltageMeasure;Power;IfcPowerMeasure;Protocols;IfcIdentifier;HasConnector;IfcBoolean;IsWelded;IfcBoolean +Pset_DistributionPortTypeDuct;ConnectionSubtype;IfcLabel;NominalWidth;IfcNonNegativeLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;NominalThickness;IfcNonNegativeLengthMeasure;DryBulbTemperature;IfcThermodynamicTemperatureMeasure;WetBulbTemperature;IfcThermodynamicTemperatureMeasure;VolumetricFlowRate;IfcVolumetricFlowRateMeasure;Velocity;IfcLinearVelocityMeasure;Pressure;IfcPressureMeasure +Pset_DistributionPortTypePipe;ConnectionSubtype;IfcLabel;NominalDiameter;IfcPositiveLengthMeasure;InnerDiameter;IfcPositiveLengthMeasure;OuterDiameter;IfcPositiveLengthMeasure;Temperature;IfcThermodynamicTemperatureMeasure;VolumetricFlowRate;IfcVolumetricFlowRateMeasure;MassFlowRate;IfcMassFlowRateMeasure;FlowCondition;IfcPositiveRatioMeasure;Velocity;IfcLinearVelocityMeasure;Pressure;IfcPressureMeasure Pset_DistributionSystemCommon;Reference;IfcIdentifier -Pset_DistributionSystemTypeElectrical;Diversity;IfcPositiveRatioMeasure;NumberOfLiveConductors;IfcInteger;MaximumAllowedVoltageDrop;IfcElectricVoltageMeasure;NetImpedance;IfcElectricResistanceMeasure +Pset_DistributionSystemTypeElectrica;Diversity;IfcPositiveRatioMeasure;NumberOfLiveConductors;IfcCountMeasure;MaximumAllowedVoltageDrop;IfcElectricVoltageMeasure;NetImpedance;IfcElectricResistanceMeasure;RatedVoltageRange;IfcElectricVoltageMeasure +Pset_DistributionSystemTypeOverheadContactlineSyste;SpanNominalLength;IfcPositiveLengthMeasure;ContactWireStagger;IfcPositiveLengthMeasure;ContactWireNominalDrop;IfcPositiveLengthMeasure;PressureRange;IfcPressureMeasure;ContactWireNominalHeight;IfcPositiveLengthMeasure;ContactWireUplift;IfcNonNegativeLengthMeasure;ElectricalClearance;IfcPositiveLengthMeasure;NumberOfOverlappingSpans;IfcCountMeasure;PantographType;IfcLabel;TensionLength;IfcPositiveLengthMeasure Pset_DistributionSystemTypeVentilation;DesignName;IfcLabel;PressureClass;IfcPressureMeasure;LeakageClass;IfcPressureMeasure;FrictionLoss;IfcReal;ScrapFactor;IfcReal;MaximumVelocity;IfcLinearVelocityMeasure;AspectRatio;IfcReal;MinimumHeight;IfcPositiveLengthMeasure;MinimumWidth;IfcPositiveLengthMeasure Pset_DoorCommon;Reference;IfcIdentifier;FireRating;IfcLabel;AcousticRating;IfcLabel;SecurityRating;IfcLabel;DurabilityRating;IfcLabel;HygrothermalRating;IfcLabel;WaterTightnessRating;IfcLabel;MechanicalLoadRating;IfcLabel;WindLoadRating;IfcLabel;Infiltration;IfcVolumetricFlowRateMeasure;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;GlazingAreaFraction;IfcPositiveRatioMeasure;HandicapAccessible;IfcBoolean;FireExit;IfcBoolean;HasDrive;IfcBoolean;SelfClosing;IfcBoolean;SmokeStop;IfcBoolean -Pset_DoorWindowGlazingType;GlassLayers;IfcCountMeasure;GlassThickness1;IfcPositiveLengthMeasure;GlassThickness2;IfcPositiveLengthMeasure;GlassThickness3;IfcPositiveLengthMeasure;FillGas;IfcLabel;GlassColor;IfcLabel;IsTempered;IfcBoolean;IsLaminated;IfcBoolean;IsCoated;IfcBoolean;IsWired;IfcBoolean;VisibleLightReflectance;IfcNormalisedRatioMeasure;VisibleLightTransmittance;IfcNormalisedRatioMeasure;SolarAbsorption;IfcNormalisedRatioMeasure;SolarReflectance;IfcNormalisedRatioMeasure;SolarTransmittance;IfcNormalisedRatioMeasure;SolarHeatGainTransmittance;IfcNormalisedRatioMeasure;ShadingCoefficient;IfcNormalisedRatioMeasure;ThermalTransmittanceSummer;IfcThermalTransmittanceMeasure;ThermalTransmittanceWinter;IfcThermalTransmittanceMeasure -Pset_DuctFittingOccurrence;InteriorRoughnessCoefficient;IfcPositiveLengthMeasure;HasLiner;IfcBoolean;Color;IfcLabel +Pset_DoorLiningProperties;LiningDepth;IfcPositiveLengthMeasure;LiningThickness;IfcNonNegativeLengthMeasure;ThresholdDepth;IfcPositiveLengthMeasure;ThresholdThickness;IfcNonNegativeLengthMeasure;TransomThickness;IfcNonNegativeLengthMeasure;TransomOffset;IfcLengthMeasure;LiningOffset;IfcLengthMeasure;ThresholdOffset;IfcLengthMeasure;CasingThickness;IfcPositiveLengthMeasure;CasingDepth;IfcPositiveLengthMeasure;LiningToPanelOffsetX;IfcLengthMeasure;LiningToPanelOffsetY;IfcLengthMeasure +Pset_DoorPanelProperties;PanelDepth;IfcPositiveLengthMeasure;PanelWidth;IfcNormalisedRatioMeasure +Pset_DoorTypeTurnstile;IsBidirectional;IfcBoolean;NarrowChannelWidth;IfcPositiveLengthMeasure;WideChannelWidth;IfcPositiveLengthMeasure +Pset_DoorWindowGlazingType;GlassLayers;IfcCountMeasure;GlassThickness1;IfcPositiveLengthMeasure;GlassThickness2;IfcPositiveLengthMeasure;GlassThickness3;IfcPositiveLengthMeasure;FillGas;IfcLabel;GlassColour;IfcLabel;IsTempered;IfcBoolean;IsLaminated;IfcBoolean;IsCoated;IfcBoolean;IsWired;IfcBoolean;VisibleLightReflectance;IfcNormalisedRatioMeasure;VisibleLightTransmittance;IfcNormalisedRatioMeasure;SolarAbsorption;IfcNormalisedRatioMeasure;SolarReflectance;IfcNormalisedRatioMeasure;SolarTransmittance;IfcNormalisedRatioMeasure;SolarHeatGainTransmittance;IfcNormalisedRatioMeasure;ShadingCoefficient;IfcNormalisedRatioMeasure;ThermalTransmittanceSummer;IfcThermalTransmittanceMeasure;ThermalTransmittanceWinter;IfcThermalTransmittanceMeasure +Pset_DuctFittingOccurrence;InteriorRoughnessCoefficient;IfcPositiveLengthMeasure;HasLiner;IfcBoolean;Colour;IfcLabel +Pset_DuctFittingPHistory Pset_DuctFittingTypeCommon;Reference;IfcIdentifier;PressureClass;IfcPressureMeasure;PressureRange;IfcPressureMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure -Pset_DuctSegmentOccurrence;InteriorRoughnessCoefficient;IfcPositiveLengthMeasure;HasLiner;IfcBoolean;Color;IfcLabel +Pset_DuctSegmentOccurrence;InteriorRoughnessCoefficient;IfcPositiveLengthMeasure;HasLiner;IfcBoolean;Colour;IfcLabel +Pset_DuctSegmentPHistory Pset_DuctSegmentTypeCommon;Reference;IfcIdentifier;WorkingPressure;IfcPressureMeasure;PressureRange;IfcPressureMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;LongitudinalSeam;IfcText;NominalDiameterOrWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;Reinforcement;IfcLabel;ReinforcementSpacing;IfcPositiveLengthMeasure -Pset_DuctSilencerTypeCommon;Reference;IfcIdentifier;HydraulicDiameter;IfcLengthMeasure;Length;IfcLengthMeasure;Weight;IfcMassMeasure;AirFlowrateRange;IfcVolumetricFlowRateMeasure;WorkingPressureRange;IfcPressureMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;HasExteriorInsulation;IfcBoolean -Pset_ElectricalDeviceCommon;RatedCurrent;IfcElectricCurrentMeasure;RatedVoltage;IfcElectricVoltageMeasure;NominalFrequencyRange;IfcFrequencyMeasure;PowerFactor;IfcNormalisedRatioMeasure;NumberOfPoles;IfcInteger;HasProtectiveEarth;IfcBoolean;IP_Code;IfcLabel;IK_Code;IfcLabel +Pset_DuctSilencerPHistory +Pset_DuctSilencerTypeCommon;Reference;IfcIdentifier;HydraulicDiameter;IfcLengthMeasure;Length;IfcPositiveLengthMeasure;Weight;IfcMassMeasure;AirFlowRateRange;IfcVolumetricFlowRateMeasure;WorkingPressureRange;IfcPressureMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;HasExteriorInsulation;IfcBoolean +Pset_ElectricAppliancePHistory Pset_ElectricApplianceTypeCommon;Reference;IfcIdentifier -Pset_ElectricDistributionBoardOccurrence;IsMain;IfcBoolean;IsSkilledOperator;IfcBoolean -Pset_ElectricDistributionBoardTypeCommon;Reference;IfcIdentifier -Pset_ElectricFlowStorageDeviceTypeCommon;Reference;IfcIdentifier;NominalSupplyVoltage;IfcElectricVoltageMeasure;NominalSupplyVoltageOffset;IfcElectricVoltageMeasure;NominalFrequency;IfcFrequencyMeasure;ShortCircuit3PoleMaximumState;IfcElectricCurrentMeasure;ShortCircuit3PolePowerFactorMaximumState;IfcReal;ShortCircuit2PoleMinimumState;IfcElectricCurrentMeasure;ShortCircuit2PolePowerFactorMinimumState;IfcReal;ShortCircuit1PoleMaximumState;IfcElectricCurrentMeasure;ShortCircuit1PolePowerFactorMaximumState;IfcReal;ShortCircuit1PoleMinimumState;IfcElectricCurrentMeasure;ShortCircuit1PolePowerFactorMinimumState;IfcReal;EarthFault1PoleMaximumState;IfcElectricCurrentMeasure;EarthFault1PolePowerFactorMaximumState;IfcReal;EarthFault1PoleMinimumState;IfcElectricCurrentMeasure;EarthFault1PolePowerFactorMinimumState;IfcReal +Pset_ElectricApplianceTypeDishwasher +Pset_ElectricApplianceTypeElectricCooker +Pset_ElectricFlowStorageDeviceTypeBattery;CurrentRegulationRate;IfcRatioMeasure;NominalSupplyCurrent;IfcElectricCurrentMeasure;VoltageRegulationRate;IfcRatioMeasure;EncapsulationTechnologyCode;IfcIdentifier;OpenCircuitVoltage;IfcElectricVoltageMeasure +Pset_ElectricFlowStorageDeviceTypeCapacitor;NumberOfPhases;IfcCountMeasure +Pset_ElectricFlowStorageDeviceTypeCommon;Reference;IfcIdentifier;NominalSupplyVoltage;IfcElectricVoltageMeasure;NominalSupplyVoltageOffset;IfcElectricVoltageMeasure;NominalFrequency;IfcFrequencyMeasure;ShortCircuit3PoleMaximumState;IfcElectricCurrentMeasure;ShortCircuit3PolePowerFactorMaximumState;IfcReal;ShortCircuit2PoleMinimumState;IfcElectricCurrentMeasure;ShortCircuit2PolePowerFactorMinimumState;IfcReal;ShortCircuit1PoleMaximumState;IfcElectricCurrentMeasure;ShortCircuit1PolePowerFactorMaximumState;IfcReal;ShortCircuit1PoleMinimumState;IfcElectricCurrentMeasure;ShortCircuit1PolePowerFactorMinimumState;IfcReal;EarthFault1PoleMaximumState;IfcElectricCurrentMeasure;EarthFault1PolePowerFactorMaximumState;IfcReal;EarthFault1PoleMinimumState;IfcElectricCurrentMeasure;EarthFault1PolePowerFactorMinimumState;IfcReal;MaximumInsulatedVoltage;IfcElectricVoltageMeasure;RatedCapacitance;IfcElectricCapacitanceMeasure;PowerCapacity;IfcElectricChargeMeasure +Pset_ElectricFlowStorageDeviceTypeInductor;Inductance;IfcInductanceMeasure;NumberOfPhases;IfcCountMeasure +Pset_ElectricFlowStorageDeviceTypeRecharger;NominalSupplyCurrent;IfcElectricCurrentMeasure +Pset_ElectricFlowStorageDeviceTypeUPS;CurrentRegulationRate;IfcRatioMeasure;NominalSupplyCurrent;IfcElectricCurrentMeasure;VoltageRegulationRate;IfcRatioMeasure +Pset_ElectricFlowTreatmentDeviceTypeElectronicFilter;NominalPower;IfcPowerMeasure;NominalCurrent;IfcElectricCurrentMeasure;PrimaryFrequency;IfcFrequencyMeasure;SecondaryFrequency;IfcFrequencyMeasure;RatedVoltage;IfcElectricVoltageMeasure Pset_ElectricGeneratorTypeCommon;Reference;IfcIdentifier;ElectricGeneratorEfficiency;IfcPositiveRatioMeasure;StartCurrentFactor;IfcReal;MaximumPowerOutput;IfcPowerMeasure Pset_ElectricMotorTypeCommon;Reference;IfcIdentifier;MaximumPowerOutput;IfcPowerMeasure;ElectricMotorEfficiency;IfcPositiveRatioMeasure;StartCurrentFactor;IfcReal;StartingTime;IfcTimeMeasure;TeTime;IfcTimeMeasure;LockedRotorCurrent;IfcElectricCurrentMeasure;FrameSize;IfcLabel;IsGuarded;IfcBoolean;HasPartWinding;IfcBoolean Pset_ElectricTimeControlTypeCommon;Reference;IfcIdentifier -Pset_ElementAssemblyCommon;Reference;IfcLabel +Pset_ElectricalDeviceCommon;RatedCurrent;IfcElectricCurrentMeasure;RatedVoltage;IfcElectricVoltageMeasure;NominalFrequencyRange;IfcFrequencyMeasure;PowerFactor;IfcNormalisedRatioMeasure;NumberOfPoles;IfcCountMeasure;HasProtectiveEarth;IfcBoolean;IP_Code;IfcLabel;IK_Code;IfcLabel;EarthingStyle;IfcLabel;HeatDissipation;IfcPowerMeasure;Power;IfcPowerMeasure;NominalPowerConsumption;IfcPowerMeasure;NumberOfPowerSupplyPorts;IfcInteger +Pset_ElectricalDeviceCompliance;ElectroMagneticStandardsCompliance;IfcBoolean;ExplosiveAtmosphereStandardsCompliance;IfcBoolean;FireProofingStandardsCompliance;IfcBoolean;LightningProtectionStandardsCompliance;IfcBoolean +Pset_ElectricalFeederLine;CurrentCarryingCapacity;IfcElectricCurrentMeasure;DesignAmbientTemperature;IfcThermodynamicTemperatureMeasure;ElectricalClearanceDistance;IfcPositiveLengthMeasure +Pset_ElementAssemblyCommon;Reference;IfcIdentifier +Pset_ElementAssemblyTypeCantilever;ContactWireStagger;IfcPositiveLengthMeasure;SystemHeight;IfcPositiveLengthMeasure +Pset_ElementAssemblyTypeDilatationPane;DilatationLength;IfcPositiveLengthMeasure +Pset_ElementAssemblyTypeHeadSpan;NumberOfTracksCrossed;IfcCountMeasure;Span;IfcPositiveLengthMeasure +Pset_ElementAssemblyTypeMast;WithLightningRod;IfcBoolean +Pset_ElementAssemblyTypeOCSSuspension;ContactWireStagger;IfcPositiveLengthMeasure;ContactWireHeight;IfcPositiveLengthMeasure +Pset_ElementAssemblyTypeRigidFrame;LoadCapacity;IfcForceMeasure;NumberOfTracksCrossed;IfcCountMeasure;Span;IfcPositiveLengthMeasure +Pset_ElementAssemblyTypeSteadyDevice;ContactWireStagger;IfcPositiveLengthMeasure;IsSetOnWorkingWire;IfcBoolean +Pset_ElementAssemblyTypeSupportingAssembly;NumberOfCantilevers;IfcCountMeasure +Pset_ElementAssemblyTypeTrackPane;IsAccessibleByVehicle;IfcBoolean;TrackExpansion;IfcPositiveLengthMeasure +Pset_ElementAssemblyTypeTractionSwitchingAssembly;NominalCurrent;IfcElectricCurrentMeasure;NominalPower;IfcPowerMeasure;RatedVoltage;IfcElectricVoltageMeasure;DesignAmbientTemperature;IfcThermodynamicTemperatureMeasure +Pset_ElementAssemblyTypeTurnoutPane;IsAccessibleByVehicle;IfcBoolean;TrackExpansion;IfcPositiveLengthMeasure;TurnoutCurvedRadius;IfcLengthMeasure;IsSharedTurnout;IfcBoolean;MaximumSpeedLimitOfDivergingLine;IfcLinearVelocityMeasure;PercentShared;IfcPositiveRatioMeasure;TrackGaugeLength;IfcPositiveLengthMeasure;TurnoutPointMachineCount;IfcCountMeasure Pset_ElementComponentCommon;Reference;IfcIdentifier +Pset_ElementKinematics;CyclicPath;IfcPlaneAngleMeasure;CyclicRange;IfcPlaneAngleMeasure;LinearPath;IfcLengthMeasure;LinearRange;IfcPositiveLengthMeasure;MaximumAngularVelocity;IfcAngularVelocityMeasure;MaximumConstantSpeed;IfcLinearVelocityMeasure;MinimumTime;IfcTimeMeasure +Pset_ElementSize;NominalLength;IfcPositiveLengthMeasure;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure +Pset_EmbeddedTrack;IsAccessibleByVehicle;IfcBoolean;HasDrainage;IfcBoolean;PermissibleRoadLoad;IfcMassMeasure +Pset_EnergyRequirements;EnergyConsumption;IfcEnergyMeasure;PowerDemand;IfcPowerMeasure;EnergySourceLabel;IfcLabel;EnergyConversionEfficiency;IfcRatioMeasure Pset_EngineTypeCommon;Reference;IfcIdentifier -Pset_EnvironmentalImpactIndicators;Reference;IfcIdentifier;FunctionalUnitReference;IfcLabel;Unit;IfcText;ExpectedServiceLife;IfcTimeMeasure;TotalPrimaryEnergyConsumptionPerUnit;IfcEnergyMeasure;WaterConsumptionPerUnit;IfcVolumeMeasure;HazardousWastePerUnit;IfcMassMeasure;NonHazardousWastePerUnit;IfcMassMeasure;ClimateChangePerUnit;IfcMassMeasure;AtmosphericAcidificationPerUnit;IfcMassMeasure;RenewableEnergyConsumptionPerUnit;IfcEnergyMeasure;NonRenewableEnergyConsumptionPerUnit;IfcEnergyMeasure;ResourceDepletionPerUnit;IfcMassMeasure;InertWastePerUnit;IfcMassMeasure;RadioactiveWastePerUnit;IfcMassMeasure;StratosphericOzoneLayerDestructionPerUnit;IfcMassMeasure;PhotochemicalOzoneFormationPerUnit;IfcMassMeasure;EutrophicationPerUnit;IfcMassMeasure +Pset_EnvironmentalCondition;ReferenceAirRelativeHumidity;IfcNormalisedRatioMeasure;ReferenceEnvironmentTemperature;IfcThermodynamicTemperatureMeasure;MaximumAtmosphericPressure;IfcPressureMeasure;StorageTemperatureRange;IfcThermodynamicTemperatureMeasure;MaximumWindSpeed;IfcLinearVelocityMeasure;OperationalTemperatureRange;IfcThermodynamicTemperatureMeasure;MaximumRainIntensity;IfcReal;SaltMistLevel;IfcLabel;SeismicResistance;IfcReal;SmokeLevel;IfcLabel;MaximumSolarRadiation;IfcReal +Pset_EnvironmentalEmissions;CarbonDioxideEmissions;IfcMassFlowRateMeasure;SulphurDioxideEmissions;IfcMassFlowRateMeasure;NitrogenOxidesEmissions;IfcMassFlowRateMeasure;ParticulateMatterEmissions;IfcMassFlowRateMeasure;NoiseEmissions;IfcSoundPowerLevelMeasure +Pset_EnvironmentalImpactIndicators;Reference;IfcIdentifier;FunctionalUnitReference;IfcLabel;IndicatorsUnit;IfcText;ExpectedServiceLife;IfcTimeMeasure;TotalPrimaryEnergyConsumptionPerUnit;IfcEnergyMeasure;WaterConsumptionPerUnit;IfcVolumeMeasure;HazardousWastePerUnit;IfcMassMeasure;NonHazardousWastePerUnit;IfcMassMeasure;ClimateChangePerUnit;IfcMassMeasure;AtmosphericAcidificationPerUnit;IfcMassMeasure;RenewableEnergyConsumptionPerUnit;IfcEnergyMeasure;NonRenewableEnergyConsumptionPerUnit;IfcEnergyMeasure;ResourceDepletionPerUnit;IfcMassMeasure;InertWastePerUnit;IfcMassMeasure;RadioactiveWastePerUnit;IfcMassMeasure;StratosphericOzoneLayerDestructionPerUnit;IfcMassMeasure;PhotochemicalOzoneFormationPerUnit;IfcMassMeasure;EutrophicationPerUnit;IfcMassMeasure Pset_EnvironmentalImpactValues;TotalPrimaryEnergyConsumption;IfcEnergyMeasure;WaterConsumption;IfcVolumeMeasure;HazardousWaste;IfcMassMeasure;NonHazardousWaste;IfcMassMeasure;ClimateChange;IfcMassMeasure;AtmosphericAcidification;IfcMassMeasure;RenewableEnergyConsumption;IfcEnergyMeasure;NonRenewableEnergyConsumption;IfcEnergyMeasure;ResourceDepletion;IfcMassMeasure;InertWaste;IfcMassMeasure;RadioactiveWaste;IfcMassMeasure;StratosphericOzoneLayerDestruction;IfcMassMeasure;PhotochemicalOzoneFormation;IfcMassMeasure;Eutrophication;IfcMassMeasure;LeadInTime;IfcDuration;Duration;IfcDuration;LeadOutTime;IfcDuration +Pset_EvaporativeCoolerPHistory Pset_EvaporativeCoolerTypeCommon;Reference;IfcIdentifier;HeatExchangeArea;IfcAreaMeasure;OperationTemperatureRange;IfcThermodynamicTemperatureMeasure;WaterRequirement;IfcVolumetricFlowRateMeasure;EffectivenessTable;IfcReal;AirPressureDropCurve;IfcPressureMeasure;WaterPressDropCurve;IfcPressureMeasure +Pset_EvaporatorPHistory Pset_EvaporatorTypeCommon;Reference;IfcIdentifier;ExternalSurfaceArea;IfcAreaMeasure;InternalSurfaceArea;IfcAreaMeasure;InternalRefrigerantVolume;IfcVolumeMeasure;InternalWaterVolume;IfcVolumeMeasure;NominalHeatTransferArea;IfcAreaMeasure;NominalHeatTransferCoefficient;IfcThermalTransmittanceMeasure +Pset_FanCentrifuga Pset_FanOccurrence;FractionOfMotorHeatToAirStream;IfcNormalisedRatioMeasure;ImpellerDiameter;IfcPositiveLengthMeasure +Pset_FanPHistory Pset_FanTypeCommon;Reference;IfcIdentifier;OperationTemperatureRange;IfcThermodynamicTemperatureMeasure;NominalAirFlowRate;IfcVolumetricFlowRateMeasure;NominalTotalPressure;IfcPressureMeasure;NominalStaticPressure;IfcPressureMeasure;NominalRotationSpeed;IfcRotationalFrequencyMeasure;NominalPowerRate;IfcPowerMeasure;OperationalCriteria;IfcTimeMeasure;PressureCurve;IfcPressureMeasure;EfficiencyCurve;IfcNormalisedRatioMeasure -Pset_FastenerWeld;Type1;IfcLabel;Type2;IfcLabel;Surface1;IfcLabel;Surface2;IfcLabel;Process;IfcInteger;ProcessName;IfcLabel;a;IfcPositiveLengthMeasure;c;IfcPositiveLengthMeasure;d;IfcPositiveLengthMeasure;e;IfcPositiveLengthMeasure;l;IfcPositiveLengthMeasure;n;IfcCountMeasure;s;IfcPositiveLengthMeasure;z;IfcPositiveLengthMeasure;Intermittent;IfcBoolean;Staggered;IfcBoolean +Pset_FastenerRailWeld;IsLiftingBracket;IfcBoolean;TemperatureDuringInstallation;IfcThermodynamicTemperatureMeasure +Pset_FastenerWeld;Type1;IfcLabel;Type2;IfcLabel;Surface1;IfcLabel;Surface2;IfcLabel;Process;IfcInteger;ProcessName;IfcLabel;NominalThroatThickness;IfcPositiveLengthMeasure;WeldWidth;IfcPositiveLengthMeasure;WeldDiameter;IfcPositiveLengthMeasure;WeldElementSpacing;IfcPositiveLengthMeasure;WeldElementLength;IfcPositiveLengthMeasure;NumberOfWeldElements;IfcCountMeasure;DeepPenetrationThroatThickness;IfcPositiveLengthMeasure;WeldLegLength;IfcPositiveLengthMeasure;Intermittent;IfcBoolean;Staggered;IfcBoolean +Pset_FenderCommon;CoefficientOfFriction;IfcPositiveRatioMeasure;EnergyAbsorptionTolerance;IfcPositiveRatioMeasure;MaxReactionTolerance;IfcPositiveRatioMeasure;MaximumTemperatureFactor;IfcPositiveRatioMeasure;MinimumTemperatureFactor;IfcPositiveRatioMeasure;VelocityFactorEnergy;IfcPositiveRatioMeasure;VelocityFactorReaction;IfcPositiveRatioMeasure;EnergyAbsorption;IfcEnergyMeasure;MaxReaction;IfcForceMeasure +Pset_FenderDesignCriteria;CoefficientOfFriction;IfcPositiveRatioMeasure;EnergyAbsorptionTolerance;IfcPositiveRatioMeasure;MaxReactionTolerance;IfcPositiveRatioMeasure;MaximumTemperatureFactor;IfcPositiveRatioMeasure;MinimumTemperatureFactor;IfcPositiveRatioMeasure;VelocityFactorEnergy;IfcPositiveRatioMeasure;VelocityFactorReaction;IfcPositiveRatioMeasure;EnergyAbsorption;IfcEnergyMeasure;MaxReaction;IfcForceMeasure;MinCompressedFenderHeight;IfcPositiveLengthMeasure +Pset_FilterPHistory Pset_FilterTypeAirParticleFilter;DustHoldingCapacity;IfcMassMeasure;FaceSurfaceArea;IfcAreaMeasure;MediaExtendedArea;IfcAreaMeasure;NominalCountedEfficiency;IfcReal;NominalWeightedEfficiency;IfcReal;PressureDropCurve;IfcPressureMeasure;CountedEfficiencyCurve;IfcReal;WeightedEfficiencyCurve;IfcReal Pset_FilterTypeCommon;Reference;IfcIdentifier;Weight;IfcMassMeasure;InitialResistance;IfcPressureMeasure;FinalResistance;IfcPressureMeasure;OperationTemperatureRange;IfcThermodynamicTemperatureMeasure;FlowRateRange;IfcVolumetricFlowRateMeasure;NominalFilterFaceVelocity;IfcLinearVelocityMeasure;NominalMediaSurfaceVelocity;IfcLinearVelocityMeasure;NominalPressureDrop;IfcPressureMeasure;NominalFlowrate;IfcVolumetricFlowRateMeasure;NominalParticleGeometricMeanDiameter;IfcPositiveLengthMeasure;NominalParticleGeometricStandardDeviation;IfcReal Pset_FilterTypeCompressedAirFilter;OperationPressureMax;IfcPressureMeasure;ParticleAbsorptionCurve;IfcPositiveRatioMeasure;AutomaticCondensateDischarge;IfcBoolean;CloggingIndicator;IfcBoolean +Pset_FilterTypeWaterFilter Pset_FireSuppressionTerminalTypeBreechingInlet;InletDiameter;IfcPositiveLengthMeasure;OutletDiameter;IfcPositiveLengthMeasure;HasCaps;IfcBoolean Pset_FireSuppressionTerminalTypeCommon;Reference;IfcIdentifier -Pset_FireSuppressionTerminalTypeFireHydrant;PumperConnectionSize;IfcPositiveLengthMeasure;NumberOfHoseConnections;IfcInteger;HoseConnectionSize;IfcPositiveLengthMeasure;DischargeFlowRate;IfcVolumetricFlowRateMeasure;FlowClass;IfcLabel;WaterIsPotable;IfcBoolean;PressureRating;IfcPressureMeasure;BodyColor;IfcText;CapColor;IfcText -Pset_FireSuppressionTerminalTypeHoseReel;InletConnectionSize;IfcPositiveLengthMeasure;HoseDiameter;IfcPositiveLengthMeasure;HoseLength;IfcPositiveLengthMeasure;ClassOfService;IfcLabel;ClassificationAuthority;IfcLabel +Pset_FireSuppressionTerminalTypeFireHydrant;PumperConnectionSize;IfcPositiveLengthMeasure;NumberOfHoseConnections;IfcCountMeasure;HoseConnectionSize;IfcPositiveLengthMeasure;DischargeFlowRate;IfcVolumetricFlowRateMeasure;FlowClass;IfcLabel;WaterIsPotable;IfcBoolean;PressureRating;IfcPressureMeasure;BodyColour;IfcText;CapColour;IfcText +Pset_FireSuppressionTerminalTypeHoseRee;InletConnectionSize;IfcPositiveLengthMeasure;HoseDiameter;IfcPositiveLengthMeasure;HoseLength;IfcPositiveLengthMeasure;ClassOfService;IfcLabel;ClassificationAuthority;IfcLabel Pset_FireSuppressionTerminalTypeSprinkler;ActivationTemperature;IfcThermodynamicTemperatureMeasure;CoverageArea;IfcAreaMeasure;HasDeflector;IfcBoolean;DischargeFlowRate;IfcVolumetricFlowRateMeasure;ResidualFlowingPressure;IfcPressureMeasure;DischargeCoefficient;IfcReal;MaximumWorkingPressure;IfcPressureMeasure;ConnectionSize;IfcPositiveLengthMeasure +Pset_FittingBend;BendAngle;IfcPositivePlaneAngleMeasure;BendRadius;IfcPositiveLengthMeasure +Pset_FittingJunction;JunctionLeftAngle;IfcPositivePlaneAngleMeasure;JunctionLeftRadius;IfcPositiveLengthMeasure;JunctionRightAngle;IfcPositivePlaneAngleMeasure;JunctionRightRadius;IfcPositiveLengthMeasure +Pset_FittingTransition;NominalLength;IfcPositiveLengthMeasure;EccentricityInY;IfcLengthMeasure;EccentricityInZ;IfcLengthMeasure +Pset_FlowInstrumentPHistory Pset_FlowInstrumentTypeCommon;Reference;IfcIdentifier Pset_FlowInstrumentTypePressureGauge;DisplaySize;IfcPositiveLengthMeasure Pset_FlowInstrumentTypeThermometer;DisplaySize;IfcPositiveLengthMeasure +Pset_FlowMeterOccurrence Pset_FlowMeterTypeCommon;Reference;IfcIdentifier;RemoteReading;IfcBoolean Pset_FlowMeterTypeEnergyMeter;NominalCurrent;IfcElectricCurrentMeasure;MaximumCurrent;IfcElectricCurrentMeasure;MultipleTarriff;IfcBoolean Pset_FlowMeterTypeGasMeter;ConnectionSize;IfcPositiveLengthMeasure;MaximumFlowRate;IfcVolumetricFlowRateMeasure;MaximumPressureLoss;IfcPressureMeasure Pset_FlowMeterTypeOilMeter;ConnectionSize;IfcPositiveLengthMeasure;MaximumFlowRate;IfcVolumetricFlowRateMeasure Pset_FlowMeterTypeWaterMeter;ConnectionSize;IfcPositiveLengthMeasure;MaximumFlowRate;IfcVolumetricFlowRateMeasure;MaximumPressureLoss;IfcPressureMeasure Pset_FootingCommon;Reference;IfcIdentifier;LoadBearing;IfcBoolean +Pset_FootingTypePadFooting;LoadBearingCapacity;IfcPlanarForceMeasure;IsReinforced;IfcBoolean Pset_FurnitureTypeChair;SeatingHeight;IfcPositiveLengthMeasure;HighestSeatingHeight;IfcPositiveLengthMeasure;LowestSeatingHeight;IfcPositiveLengthMeasure -Pset_FurnitureTypeCommon;Reference;IfcIdentifier;Style;IfcLabel;NominalHeight;IfcPositiveLengthMeasure;NominalLength;IfcPositiveLengthMeasure;NominalDepth;IfcPositiveLengthMeasure;MainColor;IfcLabel;IsBuiltIn;IfcBoolean +Pset_FurnitureTypeCommon;Reference;IfcIdentifier;Style;IfcLabel;NominalHeight;IfcPositiveLengthMeasure;NominalLength;IfcNonNegativeLengthMeasure;NominalDepth;IfcNonNegativeLengthMeasure;MainColour;IfcLabel;IsBuiltIn;IfcBoolean Pset_FurnitureTypeDesk;WorksurfaceArea;IfcAreaMeasure Pset_FurnitureTypeFileCabinet;WithLock;IfcBoolean -Pset_FurnitureTypeTable;WorksurfaceArea;IfcAreaMeasure;NumberOfChairs;IfcInteger +Pset_FurnitureTypeTable;WorksurfaceArea;IfcAreaMeasure;NumberOfChairs;IfcCountMeasure +Pset_GateHeadCommon;StructuralType;IfcLabel +Pset_GeotechnicalAssemblyCommon;Limitations;IfcText;Methodology;IfcText +Pset_GeotechnicalStratumCommon;StratumColour;IfcLabel;IsTopographic;IfcLogical;PiezometricHead;IfcPositiveLengthMeasure;PiezometricPressure;IfcPressureMeasure;Texture;IfcLabel Pset_HeatExchangerTypeCommon;Reference;IfcIdentifier -Pset_HeatExchangerTypePlate;NumberOfPlates;IfcInteger +Pset_HeatExchangerTypePlate;NumberOfPlates;IfcCountMeasure +Pset_HumidifierPHistory Pset_HumidifierTypeCommon;Reference;IfcIdentifier;Weight;IfcMassMeasure;NominalMoistureGain;IfcMassFlowRateMeasure;NominalAirFlowRate;IfcVolumetricFlowRateMeasure;WaterRequirement;IfcVolumetricFlowRateMeasure;SaturationEfficiencyCurve;IfcNormalisedRatioMeasure;AirPressureDropCurve;IfcPressureMeasure +Pset_ImpactProtectionDeviceOccurrenceBumper;BrakingLength;IfcPositiveLengthMeasure;IsRemovableBumper;IfcBoolean +Pset_ImpactProtectionDeviceTypeBumper;IsAbsorbingEnergy;IfcBoolean;MaximumLoadRetention;IfcForceMeasure;EnergyAbsorption;IfcEnergyMeasure +Pset_InstallationOccurrence;InstallationDate;IfcDate;AcceptanceDate;IfcDate;PutIntoOperationDate;IfcDate Pset_InterceptorTypeCommon;Reference;IfcIdentifier;NominalBodyLength;IfcPositiveLengthMeasure;NominalBodyWidth;IfcPositiveLengthMeasure;NominalBodyDepth;IfcPositiveLengthMeasure;InletConnectionSize;IfcPositiveLengthMeasure;OutletConnectionSize;IfcPositiveLengthMeasure;CoverLength;IfcPositiveLengthMeasure;CoverWidth;IfcPositiveLengthMeasure;VentilatingPipeSize;IfcPositiveLengthMeasure -Pset_JunctionBoxTypeCommon;Reference;IfcIdentifier;NumberOfGangs;IfcInteger;ClearDepth;IfcPositiveLengthMeasure;IsExternal;IfcBoolean;IP_Code;IfcLabel -Pset_LampTypeCommon;Reference;IfcIdentifier;ContributedLuminousFlux;IfcLuminousFluxMeasure;LightEmitterNominalPower;IfcPowerMeasure;LampMaintenanceFactor;IfcReal;ColorAppearance;IfcLabel;Spectrum;IfcNumericMeasure;ColorTemperature;IfcThermodynamicTemperatureMeasure;ColorRenderingIndex;IfcInteger +Pset_IpNetworkEquipmentPHistory +Pset_JettyCommon;StructuralType;IfcLabel;BentSpacing;IfcLengthMeasure;Elevation;IfcLengthMeasure +Pset_JettyDesignCriteria;HighWaterLevel;IfcLengthMeasure;LowWaterLevel;IfcLengthMeasure;ExtremeHighWaterLevel;IfcLengthMeasure;ExtremeLowWaterLevel;IfcLengthMeasure;ShipLoading;IfcForceMeasure;WaveLoading;IfcForceMeasure;FlowLoading;IfcForceMeasure;UniformlyDistributedLoad;IfcForceMeasure;EquipmentLoading;IfcForceMeasure +Pset_JunctionBoxTypeCommon;Reference;IfcIdentifier;NumberOfGangs;IfcCountMeasure;ClearDepth;IfcPositiveLengthMeasure;IsExternal;IfcBoolean;IP_Code;IfcLabel;NominalLength;IfcNonNegativeLengthMeasure;NominalWidth;IfcNonNegativeLengthMeasure;NominalHeight;IfcNonNegativeLengthMeasure +Pset_JunctionBoxTypeData +Pset_KerbCommon;CombinedKerbGutter;IfcBoolean;Upstand;IfcNonNegativeLengthMeasure;Mountable;IfcBoolean +Pset_KerbStone;NominalHeight;IfcNonNegativeLengthMeasure;NominalLength;IfcNonNegativeLengthMeasure;StoneFinishes;IfcLabel;TypeDesignation;IfcLabel;NominalWidth;IfcNonNegativeLengthMeasure +Pset_LampTypeCommon;Reference;IfcIdentifier;ContributedLuminousFlux;IfcLuminousFluxMeasure;LightEmitterNominalPower;IfcPowerMeasure;LampMaintenanceFactor;IfcReal;ColourAppearance;IfcLabel;Spectrum;IfcNumericMeasure;ColourTemperature;IfcThermodynamicTemperatureMeasure;ColourRenderingIndex;IfcInteger Pset_LandRegistration;LandID;IfcIdentifier;IsPermanentID;IfcBoolean;LandTitleID;IfcIdentifier -Pset_LightFixtureTypeCommon;Reference;IfcIdentifier;NumberOfSources;IfcInteger;TotalWattage;IfcPowerMeasure;MaintenanceFactor;IfcReal;MaximumPlenumSensibleLoad;IfcPowerMeasure;MaximumSpaceSensibleLoad;IfcPowerMeasure;SensibleLoadToRadiant;IfcPositiveRatioMeasure +Pset_LightFixtureTypeCommon;Reference;IfcIdentifier;NumberOfSources;IfcCountMeasure;TotalWattage;IfcPowerMeasure;MaintenanceFactor;IfcReal;MaximumPlenumSensibleLoad;IfcPowerMeasure;MaximumSpaceSensibleLoad;IfcPowerMeasure;SensibleLoadToRadiant;IfcPositiveRatioMeasure Pset_LightFixtureTypeSecurityLighting;FixtureHeight;IfcPositiveLengthMeasure -Pset_ManufacturerOccurrence;AcquisitionDate;IfcDate;BarCode;IfcIdentifier;SerialNumber;IfcIdentifier;BatchReference;IfcIdentifier +Pset_LinearReferencingMethod;LRMName;IfcLabel;UserDefinedLRMType;IfcLabel;LRMUnit;IfcLabel;LRMConstraint;IfcLabel +Pset_MaintenanceStrategy +Pset_MaintenanceTriggerCondition +Pset_MaintenanceTriggerDuration;DurationTargetPerformance;IfcDuration;DurationMaintenanceLevel;IfcDuration;DurationReplacementLevel;IfcDuration;DurationDisposalLevel;IfcDuration +Pset_MaintenanceTriggerPerformance;TargetPerformance;IfcReal;PerformanceMaintenanceLevel;IfcReal;ReplacementLevel;IfcReal;DisposalLevel;IfcReal +Pset_ManufacturerOccurrence;AcquisitionDate;IfcDate;BarCode;IfcIdentifier;SerialNumber;IfcIdentifier;BatchReference;IfcIdentifier;ManufacturingDate;IfcDate Pset_ManufacturerTypeInformation;GlobalTradeItemNumber;IfcIdentifier;ArticleNumber;IfcIdentifier;ModelReference;IfcLabel;ModelLabel;IfcLabel;Manufacturer;IfcLabel;ProductionYear;IfcLabel +Pset_MarineFacilityTransportation;Berths;IfcCountMeasure;BerthGrade;IfcLabel;BerthCargoWeight;IfcMassMeasure +Pset_MarinePartChamberCommon;EffectiveChamberSize;IfcVolumeMeasure;StructuralType;IfcLabel +Pset_MarineVehicleCommon;LengthBetweenPerpendiculars;IfcPositiveLengthMeasure;VesselDepth;IfcLengthMeasure;VesselDraft;IfcLengthMeasure;AboveDeckProjectedWindEnd;IfcAreaMeasure;AboveDeckProjectedWindSide;IfcAreaMeasure;Displacement;IfcMassMeasure;CargoDeadWeight;IfcMassMeasure;LaneMeters;IfcLengthMeasure +Pset_MarineVehicleDesignCriteria;AllowableHullPressure;IfcPressureMeasure;SoftnessCoefficient;IfcPositiveRatioMeasure +Pset_MarkerGenera;ApproachSpeed;IfcLinearVelocityMeasure;NominalHeight;IfcPositiveLengthMeasure;NominalWidth;IfcNonNegativeLengthMeasure +Pset_MarkingLinesCommon;DashedLine;IfcBoolean;DashedLinePattern;IfcLabel;NominalWidth;IfcNonNegativeLengthMeasure Pset_MaterialCombustion;SpecificHeatCapacity;IfcSpecificHeatCapacityMeasure;N20Content;IfcPositiveRatioMeasure;COContent;IfcPositiveRatioMeasure;CO2Content;IfcPositiveRatioMeasure Pset_MaterialCommon;MolecularWeight;IfcMolecularWeightMeasure;Porosity;IfcNormalisedRatioMeasure;MassDensity;IfcMassDensityMeasure Pset_MaterialConcrete;CompressiveStrength;IfcPressureMeasure;MaxAggregateSize;IfcPositiveLengthMeasure;AdmixturesDescription;IfcText;Workability;IfcText;WaterImpermeability;IfcText;ProtectivePoreRatio;IfcNormalisedRatioMeasure Pset_MaterialEnergy;ViscosityTemperatureDerivative;IfcReal;MoistureCapacityThermalGradient;IfcReal;ThermalConductivityTemperatureDerivative;IfcReal;SpecificHeatTemperatureDerivative;IfcReal;VisibleRefractionIndex;IfcReal;SolarRefractionIndex;IfcReal;GasPressure;IfcPressureMeasure -Pset_MaterialFuel;CombustionTemperature;IfcThermodynamicTemperatureMeasure;CarbonContent;IfcPositiveRatioMeasure;LowerHeatingValue;IfcHeatingValueMeasure;HigherHeatingValue;IfcHeatingValueMeasure +Pset_MaterialFue;CombustionTemperature;IfcThermodynamicTemperatureMeasure;CarbonContent;IfcPositiveRatioMeasure;LowerHeatingValue;IfcHeatingValueMeasure;HigherHeatingValue;IfcHeatingValueMeasure Pset_MaterialHygroscopic;UpperVaporResistanceFactor;IfcPositiveRatioMeasure;LowerVaporResistanceFactor;IfcPositiveRatioMeasure;IsothermalMoistureCapacity;IfcIsothermalMoistureCapacityMeasure;VaporPermeability;IfcVaporPermeabilityMeasure;MoistureDiffusivity;IfcMoistureDiffusivityMeasure -Pset_MaterialMechanical;DynamicViscosity;IfcDynamicViscosityMeasure;YoungModulus;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;PoissonRatio;IfcPositiveRatioMeasure;ThermalExpansionCoefficient;IfcThermalExpansionCoefficientMeasure -Pset_MaterialOptical;VisibleTransmittance;IfcPositiveRatioMeasure;SolarTransmittance;IfcPositiveRatioMeasure;ThermalIrTransmittance;IfcPositiveRatioMeasure;ThermalIrEmissivityBack;IfcPositiveRatioMeasure;ThermalIrEmissivityFront;IfcPositiveRatioMeasure;VisibleReflectanceBack;IfcPositiveRatioMeasure;VisibleReflectanceFront;IfcPositiveRatioMeasure;SolarReflectanceBack;IfcPositiveRatioMeasure;SolarReflectanceFront;IfcPositiveRatioMeasure -Pset_MaterialSteel;YieldStress;IfcPressureMeasure;UltimateStress;IfcPressureMeasure;UltimateStrain;IfcPositiveRatioMeasure;HardeningModule;IfcModulusOfElasticityMeasure;ProportionalStress;IfcPressureMeasure;PlasticStrain;IfcPositiveRatioMeasure;Relaxations;IfcNormalisedRatioMeasure -Pset_MaterialThermal;SpecificHeatCapacity;IfcSpecificHeatCapacityMeasure;BoilingPoint;IfcThermodynamicTemperatureMeasure;FreezingPoint;IfcThermodynamicTemperatureMeasure;ThermalConductivity;IfcThermalConductivityMeasure +Pset_MaterialMechanica;DynamicViscosity;IfcDynamicViscosityMeasure;YoungModulus;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;PoissonRatio;IfcPositiveRatioMeasure;ThermalExpansionCoefficient;IfcThermalExpansionCoefficientMeasure +Pset_MaterialOptica;VisibleTransmittance;IfcNormalisedRatioMeasure;SolarTransmittance;IfcNormalisedRatioMeasure;ThermalIrTransmittance;IfcNormalisedRatioMeasure;ThermalIrEmissivityBack;IfcNormalisedRatioMeasure;ThermalIrEmissivityFront;IfcNormalisedRatioMeasure;VisibleReflectanceBack;IfcNormalisedRatioMeasure;VisibleReflectanceFront;IfcNormalisedRatioMeasure;SolarReflectanceBack;IfcNormalisedRatioMeasure;SolarReflectanceFront;IfcNormalisedRatioMeasure +Pset_MaterialStee;YieldStress;IfcPressureMeasure;UltimateStress;IfcPressureMeasure;UltimateStrain;IfcPositiveRatioMeasure;HardeningModule;IfcModulusOfElasticityMeasure;ProportionalStress;IfcPressureMeasure;PlasticStrain;IfcPositiveRatioMeasure;Relaxations;IfcNormalisedRatioMeasure;StructuralGrade;IfcLabel +Pset_MaterialTherma;SpecificHeatCapacity;IfcSpecificHeatCapacityMeasure;BoilingPoint;IfcThermodynamicTemperatureMeasure;FreezingPoint;IfcThermodynamicTemperatureMeasure;ThermalConductivity;IfcThermalConductivityMeasure Pset_MaterialWater;IsPotable;IfcBoolean;Hardness;IfcIonConcentrationMeasure;AlkalinityConcentration;IfcIonConcentrationMeasure;AcidityConcentration;IfcIonConcentrationMeasure;ImpuritiesContent;IfcNormalisedRatioMeasure;DissolvedSolidsContent;IfcNormalisedRatioMeasure;PHLevel;IfcPHMeasure Pset_MaterialWood;Species;IfcLabel;StrengthGrade;IfcLabel;AppearanceGrade;IfcLabel;Layup;IfcLabel;Layers;IfcInteger;Plies;IfcInteger;MoistureContent;IfcPositiveRatioMeasure;DimensionalChangeCoefficient;IfcPositiveRatioMeasure;ThicknessSwelling;IfcPositiveRatioMeasure -Pset_MaterialWoodBasedBeam;ApplicableStructuralDesignMethod;IfcLabel;InPlane;IfcModulusOfElasticityMeasure;YoungModulusMin;IfcModulusOfElasticityMeasure;YoungModulusPerp;IfcModulusOfElasticityMeasure;YoungModulusPerpMin;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;ShearModulusMin;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;TensileStrengthPerp;IfcPressureMeasure;CompStrength;IfcPressureMeasure;CompStrengthPerp;IfcPressureMeasure;RaisedCompStrengthPerp;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;TorsionalStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure;InstabilityFactors;IfcPositiveRatioMeasure;InPlaneNegative;IfcModulusOfElasticityMeasure;YoungModulusMin;IfcModulusOfElasticityMeasure;YoungModulusPerp;IfcModulusOfElasticityMeasure;YoungModulusPerpMin;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;ShearModulusMin;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;TensileStrengthPerp;IfcPressureMeasure;CompStrength;IfcPressureMeasure;CompStrengthPerp;IfcPressureMeasure;RaisedCompStrengthPerp;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;TorsionalStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure;InstabilityFactors;IfcPositiveRatioMeasure;OutOfPlane;IfcModulusOfElasticityMeasure;YoungModulusMin;IfcModulusOfElasticityMeasure;YoungModulusPerp;IfcModulusOfElasticityMeasure;YoungModulusPerpMin;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;ShearModulusMin;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;TensileStrengthPerp;IfcPressureMeasure;CompStrength;IfcPressureMeasure;CompStrengthPerp;IfcPressureMeasure;RaisedCompStrengthPerp;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;TorsionalStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure;InstabilityFactors;IfcPositiveRatioMeasure -Pset_MaterialWoodBasedPanel;ApplicableStructuralDesignMethod;IfcLabel;InPlane;IfcModulusOfElasticityMeasure;YoungModulusTension;IfcModulusOfElasticityMeasure;YoungModulusCompression;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;CompressiveStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;BearingStrength;IfcPressureMeasure;RaisedCompressiveStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure;OutOfPlane;IfcModulusOfElasticityMeasure;YoungModulusTension;IfcModulusOfElasticityMeasure;YoungModulusCompression;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;CompressiveStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;BearingStrength;IfcPressureMeasure;RaisedCompressiveStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure;OutOfPlaneNegative;IfcModulusOfElasticityMeasure;YoungModulusTension;IfcModulusOfElasticityMeasure;YoungModulusCompression;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;CompressiveStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;BearingStrength;IfcPressureMeasure;RaisedCompressiveStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure +Pset_MaterialWoodBasedStructure;ApplicableStructuralDesignMethod;IfcLabel +Pset_MechanicalBeamInPlane;YoungModulus;IfcModulusOfElasticityMeasure;YoungModulusMin;IfcModulusOfElasticityMeasure;YoungModulusPerp;IfcModulusOfElasticityMeasure;YoungModulusPerpMin;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;ShearModulusMin;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;TensileStrengthPerp;IfcPressureMeasure;CompStrength;IfcPressureMeasure;CompStrengthPerp;IfcPressureMeasure;RaisedCompStrengthPerp;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;TorsionalStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure;InstabilityFactors;IfcPositiveRatioMeasure +Pset_MechanicalBeamInPlaneNegative;YoungModulus;IfcModulusOfElasticityMeasure;YoungModulusMin;IfcModulusOfElasticityMeasure;YoungModulusPerp;IfcModulusOfElasticityMeasure;YoungModulusPerpMin;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;ShearModulusMin;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;TensileStrengthPerp;IfcPressureMeasure;CompStrength;IfcPressureMeasure;CompStrengthPerp;IfcPressureMeasure;RaisedCompStrengthPerp;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;TorsionalStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure;InstabilityFactors;IfcPositiveRatioMeasure +Pset_MechanicalBeamOutOfPlane;YoungModulus;IfcModulusOfElasticityMeasure;YoungModulusMin;IfcModulusOfElasticityMeasure;YoungModulusPerp;IfcModulusOfElasticityMeasure;YoungModulusPerpMin;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;ShearModulusMin;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;TensileStrengthPerp;IfcPressureMeasure;CompStrength;IfcPressureMeasure;CompStrengthPerp;IfcPressureMeasure;RaisedCompStrengthPerp;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;TorsionalStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure;InstabilityFactors;IfcPositiveRatioMeasure Pset_MechanicalFastenerAnchorBolt;AnchorBoltLength;IfcPositiveLengthMeasure;AnchorBoltDiameter;IfcPositiveLengthMeasure;AnchorBoltThreadLength;IfcPositiveLengthMeasure;AnchorBoltProtrusionLength;IfcPositiveLengthMeasure Pset_MechanicalFastenerBolt;ThreadDiameter;IfcPositiveLengthMeasure;ThreadLength;IfcPositiveLengthMeasure;NutsCount;IfcCountMeasure;WashersCount;IfcCountMeasure;HeadShape;IfcLabel;KeyShape;IfcLabel;NutShape;IfcLabel;WasherShape;IfcLabel +Pset_MechanicalFastenerOCSFitting;ManufacturingTechnology;IfcLabel +Pset_MechanicalFastenerTypeRailFastening;IsReducedResistanceFastening;IfcBoolean +Pset_MechanicalFastenerTypeRailJoint;IsCWRJoint;IfcBoolean;IsJointInsulated;IfcBoolean;IsLiftingBracketConnection;IfcBoolean;NumberOfScrews;IfcCountMeasure;RailGap;IfcPositiveLengthMeasure;IsJointControlEquipment;IfcBoolean +Pset_MechanicalPanelInPlane;YoungModulusBending;IfcModulusOfElasticityMeasure;YoungModulusTension;IfcModulusOfElasticityMeasure;YoungModulusCompression;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;CompressiveStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;BearingStrength;IfcPressureMeasure;RaisedCompressiveStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure +Pset_MechanicalPanelOutOfPlane;YoungModulusBending;IfcModulusOfElasticityMeasure;YoungModulusTension;IfcModulusOfElasticityMeasure;YoungModulusCompression;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;CompressiveStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;BearingStrength;IfcPressureMeasure;RaisedCompressiveStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure +Pset_MechanicalPanelOutOfPlaneNegative;YoungModulusBending;IfcModulusOfElasticityMeasure;YoungModulusTension;IfcModulusOfElasticityMeasure;YoungModulusCompression;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;CompressiveStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;BearingStrength;IfcPressureMeasure;RaisedCompressiveStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure Pset_MedicalDeviceTypeCommon;Reference;IfcIdentifier Pset_MemberCommon;Reference;IfcIdentifier;Span;IfcPositiveLengthMeasure;Slope;IfcPlaneAngleMeasure;Roll;IfcPlaneAngleMeasure;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel +Pset_MemberTypeAnchoringBar;HasLightningRod;IfcBoolean +Pset_MemberTypeCatenaryStay;NominalLength;IfcNonNegativeLengthMeasure;NominalHeight;IfcNonNegativeLengthMeasure +Pset_MemberTypeOCSRigidSupport;ContactWireStagger;IfcPositiveLengthMeasure +Pset_MemberTypePost;NominalHeight;IfcNonNegativeLengthMeasure;ConicityRatio;IfcRatioMeasure;LoadBearingCapacity;IfcPlanarForceMeasure;WindLoadRating;IfcLabel;TorsionalStrength;IfcPressureMeasure;BendingStrength;IfcPressureMeasure +Pset_MemberTypeTieBar;IsTemporaryInstallation;IfcBoolean +Pset_MobileTeleCommunicationsApplianceTypeRemoteRadioUnit;DownlinkRadioBand;IfcFrequencyMeasure;NumberOfCarriers;IfcCountMeasure;NumberOfInterfaces;IfcInteger;UplinkRadioBand;IfcFrequencyMeasure;NumberOfTransceiversPerAntenna;IfcInteger;RadiatedOutputPowerPerAntenna;IfcPowerMeasure;AntennaType;IfcLabel +Pset_MobileTelecommunicationsApplianceTypeAccessPoint;BandWidth;IfcFrequencyMeasure;DataEncryptionType;IfcLabel;DataExchangeRate;IfcIntegerCountRateMeasure;NumberOfAntennas;IfcCountMeasure;NumberOfInterfaces;IfcInteger;UserCapacity;IfcInteger +Pset_MobileTelecommunicationsApplianceTypeBaseTransceiverStation;DownlinkRadioBand;IfcFrequencyMeasure;NumberOfCarriers;IfcCountMeasure;NumberOfAntennas;IfcCountMeasure;UplinkRadioBand;IfcFrequencyMeasure;ExchangeCapacity;IfcInteger;NumberOfEmergencyTransceivers;IfcCountMeasure;NumberOfTransceiversPerAntenna;IfcInteger;RadiatedOutputPowerPerAntenna;IfcPowerMeasure;NumberOfInterfaces;IfcInteger +Pset_MobileTelecommunicationsApplianceTypeBasebandUnit;NumberOfCarriers;IfcCountMeasure;NumberOfInterfaces;IfcInteger;NumberOfEmergencyTransceivers;IfcCountMeasure;MaximumNumberOfRRUs;IfcInteger +Pset_MobileTelecommunicationsApplianceTypeCommon;Reference;IfcIdentifier +Pset_MobileTelecommunicationsApplianceTypeEUtranNodeB;DownlinkRadioBand;IfcFrequencyMeasure;NumberOfCarriers;IfcCountMeasure;RadiatedOutputPowerPerAntenna;IfcPowerMeasure;NumberOfAntennas;IfcCountMeasure;NumberOfInterfaces;IfcInteger;UplinkRadioBand;IfcFrequencyMeasure +Pset_MobileTelecommunicationsApplianceTypeMSCServer;UserCapacity;IfcInteger;NumberOfInterfaces;IfcInteger +Pset_MobileTelecommunicationsApplianceTypeMasterUnit;NumberOfInterfaces;IfcInteger;MaximumNumberOfConnectedRUs;IfcInteger;TransmittedBandwidth;IfcFrequencyMeasure;TransmittedFrequency;IfcFrequencyMeasure +Pset_MobileTelecommunicationsApplianceTypeMobileSwitchingCenter;UserCapacity;IfcInteger;NumberOfInterfaces;IfcInteger;MaximumNumberOfManagedBSCs;IfcInteger +Pset_MobileTelecommunicationsApplianceTypeRemoteUnit;NumberOfInterfaces;IfcInteger;NumberOfAntennas;IfcCountMeasure +Pset_MooringDeviceCommon;DeviceCapacity;IfcForceMeasure;MinumumLineSlope;IfcPlaneAngleMeasure;MaximumLineSlope;IfcPlaneAngleMeasure;MaximumLineCount;IfcCountMeasure Pset_MotorConnectionTypeCommon;Reference;IfcIdentifier -Pset_OpeningElementCommon;Reference;IfcIdentifier;Purpose;IfcLabel;FireExit;IfcBoolean;ProtectedOpening;IfcBoolean -Pset_OutletTypeCommon;Reference;IfcIdentifier;IsPluggableOutlet;IfcLogical;NumberOfSockets;IfcInteger +Pset_OnSiteCastKerb;NominalHeight;IfcNonNegativeLengthMeasure;NominalWidth;IfcNonNegativeLengthMeasure +Pset_OnSiteTelecomControlUnit;HasEarthquakeAlarm;IfcBoolean;HasEarthquakeCollection;IfcBoolean;HasForeignObjectCollection;IfcBoolean;HasOutputFunction;IfcBoolean;HasRainCollection;IfcBoolean;HasSnowCollection;IfcBoolean;HasWindCollection;IfcBoolean +Pset_OpeningElementCommon;Reference;IfcIdentifier;Purpose;IfcLabel;FireExit;IfcBoolean;FireRating;IfcLabel;AcousticRating;IfcLabel +Pset_OpticalAdapter +Pset_OpticalPigtai;JacketColour;IfcLabel;ConnectorType;IfcLabel +Pset_OpticalSplitter;NumberOfBranches;IfcCountMeasure;NumberOfInterfaces;IfcInteger +Pset_OutletTypeCommon;Reference;IfcIdentifier;IsPluggableOutlet;IfcLogical;NumberOfSockets;IfcCountMeasure Pset_OutsideDesignCriteria;HeatingDryBulb;IfcThermodynamicTemperatureMeasure;HeatingWetBulb;IfcThermodynamicTemperatureMeasure;HeatingDesignDay;IfcDateTime;CoolingDryBulb;IfcThermodynamicTemperatureMeasure;CoolingWetBulb;IfcThermodynamicTemperatureMeasure;CoolingDesignDay;IfcDateTime;WeatherDataStation;IfcText;WeatherDataDate;IfcDateTime;PrevailingWindDirection;IfcPlaneAngleMeasure;PrevailingWindVelocity;IfcLinearVelocityMeasure Pset_PackingInstructions;SpecialInstructions;IfcText +Pset_PatchCordCable;JacketColour;IfcLabel +Pset_PavementCommon;Reference;IfcIdentifier;NominalThicknessEnd;IfcNonNegativeLengthMeasure;StructuralSlope;IfcPositiveRatioMeasure;StructuralSlopeType;IfcLabel;NominalWidth;IfcNonNegativeLengthMeasure;NominalLength;IfcNonNegativeLengthMeasure;NominalThickness;IfcNonNegativeLengthMeasure +Pset_PavementMillingCommon;NominalDepth;IfcNonNegativeLengthMeasure;NominalWidth;IfcNonNegativeLengthMeasure +Pset_PavementSurfaceCommon;PavementRoughness;IfcNumericMeasure;PavementTexture;IfcPositiveLengthMeasure +Pset_PermeableCoveringProperties;FrameDepth;IfcPositiveLengthMeasure;FrameThickness;IfcPositiveLengthMeasure Pset_Permit;EscortRequirement;IfcBoolean;StartDate;IfcDateTime;EndDate;IfcDateTime;SpecialRequirements;IfcText Pset_PileCommon;Reference;IfcIdentifier;LoadBearing;IfcBoolean -Pset_PipeConnectionFlanged;FlangeTable;IfcLabel;FlangeStandard;IfcLabel;BoreSize;IfcPositiveLengthMeasure;FlangeDiameter;IfcPositiveLengthMeasure;FlangeThickness;IfcPositiveLengthMeasure;NumberOfBoltholes;IfcInteger;BoltSize;IfcPositiveLengthMeasure;BoltholePitch;IfcPositiveLengthMeasure -Pset_PipeFittingOccurrence;InteriorRoughnessCoefficient;IfcPositiveLengthMeasure;Color;IfcLabel -Pset_PipeFittingTypeBend;BendAngle;IfcPositivePlaneAngleMeasure;BendRadius;IfcPositiveLengthMeasure +Pset_PipeConnectionFlanged;FlangeTable;IfcLabel;FlangeStandard;IfcLabel;BoreSize;IfcPositiveLengthMeasure;FlangeDiameter;IfcPositiveLengthMeasure;FlangeThickness;IfcPositiveLengthMeasure;NumberOfBoltholes;IfcCountMeasure;BoltSize;IfcPositiveLengthMeasure;BoltholePitch;IfcPositiveLengthMeasure +Pset_PipeFittingOccurrence;InteriorRoughnessCoefficient;IfcPositiveLengthMeasure;Colour;IfcLabel +Pset_PipeFittingPHistory Pset_PipeFittingTypeCommon;Reference;IfcIdentifier;PressureClass;IfcPressureMeasure;PressureRange;IfcPressureMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;FittingLossFactor;IfcReal -Pset_PipeFittingTypeJunction;JunctionLeftAngle;IfcPositivePlaneAngleMeasure;JunctionLeftRadius;IfcPositiveLengthMeasure;JunctionRightAngle;IfcPositivePlaneAngleMeasure;JunctionRightRadius;IfcPositiveLengthMeasure -Pset_PipeSegmentOccurrence;InteriorRoughnessCoefficient;IfcPositiveLengthMeasure;Color;IfcLabel;Gradient;IfcPositiveRatioMeasure;InvertElevation;IfcLengthMeasure -Pset_PipeSegmentTypeCommon;Reference;IfcIdentifier;WorkingPressure;IfcPressureMeasure;PressureRange;IfcPressureMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;NominalDiameter;IfcPositiveLengthMeasure;InnerDiameter;IfcPositiveLengthMeasure;OuterDiameter;IfcPositiveLengthMeasure -Pset_PipeSegmentTypeCulvert;InternalWidth;IfcLengthMeasure;ClearDepth;IfcLengthMeasure -Pset_PipeSegmentTypeGutter;Slope;IfcPlaneAngleMeasure;FlowRating;IfcVolumetricFlowRateMeasure +Pset_PipeSegmentOccurrence;InteriorRoughnessCoefficient;IfcPositiveLengthMeasure;Colour;IfcLabel;Gradient;IfcPositiveRatioMeasure;InvertElevation;IfcLengthMeasure +Pset_PipeSegmentPHistory +Pset_PipeSegmentTypeCommon;Reference;IfcIdentifier;WorkingPressure;IfcPressureMeasure;PressureRange;IfcPressureMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;NominalDiameter;IfcPositiveLengthMeasure;InnerDiameter;IfcPositiveLengthMeasure;OuterDiameter;IfcPositiveLengthMeasure;Length;IfcPositiveLengthMeasure +Pset_PipeSegmentTypeCulvert;InternalWidth;IfcPositiveLengthMeasure;ClearDepth;IfcPositiveLengthMeasure +Pset_PipeSegmentTypeGutter;Slope;IfcPlaneAngleMeasure;FlowRating;IfcVolumetricFlowRateMeasure;OrthometricHeight;IfcLengthMeasure;IsCovered;IfcBoolean;IsMonitored;IfcBoolean Pset_PlateCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel -Pset_PrecastConcreteElementFabrication;TypeDesignator;IfcLabel;ProductionLotId;IfcIdentifier;SerialNumber;IfcIdentifier;PieceMark;IfcLabel;AsBuiltLocationNumber;IfcLabel;ActualProductionDate;IfcDateTime;ActualErectionDate;IfcDateTime -Pset_PrecastConcreteElementGeneral;TypeDesignator;IfcLabel;CornerChamfer;IfcPositiveLengthMeasure;ManufacturingToleranceClass;IfcLabel;FormStrippingStrength;IfcPressureMeasure;LiftingStrength;IfcPressureMeasure;ReleaseStrength;IfcPressureMeasure;MinimumAllowableSupportLength;IfcPositiveLengthMeasure;InitialTension;IfcPressureMeasure;TendonRelaxation;IfcPositiveRatioMeasure;TransportationStrength;IfcPressureMeasure;SupportDuringTransportDescription;IfcText;HollowCorePlugging;IfcLabel;CamberAtMidspan;IfcRatioMeasure;BatterAtStart;IfcPlaneAngleMeasure;BatterAtEnd;IfcPlaneAngleMeasure;Twisting;IfcPlaneAngleMeasure;Shortening;IfcRatioMeasure;PieceMark;IfcLabel;DesignLocationNumber;IfcLabel -Pset_PrecastSlab;TypeDesignator;IfcLabel;ToppingType;IfcLabel;EdgeDistanceToFirstAxis;IfcPositiveLengthMeasure;DistanceBetweenComponentAxes;IfcPositiveLengthMeasure;AngleToFirstAxis;IfcPlaneAngleMeasure;AngleBetweenComponentAxes;IfcPlaneAngleMeasure;NominalThickness;IfcPositiveLengthMeasure;NominalToppingThickness;IfcPositiveLengthMeasure +Pset_PointMachine;ActionBarMovementLength;IfcPositiveLengthMeasure;TractionForce;IfcForceMeasure;ConversionTime;IfcTimeMeasure;LockingForce;IfcForceMeasure;HasLockInside;IfcBoolean;MarkingRodMovementLength;IfcPositiveLengthMeasure;MaximumOperatingTime;IfcTimeMeasure;MinimumOperatingSpeed;IfcAngularVelocityMeasure;Current;IfcElectricCurrentMeasure +Pset_PowerControlSyste +Pset_PrecastConcreteElementFabrication;TypeDesignation;IfcLabel;ProductionLotId;IfcIdentifier;SerialNumber;IfcIdentifier;PieceMark;IfcLabel;AsBuiltLocationNumber;IfcLabel;ActualProductionDate;IfcDateTime;ActualErectionDate;IfcDateTime +Pset_PrecastConcreteElementGenera;TypeDesignation;IfcLabel;CornerChamfer;IfcPositiveLengthMeasure;ManufacturingToleranceClass;IfcLabel;FormStrippingStrength;IfcPressureMeasure;LiftingStrength;IfcPressureMeasure;ReleaseStrength;IfcPressureMeasure;MinimumAllowableSupportLength;IfcPositiveLengthMeasure;InitialTension;IfcPressureMeasure;TendonRelaxation;IfcPositiveRatioMeasure;TransportationStrength;IfcPressureMeasure;SupportDuringTransportDescription;IfcText;HollowCorePlugging;IfcLabel;CamberAtMidspan;IfcRatioMeasure;BatterAtStart;IfcPlaneAngleMeasure;BatterAtEnd;IfcPlaneAngleMeasure;Twisting;IfcPlaneAngleMeasure;Shortening;IfcRatioMeasure;PieceMark;IfcLabel;DesignLocationNumber;IfcLabel +Pset_PrecastKerbStone;NominalHeight;IfcNonNegativeLengthMeasure;NominalLength;IfcNonNegativeLengthMeasure;TypeDesignation;IfcLabel;NominalWidth;IfcNonNegativeLengthMeasure +Pset_PrecastSlab;TypeDesignation;IfcLabel;ToppingType;IfcLabel;EdgeDistanceToFirstAxis;IfcPositiveLengthMeasure;DistanceBetweenComponentAxes;IfcPositiveLengthMeasure;AngleToFirstAxis;IfcPlaneAngleMeasure;AngleBetweenComponentAxes;IfcPlaneAngleMeasure;NominalThickness;IfcNonNegativeLengthMeasure;NominalToppingThickness;IfcPositiveLengthMeasure +Pset_ProcessCapacity;ProcessCapacity;IfcCountMeasure;ProcessPerformance;IfcDuration;DownstreamConnections;IfcLabel;UpstreamConnections;IfcLabel Pset_ProfileArbitraryDoubleT;OverallWidth;IfcPositiveLengthMeasure;LeftFlangeWidth;IfcPositiveLengthMeasure;RightFlangeWidth;IfcPositiveLengthMeasure;OverallDepth;IfcPositiveLengthMeasure;FlangeDepth;IfcPositiveLengthMeasure;FlangeDraft;IfcNonNegativeLengthMeasure;FlangeChamfer;IfcNonNegativeLengthMeasure;FlangeBaseFillet;IfcNonNegativeLengthMeasure;FlangeTopFillet;IfcNonNegativeLengthMeasure;StemBaseWidth;IfcPositiveLengthMeasure;StemTopWidth;IfcPositiveLengthMeasure;StemBaseChamfer;IfcNonNegativeLengthMeasure;StemTopChamfer;IfcNonNegativeLengthMeasure;StemBaseFillet;IfcNonNegativeLengthMeasure;StemTopFillet;IfcNonNegativeLengthMeasure Pset_ProfileArbitraryHollowCore;OverallWidth;IfcPositiveLengthMeasure;OverallDepth;IfcPositiveLengthMeasure;EdgeDraft;IfcNonNegativeLengthMeasure;DraftBaseOffset;IfcNonNegativeLengthMeasure;DraftSideOffset;IfcNonNegativeLengthMeasure;BaseChamfer;IfcNonNegativeLengthMeasure;KeyDepth;IfcNonNegativeLengthMeasure;KeyHeight;IfcNonNegativeLengthMeasure;KeyOffset;IfcNonNegativeLengthMeasure;BottomCover;IfcPositiveLengthMeasure;CoreSpacing;IfcPositiveLengthMeasure;CoreBaseHeight;IfcPositiveLengthMeasure;CoreMiddleHeight;IfcPositiveLengthMeasure;CoreTopHeight;IfcPositiveLengthMeasure;CoreBaseWidth;IfcPositiveLengthMeasure;CoreTopWidth;IfcPositiveLengthMeasure;CenterCoreSpacing;IfcPositiveLengthMeasure;CenterCoreBaseHeight;IfcPositiveLengthMeasure;CenterCoreMiddleHeight;IfcPositiveLengthMeasure;CenterCoreTopHeight;IfcPositiveLengthMeasure;CenterCoreBaseWidth;IfcPositiveLengthMeasure;CenterCoreTopWidth;IfcPositiveLengthMeasure;NumberOfCores;IfcCountMeasure -Pset_ProfileMechanical;MassPerLength;IfcMassPerLengthMeasure;CrossSectionArea;IfcAreaMeasure;Perimeter;IfcPositiveLengthMeasure;MinimumPlateThickness;IfcPositiveLengthMeasure;MaximumPlateThickness;IfcPositiveLengthMeasure;CentreOfGravityInX;IfcLengthMeasure;CentreOfGravityInY;IfcLengthMeasure;ShearCentreZ;IfcLengthMeasure;ShearCentreY;IfcLengthMeasure;MomentOfInertiaY;IfcMomentOfInertiaMeasure;MomentOfInertiaZ;IfcMomentOfInertiaMeasure;MomentOfInertiaYZ;IfcMomentOfInertiaMeasure;TorsionalConstantX;IfcMomentOfInertiaMeasure;WarpingConstant;IfcWarpingConstantMeasure;ShearDeformationAreaZ;IfcAreaMeasure;ShearDeformationAreaY;IfcAreaMeasure;MaximumSectionModulusY;IfcSectionModulusMeasure;MinimumSectionModulusY;IfcSectionModulusMeasure;MaximumSectionModulusZ;IfcSectionModulusMeasure;MinimumSectionModulusZ;IfcSectionModulusMeasure;TorsionalSectionModulus;IfcSectionModulusMeasure;ShearAreaZ;IfcAreaMeasure;ShearAreaY;IfcAreaMeasure;PlasticShapeFactorY;IfcPositiveRatioMeasure;PlasticShapeFactorZ;IfcPositiveRatioMeasure +Pset_ProfileMechanica;MassPerLength;IfcMassPerLengthMeasure;CrossSectionArea;IfcAreaMeasure;Perimeter;IfcPositiveLengthMeasure;MinimumPlateThickness;IfcPositiveLengthMeasure;MaximumPlateThickness;IfcPositiveLengthMeasure;CentreOfGravityInX;IfcLengthMeasure;CentreOfGravityInY;IfcLengthMeasure;ShearCentreZ;IfcLengthMeasure;ShearCentreY;IfcLengthMeasure;MomentOfInertiaY;IfcMomentOfInertiaMeasure;MomentOfInertiaZ;IfcMomentOfInertiaMeasure;MomentOfInertiaYZ;IfcMomentOfInertiaMeasure;TorsionalConstantX;IfcMomentOfInertiaMeasure;WarpingConstant;IfcWarpingConstantMeasure;ShearDeformationAreaZ;IfcAreaMeasure;ShearDeformationAreaY;IfcAreaMeasure;MaximumSectionModulusY;IfcSectionModulusMeasure;MinimumSectionModulusY;IfcSectionModulusMeasure;MaximumSectionModulusZ;IfcSectionModulusMeasure;MinimumSectionModulusZ;IfcSectionModulusMeasure;TorsionalSectionModulus;IfcSectionModulusMeasure;ShearAreaZ;IfcAreaMeasure;ShearAreaY;IfcAreaMeasure;PlasticShapeFactorY;IfcPositiveRatioMeasure;PlasticShapeFactorZ;IfcPositiveRatioMeasure +Pset_ProjectCommon;FundingSource;IfcLabel;ROI;IfcRatioMeasure;PaybackPeriod;IfcDuration Pset_ProjectOrderChangeOrder;ReasonForChange;IfcText;BudgetSource;IfcText Pset_ProjectOrderMaintenanceWorkOrder;ProductDescription;IfcText;WorkTypeRequested;IfcText;ContractualType;IfcText;IfNotAccomplished;IfcText;ScheduledFrequency;IfcTimeMeasure Pset_ProjectOrderMoveOrder;SpecialInstructions;IfcText Pset_ProjectOrderPurchaseOrder;IsFOB;IfcBoolean;ShipMethod;IfcText Pset_ProjectOrderWorkOrder;ProductDescription;IfcText;WorkTypeRequested;IfcText;ContractualType;IfcText;IfNotAccomplished;IfcText -Pset_PropertyAgreement;Identifier;IfcIdentifier;Version;IfcLabel;VersionDate;IfcDate;PropertyName;IfcLabel;CommencementDate;IfcDate;TerminationDate;IfcDate;Duration;IfcDuration;Options;IfcText;ConditionCommencement;IfcText;Restrictions;IfcText;ConditionTermination;IfcText +Pset_PropertyAgreement;TrackingIdentifier;IfcIdentifier;AgreementVersion;IfcLabel;AgreementDate;IfcDate;PropertyName;IfcLabel;CommencementDate;IfcDate;TerminationDate;IfcDate;Duration;IfcDuration;Options;IfcText;ConditionCommencement;IfcText;Restrictions;IfcText;ConditionTermination;IfcText Pset_ProtectiveDeviceBreakerUnitI2TCurve;NominalCurrent;IfcElectricCurrentMeasure;BreakerUnitCurve;IfcReal Pset_ProtectiveDeviceBreakerUnitI2TFuseCurve;BreakerUnitFuseMeltingCurve;IfcReal;BreakerUnitFuseBreakingingCurve;IfcReal Pset_ProtectiveDeviceBreakerUnitIPICurve;NominalCurrent;IfcElectricCurrentMeasure;BreakerUnitIPICurve;IfcElectricCurrentMeasure @@ -220,53 +415,87 @@ Pset_ProtectiveDeviceTrippingFunctionGCurve;IsSelectable;IfcBoolean;NominalCurre Pset_ProtectiveDeviceTrippingFunctionICurve;IsSelectable;IfcBoolean;NominalCurrentAdjusted;IfcBoolean;ReleaseCurrent;IfcElectricCurrentMeasure;ReleaseTime;IfcTimeMeasure;CurrentTolerance1;IfcPositiveRatioMeasure;CurrentToleranceLimit1;IfcTimeMeasure;CurrentTolerance2;IfcPositiveRatioMeasure;IsCurrentTolerancePositiveOnly;IfcBoolean;TimeTolerance1;IfcPositiveRatioMeasure;TimeToleranceLimit1;IfcElectricCurrentMeasure;TimeTolerance2;IfcPositiveRatioMeasure;IsTimeTolerancePositiveOnly;IfcBoolean;MaxAdjustmentX_ICS;IfcElectricCurrentMeasure;IsOffWhenSFunctionOn;IfcBoolean Pset_ProtectiveDeviceTrippingFunctionLCurve;IsSelectable;IfcBoolean;UpperCurrent1;IfcElectricCurrentMeasure;UpperCurrent2;IfcElectricCurrentMeasure;UpperTime1;IfcTimeMeasure;UpperTime2;IfcTimeMeasure;LowerCurrent1;IfcElectricCurrentMeasure;LowerCurrent2;IfcElectricCurrentMeasure;LowerTime1;IfcTimeMeasure;LowerTime2;IfcTimeMeasure Pset_ProtectiveDeviceTrippingFunctionSCurve;IsSelectable;IfcBoolean;NominalCurrentAdjusted;IfcBoolean;ReleaseCurrent;IfcElectricCurrentMeasure;ReleaseTime;IfcTimeMeasure;CurrentTolerance1;IfcPositiveRatioMeasure;CurrentToleranceLimit1;IfcTimeMeasure;CurrentTolerance2;IfcPositiveRatioMeasure;IsCurrentTolerancePositiveOnly;IfcBoolean;TimeTolerance1;IfcPositiveRatioMeasure;TimeToleranceLimit1;IfcElectricCurrentMeasure;TimeTolerance2;IfcPositiveRatioMeasure;IsTimeTolerancePositiveOnly;IfcBoolean;ReleaseCurrentI2tStart;IfcElectricCurrentMeasure;ReleaseTimeI2tStart;IfcTimeMeasure;ReleaseCurrentI2tEnd;IfcElectricCurrentMeasure;ReleaseTimeI2tEnd;IfcTimeMeasure;IsOffWhenLfunctionOn;IfcBoolean -Pset_ProtectiveDeviceTrippingUnitCurrentAdjustment;AdjustmentRange;IfcElectricCurrentMeasure;AdjustmentRangeStepValue;IfcElectricCurrentMeasure;AdjustmentValues;IfcElectricCurrentMeasure;AdjustmentDesignation;IfcLabel -Pset_ProtectiveDeviceTrippingUnitTimeAdjustment;AdjustmentRange;IfcTimeMeasure;AdjustmentRangeStepValue;IfcTimeMeasure;AdjustmentValues;IfcTimeMeasure;AdjustmentDesignation;IfcLabel;CurrentForTimeDelay;IfcTimeMeasure +Pset_ProtectiveDeviceTrippingUnitCurrentAdjustment;CurrentAdjustmentRange;IfcElectricCurrentMeasure;CurrentAdjustmentRangeStepValue;IfcElectricCurrentMeasure;CurrentAdjustmentValues;IfcElectricCurrentMeasure;AdjustmentDesignation;IfcLabel +Pset_ProtectiveDeviceTrippingUnitTimeAdjustment;TimeAdjustmentRange;IfcTimeMeasure;TimeAdjustmentRangeStepValue;IfcTimeMeasure;TimeAdjustmentValues;IfcTimeMeasure;AdjustmentDesignation;IfcLabel;CurrentForTimeDelay;IfcTimeMeasure Pset_ProtectiveDeviceTrippingUnitTypeCommon;Reference;IfcIdentifier;Standard;IfcLabel;UseInDiscrimination;IfcBoolean;AtexVerified;IfcBoolean;OldDevice;IfcBoolean;LimitingTerminalSize;IfcAreaMeasure Pset_ProtectiveDeviceTrippingUnitTypeElectroMagnetic;I1;IfcReal;I2;IfcReal;T2;IfcTimeMeasure;DefinedTemperature;IfcThermodynamicTemperatureMeasure;TemperatureFactor;IfcRatioMeasure;I4;IfcReal;I5;IfcReal;T5;IfcTimeMeasure;CurveDesignation;IfcLabel Pset_ProtectiveDeviceTrippingUnitTypeElectronic;NominalCurrents;IfcElectricCurrentMeasure;N_Protection;IfcBoolean;N_Protection_50;IfcBoolean;N_Protection_100;IfcBoolean;N_Protection_Select;IfcBoolean -Pset_ProtectiveDeviceTrippingUnitTypeThermal;I1;IfcReal;I2;IfcReal;T2;IfcTimeMeasure;DefinedTemperature;IfcThermodynamicTemperatureMeasure;TemperatureFactor;IfcRatioMeasure;CurveDesignation;IfcLabel +Pset_ProtectiveDeviceTrippingUnitTypeResidualCurrent +Pset_ProtectiveDeviceTrippingUnitTypeTherma;I1;IfcReal;I2;IfcReal;T2;IfcTimeMeasure;DefinedTemperature;IfcThermodynamicTemperatureMeasure;TemperatureFactor;IfcRatioMeasure;CurveDesignation;IfcLabel +Pset_ProtectiveDeviceTypeAntiArcingDevice;RatedVoltage;IfcElectricVoltageMeasure;GroundingType;IfcLabel Pset_ProtectiveDeviceTypeCircuitBreaker;PerformanceClasses;IfcLabel;ICU60947;IfcElectricCurrentMeasure;ICS60947;IfcElectricCurrentMeasure;ICW60947;IfcElectricCurrentMeasure;ICM60947;IfcElectricCurrentMeasure Pset_ProtectiveDeviceTypeCommon;Reference;IfcIdentifier Pset_ProtectiveDeviceTypeEarthLeakageCircuitBreaker;Sensitivity;IfcElectricCurrentMeasure -Pset_ProtectiveDeviceTypeFuseDisconnector;IC60269;IfcElectricCurrentMeasure;PowerLoss;IfcPowerMeasure +Pset_ProtectiveDeviceTypeFuseDisconnector;IC60269;IfcElectricCurrentMeasure;PowerLoss;IfcPowerMeasure;NumberOfPhases;IfcCountMeasure;ReferenceEnvironmentTemperature;IfcThermodynamicTemperatureMeasure;BreakingCapacity;IfcElectricCurrentMeasure;ArcExtinctionType;IfcLabel;NumberOfPoles;IfcCountMeasure;TransformationRatio;IfcRatioMeasure;NominalFrequency;IfcFrequencyMeasure;NominalCurrent;IfcElectricCurrentMeasure;RatedVoltage;IfcElectricVoltageMeasure Pset_ProtectiveDeviceTypeResidualCurrentCircuitBreaker;Sensitivity;IfcElectricCurrentMeasure Pset_ProtectiveDeviceTypeResidualCurrentSwitch;Sensitivity;IfcElectricCurrentMeasure +Pset_ProtectiveDeviceTypeSparkGap;BreakdownVoltageTolerance;IfcElectricVoltageMeasure;Capacitance;IfcElectricCapacitanceMeasure;CurrentRMS;IfcElectricCurrentMeasure;PowerDissipation;IfcPowerMeasure;Resistivity;IfcElectricResistanceMeasure +Pset_ProtectiveDeviceTypeVaristor;CharacteristicFunction;IfcText +Pset_ProvisionForVoid;VoidShape;IfcLabel;Width;IfcPositiveLengthMeasure;Height;IfcPositiveLengthMeasure;Diameter;IfcPositiveLengthMeasure;Depth;IfcPositiveLengthMeasure;System;IfcLabel Pset_PumpOccurrence;ImpellerDiameter;IfcPositiveLengthMeasure +Pset_PumpPHistory Pset_PumpTypeCommon;Reference;IfcIdentifier;FlowRateRange;IfcMassFlowRateMeasure;FlowResistanceRange;IfcPressureMeasure;ConnectionSize;IfcPositiveLengthMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;NetPositiveSuctionHead;IfcPressureMeasure;NominalRotationSpeed;IfcRotationalFrequencyMeasure +Pset_QuayCommon;StructuralType;IfcLabel;BentSpacing;IfcLengthMeasure;Elevation;IfcLengthMeasure +Pset_QuayDesignCriteria;HighWaterLevel;IfcLengthMeasure;LowWaterLevel;IfcLengthMeasure;ExtremeHighWaterLevel;IfcLengthMeasure;ExtremeLowWaterLevel;IfcLengthMeasure;ShipLoading;IfcForceMeasure;WaveLoading;IfcForceMeasure;FlowLoading;IfcForceMeasure;UniformlyDistributedLoad;IfcForceMeasure;EquipmentLoading;IfcForceMeasure +Pset_RadiiKerbStone;Radius;IfcPositiveLengthMeasure +Pset_RailTypeBlade;IsArticulatedBlade;IfcBoolean;IsFallbackBlade;IfcBoolean;NominalLength;IfcNonNegativeLengthMeasure;BladeRadius;IfcPositiveLengthMeasure +Pset_RailTypeCheckRai +Pset_RailTypeGuardRai +Pset_RailTypeRai;MinimumTensileStrength;IfcForceMeasure;IsStainless;IfcBoolean +Pset_RailTypeStockRai;StockRailRadius;IfcPositiveLengthMeasure;NominalLength;IfcNonNegativeLengthMeasure Pset_RailingCommon;Reference;IfcIdentifier;Height;IfcPositiveLengthMeasure;Diameter;IfcPositiveLengthMeasure;IsExternal;IfcBoolean +Pset_RailwayBalise;NominalHeight;IfcNonNegativeLengthMeasure;NominalWidth;IfcNonNegativeLengthMeasure;NominalWeight;IfcMassMeasure;NominalLength;IfcNonNegativeLengthMeasure;FailureInformation;IfcText;DetectionRange;IfcPositiveLengthMeasure;InformationLength;IfcInteger;TransmissionRate;IfcIntegerCountRateMeasure;OperationalTemperatureRange;IfcThermodynamicTemperatureMeasure;IP_Code;IfcLabel +Pset_RailwayCableCarrier;NumberOfCrossedTracks;IfcCountMeasure +Pset_RailwayLevelCrossing;IsAccessibleByVehicle;IfcBoolean;HasRailDrainage;IfcBoolean;IsPrivateOwner;IfcBoolean;PermissiblePavementLoad;IfcMassMeasure;IsSecuredBySignalingSystem;IfcBoolean;IsExceptionalTransportRoute;IfcBoolean +Pset_RailwaySignalAspect;SignalAspectType;IfcLabel;SignLegend;IfcText +Pset_RailwaySignalOccurrence;ApproachSpeed;IfcLinearVelocityMeasure;HandSignallingProhibited;IfcBoolean;LimitedClearances;IfcText;NumberOfLampsNotUsed;IfcCountMeasure;RequiresOLEMesh;IfcBoolean;RequiresSafetyHandrail;IfcBoolean;SignalPostTelephoneID;IfcIdentifier;SignalPostTelephoneType;IfcLabel;SpecialPositionArrangement;IfcLabel;HinderingObstaclesDescription;IfcText;SignalWalkwayLength;IfcPositiveLengthMeasure;RequiresBannerSignal;IfcBoolean;DistanceToStopMark;IfcPositiveLengthMeasure +Pset_RailwaySignalSighting;SignalSightingAchievableDistance;IfcPositiveLengthMeasure;SignalSightingAvailableDistance;IfcPositiveLengthMeasure;SignalSightingCombinedWithRepeater;IfcPositiveLengthMeasure;SignalSightingMinimum;IfcPositiveLengthMeasure;SignalSightingPreferred;IfcPositiveLengthMeasure;SignalSightingRouteIndicator;IfcPositiveLengthMeasure;SignalViewingMinimumInFront;IfcPositiveLengthMeasure +Pset_RailwaySignalType;LensDiffuserType;IfcLabel;HasConductorRailGuardBoard;IfcBoolean;MaximumDisplayDistance;IfcPositiveLengthMeasure;RequiredDisplayDistance;IfcPositiveLengthMeasure;IsHighType;IfcBoolean;SignalHoodLength;IfcPositiveLengthMeasure;HotStripOrientation;IfcLabel;LensDiffuserOrientation;IfcLabel;NumberOfLamps;IfcCountMeasure;SignalMessage;IfcText +Pset_RailwayTrackStructurePart;HasBallastTrack;IfcBoolean;HasCWR;IfcBoolean;IsSunExposed;IfcBoolean Pset_RampCommon;Reference;IfcIdentifier;RequiredHeadroom;IfcPositiveLengthMeasure;RequiredSlope;IfcPlaneAngleMeasure;HandicapAccessible;IfcBoolean;HasNonSkidSurface;IfcBoolean;FireExit;IfcBoolean;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel Pset_RampFlightCommon;Reference;IfcIdentifier;Headroom;IfcPositiveLengthMeasure;ClearWidth;IfcPositiveLengthMeasure;Slope;IfcPlaneAngleMeasure;CounterSlope;IfcPlaneAngleMeasure -Pset_ReinforcementBarCountOfIndependentFooting;Description;IfcText;Reference;IfcLabel;XDirectionLowerBarCount;IfcInteger;YDirectionLowerBarCount;IfcInteger;XDirectionUpperBarCount;IfcInteger;YDirectionUpperBarCount;IfcInteger -Pset_ReinforcementBarPitchOfBeam;Description;IfcText;Reference;IfcLabel;StirrupBarPitch;IfcPositiveLengthMeasure;SpacingBarPitch;IfcPositiveLengthMeasure -Pset_ReinforcementBarPitchOfColumn;Description;IfcText;Reference;IfcLabel;HoopBarPitch;IfcPositiveLengthMeasure;XDirectionTieHoopBarPitch;IfcPositiveLengthMeasure;XDirectionTieHoopCount;IfcInteger;YDirectionTieHoopBarPitch;IfcPositiveLengthMeasure;YDirectionTieHoopCount;IfcInteger +Pset_ReferentCommon;NameFormat;IfcLabel +Pset_ReinforcementBarCountOfIndependentFooting;Description;IfcText;Reference;IfcLabel;XDirectionLowerBarCount;IfcCountMeasure;YDirectionLowerBarCount;IfcCountMeasure;XDirectionUpperBarCount;IfcCountMeasure;YDirectionUpperBarCount;IfcCountMeasure +Pset_ReinforcementBarPitchOfBea;Description;IfcText;Reference;IfcLabel;StirrupBarPitch;IfcPositiveLengthMeasure;SpacingBarPitch;IfcPositiveLengthMeasure +Pset_ReinforcementBarPitchOfColumn;Description;IfcText;Reference;IfcLabel;HoopBarPitch;IfcPositiveLengthMeasure;XDirectionTieHoopBarPitch;IfcPositiveLengthMeasure;XDirectionTieHoopCount;IfcCountMeasure;YDirectionTieHoopBarPitch;IfcPositiveLengthMeasure;YDirectionTieHoopCount;IfcCountMeasure Pset_ReinforcementBarPitchOfContinuousFooting;Description;IfcText;Reference;IfcLabel;CrossingUpperBarPitch;IfcPositiveLengthMeasure;CrossingLowerBarPitch;IfcPositiveLengthMeasure Pset_ReinforcementBarPitchOfSlab;Description;IfcText;Reference;IfcLabel;LongOutsideTopBarPitch;IfcPositiveLengthMeasure;LongInsideCenterTopBarPitch;IfcPositiveLengthMeasure;LongInsideEndTopBarPitch;IfcPositiveLengthMeasure;ShortOutsideTopBarPitch;IfcPositiveLengthMeasure;ShortInsideCenterTopBarPitch;IfcPositiveLengthMeasure;ShortInsideEndTopBarPitch;IfcPositiveLengthMeasure;LongOutsideLowerBarPitch;IfcPositiveLengthMeasure;LongInsideCenterLowerBarPitch;IfcPositiveLengthMeasure;LongInsideEndLowerBarPitch;IfcPositiveLengthMeasure;ShortOutsideLowerBarPitch;IfcPositiveLengthMeasure;ShortInsideCenterLowerBarPitch;IfcPositiveLengthMeasure;ShortInsideEndLowerBarPitch;IfcPositiveLengthMeasure -Pset_ReinforcementBarPitchOfWall;Description;IfcText;Reference;IfcLabel;VerticalBarPitch;IfcPositiveLengthMeasure;HorizontalBarPitch;IfcPositiveLengthMeasure;SpacingBarPitch;IfcPositiveLengthMeasure -Pset_Risk;NatureOfRisk;IfcLabel;SubNatureOfRisk1;IfcLabel;SubNatureOfRisk2;IfcLabel;RiskCause;IfcText;AffectsSurroundings;IfcBoolean;PreventiveMeassures;IfcText -Pset_RoofCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel +Pset_ReinforcementBarPitchOfWa;Description;IfcText;Reference;IfcLabel;VerticalBarPitch;IfcPositiveLengthMeasure;HorizontalBarPitch;IfcPositiveLengthMeasure;SpacingBarPitch;IfcPositiveLengthMeasure +Pset_RepairOccurrence;RepairContent;IfcText;RepairDate;IfcDate;MeanTimeToRepair;IfcTimeMeasure +Pset_RevetmentCommon;StructuralType;IfcLabel;Elevation;IfcLengthMeasure +Pset_Risk;RiskName;IfcLabel;NatureOfRisk;IfcLabel;RiskAssessmentMethodology;IfcLabel;MitigationPlanned;IfcLabel;MitigationProposed;IfcLabel;AssociatedProduct;IfcLabel;AssociatedActivity;IfcLabel;AssociatedLocation;IfcLabel +Pset_RoadDesignCriteriaCommon;Crossfall;IfcRatioMeasure;DesignSpeed;IfcLinearVelocityMeasure;DesignTrafficVolume;IfcCountMeasure;DesignVehicleClass;IfcLabel;LaneWidth;IfcPositiveLengthMeasure;NumberOfThroughLanes;IfcCountMeasure;RoadDesignClass;IfcLabel +Pset_RoadGuardElement;IsMoveable;IfcBoolean;IsTerminal;IfcBoolean;IsTransition;IfcBoolean;TerminalType;IfcLabel +Pset_RoadMarkingCommon;ApplicationMethod;IfcText;DiagramNumber;IfcLabel;MaterialColour;IfcLabel;MaterialThickness;IfcPositiveLengthMeasure;MaterialType;IfcLabel;Structure;IfcLabel +Pset_RoadSymbolsCommon;Text;IfcText;TypeDesignation;IfcLabel +Pset_RoofCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;FireRating;IfcLabel;LoadBearing;IfcBoolean Pset_SanitaryTerminalTypeBath;DrainSize;IfcPositiveLengthMeasure;HasGrabHandles;IfcBoolean Pset_SanitaryTerminalTypeBidet;SpilloverLevel;IfcPositiveLengthMeasure;DrainSize;IfcPositiveLengthMeasure Pset_SanitaryTerminalTypeCistern;CisternCapacity;IfcVolumeMeasure;IsSingleFlush;IfcBoolean;FlushRate;IfcVolumeMeasure;IsAutomaticFlush;IfcBoolean -Pset_SanitaryTerminalTypeCommon;Reference;IfcIdentifier;NominalLength;IfcPositiveLengthMeasure;NominalWidth;IfcPositiveLengthMeasure;NominalDepth;IfcPositiveLengthMeasure;Color;IfcLabel +Pset_SanitaryTerminalTypeCommon;Reference;IfcIdentifier;NominalLength;IfcNonNegativeLengthMeasure;NominalWidth;IfcNonNegativeLengthMeasure;NominalDepth;IfcNonNegativeLengthMeasure;Colour;IfcLabel Pset_SanitaryTerminalTypeSanitaryFountain;DrainSize;IfcPositiveLengthMeasure Pset_SanitaryTerminalTypeShower;HasTray;IfcBoolean;ShowerHeadDescription;IfcText;DrainSize;IfcPositiveLengthMeasure -Pset_SanitaryTerminalTypeSink;Color;IfcLabel;DrainSize;IfcPositiveLengthMeasure;MountingOffset;IfcLengthMeasure +Pset_SanitaryTerminalTypeSink;Colour;IfcLabel;DrainSize;IfcPositiveLengthMeasure;MountingOffset;IfcLengthMeasure Pset_SanitaryTerminalTypeToiletPan;SpilloverLevel;IfcPositiveLengthMeasure -Pset_SanitaryTerminalTypeUrinal;SpilloverLevel;IfcPositiveLengthMeasure +Pset_SanitaryTerminalTypeUrina;SpilloverLevel;IfcPositiveLengthMeasure Pset_SanitaryTerminalTypeWashHandBasin;DrainSize;IfcPositiveLengthMeasure;MountingOffset;IfcLengthMeasure -Pset_SensorTypeCO2Sensor;SetPointConcentration;IfcPositiveRatioMeasure +Pset_SectionInsulator;ACResistance;IfcElectricResistanceMeasure;NumberOfWires;IfcCountMeasure;IsArcSuppressing;IfcBoolean;TensileStrength;IfcForceMeasure +Pset_SectioningDevice +Pset_SensorPHistory +Pset_SensorTypeCO2Sensor;SetPointCO2Concentration;IfcPositiveRatioMeasure Pset_SensorTypeCommon;Reference;IfcIdentifier Pset_SensorTypeConductanceSensor;SetPointConductance;IfcElectricConductanceMeasure Pset_SensorTypeContactSensor;SetPointContact;IfcInteger +Pset_SensorTypeEarthquakeSensor;MarginOfError;IfcRatioMeasure;LinearVelocityResolution;IfcLinearVelocityMeasure;SamplingFrequency;IfcFrequencyMeasure;WorkingState;IfcLabel;DegreeOfLinearity;IfcRatioMeasure;DynamicRange;IfcLinearVelocityMeasure;EarthquakeSensorRange;IfcLinearVelocityMeasure;FullScaleOutput;IfcLinearVelocityMeasure;TransverseSensitivityRatio;IfcRatioMeasure Pset_SensorTypeFireSensor;FireSensorSetPoint;IfcThermodynamicTemperatureMeasure;AccuracyOfFireSensor;IfcThermodynamicTemperatureMeasure;TimeConstant;IfcTimeMeasure Pset_SensorTypeFlowSensor;SetPointFlow;IfcVolumetricFlowRateMeasure +Pset_SensorTypeForeignObjectDetectionSensor;WorkingState;IfcLabel Pset_SensorTypeFrostSensor;SetPointFrost;IfcPositiveRatioMeasure Pset_SensorTypeGasSensor;GasDetected;IfcLabel;SetPointConcentration;IfcPositiveRatioMeasure;CoverageArea;IfcAreaMeasure Pset_SensorTypeHeatSensor;CoverageArea;IfcAreaMeasure;SetPointTemperature;IfcThermodynamicTemperatureMeasure;RateOfTemperatureRise;IfcTemperatureRateOfChangeMeasure Pset_SensorTypeHumiditySensor;SetPointHumidity;IfcPositiveRatioMeasure Pset_SensorTypeIdentifierSensor;SetPointIdentifier;IfcIdentifier -Pset_SensorTypeIonConcentrationSensor;SubstanceDetected;IfcLabel;SetPointConcentration;IfcIonConcentrationMeasure +Pset_SensorTypeIonConcentrationSensor;SubstanceDetected;IfcLabel;SetPointIonConcentration;IfcIonConcentrationMeasure Pset_SensorTypeLevelSensor;SetPointLevel;IfcPositiveLengthMeasure Pset_SensorTypeLightSensor;SetPointIlluminance;IfcIlluminanceMeasure Pset_SensorTypeMoistureSensor;SetPointMoisture;IfcPositiveRatioMeasure @@ -275,56 +504,112 @@ Pset_SensorTypePHSensor;SetPointPH;IfcPHMeasure Pset_SensorTypePressureSensor;SetPointPressure;IfcPressureMeasure;IsSwitch;IfcBoolean Pset_SensorTypeRadiationSensor;SetPointRadiation;IfcPowerMeasure Pset_SensorTypeRadioactivitySensor;SetPointRadioactivity;IfcRadioActivityMeasure +Pset_SensorTypeRainSensor;MarginOfError;IfcRatioMeasure;SamplingFrequency;IfcFrequencyMeasure;WorkingState;IfcLabel;LengthMeasureResolution;IfcLengthMeasure;RainMeasureRange;IfcLengthMeasure Pset_SensorTypeSmokeSensor;CoverageArea;IfcAreaMeasure;SetPointConcentration;IfcPositiveRatioMeasure;HasBuiltInAlarm;IfcBoolean +Pset_SensorTypeSnowSensor;MarginOfError;IfcRatioMeasure;SamplingFrequency;IfcFrequencyMeasure;ImageResolution;IfcLabel;LengthMeasureResolution;IfcLengthMeasure;SnowSensorMeasureRange;IfcLengthMeasure Pset_SensorTypeSoundSensor;SetPointSound;IfcSoundPressureMeasure Pset_SensorTypeTemperatureSensor;SetPointTemperature;IfcThermodynamicTemperatureMeasure -Pset_SensorTypeWindSensor;SetPointSpeed;IfcLinearVelocityMeasure +Pset_SensorTypeTurnoutClosureSensor;DetectionRange;IfcPositiveLengthMeasure;IndicationRodMovementRange;IfcPositiveLengthMeasure +Pset_SensorTypeWindSensor;SetPointSpeed;IfcLinearVelocityMeasure;DampingRatio;IfcRatioMeasure;MarginOfError;IfcRatioMeasure;LinearVelocityResolution;IfcLinearVelocityMeasure;SamplingFrequency;IfcFrequencyMeasure;StartingWindSpeed;IfcLinearVelocityMeasure;WorkingState;IfcLabel;TimeConstant;IfcTimeMeasure;WindAngleRange;IfcPlaneAngleMeasure;WindSpeedRange;IfcLinearVelocityMeasure Pset_ServiceLife;ServiceLifeDuration;IfcDuration;MeanTimeBetweenFailure;IfcDuration Pset_ServiceLifeFactors;QualityOfComponents;IfcPositiveRatioMeasure;DesignLevel;IfcPositiveRatioMeasure;WorkExecutionLevel;IfcPositiveRatioMeasure;IndoorEnvironment;IfcPositiveRatioMeasure;OutdoorEnvironment;IfcPositiveRatioMeasure;InUseConditions;IfcPositiveRatioMeasure;MaintenanceLevel;IfcPositiveRatioMeasure -Pset_ShadingDeviceCommon;Reference;IfcIdentifier;MechanicalOperated;IfcBoolean;SolarTransmittance;IfcPositiveRatioMeasure;SolarReflectance;IfcPositiveRatioMeasure;VisibleLightTransmittance;IfcPositiveRatioMeasure;VisibleLightReflectance;IfcPositiveRatioMeasure;ThermalTransmittance;IfcThermalTransmittanceMeasure;IsExternal;IfcBoolean;Roughness;IfcLabel;SurfaceColor;IfcLabel +Pset_ShadingDeviceCommon;Reference;IfcIdentifier;MechanicalOperated;IfcBoolean;SolarTransmittance;IfcNormalisedRatioMeasure;SolarReflectance;IfcNormalisedRatioMeasure;VisibleLightTransmittance;IfcNormalisedRatioMeasure;VisibleLightReflectance;IfcNormalisedRatioMeasure;ThermalTransmittance;IfcThermalTransmittanceMeasure;IsExternal;IfcBoolean;Roughness;IfcLabel;SurfaceColour;IfcLabel +Pset_ShadingDevicePHistory +Pset_ShipLockCommon;CillLevelUpperHead;IfcLengthMeasure;CillLevelLowerHead;IfcLengthMeasure;WaterDeliveryValveType;IfcLabel;WaterDeliverySystemType;IfcLabel +Pset_ShiplockComple;LockGrade;IfcLabel;LockLines;IfcCountMeasure;LockChamberLevels;IfcCountMeasure;LockMode;IfcLabel +Pset_ShiplockDesignCriteria;MaximumUpstreamNavigableWaterLevel;IfcLengthMeasure;MinimumUpstreamNavigableWaterLevel;IfcLengthMeasure;MaximumDownstreamNavigableWaterLevel;IfcLengthMeasure;MinimumDownstreamNavigableWaterLevel;IfcLengthMeasure;UpstreamMaintenanceWaterLevel;IfcLengthMeasure;DownstreamMaintenanceWaterLevel;IfcLengthMeasure;UpstreamFloodWaterLevel;IfcLengthMeasure;DownstreamFloodWaterLevel;IfcLengthMeasure +Pset_ShipyardCommon;PrimaryProductionType;IfcLabel +Pset_SignCommon;Reference;IfcIdentifier;IsExternal;IfcBoolean;Category;IfcLabel;TactileMarking;IfcBoolean +Pset_SignalFrame;BackboardType;IfcLabel;SignalFrameType;IfcLabel;NominalWidth;IfcNonNegativeLengthMeasure;SignalFrameBackboardHeight;IfcPositiveLengthMeasure;SignalFrameBackboardDiameter;IfcPositiveLengthMeasure Pset_SiteCommon;Reference;IfcIdentifier;BuildableArea;IfcAreaMeasure;SiteCoverageRatio;IfcPositiveRatioMeasure;FloorAreaRatio;IfcPositiveRatioMeasure;BuildingHeightLimit;IfcPositiveLengthMeasure;TotalArea;IfcAreaMeasure +Pset_SiteWeather;MaxAmbientTemp;IfcThermodynamicTemperatureMeasure;MinAmbientTemp;IfcThermodynamicTemperatureMeasure Pset_SlabCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;FireRating;IfcLabel;PitchAngle;IfcPlaneAngleMeasure;Combustible;IfcBoolean;SurfaceSpreadOfFlame;IfcLabel;Compartmentation;IfcBoolean;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean +Pset_SlabTypeTrackSlab Pset_SolarDeviceTypeCommon;Reference;IfcIdentifier +Pset_SolidStratumCapacity;CohesionBehaviour;IfcPressureMeasure;FrictionAngle;IfcPlaneAngleMeasure;FrictionBehaviour;IfcPressureMeasure;GrainSize;IfcPositiveLengthMeasure;HydraulicConductivity;IfcLinearVelocityMeasure;LoadBearingCapacity;IfcPlanarForceMeasure;NValue;IfcCountMeasure;PermeabilityBehaviour;IfcRatioMeasure;PoisonsRatio;IfcRatioMeasure;PwaveVelocity;IfcLinearVelocityMeasure;Resistivity;IfcElectricResistanceMeasure;SettlementBehaviour;IfcPressureMeasure;SwaveVelocity;IfcLinearVelocityMeasure +Pset_SolidStratumComposition;AirVolume;IfcVolumeMeasure;BouldersVolume;IfcVolumeMeasure;ClayVolume;IfcVolumeMeasure;CobblesVolume;IfcVolumeMeasure;ContaminantVolume;IfcVolumeMeasure;FillVolume;IfcVolumeMeasure;GravelVolume;IfcVolumeMeasure;OrganicVolume;IfcVolumeMeasure;RockVolume;IfcVolumeMeasure;SandVolume;IfcVolumeMeasure;SiltVolume;IfcVolumeMeasure;WaterVolume;IfcVolumeMeasure Pset_SoundAttenuation;SoundFrequency;IfcFrequencyMeasure Pset_SoundGeneration;SoundCurve;IfcSoundPowerMeasure +Pset_SpaceAirHandlingDimensioning;CoolingDesignAirFlow;IfcVolumetricFlowRateMeasure;HeatingDesignAirFlow;IfcVolumetricFlowRateMeasure;SensibleHeatGain;IfcPowerMeasure;TotalHeatGain;IfcPowerMeasure;TotalHeatLoss;IfcPowerMeasure;CoolingDryBulb;IfcThermodynamicTemperatureMeasure;CoolingRelativeHumidity;IfcPositiveRatioMeasure;HeatingDryBulb;IfcThermodynamicTemperatureMeasure;HeatingRelativeHumidity;IfcPositiveRatioMeasure;VentilationDesignAirFlow;IfcVolumetricFlowRateMeasure;DesignAirFlow;IfcVolumetricFlowRateMeasure;CeilingRAPlenum;IfcBoolean;BoundaryAreaHeatLoss;IfcHeatFluxDensityMeasure Pset_SpaceCommon;Reference;IfcIdentifier;IsExternal;IfcBoolean;GrossPlannedArea;IfcAreaMeasure;NetPlannedArea;IfcAreaMeasure;PubliclyAccessible;IfcBoolean;HandicapAccessible;IfcBoolean Pset_SpaceCoveringRequirements;FloorCovering;IfcLabel;FloorCoveringThickness;IfcPositiveLengthMeasure;WallCovering;IfcLabel;WallCoveringThickness;IfcPositiveLengthMeasure;CeilingCovering;IfcLabel;CeilingCoveringThickness;IfcPositiveLengthMeasure;SkirtingBoard;IfcLabel;SkirtingBoardHeight;IfcPositiveLengthMeasure;Molding;IfcLabel;MoldingHeight;IfcPositiveLengthMeasure;ConcealedFlooring;IfcBoolean;ConcealedFlooringOffset;IfcNonNegativeLengthMeasure;ConcealedCeiling;IfcBoolean;ConcealedCeilingOffset;IfcNonNegativeLengthMeasure Pset_SpaceFireSafetyRequirements;FireRiskFactor;IfcLabel;FlammableStorage;IfcBoolean;FireExit;IfcBoolean;SprinklerProtection;IfcBoolean;SprinklerProtectionAutomatic;IfcBoolean;AirPressurization;IfcBoolean -Pset_SpaceHeaterTypeCommon;Reference;IfcIdentifier;BodyMass;IfcMassMeasure;ThermalMassHeatCapacity;IfcReal;OutputCapacity;IfcPowerMeasure;ThermalEfficiency;IfcNormalisedRatioMeasure;NumberOfPanels;IfcInteger;NumberOfSections;IfcInteger +Pset_SpaceHVACDesign;TemperatureSetPoint;IfcThermodynamicTemperatureMeasure;TemperatureMax;IfcThermodynamicTemperatureMeasure;TemperatureMin;IfcThermodynamicTemperatureMeasure;TemperatureSummerMax;IfcThermodynamicTemperatureMeasure;TemperatureSummerMin;IfcThermodynamicTemperatureMeasure;TemperatureWinterMax;IfcThermodynamicTemperatureMeasure;TemperatureWinterMin;IfcThermodynamicTemperatureMeasure;HumiditySetPoint;IfcPositiveRatioMeasure;HumidityMax;IfcPositiveRatioMeasure;HumidityMin;IfcPositiveRatioMeasure;HumiditySummer;IfcPositiveRatioMeasure;HumidityWinter;IfcPositiveRatioMeasure;DiscontinuedHeating;IfcBoolean;NaturalVentilation;IfcBoolean;NaturalVentilationRate;IfcNumericMeasure;MechanicalVentilation;IfcBoolean;MechanicalVentilationRate;IfcNumericMeasure;AirConditioning;IfcBoolean;AirConditioningCentral;IfcBoolean;AirHandlingName;IfcLabel +Pset_SpaceHeaterPHistory +Pset_SpaceHeaterTypeCommon;Reference;IfcIdentifier;BodyMass;IfcMassMeasure;ThermalMassHeatCapacity;IfcReal;OutputCapacity;IfcPowerMeasure;ThermalEfficiency;IfcNormalisedRatioMeasure;NumberOfPanels;IfcCountMeasure;NumberOfSections;IfcCountMeasure +Pset_SpaceHeaterTypeConvector Pset_SpaceHeaterTypeRadiator;TubingLength;IfcPositiveLengthMeasure;WaterContent;IfcMassMeasure -Pset_SpaceLightingRequirements;ArtificialLighting;IfcBoolean;Illuminance;IfcIlluminanceMeasure +Pset_SpaceLightingDesign;ArtificialLighting;IfcBoolean;Illuminance;IfcIlluminanceMeasure Pset_SpaceOccupancyRequirements;OccupancyType;IfcLabel;OccupancyNumber;IfcCountMeasure;OccupancyNumberPeak;IfcCountMeasure;OccupancyTimePerDay;IfcTimeMeasure;AreaPerOccupant;IfcAreaMeasure;MinimumHeadroom;IfcLengthMeasure;IsOutlookDesirable;IfcBoolean Pset_SpaceParking;ParkingUse;IfcLabel;ParkingUnits;IfcCountMeasure;IsAisle;IfcBoolean;IsOneWay;IfcBoolean -Pset_SpaceThermalDesign;CoolingDesignAirflow;IfcVolumetricFlowRateMeasure;HeatingDesignAirflow;IfcVolumetricFlowRateMeasure;TotalSensibleHeatGain;IfcPowerMeasure;TotalHeatGain;IfcPowerMeasure;TotalHeatLoss;IfcPowerMeasure;CoolingDryBulb;IfcThermodynamicTemperatureMeasure;CoolingRelativeHumidity;IfcPositiveRatioMeasure;HeatingDryBulb;IfcThermodynamicTemperatureMeasure;HeatingRelativeHumidity;IfcPositiveRatioMeasure;VentilationAirFlowrate;IfcVolumetricFlowRateMeasure;ExhaustAirFlowrate;IfcVolumetricFlowRateMeasure;CeilingRAPlenum;IfcBoolean;BoundaryAreaHeatLoss;IfcHeatFluxDensityMeasure Pset_SpaceThermalLoad;People;IfcPowerMeasure;Lighting;IfcPowerMeasure;EquipmentSensible;IfcPowerMeasure;VentilationIndoorAir;IfcPowerMeasure;VentilationOutdoorAir;IfcPowerMeasure;RecirculatedAir;IfcPowerMeasure;ExhaustAir;IfcPowerMeasure;AirExchangeRate;IfcPowerMeasure;DryBulbTemperature;IfcPowerMeasure;RelativeHumidity;IfcPowerMeasure;InfiltrationSensible;IfcPowerMeasure;TotalSensibleLoad;IfcPowerMeasure;TotalLatentLoad;IfcPowerMeasure;TotalRadiantLoad;IfcPowerMeasure -Pset_SpaceThermalRequirements;SpaceTemperature;IfcThermodynamicTemperatureMeasure;SpaceTemperatureMax;IfcThermodynamicTemperatureMeasure;SpaceTemperatureMin;IfcThermodynamicTemperatureMeasure;SpaceTemperatureSummerMax;IfcThermodynamicTemperatureMeasure;SpaceTemperatureSummerMin;IfcThermodynamicTemperatureMeasure;SpaceTemperatureWinterMax;IfcThermodynamicTemperatureMeasure;SpaceTemperatureWinterMin;IfcThermodynamicTemperatureMeasure;SpaceHumidity;IfcRatioMeasure;SpaceHumidityMax;IfcRatioMeasure;SpaceHumidityMin;IfcRatioMeasure;SpaceHumiditySummer;IfcRatioMeasure;SpaceHumidityWinter;IfcRatioMeasure;DiscontinuedHeating;IfcBoolean;NaturalVentilation;IfcBoolean;NaturalVentilationRate;IfcCountMeasure;MechanicalVentilationRate;IfcCountMeasure;AirConditioning;IfcBoolean;AirConditioningCentral;IfcBoolean -Pset_SpatialZoneCommon;Reference;IfcLabel;IsExternal;IfcBoolean +Pset_SpaceThermalLoadPHistory +Pset_SpaceThermalPHistory +Pset_SpatialZoneCommon;Reference;IfcIdentifier;IsExternal;IfcBoolean +Pset_SpringTensioner;TensileStrength;IfcPressureMeasure;NominalWeight;IfcMassMeasure;TensioningWorkingRange;IfcForceMeasure Pset_StackTerminalTypeCommon;Reference;IfcIdentifier Pset_StairCommon;Reference;IfcIdentifier;NumberOfRiser;IfcCountMeasure;NumberOfTreads;IfcCountMeasure;RiserHeight;IfcPositiveLengthMeasure;TreadLength;IfcPositiveLengthMeasure;NosingLength;IfcLengthMeasure;WalkingLineOffset;IfcPositiveLengthMeasure;TreadLengthAtOffset;IfcPositiveLengthMeasure;TreadLengthAtInnerSide;IfcPositiveLengthMeasure;WaistThickness;IfcPositiveLengthMeasure;RequiredHeadroom;IfcPositiveLengthMeasure;HandicapAccessible;IfcBoolean;HasNonSkidSurface;IfcBoolean;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel;FireExit;IfcBoolean Pset_StairFlightCommon;Reference;IfcIdentifier;NumberOfRiser;IfcCountMeasure;NumberOfTreads;IfcCountMeasure;RiserHeight;IfcPositiveLengthMeasure;TreadLength;IfcPositiveLengthMeasure;NosingLength;IfcLengthMeasure;WalkingLineOffset;IfcPositiveLengthMeasure;TreadLengthAtOffset;IfcPositiveLengthMeasure;TreadLengthAtInnerSide;IfcPositiveLengthMeasure;Headroom;IfcPositiveLengthMeasure;WaistThickness;IfcPositiveLengthMeasure +Pset_Stationing;IncomingStation;IfcLengthMeasure;Station;IfcLengthMeasure;HasIncreasingStation;IfcBoolean Pset_StructuralSurfaceMemberVaryingThickness;Thickness1;IfcPositiveLengthMeasure;Location1Local;IfcLengthMeasure;Location1Global;IfcLengthMeasure;Thickness2;IfcPositiveLengthMeasure;Location2Local;IfcLengthMeasure;Location2Global;IfcLengthMeasure;Thickness3;IfcPositiveLengthMeasure;Location3Local;IfcLengthMeasure;Location3Global;IfcLengthMeasure -Pset_SwitchingDeviceTypeCommon;Reference;IfcIdentifier;NumberOfGangs;IfcInteger;HasLock;IfcBoolean;IsIlluminated;IfcBoolean;Legend;IfcLabel;SetPoint;IfcLabel -Pset_SystemFurnitureElementTypeCommon;IsUsed;IfcBoolean;GroupCode;IfcIdentifier;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;Finishing;IfcLabel -Pset_SystemFurnitureElementTypePanel;HasOpening;IfcBoolean;NominalThickness;IfcPositiveLengthMeasure -Pset_SystemFurnitureElementTypeWorkSurface;UsePurpose;IfcLabel;HangingHeight;IfcPositiveLengthMeasure;NominalThickness;IfcPositiveLengthMeasure;ShapeDescription;IfcLabel +Pset_SumpBusterCommon;TypeDesignation;IfcLabel +Pset_Superelevation;Superelevation;IfcRatioMeasure +Pset_SwitchingDeviceTypeCommon;Reference;IfcIdentifier;NumberOfGangs;IfcCountMeasure;HasLock;IfcBoolean;IsIlluminated;IfcBoolean;Legend;IfcLabel;SetPoint;IfcLabel +Pset_SwitchingDeviceTypeContactor +Pset_SwitchingDeviceTypeDimmerSwitch +Pset_SwitchingDeviceTypeEmergencyStop;NumberOfPhases;IfcCountMeasure;ReferenceEnvironmentTemperature;IfcThermodynamicTemperatureMeasure;BreakingCapacity;IfcElectricCurrentMeasure;NumberOfEarthFaultRelays;IfcCountMeasure;NumberOfEmergencyButtons;IfcCountMeasure;NumberOfRelays;IfcCountMeasure;NumberOfOverCurrentRelays;IfcCountMeasure;NumberOfAffectedPoles;IfcCountMeasure;NominalCurrent;IfcElectricCurrentMeasure;RatedFrequency;IfcFrequencyMeasure;RatedVoltage;IfcElectricVoltageMeasure;TransformationRatio;IfcPositiveRatioMeasure +Pset_SwitchingDeviceTypeKeypad +Pset_SwitchingDeviceTypeMomentarySwitch +Pset_SwitchingDeviceTypePHistory +Pset_SwitchingDeviceTypeRelay;NominalHeight;IfcNonNegativeLengthMeasure;Current;IfcElectricCurrentMeasure;NominalLength;IfcNonNegativeLengthMeasure;InsulationResistance;IfcElectricResistanceMeasure;NominalWidth;IfcNonNegativeLengthMeasure;ContactResistance;IfcElectricResistanceMeasure;PullInVoltage;IfcElectricVoltageMeasure;ReleaseVoltage;IfcElectricVoltageMeasure;Voltage;IfcElectricVoltageMeasure +Pset_SwitchingDeviceTypeSelectorSwitch;NominalCurrent;IfcElectricCurrentMeasure;ReferenceEnvironmentTemperature;IfcThermodynamicTemperatureMeasure;RatedFrequency;IfcFrequencyMeasure;NumberOfPhases;IfcCountMeasure;NominalPower;IfcPowerMeasure +Pset_SwitchingDeviceTypeStarter +Pset_SwitchingDeviceTypeSwitchDisconnector +Pset_SwitchingDeviceTypeToggleSwitch +Pset_SymmetricPairCable;NumberOfTwistedPairs;IfcCountMeasure;NumberOfUntwistedPairs;IfcCountMeasure +Pset_SystemFurnitureElementTypeCommon;IsUsed;IfcBoolean;GroupCode;IfcIdentifier;NominalWidth;IfcNonNegativeLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;Finishing;IfcLabel +Pset_SystemFurnitureElementTypePane;HasOpening;IfcBoolean;NominalThickness;IfcNonNegativeLengthMeasure +Pset_SystemFurnitureElementTypeSubrack;NumberOfSlots;IfcCountMeasure;NumberOfUnits;IfcCountMeasure;NumberOfOccupiedUnits;IfcCountMeasure +Pset_SystemFurnitureElementTypeWorkSurface;UsePurpose;IfcLabel;HangingHeight;IfcPositiveLengthMeasure;NominalThickness;IfcNonNegativeLengthMeasure;ShapeDescription;IfcLabel Pset_TankOccurrence;HasLadder;IfcBoolean;HasVisualIndicator;IfcBoolean -Pset_TankTypeCommon;Reference;IfcIdentifier;NominalLengthOrDiameter;IfcPositiveLengthMeasure;NominalWidthOrDiameter;IfcPositiveLengthMeasure;NominalDepth;IfcPositiveLengthMeasure;NominalCapacity;IfcVolumeMeasure;EffectiveCapacity;IfcVolumeMeasure;OperatingWeight;IfcMassMeasure;FirstCurvatureRadius;IfcPositiveLengthMeasure;SecondCurvatureRadius;IfcPositiveLengthMeasure;NumberOfSections;IfcInteger +Pset_TankTypeCommon;Reference;IfcIdentifier;NominalLengthOrDiameter;IfcPositiveLengthMeasure;NominalWidthOrDiameter;IfcPositiveLengthMeasure;NominalDepth;IfcNonNegativeLengthMeasure;TankNominalCapacity;IfcVolumeMeasure;EffectiveCapacity;IfcVolumeMeasure;OperatingWeight;IfcMassMeasure;FirstCurvatureRadius;IfcPositiveLengthMeasure;SecondCurvatureRadius;IfcPositiveLengthMeasure;NumberOfSections;IfcCountMeasure Pset_TankTypeExpansion;ChargePressure;IfcPressureMeasure;PressureRegulatorSetting;IfcPressureMeasure;ReliefValveSetting;IfcPressureMeasure Pset_TankTypePreformed;FirstCurvatureRadius;IfcPositiveLengthMeasure;SecondCurvatureRadius;IfcPositiveLengthMeasure -Pset_TankTypePressureVessel;ChargePressure;IfcPressureMeasure;PressureRegulatorSetting;IfcPressureMeasure;ReliefValveSetting;IfcPressureMeasure -Pset_TankTypeSectional;NumberOfSections;IfcInteger;SectionLength;IfcPositiveLengthMeasure;SectionWidth;IfcPositiveLengthMeasure -Pset_ThermalLoadAggregate;TotalCoolingLoad;IfcPowerMeasure;TotalHeatingLoad;IfcPowerMeasure;LightingDiversity;IfcPositiveRatioMeasure;InfiltrationDiversitySummer;IfcPositiveRatioMeasure;InfiltrationDiversityWinter;IfcPositiveRatioMeasure;ApplianceDiversity;IfcPositiveRatioMeasure;LoadSafetyFactor;IfcPositiveRatioMeasure -Pset_ThermalLoadDesignCriteria;OccupancyDiversity;IfcPositiveRatioMeasure;OutsideAirPerPerson;IfcVolumetricFlowRateMeasure;ReceptacleLoadIntensity;IfcReal;AppliancePercentLoadToRadiant;IfcPositiveRatioMeasure;LightingLoadIntensity;IfcReal;LightingPercentLoadToReturnAir;IfcPositiveRatioMeasure +Pset_TankTypePressureVesse;ChargePressure;IfcPressureMeasure;PressureRegulatorSetting;IfcPressureMeasure;ReliefValveSetting;IfcPressureMeasure +Pset_TankTypeSectiona;NumberOfSections;IfcCountMeasure;SectionLength;IfcPositiveLengthMeasure;SectionWidth;IfcPositiveLengthMeasure +Pset_TelecomCableGenera;Attenuation;IfcReal;FireRating;IfcLabel;IsFireResistant;IfcBoolean;NominalDiameter;IfcPositiveLengthMeasure;JacketColour;IfcLabel +Pset_ThermalLoad;OccupancyDiversity;IfcPositiveRatioMeasure;LightingDiversity;IfcPositiveRatioMeasure;ApplianceDiversity;IfcPositiveRatioMeasure;OutsideAirPerPerson;IfcVolumetricFlowRateMeasure;ReceptacleLoadIntensity;IfcHeatFluxDensityMeasure;AppliancePercentLoadToRadiant;IfcPositiveRatioMeasure;LightingLoadIntensity;IfcHeatFluxDensityMeasure;LightingPercentLoadToReturnAir;IfcPositiveRatioMeasure;TotalCoolingLoad;IfcPowerMeasure;TotalHeatingLoad;IfcPowerMeasure;InfiltrationDiversitySummer;IfcPositiveRatioMeasure;InfiltrationDiversityWinter;IfcPositiveRatioMeasure;LoadSafetyFactor;IfcPositiveRatioMeasure +Pset_TicketProcessing;TicketProcessingTime;IfcTimeMeasure;TicketStuckRatio;IfcRatioMeasure +Pset_TicketVendingMachine;TicketStuckRatio;IfcRatioMeasure;MoneyStuckRatio;IfcRatioMeasure;TicketProductionSpeed;IfcIntegerCountRateMeasure +Pset_Tiling;Permeability;IfcNormalisedRatioMeasure;TileLength;IfcPositiveLengthMeasure;TileWidth;IfcPositiveLengthMeasure +Pset_Tolerance;ToleranceDescription;IfcText;OverallTolerance;IfcPositiveLengthMeasure;HorizontalTolerance;IfcPositiveLengthMeasure;OrthogonalTolerance;IfcPositiveLengthMeasure;VerticalTolerance;IfcPositiveLengthMeasure;PlanarFlatness;IfcPositiveLengthMeasure;HorizontalFlatness;IfcPositiveLengthMeasure;ElevationalFlatness;IfcPositiveLengthMeasure;SideFlatness;IfcPositiveLengthMeasure;OverallOrthogonality;IfcPlaneAngleMeasure;HorizontalOrthogonality;IfcPlaneAngleMeasure;OrthogonalOrthogonality;IfcPlaneAngleMeasure;VerticalOrthogonality;IfcPlaneAngleMeasure;OverallStraightness;IfcPositiveLengthMeasure;HorizontalStraightness;IfcPositiveLengthMeasure;OrthogonalStraightness;IfcPositiveLengthMeasure;VerticalStraightness;IfcPositiveLengthMeasure +Pset_TrackBase;IsSurfaceGalling;IfcBoolean;SurfaceGallingArea;IfcAreaMeasure +Pset_TrackElementOccurrenceSleeper;HasSpecialEquipment;IfcBoolean;SequenceInTrackPanel;IfcInteger;IsContaminatedSleeper;IfcBoolean +Pset_TrackElementPHistoryDerailer +Pset_TrackElementTypeDerailer;AppliedLineLoad;IfcMassPerLengthMeasure;DerailmentMaximumSpeedLimit;IfcLinearVelocityMeasure;DerailmentWheelDiameter;IfcPositiveLengthMeasure;DerailmentHeight;IfcPositiveLengthMeasure +Pset_TrackElementTypeSleeper;FasteningType;IfcLabel;IsElectricallyInsulated;IfcBoolean;HollowSleeperUsage;IfcLabel;NumberOfTrackCenters;IfcCountMeasure;IsHollowSleeper;IfcBoolean +Pset_TractionPowerSyste;RatedFrequency;IfcFrequencyMeasure;NominalVoltage;IfcElectricVoltageMeasure +Pset_TrafficCalmingDeviceCommon;TypeDesignation;IfcLabel Pset_TransformerTypeCommon;Reference;IfcIdentifier;PrimaryVoltage;IfcElectricVoltageMeasure;SecondaryVoltage;IfcElectricVoltageMeasure;PrimaryCurrent;IfcElectricCurrentMeasure;SecondaryCurrent;IfcElectricCurrentMeasure;PrimaryFrequency;IfcFrequencyMeasure;SecondaryFrequency;IfcFrequencyMeasure;PrimaryApparentPower;IfcPowerMeasure;SecondaryApparentPower;IfcPowerMeasure;MaximumApparentPower;IfcPowerMeasure;ShortCircuitVoltage;IfcComplexNumber;RealImpedanceRatio;IfcRatioMeasure;ImaginaryImpedanceRatio;IfcRatioMeasure;IsNeutralPrimaryTerminalAvailable;IfcBoolean;IsNeutralSecondaryTerminalAvailable;IfcBoolean +Pset_TransitionSectionCommon;NominalLength;IfcNonNegativeLengthMeasure Pset_TransportElementCommon;Reference;IfcIdentifier;CapacityPeople;IfcCountMeasure;CapacityWeight;IfcMassMeasure;FireExit;IfcBoolean Pset_TransportElementElevator;FireFightingLift;IfcBoolean;ClearWidth;IfcPositiveLengthMeasure;ClearDepth;IfcPositiveLengthMeasure;ClearHeight;IfcPositiveLengthMeasure -Pset_TubeBundleTypeCommon;Reference;IfcIdentifier;NumberOfRows;IfcInteger;StaggeredRowSpacing;IfcPositiveLengthMeasure;InLineRowSpacing;IfcPositiveLengthMeasure;NumberOfCircuits;IfcInteger;FoulingFactor;IfcThermalResistanceMeasure;ThermalConductivity;IfcThermalConductivityMeasure;Length;IfcPositiveLengthMeasure;Volume;IfcVolumeMeasure;NominalDiameter;IfcPositiveLengthMeasure;OutsideDiameter;IfcPositiveLengthMeasure;InsideDiameter;IfcPositiveLengthMeasure;HorizontalSpacing;IfcPositiveLengthMeasure;VerticalSpacing;IfcPositiveLengthMeasure;HasTurbulator;IfcBoolean +Pset_TransportEquipmentOTN;SingleChannelAveragePower;IfcPowerMeasure;ChromaticDispersionTolerance;IfcReal;SingleChannelPower;IfcPowerMeasure;MinimumOpticalSignalToNoiseRatio;IfcRatioMeasure;PolarizationModeDispersionTolerance;IfcTimeMeasure;SingleWaveTransmissionRate;IfcFrequencyMeasure;EquipmentCapacity;IfcIntegerCountRateMeasure +Pset_TrenchExcavationCommon;NominalDepth;IfcNonNegativeLengthMeasure;NominalWidth;IfcNonNegativeLengthMeasure +Pset_TubeBundleTypeCommon;Reference;IfcIdentifier;NumberOfRows;IfcCountMeasure;StaggeredRowSpacing;IfcPositiveLengthMeasure;InLineRowSpacing;IfcPositiveLengthMeasure;NumberOfCircuits;IfcCountMeasure;FoulingFactor;IfcThermalResistanceMeasure;ThermalConductivity;IfcThermalConductivityMeasure;Length;IfcPositiveLengthMeasure;Volume;IfcVolumeMeasure;NominalDiameter;IfcPositiveLengthMeasure;OutsideDiameter;IfcPositiveLengthMeasure;InsideDiameter;IfcPositiveLengthMeasure;HorizontalSpacing;IfcPositiveLengthMeasure;VerticalSpacing;IfcPositiveLengthMeasure;HasTurbulator;IfcBoolean Pset_TubeBundleTypeFinned;Spacing;IfcPositiveLengthMeasure;Thickness;IfcPositiveLengthMeasure;ThermalConductivity;IfcThermalConductivityMeasure;Length;IfcPositiveLengthMeasure;Height;IfcPositiveLengthMeasure;Diameter;IfcPositiveLengthMeasure;FinCorrugatedType;IfcLabel;HasCoating;IfcBoolean -Pset_UnitaryControlElementTypeCommon;Reference;IfcIdentifier;Mode;IfcLabel +Pset_Uncertainty;UncertaintyDescription;IfcText;HorizontalUncertainty;IfcPositiveLengthMeasure;LinearUncertainty;IfcPositiveLengthMeasure;OrthogonalUncertainty;IfcPositiveLengthMeasure;VerticalUncertainty;IfcPositiveLengthMeasure +Pset_UnitaryControlElementBaseStationController;NumberOfInterfaces;IfcInteger;NumberOfManagedBTSs;IfcCountMeasure;NumberOfManagedCarriers;IfcCountMeasure +Pset_UnitaryControlElementPHistory +Pset_UnitaryControlElementTypeCommon;Reference;IfcIdentifier;OperationMode;IfcLabel +Pset_UnitaryControlElementTypeControlPane;NominalCurrent;IfcElectricCurrentMeasure;NominalPower;IfcPowerMeasure;RatedVoltage;IfcElectricVoltageMeasure;ReferenceAirRelativeHumidity;IfcNormalisedRatioMeasure;ReferenceEnvironmentTemperature;IfcThermodynamicTemperatureMeasure +Pset_UnitaryControlElementTypeIndicatorPane Pset_UnitaryControlElementTypeThermostat;TemperatureSetPoint;IfcThermodynamicTemperatureMeasure Pset_UnitaryEquipmentTypeAirConditioningUnit;SensibleCoolingCapacity;IfcPowerMeasure;LatentCoolingCapacity;IfcPowerMeasure;CoolingEfficiency;IfcPositiveRatioMeasure;HeatingCapacity;IfcPowerMeasure;HeatingEfficiency;IfcPositiveRatioMeasure;CondenserFlowrate;IfcVolumetricFlowRateMeasure;CondenserEnteringTemperature;IfcThermodynamicTemperatureMeasure;CondenserLeavingTemperature;IfcThermodynamicTemperatureMeasure;OutsideAirFlowrate;IfcVolumetricFlowRateMeasure Pset_UnitaryEquipmentTypeAirHandler;DualDeck;IfcBoolean Pset_UnitaryEquipmentTypeCommon;Reference;IfcIdentifier +Pset_UtilityConsumptionPHistory +Pset_ValvePHistory Pset_ValveTypeAirRelease;IsAutomatic;IfcBoolean Pset_ValveTypeCommon;Reference;IfcIdentifier;Size;IfcPositiveLengthMeasure;TestPressure;IfcPressureMeasure;WorkingPressure;IfcPressureMeasure;FlowCoefficient;IfcReal;CloseOffRating;IfcPressureMeasure Pset_ValveTypeDrawOffCock;HasHoseUnion;IfcBoolean @@ -335,17 +620,26 @@ Pset_ValveTypeIsolating;IsNormallyOpen;IfcBoolean Pset_ValveTypeMixing;OutletConnectionSize;IfcPositiveLengthMeasure Pset_ValveTypePressureReducing;UpstreamPressure;IfcPressureMeasure;DownstreamPressure;IfcPressureMeasure Pset_ValveTypePressureRelief;ReliefPressure;IfcPressureMeasure +Pset_VegetationCommon;BotanicalName;IfcLabel;LocalName;IfcLabel +Pset_VehicleAvailability;VehicleAvailability;IfcRatioMeasure;MaintenanceDowntime;IfcRatioMeasure;WeatherDowntime;IfcRatioMeasure +Pset_VesselLineCommon;LineIdentifier;IfcIdentifier;MidshipToFairLead;IfcLengthMeasure;CentreLineToFairlead;IfcLengthMeasure;HeightAboveMainDeck;IfcLengthMeasure;FairleadToTermination;IfcLengthMeasure;WinchBreakLimit;IfcForceMeasure;PreTensionAim;IfcForceMeasure;LineType;IfcLabel;LineStrength;IfcForceMeasure;TailLength;IfcPositiveLengthMeasure;TailDiameter;IfcPositiveLengthMeasure;TailType;IfcLabel;TailStrength;IfcForceMeasure Pset_VibrationIsolatorTypeCommon;Reference;IfcIdentifier;VibrationTransmissibility;IfcPositiveRatioMeasure;IsolatorStaticDeflection;IfcLengthMeasure;IsolatorCompressibility;IfcRatioMeasure;MaximumSupportedWeight;IfcMassMeasure;NominalHeight;IfcPositiveLengthMeasure +Pset_VoltageInstrumentTransformer;AccuracyClass;IfcRatioMeasure;AccuracyGrade;IfcLabel;RatedVoltage;IfcElectricVoltageMeasure;NominalCurrent;IfcElectricCurrentMeasure;NominalPower;IfcPowerMeasure;NumberOfPhases;IfcCountMeasure;PrimaryFrequency;IfcFrequencyMeasure;PrimaryVoltage;IfcElectricVoltageMeasure;SecondaryFrequency;IfcFrequencyMeasure;SecondaryVoltage;IfcElectricVoltageMeasure Pset_WallCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;FireRating;IfcLabel;Combustible;IfcBoolean;SurfaceSpreadOfFlame;IfcLabel;ThermalTransmittance;IfcThermalTransmittanceMeasure;IsExternal;IfcBoolean;LoadBearing;IfcBoolean;ExtendToStructure;IfcBoolean;Compartmentation;IfcBoolean -Pset_Warranty;WarrantyIdentifier;IfcIdentifier;WarrantyStartDate;IfcDate;WarrantyEndDate;IfcDate;IsExtendedWarranty;IfcBoolean;WarrantyPeriod;IfcDuration;WarrantyContent;IfcText;PointOfContact;IfcLabel;Exclusions;IfcText +Pset_Warranty;WarrantyIdentifier;IfcIdentifier;WarrantyStartDate;IfcDate;IsExtendedWarranty;IfcBoolean;WarrantyPeriod;IfcDuration;WarrantyContent;IfcText;PointOfContact;IfcLabel;Exclusions;IfcText Pset_WasteTerminalTypeCommon;Reference;IfcIdentifier Pset_WasteTerminalTypeFloorTrap;NominalBodyLength;IfcPositiveLengthMeasure;NominalBodyWidth;IfcPositiveLengthMeasure;NominalBodyDepth;IfcPositiveLengthMeasure;IsForSullageWater;IfcBoolean;SpilloverLevel;IfcPositiveLengthMeasure;HasStrainer;IfcBoolean;OutletConnectionSize;IfcPositiveLengthMeasure;InletConnectionSize;IfcPositiveLengthMeasure;CoverLength;IfcPositiveLengthMeasure;CoverWidth;IfcPositiveLengthMeasure Pset_WasteTerminalTypeFloorWaste;NominalBodyLength;IfcPositiveLengthMeasure;NominalBodyWidth;IfcPositiveLengthMeasure;NominalBodyDepth;IfcPositiveLengthMeasure;OutletConnectionSize;IfcPositiveLengthMeasure;CoverLength;IfcPositiveLengthMeasure;CoverWidth;IfcPositiveLengthMeasure Pset_WasteTerminalTypeGullySump;NominalSumpLength;IfcPositiveLengthMeasure;NominalSumpWidth;IfcPositiveLengthMeasure;NominalSumpDepth;IfcPositiveLengthMeasure;OutletConnectionSize;IfcPositiveLengthMeasure;InletConnectionSize;IfcPositiveLengthMeasure;CoverLength;IfcPositiveLengthMeasure;CoverWidth;IfcPositiveLengthMeasure Pset_WasteTerminalTypeGullyTrap;NominalBodyLength;IfcPositiveLengthMeasure;NominalBodyWidth;IfcPositiveLengthMeasure;NominalBodyDepth;IfcPositiveLengthMeasure;HasStrainer;IfcBoolean;OutletConnectionSize;IfcPositiveLengthMeasure;InletConnectionSize;IfcPositiveLengthMeasure;CoverLength;IfcPositiveLengthMeasure;CoverWidth;IfcPositiveLengthMeasure Pset_WasteTerminalTypeRoofDrain;NominalBodyLength;IfcPositiveLengthMeasure;NominalBodyWidth;IfcPositiveLengthMeasure;NominalBodyDepth;IfcPositiveLengthMeasure;OutletConnectionSize;IfcPositiveLengthMeasure;CoverLength;IfcPositiveLengthMeasure;CoverWidth;IfcPositiveLengthMeasure -Pset_WasteTerminalTypeWasteDisposalUnit;DrainConnectionSize;IfcPositiveLengthMeasure;OutletConnectionSize;IfcPositiveLengthMeasure;NominalDepth;IfcPositiveLengthMeasure +Pset_WasteTerminalTypeWasteDisposalUnit;DrainConnectionSize;IfcPositiveLengthMeasure;OutletConnectionSize;IfcPositiveLengthMeasure;NominalDepth;IfcNonNegativeLengthMeasure Pset_WasteTerminalTypeWasteTrap;OutletConnectionSize;IfcPositiveLengthMeasure;InletConnectionSize;IfcPositiveLengthMeasure +Pset_WaterStratumCommon;AnnualRange;IfcPositiveLengthMeasure;AnnualTrend;IfcLengthMeasure;IsFreshwater;IfcLogical;SeicheRange;IfcPositiveLengthMeasure;TidalRange;IfcPositiveLengthMeasure;WaveRange;IfcPositiveLengthMeasure +Pset_Width;NominalWidth;IfcNonNegativeLengthMeasure Pset_WindowCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;FireRating;IfcLabel;SecurityRating;IfcLabel;IsExternal;IfcBoolean;Infiltration;IfcVolumetricFlowRateMeasure;ThermalTransmittance;IfcThermalTransmittanceMeasure;GlazingAreaFraction;IfcPositiveRatioMeasure;HasSillExternal;IfcBoolean;HasSillInternal;IfcBoolean;HasDrive;IfcBoolean;SmokeStop;IfcBoolean;FireExit;IfcBoolean;WaterTightnessRating;IfcLabel;MechanicalLoadRating;IfcLabel;WindLoadRating;IfcLabel +Pset_WindowLiningProperties;LiningDepth;IfcPositiveLengthMeasure;LiningThickness;IfcNonNegativeLengthMeasure;TransomThickness;IfcNonNegativeLengthMeasure;MullionThickness;IfcNonNegativeLengthMeasure;FirstTransomOffset;IfcNormalisedRatioMeasure;SecondTransomOffset;IfcNormalisedRatioMeasure;FirstMullionOffset;IfcNormalisedRatioMeasure;SecondMullionOffset;IfcNormalisedRatioMeasure;LiningOffset;IfcLengthMeasure;LiningToPanelOffsetX;IfcLengthMeasure;LiningToPanelOffsetY;IfcLengthMeasure +Pset_WindowPanelProperties;FrameDepth;IfcPositiveLengthMeasure;FrameThickness;IfcPositiveLengthMeasure +Pset_WiredCommunicationPortCommon;MaximumTransferRate;IfcIntegerCountRateMeasure Pset_WorkControlCommon;WorkStartTime;IfcTime;WorkFinishTime;IfcTime;WorkDayDuration;IfcDuration;WorkWeekDuration;IfcDuration;WorkMonthDuration;IfcDuration Pset_ZoneCommon;Reference;IfcIdentifier;IsExternal;IfcBoolean;GrossPlannedArea;IfcAreaMeasure;NetPlannedArea;IfcAreaMeasure;PubliclyAccessible;IfcBoolean;HandicapAccessible;IfcBoolean diff --git a/src/Mod/BIM/Presets/qto_definitions.csv b/src/Mod/BIM/Presets/qto_definitions.csv new file mode 100644 index 000000000000..4613e8421f9b --- /dev/null +++ b/src/Mod/BIM/Presets/qto_definitions.csv @@ -0,0 +1,115 @@ +Qto_ActuatorBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_AirTerminalBaseQuantities;GrossWeight;IfcQuantityWeight;Perimeter;IfcQuantityLength;TotalSurfaceArea;IfcQuantityArea +Qto_AirTerminalBoxTypeBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_AirToAirHeatRecoveryBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_AlarmBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_ArealStratumBaseQuantities;Area;IfcQuantityArea;Length;IfcQuantityLength;PlanLength;IfcQuantityLength +Qto_AudioVisualApplianceBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_BeamBaseQuantities;Length;IfcQuantityLength;CrossSectionArea;IfcQuantityArea;OuterSurfaceArea;IfcQuantityArea;GrossSurfaceArea;IfcQuantityArea;NetSurfaceArea;IfcQuantityArea;GrossVolume;IfcQuantityVolume;NetVolume;IfcQuantityVolume;GrossWeight;IfcQuantityWeight;NetWeight;IfcQuantityWeight +Qto_BodyGeometryValidation;GrossSurfaceArea;IfcQuantityArea;NetSurfaceArea;IfcQuantityArea;GrossVolume;IfcQuantityVolume;NetVolume;IfcQuantityVolume;SurfaceGenusBeforeFeatures;IfcQuantityCount;SurfaceGenusAfterFeatures;IfcQuantityCount +Qto_BoilerBaseQuantities;GrossWeight;IfcQuantityWeight;NetWeight;IfcQuantityWeight;TotalSurfaceArea;IfcQuantityArea +Qto_BuildingBaseQuantities;Height;IfcQuantityLength;EavesHeight;IfcQuantityLength;FootPrintArea;IfcQuantityArea;GrossFloorArea;IfcQuantityArea;NetFloorArea;IfcQuantityArea;GrossVolume;IfcQuantityVolume;NetVolume;IfcQuantityVolume +Qto_BuildingElementProxyQuantities;NetSurfaceArea;IfcQuantityArea;NetVolume;IfcQuantityVolume +Qto_BuildingStoreyBaseQuantities;GrossHeight;IfcQuantityLength;NetHeight;IfcQuantityLength;GrossPerimeter;IfcQuantityLength;GrossFloorArea;IfcQuantityArea;NetFloorArea;IfcQuantityArea;GrossVolume;IfcQuantityVolume;NetVolume;IfcQuantityVolume +Qto_BurnerBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_CableCarrierFittingBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_CableCarrierSegmentBaseQuantities;GrossWeight;IfcQuantityWeight;Length;IfcQuantityLength;CrossSectionArea;IfcQuantityArea;OuterSurfaceArea;IfcQuantityArea +Qto_CableFittingBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_CableSegmentBaseQuantities;GrossWeight;IfcQuantityWeight;Length;IfcQuantityLength;CrossSectionArea;IfcQuantityArea;OuterSurfaceArea;IfcQuantityArea +Qto_ChillerBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_ChimneyBaseQuantities;Length;IfcQuantityLength +Qto_CoilBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_ColumnBaseQuantities;Length;IfcQuantityLength;CrossSectionArea;IfcQuantityArea;OuterSurfaceArea;IfcQuantityArea;GrossSurfaceArea;IfcQuantityArea;NetSurfaceArea;IfcQuantityArea;GrossVolume;IfcQuantityVolume;NetVolume;IfcQuantityVolume;GrossWeight;IfcQuantityWeight;NetWeight;IfcQuantityWeight +Qto_CommunicationsApplianceBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_CompressorBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_CondenserBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_ConduitSegmentBaseQuantities;InnerDiameter;IfcQuantityLength;OuterDiameter;IfcQuantityLength +Qto_ConstructionEquipmentResourceBaseQuantities;UsageTime;IfcQuantityTime;OperatingTime;IfcQuantityTime +Qto_ConstructionMaterialResourceBaseQuantities;GrossVolume;IfcQuantityVolume;NetVolume;IfcQuantityVolume;GrossWeight;IfcQuantityWeight;NetWeight;IfcQuantityWeight +Qto_ControllerBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_CooledBeamBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_CoolingTowerBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_CourseBaseQuantities;Length;IfcQuantityLength;Width;IfcQuantityLength;Thickness;IfcQuantityLength;Volume;IfcQuantityVolume;GrossVolume;IfcQuantityVolume;Weight;IfcQuantityWeight +Qto_CoveringBaseQuantities;Width;IfcQuantityLength;GrossArea;IfcQuantityArea;NetArea;IfcQuantityArea +Qto_CurtainWallQuantities;Length;IfcQuantityLength;Height;IfcQuantityLength;Width;IfcQuantityLength;GrossSideArea;IfcQuantityArea;NetSideArea;IfcQuantityArea +Qto_DamperBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_DistributionBoardBaseQuantities;GrossWeight;IfcQuantityWeight;NumberOfCircuits;IfcQuantityCount +Qto_DistributionChamberElementBaseQuantities;GrossSurfaceArea;IfcQuantityArea;NetSurfaceArea;IfcQuantityArea;GrossVolume;IfcQuantityVolume;NetVolume;IfcQuantityVolume;Depth;IfcQuantityLength +Qto_DoorBaseQuantities;Width;IfcQuantityLength;Height;IfcQuantityLength;Perimeter;IfcQuantityLength;Area;IfcQuantityArea +Qto_DuctFittingBaseQuantities;Length;IfcQuantityLength;GrossCrossSectionArea;IfcQuantityArea;NetCrossSectionArea;IfcQuantityArea;OuterSurfaceArea;IfcQuantityArea;GrossWeight;IfcQuantityWeight +Qto_DuctSegmentBaseQuantities;Length;IfcQuantityLength;GrossCrossSectionArea;IfcQuantityArea;NetCrossSectionArea;IfcQuantityArea;OuterSurfaceArea;IfcQuantityArea;GrossWeight;IfcQuantityWeight +Qto_DuctSilencerBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_EarthworksCutBaseQuantities;Length;IfcQuantityLength;Width;IfcQuantityLength;Depth;IfcQuantityLength;UndisturbedVolume;IfcQuantityVolume;LooseVolume;IfcQuantityVolume;Weight;IfcQuantityWeight +Qto_EarthworksFillBaseQuantities;Length;IfcQuantityLength;Width;IfcQuantityLength;Depth;IfcQuantityLength;CompactedVolume;IfcQuantityVolume;LooseVolume;IfcQuantityVolume +Qto_ElectricApplianceBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_ElectricFlowStorageDeviceBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_ElectricGeneratorBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_ElectricMotorBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_ElectricTimeControlBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_EvaporativeCoolerBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_EvaporatorBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_FacilityPartBaseQuantities;Length;IfcQuantityLength;Width;IfcQuantityLength;Height;IfcQuantityLength;Area;IfcQuantityArea;Volume;IfcQuantityVolume +Qto_FanBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_FilterBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_FireSuppressionTerminalBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_FlowInstrumentBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_FlowMeterBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_FootingBaseQuantities;Length;IfcQuantityLength;Width;IfcQuantityLength;Height;IfcQuantityLength;CrossSectionArea;IfcQuantityArea;OuterSurfaceArea;IfcQuantityArea;GrossSurfaceArea;IfcQuantityArea;GrossVolume;IfcQuantityVolume;NetVolume;IfcQuantityVolume;GrossWeight;IfcQuantityWeight;NetWeight;IfcQuantityWeight +Qto_HeatExchangerBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_HumidifierBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_ImpactProtectionDeviceBaseQuantities;Weight;IfcQuantityWeight +Qto_InterceptorBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_JunctionBoxBaseQuantities;GrossWeight;IfcQuantityWeight;NumberOfGangs;IfcQuantityCount;Length;IfcQuantityLength;Width;IfcQuantityLength;Height;IfcQuantityLength +Qto_KerbBaseQuantities;Length;IfcQuantityLength;Width;IfcQuantityLength;Height;IfcQuantityLength;Depth;IfcQuantityLength;Volume;IfcQuantityVolume;Weight;IfcQuantityWeight +Qto_LaborResourceBaseQuantities;StandardWork;IfcQuantityTime;OvertimeWork;IfcQuantityTime +Qto_LampBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_LightFixtureBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_LinearStratumBaseQuantities;Diameter;IfcQuantityLength;Length;IfcQuantityLength +Qto_MarineFacilityBaseQuantities;Length;IfcQuantityLength;Width;IfcQuantityLength;Height;IfcQuantityLength;Area;IfcQuantityArea;Volume;IfcQuantityVolume +Qto_MemberBaseQuantities;Length;IfcQuantityLength;CrossSectionArea;IfcQuantityArea;OuterSurfaceArea;IfcQuantityArea;GrossSurfaceArea;IfcQuantityArea;NetSurfaceArea;IfcQuantityArea;GrossVolume;IfcQuantityVolume;NetVolume;IfcQuantityVolume;GrossWeight;IfcQuantityWeight;NetWeight;IfcQuantityWeight +Qto_MotorConnectionBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_OpeningElementBaseQuantities;Width;IfcQuantityLength;Height;IfcQuantityLength;Depth;IfcQuantityLength;Area;IfcQuantityArea;Volume;IfcQuantityVolume +Qto_OutletBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_PavementBaseQuantities;Length;IfcQuantityLength;Width;IfcQuantityLength;Depth;IfcQuantityLength;GrossArea;IfcQuantityArea;NetArea;IfcQuantityArea;GrossVolume;IfcQuantityVolume;NetVolume;IfcQuantityVolume +Qto_PictorialSignQuantities;Area;IfcQuantityArea;SignArea;IfcQuantityArea +Qto_PileBaseQuantities;Length;IfcQuantityLength;CrossSectionArea;IfcQuantityArea;OuterSurfaceArea;IfcQuantityArea;GrossSurfaceArea;IfcQuantityArea;GrossVolume;IfcQuantityVolume;NetVolume;IfcQuantityVolume;GrossWeight;IfcQuantityWeight;NetWeight;IfcQuantityWeight +Qto_PipeFittingBaseQuantities;Length;IfcQuantityLength;GrossCrossSectionArea;IfcQuantityArea;NetCrossSectionArea;IfcQuantityArea;OuterSurfaceArea;IfcQuantityArea;GrossWeight;IfcQuantityWeight;NetWeight;IfcQuantityWeight +Qto_PipeSegmentBaseQuantities;Length;IfcQuantityLength;GrossCrossSectionArea;IfcQuantityArea;NetCrossSectionArea;IfcQuantityArea;OuterSurfaceArea;IfcQuantityArea;GrossWeight;IfcQuantityWeight;NetWeight;IfcQuantityWeight;FootPrintArea;IfcQuantityArea +Qto_PlateBaseQuantities;Width;IfcQuantityLength;Perimeter;IfcQuantityLength;GrossArea;IfcQuantityArea;NetArea;IfcQuantityArea;GrossVolume;IfcQuantityVolume;NetVolume;IfcQuantityVolume;GrossWeight;IfcQuantityWeight;NetWeight;IfcQuantityWeight +Qto_ProjectionElementBaseQuantities;Area;IfcQuantityArea;Volume;IfcQuantityVolume +Qto_ProtectiveDeviceBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_ProtectiveDeviceTrippingUnitBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_PumpBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_RailBaseQuantities;Length;IfcQuantityLength;Volume;IfcQuantityVolume;Weight;IfcQuantityWeight +Qto_RailingBaseQuantities;Length;IfcQuantityLength +Qto_RampFlightBaseQuantities;Length;IfcQuantityLength;Width;IfcQuantityLength;GrossArea;IfcQuantityArea;NetArea;IfcQuantityArea;GrossVolume;IfcQuantityVolume;NetVolume;IfcQuantityVolume +Qto_ReinforcedSoilBaseQuantities;Length;IfcQuantityLength;Width;IfcQuantityLength;Depth;IfcQuantityLength;Area;IfcQuantityArea;Volume;IfcQuantityVolume +Qto_ReinforcingElementBaseQuantities;Count;IfcQuantityCount;Length;IfcQuantityLength;Weight;IfcQuantityWeight +Qto_RoofBaseQuantities;GrossArea;IfcQuantityArea;NetArea;IfcQuantityArea;ProjectedArea;IfcQuantityArea +Qto_SanitaryTerminalBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_SensorBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_SignBaseQuantities;Height;IfcQuantityLength;Width;IfcQuantityLength;Thickness;IfcQuantityLength;Weight;IfcQuantityWeight +Qto_SignalBaseQuantities;Weight;IfcQuantityWeight +Qto_SiteBaseQuantities;GrossPerimeter;IfcQuantityLength;GrossArea;IfcQuantityArea +Qto_SlabBaseQuantities;Width;IfcQuantityLength;Length;IfcQuantityLength;Depth;IfcQuantityLength;Perimeter;IfcQuantityLength;GrossArea;IfcQuantityArea;NetArea;IfcQuantityArea;GrossVolume;IfcQuantityVolume;NetVolume;IfcQuantityVolume;GrossWeight;IfcQuantityWeight;NetWeight;IfcQuantityWeight +Qto_SleeperBaseQuantities;Length;IfcQuantityLength;Width;IfcQuantityLength;Height;IfcQuantityLength +Qto_SolarDeviceBaseQuantities;GrossWeight;IfcQuantityWeight;GrossArea;IfcQuantityArea +Qto_SpaceBaseQuantities;Height;IfcQuantityLength;FinishCeilingHeight;IfcQuantityLength;FinishFloorHeight;IfcQuantityLength;GrossPerimeter;IfcQuantityLength;NetPerimeter;IfcQuantityLength;GrossFloorArea;IfcQuantityArea;NetFloorArea;IfcQuantityArea;GrossWallArea;IfcQuantityArea;NetWallArea;IfcQuantityArea;GrossCeilingArea;IfcQuantityArea;NetCeilingArea;IfcQuantityArea;GrossVolume;IfcQuantityVolume;NetVolume;IfcQuantityVolume +Qto_SpaceHeaterBaseQuantities;Length;IfcQuantityLength;GrossWeight;IfcQuantityWeight;NetWeight;IfcQuantityWeight +Qto_SpatialZoneBaseQuantities;Length;IfcQuantityLength;Width;IfcQuantityLength;Height;IfcQuantityLength +Qto_StackTerminalBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_StairFlightBaseQuantities;Length;IfcQuantityLength;GrossVolume;IfcQuantityVolume;NetVolume;IfcQuantityVolume +Qto_SurfaceFeatureBaseQuantities;Area;IfcQuantityArea;Length;IfcQuantityLength +Qto_SwitchingDeviceBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_TankBaseQuantities;GrossWeight;IfcQuantityWeight;NetWeight;IfcQuantityWeight;TotalSurfaceArea;IfcQuantityArea +Qto_TransformerBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_TubeBundleBaseQuantities;GrossWeight;IfcQuantityWeight;NetWeight;IfcQuantityWeight +Qto_UnitaryControlElementBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_UnitaryEquipmentBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_ValveBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_VehicleBaseQuantities;Length;IfcQuantityLength;Width;IfcQuantityLength;Height;IfcQuantityLength +Qto_VibrationIsolatorBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_VolumetricStratumBaseQuantities;Area;IfcQuantityArea;Mass;IfcQuantityWeight;PlanArea;IfcQuantityArea;Volume;IfcQuantityVolume +Qto_WallBaseQuantities;Length;IfcQuantityLength;Width;IfcQuantityLength;Height;IfcQuantityLength;GrossFootPrintArea;IfcQuantityArea;NetFootPrintArea;IfcQuantityArea;GrossSideArea;IfcQuantityArea;NetSideArea;IfcQuantityArea;GrossVolume;IfcQuantityVolume;NetVolume;IfcQuantityVolume;GrossWeight;IfcQuantityWeight;NetWeight;IfcQuantityWeight +Qto_WasteTerminalBaseQuantities;GrossWeight;IfcQuantityWeight +Qto_WindowBaseQuantities;Width;IfcQuantityLength;Height;IfcQuantityLength;Perimeter;IfcQuantityLength;Area;IfcQuantityArea diff --git a/src/Mod/BIM/Resources/Arch.qrc b/src/Mod/BIM/Resources/Arch.qrc index 360eb6d3ca96..ec428c2d43e8 100644 --- a/src/Mod/BIM/Resources/Arch.qrc +++ b/src/Mod/BIM/Resources/Arch.qrc @@ -81,6 +81,7 @@ icons/Arch_ToggleSubs.svg icons/Arch_Truss.svg icons/Arch_Truss_Tree.svg + icons/Arch_View_Cut.svg icons/Arch_Wall.svg icons/Arch_Wall_Clone.svg icons/Arch_Wall_Tree.svg @@ -89,6 +90,7 @@ icons/Arch_Window_Clone.svg icons/Arch_Window_Tree.svg icons/BIMWorkbench.svg + icons/BIM_ArchView.svg icons/BIM_Background.svg icons/BIM_Beam.svg icons/BIM_Box.svg @@ -108,6 +110,7 @@ icons/BIM_IfcProperties.svg icons/BIM_IfcQuantities.svg icons/BIM_ImagePlane.svg + icons/BIM_InsertView.svg icons/BIM_Layers.svg icons/BIM_Leader.svg icons/BIM_Levels.svg @@ -115,6 +118,7 @@ icons/BIM_Material.svg icons/BIM_MoveView.svg icons/BIM_Nudge.svg + icons/BIM_PageDefault.svg icons/BIM_Phases.svg icons/BIM_Preflight.svg icons/BIM_Project.svg @@ -142,8 +146,6 @@ icons/Tree_Part.svg icons/banner.png icons/preferences-bim.svg - icons/techdraw-ArchView.svg - icons/techdraw-PageDefault.svg icons/warning.svg icons/IFC/IfcBeam.svg icons/IFC/IfcBuilding.svg @@ -266,6 +268,7 @@ ui/preferences-dae.ui ui/preferences-ifc-export.ui ui/preferences-ifc.ui + ui/preferences-sh3d-import.ui ui/preferencesNativeIFC.ui diff --git a/src/Mod/BIM/Resources/icons/Arch_View_Cut.svg b/src/Mod/BIM/Resources/icons/Arch_View_Cut.svg new file mode 100644 index 000000000000..fe4747ae94a8 --- /dev/null +++ b/src/Mod/BIM/Resources/icons/Arch_View_Cut.svg @@ -0,0 +1,476 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + [wmayer] + + + Arch_Floor + 2011-10-10 + https://www.freecad.org/wiki/index.php?title=Artwork + + + FreeCAD + + + FreeCAD/src/Mod/Arch/Resources/icons/Arch_ + + + FreeCAD LGPL2+ + + + https://www.gnu.org/copyleft/lesser.html + + + [agryson] Alexander Gryson + + + + + + + + + + + + + diff --git a/src/Mod/BIM/Resources/icons/techdraw-ArchView.svg b/src/Mod/BIM/Resources/icons/BIM_ArchView.svg similarity index 100% rename from src/Mod/BIM/Resources/icons/techdraw-ArchView.svg rename to src/Mod/BIM/Resources/icons/BIM_ArchView.svg diff --git a/src/Mod/BIM/Resources/icons/BIM_InsertView.svg b/src/Mod/BIM/Resources/icons/BIM_InsertView.svg new file mode 100644 index 000000000000..c923ec21be3b --- /dev/null +++ b/src/Mod/BIM/Resources/icons/BIM_InsertView.svg @@ -0,0 +1,151 @@ + + + + + + + + + + + + + + + + image/svg+xml + + https://www.freecad.org/wiki/index.php?title=Artwork + + + FreeCAD + + + + + FreeCAD LGPL2+ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/Mod/BIM/Resources/icons/techdraw-PageDefault.svg b/src/Mod/BIM/Resources/icons/BIM_PageDefault.svg similarity index 100% rename from src/Mod/BIM/Resources/icons/techdraw-PageDefault.svg rename to src/Mod/BIM/Resources/icons/BIM_PageDefault.svg diff --git a/src/Mod/BIM/Resources/ui/ArchSchedule.ui b/src/Mod/BIM/Resources/ui/ArchSchedule.ui index a55d9c88f8d7..d915300fc41f 100644 --- a/src/Mod/BIM/Resources/ui/ArchSchedule.ui +++ b/src/Mod/BIM/Resources/ui/ArchSchedule.ui @@ -6,8 +6,8 @@ 0 0 - 453 - 364 + 725 + 529 @@ -68,7 +68,13 @@ Property - The property to retrieve from each object.Can be 'Count' to count the objects, or property names like 'Length' or 'Shape.Volume' to retrieve a certain property. + The property to retrieve from each object.Can be 'Count' +to count the objects, or property names like 'Length' or +'Shape.Volume' to retrieve a certain property. + +When used with native IFC objects, this can be used to +retrieve any attribute or custom properties of the elements +retrieved. @@ -87,7 +93,15 @@ An optional semicolon (;) separated list of object names (internal names, not labels), to be considered by this operation. If the list contains groups, children will be added. -Leave blank to use all objects from the document + +Leave blank to use all objects from the document. + +If the document is an IFC project, all IFC entities of the +document will be used, no matter if they are expanded +in FreeCAD or not. + +Use the name of the IFC project to get all the IFC entities +of that project, no matter if they are expanded or not. @@ -95,7 +109,11 @@ Leave blank to use all objects from the document Filter - An optional semicolon (;) separated list of property:value filters. Prepend ! to a property name to invert the effect of the filter (exclude objects that match the filter). Objects whose property contains the value will be matched. Examples of valid filters (everything is case-insensitive): Name:Wall - Will only consider objects with 'wall' in their name (internal name); !Name:Wall - Will only consider objects which DON'T have 'wall' in their name (internal name); Description:Win - Will only consider objects with 'win' in their description; !Label:Win - Will only consider objects which DO NOT have 'win' in their label; IfcType:Wall - Will only consider objects which Ifc Type is 'Wall'; !Tag:Wall - Will only consider objects which tag is NOT 'Wall'. If you leave this field empty, no filtering is applied + An optional semicolon (;) separated list of property:value filters. Prepend ! to a property name to invert the effect of the filter (exclude objects that match the filter). Objects whose property contains the value will be matched. + +Examples of valid filters (everything is case-insensitive): Name:Wall - Will only consider objects with 'wall' in their name (internal name); !Name:Wall - Will only consider objects which DON'T have 'wall' in their name (internal name); Description:Win - Will only consider objects with 'win' in their description; !Label:Win - Will only consider objects which DO NOT have 'win' in their label; IfcType:Wall - Will only consider objects which Ifc Type is 'Wall'; !Tag:Wall - Will only consider objects which tag is NOT 'Wall'. If you leave this field empty, no filtering is applied + +When dealing with native IFC objects, you can use FreeCAD properties name, ex: 'Class:IfcWall' or any other IFC attribute (ex. 'IsTypedBy:#455'). If the 'Objects' column has been set to an IFC project or document, all the IFC entities of that project will be considered. diff --git a/src/Mod/BIM/Resources/ui/dialogConvertDocument.ui b/src/Mod/BIM/Resources/ui/dialogConvertDocument.ui index 978a5e047fb8..ba3e083a58d4 100644 --- a/src/Mod/BIM/Resources/ui/dialogConvertDocument.ui +++ b/src/Mod/BIM/Resources/ui/dialogConvertDocument.ui @@ -37,7 +37,7 @@ - If this is checked, you won't be asked again when creating a new FreeCAD document, + If this is checked, you won't be asked again when creating a new FreeCAD document, and that document won't be turned into an IFC document automatically. You can still turn a FreeCAD document into an IFC document manually, using Utils -> Make IFC project diff --git a/src/Mod/BIM/Resources/ui/dialogIfcQuantities.ui b/src/Mod/BIM/Resources/ui/dialogIfcQuantities.ui index 508df46c6f1f..d41cb08ba98b 100644 --- a/src/Mod/BIM/Resources/ui/dialogIfcQuantities.ui +++ b/src/Mod/BIM/Resources/ui/dialogIfcQuantities.ui @@ -6,8 +6,8 @@ 0 0 - 852 - 471 + 680 + 512 @@ -40,6 +40,16 @@ + + + + + + + Apply + + + @@ -53,11 +63,26 @@ + + + + Refresh + + + + .. + + + Select all + + + .. + diff --git a/src/Mod/BIM/Resources/ui/dialogViews.ui b/src/Mod/BIM/Resources/ui/dialogViews.ui index 1fc92a372c3e..fca2e6a220ad 100644 --- a/src/Mod/BIM/Resources/ui/dialogViews.ui +++ b/src/Mod/BIM/Resources/ui/dialogViews.ui @@ -6,8 +6,8 @@ 0 0 - 340 - 485 + 322 + 502 @@ -70,6 +70,16 @@ + + + false + + + + 2D Views + + + diff --git a/src/Mod/BIM/Resources/ui/dialogWelcome.ui b/src/Mod/BIM/Resources/ui/dialogWelcome.ui index 043c0eaa51d0..5229afc4eb11 100644 --- a/src/Mod/BIM/Resources/ui/dialogWelcome.ui +++ b/src/Mod/BIM/Resources/ui/dialogWelcome.ui @@ -7,7 +7,7 @@ 0 0 412 - 789 + 602 @@ -46,87 +46,106 @@ - - - - 16 - - - - Welcome to the BIM workbench! - - - - - - - <html><head/><body><p>This appears to be the first time that you are using the BIM workbench. If you press OK, the next screen will propose you to set a couple of typical FreeCAD options that are suitable for BIM work. You can change these options anytime later under menu <span style=" font-weight:600;">Manage -&gt; BIM Setup...</span></p></body></html> - - - true - - - - - - - - 16 - - - - How to get started? - - - - - - - FreeCAD is a complex application. If this is your first contact with FreeCAD, or you have never worked with 3D or BIM before, you might want to take our <a href="https://wiki.freecad.org/BIM_ingame_tutorial">BIM tutorial</a> first (Also available under menu <span style=" font-weight:600;">Help -&gt; BIM Tutorial</span>). - - - true - - - - - - - The BIM workbench also has a <a href="https://wiki.freecad.org/BIM_Workbench">complete documentation</a> available under the Help menu. The "what's this?" button will also open the help page of any tool from the toolbars. - - - true - - - - - - - A good way to start building a BIM model is by setting up basic characteristics of your project, under menu <span style=" font-weight:600;">Manage -&gt; Project setup</span>. You can also directly configure different floor plans for your project, under menu <span style=" font-weight:600;">Manage -&gt; Levels.</span> - - - true - - - - - - - There is no mandatory behaviour here though, and you can also start creating walls and columns directly, and care about organizing things in levels later. - - - true - - - - - - - <html><head/><body><p>You might also want to start from an existing floor plan or 3D model made in another application. Under menu <span style=" font-weight:600;">File -&gt; Import</span>, you will find a wide range of file formats that can be imported into FreeCAD.</p></body></html> - - + + true + + + + 0 + 0 + 382 + 598 + + + + + + + + 16 + + + + Welcome to the BIM workbench! + + + + + + + <html><head/><body><p>This appears to be the first time that you are using the BIM workbench. If you press OK, the next screen will propose you to set a couple of typical FreeCAD options that are suitable for BIM work. You can change these options anytime later under menu <span style=" font-weight:600;">Manage -&gt; BIM Setup...</span></p></body></html> + + + true + + + + + + + + 16 + + + + How to get started? + + + + + + + FreeCAD is a complex application. If this is your first contact with FreeCAD, or you have never worked with 3D or BIM before, you might want to take our <a href="https://wiki.freecad.org/BIM_ingame_tutorial">BIM tutorial</a> first (Also available under menu <span style=" font-weight:600;">Help -&gt; BIM Tutorial</span>). + + + true + + + + + + + The BIM workbench also has a <a href="https://wiki.freecad.org/BIM_Workbench">complete documentation</a> available under the Help menu. The "what's this?" button will also open the help page of any tool from the toolbars. + + + true + + + + + + + A good way to start building a BIM model is by setting up basic characteristics of your project, under menu <span style=" font-weight:600;">Manage -&gt; Project setup</span>. You can also directly configure different floor plans for your project, under menu <span style=" font-weight:600;">Manage -&gt; Levels.</span> + + + true + + + + + + + There is no mandatory behaviour here though, and you can also start creating walls and columns directly, and care about organizing things in levels later. + + + true + + + + + + + <html><head/><body><p>You might also want to start from an existing floor plan or 3D model made in another application. Under menu <span style=" font-weight:600;">File -&gt; Import</span>, you will find a wide range of file formats that can be imported into FreeCAD.</p></body></html> + + + true + + + + + diff --git a/src/Mod/BIM/Resources/ui/preferences-archdefaults.ui b/src/Mod/BIM/Resources/ui/preferences-archdefaults.ui index 9f887b0185c4..0e6ff50655be 100644 --- a/src/Mod/BIM/Resources/ui/preferences-archdefaults.ui +++ b/src/Mod/BIM/Resources/ui/preferences-archdefaults.ui @@ -7,7 +7,7 @@ 0 0 522 - 851 + 892 @@ -49,6 +49,12 @@ Qt::Horizontal + + + 0 + 0 + + @@ -302,6 +308,13 @@ Other + + + + Rebar offset + + + @@ -318,6 +331,32 @@ + + + + Stair length + + + + + + + mm + + + 0.000000000000000 + + + 1000.000000000000000 + + + StairsWidth + + + Mod/Arch + + + @@ -331,10 +370,10 @@ mm - 0.0 + 0.000000000000000 - 50.0 + 50.000000000000000 PipeDiameter @@ -344,20 +383,6 @@ - - - - Qt::Horizontal - - - - - - - Rebar diameter - - - @@ -370,10 +395,10 @@ mm - 0.0 + 0.000000000000000 - 6.0 + 6.000000000000000 RebarDiameter @@ -383,23 +408,16 @@ - - - - Rebar offset - - - mm - 0.0 + 0.000000000000000 - 30.0 + 30.000000000000000 RebarOffset @@ -409,55 +427,43 @@ - - - - Stair length - - - - - - - mm - - - 0.0 - - - 4500.0 + + + + 17 - StairsLength + StairsSteps Mod/Arch - - + + - Stair width + Number of stair steps - - - - mm - - - 0.0 - - - 1000.0 + + + + Qt::Horizontal - - StairsWidth + + + 0 + 0 + - - Mod/Arch + + + + + + Rebar diameter @@ -474,10 +480,10 @@ mm - 0.0 + 0.000000000000000 - 3000.0 + 3000.000000000000000 StairsHeight @@ -487,23 +493,45 @@ - - + + + + mm + + + 0.000000000000000 + + + 4500.000000000000000 + + + StairsLength + + + Mod/Arch + + + + + - Number of stair steps + Stair width - - - - 17 + + + + When clicking a view or level in the BIM views manager, this switches the background to plain color when activating a 2D view, and to gradient color when activating a level + + + Switch backgrounds - StairsSteps + BimViewsSwitchBackground - Mod/Arch + Mod/BIM @@ -515,6 +543,12 @@ Qt::Vertical + + + 0 + 0 + + @@ -523,14 +557,14 @@ qPixmapFromMimeSource - Gui::PrefCheckBox - QCheckBox -

Gui/PrefWidgets.h
+ Gui::QuantitySpinBox + QWidget +
Gui/QuantitySpinBox.h
- Gui::PrefComboBox - QComboBox -
Gui/PrefWidgets.h
+ Gui::ColorButton + QPushButton +
Gui/Widgets.h
Gui::PrefSpinBox @@ -538,23 +572,23 @@
Gui/PrefWidgets.h
- Gui::QuantitySpinBox - QWidget -
Gui/QuantitySpinBox.h
+ Gui::PrefColorButton + Gui::ColorButton +
Gui/PrefWidgets.h
- Gui::PrefUnitSpinBox - Gui::QuantitySpinBox + Gui::PrefCheckBox + QCheckBox
Gui/PrefWidgets.h
- Gui::ColorButton - QPushButton -
Gui/Widgets.h
+ Gui::PrefComboBox + QComboBox +
Gui/PrefWidgets.h
- Gui::PrefColorButton - Gui::ColorButton + Gui::PrefUnitSpinBox + Gui::QuantitySpinBox
Gui/PrefWidgets.h
diff --git a/src/Mod/BIM/Resources/ui/preferences-sh3d-import.ui b/src/Mod/BIM/Resources/ui/preferences-sh3d-import.ui new file mode 100644 index 000000000000..ffc9bcc6d30a --- /dev/null +++ b/src/Mod/BIM/Resources/ui/preferences-sh3d-import.ui @@ -0,0 +1,353 @@ + + + Gui::Dialog::DlgSettingsArch + + + + 0 + 0 + 555 + 729 + + + + SH3D import + + + + 6 + + + 9 + + + + + General options + + + + + + Show this dialog when importing + + + sh3dShowDialog + + + Mod/Arch + + + + + + + Shows verbose debug messages during import of SH3D files in the Report + view panel. Log level message must be allowed for this setting to have an effect. + + + Show debug messages + + + sh3dDebug + + + Mod/Arch + + + + + + + + + + Import options + + + + + + Whether to import the model's doors and windows + + + Doors and Windows + + + sh3dImportDoorsAndWindows + + + Mod/Arch + + + + + + + Whether to import the model's furnitures + + + Furnitures + + + sh3dImportFurnitures + + + Mod/Arch + + + + + + + Whether to create Arch::Equipment for each furniture defined in the model (NOTE: this can negatively impact the import process speed) + + + Create Arch::Equipment + + + sh3dCreateArchEquipment + + + Mod/Arch + + + + + + + Whether to join the different Arch::Wall together + + + Join Arch::Wall + + + sh3dJoinArchWall + + + Mod/Arch + + + + + + + Whether to import the model's lights. Note that you also need to import + the model's furnitures. + + + Lights (requires Render) + + + sh3dImportLights + + + Mod/Arch + + + + + + + Whether to import the model's cameras + + + Cameras (requires Render) + + + sh3dImportCameras + + + Mod/Arch + + + + + + + Merge imported element with existing FC object + + + Merge into existing document + + + sh3dMerge + + + Mod/Arch + + + + + + + + + Default Floor Color + + + sh3dDefaultFloorColor + + + + + + + + 0 + 0 + + + + This color might be used when a room does not define its own color. + + + + 150 + 169 + 186 + + + + sh3dDefaultFloorColor + + + Mod/Arch + + + + + + + + + + + Default Ceiling Color + + + sh3dDefaultCeilingColor + + + + + + + + 0 + 0 + + + + This color might be used when a room does not define its own color. + + + + 255 + 255 + 255 + + + + sh3dDefaultCeilingColor + + + Mod/Arch + + + + + + + + + Create a default Render project with the newly created Site + + + Create Render Project (requires Render) + + + sh3dCreateRenderProject + + + Mod/Arch + + + + + + + Fit view while importing. + + + Fit view while importing + + + sh3dFitView + + + Mod/Arch + + + + + + + Create a default IFC project with the newly created Site. + + + Create IFC Project + + + sh3dCreateIFCProject + + + Mod/Arch + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + qPixmapFromMimeSource + + + Gui::PrefSpinBox + QSpinBox +
Gui/PrefWidgets.h
+
+ + Gui::PrefCheckBox + QCheckBox +
Gui/PrefWidgets.h
+
+ + Gui::PrefComboBox + QComboBox +
Gui/PrefWidgets.h
+
+ + Gui::PrefLineEdit + QLineEdit +
Gui/PrefWidgets.h
+
+
+ + +
diff --git a/src/Mod/BIM/TestArch.py b/src/Mod/BIM/TestArch.py index 48ebc43a4e48..c937f7dc5048 100644 --- a/src/Mod/BIM/TestArch.py +++ b/src/Mod/BIM/TestArch.py @@ -32,6 +32,7 @@ import Draft import Part import Sketcher +import TechDraw from draftutils.messages import _msg @@ -758,6 +759,135 @@ def testBuildingPart(self): App.ActiveDocument.recompute() assert wall.Visibility + def testImportSH3D(self): + """Import a SweetHome 3D file + """ + operation = "importers.importSH3D" + _msg(" Test '{}'".format(operation)) + import BIM.importers.importSH3DHelper + importer = BIM.importers.importSH3DHelper.SH3DImporter(None) + importer.import_sh3d_from_string(SH3D_HOME) + assert App.ActiveDocument.Site + assert App.ActiveDocument.BuildingPart.Label == "Building" + assert App.ActiveDocument.BuildingPart001.Label == "Level" + assert App.ActiveDocument.Wall + + def testViewGeneration(self): + """Tests the whole TD view generation workflow""" + + operation = "View generation" + _msg(" Test '{}'".format(operation)) + + # Create a few objects + points = [App.Vector(0.0, 0.0, 0.0), App.Vector(2000.0, 0.0, 0.0)] + line = Draft.make_wire(points) + wall = Arch.makeWall(line, height=2000) + wpl = App.Placement(App.Vector(500,0,1500), App.Vector(1,0,0),-90) + win = Arch.makeWindowPreset('Fixed', width=1000.0, height=1000.0, h1=50.0, h2=50.0, h3=50.0, w1=100.0, w2=50.0, o1=0.0, o2=50.0, placement=wpl) + win.Hosts = [wall] + profile = Arch.makeProfile([169, 'HEA', 'HEA100', 'H', 100.0, 96.0, 5.0, 8.0]) + column = Arch.makeStructure(profile, height=2000.0) + column.Profile = "HEA100" + column.Placement.Base = App.Vector(500.0, 600.0, 0.0) + level = Arch.makeFloor() + level.addObjects([wall, column]) + App.ActiveDocument.recompute() + + # Create a drawing view + section = Arch.makeSectionPlane(level) + drawing = Arch.make2DDrawing() + view = Draft.make_shape2dview(section) + cut = Draft.make_shape2dview(section) + cut.InPlace = False + cut.ProjectionMode = "Cutfaces" + drawing.addObjects([view, cut]) + App.ActiveDocument.recompute() + + # Create a TD page + tpath = os.path.join(App.getResourceDir(),"Mod","TechDraw","Templates","A3_Landscape_blank.svg") + page = App.ActiveDocument.addObject("TechDraw::DrawPage", "Page") + template = App.ActiveDocument.addObject("TechDraw::DrawSVGTemplate", "Template") + template.Template = tpath + page.Template = template + view = App.ActiveDocument.addObject("TechDraw::DrawViewDraft", "DraftView") + view.Source = drawing + page.addView(view) + view.Scale = 1.0 + view.X = "20cm" + view.Y = "15cm" + App.ActiveDocument.recompute() + assert True + def tearDown(self): App.closeDocument("ArchTest") pass + + +SH3D_HOME = """ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +""" diff --git a/src/Mod/BIM/bimcommands/BimClassification.py b/src/Mod/BIM/bimcommands/BimClassification.py index 36f42fe8c3a1..490d298888e5 100644 --- a/src/Mod/BIM/bimcommands/BimClassification.py +++ b/src/Mod/BIM/bimcommands/BimClassification.py @@ -58,6 +58,7 @@ def Activated(self): if not hasattr(self, "Classes"): self.Classes = {} self.isEditing = None + current = None # load the form and set the tree model up self.form = FreeCADGui.PySideUic.loadUi(":/ui/dialogClassification.ui") @@ -86,13 +87,22 @@ def Activated(self): # hide materials list if we are editing a particular object if len(FreeCADGui.Selection.getSelection()) == 1: self.isEditing = FreeCADGui.Selection.getSelection()[0] - if hasattr(self.isEditing, "StandardCode"): + pl = self.isEditing.PropertiesList + if ("StandardCode" in pl) or ("IfcClass" in pl): self.form.groupMaterials.hide() self.form.buttonApply.hide() self.form.buttonRename.hide() self.form.setWindowTitle( translate("BIM", "Editing") + " " + self.isEditing.Label ) + if "IfcClass" in pl: + # load existing class if needed + from nativeifc import ifc_classification + ifc_classification.show_classification(self.isEditing) + if "StandardCode" in pl: + current = self.isEditing.StandardCode + elif "Classification" in self.isEditing.PropertiesList: + current = self.isEditing.Classification # fill materials list self.objectslist = {} @@ -105,6 +115,9 @@ def Activated(self): else: self.objectslist[obj.Name] = obj.StandardCode self.labellist[obj.Name] = obj.Label + elif "Classification" in obj.PropertiesList: + self.objectslist[obj.Name] = obj.Classification + self.labellist[obj.Name] = obj.Label # fill objects list if not self.isEditing: @@ -129,37 +142,15 @@ def Activated(self): ) # connect signals - QtCore.QObject.connect( - self.form.comboSystem, - QtCore.SIGNAL("currentIndexChanged(int)"), - self.updateClasses, - ) - QtCore.QObject.connect( - self.form.buttonApply, QtCore.SIGNAL("clicked()"), self.apply - ) - QtCore.QObject.connect( - self.form.buttonRename, QtCore.SIGNAL("clicked()"), self.rename - ) - QtCore.QObject.connect( - self.form.search, QtCore.SIGNAL("textEdited(QString)"), self.updateClasses - ) - QtCore.QObject.connect( - self.form.buttonBox, QtCore.SIGNAL("accepted()"), self.accept - ) - QtCore.QObject.connect( - self.form.groupMode, - QtCore.SIGNAL("currentIndexChanged(int)"), - self.updateObjects, - ) - QtCore.QObject.connect( - self.form.treeClass, - QtCore.SIGNAL("itemDoubleClicked(QTreeWidgetItem*,int)"), - self.apply, - ) - QtCore.QObject.connect(self.form.search, QtCore.SIGNAL("up()"), self.onUpArrow) - QtCore.QObject.connect( - self.form.search, QtCore.SIGNAL("down()"), self.onDownArrow - ) + self.form.comboSystem.currentIndexChanged.connect(self.updateClasses) + self.form.buttonApply.clicked.connect(self.apply) + self.form.buttonRename.clicked.connect(self.rename) + self.form.search.textEdited.connect(self.updateClasses) + self.form.buttonBox.accepted.connect(self.accept) + self.form.groupMode.currentIndexChanged.connect(self.updateObjects) + self.form.treeClass.itemDoubleClicked.connect(self.apply) + self.form.search.up.connect(self.onUpArrow) + self.form.search.down.connect(self.onDownArrow) # center the dialog over FreeCAD window mw = FreeCADGui.getMainWindow() @@ -170,6 +161,21 @@ def Activated(self): ) self.updateClasses() + + # select current classification + if current: + system, classification = current.split(" ", 1) + print("searching for",classification) + if system in self.Classes: + self.form.comboSystem.setCurrentText(system) + res = self.form.treeClass.findItems( + classification, + QtCore.Qt.MatchExactly|QtCore.Qt.MatchRecursive, + 0 + ) + if res: + self.form.treeClass.setCurrentItem(res[0]) + self.form.show() self.form.search.setFocus() @@ -579,13 +585,24 @@ def accept(self): if item.toolTip(0): obj = FreeCAD.ActiveDocument.getObject(item.toolTip(0)) if obj: - if code != obj.StandardCode: - if not changed: - FreeCAD.ActiveDocument.openTransaction( - "Change standard codes" - ) - changed = True - obj.StandardCode = code + if hasattr(obj, "StandardCode"): + if code != obj.StandardCode: + if not changed: + FreeCAD.ActiveDocument.openTransaction( + "Change standard codes" + ) + changed = True + obj.StandardCode = code + elif hasattr(obj, "IfcClass"): + if not "Classification" in obj.PropertiesList: + obj.addProperty("App::PropertyString", "Classification", "IFC") + if code != obj.Classification: + if not changed: + FreeCAD.ActiveDocument.openTransaction( + "Change standard codes" + ) + changed = True + obj.Classification = code if label != obj.Label: if not changed: FreeCAD.ActiveDocument.openTransaction( @@ -598,11 +615,17 @@ def accept(self): FreeCAD.ActiveDocument.recompute() else: code = self.form.treeClass.selectedItems()[0].text(0) - if "StandardCode" in self.isEditing.PropertiesList: + pl = self.isEditing.PropertiesList + if ("StandardCode" in pl) or ("IfcClass" in pl): FreeCAD.ActiveDocument.openTransaction("Change standard codes") if self.form.checkPrefix.isChecked(): code = self.form.comboSystem.currentText() + " " + code - self.isEditing.StandardCode = code + if "StandardCode" in pl: + self.isEditing.StandardCode = code + else: + if not "Classification" in self.isEditing.PropertiesList: + self.isEditing.addProperty("App::PropertyString", "Classification", "IFC") + self.isEditing.Classification = code if hasattr(self.isEditing.ViewObject, "Proxy") and hasattr( self.isEditing.ViewObject.Proxy, "setTaskValue" ): diff --git a/src/Mod/BIM/bimcommands/BimDrawingView.py b/src/Mod/BIM/bimcommands/BimDrawingView.py new file mode 100644 index 000000000000..637a68fd01e3 --- /dev/null +++ b/src/Mod/BIM/bimcommands/BimDrawingView.py @@ -0,0 +1,83 @@ +# *************************************************************************** +# * * +# * Copyright (c) 2024 Yorik van Havre * +# * * +# * This program is free software; you can redistribute it and/or modify * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * +# * the License, or (at your option) any later version. * +# * for detail see the LICENCE text file. * +# * * +# * This program is distributed in the hope that it will be useful, * +# * but WITHOUT ANY WARRANTY; without even the implied warranty of * +# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +# * GNU Library General Public License for more details. * +# * * +# * You should have received a copy of the GNU Library General Public * +# * License along with this program; if not, write to the Free Software * +# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +# * USA * +# * * +# *************************************************************************** + +"""The BIM DrawingView command""" + + +import os +import FreeCAD +import FreeCADGui +from bimcommands import BimBuildingPart + +QT_TRANSLATE_NOOP = FreeCAD.Qt.QT_TRANSLATE_NOOP +translate = FreeCAD.Qt.translate +PARAMS = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/BIM") + + +class BIM_DrawingView: + + """The command definition for the Drawing View command""" + + def GetResources(self): + + return {'Pixmap' : 'BIM_ArchView', + 'MenuText': QT_TRANSLATE_NOOP("BIM_DrawingView","2D Drawing"), + 'Accel': "V, D", + 'ToolTip': QT_TRANSLATE_NOOP("BIM_DrawingView","Creates a drawing container to contain elements of a 2D view")} + + def IsActive(self): + + v = hasattr(FreeCADGui.getMainWindow().getActiveWindow(), "getSceneGraph") + return v + + def Activated(self): + + import Draft + FreeCAD.ActiveDocument.openTransaction(translate("Arch","Create 2D View")) + FreeCADGui.addModule("Arch") + FreeCADGui.addModule("Draft") + FreeCADGui.addModule("WorkingPlane") + FreeCADGui.doCommand("obj = Arch.make2DDrawing()") + FreeCADGui.doCommand("Draft.autogroup(obj)") + s = FreeCADGui.Selection.getSelection() + if len(s) == 1: + s = s[0] + if Draft.getType(s) == "SectionPlane": + FreeCADGui.doCommand("vobj = Draft.make_shape2dview(FreeCAD.ActiveDocument."+s.Name+")") + FreeCADGui.doCommand("vobj.Label = \""+translate("BIM","Viewed lines")+"\"") + FreeCADGui.doCommand("vobj.InPlace = False") + FreeCADGui.doCommand("obj.addObject(vobj)") + bb = FreeCAD.BoundBox() + for so in s.Objects: + if hasattr(so, "Shape"): + bb.add(so.Shape.BoundBox) + if bb.isInside(s.Shape.CenterOfMass): + FreeCADGui.doCommand("cobj = Draft.make_shape2dview(FreeCAD.ActiveDocument."+s.Name+")") + FreeCADGui.doCommand("cobj.Label = \""+translate("BIM","Cut lines")+"\"") + FreeCADGui.doCommand("cobj.InPlace = False") + FreeCADGui.doCommand("cobj.ProjectionMode = \"Cutfaces\"") + FreeCADGui.doCommand("obj.addObject(cobj)") + FreeCAD.ActiveDocument.commitTransaction() + FreeCAD.ActiveDocument.recompute() + + +FreeCADGui.addCommand('BIM_DrawingView', BIM_DrawingView()) diff --git a/src/Mod/BIM/bimcommands/BimIfcQuantities.py b/src/Mod/BIM/bimcommands/BimIfcQuantities.py index 65c3a6030801..d36850be03c0 100644 --- a/src/Mod/BIM/bimcommands/BimIfcQuantities.py +++ b/src/Mod/BIM/bimcommands/BimIfcQuantities.py @@ -25,13 +25,15 @@ """This module contains FreeCAD commands for the BIM workbench""" import os +import csv import FreeCAD import FreeCADGui QT_TRANSLATE_NOOP = FreeCAD.Qt.QT_TRANSLATE_NOOP translate = FreeCAD.Qt.translate +PARAMS = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/BIM") -qprops = [ +QPROPS = [ "Length", "Width", "Height", @@ -39,8 +41,8 @@ "HorizontalArea", "VerticalArea", "Volume", -] # quantities columns -trqprops = [ +] +TR_QPROPS = [ translate("BIM", "Length"), translate("BIM", "Width"), translate("BIM", "Height"), @@ -49,6 +51,15 @@ translate("BIM", "Vertical Area"), translate("BIM", "Volume"), ] +QTO_TYPES = { + "IfcQuantityArea": "App::PropertyArea", + "IfcQuantityCount": "App::PropertyInteger", + "IfcQuantityLength": "App::PropertyLength", + "IfcQuantityNumber": "App::PropertyInteger", + "IfcQuantityTime": "App::PropertyTime", + "IfcQuantityVolume": "App::PropertyVolume", + "IfcQuantityWeight": "App::PropertyWeight", +} class BIM_IfcQuantities: @@ -74,6 +85,7 @@ def Activated(self): # build objects list self.objectslist = {} + self.ifcqtolist = {} for obj in FreeCAD.ActiveDocument.Objects: role = self.getRole(obj) if role: @@ -95,17 +107,22 @@ def Activated(self): # load the form and set the tree model up self.form = FreeCADGui.PySideUic.loadUi(":/ui/dialogIfcQuantities.ui") self.form.setWindowIcon(QtGui.QIcon(":/icons/BIM_IfcQuantities.svg")) + w = PARAMS.GetInt("BimIfcQuantitiesDialogWidth", 680) + h = PARAMS.GetInt("BimIfcQuantitiesDialogHeight", 512) + self.form.resize(w, h) + self.get_qtos() # quantities tab self.qmodel = QtGui.QStandardItemModel() self.form.quantities.setModel(self.qmodel) self.form.quantities.setUniformRowHeights(True) self.form.quantities.setItemDelegate(QtGui.QStyledItemDelegate()) - self.quantitiesDrawn = False self.qmodel.dataChanged.connect(self.setChecked) self.form.buttonBox.accepted.connect(self.accept) self.form.quantities.clicked.connect(self.onClickTree) self.form.onlyVisible.stateChanged.connect(self.update) + self.form.buttonRefresh.clicked.connect(self.update) + self.form.buttonApply.clicked.connect(self.add_qto) # center the dialog over FreeCAD window mw = FreeCADGui.getMainWindow() @@ -132,137 +149,256 @@ def getArray(self, obj): def decamelize(self, s): return "".join([" " + c if c.isupper() else c for c in s]).strip(" ") + def get_qtos(self): + "populates the qtos combo box" + + def read_csv(csvfile): + result = {} + if os.path.exists(csvfile): + with open(csvfile, "r") as f: + reader = csv.reader(f, delimiter=";") + for row in reader: + result[row[0]] = row[1:] + return result + + self.qtodefs = {} + qtopath = os.path.join( + FreeCAD.getResourceDir(), "Mod", "BIM", "Presets", "qto_definitions.csv" + ) + custompath = os.path.join(FreeCAD.getUserAppDataDir(), "BIM", "CustomQtos.csv") + self.qtodefs = read_csv(qtopath) + self.qtodefs.update(read_csv(custompath)) + self.qtokeys = [ + "".join(map(lambda x: x if x.islower() else " " + x, t[4:]))[1:] + for t in self.qtodefs.keys() + ] + self.qtokeys.sort() + self.form.comboQto.addItems( + [translate("BIM", "Add quantity set..."),] + + self.qtokeys + ) + + def add_qto(self): + "Adds a standard qto set to the todo list" + + index = self.form.comboQto.currentIndex() + if index <= 0: + return + if len(FreeCADGui.Selection.getSelection()) != 1: + return + obj = FreeCADGui.Selection.getSelection()[0] + qto = list(self.qtodefs.keys())[index-1] + self.ifcqtolist.setdefault(obj.Name, []).append(qto) + self.update_line(obj.Name, qto) + FreeCAD.Console.PrintMessage(translate("BIM", "Adding quantity set")+": "+qto+"\n") + + def apply_qto(self, obj, qto): + "Adds a standard qto set to the object" + + val = self.qtodefs[qto] + qset = None + if hasattr(obj, "StepId"): + from nativeifc import ifc_tools + ifcfile = ifc_tools.get_ifcfile(obj) + element = ifc_tools.get_ifc_element(obj) + if not ifcfile or not element: + return + qset = ifc_tools.api_run("pset.add_qto", ifcfile, product=element, name=qto) + for i in range(0, len(val), 2): + qname = val[i] + qtype = QTO_TYPES[val[i+1]] + if not qname in obj.PropertiesList: + obj.addProperty(qtype, qname, "Quantities", val[i+1]) + qval = 0 + i = self.get_row(obj.Name) + if i > -1: + for j, p in enumerate(QPROPS): + it = self.qmodel.item(i, j+1) + t = it.text() + if t: + t = t.replace("²","^2").replace("³","^3") + qval = FreeCAD.Units.Quantity(t).Value + if qval: + setattr(obj, qname, qval) + if hasattr(obj, "StepId") and qset: + ifc_tools.api_run("pset.edit_qto", ifcfile, qto=qset, properties={qname: qval}) + def update(self, index=None): - "updates the tree widgets in all tabs" + """updates the tree widgets in all tabs. Index is not used, + it is just there to match a qt slot requirement""" from PySide import QtCore, QtGui import Draft - # quantities tab - only fill once - - if not self.quantitiesDrawn: - self.qmodel.setHorizontalHeaderLabels( - [translate("BIM", "Label")] + trqprops - ) - quantheaders = self.form.quantities.header() # QHeaderView instance - if hasattr(quantheaders, "setClickable"): # qt4 - quantheaders.setClickable(True) - else: # qt5 - quantheaders.setSectionsClickable(True) - quantheaders.sectionClicked.connect(self.quantHeaderClicked) - - # sort by type - - groups = {} - for name, role in self.objectslist.items(): - groups.setdefault(role, []).append(name) - for names in groups.values(): - suffix = "" - for name in names: - if "+array" in name: - name = name.split("+array")[0] - suffix = " (duplicate)" - obj = FreeCAD.ActiveDocument.getObject(name) - if obj: - if ( - not self.form.onlyVisible.isChecked() - ) or obj.ViewObject.isVisible(): - if obj.isDerivedFrom("Part::Feature") and not ( - Draft.getType(obj) == "Site" - ): - it1 = QtGui.QStandardItem(obj.Label + suffix) - it1.setToolTip(name + suffix) - it1.setEditable(False) - if QtCore.QFileInfo( - ":/icons/Arch_" + obj.Proxy.Type + "_Tree.svg" - ).exists(): - icon = QtGui.QIcon( - ":/icons/Arch_" + obj.Proxy.Type + "_Tree.svg" - ) - else: - icon = QtGui.QIcon(":/icons/Arch_Component.svg") - it1.setIcon(icon) - props = [] - for prop in qprops: - it = QtGui.QStandardItem() - val = None - if prop == "Volume": - if obj.Shape and hasattr(obj.Shape, "Volume"): - val = FreeCAD.Units.Quantity( - obj.Shape.Volume, FreeCAD.Units.Volume - ) - it.setText( - val.getUserPreferred()[0].replace( - "^3", "³" - ) - ) - it.setCheckable(True) - else: - if hasattr(obj, prop) and ( - not "Hidden" in obj.getEditorMode(prop) + # quantities tab + + self.qmodel.clear() + self.qmodel.setHorizontalHeaderLabels( + [translate("BIM", "Label")] + TR_QPROPS + ) + self.form.quantities.setColumnWidth(0, 200) # TODO remember width + quantheaders = self.form.quantities.header() # QHeaderView instance + quantheaders.setSectionsClickable(True) + quantheaders.sectionClicked.connect(self.quantHeaderClicked) + + # sort by type + + groups = {} + for name, role in self.objectslist.items(): + groups.setdefault(role, []).append(name) + for names in groups.values(): + suffix = "" + for name in names: + if "+array" in name: + name = name.split("+array")[0] + suffix = " (duplicate)" + obj = FreeCAD.ActiveDocument.getObject(name) + if obj: + if ( + not self.form.onlyVisible.isChecked() + ) or obj.ViewObject.isVisible(): + if obj.isDerivedFrom("Part::Feature") and not ( + Draft.getType(obj) == "Site" + ): + it1 = QtGui.QStandardItem(obj.Label + suffix) + it1.setToolTip(name + suffix) + it1.setEditable(False) + it1.setIcon(obj.ViewObject.Icon) + props = [] + for prop in QPROPS: + it = QtGui.QStandardItem() + val = None + if hasattr(obj, prop) and ( + "Hidden" not in obj.getEditorMode(prop) + ): + val = self.get_text(obj, prop) + it.setText(val) + it.setCheckable(True) + if val != None: + d = None + if hasattr(obj, "IfcAttributes"): + d = obj.IfcAttributes + elif hasattr(obj, "IfcData"): + d = obj.IfcData + if d: + if ("Export" + prop in d) and ( + d["Export" + prop] == "True" ): - val = getattr(obj, prop) - it.setText( - val.getUserPreferred()[0].replace( - "^2", "²" - ) - ) - it.setCheckable(True) - if val != None: - d = None - if hasattr(obj, "IfcAttributes"): - d = obj.IfcAttributes - elif hasattr(obj, "IfcData"): - d = obj.IfcData - if d: - if ("Export" + prop in d) and ( - d["Export" + prop] == "True" - ): - it.setCheckState(QtCore.Qt.Checked) - if val == 0: - it.setIcon( - QtGui.QIcon( - os.path.join( - os.path.dirname(__file__), - "icons", - "warning.svg", - ) - ) - ) - if prop in [ - "Area", - "HorizontalArea", - "VerticalArea", - "Volume", - ]: - it.setEditable(False) - props.append(it) - self.qmodel.appendRow([it1] + props) - self.quantitiesDrawn = True + it.setCheckState(QtCore.Qt.Checked) + elif self.has_qto(obj, prop): + it.setCheckState(QtCore.Qt.Checked) + if val == 0: + it.setIcon(QtGui.QIcon(":/icons/warning.svg")) + self.set_editable(it, prop) + props.append(it) + self.qmodel.appendRow([it1] + props) + + def has_qto(self, obj, prop): + """Says if the given object has the given prop in a qto set""" + + if not "StepId" in obj.PropertiesList: + return False + from nativeifc import ifc_tools + element = ifc_tools.get_ifc_element(obj) + if not element: + return False + for rel in getattr(element, "IsDefinedBy", []): + pset = rel.RelatingPropertyDefinition + if pset.is_a("IfcElementQuantity"): + if pset.Name in self.qtodefs: + if prop in self.qtodefs[pset.Name]: + return True + return False + + def get_text(self, obj, prop): + """Gets the text from a property""" + + val = getattr(obj, prop, "0") + txt = val.getUserPreferred()[0].replace("^2", "²").replace("^3", "³") + return txt + + def get_row(self, name): + """Returns the row number correspinding to the given object name""" + + for i in range(self.qmodel.rowCount()): + if self.qmodel.item(i).toolTip().split(" ")[0] == name: + return i + return -1 + + def update_line(self, name, qto): + """Updates a single line of the table, without updating + the actual object""" + + from PySide import QtCore, QtGui + + i = self.get_row(name) + if i == -1: + return + obj = FreeCAD.ActiveDocument.getObject(name) + qto_val = self.qtodefs[qto] + for j, p in enumerate(QPROPS): + it = self.qmodel.item(i, j+1) + if p in obj.PropertiesList: + val = self.get_text(obj, p) + it.setText(val) + self.set_editable(it, p) + it.setCheckable(True) + elif p in qto_val: + it.setText("0") + it.setCheckable(True) + it.setCheckState(QtCore.Qt.Checked) + self.set_editable(it, p) + + def set_editable(self, it, prop): + """Checks if the given prop should be editable, and sets it""" + + if prop in ["Area", "HorizontalArea", "VerticalArea", "Volume"]: + it.setEditable(False) + else: + it.setEditable(True) def getRole(self, obj): + """gets the IFC class of this object""" + if hasattr(obj, "IfcType"): return obj.IfcType elif hasattr(obj, "IfcRole"): return obj.IfcRole + elif hasattr(obj, "IfcClass"): + return obj.IfcClass else: return None def accept(self): + """OK pressed""" + + PARAMS.SetInt("BimIfcQuantitiesDialogWidth", self.form.width()) + PARAMS.SetInt("BimIfcQuantitiesDialogHeight", self.form.height()) self.form.hide() changed = False + if self.ifcqtolist: + if not changed: + FreeCAD.ActiveDocument.openTransaction( + "Change quantities" + ) + changed = True + for key, val in self.ifcqtolist.items(): + obj = FreeCAD.ActiveDocument.getObject(key) + if obj: + for qto in val: + self.apply_qto(obj, qto) for row in range(self.qmodel.rowCount()): name = self.qmodel.item(row, 0).toolTip() obj = FreeCAD.ActiveDocument.getObject(name) if obj: - for i in range(len(qprops)): + for i in range(len(QPROPS)): item = self.qmodel.item(row, i + 1) val = item.text() sav = bool(item.checkState()) if i < 3: # Length, Width, Height, value can be changed - if hasattr(obj, qprops[i]): - if getattr(obj, qprops[i]).getUserPreferred()[0] != val: - setattr(obj, qprops[i], val) + if hasattr(obj, QPROPS[i]): + if getattr(obj, QPROPS[i]).getUserPreferred()[0] != val: + setattr(obj, QPROPS[i], val) if not changed: FreeCAD.ActiveDocument.openTransaction( "Change quantities" @@ -277,10 +413,10 @@ def accept(self): att = "IfcData" if d: if sav: - if (not "Export" + qprops[i] in d) or ( - d["Export" + qprops[i]] == "False" + if (not "Export" + QPROPS[i] in d) or ( + d["Export" + QPROPS[i]] == "False" ): - d["Export" + qprops[i]] = "True" + d["Export" + QPROPS[i]] = "True" setattr(obj, att, d) if not changed: FreeCAD.ActiveDocument.openTransaction( @@ -288,16 +424,16 @@ def accept(self): ) changed = True else: - if "Export" + qprops[i] in d: - if d["Export" + qprops[i]] == "True": - d["Export" + qprops[i]] = "False" + if "Export" + QPROPS[i] in d: + if d["Export" + QPROPS[i]] == "True": + d["Export" + QPROPS[i]] = "False" setattr(obj, att, d) if not changed: FreeCAD.ActiveDocument.openTransaction( "Change quantities" ) changed = True - else: + elif "StepId" not in obj.PropertiesList: FreeCAD.Console.PrintError( translate( "BIM", "Cannot save quantities settings for object %1" diff --git a/src/Mod/BIM/bimcommands/BimMaterial.py b/src/Mod/BIM/bimcommands/BimMaterial.py index 50ddbcdb56f0..a8f896e24e38 100644 --- a/src/Mod/BIM/bimcommands/BimMaterial.py +++ b/src/Mod/BIM/bimcommands/BimMaterial.py @@ -36,14 +36,17 @@ class MatLineEdit(QtGui.QLineEdit): "custom QLineEdit widget that has the power to catch up/down arrow keypress" + up = QtCore.Signal() + down = QtCore.Signal() + def __init__(self, parent=None): QtGui.QLineEdit.__init__(self, parent) def keyPressEvent(self, event): if event.key() == QtCore.Qt.Key_Up: - self.emit(QtCore.SIGNAL("up()")) + self.up.emit() elif event.key() == QtCore.Qt.Key_Down: - self.emit(QtCore.SIGNAL("down()")) + self.down.emit() else: QtGui.QLineEdit.keyPressEvent(self, event) @@ -435,8 +438,8 @@ def onAccept(self, item=None): FreeCAD.ActiveDocument.openTransaction("Change material") for obj in self.dlg.objects: if hasattr(obj, "StepId"): - from nativeifc import ifc_tools - ifc_tools.set_material(mat, obj) + from nativeifc import ifc_materials + ifc_materials.set_material(mat, obj) else: obj.Material = mat FreeCAD.ActiveDocument.commitTransaction() diff --git a/src/Mod/BIM/bimcommands/BimSectionPlane.py b/src/Mod/BIM/bimcommands/BimSectionPlane.py index f558da15a579..c6a326b27a21 100644 --- a/src/Mod/BIM/bimcommands/BimSectionPlane.py +++ b/src/Mod/BIM/bimcommands/BimSectionPlane.py @@ -38,7 +38,7 @@ class Arch_SectionPlane: def GetResources(self): - return {'Pixmap' : 'Arch_SectionPlane', + return {'Pixmap' : 'Arch_SectionPlane_Tree', 'Accel': "S, E", 'MenuText': QT_TRANSLATE_NOOP("Arch_SectionPlane","Section Plane"), 'ToolTip': QT_TRANSLATE_NOOP("Arch_SectionPlane","Creates a section plane object, including the selected objects")} @@ -62,6 +62,12 @@ def Activated(self): FreeCADGui.doCommand("section = Arch.makeSectionPlane("+ss+")") FreeCAD.ActiveDocument.commitTransaction() FreeCAD.ActiveDocument.recompute() + if len(sel) == 1 and getattr(sel[0], "IfcClass", None) == "IfcProject": + # remove the IFC project, otherwise we can't aggregate (circular loop) + FreeCADGui.doCommand("section.Objects = []") + #FreeCADGui.addModule("nativeifc.ifc_tools") + #p = "FreeCAD.ActiveDocument."+sel[0].Name + #FreeCADGui.doCommand("nativeifc.ifc_tools.aggregate(section,"+p+")") diff --git a/src/Mod/BIM/bimcommands/BimShape2DView.py b/src/Mod/BIM/bimcommands/BimShape2DView.py index 8aed84ee8dfb..fecbee7e8cc7 100644 --- a/src/Mod/BIM/bimcommands/BimShape2DView.py +++ b/src/Mod/BIM/bimcommands/BimShape2DView.py @@ -38,7 +38,8 @@ class BIM_Shape2DView(gui_shape2dview.Shape2DView): def GetResources(self): d = super().GetResources() d["Pixmap"] = "Arch_BuildingPart_Tree" - d["MenuText"] = QT_TRANSLATE_NOOP("BIM_Shape2DView", "Shape-based view") + d["MenuText"] = QT_TRANSLATE_NOOP("BIM_Shape2DView", "Section view") + d['Accel'] = "V, V" return d def proceed(self): @@ -87,4 +88,19 @@ def proceed(self): self.finish() +class BIM_Shape2DCut(BIM_Shape2DView): + + def GetResources(self): + d = super().GetResources() + d["Pixmap"] = "Arch_View_Cut" + d["MenuText"] = QT_TRANSLATE_NOOP("BIM_Shape2DView", "Section cut") + d['Accel'] = "V, C" + return d + + def proceed(self): + super().proceed() + FreeCADGui.doCommand("sv.ProjectionMode = \"Cutfaces\"") + + FreeCADGui.addCommand("BIM_Shape2DView", BIM_Shape2DView()) +FreeCADGui.addCommand("BIM_Shape2DCut", BIM_Shape2DCut()) diff --git a/src/Mod/BIM/bimcommands/BimStairs.py b/src/Mod/BIM/bimcommands/BimStairs.py index a983ddbdc1ba..53f6f469317a 100644 --- a/src/Mod/BIM/bimcommands/BimStairs.py +++ b/src/Mod/BIM/bimcommands/BimStairs.py @@ -54,18 +54,24 @@ def Activated(self): from draftutils import params FreeCAD.ActiveDocument.openTransaction(translate("Arch","Create Stairs")) FreeCADGui.addModule("Arch") - if FreeCADGui.Selection.getSelection(): + sel = FreeCADGui.Selection.getSelection() + if sel: n = [] nStr = "" - for obj in FreeCADGui.Selection.getSelection(): + for obj in sel: if nStr != "": nStr += "," nStr += "FreeCAD.ActiveDocument." + obj.Name - FreeCADGui.doCommand("obj = Arch.makeStairs(baseobj=["+nStr+"])") + #'obj' in GUI not the same as obj in script, + # make it 'stairs' to distinguish one from another + #Create Stairs object with steps numbers in user preference + FreeCADGui.doCommand("stairs = Arch.makeStairs(baseobj=["+nStr+"],steps="+str(params.get_param_arch("StairsSteps"))+")") + FreeCADGui.Selection.clearSelection() + FreeCADGui.doCommand("FreeCADGui.Selection.addSelection(stairs)") else: - FreeCADGui.doCommand("obj = Arch.makeStairs(steps="+str(params.get_param_arch("StairsSteps"))+")") + FreeCADGui.doCommand("stairs = Arch.makeStairs(steps="+str(params.get_param_arch("StairsSteps"))+")") FreeCADGui.addModule("Draft") - FreeCADGui.doCommand("Draft.autogroup(obj)") + FreeCADGui.doCommand("Draft.autogroup(stairs)") FreeCAD.ActiveDocument.commitTransaction() FreeCAD.ActiveDocument.recompute() diff --git a/src/Mod/BIM/bimcommands/BimTDPage.py b/src/Mod/BIM/bimcommands/BimTDPage.py index 0c5100ec0e16..a2702470df0e 100644 --- a/src/Mod/BIM/bimcommands/BimTDPage.py +++ b/src/Mod/BIM/bimcommands/BimTDPage.py @@ -36,11 +36,12 @@ class BIM_TDPage: def GetResources(self): return { - "Pixmap": "techdraw-PageDefault", + "Pixmap": "BIM_PageDefault", "MenuText": QT_TRANSLATE_NOOP("BIM_TDPage", "Page"), "ToolTip": QT_TRANSLATE_NOOP( "BIM_TDPage", "Creates a new TechDraw page from a template" ), + 'Accel': "T, P", } def IsActive(self): diff --git a/src/Mod/BIM/bimcommands/BimTDView.py b/src/Mod/BIM/bimcommands/BimTDView.py index 554d1cdd6bdc..c3d1230d01b7 100644 --- a/src/Mod/BIM/bimcommands/BimTDView.py +++ b/src/Mod/BIM/bimcommands/BimTDView.py @@ -35,12 +35,13 @@ class BIM_TDView: def GetResources(self): return { - "Pixmap": "techdraw-ArchView", - "MenuText": QT_TRANSLATE_NOOP("BIM_TDView", "View"), + "Pixmap": "BIM_InsertView", + "MenuText": QT_TRANSLATE_NOOP("BIM_TDView", "Insert view"), "ToolTip": QT_TRANSLATE_NOOP( "BIM_TDView", - "Creates a TechDraw view from a section plane or 2D objects", + "Inserts a drawing view on a page", ), + 'Accel': "V, I", } def IsActive(self): @@ -92,6 +93,11 @@ def Activated(self): page.addView(view) if page.Scale: view.Scale = page.Scale + if "ShapeMode" in draft.PropertiesList: + draft.ShapeMode = "Shape" + for child in draft.OutListRecursive: + if "ShapeMode" in child.PropertiesList: + child.ShapeMode = "Shape" FreeCAD.ActiveDocument.commitTransaction() FreeCAD.ActiveDocument.recompute() diff --git a/src/Mod/BIM/bimcommands/BimTutorial.py b/src/Mod/BIM/bimcommands/BimTutorial.py index 7f04a459f16b..e7b53e3dbc08 100644 --- a/src/Mod/BIM/bimcommands/BimTutorial.py +++ b/src/Mod/BIM/bimcommands/BimTutorial.py @@ -113,7 +113,7 @@ def load(self, arg=None): if sys.version_info.major >= 3: html = html.decode("utf8") html = html.replace("\n", " ") - html = html.replace('"/wiki/', '"https://www.freecadweb.org/wiki/') + html = html.replace('href="/', 'href="https://wiki.freecad.org/') html = re.sub( '
', "", html ) # remove table of contents @@ -175,7 +175,6 @@ def load(self, arg=None): except: print("unparsable image path:", path) else: - name = name[-1] storename = os.path.join(store, name) if not os.path.exists(storename): if path.startswith("/images"): diff --git a/src/Mod/BIM/bimcommands/BimViews.py b/src/Mod/BIM/bimcommands/BimViews.py index 99ed00a9abcd..4b3fc36828cb 100644 --- a/src/Mod/BIM/bimcommands/BimViews.py +++ b/src/Mod/BIM/bimcommands/BimViews.py @@ -73,6 +73,7 @@ def Activated(self): self.dialog = FreeCADGui.PySideUic.loadUi(":/ui/dialogViews.ui") vm.setWidget(self.dialog) vm.tree = self.dialog.tree + vm.viewtree = self.dialog.viewtree vm.closeEvent = self.onClose # set context menu @@ -121,6 +122,7 @@ def Activated(self): self.dialog.buttonRename.triggered.connect(self.rename) self.dialog.tree.itemClicked.connect(self.select) self.dialog.tree.itemDoubleClicked.connect(show) + self.dialog.viewtree.itemDoubleClicked.connect(show) self.dialog.tree.itemChanged.connect(self.editObject) self.dialog.tree.customContextMenuRequested.connect(self.onContextMenu) # delay connecting after FreeCAD finishes setting up @@ -177,13 +179,12 @@ def update(self, retrigger=True): "updates the view manager" from PySide import QtCore, QtGui + import Draft vm = findWidget() if vm and FreeCAD.ActiveDocument: if vm.isVisible() and (vm.tree.state() != vm.tree.State.EditingState): vm.tree.clear() - import Draft - treeViewItems = [] # QTreeWidgetItem to Display in tree lvHold = [] soloProxyHold = [] @@ -260,6 +261,9 @@ def update(self, retrigger=True): treeViewItems = treeViewItems + sortLvItems + soloProxyHold vm.tree.addTopLevelItems(treeViewItems) + if vm.isVisible() and (vm.viewtree.state() != vm.viewtree.State.EditingState): + vm.viewtree.clear() + # add views ficon = QtGui.QIcon.fromTheme("folder", QtGui.QIcon(":/icons/folder.svg")) views = self.getViews() @@ -273,7 +277,7 @@ def update(self, retrigger=True): i.setIcon(0, v.ViewObject.Icon) i.setToolTip(0, v.Name) top.addChild(i) - vm.tree.addTopLevelItem(top) + vm.viewtree.addTopLevelItem(top) # add pages pages = self.getPages() @@ -286,16 +290,30 @@ def update(self, retrigger=True): i.setIcon(0, p.ViewObject.Icon) i.setToolTip(0, p.Name) top.addChild(i) - vm.tree.addTopLevelItem(top) + vm.viewtree.addTopLevelItem(top) # set TreeVinew Item selected if obj is selected + bold = QtGui.QFont() + bold.setBold(True) objSelected = FreeCADGui.Selection.getSelection() objNameSelected = [obj.Label for obj in objSelected] - - allItemsInTree = getAllItemsInTree(vm.tree) + objActive = FreeCADGui.ActiveDocument.ActiveView.getActiveObject("NativeIFC") + if not objActive: + objActive = FreeCADGui.ActiveDocument.ActiveView.getActiveObject("Arch") + tparam = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/TreeView") + activeColor = tparam.GetUnsigned("TreeActiveColor",0) + allItemsInTree = getAllItemsInTree(vm.tree) + getAllItemsInTree(vm.viewtree) for item in allItemsInTree: if item.text(0) in objNameSelected: item.setSelected(True) + if objActive and item.toolTip(0) == objActive.Name: + if activeColor: + r = ((activeColor >> 24) & 0xFF) / 255.0 + g = ((activeColor >> 16) & 0xFF) / 255.0 + b = ((activeColor >> 8) & 0xFF) / 255.0 + activeColor = QtGui.QColor.fromRgbF(r, g, b) + item.setBackground(0, QtGui.QBrush(activeColor, QtCore.Qt.SolidPattern)) + item.setFont(0, bold) if retrigger: QtCore.QTimer.singleShot(UPDATEINTERVAL, self.update) @@ -306,6 +324,7 @@ def update(self, retrigger=True): # expand vm.tree.expandAll() + vm.viewtree.expandAll() def select(self, item, column=None): "selects a doc object corresponding to an item" @@ -324,7 +343,8 @@ def addLevel(self): import Arch FreeCAD.ActiveDocument.openTransaction("Create BuildingPart") - Arch.makeFloor() + obj = Arch.makeFloor() + self.addToSelection(obj) FreeCAD.ActiveDocument.commitTransaction() FreeCAD.ActiveDocument.recompute() self.update(False) @@ -335,11 +355,34 @@ def addProxy(self): import Draft FreeCAD.ActiveDocument.openTransaction("Create WP Proxy") - Draft.makeWorkingPlaneProxy(FreeCAD.DraftWorkingPlane.getPlacement()) + obj = Draft.makeWorkingPlaneProxy(FreeCAD.DraftWorkingPlane.getPlacement()) + self.addToSelection(obj) FreeCAD.ActiveDocument.commitTransaction() FreeCAD.ActiveDocument.recompute() self.update(False) + def addToSelection(self, obj): + "Adds the given object to the current selected item" + + import Draft + from nativeifc import ifc_tools + + sel = FreeCADGui.Selection.getSelection() + if len(sel) == 1: + sel = sel[0] + if hasattr(sel, "addObject"): + sel.addObject(obj) + return + elif Draft.getType(sel).startswith("Ifc"): + ifc_tools.aggregate(obj, sel) + elif "Group" in sel.PropertiesList: + g = sel.Group + if obj not in g: + g.append(obj) + sel.Group = g + return + + def delete(self): "deletes the selected object" @@ -441,15 +484,28 @@ def getDockArea(self, area): def onContextMenu(self, pos): """Fires the context menu""" + import Draft + self.dialog.buttonAddProxy.setEnabled(True) + selobj = self.dialog.tree.currentItem() + if selobj: + selobj = FreeCAD.ActiveDocument.getObject(selobj.toolTip(0)) + if selobj: + if Draft.getType(selobj).startswith("Ifc"): + self.dialog.buttonAddProxy.setEnabled(False) self.dialog.menu.exec_(self.dialog.tree.mapToGlobal(pos)) def getViews(self): """Returns a list of 2D views""" + import Draft views = [] for p in self.getPages(): for v in p.Views: if getattr(v, "Source", None): views.append(v.Source) + bps = [o for o in FreeCAD.ActiveDocument.Objects if Draft.getType(o) == "BuildingPart"] + for v in [o for o in bps if isView(o)]: + if v not in views: + views.append(v) return views def getPages(self): @@ -475,6 +531,8 @@ def findWidget(): def show(item, column=None): "item has been double-clicked" + import Draft + obj = None vm = findWidget() if isinstance(item, str) or ( @@ -495,6 +553,7 @@ def show(item, column=None): if obj: FreeCADGui.Selection.clearSelection() FreeCADGui.Selection.addSelection(obj) + vparam = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/View") if obj.isDerivedFrom("TechDraw::DrawPage"): # case 1: the object is a TD page. We switch to it simply @@ -519,10 +578,60 @@ def show(item, column=None): FreeCADGui.ActiveDocument.ActiveView.viewTop() FreeCADGui.Selection.clearSelection() FreeCADGui.Selection.addSelection(obj) + if PARAMS.GetBool("BimViewsSwitchBackground", False): + vparam.SetBool("Simple", True) + vparam.SetBool("Gradient", False) + vparam.SetBool("RadialGradient", False) else: # case 3: This is maybe a BuildingPart. Place the WP on it FreeCADGui.runCommand("Draft_SelectPlane") + if PARAMS.GetBool("BimViewsSwitchBackground", False): + vparam.SetBool("Simple", False) + vparam.SetBool("Gradient", False) + vparam.SetBool("RadialGradient", True) + if Draft.getType(obj) == "BuildingPart": + if obj.IfcType == "Building Storey": + # hide all other storeys + obj.ViewObject.Visibility = True + bldgs = [o for o in obj.InList if Draft.getType(o) == "BuildingPart" and o.IfcType == "Building"] + if len(bldgs) == 1: + bldg = bldgs[0] + storeys = [o for o in bldg.OutList if Draft.getType(o) == "BuildingPart" and o.IfcType == "Building Storey"] + for storey in storeys: + if storey != obj: + storey.ViewObject.Visibility = False + elif obj.IfcType == "Building": + # show all storeys + storeys = [o for o in obj.OutList if Draft.getType(o) == "BuildingPart" and o.IfcType == "Building Storey"] + for storey in storeys: + storey.ViewObject.Visibility = True + elif Draft.getType(obj) == "IfcBuildingStorey": + obj.ViewObject.Visibility = True + bldgs = [o for o in obj.InList if Draft.getType(o) == "IfcBuilding"] + if len(bldgs) == 1: + bldg = bldgs[0] + storeys = [o for o in bldg.OutList if Draft.getType(o) == "IfcBuildingStorey"] + for storey in storeys: + if storey != obj: + storey.ViewObject.Visibility = False + elif obj.IfcType == "IfcBuilding": + # show all storeys + storeys = [o for o in obj.OutList if Draft.getType(o) == "IfcBuildingStorey"] + for storey in storeys: + storey.ViewObject.Visibility = True + + # perform stored interactions + if getattr(obj.ViewObject, "SetWorkingPlane", False): + obj.ViewObject.Proxy.setWorkingPlane() + if getattr(obj.ViewObject, "DoubleClickActivates", True): + if Draft.getType(obj) == "BuildingPart": + FreeCADGui.ActiveDocument.ActiveView.setActiveObject("Arch", obj) + elif Draft.getType(obj) == "IfcBuildingStorey": + FreeCADGui.ActiveDocument.ActiveView.setActiveObject("NativeIFC", obj) + else: + FreeCADGui.ActiveDocument.ActiveView.setActiveObject("Arch", None) + FreeCADGui.ActiveDocument.ActiveView.setActiveObject("NativeIFC", None) if vm: # store the last double-clicked item for the BIM WPView command if isinstance(item, str) or ( @@ -543,6 +652,12 @@ def isView(obj): return True if getattr(obj,"DrawingView",False): return True + if getattr(obj, "IfcType", None) == "Annotation": + if getattr(obj, "ObjectType", "").upper() == "DRAWING": + return True + if getattr(obj, "Class", None) == "IfcAnnotation": + if getattr(obj, "ObjectType", "").upper() == "DRAWING": + return True return False diff --git a/src/Mod/BIM/ifc_objects.py b/src/Mod/BIM/ifc_objects.py index 0d8ffa55321a..b0cd9e51dc3b 100644 --- a/src/Mod/BIM/ifc_objects.py +++ b/src/Mod/BIM/ifc_objects.py @@ -3,15 +3,15 @@ #* Copyright (c) 2022 Yorik van Havre * #* * #* This program is free software; you can redistribute it and/or modify * -#* it under the terms of the GNU General Public License (GPL) * -#* as published by the Free Software Foundation; either version 3 of * +#* it under the terms of the GNU Library General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * #* the License, or (at your option) any later version. * #* for detail see the LICENCE text file. * #* * #* This program is distributed in the hope that it will be useful, * #* but WITHOUT ANY WARRANTY; without even the implied warranty of * #* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -#* GNU General Public License for more details. * +#* GNU Library General Public License for more details. * #* * #* You should have received a copy of the GNU Library General Public * #* License along with this program; if not, write to the Free Software * diff --git a/src/Mod/BIM/ifc_viewproviders.py b/src/Mod/BIM/ifc_viewproviders.py index e0dcea615557..8f6c01f5c729 100644 --- a/src/Mod/BIM/ifc_viewproviders.py +++ b/src/Mod/BIM/ifc_viewproviders.py @@ -3,15 +3,15 @@ #* Copyright (c) 2022 Yorik van Havre * #* * #* This program is free software; you can redistribute it and/or modify * -#* it under the terms of the GNU General Public License (GPL) * -#* as published by the Free Software Foundation; either version 3 of * +#* it under the terms of the GNU Library General Public License (LGPL) * +#* as published by the Free Software Foundation; either version 2 of * #* the License, or (at your option) any later version. * #* for detail see the LICENCE text file. * #* * #* This program is distributed in the hope that it will be useful, * #* but WITHOUT ANY WARRANTY; without even the implied warranty of * #* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -#* GNU General Public License for more details. * +#* GNU Library General Public License for more details. * #* * #* You should have received a copy of the GNU Library General Public * #* License along with this program; if not, write to the Free Software * diff --git a/src/Mod/BIM/importers/exportIFC.py b/src/Mod/BIM/importers/exportIFC.py index 7088e923bc87..88c11ab67238 100644 --- a/src/Mod/BIM/importers/exportIFC.py +++ b/src/Mod/BIM/importers/exportIFC.py @@ -48,8 +48,7 @@ from draftutils import params from draftutils.messages import _msg, _err -if FreeCAD.GuiUp: - import FreeCADGui +import FreeCADGui __title__ = "FreeCAD IFC export" __author__ = ("Yorik van Havre", "Jonathan Wiedemann", "Bernd Hahnebach") @@ -111,7 +110,7 @@ def getPreferences(): import ifcopenshell if FreeCAD.GuiUp and params.get_param_arch("ifcShowDialog"): - FreeCADGui.showPreferences("Import-Export", 1) + FreeCADGui.showPreferencesByName("Import-Export", ":/ui/preferences-ifc-export.ui") ifcunit = params.get_param_arch("ifcUnit") # Factor to multiply the dimension in millimeters @@ -272,14 +271,17 @@ def export(exportList, filename, colors=None, preferences=None): objectslist = Draft.get_group_contents(exportList, walls=True, addgroups=True) - # separate 2D objects + # separate 2D and special objects. Special objects provide their own IFC export method annotations = [] + specials = [] for obj in objectslist: if obj.isDerivedFrom("Part::Part2DObject"): annotations.append(obj) elif obj.isDerivedFrom("App::Annotation") or (Draft.getType(obj) in ["DraftText","Text","Dimension","LinearDimension","AngularDimension"]): annotations.append(obj) + elif hasattr(obj, "Proxy") and hasattr(obj.Proxy, "export_ifc"): + specials.append(obj) elif obj.isDerivedFrom("Part::Feature"): if obj.Shape and (not obj.Shape.Solids) and obj.Shape.Edges: if not obj.Shape.Faces: @@ -290,6 +292,7 @@ def export(exportList, filename, colors=None, preferences=None): # clean objects list of unwanted types objectslist = [obj for obj in objectslist if obj not in annotations] + objectslist = [obj for obj in objectslist if obj not in specials] objectslist = Arch.pruneIncluded(objectslist,strict=True) objectslist = [obj for obj in objectslist if Draft.getType(obj) not in ["Dimension","Material","MaterialContainer","WorkingPlaneProxy"]] if preferences['FULL_PARAMETRIC']: @@ -335,6 +338,8 @@ def export(exportList, filename, colors=None, preferences=None): shapedefs = {} # { ShapeDefString:[shapes],... } spatialelements = {} # {Name:IfcEntity, ... } uids = [] # store used UIDs to avoid reuse (some FreeCAD objects might have same IFC UID, ex. copy/pasted objects + classifications = {} # {Name:IfcEntity, ... } + curvestyles = {} # build clones table @@ -930,6 +935,33 @@ def export(exportList, filename, colors=None, preferences=None): pset ) + # Classifications + + classification = getattr(obj, "StandardCode", "") + if classification: + name, code = classification.split(" ", 1) + if name in classifications: + system = classifications[name] + else: + system = ifcfile.createIfcClassification(None, None, None, name) + classifications[name] = system + for ref in getattr(system, "HasReferences", []): + if code.startswith(ref.Name): + break + else: + ref = ifcfile.createIfcClassificationReference(None, code, None, system) + if getattr(ref, "ClassificationRefForObjects", None): + rel = ref.ClassificationRefForObjects[0] + rel.RelatedObjects = rel.RelatedObjects + [product] + else: + rel = ifcfile.createIfcRelAssociatesClassification( + ifcopenshell.guid.new(), + history,'FreeCADClassificationRel', + None, + [product], + ref + ) + count += 1 # relate structural analysis objects to the struct model @@ -1289,126 +1321,20 @@ def export(exportList, filename, colors=None, preferences=None): annos = {} if preferences['EXPORT_2D']: + global curvestyles curvestyles = {} if annotations and preferences['DEBUG']: print("exporting 2D objects...") for anno in annotations: - objectType = None - xvc = ifcbin.createIfcDirection((1.0,0.0,0.0)) - zvc = ifcbin.createIfcDirection((0.0,0.0,1.0)) - ovc = ifcbin.createIfcCartesianPoint((0.0,0.0,0.0)) - gpl = ifcbin.createIfcAxis2Placement3D(ovc,zvc,xvc) - placement = ifcbin.createIfcLocalPlacement(gpl) - if anno.isDerivedFrom("Part::Feature"): - if Draft.getType(anno) == "Hatch": - objectType = "HATCH" - elif getattr(anno.ViewObject,"EndArrow",False): - objectType = "LEADER" - elif anno.Shape.Faces: - objectType = "AREA" - else: - objectType = "LINEWORK" - reps = [] - sh = anno.Shape.copy() - sh.scale(preferences['SCALE_FACTOR']) # to meters - ehc = [] - curves = [] - for w in sh.Wires: - curves.append(createCurve(ifcfile,w)) - for e in w.Edges: - ehc.append(e.hashCode()) - if curves: - reps.append(ifcfile.createIfcGeometricCurveSet(curves)) - curves = [] - for e in sh.Edges: - if e.hashCode not in ehc: - curves.append(createCurve(ifcfile,e)) - if curves: - reps.append(ifcfile.createIfcGeometricCurveSet(curves)) - elif anno.isDerivedFrom("App::Annotation"): - objectType = "TEXT" - l = FreeCAD.Vector(anno.Position).multiply(preferences['SCALE_FACTOR']) - pos = ifcbin.createIfcCartesianPoint((l.x,l.y,l.z)) - tpl = ifcbin.createIfcAxis2Placement3D(pos,None,None) - s = ";".join(anno.LabelText) - txt = ifcfile.createIfcTextLiteral(s,tpl,"LEFT") - reps = [txt] - elif Draft.getType(anno) in ["DraftText","Text"]: - objectType = "TEXT" - l = FreeCAD.Vector(anno.Placement.Base).multiply(preferences['SCALE_FACTOR']) - pos = ifcbin.createIfcCartesianPoint((l.x,l.y,l.z)) - zdir = ifcbin.createIfcDirection(tuple(anno.Placement.Rotation.multVec(FreeCAD.Vector(0,0,1)))) - xdir = ifcbin.createIfcDirection(tuple(anno.Placement.Rotation.multVec(FreeCAD.Vector(1,0,0)))) - tpl = ifcbin.createIfcAxis2Placement3D(pos,zdir,xdir) - alg = "LEFT" - if FreeCAD.GuiUp and hasattr(anno.ViewObject,"Justification"): - if anno.ViewObject.Justification == "Right": - alg = "RIGHT" - s = ";".join(anno.Text) - txt = ifcfile.createIfcTextLiteral(s,tpl,alg) - reps = [txt] - elif Draft.getType(anno) in ["Dimension","LinearDimension","AngularDimension"]: - if FreeCAD.GuiUp: - objectType = "DIMENSION" - vp = anno.ViewObject.Proxy - reps = [] - sh = Part.makePolygon([vp.p1,vp.p2,vp.p3,vp.p4]) - sh.scale(preferences['SCALE_FACTOR']) # to meters - ehc = [] - curves = [] - for w in sh.Wires: - curves.append(createCurve(ifcfile,w)) - for e in w.Edges: - ehc.append(e.hashCode()) - if curves: - reps.append(ifcfile.createIfcGeometricCurveSet(curves)) - curves = [] - for e in sh.Edges: - if e.hashCode not in ehc: - curves.append(createCurve(ifcfile,e)) - if curves: - reps.append(ifcfile.createIfcGeometricCurveSet(curves)) - l = FreeCAD.Vector(vp.tbase).multiply(preferences['SCALE_FACTOR']) - zdir = None - xdir = None - if hasattr(vp,"trot"): - r = FreeCAD.Rotation(vp.trot[0],vp.trot[1],vp.trot[2],vp.trot[3]) - zdir = ifcbin.createIfcDirection(tuple(r.multVec(FreeCAD.Vector(0,0,1)))) - xdir = ifcbin.createIfcDirection(tuple(r.multVec(FreeCAD.Vector(1,0,0)))) - pos = ifcbin.createIfcCartesianPoint((l.x,l.y,l.z)) - tpl = ifcbin.createIfcAxis2Placement3D(pos,zdir,xdir) - txt = ifcfile.createIfcTextLiteral(vp.string,tpl,"LEFT") - reps.append(txt) - else: - print("Unable to handle object",anno.Label) - continue + ann = create_annotation(anno, ifcfile, context, history, preferences) + annos[anno.Name] = ann - for coldef in ["LineColor","TextColor","ShapeColor"]: - if hasattr(obj.ViewObject,coldef): - rgb = getattr(obj.ViewObject,coldef)[:3] - if rgb in curvestyles: - psa = curvestyles[rgb] - else: - col = ifcbin.createIfcColourRgb(rgb[0],rgb[1],rgb[2]) - cvf = ifcfile.createIfcDraughtingPredefinedCurveFont("continuous") - ics = ifcfile.createIfcCurveStyle('Line',cvf,None,col) - psa = ifcfile.createIfcPresentationStyleAssignment([ics]) - curvestyles[rgb] = psa - for rep in reps: - isi = ifcfile.createIfcStyledItem(rep,[psa],None) - break + # specials. Specials should take care of register themselves where needed under the project - shp = ifcfile.createIfcShapeRepresentation(context,'Annotation','Annotation2D',reps) - rep = ifcfile.createIfcProductDefinitionShape(None,None,[shp]) - l = anno.Label - ann = ifcfile.createIfcAnnotation( - ifcopenshell.guid.new(), - history,l, - '', - objectType, - placement, - rep - ) - annos[anno.Name] = ann + specs = {} + for spec in specials: + if preferences['DEBUG']: print("exporting special object:",spec.Label) + elt = spec.Proxy.export_ifc(spec, ifcfile) + specs[spec.Name] = elt # groups @@ -1790,13 +1716,31 @@ def buildAddress(obj,ifcfile): return addr -def createCurve(ifcfile,wire,scaling=1.0): +def createCurve(ifcfile, wire, scaling=1.0): + """creates an IfcIndexdPolyCurve from a wire + if possible, or defects to createCurveWithArcs""" + + if wire.ShapeType != "Wire": + return createCurveWithArcs(ifcfile, wire, scaling) + for e in wire.Edges: + if isinstance(e.Curve,Part.Circle): + return createCurveWithArcs(ifcfile, wire, scaling) + verts = [v.Point for v in wire.Vertexes] + if scaling != 1: + verts = [v.multiply(scaling) for v in verts] + verts = tuple([tuple(v) for v in verts]) + pts = ifcfile.createIfcCartesianPointList3D(verts) + idc = ifcfile.createIfcIndexedPolyCurve(pts, None, None) + return idc + + +def createCurveWithArcs(ifcfile,wire,scaling=1.0): "creates an IfcCompositeCurve from a shape" segments = [] pol = None last = None - if wire.ShapeType == "edge": + if wire.ShapeType == "Edge": edges = [wire] else: edges = Part.__sortEdges__(wire.Edges) @@ -2550,3 +2494,176 @@ def writeJson(filename,ifcfile): #print("json:",s) f.write(s) f.close() + + +def create_annotation(anno, ifcfile, context, history, preferences): + """Creates an annotation object""" + + global curvestyles, ifcbin + objectType = None + ovc = None + zvc = None + xvc = None + reps = [] + repid = "Annotation" + reptype = "Annotation2D" + description = getattr(anno, "Description", None) + if anno.isDerivedFrom("Part::Feature"): + if Draft.getType(anno) == "Hatch": + objectType = "HATCH" + elif getattr(anno.ViewObject,"EndArrow",False): + objectType = "LEADER" + elif anno.Shape.Faces: + objectType = "AREA" + elif Draft.getType(anno) == "Axis": + axdata = anno.Proxy.getAxisData(anno) + axes = [] + for ax in axdata: + p1 = ifcbin.createIfcCartesianPoint(tuple(FreeCAD.Vector(ax[0]).multiply(preferences['SCALE_FACTOR'])[:2])) + p2 = ifcbin.createIfcCartesianPoint(tuple(FreeCAD.Vector(ax[1]).multiply(preferences['SCALE_FACTOR'])[:2])) + pol = ifcbin.createIfcPolyline([p1,p2]) + axis = ifcfile.createIfcGridAxis(ax[2],pol,True) + axes.append(axis) + if axes: + if len(axes) > 1: + xvc = ifcbin.createIfcDirection((1.0,0.0,0.0)) + zvc = ifcbin.createIfcDirection((0.0,0.0,1.0)) + ovc = ifcbin.createIfcCartesianPoint((0.0,0.0,0.0)) + gpl = ifcbin.createIfcAxis2Placement3D(ovc,zvc,xvc) + plac = ifcbin.createIfcLocalPlacement(gpl) + grid = ifcfile.createIfcGrid(uid,history,name,description,None,plac,None,axes,None,None) + return grid + else: + return axes[0] + else: + print("Unable to handle object",anno.Label) + return None + else: + objectType = "LINEWORK" + sh = anno.Shape.copy() + sh.scale(preferences['SCALE_FACTOR']) # to meters + ehc = [] + curves = [] + for w in sh.Wires: + curves.append(createCurve(ifcfile,w)) + for e in w.Edges: + ehc.append(e.hashCode()) + if curves: + reps.append(ifcfile.createIfcGeometricCurveSet(curves)) + curves = [] + for e in sh.Edges: + if e.hashCode not in ehc: + curves.append(createCurve(ifcfile,e)) + if curves: + reps.append(ifcfile.createIfcGeometricCurveSet(curves)) + elif anno.isDerivedFrom("App::Annotation"): + objectType = "TEXT" + l = FreeCAD.Vector(anno.Position).multiply(preferences['SCALE_FACTOR']) + pos = ifcbin.createIfcCartesianPoint((0.0,0.0,0.0)) + tpl = ifcbin.createIfcAxis2Placement3D(pos,None,None) + ovc = ifcbin.createIfcCartesianPoint((l.x,l.y,l.z)) + s = ";".join(anno.LabelText) + txt = ifcfile.createIfcTextLiteral(s,tpl,"LEFT") + reps = [txt] + elif Draft.getType(anno) in ["DraftText","Text"]: + objectType = "TEXT" + l = FreeCAD.Vector(anno.Placement.Base).multiply(preferences['SCALE_FACTOR']) + pos = ifcbin.createIfcCartesianPoint((0.0,0.0,0.0)) + tpl = ifcbin.createIfcAxis2Placement3D(pos,None,None) + ovc = ifcbin.createIfcCartesianPoint((l.x,l.y,l.z)) + zvc = ifcbin.createIfcDirection(tuple(anno.Placement.Rotation.multVec(FreeCAD.Vector(0,0,1)))) + xvc = ifcbin.createIfcDirection(tuple(anno.Placement.Rotation.multVec(FreeCAD.Vector(1,0,0)))) + alg = "LEFT" + if FreeCAD.GuiUp and hasattr(anno.ViewObject,"Justification"): + if anno.ViewObject.Justification == "Right": + alg = "RIGHT" + s = ";".join(anno.Text) + txt = ifcfile.createIfcTextLiteral(s,tpl,alg) + reps = [txt] + elif Draft.getType(anno) in ["Dimension","LinearDimension","AngularDimension"]: + if FreeCAD.GuiUp: + objectType = "DIMENSION" + vp = anno.ViewObject.Proxy + if "BBIMDIMS" in preferences and preferences["BBIMDIMS"]: + sh = Part.makePolygon([vp.p2,vp.p3]) + else: + sh = Part.makePolygon([vp.p1,vp.p2,vp.p3,vp.p4]) + sh.scale(preferences['SCALE_FACTOR']) # to meters + curve = createCurve(ifcfile,sh) + reps = [ifcfile.createIfcGeometricCurveSet([curve])] + # Append text + l = FreeCAD.Vector(vp.tbase).multiply(preferences['SCALE_FACTOR']) + zdir = None + xdir = None + if hasattr(vp,"trot"): + r = FreeCAD.Rotation(vp.trot[0],vp.trot[1],vp.trot[2],vp.trot[3]) + zdir = ifcbin.createIfcDirection(tuple(r.multVec(FreeCAD.Vector(0,0,1)))) + xdir = ifcbin.createIfcDirection(tuple(r.multVec(FreeCAD.Vector(1,0,0)))) + pos = ifcbin.createIfcCartesianPoint((l.x,l.y,l.z)) + tpl = ifcbin.createIfcAxis2Placement3D(pos,zdir,xdir) + txt = ifcfile.createIfcTextLiteral(vp.string,tpl,"LEFT") + reps.append(txt) + elif Draft.getType(anno) == "SectionPlane": + p = FreeCAD.Vector(anno.Placement.Base).multiply(preferences['SCALE_FACTOR']) + ovc = ifcbin.createIfcCartesianPoint((p.x,p.y,p.z)) + zvc = ifcbin.createIfcDirection(tuple(anno.Placement.Rotation.multVec(FreeCAD.Vector(0,0,1)))) + xvc = ifcbin.createIfcDirection(tuple(anno.Placement.Rotation.multVec(FreeCAD.Vector(1,0,0)))) + objectType = "DRAWING" + l = w = h = 1000 + if anno.ViewObject: + if anno.ViewObject.DisplayLength.Value: + l = anno.ViewObject.DisplayLength.Value + if anno.ViewObject.DisplayHeight.Value: + w = anno.ViewObject.DisplayHeight.Value + if anno.Depth.Value: + h = anno.Depth.Value + l = FreeCAD.Vector(l, w, h).multiply(preferences['SCALE_FACTOR']) + zdir = ifcbin.createIfcDirection((0.0,0.0,1.0)) + xdir = ifcbin.createIfcDirection((1.0,0.0,0.0)) + pos = ifcbin.createIfcCartesianPoint((-l.x/2,-l.y/2,-l.z)) + tpl = ifcbin.createIfcAxis2Placement3D(pos,zdir,xdir) + blk = ifcfile.createIfcBlock(tpl, l.x, l.y, l.z) + csg = ifcfile.createIfcCsgSolid(blk) + reps = [csg] + repid = "Body" + reptype = "CSG" + else: + print("Unable to handle object",anno.Label) + return None + + for coldef in ["LineColor","TextColor","ShapeColor"]: + if hasattr(anno.ViewObject,coldef): + rgb = getattr(anno.ViewObject,coldef)[:3] + if rgb in curvestyles: + psa = curvestyles[rgb] + else: + col = ifcbin.createIfcColourRgb(rgb[0],rgb[1],rgb[2]) + cvf = ifcfile.createIfcDraughtingPredefinedCurveFont("continuous") + ics = ifcfile.createIfcCurveStyle('Line',cvf,None,col) + psa = ifcfile.createIfcPresentationStyleAssignment([ics]) + curvestyles[rgb] = psa + for rep in reps: + isi = ifcfile.createIfcStyledItem(rep,[psa],None) + break + if not xvc: + xvc = ifcbin.createIfcDirection((1.0,0.0,0.0)) + if not zvc: + zvc = ifcbin.createIfcDirection((0.0,0.0,1.0)) + if not ovc: + ovc = ifcbin.createIfcCartesianPoint((0.0,0.0,0.0)) + gpl = ifcbin.createIfcAxis2Placement3D(ovc,zvc,xvc) + placement = ifcbin.createIfcLocalPlacement(gpl) + shp = ifcfile.createIfcShapeRepresentation(context,'Annotation','Annotation2D',reps) + rep = ifcfile.createIfcProductDefinitionShape(None,None,[shp]) + label = anno.Label + description = getattr(anno, "Description", "") + ann = ifcfile.createIfcAnnotation( + ifcopenshell.guid.new(), + history, + label, + description, + objectType, + placement, + rep + ) + return ann diff --git a/src/Mod/BIM/importers/importIFCHelper.py b/src/Mod/BIM/importers/importIFCHelper.py index 8f44fce96565..d140cab8e7a2 100644 --- a/src/Mod/BIM/importers/importIFCHelper.py +++ b/src/Mod/BIM/importers/importIFCHelper.py @@ -84,7 +84,7 @@ def getPreferences(): 3 = One compound per storey """ if FreeCAD.GuiUp and params.get_param_arch("ifcShowDialog"): - Gui.showPreferences("Import-Export", 0) + Gui.showPreferencesByName("Import-Export", ":/ui/preferences-ifc.ui") preferences = { 'DEBUG': params.get_param_arch("ifcDebug"), @@ -774,8 +774,9 @@ def getVector(entity,scaling=1000): return v -def get2DShape(representation,scaling=1000): - """Returns a shape from a 2D IfcShapeRepresentation""" +def get2DShape(representation,scaling=1000,notext=False): + """Returns a shape from a 2D IfcShapeRepresentation + if notext is True, no Draft text is created""" import Part import DraftVecUtils @@ -872,16 +873,22 @@ def index2points(segment): pts.append(c) return pts - for s in el.Segments: - if s.is_a("IfcLineIndex"): - result.append(Part.makePolygon(index2points(s))) - elif s.is_a("IfcArcIndex"): - [p1, p2, p3] = index2points(s) - result.append(Part.Arc(p1, p2, p3)) - else: - raise RuntimeError("Illegal IfcIndexedPolyCurve segment") + if not el.Segments: + # use all points + verts = [FreeCAD.Vector(c[0],c[1],c[2] if len(c) > 2 else 0) for c in coords] + verts = [v.multiply(scaling) for v in verts] + result.append(Part.makePolygon(verts)) + else: + for s in el.Segments: + if s.is_a("IfcLineIndex"): + result.append(Part.makePolygon(index2points(s))) + elif s.is_a("IfcArcIndex"): + [p1, p2, p3] = index2points(s) + result.append(Part.Arc(p1, p2, p3)) + else: + raise RuntimeError("Illegal IfcIndexedPolyCurve segment: "+s.is_a()) else: - print("getCurveSet: unhandled element: ", el) + print("importIFCHelper.getCurveSet: unhandled element: ", el) return result @@ -903,6 +910,8 @@ def index2points(segment): else: result = preresult elif item.is_a("IfcTextLiteral"): + if notext: + continue pl = getPlacement(item.Placement, scaling) if pl: t = Draft.make_text(item.Literal.split(";"), pl) diff --git a/src/Mod/BIM/importers/importSH3D.py b/src/Mod/BIM/importers/importSH3D.py index 01f8ef282bb6..5a1cc189e556 100644 --- a/src/Mod/BIM/importers/importSH3D.py +++ b/src/Mod/BIM/importers/importSH3D.py @@ -23,18 +23,13 @@ __author__ = "Yorik van Havre" __url__ = "https://www.freecad.org" -import math import os -import tempfile import xml.sax import zipfile -from builtins import open as pyopen import FreeCAD -import Arch -import Draft -import Mesh -import Part +from FreeCAD import Base + ## @package importSH3D # \ingroup ARCH @@ -69,140 +64,16 @@ def insert(filename,docname): def read(filename): "reads the file and creates objects in the active document" - z = zipfile.ZipFile(filename) - homexml = z.read("Home.xml") - handler = SH3DHandler(z) - xml.sax.parseString(homexml,handler) - FreeCAD.ActiveDocument.recompute() - if not handler.makeIndividualWalls: - delete = [] - walls = [] - for k,lines in handler.lines.items(): - sk = FreeCAD.ActiveDocument.addObject("Sketcher::SketchObject","Walls_trace") - for l in lines: - for edge in l.Shape.Edges: - sk.addGeometry(edge.Curve) - delete.append(l.Name) - FreeCAD.ActiveDocument.recompute() - k = k.split(";") - walls.append(Arch.makeWall(baseobj=sk,width=float(k[0]),height=float(k[1]))) - for d in delete: - FreeCAD.ActiveDocument.removeObject(d) - w = walls.pop() - w.Additions = walls - w.Subtractions = handler.windows - g = FreeCAD.ActiveDocument.addObject("App::DocumentObjectGroup","Furniture") - g.Group = handler.furniture - FreeCAD.ActiveDocument.recompute() - - -class SH3DHandler(xml.sax.ContentHandler): - - def __init__(self,z): + import BIM.importers.importSH3DHelper + if DEBUG: + from importlib import reload + reload(BIM.importers.importSH3DHelper) - super().__init__() - self.makeIndividualWalls = False - self.z = z - self.windows = [] - self.furniture = [] - self.lines = {} - - def startElement(self, tag, attributes): - - if tag == "wall": - name = attributes["id"] - p1 = FreeCAD.Vector(float(attributes["xStart"])*10,float(attributes["yStart"])*10,0) - p2 = FreeCAD.Vector(float(attributes["xEnd"])*10,float(attributes["yEnd"])*10,0) - height = float(attributes["height"])*10 - thickness = float(attributes["thickness"])*10 - if DEBUG: print("Creating wall: ",name) - line = Draft.makeLine(p1,p2) - if self.makeIndividualWalls: - wall = Arch.makeWall(baseobj=line,width=thickness,height=height,name=name) - wall.Label = name - else: - self.lines.setdefault(str(thickness)+";"+str(height),[]).append(line) - - elif tag == "pieceOfFurniture": - name = attributes["name"] - data = self.z.read(attributes["model"]) - th,tf = tempfile.mkstemp(suffix=".obj") - f = pyopen(tf,"wb") - f.write(data) - f.close() - os.close(th) - m = Mesh.read(tf) - fx = (float(attributes["width"])/100)/m.BoundBox.XLength - fy = (float(attributes["height"])/100)/m.BoundBox.YLength - fz = (float(attributes["depth"])/100)/m.BoundBox.ZLength - mat = FreeCAD.Matrix() - mat.scale(1000*fx,1000*fy,1000*fz) - mat.rotateX(math.pi/2) - mat.rotateZ(math.pi) - if DEBUG: print("Creating furniture: ",name) - if "angle" in attributes: - mat.rotateZ(float(attributes["angle"])) - m.transform(mat) - os.remove(tf) - p = m.BoundBox.Center.negative() - p = p.add(FreeCAD.Vector(float(attributes["x"])*10,float(attributes["y"])*10,0)) - p = p.add(FreeCAD.Vector(0,0,m.BoundBox.Center.z-m.BoundBox.ZMin)) - m.Placement.Base = p - obj = FreeCAD.ActiveDocument.addObject("Mesh::Feature",name) - obj.Mesh = m - self.furniture.append(obj) + pi = Base.ProgressIndicator() + try: + importer = BIM.importers.importSH3DHelper.SH3DImporter(pi) + importer.import_sh3d_from_filename(filename) + finally: + pi.stop() - elif tag == "doorOrWindow": - name = attributes["name"] - data = self.z.read(attributes["model"]) - th,tf = tempfile.mkstemp(suffix=".obj") - f = pyopen(tf,"wb") - f.write(data) - f.close() - os.close(th) - m = Mesh.read(tf) - fx = (float(attributes["width"])/100)/m.BoundBox.XLength - fy = (float(attributes["height"])/100)/m.BoundBox.YLength - fz = (float(attributes["depth"])/100)/m.BoundBox.ZLength - mat = FreeCAD.Matrix() - mat.scale(1000*fx,1000*fy,1000*fz) - mat.rotateX(math.pi/2) - m.transform(mat) - b = m.BoundBox - v1 = FreeCAD.Vector(b.XMin,b.YMin-500,b.ZMin) - v2 = FreeCAD.Vector(b.XMax,b.YMin-500,b.ZMin) - v3 = FreeCAD.Vector(b.XMax,b.YMax+500,b.ZMin) - v4 = FreeCAD.Vector(b.XMin,b.YMax+500,b.ZMin) - sub = Part.makePolygon([v1,v2,v3,v4,v1]) - sub = Part.Face(sub) - sub = sub.extrude(FreeCAD.Vector(0,0,b.ZLength)) - os.remove(tf) - shape = Arch.getShapeFromMesh(m) - if not shape: - shape=Part.Shape() - shape.makeShapeFromMesh(m.Topology,0.100000) - shape = shape.removeSplitter() - if shape: - if DEBUG: print("Creating window: ",name) - if "angle" in attributes: - shape.rotate(shape.BoundBox.Center,FreeCAD.Vector(0,0,1),math.degrees(float(attributes["angle"]))) - sub.rotate(shape.BoundBox.Center,FreeCAD.Vector(0,0,1),math.degrees(float(attributes["angle"]))) - p = shape.BoundBox.Center.negative() - p = p.add(FreeCAD.Vector(float(attributes["x"])*10,float(attributes["y"])*10,0)) - p = p.add(FreeCAD.Vector(0,0,shape.BoundBox.Center.z-shape.BoundBox.ZMin)) - if "elevation" in attributes: - p = p.add(FreeCAD.Vector(0,0,float(attributes["elevation"])*10)) - shape.translate(p) - sub.translate(p) - obj = FreeCAD.ActiveDocument.addObject("Part::Feature",name+"_body") - obj.Shape = shape - subobj = FreeCAD.ActiveDocument.addObject("Part::Feature",name+"_sub") - subobj.Shape = sub - if FreeCAD.GuiUp: - subobj.ViewObject.hide() - win = Arch.makeWindow(baseobj=obj,name=name) - win.Label = name - win.Subvolume = subobj - self.windows.append(win) - else: - print("importSH3D: Error creating shape for door/window "+name) + FreeCAD.ActiveDocument.recompute() diff --git a/src/Mod/BIM/importers/importSH3DHelper.py b/src/Mod/BIM/importers/importSH3DHelper.py new file mode 100644 index 000000000000..34a0679fbb57 --- /dev/null +++ b/src/Mod/BIM/importers/importSH3DHelper.py @@ -0,0 +1,1718 @@ +# *************************************************************************** +# * Copyright (c) 2024 Julien Masnada * +# * * +# * This program is free software; you can redistribute it and/or modify * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * +# * the License, or (at your option) any later version. * +# * for detail see the LICENCE text file. * +# * * +# * This program is distributed in the hope that it will be useful, * +# * but WITHOUT ANY WARRANTY; without even the implied warranty of * +# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +# * GNU Library General Public License for more details. * +# * * +# * You should have received a copy of the GNU Library General Public * +# * License along with this program; if not, write to the Free Software * +# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +# * USA * +# * * +# *************************************************************************** +"""Helper functions that are used by SH3D importer.""" +import math +import os +import re +import uuid +import xml.etree.ElementTree as ET +import zipfile + +import Arch +import Draft +import DraftGeomUtils +import DraftVecUtils +import draftutils.gui_utils as gui_utils +import Mesh +import numpy +import Part +from draftutils.messages import _err, _log, _msg, _wrn +from draftutils.params import get_param_arch + +import FreeCAD as App + +if App.GuiUp: + import FreeCADGui as Gui + from draftutils.translate import translate +else: + # \cond + def translate(_, text): + return text + # \endcond + +# Used to make section edges more visible (https://coolors.co/5bc0eb-fde74c-9bc53d-e55934-fa7921) +DEBUG_EDGES_COLORS = ["5bc0eb", "fde74c", "9bc53d", "e55934", "fa7921"] +DEBUG_POINT_COLORS = ["011627", "ff0022", "41ead4", "fdfffc", "b91372"] + +try: + from Render import Camera, PointLight + from Render.project import Project + RENDER_IS_AVAILABLE = True +except : + RENDER_IS_AVAILABLE = False + +# Sometimes, the Part::Sweep creates a "twisted" sweep that +# impeeds the creation of the corresponding wall. +FIX_INVALID_SWEEP = False + +# SweetHome3D is in cm while FreeCAD is in mm +FACTOR = 10 +DEFAULT_WALL_WIDTH = 100 +TOLERANCE = float(.1) + +ORIGIN = App.Vector(0, 0, 0) +X_NORM = App.Vector(1, 0, 0) +Y_NORM = App.Vector(0, 1, 0) +Z_NORM = App.Vector(0, 0, 1) + +# The Windows lookup map. This is really brittle and a better system should +# be found. Arch.WindowPresets = ["Fixed", "Open 1-pane", "Open 2-pane", +# "Sash 2-pane", "Sliding 2-pane", "Simple door", "Glass door", +# "Sliding 4-pane", "Awning"] +# unzip -p all-windows.sh3d Home.xml | \ +# grep 'catalogId=' | \ +# sed -e 's/.*catalogId=//;s/ name=.*/: ("Open 2-pane","Window"),/' | sort -u +# unzip -p all-doors.sh3d Home.xml | \ +# grep 'catalogId=' | \ +# sed -e 's/.*catalogId=//;s/ name=.*/: ("Simple door","Door")/' | sort -u +DOOR_MODELS = { + 'eTeks#doorFrame': ("Opening only", "Opening Element"), + 'eTeks#door': ("Simple door","Door"), + 'eTeks#frontDoor': ("Simple door","Door"), + 'eTeks#garageDoor': ("Simple door","Door"), + 'eTeks#openDoor': ("Simple door","Door"), + 'eTeks#roundDoorFrame': ("Opening only", "Opening Element"), + 'eTeks#roundedDoor': ("Simple door","Door"), + 'Kator Legaz#exterior-door-01': ("Simple door","Door"), + 'Kator Legaz#exterior-door-02': ("Simple door","Door"), + 'Kator Legaz#exterior-door-03': ("Glass door","Door"), + 'Kator Legaz#exterior-door-05': ("Simple door","Door"), + 'Kator Legaz#exterior-door-07': ("Glass door","Door"), + 'Kator Legaz#screen-door': ("Simple door","Door"), + 'Scopia#door': ("Simple door","Door"), + 'Scopia#double_door_2': ("Simple door","Door"), + 'Scopia#double_door': ("Glass door","Door"), + 'Scopia#double_door_with_little_part': ("Glass door","Door"), + 'Scopia#elevator-door': ("Simple door","Door"), + 'Scopia#garage-door2': ("Simple door","Door"), + 'Scopia#garage-door': ("Simple door","Door"), + 'Scopia#glassDoor2': ("Glass door","Door"), + 'Scopia#glass_door': ("Glass door","Door"), + 'Scopia#puerta': ("Simple door","Door"), + + 'eTeks#doubleFrenchWindow126x200': ("Open 2-pane","Window"), + 'eTeks#doubleHungWindow80x122': ("Open 2-pane","Window"), + 'eTeks#doubleOutwardOpeningWindow': ("Open 2-pane","Window"), + 'eTeks#doubleWindow126x123': ("Open 2-pane","Window"), + 'eTeks#doubleWindow126x163': ("Open 2-pane","Window"), + 'eTeks#fixedTriangleWindow85x85': ("Open 2-pane","Window"), + 'eTeks#fixedWindow85x123': ("Open 2-pane","Window"), + 'eTeks#frenchWindow85x200': ("Open 2-pane","Window"), + 'eTeks#halfRoundWindow': ("Open 2-pane","Window"), + 'eTeks#roundWindow': ("Open 2-pane","Window"), + 'eTeks#sliderWindow126x200': ("Open 2-pane","Window"), + 'eTeks#window85x123': ("Open 2-pane","Window"), + 'eTeks#window85x163': ("Open 2-pane","Window"), + 'Kator Legaz#window-01': ("Open 2-pane","Window"), + 'Kator Legaz#window-08-02': ("Open 2-pane","Window"), + 'Kator Legaz#window-08': ("Open 2-pane","Window"), + 'Scopia#turn-window': ("Open 2-pane","Window"), + 'Scopia#window_2x1_medium_with_large_pane': ("Open 2-pane","Window"), + 'Scopia#window_2x1_with_sliders': ("Open 2-pane","Window"), + 'Scopia#window_2x3_arched': ("Open 2-pane","Window"), + 'Scopia#window_2x3': ("Open 2-pane","Window"), + 'Scopia#window_2x3_regular': ("Open 2-pane","Window"), + 'Scopia#window_2x4_arched': ("Open 2-pane","Window"), + 'Scopia#window_2x4': ("Open 2-pane","Window"), + 'Scopia#window_2x6': ("Open 2-pane","Window"), + 'Scopia#window_3x1': ("Open 2-pane","Window"), + 'Scopia#window_4x1': ("Open 2-pane","Window"), + 'Scopia#window_4x3_arched': ("Open 2-pane","Window"), + 'Scopia#window_4x3': ("Open 2-pane","Window"), + 'Scopia#window_4x5': ("Open 2-pane","Window"), + +} + +class SH3DImporter: + """The main class to import an SH3D file. + + As an implementation detail, note that we do not use an + xml.sax parser as the XML elements found in the SH3D file + do not follow a natural / dependency order (i.e. doors and + windows depend upon wall but are usually defined *before* + the different elements) + """ + + def __init__(self, progress_bar=None): + """Create a SH3DImporter instance to import the given SH3D file. + + Args: + progress_bar (ProgressIndicator,optional): a ProgressIndicator + called to let the User monitor the import process + """ + super().__init__() + self.filename = None + self.progress_bar = progress_bar + self.preferences = {} + self.handlers = {} + self.total_object_count = 0 + self.current_object_count = 0 + self.zip = None + self.fc_objects = {} + self.project = None + self.site = None + self.building = None + self.default_floor = None + self.floors = {} + self.walls = [] + + def import_sh3d_from_string(self, home:str): + """Import the SH3D Home from a String. + + Args: + home (str): the string containing the XML of the home + to be imported. + + Raises: + ValueError: if an invalid SH3D file is detected + """ + self._get_preferences() + self._setup_handlers() + + if self.progress_bar: + self.progress_bar.start(f"Importing SweetHome 3D Home. Please wait ...", -1) + self._import_home(ET.fromstring(home)) + + def import_sh3d_from_filename(self, filename:str): + """Import the SH3D file. + + Args: + filename (str): the filename of the SH3D file to be imported. + + Raises: + ValueError: if an invalid SH3D file is detected + """ + self.filename = filename + if App.GuiUp and get_param_arch("sh3dShowDialog"): + Gui.showPreferences("Import-Export", 7) + + self._get_preferences() + self._setup_handlers() + + if self.progress_bar: + self.progress_bar.start(f"Importing SweetHome 3D file '{self.filename}'. Please wait ...", -1) + with zipfile.ZipFile(self.filename, 'r') as zip: + self.zip = zip + entries = zip.namelist() + if "Home.xml" not in entries: + raise ValueError(f"Invalid SweetHome3D file {self.filename}: missing Home.xml") + self._import_home(ET.fromstring(zip.read("Home.xml"))) + + def _import_home(self, home): + doc = App.ActiveDocument + self.total_object_count = self._get_object_count(home) + _msg(f"Importing home '{home.get('name')}' ...") + # Create the groups to organize the different resources together + self._create_groups() + + # Get all the FreeCAD object in the active doc, in order to allow + # for merge of existing object + if self.preferences["MERGE"]: + for object in doc.Objects: + if hasattr(object, 'id'): + self.fc_objects[object.id] = object + + # Let's create the project and site for this import + self._setup_project(home) + + # Import the element if any. If none are defined + # create a default one. + if home.find(path='level') != None: + self._import_elements(home, 'level') + else: + # Has the default floor already been created from a + # previous import? + if self.preferences["DEBUG"]: _log("No level defined. Using default level ...") + self.default_floor = self.fc_objects.get('Level') if 'Level' in self.fc_objects else self._create_default_floor() + self.add_floor(self.default_floor) + + # Importing elements ... + self._import_elements(home, 'room') + + # Importing elements ... + self._import_elements(home, 'wall') + + self._refresh() + if App.GuiUp and self.preferences["FIT_VIEW"]: + Gui.SendMsgToActiveView("ViewFit") + + # Importing elements ... + if self.preferences["IMPORT_DOORS_AND_WINDOWS"]: + self._import_elements(home, 'doorOrWindow') + self._refresh() + + # Importing && elements ... + if self.preferences["IMPORT_FURNITURES"]: + self._import_elements(home, 'pieceOfFurniture') + for furniture_group in home.findall('furnitureGroup'): + self._import_elements(furniture_group, 'pieceOfFurniture', False) + self._refresh() + + # Importing elements ... + if self.preferences["IMPORT_LIGHTS"]: + self._import_elements(home, 'light') + self._refresh() + + # Importing elements ... + if self.preferences["IMPORT_CAMERAS"]: + self._import_elements(home, 'observerCamera') + self._import_elements(home, 'camera') + self._refresh() + + if self.preferences["CREATE_RENDER_PROJECT"] and self.site: + Project.create(doc, renderer="Povray", template="povray_standard.pov") + Gui.Selection.clearSelection() + Gui.Selection.addSelection(self.site) + Gui.runCommand('Render_View', 0) + self._refresh() + + _msg(f"Successfully imported home '{home.get('name')}' ...") + + + def _get_object_count(self, home): + """Get an approximate count of object to be imported + """ + count = 0 + for tag in self.handlers.keys(): + count = count + len(list(home.findall(tag))) + return count + + def _get_preferences(self): + """Retrieve the SH3D preferences available in Mod/Arch.""" + self.preferences = { + 'DEBUG': get_param_arch("sh3dDebug"), + 'IMPORT_DOORS_AND_WINDOWS': get_param_arch("sh3dImportDoorsAndWindows"), + 'IMPORT_FURNITURES': get_param_arch("sh3dImportFurnitures"), + 'IMPORT_LIGHTS': get_param_arch("sh3dImportLights") and RENDER_IS_AVAILABLE, + 'IMPORT_CAMERAS': get_param_arch("sh3dImportCameras") and RENDER_IS_AVAILABLE, + 'MERGE': get_param_arch("sh3dMerge"), + 'CREATE_ARCH_EQUIPMENT': get_param_arch("sh3dCreateArchEquipment"), + 'JOIN_ARCH_WALL': get_param_arch("sh3dJoinArchWall"), + 'CREATE_RENDER_PROJECT': get_param_arch("sh3dCreateRenderProject") and RENDER_IS_AVAILABLE, + 'FIT_VIEW': get_param_arch("sh3dFitView"), + 'CREATE_IFC_PROJECT': get_param_arch("sh3dCreateIFCProject"), + 'DEFAULT_FLOOR_COLOR': color_fc2sh(get_param_arch("sh3dDefaultFloorColor")), + 'DEFAULT_CEILING_COLOR': color_fc2sh(get_param_arch("sh3dDefaultCeilingColor")), + } + + def _setup_handlers(self): + self.handlers = { + 'level': LevelHandler(self), + 'room': RoomHandler(self), + 'wall': WallHandler(self), + } + if self.preferences["IMPORT_DOORS_AND_WINDOWS"]: + self.handlers['doorOrWindow'] = DoorOrWindowHandler(self) + + if self.preferences["IMPORT_FURNITURES"]: + self.handlers['pieceOfFurniture'] = FurnitureHandler(self) + self.handlers['furnitureGroup'] = None + + if self.preferences["IMPORT_LIGHTS"]: + self.handlers['light'] = LightHandler(self) + + if self.preferences["IMPORT_CAMERAS"]: + camera_handler = CameraHandler(self) + self.handlers['observerCamera'] = camera_handler + self.handlers['camera'] = camera_handler + + def _refresh(self): + App.ActiveDocument.recompute() + if App.GuiUp: + Gui.updateGui() + + def set_property(self, obj, type_, name, description, value, valid_values=None): + """Set the attribute of the given object as an FC property + + Note that the method has a default behavior when the value is not specified. + + Args: + obj (object): The FC object to add a property to + type_ (str): the type of property to add + name (str): the name of the property to add + description (str): a short description of the property to add + value (xml.etree.ElementTree.Element|str): The property's value. Defaults to None. + valid_values (list): an optional list of valid values + """ + + self._add_property(obj, type_, name, description) + if valid_values: + setattr(obj, name, valid_values) + if value is None: + if self.preferences["DEBUG"]:_log(f"Setting obj.{name}=None") + return + if type(value) is ET.Element: + if type_ == "App::PropertyString": + value = str(value.get(name, "")) + elif type_ == "App::PropertyFloat": + value = float(value.get(name, 0)) + elif type_ == "App::PropertyInteger": + value = int(value.get(name, 0)) + elif type_ == "App::PropertyBool": + value = bool(value.get(name, True)) + if self.preferences["DEBUG"]: + _log(f"Setting @{obj}.{name} = {value}") + setattr(obj, name, value) + + def _add_property(self, obj, property_type, name, description): + """Add an property to the FC object. + + All properties will be added under the 'SweetHome3D' group + + Args: + obj (object): TheFC object to add a property to + property_type (str): the type of property to add + name (str): the name of the property to add + description (str): a short description of the property to add + """ + if name not in obj.PropertiesList: + obj.addProperty(property_type, name, "SweetHome3D", description) + + def get_fc_object(self, id, sh_type): + """Returns the FC doc element corresponding to the imported id and sh_type + + Args: + id (str): the id of the element to lookup + sh_type (str, optional): The SweetHome type of the element to be imported. Defaults to None. + + Returns: + FCObject: The FC object that correspond to the imported SH element + """ + if self.preferences["MERGE"] and id in self.fc_objects: + fc_object = self.fc_objects[id] + if sh_type: + assert fc_object.shType == sh_type, f"Invalid shType: expected {sh_type}, got {fc_object.shType}" + if self.preferences["DEBUG"]: + _log(translate("BIM", f"Merging imported element '{id}' with existing element of type '{type(fc_object)}'")) + return fc_object + if self.preferences["DEBUG"]: + _log(translate("BIM", f"No element found with id '{id}' and type '{sh_type}'")) + return None + + def add_floor(self, floor): + self.floors[floor.id] = floor + self.building.addObject(floor) + + def get_floor(self, level_id): + """Returns the Floor associated with the level_id. + + Returns the first level if only one defined or level_id is None + + Args: + levels (list): The list of imported levels + level_id (string): the level @id + + Returns: + level: The level + """ + if self.default_floor or not level_id: + return self.default_floor + return self.floors.get(level_id, None) + + def add_wall(self, wall): + self.walls.append(wall) + + def _create_groups(self): + """Create FreeCAD Group for the different imported elements + """ + doc = App.ActiveDocument + if self.preferences["IMPORT_LIGHTS"] and not doc.getObject("Lights"): + _log(f"Creating Lights group ...") + doc.addObject("App::DocumentObjectGroup", "Lights") + if self.preferences["IMPORT_CAMERAS"] and not doc.getObject("Cameras"): + _log(f"Creating Cameras group ...") + doc.addObject("App::DocumentObjectGroup", "Cameras") + + def _setup_project(self, elm): + """Create the Arch::Project and Arch::Site for this import + + Args: + elm (str): the element + + """ + if 'Project' in self.fc_objects: + self.project = self.fc_objects.get('Project') + elif self.preferences["CREATE_IFC_PROJECT"]: + self.project = self._create_project() + if 'Site' in self.fc_objects: + self.site = self.fc_objects.get('Site') + else: + self.site = self._create_site() + if elm.get('name') in self.fc_objects: + self.building = self.fc_objects.get(elm.get('name')) + else: + self.building = self._create_building(elm) + + if self.preferences["CREATE_IFC_PROJECT"]: + self.project.addObject(self.site) + + self.site.addObject(self.building) + + def _create_project(self): + """Create a default Arch::Project object + """ + project = Arch.makeProject([]) + self.set_property(project, "App::PropertyString", "id", "The element's id", "Project") + return project + + def _create_site(self): + """Create a default Arch::Site object + """ + site = Arch.makeSite([]) + self.set_property(site, "App::PropertyString", "id", "The element's id", "Site") + return site + + def _create_building(self, elm): + """Create a default Arch::Building object + + Args: + elm (str): the element + + Returns: + the Arch::Building + """ + building = Arch.makeBuilding([]) + self.set_property(building, "App::PropertyString", "shType", "The element type", 'building') + self.set_property(building, "App::PropertyString", "id", "The element's id", elm.get('name')) + for property in elm.findall('property'): + name = re.sub('[^A-Za-z0-9]+', '', property.get('name')) + value = property.get('value') + self.set_property(building, "App::PropertyString", name, "", value) + return building + + def _create_default_floor(self): + """Create a default Arch::Floor object + """ + floor = Arch.makeFloor() + floor.Label = 'Level' + floor.Placement.Base.z = 0 + floor.Height = 2500 + + self.set_property(floor, "App::PropertyString", "shType", "The element type", 'level') + self.set_property(floor, "App::PropertyString", "id", "The element's id", 'Level') + self.set_property(floor, "App::PropertyFloat", "floorThickness", "The floor's slab thickness", dim_fc2sh(floor.Height)) + if self.preferences["IMPORT_FURNITURES"]: + group = floor.newObject("App::DocumentObjectGroup", "Furnitures") + self.set_property(floor, "App::PropertyString", "FurnitureGroupName", "The DocumentObjectGroup name for all furnitures in this floor", group.Name) + group = floor.newObject("App::DocumentObjectGroup", "Baseboards") + self.set_property(floor, "App::PropertyString", "BaseboardGroupName", "The DocumentObjectGroup name for all baseboards on this floor", group.Name) + + return floor + + def _import_elements(self, parent, tag, update_progress=True): + """Generic function to import a specific element. + + This function will lookup the handler registered for the elements + `tag` and then call it on each item. It also provides some update + on the whole process. + + Args: + parent (Element): the parent of the elements to be imported. + Usually the element. + tag (str): the tag of the elements to be imported. + update_progress (bool, optional): whether to update the + progress. Set to false when importing a group of elements. + Defaults to True. + """ + tags = list(self.handlers.keys()) + elements = parent.findall(tag) + if update_progress and self.progress_bar: + self.progress_bar.stop() + self.progress_bar.start(f"Step {tags.index(tag)+1}/{len(tags)}: importing {len(elements)} '{tag}' elements. Please wait ...", len(elements)) + _msg(f"Importing {len(elements)} '{tag}' elements ...") + def _process(tuple): + (i, elm) = tuple + _msg(f"Importing {tag}#{i} ({self.current_object_count + 1}/{self.total_object_count}) ...") + try: + self.handlers[tag].process(parent, i, elm) + except Exception as e: + _err(f"Failed to import <{tag}>#{i} ({elm.get('id', elm.get('name'))}):") + _err(str(e)) + if update_progress and self.progress_bar: + self.progress_bar.next() + self.current_object_count = self.current_object_count + 1 + list(map(_process, enumerate(elements))) + +class BaseHandler: + """The base class for all importers.""" + + def __init__(self, importer: SH3DImporter): + self.importer = importer + + def setp(self, obj, type_, name, description, value=None, valid_values=None): + """Set a property on the object + + Args: + obj (FreeCAD): the object on which to set the property + type_ (str): the property type + name (str): the property name + description (str): the property description + value (xml.etree.ElementTree.Element|str, optional): The + property's value. Defaults to None. + valid_values (list, optional): The property's enumerated values. + Defaults to None. + """ + self.importer.set_property(obj, type_, name, description, value, valid_values) + + def get_fc_object(self, id, sh_type): + """Returns the FC object with the specified id and sh_type + + Args: + id (str): the id of the element to lookup + sh_type (str, optional): The SweetHome type of the element to be + imported. Defaults to None. + + Returns: + FCObject: The FC object that correspond to the imported SH element + """ + return self.importer.get_fc_object(id, sh_type) + + def get_floor(self, level_id): + """Returns the Floor associated with the level_id. + + Returns the first level if there is just one level or if level_id is + None + + Args: + levels (list): The list of imported levels + level_id (string): the level @id + + Returns: + level: The level + """ + return self.importer.get_floor(level_id) + + +class LevelHandler(BaseHandler): + """A helper class to import a SH3D `` object.""" + + def __init__(self, importer: SH3DImporter): + super().__init__(importer) + + def process(self, parent, i, elm): + """Creates and returns a Arch::Floor + + Args: + i (int): the ordinal of the imported element + elm (Element): the xml element + """ + floor = None + if self.importer.preferences["MERGE"]: + floor = self.get_fc_object(elm.get("id"), 'level') + + if not floor: + floor = Arch.makeFloor() + + floor.Label = elm.get('name') + floor.Placement.Base.z = dim_sh2fc(float(elm.get('elevation'))) + floor.Height = dim_sh2fc(float(elm.get('height'))) + self._set_properties(floor, elm) + + floor.ViewObject.Visibility = elm.get('visible', 'true') == 'true' + + if self.importer.preferences["IMPORT_FURNITURES"]: + group = floor.newObject("App::DocumentObjectGroup", "Furnitures") + self.setp(floor, "App::PropertyString", "FurnitureGroupName", "The DocumentObjectGroup name for all furnitures on this floor", group.Name) + group = floor.newObject("App::DocumentObjectGroup", "Baseboards") + self.setp(floor, "App::PropertyString", "BaseboardGroupName", "The DocumentObjectGroup name for all baseboards on this floor", group.Name) + + self.importer.add_floor(floor) + + def _set_properties(self, obj, elm): + self.setp(obj, "App::PropertyString", "shType", "The element type", 'level') + self.setp(obj, "App::PropertyString", "id", "The floor's id", elm) + self.setp(obj, "App::PropertyFloat", "floorThickness", "The floor's slab thickness", dim_sh2fc(float(elm.get('floorThickness')))) + self.setp(obj, "App::PropertyInteger", "elevationIndex", "The floor number", elm) + self.setp(obj, "App::PropertyBool", "viewable", "Whether the floor is viewable", elm) + + +class RoomHandler(BaseHandler): + """A helper class to import a SH3D `` object. + + It also handles the elements found as children of the element. + """ + + def __init__(self, importer: SH3DImporter): + super().__init__(importer) + + def process(self, parent, i, elm): + """Creates and returns a Arch::Structure from the imported_room object + + Args: + i (int): the ordinal of the imported element + elm (Element): the xml element + """ + level_id = elm.get('level', None) + floor = self.get_floor(level_id) + assert floor != None, f"Missing floor '{level_id}' for '{elm.get('id')}' ..." + + points = [] + for point in elm.findall('point'): + x = float(point.get('x')) + y = float(point.get('y')) + z = dim_fc2sh(floor.Placement.Base.z) + points.append(coord_sh2fc(App.Vector(x, y, z))) + + slab = None + if self.importer.preferences["MERGE"]: + slab = self.get_fc_object(elm.get("id"), 'room') + + if not slab: + line = Draft.make_wire(points, placement=App.Placement(), closed=True, face=True, support=None) + slab = Arch.makeStructure(line, height=floor.floorThickness) + + slab.Label = elm.get('name', 'Room') + slab.IfcType = "Slab" + slab.Normal = -Z_NORM + + color = elm.get('floorColor', self.importer.preferences["DEFAULT_FLOOR_COLOR"]) + set_color_and_transparency(slab, color) + self._set_properties(slab, elm) + floor.addObject(slab) + + def _set_properties(self, obj, elm): + floor_color = elm.get('floorColor',self.importer.preferences["DEFAULT_FLOOR_COLOR"]) + ceiling_color = elm.get('ceilingColor', self.importer.preferences["DEFAULT_CEILING_COLOR"]) + + self.setp(obj, "App::PropertyString", "shType", "The element type", 'room') + self.setp(obj, "App::PropertyString", "id", "The slab's id", elm.get('id', str(uuid.uuid4()))) + self.setp(obj, "App::PropertyFloat", "nameAngle", "The room's name angle", elm) + self.setp(obj, "App::PropertyFloat", "nameXOffset", "The room's name x offset", elm) + self.setp(obj, "App::PropertyFloat", "nameYOffset", "The room's name y offset", elm) + self.setp(obj, "App::PropertyBool", "areaVisible", "Whether the area of the room is displayed in the plan view", elm) + self.setp(obj, "App::PropertyFloat", "areaAngle", "The room's area annotation angle", elm) + self.setp(obj, "App::PropertyFloat", "areaXOffset", "The room's area annotation x offset", elm) + self.setp(obj, "App::PropertyFloat", "areaYOffset", "The room's area annotation y offset", elm) + self.setp(obj, "App::PropertyBool", "floorVisible", "Whether the floor of the room is displayed", elm) + self.setp(obj, "App::PropertyString", "floorColor", "The room's floor color", floor_color) + self.setp(obj, "App::PropertyFloat", "floorShininess", "The room's floor shininess", elm) + self.setp(obj, "App::PropertyBool", "ceilingVisible", "Whether the ceiling of the room is displayed", elm) + self.setp(obj, "App::PropertyString", "ceilingColor", "The room's ceiling color", ceiling_color) + self.setp(obj, "App::PropertyFloat", "ceilingShininess", "The room's ceiling shininess", elm) + self.setp(obj, "App::PropertyBool", "ceilingFlat", "", elm) + + +class WallHandler(BaseHandler): + """A helper class to import a SH3D `` object.""" + + def __init__(self, importer: SH3DImporter): + super().__init__(importer) + self.wall_sections = {} + + def process(self, parent, i, elm): + """Creates and returns a Arch::Structure from the imported_wall object + + Args: + parent (Element): the parent Element of the wall to be imported + i (int): the ordinal of the imported element + elm (Element): the xml element + """ + level_id = elm.get('level', None) + floor = self.get_floor(level_id) + assert floor != None, f"Missing floor '{level_id}' for '{elm.get('id')}' ..." + + wall = None + if self.importer.preferences["MERGE"]: + wall = self.get_fc_object(elm.get("id"), 'wall') + + if not wall: + prev = self._get_sibling_wall(parent, elm, 'wallAtStart') + next = self._get_sibling_wall(parent, elm, 'wallAtEnd') + wall = self._create_wall(floor, prev, next, elm) + if not wall: + _log(f"No wall created for {elm.get('id')}. Skipping!") + return + + self._set_wall_colors(wall, elm) + + wall.IfcType = "Wall" + wall.Label = f"wall{i}" + + self._set_properties(wall, elm) + + floor.addObject(wall) + self.importer.add_wall(wall) + + if self.importer.preferences["IMPORT_FURNITURES"]: + App.ActiveDocument.recompute([wall]) + for baseboard in elm.findall('baseboard'): + self._import_baseboard(floor, wall, baseboard) + + def _get_sibling_wall(self, parent, wall, sibling_attribute_name): + sibling_wall_id = wall.get(sibling_attribute_name, None) + if not sibling_wall_id: + return None + sibling_wall = parent.find(f"./wall[@id='{sibling_wall_id}']") + if sibling_wall is None: + wall_id = wall.get('id') + raise ValueError(f"Invalid SweetHome3D file: wall {wall_id} reference an unknown wall {sibling_wall_id}") + return sibling_wall + + def _set_properties(self, obj, elm): + self.setp(obj, "App::PropertyString", "shType", "The element type", 'wall') + self.setp(obj, "App::PropertyString", "id", "The wall's id", elm) + self.setp(obj, "App::PropertyString", "wallAtStart", "The Id of the contiguous wall at the start of this wall", elm) + self.setp(obj, "App::PropertyString", "wallAtEnd", "The Id of the contiguous wall at the end of this wall", elm) + self.setp(obj, "App::PropertyString", "pattern", "The pattern of this wall in plan view", elm) + self.setp(obj, "App::PropertyFloat", "leftSideShininess", "The wall's left hand side shininess", elm) + self.setp(obj, "App::PropertyFloat", "rightSideShininess", "The wall's right hand side shininess", elm) + + def _create_wall(self, floor, prev, next, elm): + """Create an Arch::Structure from an SH3D Element. + + The constructed wall will either be a straight wall or a curved + wall depending on the `elm` attributes. + + Args: + floor (Arch::Structure): The floor the wall belongs to + prev (Element): the xml element for the previous sibling wall + next (Element): the xml element for the next sibling wall + elm (Element): the xml element for the wall to be imported + + Returns: + Arch::Wall: the newly created wall + """ + wall_details = self._get_wall_details(floor, elm) + assert wall_details is not None, f"Fail to get details of wall {elm.get('id')}. Bailing out! {elm} / {wall_details}" + + # Both the wall at start or the wall at end can be None. + prev_wall_details = self._get_wall_details(floor, prev) + next_wall_details = self._get_wall_details(floor, next) + + # Is the wall curved (i.e. arc_extent != 0) ? + if wall_details[5] != 0: + section_start, section_end, spine = self._create_curved_segment( + wall_details, + prev_wall_details, + next_wall_details) + else: + section_start, section_end, spine = self._create_straight_segment( + wall_details, + prev_wall_details, + next_wall_details) + + sweep = App.ActiveDocument.addObject('Part::Sweep') + sweep.Sections = [section_start, section_end] + sweep.Spine = spine + sweep.Solid = True + sweep.Frenet = False + section_start.Visibility = False + section_end.Visibility = False + spine.Visibility = False + App.ActiveDocument.recompute([sweep]) + # Sometimes the Part::Sweep creates a "twisted" sweep which + # result in a broken wall. The solution is to use a compound + # object based on ruled surface instead. + if FIX_INVALID_SWEEP and (sweep.Shape.isNull() or not sweep.Shape.isValid()): + _log(f"Part::Sweep for wall#{elm.get('id')} is invalid. Using ruled surface instead ...") + ruled_surface = App.ActiveDocument.addObject('Part::RuledSurface') + ruled_surface.Curve1 = section_start + ruled_surface.Curve2 = section_end + App.ActiveDocument.recompute([ruled_surface]) + _log(f"Creating compound object ...") + compound = App.ActiveDocument.addObject('Part::Compound') + compound.Links = [ruled_surface, section_start, section_end] + App.ActiveDocument.recompute([compound]) + _log(f"Creating solid ...") + solid = App.ActiveDocument.addObject("Part::Feature") + solid.Shape = Part.Solid(Part.Shell(compound.Shape.Faces)) + doc = App.ActiveDocument + doc.removeObject(compound.Label) + doc.recompute() + doc.removeObject(ruled_surface.Label) + doc.recompute() + doc.removeObject(sweep.Label) + doc.recompute() + doc.removeObject(spine.Label) + doc.recompute() + doc.removeObject(section_start.Label) + doc.removeObject(section_end.Label) + wall = Arch.makeWall(solid) + else: + wall = Arch.makeWall(sweep) + # For some reason the Length of the spine is not propagated to the + # wall itself... + wall.Length = spine.Length + return wall + + def _get_wall_details(self, floor, elm): + """Returns the relevant element for the given wall. + + Args: + floor (Slab): the Slab the wall belongs to + elm (Element): the wall being imported + + Returns: + Vector: the wall's starting point + vector: the wall's ending point + float: the thickness + float: the wall's height at the starting point + float: the wall's height at the ending point + float: the wall's arc in degrees + """ + if elm is None: + return None + x_start = float(elm.get('xStart')) + y_start = float(elm.get('yStart')) + x_end = float(elm.get('xEnd')) + y_end = float(elm.get('yEnd')) + z = dim_fc2sh(floor.Placement.Base.z) + + thickness = dim_sh2fc(elm.get('thickness')) + arc_extent = ang_sh2fc(elm.get('arcExtent', 0)) + height_start = dim_sh2fc(elm.get('height', dim_fc2sh(floor.Height))) + height_end = dim_sh2fc(elm.get('heightAtEnd', dim_fc2sh(height_start))) + + start = coord_sh2fc(App.Vector(x_start, y_start, z)) + end = coord_sh2fc(App.Vector(x_end, y_end, z)) + + return (start, end, thickness, height_start, height_end, arc_extent) + + def _create_straight_segment(self, wall_details, prev_wall_details, next_wall_details): + """Returns the sections and spine for a straight wall. + + Args: + wall_details (tuple): the wall details for the wall being imported + prev_wall_details (tuple): the details for the previous sibling + next_wall_details (tuple): the details for the next sibling + + Returns: + Rectangle, Rectangle, spine: both section and the line for the wall + """ + (start, end, _, _, _, _) = wall_details + + section_start = self._get_section(wall_details, True, prev_wall_details) + section_end = self._get_section(wall_details, False, next_wall_details) + + spine = Draft.makeLine(start, end) + App.ActiveDocument.recompute([section_start, section_end, spine]) + if self.importer.preferences["DEBUG"]: + _log(f"_create_straight_segment(): wall {self._pv(start)}->{self._pv(end)} => section_start={self._ps(section_start)}, section_end={self._ps(section_end)}") + + return section_start, section_end, spine + + def _create_curved_segment(self, wall_details, prev_wall_details, next_wall_details): + """Returns the sections and spine for a curved wall. + + Args: + wall_details (tuple): the wall details for the wall being imported + prev_wall_details (tuple): the details for the previous sibling + next_wall_details (tuple): the details for the next sibling + + Returns: + Rectangle, Rectangle, spine: both section and the arc for the wall + # """ + (start, end, _, _, _, arc_extent) = wall_details + + section_start = self._get_section(wall_details, True, prev_wall_details) + section_end = self._get_section(wall_details, False, next_wall_details) + + a1, a2, (invert_angle, center, radius) = self._get_normal_angles(wall_details) + + placement = App.Placement(center, App.Rotation()) + # BEWARE: makeCircle always draws counter-clockwise (i.e. in positive + # direction in xYz coordinate system). We therefore need to invert + # the start and end angle (as in SweetHome the wall is drawn in + # clockwise fashion). + if invert_angle: + spine = Draft.makeCircle(radius, placement, False, a1, a2) + else: + spine = Draft.makeCircle(radius, placement, False, a2, a1) + + App.ActiveDocument.recompute([section_start, section_end, spine]) + if self.importer.preferences["DEBUG"]: + _log(f"_create_curved_segment(): wall {self._pv(start)}->{self._pv(end)} => section_start={self._ps(section_start)}, section_end={self._ps(section_end)}") + + return section_start, section_end, spine + + def _get_section(self, wall_details, at_start, sibling_details): + """Returns a rectangular section at the specified coordinate. + + Returns a Rectangle that is then used as a section in the Part::Sweep + used to construct a wall. Depending whether the wall should be joined + with its siblings, the rectangle is either created and rotated around + the endpoint of the line that will be used as the spline of the sweep + or it is calculated as the intersection profile of the 2 walls. + + Args: + wall_details (tuple): The details of the wall + at_start (bool): indicate whether the section is for the start + point or the end point of the wall. + sibling_details (tuple): The details of the sibling wall + + Returns: + Rectangle: the section properly positioned + """ + if self.importer.preferences["JOIN_ARCH_WALL"] and sibling_details: + # In case the walls are to be joined we determine the intersection + # of both wall which depends on their respective thickness. + # Calculate the left and right side of each wall + (start, end, thickness, height_start, height_end, _) = wall_details + (s_start, s_end, s_thickness, _, _, _) = sibling_details + + lside, rside = self._get_sides(start, end, thickness) + s_lside, s_rside = self._get_sides(s_start, s_end, s_thickness) + i_start, i_end = self._get_intersection_edge(lside, rside, s_lside, s_rside) + + height = height_start if at_start else height_end + i_start_z = i_start + App.Vector(0, 0, height) + i_end_z = i_end + App.Vector(0, 0, height) + + if self.importer.preferences["DEBUG"]: + _log(f"Joining wall {self._pv(end-start)}@{self._pv(start)} and wall {self._pv(s_end-s_start)}@{self._pv(s_start)}") + _log(f" wall: {self._pe(lside)},{self._pe(rside)}") + _log(f" sibling: {self._pe(s_lside)},{self._pe(s_rside)}") + _log(f"intersec: {self._pv(i_start)},{self._pv(i_end)}") + section = Draft.makeRectangle([i_start, i_end, i_end_z, i_start_z]) + if self.importer.preferences["DEBUG"]: + _log(f"section: {section}") + else: + (start, end, thickness, height_start, height_end, _) = wall_details + height = height_start if at_start else height_end + center = start if at_start else end + a1, a2, _ = self._get_normal_angles(wall_details) + z_rotation = a1 if at_start else a2 + section = Draft.makeRectangle(thickness, height) + Draft.move([section], App.Vector(-thickness/2, 0, 0)) + Draft.rotate([section], 90, ORIGIN, X_NORM) + Draft.rotate([section], z_rotation, ORIGIN, Z_NORM) + Draft.move([section], center) + + if self.importer.preferences["DEBUG"]: + App.ActiveDocument.recompute() + view = section.ViewObject + line_colors = [view.LineColor] * len(section.Shape.Edges) + for i in range(0, len(line_colors)): + line_colors[i] = hex2rgb(DEBUG_EDGES_COLORS[i%len(DEBUG_EDGES_COLORS)]) + view.LineColorArray = line_colors + point_colors = [view.PointColor] * len(section.Shape.Vertexes) + for i in range(0, len(point_colors)): + point_colors[i] = hex2rgb(DEBUG_POINT_COLORS[i%len(DEBUG_POINT_COLORS)]) + view.PointColorArray = point_colors + view.PointSize = 5 + + return section + + def _get_intersection_edge(self, lside, rside, sibling_lside, sibling_rside): + """Returns the intersection edge of the 4 input edges. + + Args: + lside (Edge): the wall left handside + rside (Edge): the wall right handside + sibling_lside (Edge): the sibling wall left handside + sibling_rside (Edge): the sibling wall right handside + + Returns: + Edge: the Edge starting at the left handsides intersection and the + the right handsides intersection. + """ + points = DraftGeomUtils.findIntersection(lside, sibling_lside, True, True) + left = points[0] if len(points) else lside.Vertexes[0].Point + points = DraftGeomUtils.findIntersection(rside, sibling_rside, True, True) + right = points[0] if len(points) else rside.Vertexes[0].Point + edge = DraftGeomUtils.edg(left, right) + return edge.Vertexes[1].Point, edge.Vertexes[0].Point + + def _get_normal_angles(self, wall_details): + """Return the angles of the normal at the endpoints of the wall. + + This method returns the normal angle of the sections that constitute + the wall sweep. These angles can then be used to create the + corresponding sections. Depending on whether the wall section is + straight or curved, the section will be calculated slightly + differently. + + Args: + wall_details (tuple): The details of the wall + + Returns: + float: the angle of the normal at the starting point + float: the angle of the normal at the ending point + bool: the angle of the normal at the ending point + Vector: the center of the circle for a curved wall section + float: the radius of said circle + """ + (start, end, thickness, height_start, height_end, arc_extent) = wall_details + + angle_start = angle_end = 0 + invert_angle = False + center = radius = None + if arc_extent == 0: + angle_start = angle_end = 90-math.degrees(DraftVecUtils.angle(end-start, X_NORM)) + else: + # Calculate the circle that pases through the center of both rectangle + # and has the correct angle between p1 and p2 + chord = DraftVecUtils.dist(start, end) + radius = abs(chord / (2*math.sin(arc_extent/2))) + + circles = DraftGeomUtils.circleFrom2PointsRadius(start, end, radius) + # We take the center that preserve the arc_extent orientation (in FC + # coordinate). The orientation is calculated from start to end + center = circles[0].Center + if numpy.sign(arc_extent) != numpy.sign(DraftVecUtils.angle(start-center, end-center, Z_NORM)): + invert_angle = True + center = circles[1].Center + + # radius1 and radius2 are the vector from center to start and end respectively + radius1 = start - center + radius2 = end - center + + angle_start = math.degrees(DraftVecUtils.angle(X_NORM, radius1, Z_NORM)) + angle_end = math.degrees(DraftVecUtils.angle(X_NORM, radius2, Z_NORM)) + + return angle_start, angle_end, (invert_angle, center, radius) + + def _get_sides(self, start, end, thickness): + """Return 2 edges corresponding to the left and right side of the wall. + + Args: + start (Vector): the wall's starting point + end (Vector): the wall's ending point + thickness (float): the wall's thickness + + Returns: + Edge: the left handside edge of the wall + Edge: the right handside edge of the wall + """ + normal = self._get_normal(start, end, start+Z_NORM) + loffset = DraftVecUtils.scale(-normal, thickness/2) + roffset = DraftVecUtils.scale(normal, thickness/2) + edge = DraftGeomUtils.edg(start, end) + lside = DraftGeomUtils.offset(edge, loffset) + rside = DraftGeomUtils.offset(edge, roffset) + if self.importer.preferences["DEBUG"]: + _log(f"_get_sides(): wall {self._pv(end-start)}@{self._pv(start)} => normal={self._pv(normal)}, lside={self._pe(lside)}, rside={self._pe(rside)}") + return lside, rside + + def _get_normal(self, a, b, c): + """Return the normal of a plane defined by 3 points. + + NOTE: the order of your point is important as the coordinate + will go from a to b to c + + Args: + a (Vector): the first point + b (Vector): the second point + c (Vector): the third point + + Returns: + Vector: the normalized vector of the plane's normal + """ + return (b - a).cross(c - a).normalize() + + def _ps(self, section): + # Pretty print a Section in a condensed way + v = section.Shape.Vertexes + return f"[{self._pv(v[0].Point)}, {self._pv(v[1].Point)}, {self._pv(v[2].Point)}, {self._pv(v[3].Point)}]" + + def _pe(self, edge): + # Print an Edge in a condensed way + v = edge.Vertexes + return f"[{self._pv(v[0].Point)}, {self._pv(v[1].Point)}]" + + def _pv(self, vect): + # Print an Vector in a condensed way + return f"({round(getattr(vect, 'X', getattr(vect,'x')))},{round(getattr(vect, 'Y', getattr(vect,'y')))})" + + def _set_wall_colors(self, wall, elm): + """Set the `wall`'s color taken from `elm`. + + Using `ViewObject.DiffuseColor` attribute to set the different + color faces. Note that when the faces are changing (i.e. when + adding doors & windows). This will generate the wrong color + """ + topColor = elm.get('topColor', self.importer.preferences["DEFAULT_FLOOR_COLOR"]) + set_color_and_transparency(wall, topColor) + leftSideColor = hex2rgb(elm.get('leftSideColor', topColor)) + rightSideColor = hex2rgb(elm.get('rightSideColor', topColor)) + topColor = hex2rgb(topColor) + diffuse_color = [topColor, leftSideColor, topColor, rightSideColor, topColor, topColor] + if ang_sh2fc(elm.get('arcExtent', 0)) > 0: + diffuse_color = [topColor, rightSideColor, topColor, leftSideColor, topColor, topColor] + + if hasattr(wall.ViewObject, "DiffuseColor"): + wall.ViewObject.DiffuseColor = diffuse_color + + def _import_baseboard(self, floor, wall, elm): + """Creates and returns a Part::Extrusion from the imported_baseboard object + + Args: + floor (Slab): the Slab the wall belongs to + wall (Wall): the Arch wall + elm (Element): the wall being imported + + Returns: + Part::Extrusion: the newly created object + """ + wall_width = float(wall.Width) + baseboard_width = dim_sh2fc(elm.get('thickness')) + baseboard_height = dim_sh2fc(elm.get('height')) + vertexes = wall.Shape.Vertexes + + # The left side is defined as the face on the left hand side when going + # from (xStart,yStart) to (xEnd,yEnd). Assume the points are always + # created in the same order. We then have on the lefthand side the points + # 1 and 2, while on the righthand side we have the points 4 and 6 + side = elm.get('attribute') + if side == 'leftSideBaseboard': + p_start = vertexes[0].Point + p_end = vertexes[2].Point + p_normal = vertexes[4].Point + elif side == 'rightSideBaseboard': + p_start = vertexes[4].Point + p_end = vertexes[6].Point + p_normal = vertexes[0].Point + else: + raise ValueError(f"Invalid SweetHome3D file: invalid baseboard with 'attribute'={side}") + + v_normal = p_normal - p_start + v_baseboard = v_normal * (baseboard_width/wall_width) + p0 = p_start + p1 = p_end + p2 = p_end - v_baseboard + p3 = p_start - v_baseboard + + baseboard_id = f"{wall.id}-{side}" + baseboard = None + if self.importer.preferences["MERGE"]: + baseboard = self.get_fc_object(baseboard_id, 'baseboard') + + if not baseboard: + # I first add a rectangle + base = Draft.makeRectangle([p0, p1, p2, p3], face=True, support=None) + base.Visibility = False + # and then I extrude + baseboard = App.ActiveDocument.addObject('Part::Extrusion', f"{wall.Label} {side}") + baseboard.Base = base + + baseboard.DirMode = "Custom" + baseboard.Dir = Z_NORM + baseboard.DirLink = None + baseboard.LengthFwd = baseboard_height + baseboard.LengthRev = 0 + baseboard.Solid = True + baseboard.Reversed = False + baseboard.Symmetric = False + baseboard.TaperAngle = 0 + baseboard.TaperAngleRev = 0 + + set_color_and_transparency(baseboard, elm.get('color')) + + self.setp(baseboard, "App::PropertyString", "shType", "The element type", 'baseboard') + self.setp(baseboard, "App::PropertyString", "id", "The element's id", baseboard_id) + self.setp(baseboard, "App::PropertyLink", "parent", "The element parent", wall) + + if 'BaseboardGroupName' not in floor.PropertiesList: + group = floor.newObject("App::DocumentObjectGroup", "Baseboards") + self.setp(floor, "App::PropertyString", "BaseboardGroupName", "The DocumentObjectGroup name for all baseboards on this floor", group.Name) + + floor.getObject(floor.BaseboardGroupName).addObject(baseboard) + + +class BaseFurnitureHandler(BaseHandler): + """The base class for importing different class of furnitures.""" + + def __init__(self, importer: SH3DImporter): + super().__init__(importer) + + def set_furniture_common_properties(self, obj, elm): + self.setp(obj, "App::PropertyString", "id", "The furniture's id", elm) + self.setp(obj, "App::PropertyString", "name", "The furniture's name", elm) + self.setp(obj, "App::PropertyFloat", "angle", "The angle of the furniture", elm) + self.setp(obj, "App::PropertyBool", "visible", "Whether the object is visible", elm) + self.setp(obj, "App::PropertyBool", "movable", "Whether the object is movable", elm) + self.setp(obj, "App::PropertyString", "description", "The object's description", elm) + self.setp(obj, "App::PropertyString", "information", "The object's information", elm) + self.setp(obj, "App::PropertyString", "license", "The object's license", elm) + self.setp(obj, "App::PropertyString", "creator", "The object's creator", elm) + self.setp(obj, "App::PropertyBool", "modelMirrored", "Whether the object is mirrored", bool(elm.get('modelMirrored', False))) + self.setp(obj, "App::PropertyBool", "nameVisible", "Whether the object's name is visible", bool(elm.get('nameVisible', False))) + self.setp(obj, "App::PropertyFloat", "nameAngle", "The object's name angle", elm) + self.setp(obj, "App::PropertyFloat", "nameXOffset", "The object's name X offset", elm) + self.setp(obj, "App::PropertyFloat", "nameYOffset", "The object's name Y offset", elm) + self.setp(obj, "App::PropertyFloat", "price", "The object's price", elm) + + def set_piece_of_furniture_common_properties(self, obj, elm): + self.setp(obj, "App::PropertyString", "level", "The furniture's level", elm) + self.setp(obj, "App::PropertyString", "catalogId", "The furniture's catalog id", elm) + self.setp(obj, "App::PropertyFloat", "dropOnTopElevation", "", elm) + self.setp(obj, "App::PropertyString", "model", "The object's mesh file", elm) + self.setp(obj, "App::PropertyString", "icon", "The object's icon", elm) + self.setp(obj, "App::PropertyString", "planIcon", "The object's icon for the plan view", elm) + self.setp(obj, "App::PropertyString", "modelRotation", "The object's model rotation", elm) + self.setp(obj, "App::PropertyString", "modelCenteredAtOrigin", "The object's center", elm) + self.setp(obj, "App::PropertyBool", "backFaceShown", "Whether the object's back face is shown", elm) + self.setp(obj, "App::PropertyString", "modelFlags", "The object's flags", elm) + self.setp(obj, "App::PropertyFloat", "modelSize", "The object's size", elm) + self.setp(obj, "App::PropertyBool", "doorOrWindow", "Whether the object is a door or Window", bool(elm.get('doorOrWindow', False))) + self.setp(obj, "App::PropertyBool", "resizable", "Whether the object is resizable", elm) + self.setp(obj, "App::PropertyBool", "deformable", "Whether the object is deformable", elm) + self.setp(obj, "App::PropertyBool", "texturable", "Whether the object is texturable", elm) + self.setp(obj, "App::PropertyString", "staircaseCutOutShape", "", elm) + self.setp(obj, "App::PropertyFloat", "shininess", "The object's shininess", elm) + self.setp(obj, "App::PropertyFloat", "valueAddedTaxPercentage", "The object's VAT percentage", elm) + self.setp(obj, "App::PropertyString", "currency", "The object's price currency", str(elm.get('currency', 'EUR'))) + + def set_piece_of_furniture_horizontal_rotation_properties(self, obj, elm): + self.setp(obj, "App::PropertyBool", "horizontallyRotatable", "Whether the object horizontally rotatable", elm) + self.setp(obj, "App::PropertyFloat", "pitch", "The object's pitch", elm) + self.setp(obj, "App::PropertyFloat", "roll", "The object's roll", elm) + self.setp(obj, "App::PropertyFloat", "widthInPlan", "The object's width in the plan view", elm) + self.setp(obj, "App::PropertyFloat", "depthInPlan", "The object's depth in the plan view", elm) + self.setp(obj, "App::PropertyFloat", "heightInPlan", "The object's height in the plan view", elm) + + + def _get_mesh(self, elm): + model = elm.get('model') + if model not in self.importer.zip.namelist(): + raise ValueError(f"Invalid SweetHome3D file: missing model {model} for furniture {elm.get('id')}") + model_path_obj = None + try: + # Since mesh.read(model_data) does not work on BytesIO extract it first + tmp_dir = App.ActiveDocument.TransientDir + if os.path.isdir(os.path.join(tmp_dir, model)): + tmp_dir = os.path.join(tmp_dir, str(uuid.uuid4())) + model_path = self.importer.zip.extract(member=model, path=tmp_dir) + model_path_obj = model_path+".obj" + os.rename(model_path, model_path_obj) + mesh = Mesh.Mesh() + mesh.read(model_path_obj) + finally: + os.remove(model_path_obj) + return mesh + + +class DoorOrWindowHandler(BaseFurnitureHandler): + """A helper class to import a SH3D `` object.""" + + def __init__(self, importer: SH3DImporter): + super().__init__(importer) + + def process(self, parent, i, elm): + """Creates and returns a Arch::Door from the imported_door object + + Args: + i (int): the ordinal of the imported element + elm (Element): the xml element + """ + door_id = f"{elm.get('id', elm.get('name'))}-{i}" + level_id = elm.get('level', None) + floor = self.get_floor(level_id) + assert floor != None, f"Missing floor '{level_id}' for '{door_id}' ..." + + + feature = None + if self.importer.preferences["MERGE"]: + feature = self.get_fc_object(door_id, 'doorOrWindow') + + if not feature: + feature = self._create_door(floor, elm) + + assert feature != None, f"Missing feature for {door_id} ..." + + self._set_properties(feature, elm) + self.set_furniture_common_properties(feature, elm) + self.set_piece_of_furniture_common_properties(feature, elm) + self.setp(feature, "App::PropertyString", "id", "The furniture's id", door_id) + + def _set_properties(self, obj, elm): + self.setp(obj, "App::PropertyString", "shType", "The element type", 'doorOrWindow') + self.setp(obj, "App::PropertyFloat", "wallThickness", "", float(elm.get('wallThickness', 1))) + self.setp(obj, "App::PropertyFloat", "wallDistance", "", elm) + self.setp(obj, "App::PropertyFloat", "wallWidth", "", float(elm.get('wallWidth', 1))) + self.setp(obj, "App::PropertyFloat", "wallLeft", "", elm) + self.setp(obj, "App::PropertyFloat", "wallHeight", "", float(elm.get('wallHeight', 1))) + self.setp(obj, "App::PropertyFloat", "wallTop", "", elm) + self.setp(obj, "App::PropertyBool", "wallCutOutOnBothSides", "", elm) + self.setp(obj, "App::PropertyBool", "widthDepthDeformable", "", elm) + self.setp(obj, "App::PropertyString", "cutOutShape", "", elm) + self.setp(obj, "App::PropertyBool", "boundToWall", "", elm) + + def _create_door(self, floor, elm): + # The window in SweetHome3D is defined with a width, depth, height. + # Furthermore the (x.y.z) is the center point of the lower face of the + # window. In FC the placement is defined on the face of the whole that + # will contain the windows. The makes this calculation rather + # cumbersome. + x_center = float(elm.get('x')) + y_center = float(elm.get('y')) + z_center = float(elm.get('elevation', 0)) + z_center += dim_fc2sh(floor.Placement.Base.z) + + # This is the FC coordinate of the center point of the lower face of the + # window. This then needs to be moved to the proper face on the wall and + # offset properly with respect to the wall's face. + center = coord_sh2fc(App.Vector(x_center, y_center, z_center)) + + wall_width = -DEFAULT_WALL_WIDTH + wall = self._get_wall(center) + if wall: + wall_width = wall.Width + else: + _err(f"Missing wall for {elm.get('id')}. Defaulting to width {DEFAULT_WALL_WIDTH} ...") + + width = dim_sh2fc(elm.get('width')) + depth = dim_sh2fc(elm.get('depth')) + height = dim_sh2fc(elm.get('height')) + angle = float(elm.get('angle', 0)) + mirrored = bool(elm.get('modelMirrored', False)) + + # this is the vector that allow me to go from the center to the corner + # of the bounding box. Note that the angle of the rotation is negated + # because the y axis is reversed in SweetHome3D + center2corner = App.Vector(-width/2, -wall_width/2, 0) + rotation = App.Rotation(App.Vector(0, 0, 1), math.degrees(-angle)) + center2corner = rotation.multVec(center2corner) + + corner = center.add(center2corner) + pl = App.Placement( + corner, # translation + App.Rotation(math.degrees(-angle), 0, 90), # rotation + ORIGIN # rotation@coordinate + ) + + # NOTE: the windows are not imported as meshes, but we use a simple + # correspondence between a catalog ID and a specific window preset from + # the parts library. + catalog_id = elm.get('catalogId') + (windowtype, ifc_type) = DOOR_MODELS.get(catalog_id, (None, None)) + if not windowtype: + _wrn(f"Unknown catalogId {catalog_id} for element {elm.get('id')}. Defaulting to 'Simple Door'") + (windowtype, ifc_type) = ('Simple door', 'Door') + + h1 = 10 + h2 = 10 + h3 = 0 + w1 = min(depth, wall_width) + w2 = 10 + o1 = 0 + o2 = w1 / 2 + window = Arch.makeWindowPreset(windowtype, width, height, h1, h2, h3, w1, w2, o1, o2, pl) + window.IfcType = ifc_type + if ifc_type == 'Door' and mirrored: + window.OperationType = "SINGLE_SWING_RIGHT" + + # Adjust symbol plan, Sweet Home has the opening in the opposite side by default + window.ViewObject.Proxy.invertOpening() + if mirrored: + window.ViewObject.Proxy.invertHinge() + + if wall: + window.Hosts = [wall] + return window + + def _get_wall(self, point): + """Returns the wall that contains the given point. + + Args: + point (FreeCAD.Vector): the point to test for + + Returns: + Arch::Wall: the wall that contains the given point + """ + for wall in self.importer.walls: + try: + if wall.Shape.BoundBox.isInside(point): + return wall + except FloatingPointError: + pass + return None + + +class FurnitureHandler(BaseFurnitureHandler): + """A helper class to import a SH3D `` object.""" + + def __init__(self, importer: SH3DImporter): + super().__init__(importer) + + def process(self, parent, i, elm): + """Creates and returns a Mesh from the imported_furniture object + + Args: + i (int): the ordinal of the imported element + elm (Element): the xml element + """ + furniture_id = f"{elm.get('id', elm.get('name'))}-{i}" + level_id = elm.get('level', None) + floor = self.get_floor(level_id) + assert floor != None, f"Missing floor '{level_id}' for '{furniture_id}' ..." + + feature = None + if self.importer.preferences["MERGE"]: + feature = self.get_fc_object(furniture_id, 'pieceOfFurniture') + + if not feature: + feature = self._create_equipment(elm) + self.setp(feature, "App::PropertyString", "shType", "The element type", 'pieceOfFurniture') + self.set_furniture_common_properties(feature, elm) + self.set_piece_of_furniture_common_properties(feature, elm) + self.set_piece_of_furniture_horizontal_rotation_properties(feature, elm) + self.setp(feature, "App::PropertyString", "id", "The furniture's id", furniture_id) + + if 'FurnitureGroupName' not in floor.PropertiesList: + group = floor.newObject("App::DocumentObjectGroup", "Furnitures") + self.setp(floor, "App::PropertyString", "FurnitureGroupName", "The DocumentObjectGroup name for all furnitures on this floor", group.Name) + + floor.getObject(floor.FurnitureGroupName).addObject(feature) + + # We add the object to the list of known object that can then + # be referenced elsewhere in the SH3D model (i.e. lights). + self.importer.fc_objects[feature.id] = feature + + def _create_equipment(self, elm): + + floor = self.get_floor(elm.get('level')) + + width = dim_sh2fc(float(elm.get('width'))) + depth = dim_sh2fc(float(elm.get('depth'))) + height = dim_sh2fc(float(elm.get('height'))) + x = float(elm.get('x', 0)) + y = float(elm.get('y', 0)) + z = float(elm.get('elevation', 0.0)) + angle = float(elm.get('angle', 0.0)) + pitch = float(elm.get('pitch', 0.0)) # X Axis + roll = float(elm.get('roll', 0.0)) # Y Axis + name = elm.get('name') + mirrored = bool(elm.get('modelMirrored', "false") == "true") + + # The meshes are normalized, facing up. + # Center, Scale, X Rotation && Z Rotation (in FC axes), Move + mesh = self._get_mesh(elm) + bb = mesh.BoundBox + transform = App.Matrix() + transform.move(-bb.Center) + # NOTE: the model is facing up, thus y and z are inverted + transform.scale(width/bb.XLength, height/bb.YLength, depth/bb.ZLength) + transform.rotateX(math.pi/2) + transform.rotateX(-pitch) + transform.rotateY(roll) + transform.rotateZ(-angle) + level_elevation = dim_fc2sh(floor.Placement.Base.z) + distance = App.Vector(x, y, level_elevation + z + (dim_fc2sh(height) / 2)) + transform.move(coord_sh2fc(distance)) + mesh.transform(transform) + + if self.importer.preferences["CREATE_ARCH_EQUIPMENT"]: + shape = Part.Shape() + shape.makeShapeFromMesh(mesh.Topology, 0.100000) + equipment = Arch.makeEquipment(name=name) + equipment.Shape = shape + equipment.purgeTouched() + else: + equipment = App.ActiveDocument.addObject("Mesh::Feature", name) + equipment.Mesh = mesh + + return equipment + + +class LightHandler(FurnitureHandler): + """A helper class to import a SH3D `` object.""" + + def __init__(self, importer: SH3DImporter): + super().__init__(importer) + + def process(self, parent, i, elm): + """_summary_ + + Args: + i (int): the ordinal of the imported element + elm (Element): the xml element + """ + light_id = f"{elm.get('id', elm.get('name'))}-{i}" + level_id = elm.get('level', None) + floor = self.get_floor(level_id) + assert floor != None, f"Missing floor '{level_id}' for '{light_id}' ..." + + if self.importer.preferences["IMPORT_FURNITURES"]: + super().process(i, elm) + light_apppliance = self.get_fc_object(light_id, 'pieceOfFurniture') + assert light_apppliance != None, f"Missing furniture {light_id} ..." + self.setp(light_apppliance, "App::PropertyFloat", "power", "The power of the light", float(elm.get('power', 0.5))) + + # Import the lightSource sub-elments + for j, sub_elm in enumerate(elm.findall('lightSource')): + light_source = None + light_source_id = f"{light_id}-{j}" + if self.importer.preferences["MERGE"]: + light_source = self.get_fc_object(light_source_id, 'lightSource') + + if not light_source: + _, light_source, _ = PointLight.create() + + x = float(sub_elm.get('x')) + y = float(sub_elm.get('y')) + z = float(sub_elm.get('z')) + diameter = float(sub_elm.get('diameter')) + color = sub_elm.get('color') + + light_source.Label = elm.get('name') + light_source.Placement.Base = coord_sh2fc(App.Vector(x, y, z)) + light_source.Radius = dim_sh2fc(diameter / 2) + light_source.Color = hex2rgb(color) + + self.setp(light_source, "App::PropertyString", "shType", "The element type", 'lightSource') + self.setp(light_source, "App::PropertyString", "id", "The elment's id", light_source_id) + self.setp(light_source, "App::PropertyLink", "lightAppliance", "The furniture", light_apppliance) + + App.ActiveDocument.Lights.addObject(light_source) + + +class CameraHandler(BaseHandler): + """A helper class to import a SH3D `` or `` objects.""" + + def __init__(self, handler): + super().__init__(handler) + + def process(self, parent, i, elm): + """Creates and returns a Render Camera from the imported_camera object + + Args: + i (int): the ordinal of the imported element + elm (Element): the xml element + + Returns: + object: the newly created object + """ + x = float(elm.get('x')) + y = float(elm.get('y')) + z = float(elm.get('z')) + yaw = float(elm.get('yaw')) + pitch = float(elm.get('pitch')) + + attribute = elm.get('attribute') + if attribute != "storedCamera": + _log(translate("BIM", f"Type of <{elm.tag}> #{i} is not supported: '{attribute}'. Skipping!")) + return + + camera_id = f"{attribute}-{i}" + camera = None + if self.importer.preferences["MERGE"]: + camera = self.get_fc_object(camera_id, attribute) + + if not camera: + _, camera, _ = Camera.create() + App.ActiveDocument.Cameras.addObject(camera) + + # ¿How to convert fov to FocalLength? + fieldOfView = float(elm.get('fieldOfView')) + fieldOfView = math.degrees(fieldOfView) + + camera.Label = elm.get('name', attribute.title()) + camera.Placement.Base = coord_sh2fc(App.Vector(x, y, z)) + # NOTE: the coordinate system is screen like, thus roll & picth are inverted ZY'X'' + camera.Placement.Rotation.setYawPitchRoll( + math.degrees(math.pi-yaw), 0, math.degrees(math.pi/2-pitch)) + camera.Projection = "Perspective" + camera.AspectRatio = 1.33333333 # /home/environment/@photoAspectRatio + + self._set_properties(camera, elm) + + def _set_properties(self, obj, elm): + self.setp(obj, "App::PropertyString", "shType", "The element type", 'camera') + self.setp(obj, "App::PropertyString", "id", "The object ID", elm) + self.setp(obj, "App::PropertyEnumeration", "attribute", "The type of camera", elm.get('attribute'), valid_values=["topCamera", "observerCamera", "storedCamera", "cameraPath"]) + self.setp(obj, "App::PropertyBool", "fixedSize", "Whether the object is fixed size", bool(elm.get('fixedSize', False))) + self.setp(obj, "App::PropertyEnumeration", "lens", "The object's lens (PINHOLE | NORMAL | FISHEYE | SPHERICAL)", str(elm.get('lens', "PINHOLE")), valid_values=["PINHOLE", "NORMAL", "FISHEYE", "SPHERICAL"]) + self.setp(obj, "App::PropertyFloat", "yaw", "The object's yaw", elm) + self.setp(obj, "App::PropertyFloat", "pitch", "The object's pitch", elm) + self.setp(obj, "App::PropertyFloat", "time", "Unknown", elm) + self.setp(obj, "App::PropertyFloat", "fieldOfView", "The object's FOV", elm) + self.setp(obj, "App::PropertyString", "renderer", "The object's renderer", elm) + + +def dim_sh2fc(dimension): + """Convert SweetHome dimension (cm) to FreeCAD dimension (mm) + + Args: + dimension (float): The dimension in SweetHome + + Returns: + float: the FreeCAD dimension + """ + return float(dimension)*FACTOR + + +def dim_fc2sh(dimension): + """Convert FreeCAD dimension (mm) to SweetHome dimension (cm) + + Args: + dimension (float): The dimension in FreeCAD + + Returns: + float: the SweetHome dimension + """ + return float(dimension)/FACTOR + + +def coord_sh2fc(vector): + """Converts SweetHome to FreeCAD coordinate + + Args: + FreeCAD.Vector (FreeCAD.Vector): The coordinate in SweetHome + + Returns: + FreeCAD.Vector: the FreeCAD coordinate + """ + return App.Vector(vector.x*FACTOR, -vector.y*FACTOR, vector.z*FACTOR) + + +def ang_sh2fc(angle): + """Convert SweetHome angle (º) to FreeCAD angle (º) + + SweetHome angles are clockwise positive while FreeCAD are anti-clockwise + positive + + Args: + angle (float): The angle in SweetHome + + Returns: + float: the FreeCAD angle + """ + return -float(angle) + + +def set_color_and_transparency(obj, color): + if not App.GuiUp or not color: + return + if hasattr(obj.ViewObject, "ShapeColor"): + obj.ViewObject.ShapeColor = hex2rgb(color) + if hasattr(obj.ViewObject, "Transparency"): + obj.ViewObject.Transparency = _hex2transparency(color) + + +def color_fc2sh(hexcode): + # 0xRRGGBBAA => AARRGGBB + hex_str = hex(int(hexcode))[2:] + return ''.join([hex_str[6:], hex_str[0:6]]) + + +def hex2rgb(hexcode): + # We might have transparency as the first 2 digit + offset = 0 if len(hexcode) == 6 else 2 + return ( + int(hexcode[offset:offset+2], 16), # Red + int(hexcode[offset+2:offset+4], 16), # Green + int(hexcode[offset+4:offset+6], 16) # Blue + ) + + +def _hex2transparency(hexcode): + return 100 - int(int(hexcode[0:2], 16) * 100 / 255) diff --git a/src/Mod/BIM/importers/importWebGL.py b/src/Mod/BIM/importers/importWebGL.py index 2a596e24f1a3..b1ce15cd455d 100644 --- a/src/Mod/BIM/importers/importWebGL.py +++ b/src/Mod/BIM/importers/importWebGL.py @@ -37,6 +37,8 @@ """FreeCAD WebGL Exporter""" +from typing import NotRequired, TypedDict + import FreeCAD import Mesh import Draft @@ -51,7 +53,12 @@ from draftutils.translate import translate else: FreeCADGui = None - def translate(ctxt, txt): return txt + + def translate(ctxt, txt): + return txt + + +import numpy as np ## @package importWebGL # \ingroup ARCH @@ -60,9 +67,10 @@ def translate(ctxt, txt): return txt # This module provides tools to export HTML files containing the # exported objects in WebGL format and a simple three.js-based viewer. -disableCompression = False # Compress object data before sending to JS -base = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!#$%&()*+-:;/=>?@[]^_,.{|}~`' # safe str chars for js in all cases -baseFloat = ',.-0123456789' +disableCompression = False # Compress object data before sending to JS +base = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890!#$%&()*+-:;/=>?@[]^_,.{|}~`" # safe str chars for js in all cases +baseFloat = ",.-0123456789" + def getHTMLTemplate(): return textwrap.dedent("""\ @@ -652,69 +660,47 @@ def getHTMLTemplate(): """) -def export( exportList, filename, colors = None, camera = None ): + +def export( + exportList, filename: str, colors: dict[str, str] | None = None, camera: str | None = None +): """Exports objects to an html file""" global disableCompression, base, baseFloat - data = { 'camera':{}, 'file':{}, 'objects':[] } - - if not FreeCADGui and not camera: - camera = OfflineRenderingUtils.getCamera(FreeCAD.ActiveDocument.FileName) + data = {"camera": {}, "file": {}, "objects": []} - if camera: - # REF: https://github.com/FreeCAD/FreeCAD/blob/master/src/Mod/Arch/OfflineRenderingUtils.py - camnode = OfflineRenderingUtils.getCoinCamera(camera) - cameraPosition = camnode.position.getValue().getValue() - data['camera']['type'] = 'Orthographic' - if 'PerspectiveCamera' in camera: data['camera']['type'] = 'Perspective' - data['camera']['focalDistance'] = camnode.focalDistance.getValue() - data['camera']['position_x'] = cameraPosition[0] - data['camera']['position_y'] = cameraPosition[1] - data['camera']['position_z'] = cameraPosition[2] - else: - v = FreeCADGui.ActiveDocument.ActiveView - data['camera']['type'] = v.getCameraType() - data['camera']['focalDistance'] = v.getCameraNode().focalDistance.getValue() - data['camera']['position_x'] = v.viewPosition().Base.x - data['camera']['position_y'] = v.viewPosition().Base.y - data['camera']['position_z'] = v.viewPosition().Base.z + populate_camera(data["camera"], camera) # Take the objects out of groups objectslist = Draft.get_group_contents(exportList, walls=True, addgroups=False) # objectslist = Arch.pruneIncluded(objectslist) for obj in objectslist: - # Pull all obj data before we dig down the links label = obj.Label - - color = '#cccccc' - opacity = 1.0 - if FreeCADGui and hasattr(obj.ViewObject, "ShapeColor"): - color = Draft.getrgb(obj.ViewObject.ShapeColor, testbw = False) - opacity = int((100 - obj.ViewObject.Transparency)/5) / 20 # 0>>1 with step of 0.05 - elif colors: - if label in colors: - color = Draft.getrgb(colors[label], testbw = False) + color, opacity = get_view_properties(obj, label, colors) validObject = False - if obj.isDerivedFrom('Mesh::Feature'): + if obj.isDerivedFrom("Mesh::Feature"): mesh = obj.Mesh validObject = True - if obj.isDerivedFrom('Part::Feature'): + if obj.isDerivedFrom("Part::Feature"): objShape = obj.Shape validObject = True - if obj.isDerivedFrom('App::Link'): + if obj.isDerivedFrom("App::Link"): linkPlacement = obj.LinkPlacement - while True: # drill down to get to the actual obj + while True: # drill down to get to the actual obj if obj.isDerivedFrom("App::Link"): - if obj.ViewObject.OverrideMaterial: color = Draft.getrgb(obj.ViewObject.ShapeMaterial.DiffuseColor, testbw = False) + if obj.ViewObject.OverrideMaterial: + color = Draft.getrgb( + obj.ViewObject.ShapeMaterial.DiffuseColor, testbw=False + ) obj = obj.LinkedObject if hasattr(obj, "__len__"): - FreeCAD.Console.PrintMessage(label + ": Sub-Links are Unsupported.\n") + FreeCAD.Console.PrintMessage(f"{label}: Sub-Links are Unsupported.\n") break - elif obj.isDerivedFrom('Part::Feature'): + elif obj.isDerivedFrom("Part::Feature"): objShape = obj.Shape.copy(False) objShape.Placement = linkPlacement validObject = True @@ -725,12 +711,22 @@ def export( exportList, filename, colors = None, camera = None ): validObject = True break - if not validObject: continue - - objdata = { 'name': label, 'color': color, 'opacity': opacity, 'verts':'', 'facets':'', 'wires':[], 'faceColors':[], 'facesToFacets':[], 'floats':[] } - - if obj.isDerivedFrom('Part::Feature'): - + if not validObject: + continue + + objdata = { + "name": label, + "color": color, + "opacity": opacity, + "verts": "", + "facets": "", + "wires": [], + "faceColors": [], + "facesToFacets": [], + "floats": [], + } + + if obj.isDerivedFrom("Part::Feature"): deviation = 0.5 if FreeCADGui and hasattr(obj.ViewObject, "Deviation"): deviation = obj.ViewObject.Deviation @@ -738,10 +734,10 @@ def export( exportList, filename, colors = None, camera = None ): # obj.ViewObject.DiffuseColor is length=1 when all faces are the same color, length=len(faces) for when they're not if len(obj.ViewObject.DiffuseColor) == len(objShape.Faces): for fc in obj.ViewObject.DiffuseColor: - objdata['faceColors'].append( Draft.getrgb(fc, testbw = False) ) + objdata["faceColors"].append(Draft.getrgb(fc, testbw=False)) # get verts and facets for ENTIRE object - shapeData = objShape.tessellate( deviation ) + shapeData = objShape.tessellate(deviation) mesh = Mesh.Mesh(shapeData) if len(objShape.Faces) > 1: @@ -749,147 +745,236 @@ def export( exportList, filename, colors = None, camera = None ): # This is done by matching the results of a tessellate() on EACH FACE to the overall tessellate stored in shapeData # if there is any error in matching these two then we display the whole object as one face and forgo the face colors for f in objShape.Faces: - faceData = f.tessellate( deviation ) + faceData = f.tessellate(deviation) found = True - for fv in range( len(faceData[0]) ): # face verts. List of type Vector() + # face verts. List of type Vector() + for fv in range(len(faceData[0])): found = False - for sv in range( len(shapeData[0]) ): #shape verts - if faceData[0][fv] == shapeData[0][sv]: # do not use isEqual() here - faceData[0][fv] = sv # replace with the index of shapeData[0] + for sv in range(len(shapeData[0])): # shape verts + # do not use isEqual() here + if faceData[0][fv] == shapeData[0][sv]: + # replace with the index of shapeData[0] + faceData[0][fv] = sv found = True break - if not found: break + if not found: + break if not found: FreeCAD.Console.PrintMessage("Facet to Face Mismatch.\n") - objdata['facesToFacets'] = [] + objdata["facesToFacets"] = [] break # map each of the face facets to the shape facets and make a list of shape facet indices that belong to this face facetList = [] - for ff in faceData[1]: # face facets + for ff in faceData[1]: # face facets found = False - for sf in range( len(shapeData[1]) ): #shape facets - if faceData[0][ff[0]] in shapeData[1][sf] and faceData[0][ff[1]] in shapeData[1][sf] and faceData[0][ff[2]] in shapeData[1][sf]: + for sf in range(len(shapeData[1])): # shape facets + if ( + faceData[0][ff[0]] in shapeData[1][sf] + and faceData[0][ff[1]] in shapeData[1][sf] + and faceData[0][ff[2]] in shapeData[1][sf] + ): facetList.append(sf) found = True break - if not found: break + if not found: + break if not found: FreeCAD.Console.PrintMessage("Facet List Mismatch.\n") - objdata['facesToFacets'] = [] + objdata["facesToFacets"] = [] break - objdata['facesToFacets'].append( baseEncode(facetList) ) + if not disableCompression: + facetList = baseEncode(facetList) + + objdata["facesToFacets"].append(facetList) - wires = [] # Add wires + wires = [] # Add wires for f in objShape.Faces: for w in f.Wires: wo = Part.Wire(Part.__sortEdges__(w.Edges)) + # use strings to avoid 0.00001 written as 1e-05 wire = [] - for v in wo.discretize(QuasiDeflection = 0.005): - wire.append( '{:.5f}'.format(v.x) ) # use strings to avoid 0.00001 written as 1e-05 - wire.append( '{:.5f}'.format(v.y) ) - wire.append( '{:.5f}'.format(v.z) ) - wires.append( wire ) + for v in wo.discretize(QuasiDeflection=0.005): + wire.extend([f"{v.x:.5f}", f"{v.y:.5f}", f"{v.z:.5f}"]) + wires.append(wire) if not disableCompression: - for w in range( len(wires) ): - for wv in range( len(wires[w]) ): - found = False - for f in range( len(objdata['floats']) ): - if objdata['floats'][f] == wires[w][wv]: - wires[w][wv] = f - found = True - break - if not found: - objdata['floats'].append( wires[w][wv] ) - wires[w][wv] = len(objdata['floats'])-1 - wires[w] = baseEncode(wires[w]) - objdata['wires'] = wires + wires, objdata["floats"] = compress_wires(wires, objdata["floats"]) + objdata["wires"] = wires vIndex = {} verts = [] for p in mesh.Points: vIndex[p.Index] = p.Index - pVec = p.Vector - verts.extend(["{:.5f}".format(pVec.x), "{:.5f}".format(pVec.y), "{:.5f}".format(pVec.z)]) + verts.extend([f"{p.Vector.x:.5f}", f"{p.Vector.y:.5f}", f"{p.Vector.z:.5f}"]) + + facets = [vIndex[i] for f in mesh.Facets for i in f.PointIndices] - # create floats list to compress verts and wires being written into the JS - if not disableCompression: - for v in range( len(verts) ): - found = False - for f in range( len(objdata['floats']) ): - if objdata['floats'][f] == verts[v]: - verts[v] = f - found = True - break - if not found: - objdata['floats'].append( verts[v] ) - verts[v] = len(objdata['floats'])-1 - objdata['verts'] = baseEncode(verts) - - facets = [] - for f in mesh.Facets: - for i in f.PointIndices: - facets.append( vIndex[i] ) - objdata['facets'] = baseEncode(facets) - - # compress floats if not disableCompression: - # use ratio of 7x base13 to 4x base90 because 13^7 ~ 90^4 - fullstr = json.dumps(objdata['floats'], separators=(',', ':')) - fullstr = fullstr.replace('[', '').replace(']', '').replace('"', '') - floatStr = '' - baseFloatCt = len(baseFloat) - baseCt = len(base) - for fs in range( 0, len(fullstr), 7 ): # chunks of 7 chars, skip the first one - str7 = fullstr[fs:(fs+7)] - quotient = 0 - for s in range( len(str7) ): - quotient += baseFloat.find(str7[s]) * pow(baseFloatCt, (6-s)) - for v in range(4): - floatStr += base[ quotient % baseCt ] - quotient = int(quotient / baseCt) - objdata['floats'] = floatStr - - data['objects'].append( objdata ) + verts, objdata["floats"] = compress_verts(verts, objdata["floats"]) + objdata["floats"] = compress_floats(objdata["floats"]) + facets = baseEncode(facets) + verts = baseEncode(verts) - html = getHTMLTemplate() + objdata["facets"] = facets + objdata["verts"] = verts + + data["objects"].append(objdata) - html = html.replace('$pagetitle',FreeCAD.ActiveDocument.Label) + html = getHTMLTemplate() + html = html.replace("$pagetitle", FreeCAD.ActiveDocument.Label) version = FreeCAD.Version() - html = html.replace('$version',version[0] + '.' + version[1] + '.' + version[2]) + html = html.replace("$version", f"{version[0]}.{version[1]}.{version[2]}") # Remove data compression in JS - data['compressed'] = not disableCompression - data['base'] = base - data['baseFloat'] = baseFloat + data["compressed"] = not disableCompression + data["base"] = base + data["baseFloat"] = baseFloat - html = html.replace('$data', json.dumps(data, separators=(',', ':')) ) # Shape Data + html = html.replace("$data", json.dumps(data, separators=(",", ":"))) # Shape Data outfile = pyopen(filename, "w") - outfile.write( html ) + outfile.write(html) outfile.close() - FreeCAD.Console.PrintMessage( translate("Arch", "Successfully written") + ' ' + filename + "\n" ) + FreeCAD.Console.PrintMessage(translate("Arch", "Successfully written") + f" {filename}\n") + + +def get_view_properties(obj, label: str, colors: dict[str, str] | None) -> tuple[str, float]: + """Get the color and opacity of the object""" + color = "#cccccc" + opacity = 1.0 + if FreeCADGui and hasattr(obj.ViewObject, "ShapeColor"): + color = Draft.getrgb(obj.ViewObject.ShapeColor, testbw=False) + opacity = int((100 - obj.ViewObject.Transparency) / 5) / 20 # 0>>1 with step of 0.05 + elif colors: + if label in colors: + color = Draft.getrgb(colors[label], testbw=False) + return color, opacity + + +class CameraDict(TypedDict): + """Dictionary for camera contents""" + + type: NotRequired[str] + focalDistance: NotRequired[str] + position_x: NotRequired[str] + position_y: NotRequired[str] + position_z: NotRequired[str] + + +def populate_camera(data: CameraDict, camera: str | None): + if not FreeCADGui and not camera: + camera = OfflineRenderingUtils.getCamera(FreeCAD.ActiveDocument.FileName) + + if camera: + # REF: src/Mod/BIM/OfflineRenderingUtils.py + camnode = OfflineRenderingUtils.getCoinCamera(camera) + cameraPosition = camnode.position.getValue().getValue() + data["type"] = "Orthographic" + if "PerspectiveCamera" in camera: + data["type"] = "Perspective" + data["focalDistance"] = camnode.focalDistance.getValue() + data["position_x"] = cameraPosition[0] + data["position_y"] = cameraPosition[1] + data["position_z"] = cameraPosition[2] + else: + v = FreeCADGui.ActiveDocument.ActiveView + data["type"] = v.getCameraType() + data["focalDistance"] = v.getCameraNode().focalDistance.getValue() + data["position_x"] = v.viewPosition().Base.x + data["position_y"] = v.viewPosition().Base.y + data["position_z"] = v.viewPosition().Base.z + + +def compress_floats(floats: list[str]) -> str: + """Compress floats to base 90 + + Use ratio of 7x base13 to 4x base90 because 13^7 ~ 90^4 + """ + fullstr = json.dumps(floats, separators=(",", ":")) + fullstr = fullstr.replace("[", "").replace("]", "").replace('"', "") + floatStr = "" + baseFloatCt = len(baseFloat) + baseCt = len(base) + for fs in range(0, len(fullstr), 7): # chunks of 7 chars, skip the first one + str7 = fullstr[fs : (fs + 7)] + quotient = 0 + for s in range(len(str7)): + quotient += baseFloat.find(str7[s]) * pow(baseFloatCt, (6 - s)) + for v in range(4): + floatStr += base[quotient % baseCt] + quotient = int(quotient / baseCt) + return floatStr + + +def compress_wires(wires: list[list[str]], floats: list[str]) -> tuple[list[list[str]], list[str]]: + """ + Create floats list to compress wires being written into the JS + """ + lengths = [] + for w in wires: + lengths.append(len(w)) + floats.extend(w) + + float_arr, all_wires = np.unique(floats, return_inverse=True) + wire_arrays = np.array_split(all_wires, np.cumsum(lengths[:-1])) + return [baseEncode(w.tolist()) for w in wire_arrays], float_arr.tolist() + + +def compress_verts(verts: list[str], floats: list[str]) -> tuple[list[int], list[str]]: + """ + Create floats list to compress verts and wires being written into the JS + """ + floats_v, ind, verts_v = np.unique(verts, return_index=True, return_inverse=True) + + # Reorder as np.unique orders the resulting array (needed for facet matching) + floats_v = floats_v[ind.argsort()] + reindex = dict(zip(ind.argsort(), np.arange(ind.size))) + verts_v = np.vectorize(lambda entry: reindex[entry])(verts_v) + + # Get repeated indexes already existing from previous steps + v_in_w = np.nonzero(np.isin(floats_v, floats))[0] + w_in_v = np.nonzero(np.isin(floats, floats_v))[0] + v_in_w2 = np.where(~np.isin(floats_v, floats)) + + # Order values the same + v_in_w = v_in_w[floats_v[v_in_w].argsort()] + w_in_v = w_in_v[np.array(floats)[w_in_v].argsort()] + + # Replace repeated indexes that exist in floats + new_index = len(floats) + verts_v += new_index + for vw, wv in zip(v_in_w + new_index, w_in_v): + verts_v[verts_v == vw] = wv + + # Remove indexes of repeated entries in floats_v + for vw in (v_in_w + new_index)[v_in_w.argsort()][::-1]: + verts_v[verts_v > vw] -= 1 + + return verts_v.tolist(), np.concatenate([floats, floats_v[v_in_w2]]).tolist() + -def baseEncode( arr ): +def baseEncode(arr: list[int]) -> str: """Compresses an array of ints into a base90 string""" - global disableCompression, base - if disableCompression: return arr - if len(arr) == 0: return '' + global base + if len(arr) == 0: + return "" longest = 0 output = [] baseCt = len(base) - for v in range( len(arr) ): - buffer = '' + for v in range(len(arr)): + buffer = "" quotient = arr[v] while True: - buffer += base[ quotient % baseCt ] + buffer += base[quotient % baseCt] quotient = int(quotient / baseCt) - if quotient == 0: break - output.append( buffer ) - if len(buffer) > longest: longest = len(buffer) - output = [('{:>'+str(longest)+'}').format(x) for x in output] # pad each element - return str(longest) + ('').join(output) + if quotient == 0: + break + output.append(buffer) + if len(buffer) > longest: + longest = len(buffer) + output = [("{:>" + str(longest) + "}").format(x) for x in output] # pad each element + return str(longest) + ("").join(output) diff --git a/src/Mod/BIM/importers/samples/Sample.sh3d b/src/Mod/BIM/importers/samples/Sample.sh3d new file mode 100644 index 000000000000..44ee92133558 Binary files /dev/null and b/src/Mod/BIM/importers/samples/Sample.sh3d differ diff --git a/src/Mod/BIM/nativeifc/ifc_classification.py b/src/Mod/BIM/nativeifc/ifc_classification.py new file mode 100644 index 000000000000..0115ebe86522 --- /dev/null +++ b/src/Mod/BIM/nativeifc/ifc_classification.py @@ -0,0 +1,104 @@ +# *************************************************************************** +# * * +# * Copyright (c) 2024 Yorik van Havre * +# * * +# * This program is free software; you can redistribute it and/or modify * +# * it under the terms of the GNU General Public License (GPL) * +# * as published by the Free Software Foundation; either version 3 of * +# * the License, or (at your option) any later version. * +# * for detail see the LICENCE text file. * +# * * +# * This program is distributed in the hope that it will be useful, * +# * but WITHOUT ANY WARRANTY; without even the implied warranty of * +# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +# * GNU General Public License for more details. * +# * * +# * You should have received a copy of the GNU Library General Public * +# * License along with this program; if not, write to the Free Software * +# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +# * USA * +# * * +# *************************************************************************** + + +from nativeifc import ifc_tools # lazy import + + +def edit_classification(obj): + """Edits the classification of this object""" + + element = ifc_tools.get_ifc_element(obj) + ifcfile = ifc_tools.get_ifcfile(obj) + if not element or not ifcfile: + return + # TODO: remove previous reference? + #ifc_tools.api_run("classification.remove_reference", + # ifcfile, reference=ref, products=[obj]) + classifications = ifcfile.by_type("IfcClassification") + classification = getattr(obj, "Classification", "") + if classification: + cname, code = classification.split(" ", 1) + cnames = [c.Name for c in classifications] + if cname in cnames: + system = classifications[cnames.index(cname)] + else: + system = ifc_tools.api_run("classification.add_classification", ifcfile, + classification=cname) + for ref in getattr(system, "HasReferences", []): + rname = ref.Name or ref.Identification + if code == rname: + return + elif code.startswith(rname): + if getattr(ref, "ClassificationRefForObjects", None): + rel = ref.ClassificationRefForObjects[0] + if not element in rel.RelatedObjects: + ifc_tools.edit_attribute(rel, "RelatedObjects", + rel.RelatedObjects + [element] + ) + else: + # we have a reference, but no classForObjects + # this is weird and shouldn't exist... + rel = ifcfile.createIfcRelAssociatesClassification( + ifc_tools.ifcopenshell.guid.new(), + history,'FreeCADClassificationRel', + None, + [element], + ref + ) + else: + ifc_tools.api_run("classification.add_reference", ifcfile, + products = [element], + classification = system, + identification = code + ) + else: + # classification property is empty + for rel in getattr(element, "HasAssociations", []): + if rel.is_a("IfcRelAssociatesClassification"): + # removing existing classification if only user + if len(rel.RelatedObjects) == 1 and rel.RelatedObjects[0] == element: + ifc_tools.api_run("classification.remove_reference", + ifcfile, + reference=rel.RelatingClassification, + products=[element] + ) + # TODO: Remove IfcClassification too? + + +def show_classification(obj): + """Loads the classification of this object""" + + element = ifc_tools.get_ifc_element(obj) + ifcfile = ifc_tools.get_ifcfile(obj) + if not element or not ifcfile: + return + for system in ifcfile.by_type("IfcClassification"): + for ref in getattr(system, "HasReferences", []): + for rel in ref.ClassificationRefForObjects: + if element in rel.RelatedObjects: + if not "Classification" in obj.PropertiesList: + obj.addProperty("App::PropertyString", "Classification", "IFC") + sname = system.Name + cname = ref.Name or ref.Identification + obj.Classification = sname + " " + cname + break diff --git a/src/Mod/BIM/nativeifc/ifc_commands.py b/src/Mod/BIM/nativeifc/ifc_commands.py index f83001e72823..2fb24fcf303b 100644 --- a/src/Mod/BIM/nativeifc/ifc_commands.py +++ b/src/Mod/BIM/nativeifc/ifc_commands.py @@ -3,20 +3,20 @@ # * Copyright (c) 2023 Yorik van Havre * # * * # * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU General Public License (GPL) * -# * as published by the Free Software Foundation; either version 3 of * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * # * the License, or (at your option) any later version. * # * for detail see the LICENCE text file. * # * * # * This program is distributed in the hope that it will be useful, * # * but WITHOUT ANY WARRANTY; without even the implied warranty of * # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU General Public License for more details. * +# * GNU Library General Public License for more details. * # * * -# * You should have received a copy of the GNU Library General Public * -# * License along with this program; if not, write to the Free Software * -# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -# * USA * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * # * * # *************************************************************************** diff --git a/src/Mod/BIM/nativeifc/ifc_diff.py b/src/Mod/BIM/nativeifc/ifc_diff.py index be418fca63c5..2becf39d02a4 100644 --- a/src/Mod/BIM/nativeifc/ifc_diff.py +++ b/src/Mod/BIM/nativeifc/ifc_diff.py @@ -3,20 +3,20 @@ # * Copyright (c) 2023 Yorik van Havre * # * * # * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU General Public License (GPL) * -# * as published by the Free Software Foundation; either version 3 of * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * # * the License, or (at your option) any later version. * # * for detail see the LICENCE text file. * # * * # * This program is distributed in the hope that it will be useful, * # * but WITHOUT ANY WARRANTY; without even the implied warranty of * # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU General Public License for more details. * +# * GNU Library General Public License for more details. * # * * -# * You should have received a copy of the GNU Library General Public * -# * License along with this program; if not, write to the Free Software * -# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -# * USA * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * # * * # *************************************************************************** @@ -37,6 +37,7 @@ def get_diff(proj): if not getattr(proj, "IfcFilePath", None): old = [] + return 1 else: # cannot use open() here as it gives different encoding # than ifcopenshell and diff does not work @@ -59,7 +60,11 @@ def htmlize(diff): """Returns an HTML version of a diff list""" html = "\n" - if diff: + if diff == 1: + html += translate("BIM", "The IFC file is not saved. Please save once" + " to have an existing IFC file to compare with." + " Then, run this command again.") + "
\n" + elif diff: diff = diff.split("\n") for l in diff: if l.startswith("+"): diff --git a/src/Mod/BIM/nativeifc/ifc_export.py b/src/Mod/BIM/nativeifc/ifc_export.py new file mode 100644 index 000000000000..68c5efbb8dba --- /dev/null +++ b/src/Mod/BIM/nativeifc/ifc_export.py @@ -0,0 +1,395 @@ +# *************************************************************************** +# * * +# * Copyright (c) 2024 Yorik van Havre * +# * * +# * This program is free software; you can redistribute it and/or modify * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * +# * the License, or (at your option) any later version. * +# * for detail see the LICENCE text file. * +# * * +# * This program is distributed in the hope that it will be useful, * +# * but WITHOUT ANY WARRANTY; without even the implied warranty of * +# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * +# * GNU Library General Public License for more details. * +# * * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * +# * * +# *************************************************************************** + +import tempfile + +import FreeCAD +import Draft +import ifcopenshell + +from importers import exportIFC +from importers import exportIFCHelper +from importers import importIFCHelper + +from nativeifc import ifc_tools +from nativeifc import ifc_import + + +PARAMS = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/NativeIFC") + + +def get_export_preferences(ifcfile, preferred_context=None, create=None): + """returns a preferences dict for exportIFC. + Preferred context can either indicate a ContextType like 'Model' or 'Plan', + or a [ContextIdentifier,ContextType,TargetView] list or tuple, for ex. + ('Annotation','Plan') or ('Body','Model','MODEL_VIEW'). This function + will do its best to find the most appropriate context. If create is True, + if the exact context is not found, a new one is created""" + + prefs = exportIFC.getPreferences() + prefs["SCHEMA"] = ifcfile.wrapped_data.schema_name() + s = ifcopenshell.util.unit.calculate_unit_scale(ifcfile) + # the above lines yields meter -> file unit scale factor. We need mm + prefs["SCALE_FACTOR"] = 0.001 / s + cids = ifc_tools.get_body_context_ids(ifcfile) + contexts = [ifcfile[i] for i in cids] + best_context = None + exact_match = False + if preferred_context: + if isinstance(preferred_context, str): + for context in contexts: + if context.ContextType == preferred_context: + best_context = context + exact_match = True + break + elif isinstance(preferred_context, (list, tuple)): + second_choice = None + for context in contexts: + if len(preferred_context) > 2: + if (context.TargetView == preferred_context[2] + and context.ContextType == preferred_context[1] + and context.ContextIdentifier == preferred_context[0]): + best_context = context + exact_match = True + if len(preferred_context) > 1: + if (context.ContextType == preferred_context[1] + and context.ContextIdentifier == preferred_context[0]): + if not exact_match: + best_context = context + if len(preferred_context) == 2: + exact_match = True + if context.ContextType == preferred_context[0]: + if not exact_match: + best_context = context + if len(preferred_context) == 1: + exact_match = True + if contexts: + if not best_context: + best_context = contexts[0] + if create: + if not exact_match: + if isinstance(preferred_context, str): + best_context = ifc_tools.api_run("context.add_context", + ifcfile, + context_type = preferred_context) + elif best_context: + if len(preferred_context) > 2: + best_context = ifc_tools.api_run("context.add_context", + ifcfile, + context_type = preferred_context[1], + context_identifier = preferred_context[0], + target_view = preferred_context[2], + parent = best_context) + elif len(preferred_context) > 1: + best_context = ifc_tools.api_run("context.add_context", + ifcfile, + context_type = preferred_context[1], + context_identifier = preferred_context[0], + parent = best_context) + else: + if len(preferred_context) > 1: + best_context = ifc_tools.api_run("context.add_context", + ifcfile, + context_type = preferred_context[1]) + if len(preferred_context) > 2: + best_context = ifc_tools.api_run("context.add_context", + ifcfile, + context_type = preferred_context[1], + context_identifier = preferred_context[0], + target_view = preferred_context[2], + parent = best_context) + else: + best_context = ifc_tools.api_run("context.add_context", + ifcfile, + context_type = preferred_context[1], + context_identifier = preferred_context[0], + parent = best_context) + else: + best_context = ifc_tools.api_run("context.add_context", + ifcfile, + context_type = preferred_context[0]) + return prefs, best_context + + +def create_product(obj, parent, ifcfile, ifcclass=None): + """Creates an IFC product out of a FreeCAD object""" + + name = obj.Label + description = getattr(obj, "Description", None) + if not ifcclass: + ifcclass = ifc_tools.get_ifctype(obj) + representation, placement = create_representation(obj, ifcfile) + product = ifc_tools.api_run("root.create_entity", ifcfile, ifc_class=ifcclass, name=name) + ifc_tools.set_attribute(ifcfile, product, "Description", description) + ifc_tools.set_attribute(ifcfile, product, "ObjectPlacement", placement) + # TODO below cannot be used at the moment because the ArchIFC exporter returns an + # IfcProductDefinitionShape already and not an IfcShapeRepresentation + # ifc_tools.api_run("geometry.assign_representation", ifcfile, product=product, representation=representation) + ifc_tools.set_attribute(ifcfile, product, "Representation", representation) + # TODO treat subtractions/additions + return product + + +def create_representation(obj, ifcfile): + """Creates a geometry representation for the given object""" + + # TEMPORARY use the Arch exporter + # TODO this is temporary. We should rely on ifcopenshell for this with: + # https://blenderbim.org/docs-python/autoapi/ifcopenshell/api/root/create_entity/index.html + # a new FreeCAD 'engine' should be added to: + # https://blenderbim.org/docs-python/autoapi/ifcopenshell/api/geometry/index.html + # that should contain all typical use cases one could have to convert FreeCAD geometry + # to IFC. + + # setup exporter - TODO do that in the module init + exportIFC.clones = {} + exportIFC.profiledefs = {} + exportIFC.surfstyles = {} + exportIFC.shapedefs = {} + exportIFC.ifcopenshell = ifcopenshell + exportIFC.ifcbin = exportIFCHelper.recycler(ifcfile, template=False) + prefs, context = get_export_preferences(ifcfile) + representation, placement, shapetype = exportIFC.getRepresentation( + ifcfile, context, obj, preferences=prefs + ) + return representation, placement + + +def get_object_type(ifcentity, objecttype=None): + """Determines a creation type for this object""" + + if not objecttype: + if ifcentity.is_a("IfcAnnotation"): + if get_sectionplane(ifcentity): + objecttype = "sectionplane" + elif get_dimension(ifcentity): + objecttype = "dimension" + elif get_text(ifcentity): + objecttype = "text" + elif ifcentity.is_a("IfcGridAxis"): + objecttype = "axis" + elif ifcentity.is_a("IfcControl"): + objecttype = "schedule" + return objecttype + + +def is_annotation(obj): + """Determines if the given FreeCAD object should be saved as an IfcAnnotation""" + + if getattr(obj, "IfcClass", None) in ["IfcAnnotation", "IfcGridAxis"]: + return True + if getattr(obj, "IfcType", None) == "Annotation": + return True + if obj.isDerivedFrom("Part::Part2DObject"): + return True + elif obj.isDerivedFrom("App::Annotation"): + return True + elif Draft.getType(obj) in ["DraftText", + "Text", + "Dimension", + "LinearDimension", + "AngularDimension", + "SectionPlane"]: + return True + elif obj.isDerivedFrom("Part::Feature"): + if obj.Shape and (not obj.Shape.Solids) and obj.Shape.Edges: + if not obj.Shape.Faces: + return True + elif (obj.Shape.BoundBox.XLength < 0.0001) \ + or (obj.Shape.BoundBox.YLength < 0.0001) \ + or (obj.Shape.BoundBox.ZLength < 0.0001): + return True + return False + + +def get_text(annotation): + """Determines if an IfcAnnotation contains an IfcTextLiteral. + Returns the IfcTextLiteral or None""" + + if annotation.is_a("IfcAnnotation"): + for rep in annotation.Representation.Representations: + for item in rep.Items: + if item.is_a("IfcTextLiteral"): + return item + return None + + +def get_dimension(annotation): + """Determines if an IfcAnnotation is representing a dimension. + Returns a list containing the representation, two points indicating + the measured points, and optionally a third point indicating where + the dimension line is located, if available""" + + if annotation.is_a("IfcAnnotation"): + if annotation.ObjectType == "DIMENSION": + s = ifcopenshell.util.unit.calculate_unit_scale(annotation.file) * 1000 + for rep in annotation.Representation.Representations: + shape = importIFCHelper.get2DShape(rep, s, notext=True) + pl = get_placement(annotation.ObjectPlacement, scale=s) + if pl: + shape[0].Placement = pl + if shape and len(shape) == 1: + if len(shape[0].Vertexes) >= 2: + # two-point polyline (BBIM) + res = [rep, shape[0].Vertexes[0].Point, shape[0].Vertexes[-1].Point] + if len(shape[0].Vertexes) > 2: + # 4-point polyline (FreeCAD) + res.append(shape[0].Vertexes[1].Point) + return res + else: + print(annotation,"NOT A DIMENSION") + return None + + +def get_sectionplane(annotation): + """Determines if an IfcAnnotation is representing a section plane. + Returns a list containing a placement, and optionally an X dimension, + an Y dimension and a depth dimension""" + + if annotation.is_a("IfcAnnotation"): + if annotation.ObjectType == "DRAWING": + s = ifcopenshell.util.unit.calculate_unit_scale(annotation.file) * 1000 + result = [get_placement(annotation.ObjectPlacement, scale=s)] + for rep in annotation.Representation.Representations: + for item in rep.Items: + if item.is_a("IfcCsgSolid"): + if item.TreeRootExpression.is_a("IfcBlock"): + result.append(item.TreeRootExpression.XLength*s) + result.append(item.TreeRootExpression.YLength*s) + result.append(item.TreeRootExpression.ZLength*s) + return result + return None + + +def get_axis(obj): + """Determines if a given IFC entity is an IfcGridAxis. Returns a tuple + containing a Placement, a length value in millimeters, and a tag""" + + if obj.is_a("IfcGridAxis"): + tag = obj.AxisTag + s = ifcopenshell.util.unit.calculate_unit_scale(obj.file) * 1000 + shape = importIFCHelper.get2DShape(obj.AxisCurve, s, notext=True) + if shape: + edge = shape[0].Edges[0] # we suppose here the axis shape is a single straight line + if obj.SameSense: + p0 = edge.Vertexes[0].Point + p1 = edge.Vertexes[-1].Point + else: + p0 = edge.Vertexes[-1].Point + p1 = edge.Vertexes[0].Point + length = edge.Length + placement = FreeCAD.Placement() + placement.Base = p0 + placement.Rotation = FreeCAD.Rotation(FreeCAD.Vector(0,1,0), p1.sub(p0)) + return (placement, length, tag) + return None + + +def create_annotation(obj, ifcfile): + """Adds an IfcAnnotation from the given object to the given IFC file""" + + exportIFC.clones = {} + exportIFC.profiledefs = {} + exportIFC.surfstyles = {} + exportIFC.shapedefs = {} + exportIFC.curvestyles = {} + exportIFC.ifcopenshell = ifcopenshell + exportIFC.ifcbin = exportIFCHelper.recycler(ifcfile, template=False) + if is_annotation(obj) and Draft.getType(obj) != "SectionPlane": + context_type = "Plan" + else: + context_type = "Model" + prefs, context = get_export_preferences(ifcfile, preferred_context=context_type, create=True) + prefs["BBIMDIMS"] = True # Save dimensions as 2-point polylines + history = get_history(ifcfile) + # TODO The following prints each edge as a separate IfcGeometricCurveSet + # It should be refined to create polylines instead + anno = exportIFC.create_annotation(obj, ifcfile, context, history, prefs) + return anno + + +def get_history(ifcfile): + """Returns the owner history or None""" + + history = ifcfile.by_type("IfcOwnerHistory") + if history: + history = history[0] + else: + # IFC4 allows to not write any history + history = None + return history + + +def get_placement(ifcelement, ifcfile=None, scale=None): + """Returns a FreeCAD placement from an IFC placement""" + + if not scale: + if not ifcfile: + ifcfile = ifcelement.file + scale = 0.001 / ifcopenshell.util.unit.calculate_unit_scale(ifcfile) + return importIFCHelper.getPlacement(ifcelement, scaling=scale) + + +def get_scaled_point(point, ifcfile=None, is2d=False): + """Returns a scaled 2d or 3d point tuple form a FreeCAD point""" + + if not ifcfile: + ifcfile = ifcelement.file + s = 0.001 / ifcopenshell.util.unit.calculate_unit_scale(ifcfile) + v = FreeCAD.Vector(point) + v.multiply(s) + v = tuple(v) + if is2d: + v = v[:2] + return v + + +def get_scaled_value(value, ifcfile): + """Returns a scaled dimension value""" + + s = 0.001 / ifcopenshell.util.unit.calculate_unit_scale(ifcfile) + return value * s + + +def export_and_convert(objs, doc): + """Exports the given objects and their descendents to the given IFC file + and re-imports it into the given document. This is slower than direct_conversion() + but gives an intermediate file which can be useful for debugging""" + + tf = tempfile.mkstemp(suffix=".ifc")[1] + exportIFC.export(objs, tf) + ifc_import.insert(tf, doc.Name, singledoc=True) + + +def direct_conversion(objs, doc): + """Exports the given objects to the given ifcfile and recreates the contents""" + + prj_obj = ifc_tools.convert_document(doc, silent=True) + exportIFC.export(objs, doc.Proxy.ifcfile) + if PARAMS.GetBool("LoadOrphans", True): + ifc_tools.load_orphans(prj_obj) + if PARAMS.GetBool("LoadMaterials", False): + ifc_materials.load_materials(prj_obj) + if PARAMS.GetBool("LoadLayers", False): + ifc_layers.load_layers(prj_obj) + if PARAMS.GetBool("LoadPsets", False): + ifc_psets.load_psets(prj_obj) diff --git a/src/Mod/BIM/nativeifc/ifc_generator.py b/src/Mod/BIM/nativeifc/ifc_generator.py index be7674519e8e..15731ec6502b 100644 --- a/src/Mod/BIM/nativeifc/ifc_generator.py +++ b/src/Mod/BIM/nativeifc/ifc_generator.py @@ -3,20 +3,20 @@ # * Copyright (c) 2022 Yorik van Havre * # * * # * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU General Public License (GPL) * -# * as published by the Free Software Foundation; either version 3 of * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * # * the License, or (at your option) any later version. * # * for detail see the LICENCE text file. * # * * # * This program is distributed in the hope that it will be useful, * # * but WITHOUT ANY WARRANTY; without even the implied warranty of * # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU General Public License for more details. * +# * GNU Library General Public License for more details. * # * * -# * You should have received a copy of the GNU Library General Public * -# * License along with this program; if not, write to the Free Software * -# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -# * USA * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * # * * # *************************************************************************** @@ -26,12 +26,14 @@ import time +import re import FreeCAD from FreeCAD import Base import Part import ifcopenshell from ifcopenshell.util import element from nativeifc import ifc_tools +from nativeifc import ifc_export import multiprocessing import FreeCADGui from pivy import coin @@ -57,13 +59,36 @@ def generate_geometry(obj, cached=False): return colors = None - # workaround for Group property bug: Avoid having a null shape, otherwise - # a default representation will be created from the object's Group contents - # obj.Shape = Part.makeBox(1, 1, 1) - # fixed in FreeCAD 0.22 - uncomment the line above for earlier versions + ifcfile = ifc_tools.get_ifcfile(obj) + + # annotations + if ifc_export.is_annotation(obj): + element = ifc_tools.get_ifc_element(obj) + if not element: + return + if obj.ShapeMode == "Shape": + shape, placement = get_annotation_shape(element, ifcfile) + if shape: + obj.Shape = shape + if placement: + obj.Placement = placement + return + elif obj.ViewObject and obj.ShapeMode == "Coin": + done = False + node, placement = get_annotation_shape(element, ifcfile, coin=True) + if node: + set_representation(obj.ViewObject, node) + colors = node[0] + done = True + else: + set_representation(obj.ViewObject, None) + print_debug(obj) + if placement: + obj.Placement = placement + if done: + return # generate the shape or coin node - ifcfile = ifc_tools.get_ifcfile(obj) elements = get_decomposition(obj) if obj.ShapeMode == "Shape": shape, colors = generate_shape(ifcfile, elements, cached) @@ -77,6 +102,7 @@ def generate_geometry(obj, cached=False): elif obj.ViewObject and obj.ShapeMode == "Coin": node, placement = generate_coin(ifcfile, elements, cached) if node: + # TODO this still needs to be fixed #QtCore.QTimer.singleShot(0, lambda: set_representation(obj.ViewObject, node)) set_representation(obj.ViewObject, node) colors = node[0] @@ -339,7 +365,6 @@ def filter_types(elements, obj_ids=[]): elements = [e for e in elements if not e.is_a("IfcOpeningElement")] elements = [e for e in elements if not e.is_a("IfcSpace")] elements = [e for e in elements if not e.is_a("IfcFurnishingElement")] - elements = [e for e in elements if not e.is_a("IfcAnnotation")] elements = [e for e in elements if not e.id() in obj_ids] return elements @@ -439,23 +464,52 @@ def set_cache(ifcfile, cache): def set_representation(vobj, node): """Sets the correct coin nodes for the given Part object""" + def find_node(parent, nodetype): + for i in range(parent.getNumChildren()): + if isinstance(parent.getChild(i), nodetype): + return parent.getChild(i) + return None + # node = [colors, verts, faces, edges, parts] - coords = vobj.RootNode.getChild(1) # SoCoordinate3 - fset = vobj.RootNode.getChild(2).getChild(1).getChild(6) # SoBrepFaceSet - eset = ( - vobj.RootNode.getChild(2).getChild(2).getChild(0).getChild(3) - ) # SoBrepEdgeSet + if not vobj.RootNode: + return + if vobj.RootNode.getNumChildren() < 3: + return + coords = find_node(vobj.RootNode, coin.SoCoordinate3) + if not coords: + return + switch = find_node(vobj.RootNode, coin.SoSwitch) + if not switch: + return + num_modes = switch.getNumChildren() + if num_modes < 3: + return + # the number of display modes under switch can vary. + # the last 4 ones are the ones that are defined for + # Part features + faces = switch.getChild(num_modes-3) + edges = switch.getChild(num_modes-2) + fset = None + if faces.getNumChildren() >= 7: + fset = faces.getChild(6) # SoBrepFaceSet + eset = None + if edges.getNumChildren() >= 1: + if edges.getChild(0).getNumChildren() >= 4: + eset = edges.getChild(0).getChild(3) # SoBrepEdgeSet # reset faces and edges - fset.coordIndex.deleteValues(0) - eset.coordIndex.deleteValues(0) + if fset: + fset.coordIndex.deleteValues(0) + if eset: + eset.coordIndex.deleteValues(0) coords.point.deleteValues(0) if not node: return - if node[1] and node[2] and node[3] and node[4]: + if node[1] and node[3] and eset: coords.point.setValues(node[1]) - fset.coordIndex.setValues(node[2]) - fset.partIndex.setValues(node[4]) eset.coordIndex.setValues(node[3]) + if node[2] and node[4] and fset: + fset.coordIndex.setValues(node[2]) + fset.partIndex.setValues(node[4]) def print_debug(obj): @@ -524,3 +578,54 @@ def delete_ghost(document): sg = FreeCADGui.getDocument(document.Name).ActiveView.getSceneGraph() sg.removeChild(document.Proxy.ghost) del document.Proxy.ghost + + +def get_annotation_shape(annotation, ifcfile, coin=False): + """Returns a shape or a coin node form an IFC annotation. + Returns [colors, verts, faces, edges], colors and faces + being normally None for 2D shapes.""" + + import Part + from importers import importIFCHelper + + shape = None + placement = None + ifcscale = importIFCHelper.getScaling(ifcfile) + shapes2d = [] + if hasattr(annotation, "Representation"): + for rep in annotation.Representation.Representations: + if rep.RepresentationIdentifier in ["Annotation", "FootPrint", "Axis"]: + sh = importIFCHelper.get2DShape(rep, ifcscale, notext=True) + if sh: + shapes2d.extend(sh) + elif hasattr(annotation, "AxisCurve"): + sh = importIFCHelper.get2DShape(annotation.AxisCurve, ifcscale, notext=True) + shapes2d.extend(sh) + if shapes2d: + shape = Part.makeCompound(shapes2d) + if hasattr(annotation, "ObjectPlacement"): + placement = importIFCHelper.getPlacement(annotation.ObjectPlacement, ifcscale) + else: + placement = None + if coin: + iv = shape.writeInventor() + iv = iv.replace("\n", "") + segs = re.findall(r"point \[.*?\]",iv) + segs = [s.replace("point [","").replace("]","").strip() for s in segs] + segs = [s.split(" ") for s in segs] + verts = [] + edges = [] + for pair in segs: + v1 = tuple([float(v) for v in pair[0].split()]) + v2 = tuple([float(v) for v in pair[1].split()]) + if not v1 in verts: + verts.append(v1) + edges.append(verts.index(v1)) + if not v2 in verts: + verts.append(v2) + edges.append(verts.index(v2)) + edges.append(-1) + shape = [[None, verts, [], edges]] + # unify nodes + shape = unify(shape) + return shape, placement diff --git a/src/Mod/BIM/nativeifc/ifc_geometry.py b/src/Mod/BIM/nativeifc/ifc_geometry.py index 672e682c79a4..5257099c8c0e 100644 --- a/src/Mod/BIM/nativeifc/ifc_geometry.py +++ b/src/Mod/BIM/nativeifc/ifc_geometry.py @@ -3,20 +3,20 @@ # * Copyright (c) 2023 Yorik van Havre * # * * # * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU General Public License (GPL) * -# * as published by the Free Software Foundation; either version 3 of * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * # * the License, or (at your option) any later version. * # * for detail see the LICENCE text file. * # * * # * This program is distributed in the hope that it will be useful, * # * but WITHOUT ANY WARRANTY; without even the implied warranty of * # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU General Public License for more details. * +# * GNU Library General Public License for more details. * # * * -# * You should have received a copy of the GNU Library General Public * -# * License along with this program; if not, write to the Free Software * -# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -# * USA * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * # * * # *************************************************************************** diff --git a/src/Mod/BIM/nativeifc/ifc_import.py b/src/Mod/BIM/nativeifc/ifc_import.py index a09b741366fb..007dfa327200 100644 --- a/src/Mod/BIM/nativeifc/ifc_import.py +++ b/src/Mod/BIM/nativeifc/ifc_import.py @@ -3,20 +3,20 @@ # * Copyright (c) 2022 Yorik van Havre * # * * # * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU General Public License (GPL) * -# * as published by the Free Software Foundation; either version 3 of * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * # * the License, or (at your option) any later version. * # * for detail see the LICENCE text file. * # * * # * This program is distributed in the hope that it will be useful, * # * but WITHOUT ANY WARRANTY; without even the implied warranty of * # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU General Public License for more details. * +# * GNU Library General Public License for more details. * # * * -# * You should have received a copy of the GNU Library General Public * -# * License along with this program; if not, write to the Free Software * -# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -# * USA * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * # * * # *************************************************************************** diff --git a/src/Mod/BIM/nativeifc/ifc_layers.py b/src/Mod/BIM/nativeifc/ifc_layers.py index 9fae0d82c61f..2ab4b5a82a8b 100644 --- a/src/Mod/BIM/nativeifc/ifc_layers.py +++ b/src/Mod/BIM/nativeifc/ifc_layers.py @@ -3,20 +3,20 @@ # * Copyright (c) 2023 Yorik van Havre * # * * # * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU General Public License (GPL) * -# * as published by the Free Software Foundation; either version 3 of * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * # * the License, or (at your option) any later version. * # * for detail see the LICENCE text file. * # * * # * This program is distributed in the hope that it will be useful, * # * but WITHOUT ANY WARRANTY; without even the implied warranty of * # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU General Public License for more details. * +# * GNU Library General Public License for more details. * # * * -# * You should have received a copy of the GNU Library General Public * -# * License along with this program; if not, write to the Free Software * -# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -# * USA * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * # * * # *************************************************************************** diff --git a/src/Mod/BIM/nativeifc/ifc_materials.py b/src/Mod/BIM/nativeifc/ifc_materials.py index 36fa904160a0..2bffd72760dc 100644 --- a/src/Mod/BIM/nativeifc/ifc_materials.py +++ b/src/Mod/BIM/nativeifc/ifc_materials.py @@ -3,20 +3,20 @@ # * Copyright (c) 2023 Yorik van Havre * # * * # * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU General Public License (GPL) * -# * as published by the Free Software Foundation; either version 3 of * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * # * the License, or (at your option) any later version. * # * for detail see the LICENCE text file. * # * * # * This program is distributed in the hope that it will be useful, * # * but WITHOUT ANY WARRANTY; without even the implied warranty of * # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU General Public License for more details. * +# * GNU Library General Public License for more details. * # * * -# * You should have received a copy of the GNU Library General Public * -# * License along with this program; if not, write to the Free Software * -# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -# * USA * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * # * * # *************************************************************************** diff --git a/src/Mod/BIM/nativeifc/ifc_objects.py b/src/Mod/BIM/nativeifc/ifc_objects.py index 5f2299094264..e2c1b2323fb8 100644 --- a/src/Mod/BIM/nativeifc/ifc_objects.py +++ b/src/Mod/BIM/nativeifc/ifc_objects.py @@ -3,28 +3,32 @@ # * Copyright (c) 2022 Yorik van Havre * # * * # * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU General Public License (GPL) * -# * as published by the Free Software Foundation; either version 3 of * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * # * the License, or (at your option) any later version. * # * for detail see the LICENCE text file. * # * * # * This program is distributed in the hope that it will be useful, * # * but WITHOUT ANY WARRANTY; without even the implied warranty of * # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU General Public License for more details. * +# * GNU Library General Public License for more details. * # * * -# * You should have received a copy of the GNU Library General Public * -# * License along with this program; if not, write to the Free Software * -# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -# * USA * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * # * * # *************************************************************************** """This module contains IFC object definitions""" import FreeCAD +import FreeCADGui translate = FreeCAD.Qt.translate +# the property groups below should not be treated as psets +NON_PSETS = ["Base", "IFC", "", "Geometry", "Dimension", "Linear/radial dimension", + "SectionPlane", "Axis", "PhysicalProperties"] class ifc_object: """Base class for all IFC-based objects""" @@ -56,14 +60,22 @@ def onChanged(self, obj, prop): elif prop == "Schema": self.edit_schema(obj, obj.Schema) elif prop == "Type": - self.edit_type(obj) + self.Classification(obj) + elif prop == "Classification": + self.edit_classification(obj) elif prop == "Group": self.edit_group(obj) - elif obj.getGroupOfProperty(prop) == "IFC": + elif hasattr(obj, prop) and obj.getGroupOfProperty(prop) == "IFC": if prop not in ["StepId"]: self.edit_attribute(obj, prop) elif prop == "Label": self.edit_attribute(obj, "Name", obj.Label) + elif prop == "Text": + self.edit_annotation(obj, "Text", "\n".join(obj.Text)) + elif prop in ["Start", "End"]: + self.edit_annotation(obj, prop) + elif prop in ["DisplayLength","DisplayHeight","Depth"]: + self.edit_annotation(obj, prop) elif prop == "Placement": if getattr(self, "virgin_placement", False): self.virgin_placement = False @@ -73,9 +85,11 @@ def onChanged(self, obj, prop): elif prop == "Modified": if obj.ViewObject: obj.ViewObject.signalChangeIcon() - elif obj.getGroupOfProperty(prop) == "Geometry": + elif hasattr(obj, prop) and obj.getGroupOfProperty(prop) == "Geometry": self.edit_geometry(obj, prop) - elif obj.getGroupOfProperty(prop) not in ["Base", "IFC", "", "Geometry", "PhysicalProperties"]: + elif hasattr(obj, prop) and obj.getGroupOfProperty(prop) == "Quantities": + self.edit_quantity(obj, prop) + elif hasattr(obj, prop) and obj.getGroupOfProperty(prop) not in NON_PSETS: # Treat all property groups outside the default ones as Psets # print("DEBUG: editinog pset prop",prop) self.edit_pset(obj, prop) @@ -100,11 +114,7 @@ def onDocumentRestored(self, obj): def fit_all(self): """Fits the view""" - import FreeCAD - if FreeCAD.GuiUp: - import FreeCADGui - FreeCADGui.SendMsgToActiveView("ViewFit") def rebuild_classlist(self, obj, setprops=False): @@ -169,6 +179,63 @@ def edit_attribute(self, obj, attribute, value=None): if hasattr(result, "id") and (result.id() != obj.StepId): obj.StepId = result.id() + def edit_annotation(self, obj, attribute, value=None): + """Edits an attribute of an underlying IFC annotation""" + + from nativeifc import ifc_tools # lazy import + from nativeifc import ifc_export + + if not value: + if hasattr(obj, attribute): + value = obj.getPropertyByName(attribute) + ifcfile = ifc_tools.get_ifcfile(obj) + elt = ifc_tools.get_ifc_element(obj, ifcfile) + if elt: + if attribute == "Text": + text = ifc_export.get_text(elt) + if text: + ifc_tools.set_attribute(ifcfile, text, "Literal", value) + elif attribute in ["Start", "End"]: + dim = ifc_export.get_dimension(elt) + if dim: + rep = dim[0] + for curve in rep.Items: + if not hasattr(curve, "Elements"): + # this is a TextLiteral for the dimension text - skip it + continue + for sub in curve.Elements: + if sub.is_a("IfcIndexedPolyCurve"): + points = sub.Points + value = list(points.CoordList) + is2d = "2D" in points.is_a() + if attribute == "Start": + value[0] = ifc_export.get_scaled_point(obj.Start, ifcfile, is2d) + else: + value[-1] = ifc_export.get_scaled_point(obj.End, ifcfile, is2d) + ifc_tools.set_attribute(ifcfile, points, "CoordList", value) + else: + print("DEBUG: unknown dimension curve type:",sub) + elif attribute in ["DisplayLength","DisplayHeight","Depth"]: + l = w = h = 1000.0 + if obj.ViewObject: + if obj.ViewObject.DisplayLength.Value: + l = ifc_export.get_scaled_value(obj.ViewObject.DisplayLength.Value, ifcfile) + if obj.ViewObject.DisplayHeight.Value: + w = ifc_export.get_scaled_value(obj.ViewObject.DisplayHeight.Value, ifcfile) + if obj.Depth.Value: + h = ifc_export.get_scaled_value(obj.Depth.Value, ifcfile) + if elt.Representation.Representations: + for rep in elt.Representation.Representations: + for item in rep.Items: + if item.is_a("IfcCsgSolid"): + if item.TreeRootExpression.is_a("IfcBlock"): + block = item.TreeRootExpression + loc = block.Position.Location + ifc_tools.set_attribute(ifcfile, block, "XLength", l) + ifc_tools.set_attribute(ifcfile, block, "YLength", w) + ifc_tools.set_attribute(ifcfile, block, "ZLength", h) + ifc_tools.set_attribute(ifcfile, loc, "Coordinates", (-l/2, -h/2, -h)) + def edit_geometry(self, obj, prop): """Edits a geometry property of an object""" @@ -254,38 +321,65 @@ def edit_group(self, obj): def edit_type(self, obj): """Edits the type of this object""" + from nativeifc import ifc_types # lazy import + + ifc_types.edit_type(obj) + + + + def edit_quantity(self, obj, prop): + """Edits the given quantity""" + pass # TODO implement + + def get_section_data(self, obj): + """Returns two things: a list of objects and a cut plane""" + from nativeifc import ifc_tools # lazy import - from nativeifc import ifc_types + import Part + + if not obj.IfcClass == "IfcAnnotation": + return [], None + if obj.ObjectType != "DRAWING": + return [], None + objs = getattr(obj, "Objects", []) + if not objs: + # no object defined, we automatically use the project + objs = [] + proj = ifc_tools.get_project(obj) + if isinstance(proj, FreeCAD.DocumentObject): + objs.append(proj) + objs.extend(ifc_tools.get_freecad_children(proj)) + if objs: + s = [] + for o in objs: + # TODO print a better message + if o.ShapeMode != "Shape": + s.append(o) + if s: + FreeCAD.Console.PrintLog("DEBUG: Generating shapes. This might take some time...\n") + for o in s: + o.ShapeMode = "Shape" + o.recompute() + l = 1 + h = 1 + if obj.ViewObject: + if hasattr(obj.ViewObject,"DisplayLength"): + l = obj.ViewObject.DisplayLength.Value + h = obj.ViewObject.DisplayHeight.Value + plane = Part.makePlane(l,h,FreeCAD.Vector(l/2,-h/2,0),FreeCAD.Vector(0,0,1)) + plane.Placement = obj.Placement + return objs, plane + else: + print("DEBUG: Section plane returned no objects") + return [], None - element = ifc_tools.get_ifc_element(obj) - ifcfile = ifc_tools.get_ifcfile(obj) - if not element or not ifcfile: - return - typerel = getattr(element, "IsTypedBy", None) - if obj.Type: - # verify the type is compatible -ex IFcWall in IfcWallType - if obj.Type.Class != element.is_a() + "Type": - t = translate("BIM","Error: Incompatible type") - FreeCAD.Console.PrintError(obj.Label+": "+t+": "+obj.Type.Class+"\n") - obj.Type = None - return - # change type - new_type = ifc_tools.get_ifc_element(obj.Type) - if not new_type: - return - for rel in typerel: - if rel.RelatingType == new_type: - return - # assign the new type - ifc_tools.api_run("type.assign_type", - ifcfile, - related_objects=[element], - relating_type=new_type - ) - elif typerel: - # TODO remove type? - # Not doing anything right now because an unset Type property could screw the ifc file - pass + + def edit_classification(self, obj): + """Edits the classification of this object""" + + from nativeifc import ifc_classification # lazy loading + + ifc_classification.edit_classification(obj) class document_object: diff --git a/src/Mod/BIM/nativeifc/ifc_observer.py b/src/Mod/BIM/nativeifc/ifc_observer.py index 71638c0ca4f9..aba3de0252c3 100644 --- a/src/Mod/BIM/nativeifc/ifc_observer.py +++ b/src/Mod/BIM/nativeifc/ifc_observer.py @@ -3,20 +3,20 @@ # * Copyright (c) 2022 Yorik van Havre * # * * # * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU General Public License (GPL) * -# * as published by the Free Software Foundation; either version 3 of * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * # * the License, or (at your option) any later version. * # * for detail see the LICENCE text file. * # * * # * This program is distributed in the hope that it will be useful, * # * but WITHOUT ANY WARRANTY; without even the implied warranty of * # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU General Public License for more details. * +# * GNU Library General Public License for more details. * # * * -# * You should have received a copy of the GNU Library General Public * -# * License along with this program; if not, write to the Free Software * -# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -# * USA * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * # * * # *************************************************************************** @@ -24,7 +24,6 @@ import os - import FreeCAD params = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/NativeIFC") @@ -197,8 +196,10 @@ def convert(self): return del self.docname del self.objname - if obj.isDerivedFrom("Part::Feature") or "IfcType" in obj.PropertiesList: - FreeCAD.Console.PrintLog("Converting" + obj.Label + "to IFC\n") + if obj.isDerivedFrom("Part::Feature") \ + or "IfcType" in obj.PropertiesList \ + or "CreateSpreadsheet" in obj.PropertiesList: + FreeCAD.Console.PrintLog("Converting " + obj.Label + " to IFC\n") from nativeifc import ifc_geometry # lazy loading from nativeifc import ifc_tools # lazy loading diff --git a/src/Mod/BIM/nativeifc/ifc_openshell.py b/src/Mod/BIM/nativeifc/ifc_openshell.py index d98e63923de2..c0553efb7d31 100644 --- a/src/Mod/BIM/nativeifc/ifc_openshell.py +++ b/src/Mod/BIM/nativeifc/ifc_openshell.py @@ -15,10 +15,10 @@ # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * # * GNU Library General Public License for more details. * # * * -# * You should have received a copy of the GNU Library General Public * -# * License along with this program; if not, write to the Free Software * -# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -# * USA * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * # * * # *************************************************************************** diff --git a/src/Mod/BIM/nativeifc/ifc_performance_test.py b/src/Mod/BIM/nativeifc/ifc_performance_test.py index 04853329d8b7..0e0b6ec04979 100644 --- a/src/Mod/BIM/nativeifc/ifc_performance_test.py +++ b/src/Mod/BIM/nativeifc/ifc_performance_test.py @@ -3,20 +3,20 @@ # * Copyright (c) 2023 Yorik van Havre * # * * # * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU General Public License (GPL) * -# * as published by the Free Software Foundation; either version 3 of * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * # * the License, or (at your option) any later version. * # * for detail see the LICENCE text file. * # * * # * This program is distributed in the hope that it will be useful, * # * but WITHOUT ANY WARRANTY; without even the implied warranty of * # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU General Public License for more details. * +# * GNU Library General Public License for more details. * # * * -# * You should have received a copy of the GNU Library General Public * -# * License along with this program; if not, write to the Free Software * -# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -# * USA * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * # * * # *************************************************************************** diff --git a/src/Mod/BIM/nativeifc/ifc_psets.py b/src/Mod/BIM/nativeifc/ifc_psets.py index 980ae60726bf..472a751e32be 100644 --- a/src/Mod/BIM/nativeifc/ifc_psets.py +++ b/src/Mod/BIM/nativeifc/ifc_psets.py @@ -3,20 +3,20 @@ # * Copyright (c) 2023 Yorik van Havre * # * * # * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU General Public License (GPL) * -# * as published by the Free Software Foundation; either version 3 of * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * # * the License, or (at your option) any later version. * # * for detail see the LICENCE text file. * # * * # * This program is distributed in the hope that it will be useful, * # * but WITHOUT ANY WARRANTY; without even the implied warranty of * # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU General Public License for more details. * +# * GNU Library General Public License for more details. * # * * -# * You should have received a copy of the GNU Library General Public * -# * License along with this program; if not, write to the Free Software * -# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -# * USA * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * # * * # *************************************************************************** @@ -105,34 +105,35 @@ def show_psets(obj): ttip = ( ptype + ":" + oname ) # setting IfcType:PropName as a tooltip to desambiguate - while pname in obj.PropertiesList: + #while pname in obj.PropertiesList: # print("DEBUG: property", pname, "(", value, ") already exists in", obj.Label) - pname += "_" + # pname += "_" + ftype = None if ptype in [ "IfcPositiveLengthMeasure", "IfcLengthMeasure", "IfcNonNegativeLengthMeasure", ]: - obj.addProperty("App::PropertyDistance", pname, gname, ttip) + ftype = "App::PropertyDistance" elif ptype in ["IfcVolumeMeasure"]: - obj.addProperty("App::PropertyVolume", pname, gname, ttip) + ftype = "App::PropertyVolume" elif ptype in ["IfcPositivePlaneAngleMeasure", "IfcPlaneAngleMeasure"]: - obj.addProperty("App::PropertyAngle", pname, gname, ttip) + ftype = "App::PropertyAngle" value = float(value) while value > 360: value = value - 360 elif ptype in ["IfcMassMeasure"]: - obj.addProperty("App::PropertyMass", pname, gname, ttip) + ftype = "App::PropertyMass" elif ptype in ["IfcAreaMeasure"]: - obj.addProperty("App::PropertyArea", pname, gname, ttip) + ftype = "App::PropertyArea" elif ptype in ["IfcCountMeasure", "IfcInteger"]: - obj.addProperty("App::PropertyInteger", pname, gname, ttip) + ftype = "App::PropertyInteger" value = int(value.strip(".")) elif ptype in ["IfcReal"]: - obj.addProperty("App::PropertyFloat", pname, gname, ttip) + ftype = "App::PropertyFloat" value = float(value) elif ptype in ["IfcBoolean", "IfcLogical"]: - obj.addProperty("App::PropertyBool", pname, gname, ttip) + ftype = "App::PropertyBool" if value in [".T."]: value = True else: @@ -144,14 +145,30 @@ def show_psets(obj): "IfcDuration", "IfcTimeStamp", ]: - obj.addProperty("App::PropertyTime", pname, gname, ttip) + ftype = "App::PropertyTime" + elif isinstance(value, str) and "::" in value: + # FreeCAD-specific: split strings by :: delimiter + ftype = "App::PropertyStringList" + value = value.split("::") else: - obj.addProperty("App::PropertyString", pname, gname, ttip) + ftype = "App::PropertyString" # print("DEBUG: setting",pname, ptype, value) - setattr(obj, pname, value) + if ftype: + if pname in obj.PropertiesList \ + and obj.getGroupOfProperty(pname) == gname: + if obj.getTypeOfProperty(pname) == ftype: + pass + if ftype == "App::PropertyString" \ + and obj.getTypeOfProperty(pname) == "App::PropertyStringList": + value = [value] + else: + print(pname, gname, obj.PropertiesList) + obj.addProperty(ftype, pname, gname, ttip) + if pname in obj.PropertiesList: + setattr(obj, pname, value) -def edit_pset(obj, prop, value=None, force=False): +def edit_pset(obj, prop, value=None, force=False, ifcfile=None, element=None): """Edits the corresponding property. If force is True, the property is created even if it has no value""" @@ -159,8 +176,14 @@ def edit_pset(obj, prop, value=None, force=False): ptype = obj.getDocumentationOfProperty(prop) if value is None: value = getattr(obj, prop) - ifcfile = ifc_tools.get_ifcfile(obj) - element = ifc_tools.get_ifc_element(obj) + if not ifcfile: + ifcfile = ifc_tools.get_ifcfile(obj) + if not ifcfile: + return + if not element: + element = ifc_tools.get_ifc_element(obj) + if not element: + return pset_exist = get_psets(element) target_prop = None value_exist = None @@ -242,7 +265,7 @@ def edit_pset(obj, prop, value=None, force=False): "IFC: property changed for " + obj.Label + " (" - + str(obj.StepId) + + str(element.id()) + "): " + str(target_prop) + ": " @@ -356,3 +379,7 @@ def remove_property(obj, prop): # delete the pset too FreeCAD.Console.PrintMessage(translate("BIM","Removing property set")+": "+psetname) ifc_tools.api_run("pset.remove_pset", ifcfile, product=element, pset=pset) + + +# Quantity types +# https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/ifcsharedbldgelements/content.html#6.1.5-Quantity-Sets diff --git a/src/Mod/BIM/nativeifc/ifc_selftest.py b/src/Mod/BIM/nativeifc/ifc_selftest.py index 6641ad1355c0..cb8421432b6a 100644 --- a/src/Mod/BIM/nativeifc/ifc_selftest.py +++ b/src/Mod/BIM/nativeifc/ifc_selftest.py @@ -3,20 +3,20 @@ # * Copyright (c) 2023 Yorik van Havre * # * * # * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU General Public License (GPL) * -# * as published by the Free Software Foundation; either version 3 of * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * # * the License, or (at your option) any later version. * # * for detail see the LICENCE text file. * # * * # * This program is distributed in the hope that it will be useful, * # * but WITHOUT ANY WARRANTY; without even the implied warranty of * # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU General Public License for more details. * +# * GNU Library General Public License for more details. * # * * -# * You should have received a copy of the GNU Library General Public * -# * License along with this program; if not, write to the Free Software * -# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -# * USA * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * # * * # *************************************************************************** diff --git a/src/Mod/BIM/nativeifc/ifc_status.py b/src/Mod/BIM/nativeifc/ifc_status.py index ec2a1f8ce2fc..14d36894e8d7 100644 --- a/src/Mod/BIM/nativeifc/ifc_status.py +++ b/src/Mod/BIM/nativeifc/ifc_status.py @@ -4,20 +4,20 @@ # * Copyright (c) 2024 Yorik van Havre * # * * # * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU General Public License (GPL) * -# * as published by the Free Software Foundation; either version 3 of * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * # * the License, or (at your option) any later version. * # * for detail see the LICENCE text file. * # * * # * This program is distributed in the hope that it will be useful, * # * but WITHOUT ANY WARRANTY; without even the implied warranty of * # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU General Public License for more details. * +# * GNU Library General Public License for more details. * # * * -# * You should have received a copy of the GNU Library General Public * -# * License along with this program; if not, write to the Free Software * -# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -# * USA * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * # * * # *************************************************************************** @@ -248,6 +248,10 @@ def on_activate(): from PySide import QtGui # lazy import + # always reset the menu to normal first + set_menu(False) + if FreeCADGui.activeWorkbench().name() != "BIMWorkbench": + return doc = FreeCAD.ActiveDocument if doc and "IfcFilePath" in doc.PropertiesList: checked = True @@ -355,6 +359,7 @@ def lock_document(): from nativeifc import ifc_tools # lazy loading from importers import exportIFC from nativeifc import ifc_geometry + from nativeifc import ifc_export from PySide import QtCore doc = FreeCAD.ActiveDocument @@ -379,7 +384,7 @@ def lock_document(): if rest: # 1b some objects are outside objs = find_toplevel(rest) - prefs, context = ifc_tools.get_export_preferences(ifcfile) + prefs, context = ifc_export.get_export_preferences(ifcfile) products = exportIFC.export(objs, ifcfile, preferences=prefs) for product in products.values(): if not getattr(product, "ContainedInStructure", None): @@ -413,15 +418,14 @@ def lock_document(): elif doc.Objects: # 3 there is no project but objects doc.openTransaction("Lock document") - ifc_tools.convert_document(doc, silent=True) - ifcfile = doc.Proxy.ifcfile objs = find_toplevel(doc.Objects) - prefs, context = ifc_tools.get_export_preferences(ifcfile) - exportIFC.export(objs, ifcfile, preferences=prefs) - for n in [o.Name for o in doc.Objects]: + deletelist = [o.Name for o in doc.Objects] + #ifc_export.export_and_convert(objs, doc) + ifc_export.direct_conversion(objs, doc) + for n in deletelist: if doc.getObject(n): doc.removeObject(n) - ifc_tools.create_children(doc, ifcfile, recursive=True) + doc.IfcFilePath = "" doc.Modified = True doc.commitTransaction() doc.recompute() @@ -442,7 +446,7 @@ def lock_document(): if create: if not ifcfile: ifcfile = doc.Proxy.ifcfile - ifc_tools.create_children(doc, recursive=False) + ifc_tools.create_children(doc, ifcfile, recursive=False) def find_toplevel(objs): diff --git a/src/Mod/BIM/nativeifc/ifc_tools.py b/src/Mod/BIM/nativeifc/ifc_tools.py index df157bfb2f79..bc1599e0a854 100644 --- a/src/Mod/BIM/nativeifc/ifc_tools.py +++ b/src/Mod/BIM/nativeifc/ifc_tools.py @@ -3,15 +3,15 @@ # * Copyright (c) 2022 Yorik van Havre * # * * # * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU General Public License (GPL) * -# * as published by the Free Software Foundation; either version 3 of * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * # * the License, or (at your option) any later version. * # * for detail see the LICENCE text file. * # * * # * This program is distributed in the hope that it will be useful, * # * but WITHOUT ANY WARRANTY; without even the implied warranty of * # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU General Public License for more details. * +# * GNU Library General Public License for more details. * # * * # * You should have received a copy of the GNU Library General Public * # * License along with this program; if not, write to the Free Software * @@ -29,8 +29,6 @@ import FreeCAD import Draft import Arch -from importers import exportIFC -from importers import exportIFCHelper import ifcopenshell from ifcopenshell import geom @@ -47,6 +45,11 @@ from nativeifc import ifc_import from nativeifc import ifc_layers from nativeifc import ifc_status +from nativeifc import ifc_export +from nativeifc import ifc_psets + +from draftviewproviders import view_layer +from PySide import QtCore SCALE = 1000.0 # IfcOpenShell works in meters, FreeCAD works in mm SHORT = False # If True, only Step ID attribute is created @@ -64,7 +67,7 @@ def create_document(document, filename=None, shapemode=0, strategy=0, silent=Fal 1 = coin only 2 = no representation strategy: 0 = only root object - 1 = only bbuilding structure, + 1 = only building structure 2 = all children """ @@ -84,7 +87,7 @@ def create_document_object( 1 = coin only 2 = no representation strategy: 0 = only root object - 1 = only bbuilding structure, + 1 = only building structure 2 = all children """ @@ -182,9 +185,11 @@ def create_ifcfile(): param = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Document") user = param.GetString("prefAuthor", "") user = user.split("<")[0].strip() + org = param.GetString("prefCompany", "") + person = None + organisation = None if user: person = api_run("owner.add_person", ifcfile, family_name=user) - org = param.GetString("prefCompany", "") if org: organisation = api_run("owner.add_organisation", ifcfile, name=org) if user and org: @@ -197,10 +202,18 @@ def create_ifcfile(): application = "FreeCAD" version = FreeCAD.Version() version = ".".join([str(v) for v in version[0:3]]) + freecadorg = api_run( + "owner.add_organisation", + ifcfile, + identification="FreeCAD.org", + name="The FreeCAD project" + ) application = api_run( "owner.add_application", ifcfile, + application_developer=freecadorg, application_full_name=application, + application_identifier=application, version=version, ) # context @@ -223,9 +236,14 @@ def create_ifcfile(): parent=model3d, ) # unit - # for now, assign a default metre unit, as per https://blenderbim.org/docs-python/autoapi/ifcopenshell/api/unit/assign_unit/index.html + # for now, assign a default metre + sqm +degrees unit, as per + # https://docs.ifcopenshell.org/autoapi/ifcopenshell/api/unit/index.html # TODO allow to set this at creation, from the current FreeCAD units schema - api_run("unit.assign_unit", ifcfile) + length = api_run("unit.add_si_unit", ifcfile, unit_type="LENGTHUNIT") + area = api_run("unit.add_si_unit", ifcfile, unit_type="AREAUNIT") + angle = api_run("unit.add_conversion_based_unit", ifcfile, name="degree") + api_run("unit.assign_unit", ifcfile, units=[length, area, angle]) + # TODO add user history return ifcfile @@ -244,22 +262,28 @@ def api_run(*args, **kwargs): return result -def create_object(ifcentity, document, ifcfile, shapemode=0): +def create_object(ifcentity, document, ifcfile, shapemode=0, objecttype=None): """Creates a FreeCAD object from an IFC entity""" exobj = get_object(ifcentity, document) if exobj: return exobj s = "IFC: Created #{}: {}, '{}'\n".format( - ifcentity.id(), ifcentity.is_a(), ifcentity.Name + ifcentity.id(), ifcentity.is_a(), getattr(ifcentity, "Name", "") ) + objecttype = ifc_export.get_object_type(ifcentity, objecttype) FreeCAD.Console.PrintLog(s) - obj = add_object(document) + obj = add_object(document, otype=objecttype) add_properties(obj, ifcfile, ifcentity, shapemode=shapemode) ifc_layers.add_layers(obj, ifcentity, ifcfile) if FreeCAD.GuiUp: - if ifcentity.is_a("IfcSpace") or ifcentity.is_a("IfcOpeningElement"): - obj.ViewObject.DisplayMode = "Wireframe" + if ifcentity.is_a("IfcSpace") or\ + ifcentity.is_a("IfcOpeningElement") or\ + ifcentity.is_a("IfcAnnotation"): + try: + obj.ViewObject.DisplayMode = "Wireframe" + except: + pass elements = [ifcentity] return obj @@ -324,12 +348,15 @@ def create_child(parent, element): for child in children: result.extend(create_child(obj, child)) assign_groups(children) + # TEST: mark new objects to recompute + QtCore.QTimer.singleShot(0, lambda: recompute([get_object(c) for c in children])) return result -def assign_groups(children): - """Fill the groups inthis list""" +def assign_groups(children, ifcfile=None): + """Fill the groups in this list. Returns a list of processed FreeCAD objects""" + result = [] for child in children: if child.is_a("IfcGroup"): mode = "IsGroupedBy" @@ -338,10 +365,10 @@ def assign_groups(children): else: mode = None if mode: - grobj = get_object(child) + grobj = get_object(child, None, ifcfile) for rel in getattr(child, mode): for elem in rel.RelatedObjects: - elobj = get_object(elem) + elobj = get_object(elem, None, ifcfile) if elobj: if len(elobj.InList) == 1: p = elobj.InList[0] @@ -352,6 +379,8 @@ def assign_groups(children): g = grobj.Group g.append(elobj) grobj.Group = g + result.append(elobj) + return result def get_children( @@ -381,7 +410,19 @@ def get_children( return result -def get_object(element, document=None): +def get_freecad_children(obj): + """Returns the children of this object that exist in the document""" + + objs = [] + children = get_children(obj) + for child in children: + childobj = get_object(child) + if childobj: + objs.extend(get_freecad_children(childobj)) + return objs + + +def get_object(element, document=None, ifcfile=None): """Returns the object that references this element, if any""" if document: @@ -392,7 +433,7 @@ def get_object(element, document=None): for obj in d.Objects: if hasattr(obj, "StepId"): if obj.StepId == element.id(): - if get_ifc_element(obj) == element: + if get_ifc_element(obj, ifcfile) == element: return obj return None @@ -405,7 +446,7 @@ def get_ifcfile(obj): if getattr(project, "Proxy", None): if hasattr(project.Proxy, "ifcfile"): return project.Proxy.ifcfile - if project.IfcFilePath: + if getattr(project, "IfcFilePath", None): ifcfile = ifcopenshell.open(project.IfcFilePath) if hasattr(project, "Proxy"): if project.Proxy is None: @@ -415,7 +456,7 @@ def get_ifcfile(obj): project.Proxy.ifcfile = ifcfile return ifcfile else: - FreeCAD.Console.PrintError("Error: No IFC file attached to this project") + FreeCAD.Console.PrintError("Error: No IFC file attached to this project: "+project.Label) return None @@ -461,37 +502,68 @@ def can_expand(obj, ifcfile=None): def add_object(document, otype=None, oname="IfcObject"): """adds a new object to a FreeCAD document. - otype can be 'project', 'group', 'material', 'layer' or None (normal object)""" + otype can be: + 'project', + 'group', + 'material', + 'layer', + 'text', + 'dimension', + 'sectionplane', + 'axis', + 'schedule' + or anything else for a standard IFC object""" if not document: return None - proxy = ifc_objects.ifc_object(otype) - if otype == "group": - proxy = None - ftype = "App::DocumentObjectGroupPython" - elif otype == "material": - ftype = "App::MaterialObjectPython" + if otype == "schedule": + obj = Arch.makeSchedule() + elif otype == "sectionplane": + obj = Arch.makeSectionPlane() + obj.Proxy = ifc_objects.ifc_object(otype) + elif otype == "axis": + obj = Arch.makeAxis() + obj.Proxy = ifc_objects.ifc_object(otype) + obj.removeProperty("Angles") + obj.removeProperty("Distances") + obj.removeProperty("Labels") + obj.removeProperty("Limit") + if obj.ViewObject: + obj.ViewObject.DisplayMode = "Flat Lines" + elif otype == "dimension": + obj = Draft.make_dimension(FreeCAD.Vector(), FreeCAD.Vector(1,0,0)) + obj.Proxy = ifc_objects.ifc_object(otype) + obj.removeProperty("Diameter") + obj.removeProperty("Distance") + obj.setPropertyStatus("LinkedGeometry", "Hidden") + obj.setGroupOfProperty("Start", "Dimension") + obj.setGroupOfProperty("End", "Dimension") + obj.setGroupOfProperty("Direction", "Dimension") + elif otype == "text": + obj = Draft.make_text("") + obj.Proxy = ifc_objects.ifc_object(otype) elif otype == "layer": - ftype = "App::FeaturePython" - else: - ftype = "Part::FeaturePython" - if otype == "project": - vp = ifc_viewproviders.ifc_vp_document() + proxy = ifc_objects.ifc_object(otype) + obj = document.addObject("App::FeaturePython", oname, proxy, None, False) + if obj.ViewObject: + view_layer.ViewProviderLayer(obj.ViewObject) + obj.ViewObject.addProperty("App::PropertyBool", "HideChildren", "Layer") + obj.ViewObject.HideChildren = True elif otype == "group": - vp = ifc_viewproviders.ifc_vp_group() + vproxy = ifc_viewproviders.ifc_vp_group() + obj = document.addObject("App::DocumentObjectGroupPython", oname, None, vproxy, False) elif otype == "material": - vp = ifc_viewproviders.ifc_vp_material() - elif otype == "layer": - vp = None - else: - vp = ifc_viewproviders.ifc_vp_object() - obj = document.addObject(ftype, oname, proxy, vp, False) - if obj.ViewObject and otype == "layer": - from draftviewproviders import view_layer # lazy import - - view_layer.ViewProviderLayer(obj.ViewObject) - obj.ViewObject.addProperty("App::PropertyBool", "HideChildren", "Layer") - obj.ViewObject.HideChildren = True + proxy = ifc_objects.ifc_object(otype) + vproxy = ifc_viewproviders.ifc_vp_material() + obj = document.addObject("App::MaterialObjectPython", oname, proxy, vproxy, False) + elif otype == "project": + proxy = ifc_objects.ifc_object(otype) + vproxy = ifc_viewproviders.ifc_vp_document() + obj = document.addObject("Part::FeaturePython", oname, proxy, vproxy, False) + else: # default case, standard IFC object + proxy = ifc_objects.ifc_object(otype) + vproxy = ifc_viewproviders.ifc_vp_object() + obj = document.addObject("Part::FeaturePython", oname, proxy, vproxy, False) return obj @@ -622,6 +694,67 @@ def add_properties( obj.addProperty("App::PropertyString", attr, "IFC") if value is not None: setattr(obj, attr, str(value)) + # annotation properties + if ifcentity.is_a("IfcGridAxis"): + axisdata = ifc_export.get_axis(ifcentity) + if axisdata: + if "Placement" not in obj.PropertiesList: + obj.addProperty("App::PropertyPlacement", "Placement", "Base") + if "CustomText" in obj.PropertiesList: + obj.setPropertyStatus("CustomText", "Hidden") + obj.setExpression("CustomText", "AxisTag") + if "Length" not in obj.PropertiesList: + obj.addProperty("App::PropertyLength","Length","Axis") + obj.Length = axisdata[1] + elif ifcentity.is_a("IfcAnnotation"): + sectionplane = ifc_export.get_sectionplane(ifcentity) + if sectionplane: + if "Placement" not in obj.PropertiesList: + obj.addProperty("App::PropertyPlacement", "Placement", "Base") + if "Depth" not in obj.PropertiesList: + obj.addProperty("App::PropertyLength","Depth","SectionPlane") + obj.Placement = sectionplane[0] + if len(sectionplane) > 3: + obj.Depth = sectionplane[3] + vobj = obj.ViewObject + if vobj: + if "DisplayLength" not in vobj.PropertiesList: + vobj.addProperty("App::PropertyLength","DisplayLength","SectionPlane") + if "DisplayHeight" not in vobj.PropertiesList: + vobj.addProperty("App::PropertyLength","DisplayHeight","SectionPlane") + if len(sectionplane) > 1: + vobj.DisplayLength = sectionplane[1] + if len(sectionplane) > 2: + vobj.DisplayHeight = sectionplane[2] + else: + dim = ifc_export.get_dimension(ifcentity) + if dim and len(dim) >= 3: + if "Start" not in obj.PropertiesList: + obj.addProperty("App::PropertyVectorDistance", "Start", "Base") + if "End" not in obj.PropertiesList: + obj.addProperty("App::PropertyVectorDistance", "End", "Base") + if "Dimline" not in obj.PropertiesList: + obj.addProperty("App::PropertyVectorDistance", "Dimline", "Base") + obj.Start = dim[1] + obj.End = dim[2] + if len(dim) > 3: + obj.Dimline = dim[3] + else: + mid = obj.End.sub(obj.Start) + mid.multiply(0.5) + obj.Dimline = obj.Start.add(mid) + else: + text = ifc_export.get_text(ifcentity) + if text: + if "Placement" not in obj.PropertiesList: + obj.addProperty("App::PropertyPlacement", "Placement", "Base") + if "Text" not in obj.PropertiesList: + obj.addProperty("App::PropertyStringList", "Text", "Base") + obj.Text = [text.Literal] + obj.Placement = ifc_export.get_placement(ifcentity.ObjectPlacement, ifcfile) + elif ifcentity.is_a("IfcControl"): + ifc_psets.show_psets(obj) + # link Label2 and Description if "Description" in obj.PropertiesList and hasattr(obj, "setExpression"): obj.setExpression("Label2", "Description") @@ -739,8 +872,6 @@ def filter_elements(elements, ifcfile, expand=True, spaces=False, assemblies=Tru elements = [e for e in elements if not e.is_a("IfcProject")] # skip furniture for now, they can be lazy loaded probably elements = [e for e in elements if not e.is_a("IfcFurnishingElement")] - # skip annotations for now - elements = [e for e in elements if not e.is_a("IfcAnnotation")] return elements @@ -754,6 +885,9 @@ def differs(val1, val2): return False if not val1 and not val2: return False + if isinstance(val1, (tuple, list)): + if tuple(val1) == tuple(val2): + return False if val1 is None and "NOTDEFINED" in str(val2).upper(): return False if val1 is None and "UNDEFINED" in str(val2).upper(): @@ -793,12 +927,13 @@ def differs(val1, val2): ): # do not consider default FreeCAD names given to unnamed alements return False - if differs(getattr(element, attribute, None),value): + if differs(getattr(element, attribute, None), value): FreeCAD.Console.PrintLog( "Changing IFC attribute value of " + str(attribute) + ": " + str(value) + + " (original value:" +str(getattr(element, attribute))+")" + "\n" ) api_run(cmd, ifcfile, product=element, attributes=attribs) @@ -828,7 +963,7 @@ def set_colors(obj, colors): if len(colors) > 1: #colors[0] = colors[0][:3] + (0.0,) # TEMP HACK: if multiple colors, set everything to opaque because it looks wrong - colors = [color[:3] + (0.0,) for color in colors] + colors = [color[:3] + (1.0,) for color in colors] sapp = [] for color in colors: sapp_mat = FreeCAD.Material() @@ -935,6 +1070,13 @@ def set_placement(obj): if obj.Class in ["IfcProject", "IfcProjectLibrary"]: return element = get_ifc_element(obj) + if not hasattr(element, "ObjectPlacement"): + # special case: this is a grid axis, it has no placement + if element.is_a("IfcGridAxis"): + return set_axis_points(obj, element, ifcfile) + # other cases of objects without ObjectPlacement? + print("DEBUG: object without ObjectPlacement",element) + return False placement = FreeCAD.Placement(obj.Placement) placement.Base = FreeCAD.Vector(placement.Base).multiply(get_scale(ifcfile)) new_matrix = get_ios_matrix(placement) @@ -960,6 +1102,29 @@ def set_placement(obj): return False +def set_axis_points(obj, element, ifcfile): + """Sets the points of an axis from placement and length""" + + if element.AxisCurve.is_a("IfcPolyline"): + p1 = obj.Placement.Base + p2 = obj.Placement.multVec(FreeCAD.Vector(0, obj.Length.Value, 0)) + api_run( + "attribute.edit_attributes", + ifcfile, + product=element.AxisCurve.Points[0], + attributes={"Coordinates": tuple(p1)}, + ) + api_run( + "attribute.edit_attributes", + ifcfile, + product=element.AxisCurve.Points[-1], + attributes={"Coordinates": tuple(p2)}, + ) + return True + print("DEBUG: unhandled axis type:",element.AxisCurve.is_a()) + return False + + def save_ifc(obj, filepath=None): """Saves the linked IFC file of a project, but does not mark it as saved""" @@ -993,6 +1158,7 @@ def aggregate(obj, parent, mode=None): if not ifcfile: return product = None + new = False stepid = getattr(obj, "StepId", None) if stepid: # obj might be dragging at this point and has no project anymore @@ -1006,16 +1172,25 @@ def aggregate(obj, parent, mode=None): # this object already has an associated IFC product print("DEBUG:", obj.Label, "is already part of the IFC document") newobj = obj - new = False else: ifcclass = None if mode == "opening": ifcclass = "IfcOpeningElement" - product = create_product(obj, parent, ifcfile, ifcclass) + objecttype = None + if ifc_export.is_annotation(obj): + product = ifc_export.create_annotation(obj, ifcfile) + if Draft.get_type(obj) in ["DraftText","Text"]: + objecttype = "text" + elif "CreateSpreadsheet" in obj.PropertiesList: + obj.Proxy.create_ifc(obj, ifcfile) + newobj = obj + else: + product = ifc_export.create_product(obj, parent, ifcfile, ifcclass) + if product: shapemode = getattr(parent, "ShapeMode", DEFAULT_SHAPEMODE) - newobj = create_object(product, obj.Document, ifcfile, shapemode) + newobj = create_object(product, obj.Document, ifcfile, shapemode, objecttype) new = True - create_relationship(obj, newobj, parent, product, ifcfile, mode) + create_relationship(obj, newobj, parent, product, ifcfile, mode) base = getattr(obj, "Base", None) if base: # make sure the base is used only by this object before deleting @@ -1065,69 +1240,6 @@ def deaggregate(obj, parent): parent.Proxy.removeObject(parent, obj) -def create_product(obj, parent, ifcfile, ifcclass=None): - """Creates an IFC product out of a FreeCAD object""" - - name = obj.Label - description = getattr(obj, "Description", None) - if not ifcclass: - ifcclass = get_ifctype(obj) - representation, placement, shapetype = create_representation(obj, ifcfile) - product = api_run("root.create_entity", ifcfile, ifc_class=ifcclass, name=name) - set_attribute(ifcfile, product, "Description", description) - set_attribute(ifcfile, product, "ObjectPlacement", placement) - # TODO below cannot be used at the moment because the ArchIFC exporter returns an - # IfcProductDefinitionShape already and not an IfcShapeRepresentation - # api_run("geometry.assign_representation", ifcfile, product=product, representation=representation) - set_attribute(ifcfile, product, "Representation", representation) - # additions - if hasattr(obj,"Additions") and shapetype in ["extrusion","no shape"]: - for addobj in obj.Additions: - r2,p2,c2 = create_representation(addobj, ifcfile) - cl2 = get_ifctype(addobj) - addprod = api_run("root.create_entity", ifcfile, ifc_class=cl2, name=addobj.Label) - set_attribute(ifcfile, addprod, "Description", getattr(addobj, "Description", "")) - set_attribute(ifcfile, addprod, "ObjectPlacement", p2) - set_attribute(ifcfile, addprod, "Representation", r2) - create_relationship(None, addobj, product, addprod, ifcfile) - # subtractions - if hasattr(obj,"Subtractions") and shapetype in ["extrusion","no shape"]: - for subobj in obj.Subtractions: - r3,p3,c3 = create_representation(subobj, ifcfile) - cl3 = "IfcOpeningElement" - subprod = api_run("root.create_entity", ifcfile, ifc_class=cl3, name=subobj.Label) - set_attribute(ifcfile, subprod, "Description", getattr(subobj, "Description", "")) - set_attribute(ifcfile, subprod, "ObjectPlacement", p3) - set_attribute(ifcfile, subprod, "Representation", r3) - create_relationship(None, subobj, product, subprod, ifcfile) - return product - - -def create_representation(obj, ifcfile): - """Creates a geometry representation for the given object""" - - # TEMPORARY use the Arch exporter - # TODO this is temporary. We should rely on ifcopenshell for this with: - # https://blenderbim.org/docs-python/autoapi/ifcopenshell/api/root/create_entity/index.html - # a new FreeCAD 'engine' should be added to: - # https://blenderbim.org/docs-python/autoapi/ifcopenshell/api/geometry/index.html - # that should contain all typical use cases one could have to convert FreeCAD geometry - # to IFC. - - # setup exporter - TODO do that in the module init - exportIFC.clones = {} - exportIFC.profiledefs = {} - exportIFC.surfstyles = {} - exportIFC.shapedefs = {} - exportIFC.ifcopenshell = ifcopenshell - exportIFC.ifcbin = exportIFCHelper.recycler(ifcfile, template=False) - prefs, context = get_export_preferences(ifcfile) - representation, placement, shapetype = exportIFC.getRepresentation( - ifcfile, context, obj, preferences=prefs - ) - return representation, placement, shapetype - - def get_ifctype(obj): """Returns a valid IFC type from an object""" @@ -1140,24 +1252,10 @@ def get_ifctype(obj): if dtype in ["App::Part","Part::Compound","Array"]: return "IfcElementAssembly" if dtype in ["App::DocumentObjectGroup"]: - ifctype = "IfcGroup" + return "IfcGroup" return "IfcBuildingElementProxy" -def get_export_preferences(ifcfile): - """returns a preferences dict for exportIFC""" - - prefs = exportIFC.getPreferences() - prefs["SCHEMA"] = ifcfile.wrapped_data.schema_name() - s = ifcopenshell.util.unit.calculate_unit_scale(ifcfile) - # the above lines yields meter -> file unit scale factor. We need mm - prefs["SCALE_FACTOR"] = 0.001 / s - context = ifcfile[ - get_body_context_ids(ifcfile)[0] - ] # we take the first one (first found subcontext) - return prefs, context - - def get_subvolume(obj): """returns a subface + subvolume from a window object""" @@ -1196,8 +1294,46 @@ def create_relationship(old_obj, obj, parent, element, ifcfile, mode=None): parent_element = get_ifc_element(parent) else: parent_element = parent + uprel = None + # case 4: anything inside group + if parent_element.is_a("IfcGroup"): + # special case: adding a section plane to a grouo turns it into a drawing + # and removes it from any containment + if element.is_a("IfcAnnotation") and element.ObjectType == "DRAWING": + parent.ObjectType = "DRAWING" + try: + api_run("spatial.unassign_container", ifcfile, products=[parent_element]) + except: + # older version of IfcOpenShell + api_run("spatial.unassign_container", ifcfile, product=parent_element) + # IFC objects can be part of multiple groups but we do the FreeCAD way here + # and remove from any previous group + for assignment in getattr(element,"HasAssignments",[]): + if assignment.is_a("IfcRelAssignsToGroup"): + if element in assignment.RelatedObjects: + oldgroup = assignment.RelatingGr + try: + api_run( + "group.unassign_group", + ifcfile, + products=[element], + group=oldgroup + ) + except: + # older version of IfcOpenShell + api_run( + "group.unassign_group", + ifcfile, + product=element, + group=oldgroup + ) + try: + uprel = api_run("group.assign_group", ifcfile, products=[element], group=parent_element) + except: + # older version of IfcOpenShell + uprel = api_run("group.assign_group", ifcfile, product=element, group=parent_element) # case 1: element inside spatiual structure - if parent_element.is_a("IfcSpatialStructureElement") and element.is_a("IfcElement"): + elif parent_element.is_a("IfcSpatialStructureElement") and element.is_a("IfcElement"): # first remove the FreeCAD object from any parent if old_obj: for old_par in old_obj.InList: @@ -1240,7 +1376,7 @@ def create_relationship(old_obj, obj, parent, element, ifcfile, mode=None): if old_obj: tempface, tempobj = get_subvolume(old_obj) if tempobj: - opening = create_product(tempobj, parent, ifcfile, "IfcOpeningElement") + opening = ifc_export.create_product(tempobj, parent, ifcfile, "IfcOpeningElement") set_attribute(ifcfile, product, "Name", "Opening") old_obj.Document.removeObject(tempobj.Name) if tempface: @@ -1296,7 +1432,7 @@ def create_relationship(old_obj, obj, parent, element, ifcfile, mode=None): "void.add_opening", ifcfile, opening=element, element=parent_element ) # case 3: element aggregated inside other element - else: + elif element.is_a("IfcProduct"): try: api_run("aggregate.unassign_object", ifcfile, products=[element]) except: @@ -1394,12 +1530,26 @@ def remove_ifc_element(obj,delete_obj=False): def get_orphan_elements(ifcfile): """returns a list of orphan products in an ifcfile""" - products = ifcfile.by_type("IfcElement") + products = ifcfile.by_type("IfcProduct") products = [p for p in products if not p.Decomposes] products = [p for p in products if not p.ContainedInStructure] products = [ p for p in products if not hasattr(p, "VoidsElements") or not p.VoidsElements ] + # add control elements + proj = ifcfile.by_type("IfcProject")[0] + for rel in proj.Declares: + for ctrl in getattr(rel,"RelatedDefinitions", []): + if ctrl.is_a("IfcControl"): + products.append(ctrl) + groups = [] + for o in products: + for rel in getattr(o, "HasAssignments", []): + if rel.is_a("IfcRelAssignsToGroup"): + g = rel.RelatingGroup + if (g not in products) and (g not in groups): + groups.append(g) + products.extend(groups) return products @@ -1441,8 +1591,23 @@ def load_orphans(obj): ifcfile = get_ifcfile(obj) shapemode = obj.ShapeMode elements = get_orphan_elements(ifcfile) + objs = [] for element in elements: - create_object(element, doc, ifcfile, shapemode) + nobj = create_object(element, doc, ifcfile, shapemode) + objs.append(nobj) + processed = assign_groups(elements, ifcfile) + + # put things under project. This is important so orphan elements still can find + # their IFC file + rest = [o for o in objs if o not in processed] + if rest: + project = get_project(ifcfile) + if isinstance(project, FreeCAD.DocumentObject): + for o in rest: + project.Proxy.addObject(project, o) + + # TEST: Try recomputing + QtCore.QTimer.singleShot(0, lambda: recompute(objs)) def remove_tree(objs): @@ -1467,3 +1632,17 @@ def remove_tree(objs): doc.removeObject(n) +def recompute(children): + """Temporary function to recompute objects. Some objects don't get their + shape correctly at creation""" + #import time + #stime = time.time() + doc = None + for c in children: + if c: + c.touch() + doc = c.Document + if doc: + doc.recompute() + #endtime = "%02d:%02d" % (divmod(round(time.time() - stime, 1), 60)) + #print("DEBUG: Extra recomputing of",len(children),"objects took",endtime) diff --git a/src/Mod/BIM/nativeifc/ifc_tree.py b/src/Mod/BIM/nativeifc/ifc_tree.py index 2b9ba7d791dc..cbfa923c8b6d 100644 --- a/src/Mod/BIM/nativeifc/ifc_tree.py +++ b/src/Mod/BIM/nativeifc/ifc_tree.py @@ -3,20 +3,20 @@ # * Copyright (c) 2023 Yorik van Havre * # * * # * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU General Public License (GPL) * -# * as published by the Free Software Foundation; either version 3 of * +# * it under the terms of the GNU Lesser General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * # * the License, or (at your option) any later version. * # * for detail see the LICENCE text file. * # * * # * This program is distributed in the hope that it will be useful, * # * but WITHOUT ANY WARRANTY; without even the implied warranty of * # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU General Public License for more details. * +# * GNU Library General Public License for more details. * # * * -# * You should have received a copy of the GNU Library General Public * -# * License along with this program; if not, write to the Free Software * -# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -# * USA * +#* You should have received a copy of the GNU Library General Public * +#* License along with this program; if not, write to the Free Software * +#* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * +#* USA * # * * # *************************************************************************** diff --git a/src/Mod/BIM/nativeifc/ifc_types.py b/src/Mod/BIM/nativeifc/ifc_types.py index f02303cb3ac5..0a714fa6d5a1 100644 --- a/src/Mod/BIM/nativeifc/ifc_types.py +++ b/src/Mod/BIM/nativeifc/ifc_types.py @@ -3,15 +3,15 @@ # * Copyright (c) 2023 Yorik van Havre * # * * # * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU General Public License (GPL) * -# * as published by the Free Software Foundation; either version 3 of * +# * it under the terms of the GNU Library General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * # * the License, or (at your option) any later version. * # * for detail see the LICENCE text file. * # * * # * This program is distributed in the hope that it will be useful, * # * but WITHOUT ANY WARRANTY; without even the implied warranty of * # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU General Public License for more details. * +# * GNU Library General Public License for more details. * # * * # * You should have received a copy of the GNU Library General Public * # * License along with this program; if not, write to the Free Software * @@ -91,3 +91,38 @@ def convert_to_type(obj, keep_object=False): else: ifc_tools.remove_ifc_element(obj, delete_obj=True) ifc_tools.get_group(project, "IfcTypesGroup").addObject(type_obj) + + +def edit_type(obj): + """Edits the type of this object""" + + element = ifc_tools.get_ifc_element(obj) + ifcfile = ifc_tools.get_ifcfile(obj) + if not element or not ifcfile: + return + + typerel = getattr(element, "IsTypedBy", None) + if obj.Type: + # verify the type is compatible -ex IFcWall in IfcWallType + if obj.Type.Class != element.is_a() + "Type": + t = translate("BIM","Error: Incompatible type") + FreeCAD.Console.PrintError(obj.Label+": "+t+": "+obj.Type.Class+"\n") + obj.Type = None + return + # change type + new_type = ifc_tools.get_ifc_element(obj.Type) + if not new_type: + return + for rel in typerel: + if rel.RelatingType == new_type: + return + # assign the new type + ifc_tools.api_run("type.assign_type", + ifcfile, + related_objects=[element], + relating_type=new_type + ) + elif typerel: + # TODO remove type? + # Not doing anything right now because an unset Type property could screw the ifc file + pass diff --git a/src/Mod/BIM/nativeifc/ifc_viewproviders.py b/src/Mod/BIM/nativeifc/ifc_viewproviders.py index 3d7558ec318a..77f99c20a924 100644 --- a/src/Mod/BIM/nativeifc/ifc_viewproviders.py +++ b/src/Mod/BIM/nativeifc/ifc_viewproviders.py @@ -3,15 +3,15 @@ # * Copyright (c) 2022 Yorik van Havre * # * * # * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU General Public License (GPL) * -# * as published by the Free Software Foundation; either version 3 of * +# * it under the terms of the GNU Library General Public License (LGPL) * +# * as published by the Free Software Foundation; either version 2 of * # * the License, or (at your option) any later version. * # * for detail see the LICENCE text file. * # * * # * This program is distributed in the hope that it will be useful, * # * but WITHOUT ANY WARRANTY; without even the implied warranty of * # * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU General Public License for more details. * +# * GNU Library General Public License for more details. * # * * # * You should have received a copy of the GNU Library General Public * # * License along with this program; if not, write to the Free Software * @@ -245,7 +245,7 @@ def switchShape(self): import Part # lazy loading self.Object.Shape = Part.Shape() - elif self.Object.ShapeMode == "Coin": + else: self.Object.ShapeMode = "Shape" self.Object.Document.recompute() self.Object.ViewObject.DiffuseColor = self.Object.ViewObject.DiffuseColor @@ -380,6 +380,7 @@ def expandProperties(self, vobj): from nativeifc import ifc_materials # lazy import from nativeifc import ifc_layers # lazy import from nativeifc import ifc_types # lazy import + from nativeifc import ifc_classification # lazy import # generic data loading ifc_geometry.add_geom_properties(vobj.Object) @@ -387,6 +388,7 @@ def expandProperties(self, vobj): ifc_materials.show_material(vobj.Object) ifc_layers.add_layers(vobj.Object) ifc_types.show_type(vobj.Object) + ifc_classification.show_classification(vobj.Object) # expand children if self.hasChildren(vobj.Object): diff --git a/src/Mod/BIM/utils/buildPsets.py b/src/Mod/BIM/utils/buildPsets.py index 814cbe2c40fd..f08ba2277e75 100644 --- a/src/Mod/BIM/utils/buildPsets.py +++ b/src/Mod/BIM/utils/buildPsets.py @@ -20,56 +20,119 @@ # * * # *************************************************************************** -"""This script retrieves a list of standard property sets from the IFC4 official documentation website - and stores them into a pset_dfinitions.xml files in the current directory. Warning, this can take - a certain time (there are more than 400 definitions to retrieve)""" +"""This script retrieves a list of standard property sets from the IFC4 official + documentation website and stores them into 1) a pset_definitions.csv and 2) + a qto_definitions.csv files in the directory ../Presets.""" -import codecs, os, re +import os +from zipfile import ZipFile from urllib.request import urlopen +import xml.sax -MAXTRIES = 3 -IFC_DOCS_ROOT_URL = "https://standards.buildingsmart.org/IFC/DEV/IFC4_2/FINAL/HTML/" - -# read the pset list -print("Getting psets list...") -u = urlopen( - IFC_DOCS_ROOT_URL + "annex/annex-b/alphabeticalorder_psets.htm" -) -p = u.read().decode('utf-8') -u.close() -psets = re.findall(r">Pset_(.*?)", p) - -# retrieve xml data from each Pset type -psetdefs = "" -failed = [] -for i, pset in enumerate(psets): - print(i + 1, "/", len(psets), ": Retrieving Pset", pset) - for j in range(MAXTRIES): - try: - u = urlopen( - IFC_DOCS_ROOT_URL + "psd/Pset_" - + pset - + ".xml" - ) - p = u.read().decode('utf-8') - u.close() - except: - print(" Connection failed. trying one more time...") + +URL = "https://ifc43-docs.standards.buildingsmart.org/IFC/RELEASE/IFC4x3/HTML/annex-a-psd.zip" + +QTO_TYPES = { + "Q_AREA": "IfcQuantityArea", + "Q_COUNT": "IfcQuantityCount", + "Q_LENGTH": "IfcQuantityLength", + "Q_NUMBER": "IfcQuantityNumber", + "Q_TIME": "IfcQuantityTime", + "Q_VOLUME": "IfcQuantityVolume", + "Q_WEIGHT": "IfcQuantityWeight", +} + +class PropertyDefHandler(xml.sax.ContentHandler): + "A XML handler to process pset definitions" + + # this creates a dictionary where each key is a Pset name, + # and each value is a list of [property,type] lists + + def __init__(self, pset): + super().__init__() + self.line = pset.strip(".xml") + ";" + self.currentprop = None + self.currenttype = None + self.charbuffer = [] + self.writing = False + self.prop = False + self.qtotype = False + + # Call when raw text is read (the property name) + + def characters(self, data): + if self.writing: + self.charbuffer.append(data) + + # Call when an element starts + + def startElement(self, tag, attributes): + if tag in ["PropertyDef", "QtoDef"]: + self.prop = True + elif tag == "Name": + self.writing = True + elif tag == "DataType": + self.currenttype = attributes["type"] + elif tag == "QtoType": + self.qtotype = True + self.writing = True + + # Call when an elements ends + + def endElement(self, tag): + if tag in ["Name", "QtoType"]: + if self.prop: + self.currentprop = "".join(self.charbuffer) + elif self.qtotype: + self.currenttype = "".join(self.charbuffer) + self.writing = False + self.prop = False + self.qtotype = False + self.charbuffer = [] + elif tag in ["PropertyDef", "QtoDef"]: + if self.currentprop and self.currenttype: + if self.currenttype in QTO_TYPES: + self.currenttype = QTO_TYPES[self.currenttype] + self.line += self.currentprop + ";" + self.currenttype + ";" + self.currentprop = None + self.currenttype = None + + + +# MAIN + + +print("Getting psets xml definitions...") + +with open("psd.zip","wb") as f: + u = urlopen(URL) + p = u.read() + f.write(p) + +print("Reading xml definitions...") + +psets = [] +qtos = [] + +with ZipFile("psd.zip", 'r') as z: + for entry in z.namelist(): + print("Parsing",entry) + xml_data = z.read(entry).decode(encoding="utf-8") + handler = PropertyDefHandler(entry) + xml.sax.parseString(xml_data, handler) + if entry.startswith("Pset"): + psets.append(handler.line) else: - break - else: - print(" Unable to retrieve ", pset, ". Skipping...") - failed.append(pset) - psetdefs += p -psetdefs = psetdefs.replace('', "") -psetdefs = '\n\n' + psetdefs + "" - -f = codecs.open("pset_definitions.xml", "wb", "utf-8") -f.write(psetdefs) -f.close() -print( - "All done! writing " - + os.path.join(os.path.abspath(os.curdir), "pset_definitions.xml") -) -if failed: - print("The following psets failed and were not retrieved:", failed) + qtos.append(handler.line) + +print("Saving files...") + +with open("../Presets/pset_definitions.csv", "w") as f: + for l in psets: + f.write(l.strip(";") + "\n") + +with open("../Presets/qto_definitions.csv", "w") as f: + for l in qtos: + f.write(l.strip(";") + "\n") + +os.remove("psd.zip") diff --git a/src/Mod/BIM/utils/convertPsets.py b/src/Mod/BIM/utils/convertPsets.py deleted file mode 100644 index ca2a6e839079..000000000000 --- a/src/Mod/BIM/utils/convertPsets.py +++ /dev/null @@ -1,102 +0,0 @@ -# *************************************************************************** -# * * -# * Copyright (c) 2018 Yorik van Havre * -# * * -# * This program is free software; you can redistribute it and/or modify * -# * it under the terms of the GNU Lesser General Public License (LGPL) * -# * as published by the Free Software Foundation; either version 2 of * -# * the License, or (at your option) any later version. * -# * for detail see the LICENCE text file. * -# * * -# * This program is distributed in the hope that it will be useful, * -# * but WITHOUT ANY WARRANTY; without even the implied warranty of * -# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * -# * GNU Library General Public License for more details. * -# * * -# * You should have received a copy of the GNU Library General Public * -# * License along with this program; if not, write to the Free Software * -# * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 * -# * USA * -# * * -# *************************************************************************** - -"""This script converts a xml file containing pset definitions to a csv file. -Python3 only!! (py2 csv doesn't support utf8""" - -import xml.sax, os - - -class PropertyDefHandler(xml.sax.ContentHandler): - "A XML handler to process pset definitions" - - # this creates a dictionary where each key is a Pset name, - # and each value is a list of [property,type] lists - - def __init__(self): - super().__init__() - self.psets = {} - self.currentpset = None - self.currentprop = None - self.currenttype = None - self.currentlist = [] - self.charbuffer = [] - self.writing = False - - # Call when raw text is read - - def characters(self, data): - if self.writing: - self.charbuffer.append(data) - - # Call when an element starts - - def startElement(self, tag, attributes): - if tag == "Name": - self.writing = True - if tag == "DataType": - self.currenttype = attributes["type"] - - # Call when an elements ends - - def endElement(self, tag): - if tag == "Name": - if not self.currentpset: - self.currentpset = "".join(self.charbuffer) - else: - if not self.currentprop: - self.currentprop = "".join(self.charbuffer) - self.writing = False - self.charbuffer = [] - elif tag == "PropertyDef": - if self.currentprop and self.currenttype: - self.currentlist.append([self.currentprop, self.currenttype]) - self.currentprop = None - self.currenttype = None - elif tag == "PropertySetDef": - if self.currentpset and self.currentlist: - self.psets[self.currentpset] = self.currentlist - self.currentpset = None - self.currentlist = [] - - -defpath = "pset_definitions.xml" -outpath = "pset_definitions.csv" - -if os.path.exists(defpath): - handler = PropertyDefHandler() - parser = xml.sax.make_parser() - # parser.setFeature(xml.sax.handler.feature_namespaces, 0) - parser.setContentHandler(handler) - parser.parse(defpath) - psets = handler.psets - - import csv - - with open(outpath, "w", encoding="utf-8") as csvfile: - csvfile = csv.writer(csvfile, delimiter=";") - for key, values in psets.items(): - r = [key] - for value in values: - r.extend(value) - csvfile.writerow(r) - print("successfully exported ", outpath) diff --git a/src/Mod/BIM/utils/pset_definitions.csv b/src/Mod/BIM/utils/pset_definitions.csv deleted file mode 100644 index a96d59f81de7..000000000000 --- a/src/Mod/BIM/utils/pset_definitions.csv +++ /dev/null @@ -1,351 +0,0 @@ -Pset_ActionRequest;RequestSourceLabel;IfcLabel;RequestComments;IfcText -Pset_ActorCommon;NumberOfActors;IfcCountMeasure;Category;IfcLabel;SkillLevel;IfcLabel -Pset_ActuatorTypeCommon;Reference;IfcIdentifier;ManualOverride;IfcBoolean -Pset_ActuatorTypeElectricActuator;ActuatorInputPower;IfcPowerMeasure -Pset_ActuatorTypeHydraulicActuator;InputPressure;IfcPressureMeasure;InputFlowrate;IfcVolumetricFlowRateMeasure -Pset_ActuatorTypeLinearActuation;Force;IfcForceMeasure;Stroke;IfcLengthMeasure -Pset_ActuatorTypePneumaticActuator;InputPressure;IfcPressureMeasure;InputFlowrate;IfcVolumetricFlowRateMeasure -Pset_ActuatorTypeRotationalActuation;Torque;IfcTorqueMeasure;RangeAngle;IfcPlaneAngleMeasure -Pset_AirSideSystemInformation;Name;IfcLabel;Description;IfcLabel;TotalAirflow;IfcVolumetricFlowRateMeasure;EnergyGainTotal;IfcPowerMeasure;AirflowSensible;IfcVolumetricFlowRateMeasure;EnergyGainSensible;IfcPowerMeasure;EnergyLoss;IfcPowerMeasure;LightingDiversity;IfcPositiveRatioMeasure;InfiltrationDiversitySummer;IfcPositiveRatioMeasure;InfiltrationDiversityWinter;IfcPositiveRatioMeasure;ApplianceDiversity;IfcPositiveRatioMeasure;LoadSafetyFactor;IfcPositiveRatioMeasure;HeatingTemperatureDelta;IfcThermodynamicTemperatureMeasure;CoolingTemperatureDelta;IfcThermodynamicTemperatureMeasure;Ventilation;IfcVolumetricFlowRateMeasure;FanPower;IfcPowerMeasure -Pset_AirTerminalBoxTypeCommon;Reference;IfcIdentifier;AirflowRateRange;IfcVolumetricFlowRateMeasure;AirPressureRange;IfcPressureMeasure;NominalAirFlowRate;IfcVolumetricFlowRateMeasure;HasSoundAttenuator;IfcBoolean;HasReturnAir;IfcBoolean;HasFan;IfcBoolean;NominalInletAirPressure;IfcPressureMeasure;NominalDamperDiameter;IfcPositiveLengthMeasure;HousingThickness;IfcLengthMeasure;OperationTemperatureRange;IfcThermodynamicTemperatureMeasure;ReturnAirFractionRange;IfcPositiveRatioMeasure -Pset_AirTerminalOccurrence;AirFlowRate;IfcVolumetricFlowRateMeasure -Pset_AirTerminalPHistory;InductionRatio;IfcLengthMeasure;CenterlineAirVelocity;IfcLengthMeasure -Pset_AirTerminalTypeCommon;Reference;IfcIdentifier;SlotWidth;IfcPositiveLengthMeasure;SlotLength;IfcPositiveLengthMeasure;NumberOfSlots;IfcInteger;AirFlowrateRange;IfcVolumetricFlowRateMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;ThrowLength;IfcLengthMeasure;AirDiffusionPerformanceIndex;IfcReal;FinishColor;IfcLabel;CoreSetHorizontal;IfcPlaneAngleMeasure;CoreSetVertical;IfcPlaneAngleMeasure;HasIntegralControl;IfcBoolean;HasSoundAttenuator;IfcBoolean;HasThermalInsulation;IfcBoolean;NeckArea;IfcAreaMeasure;EffectiveArea;IfcAreaMeasure;AirFlowrateVersusFlowControlElement;IfcPositiveRatioMeasure -Pset_AirToAirHeatRecoveryTypeCommon;Reference;IfcIdentifier;HasDefrost;IfcBoolean;OperationalTemperatureRange;IfcThermodynamicTemperatureMeasure;PrimaryAirflowRateRange;IfcVolumetricFlowRateMeasure;SecondaryAirflowRateRange;IfcPressureMeasure -Pset_AlarmTypeCommon;Reference;IfcIdentifier;Condition;IfcLabel -Pset_AnnotationContourLine;ContourValue;IfcLengthMeasure -Pset_AnnotationLineOfSight;SetbackDistance;IfcPositiveLengthMeasure;VisibleAngleLeft;IfcPositivePlaneAngleMeasure;VisibleAngleRight;IfcPositivePlaneAngleMeasure;RoadVisibleDistanceLeft;IfcPositiveLengthMeasure;RoadVisibleDistanceRight;IfcPositiveLengthMeasure -Pset_AnnotationSurveyArea;AccuracyQualityObtained;IfcRatioMeasure;AccuracyQualityExpected;IfcRatioMeasure -Pset_AudioVisualApplianceTypeAmplifier;AudioAmplification;IfcSoundPowerMeasure;AudioMode;IfcLabel -Pset_AudioVisualApplianceTypeCamera;IsOutdoors;IfcBoolean;VideoResolutionWidth;IfcInteger;VideoResolutionHeight;IfcInteger;VideoResolutionMode;IfcLabel;VideoCaptureInterval;IfcTimeMeasure;PanTiltZoomPreset;IfcLabel;PanHorizontal;IfcLengthMeasure;PanVertical;IfcLengthMeasure;TiltHorizontal;IfcPlaneAngleMeasure;TiltVertical;IfcPlaneAngleMeasure;Zoom;IfcPositiveLengthMeasure -Pset_AudioVisualApplianceTypeCommon;Reference;IfcIdentifier;MediaSource;IfcLabel;AudioVolume;IfcSoundPowerMeasure -Pset_AudioVisualApplianceTypeDisplay;NominalSize;IfcPositiveLengthMeasure;DisplayWidth;IfcPositiveLengthMeasure;DisplayHeight;IfcPositiveLengthMeasure;Brightness;IfcIlluminanceMeasure;ContrastRatio;IfcPositiveRatioMeasure;RefreshRate;IfcFrequencyMeasure;VideoResolutionWidth;IfcInteger;VideoResolutionHeight;IfcInteger;VideoResolutionMode;IfcLabel;VideoScaleMode;IfcLabel;VideoCaptionMode;IfcLabel;AudioMode;IfcLabel -Pset_AudioVisualApplianceTypePlayer;PlayerMediaEject;IfcBoolean;PlayerMediaFormat;IfcLabel -Pset_AudioVisualApplianceTypeProjector;VideoResolutionWidth;IfcInteger;VideoResolutionHeight;IfcInteger;VideoResolutionMode;IfcLabel;VideoScaleMode;IfcLabel;VideoCaptionMode;IfcLabel -Pset_AudioVisualApplianceTypeReceiver;AudioAmplification;IfcRatioMeasure;AudioMode;IfcLabel -Pset_AudioVisualApplianceTypeSpeaker;SpeakerDriverSize;IfcPositiveLengthMeasure;FrequencyResponse;IfcSoundPowerMeasure;Impedence;IfcFrequencyMeasure -Pset_AudioVisualApplianceTypeTuner;TunerMode;IfcLabel;TunerChannel;IfcLabel;TunerFrequency;IfcFrequencyMeasure -Pset_BeamCommon;Reference;IfcIdentifier;Span;IfcPositiveLengthMeasure;Slope;IfcPlaneAngleMeasure;Roll;IfcPlaneAngleMeasure;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel -Pset_BoilerTypeCommon;Reference;IfcIdentifier;PressureRating;IfcPressureMeasure;HeatTransferSurfaceArea;IfcAreaMeasure;NominalPartLoadRatio;IfcReal;WaterInletTemperatureRange;IfcThermodynamicTemperatureMeasure;WaterStorageCapacity;IfcVolumeMeasure;IsWaterStorageHeater;IfcBoolean;PartialLoadEfficiencyCurves;IfcNormalisedRatioMeasure;OutletTemperatureRange;IfcThermodynamicTemperatureMeasure;NominalEnergyConsumption;IfcPowerMeasure -Pset_BoilerTypeSteam;MaximumOutletPressure;IfcLabel;NominalEfficiency;IfcNormalisedRatioMeasure;HeatOutput;IfcEnergyMeasure -Pset_BoilerTypeWater;NominalEfficiency;IfcNormalisedRatioMeasure;HeatOutput;IfcEnergyMeasure -Pset_BuildingCommon;Reference;IfcIdentifier;BuildingID;IfcIdentifier;IsPermanentID;IfcBoolean;ConstructionMethod;IfcLabel;FireProtectionClass;IfcLabel;SprinklerProtection;IfcBoolean;SprinklerProtectionAutomatic;IfcBoolean;OccupancyType;IfcLabel;GrossPlannedArea;IfcAreaMeasure;NetPlannedArea;IfcAreaMeasure;NumberOfStoreys;IfcInteger;YearOfConstruction;IfcLabel;YearOfLastRefurbishment;IfcLabel;IsLandmarked;IfcLogical -Pset_BuildingElementProxyCommon;Reference;IfcIdentifier;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel -Pset_BuildingElementProxyProvisionForVoid;Shape;IfcLabel;Width;IfcPositiveLengthMeasure;Height;IfcPositiveLengthMeasure;Diameter;IfcPositiveLengthMeasure;Depth;IfcPositiveLengthMeasure;System;IfcLabel -Pset_BuildingStoreyCommon;Reference;IfcIdentifier;EntranceLevel;IfcBoolean;AboveGround;IfcLogical;SprinklerProtection;IfcBoolean;SprinklerProtectionAutomatic;IfcBoolean;LoadBearingCapacity;IfcPlanarForceMeasure;GrossPlannedArea;IfcAreaMeasure;NetPlannedArea;IfcAreaMeasure -Pset_BuildingSystemCommon;Reference;IfcIdentifier -Pset_BuildingUse;MarketCategory;IfcLabel;MarketSubCategory;IfcLabel;PlanningControlStatus;IfcLabel;NarrativeText;IfcText;VacancyRateInCategoryNow;IfcPositiveRatioMeasure;TenureModesAvailableNow;IfcLabel;MarketSubCategoriesAvailableNow;IfcLabel;RentalRatesInCategoryNow;IfcMonetaryMeasure;VacancyRateInCategoryFuture;IfcPositiveRatioMeasure;TenureModesAvailableFuture;IfcLabel;MarketSubCategoriesAvailableFuture;IfcLabel;RentalRatesInCategoryFuture;IfcMonetaryMeasure -Pset_BuildingUseAdjacent;MarketCategory;IfcLabel;MarketSubCategory;IfcLabel;PlanningControlStatus;IfcLabel;NarrativeText;IfcText -Pset_BurnerTypeCommon;Reference;IfcIdentifier -Pset_CableCarrierFittingTypeCommon;Reference;IfcIdentifier -Pset_CableCarrierSegmentTypeCableLadderSegment;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;LadderConfiguration;IfcText -Pset_CableCarrierSegmentTypeCableTraySegment;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;HasCover;IfcBoolean -Pset_CableCarrierSegmentTypeCableTrunkingSegment;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;NumberOfCompartments;IfcInteger -Pset_CableCarrierSegmentTypeCommon;Reference;IfcIdentifier -Pset_CableCarrierSegmentTypeConduitSegment;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;IsRigid;IfcBoolean -Pset_CableFittingTypeCommon;Reference;IfcIdentifier -Pset_CableSegmentOccurrence;DesignAmbientTemperature;IfcThermodynamicTemperatureMeasure;UserCorrectionFactor;IfcReal;NumberOfParallelCircuits;IfcInteger;InstallationMethod;IfcLabel;DistanceBetweenParallelCircuits;IfcLengthMeasure;SoilConductivity;IfcThermalConductivityMeasure;CarrierStackNumber;IfcInteger;IsHorizontalCable;IfcBoolean;IsMountedFlatCable;IfcBoolean;CurrentCarryingCapasity;IfcElectricCurrentMeasure;MaximumCableLength;IfcLengthMeasure;PowerLoss;IfcElectricCurrentMeasure -Pset_CableSegmentTypeBusBarSegment;IsHorizontalBusbar;IfcBoolean -Pset_CableSegmentTypeCableSegment;Standard;IfcLabel;NumberOfCores;IfcInteger;OverallDiameter;IfcPositiveLengthMeasure;RatedVoltage;IfcElectricVoltageMeasure;RatedTemperature;IfcThermodynamicTemperatureMeasure;ScreenDiameter;IfcPositiveLengthMeasure;HasProtectiveEarth;IfcBoolean;MaximumOperatingTemperature;IfcThermodynamicTemperatureMeasure;MaximumShortCircuitTemperature;IfcThermodynamicTemperatureMeasure;SpecialConstruction;IfcLabel;Weight;IfcMassMeasure;SelfExtinguishing60332_1;IfcBoolean;SelfExtinguishing60332_3;IfcBoolean;HalogenProof;IfcBoolean;FunctionReliable;IfcBoolean -Pset_CableSegmentTypeCommon;Reference;IfcIdentifier -Pset_CableSegmentTypeConductorSegment;CrossSectionalArea;IfcAreaMeasure -Pset_CableSegmentTypeCoreSegment;OverallDiameter;IfcPositiveLengthMeasure;RatedVoltage;IfcElectricVoltageMeasure;RatedTemperature;IfcThermodynamicTemperatureMeasure;ScreenDiameter;IfcPositiveLengthMeasure;CoreIdentifier;IfcIdentifier;Weight;IfcMassMeasure;SelfExtinguishing60332_1;IfcBoolean;SelfExtinguishing60332_3;IfcBoolean;HalogenProof;IfcBoolean;FunctionReliable;IfcBoolean;Standard;IfcLabel -Pset_ChillerTypeCommon;Reference;IfcIdentifier;NominalCapacity;IfcPowerMeasure;NominalEfficiency;IfcPositiveRatioMeasure;NominalCondensingTemperature;IfcThermodynamicTemperatureMeasure;NominalEvaporatingTemperature;IfcThermodynamicTemperatureMeasure;NominalHeatRejectionRate;IfcPowerMeasure;NominalPowerConsumption;IfcPowerMeasure;CapacityCurve;IfcPowerMeasure;CoefficientOfPerformanceCurve;IfcReal;FullLoadRatioCurve;IfcNormalisedRatioMeasure -Pset_ChimneyCommon;Reference;IfcIdentifier;NumberOfDrafts;IfcCountMeasure;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel -Pset_CivilElementCommon;Reference;IfcIdentifier -Pset_CoilOccurrence;HasSoundAttenuation;IfcBoolean -Pset_CoilTypeCommon;Reference;IfcIdentifier;OperationalTemperatureRange;IfcThermodynamicTemperatureMeasure;AirflowRateRange;IfcVolumetricFlowRateMeasure;NominalSensibleCapacity;IfcPowerMeasure;NominalLatentCapacity;IfcPowerMeasure;NominalUA;IfcReal -Pset_CoilTypeHydronic;FluidPressureRange;IfcPressureMeasure;CoilFaceArea;IfcAreaMeasure;HeatExchangeSurfaceArea;IfcAreaMeasure;PrimarySurfaceArea;IfcAreaMeasure;SecondarySurfaceArea;IfcAreaMeasure;TotalUACurves;IfcVolumetricFlowRateMeasure;WaterPressureDropCurve;IfcPressureMeasure;BypassFactor;IfcNormalisedRatioMeasure;SensibleHeatRatio;IfcNormalisedRatioMeasure;WetCoilFraction;IfcNormalisedRatioMeasure -Pset_ColumnCommon;Reference;IfcIdentifier;Slope;IfcPlaneAngleMeasure;Roll;IfcPlaneAngleMeasure;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel -Pset_CommunicationsApplianceTypeCommon;Reference;IfcIdentifier -Pset_CompressorTypeCommon;Reference;IfcIdentifier;MinimumPartLoadRatio;IfcPositiveRatioMeasure;MaximumPartLoadRatio;IfcPositiveRatioMeasure;CompressorSpeed;IfcRotationalFrequencyMeasure;NominalCapacity;IfcPowerMeasure;IdealCapacity;IfcPowerMeasure;IdealShaftPower;IfcPowerMeasure;HasHotGasBypass;IfcBoolean;ImpellerDiameter;IfcPositiveLengthMeasure -Pset_ConcreteElementGeneral;ConstructionMethod;IfcLabel;StructuralClass;IfcLabel;StrengthClass;IfcLabel;ExposureClass;IfcLabel;ReinforcementVolumeRatio;IfcMassDensityMeasure;ReinforcementAreaRatio;IfcAreaDensityMeasure;DimensionalAccuracyClass;IfcLabel;ConstructionToleranceClass;IfcLabel;ConcreteCover;IfcPositiveLengthMeasure;ConcreteCoverAtMainBars;IfcPositiveLengthMeasure;ConcreteCoverAtLinks;IfcPositiveLengthMeasure;ReinforcementStrengthClass;IfcLabel -Pset_CondenserTypeCommon;Reference;IfcIdentifier;ExternalSurfaceArea;IfcAreaMeasure;InternalSurfaceArea;IfcAreaMeasure;InternalRefrigerantVolume;IfcVolumeMeasure;InternalWaterVolume;IfcVolumeMeasure;NominalHeatTransferArea;IfcAreaMeasure;NominalHeatTransferCoefficient;IfcThermalTransmittanceMeasure -Pset_Condition;AssessmentDate;IfcDate;AssessmentCondition;IfcLabel;AssessmentDescription;IfcText -Pset_ControllerTypeCommon;Reference;IfcIdentifier -Pset_ControllerTypeFloating;Labels;IfcLabel;Range;IfcReal;Value;IfcReal;SignalOffset;IfcReal;SignalFactor;IfcReal;SignalTime;IfcTimeMeasure -Pset_ControllerTypeMultiPosition;Labels;IfcLabel;Range;IfcInteger;Value;IfcInteger -Pset_ControllerTypeProgrammable;FirmwareVersion;IfcLabel;SoftwareVersion;IfcLabel -Pset_ControllerTypeProportional;Labels;IfcLabel;Range;IfcReal;Value;IfcReal;ProportionalConstant;IfcReal;IntegralConstant;IfcReal;DerivativeConstant;IfcReal;SignalTimeIncrease;IfcTimeMeasure;SignalTimeDecrease;IfcTimeMeasure -Pset_ControllerTypeTwoPosition;Labels;IfcLabel;Polarity;IfcBoolean;Value;IfcBoolean -Pset_CooledBeamTypeActive;AirflowRateRange;IfcVolumetricFlowRateMeasure;ConnectionSize;IfcLengthMeasure -Pset_CooledBeamTypeCommon;Reference;IfcIdentifier;IsFreeHanging;IfcBoolean;WaterPressureRange;IfcPressureMeasure;NominalCoolingCapacity;IfcPowerMeasure;NominalSurroundingTemperatureCooling;IfcThermodynamicTemperatureMeasure;NominalSurroundingHumidityCooling;IfcNormalisedRatioMeasure;NominalSupplyWaterTemperatureCooling;IfcThermodynamicTemperatureMeasure;NominalReturnWaterTemperatureCooling;IfcThermodynamicTemperatureMeasure;NominalWaterFlowCooling;IfcVolumetricFlowRateMeasure;NominalHeatingCapacity;IfcPowerMeasure;NominalSurroundingTemperatureHeating;IfcThermodynamicTemperatureMeasure;NominalSupplyWaterTemperatureHeating;IfcThermodynamicTemperatureMeasure;NominalReturnWaterTemperatureHeating;IfcThermodynamicTemperatureMeasure;NominalWaterFlowHeating;IfcVolumetricFlowRateMeasure;FinishColor;IfcLabel;CoilLength;IfcPositiveLengthMeasure;CoilWidth;IfcPositiveLengthMeasure -Pset_CoolingTowerTypeCommon;Reference;IfcIdentifier;NominalCapacity;IfcPowerMeasure;NumberOfCells;IfcInteger;BasinReserveVolume;IfcVolumeMeasure;LiftElevationDifference;IfcPositiveLengthMeasure;WaterRequirement;IfcVolumetricFlowRateMeasure;OperationTemperatureRange;IfcThermodynamicTemperatureMeasure;AmbientDesignDryBulbTemperature;IfcThermodynamicTemperatureMeasure;AmbientDesignWetBulbTemperature;IfcThermodynamicTemperatureMeasure -Pset_CoveringCeiling;Permeability;IfcNormalisedRatioMeasure;TileLength;IfcPositiveLengthMeasure;TileWidth;IfcPositiveLengthMeasure -Pset_CoveringCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;FlammabilityRating;IfcLabel;FragilityRating;IfcLabel;Combustible;IfcBoolean;SurfaceSpreadOfFlame;IfcLabel;Finish;IfcText;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;FireRating;IfcLabel -Pset_CoveringFlooring;HasNonSkidSurface;IfcBoolean;HasAntiStaticSurface;IfcBoolean -Pset_CurtainWallCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;FireRating;IfcLabel;Combustible;IfcBoolean;SurfaceSpreadOfFlame;IfcLabel;ThermalTransmittance;IfcThermalTransmittanceMeasure;IsExternal;IfcBoolean -Pset_DamperTypeCommon;Reference;IfcIdentifier;BladeThickness;IfcPositiveLengthMeasure;NumberofBlades;IfcInteger;FaceArea;IfcAreaMeasure;MaximumAirFlowRate;IfcVolumetricFlowRateMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;MaximumWorkingPressure;IfcPressureMeasure;TemperatureRating;IfcThermodynamicTemperatureMeasure;NominalAirFlowRate;IfcVolumetricFlowRateMeasure;OpenPressureDrop;IfcPressureMeasure;LeakageFullyClosed;IfcVolumetricFlowRateMeasure;LossCoefficentCurve;IfcReal;LeakageCurve;IfcPressureMeasure;RegeneratedSoundCurve;IfcSoundPressureMeasure;FrameType;IfcLabel;FrameDepth;IfcPositiveLengthMeasure;FrameThickness;IfcPositiveLengthMeasure;CloseOffRating;IfcPressureMeasure -Pset_DamperTypeControlDamper;TorqueRange;IfcTorqueMeasure -Pset_DamperTypeFireDamper;FireResistanceRating;IfcLabel;FusibleLinkTemperature;IfcThermodynamicTemperatureMeasure -Pset_DamperTypeFireSmokeDamper;ControlType;IfcLabel;FireResistanceRating;IfcLabel;FusibleLinkTemperature;IfcThermodynamicTemperatureMeasure -Pset_DamperTypeSmokeDamper;ControlType;IfcLabel -Pset_DiscreteAccessoryColumnShoe;ColumnShoeBasePlateThickness;IfcPositiveLengthMeasure;ColumnShoeBasePlateWidth;IfcPositiveLengthMeasure;ColumnShoeBasePlateDepth;IfcPositiveLengthMeasure;ColumnShoeCasingHeight;IfcPositiveLengthMeasure;ColumnShoeCasingWidth;IfcPositiveLengthMeasure;ColumnShoeCasingDepth;IfcPositiveLengthMeasure -Pset_DiscreteAccessoryCornerFixingPlate;CornerFixingPlateLength;IfcPositiveLengthMeasure;CornerFixingPlateThickness;IfcPositiveLengthMeasure;CornerFixingPlateFlangeWidthInPlaneZ;IfcPositiveLengthMeasure;CornerFixingPlateFlangeWidthInPlaneX;IfcPositiveLengthMeasure -Pset_DiscreteAccessoryDiagonalTrussConnector;DiagonalTrussHeight;IfcPositiveLengthMeasure;DiagonalTrussLength;IfcPositiveLengthMeasure;DiagonalTrussCrossBarSpacing;IfcPositiveLengthMeasure;DiagonalTrussBaseBarDiameter;IfcPositiveLengthMeasure;DiagonalTrussSecondaryBarDiameter;IfcPositiveLengthMeasure;DiagonalTrussCrossBarDiameter;IfcPositiveLengthMeasure -Pset_DiscreteAccessoryEdgeFixingPlate;EdgeFixingPlateLength;IfcPositiveLengthMeasure;EdgeFixingPlateThickness;IfcPositiveLengthMeasure;EdgeFixingPlateFlangeWidthInPlaneZ;IfcPositiveLengthMeasure;EdgeFixingPlateFlangeWidthInPlaneX;IfcPositiveLengthMeasure -Pset_DiscreteAccessoryFixingSocket;FixingSocketHeight;IfcPositiveLengthMeasure;FixingSocketThreadDiameter;IfcPositiveLengthMeasure;FixingSocketThreadLength;IfcPositiveLengthMeasure -Pset_DiscreteAccessoryLadderTrussConnector;LadderTrussHeight;IfcPositiveLengthMeasure;LadderTrussLength;IfcPositiveLengthMeasure;LadderTrussCrossBarSpacing;IfcPositiveLengthMeasure;LadderTrussBaseBarDiameter;IfcPositiveLengthMeasure;LadderTrussSecondaryBarDiameter;IfcPositiveLengthMeasure;LadderTrussCrossBarDiameter;IfcPositiveLengthMeasure -Pset_DiscreteAccessoryStandardFixingPlate;StandardFixingPlateWidth;IfcPositiveLengthMeasure;StandardFixingPlateDepth;IfcPositiveLengthMeasure;StandardFixingPlateThickness;IfcPositiveLengthMeasure -Pset_DiscreteAccessoryWireLoop;WireLoopBasePlateThickness;IfcPositiveLengthMeasure;WireLoopBasePlateWidth;IfcPositiveLengthMeasure;WireLoopBasePlateLength;IfcPositiveLengthMeasure;WireDiameter;IfcPositiveLengthMeasure;WireEmbeddingLength;IfcPositiveLengthMeasure;WireLoopLength;IfcPositiveLengthMeasure -Pset_DistributionChamberElementCommon;Reference;IfcIdentifier -Pset_DistributionChamberElementTypeFormedDuct;ClearWidth;IfcPositiveLengthMeasure;ClearDepth;IfcPositiveLengthMeasure;WallThickness;IfcPositiveLengthMeasure;BaseThickness;IfcPositiveLengthMeasure;AccessCoverLoadRating;IfcText -Pset_DistributionChamberElementTypeInspectionChamber;ChamberLengthOrRadius;IfcPositiveLengthMeasure;ChamberWidth;IfcPositiveLengthMeasure;InvertLevel;IfcLengthMeasure;SoffitLevel;IfcLengthMeasure;WallThickness;IfcPositiveLengthMeasure;BaseThickness;IfcPositiveLengthMeasure;WithBackdrop;IfcBoolean;AccessLengthOrRadius;IfcPositiveLengthMeasure;AccessWidth;IfcPositiveLengthMeasure;AccessCoverLoadRating;IfcText -Pset_DistributionChamberElementTypeInspectionPit;Length;IfcPositiveLengthMeasure;Width;IfcPositiveLengthMeasure;Depth;IfcPositiveLengthMeasure -Pset_DistributionChamberElementTypeManhole;InvertLevel;IfcLengthMeasure;SoffitLevel;IfcLengthMeasure;WallThickness;IfcPositiveLengthMeasure;BaseThickness;IfcPositiveLengthMeasure;IsShallow;IfcBoolean;HasSteps;IfcBoolean;WithBackdrop;IfcBoolean;AccessLengthOrRadius;IfcPositiveLengthMeasure;AccessWidth;IfcPositiveLengthMeasure;AccessCoverLoadRating;IfcText -Pset_DistributionChamberElementTypeMeterChamber;ChamberLengthOrRadius;IfcPositiveLengthMeasure;ChamberWidth;IfcPositiveLengthMeasure;WallThickness;IfcPositiveLengthMeasure;BaseThickness;IfcPositiveLengthMeasure -Pset_DistributionChamberElementTypeSump;Length;IfcPositiveLengthMeasure;Width;IfcPositiveLengthMeasure;InvertLevel;IfcPositiveLengthMeasure -Pset_DistributionChamberElementTypeTrench;Width;IfcPositiveLengthMeasure;Depth;IfcPositiveLengthMeasure;InvertLevel;IfcLengthMeasure -Pset_DistributionChamberElementTypeValveChamber;ChamberLengthOrRadius;IfcPositiveLengthMeasure;ChamberWidth;IfcPositiveLengthMeasure;WallThickness;IfcPositiveLengthMeasure;BaseThickness;IfcPositiveLengthMeasure -Pset_DistributionPortCommon;PortNumber;IfcInteger;ColorCode;IfcLabel -Pset_DistributionPortTypeCable;ConnectionSubtype;IfcLabel;CurrentContent3rdHarmonic;IfcPositiveRatioMeasure;Current;IfcElectricCurrentMeasure;Voltage;IfcElectricVoltageMeasure;Power;IfcPowerMeasure;Protocols;IfcIdentifier -Pset_DistributionPortTypeDuct;ConnectionSubType;IfcLabel;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;NominalThickness;IfcPositiveLengthMeasure;DryBulbTemperature;IfcThermodynamicTemperatureMeasure;WetBulbTemperature;IfcThermodynamicTemperatureMeasure;VolumetricFlowRate;IfcVolumetricFlowRateMeasure;Velocity;IfcLinearVelocityMeasure;Pressure;IfcPressureMeasure -Pset_DistributionPortTypePipe;ConnectionSubType;IfcLabel;NominalDiameter;IfcPositiveLengthMeasure;InnerDiameter;IfcPositiveLengthMeasure;OuterDiameter;IfcPositiveLengthMeasure;Temperature;IfcThermodynamicTemperatureMeasure;VolumetricFlowRate;IfcVolumetricFlowRateMeasure;MassFlowRate;IfcMassFlowRateMeasure;FlowCondition;IfcPositiveRatioMeasure;Velocity;IfcLinearVelocityMeasure;Pressure;IfcPressureMeasure -Pset_DistributionSystemCommon;Reference;IfcIdentifier -Pset_DistributionSystemTypeElectrical;Diversity;IfcPositiveRatioMeasure;NumberOfLiveConductors;IfcInteger;MaximumAllowedVoltageDrop;IfcElectricVoltageMeasure;NetImpedance;IfcElectricResistanceMeasure -Pset_DistributionSystemTypeVentilation;DesignName;IfcLabel;PressureClass;IfcPressureMeasure;LeakageClass;IfcPressureMeasure;FrictionLoss;IfcReal;ScrapFactor;IfcReal;MaximumVelocity;IfcLinearVelocityMeasure;AspectRatio;IfcReal;MinimumHeight;IfcPositiveLengthMeasure;MinimumWidth;IfcPositiveLengthMeasure -Pset_DoorCommon;Reference;IfcIdentifier;FireRating;IfcLabel;AcousticRating;IfcLabel;SecurityRating;IfcLabel;DurabilityRating;IfcLabel;HygrothermalRating;IfcLabel;WaterTightnessRating;IfcLabel;MechanicalLoadRating;IfcLabel;WindLoadRating;IfcLabel;Infiltration;IfcVolumetricFlowRateMeasure;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;GlazingAreaFraction;IfcPositiveRatioMeasure;HandicapAccessible;IfcBoolean;FireExit;IfcBoolean;HasDrive;IfcBoolean;SelfClosing;IfcBoolean;SmokeStop;IfcBoolean -Pset_DoorWindowGlazingType;GlassLayers;IfcCountMeasure;GlassThickness1;IfcPositiveLengthMeasure;GlassThickness2;IfcPositiveLengthMeasure;GlassThickness3;IfcPositiveLengthMeasure;FillGas;IfcLabel;GlassColor;IfcLabel;IsTempered;IfcBoolean;IsLaminated;IfcBoolean;IsCoated;IfcBoolean;IsWired;IfcBoolean;VisibleLightReflectance;IfcNormalisedRatioMeasure;VisibleLightTransmittance;IfcNormalisedRatioMeasure;SolarAbsorption;IfcNormalisedRatioMeasure;SolarReflectance;IfcNormalisedRatioMeasure;SolarTransmittance;IfcNormalisedRatioMeasure;SolarHeatGainTransmittance;IfcNormalisedRatioMeasure;ShadingCoefficient;IfcNormalisedRatioMeasure;ThermalTransmittanceSummer;IfcThermalTransmittanceMeasure;ThermalTransmittanceWinter;IfcThermalTransmittanceMeasure -Pset_DuctFittingOccurrence;InteriorRoughnessCoefficient;IfcPositiveLengthMeasure;HasLiner;IfcBoolean;Color;IfcLabel -Pset_DuctFittingTypeCommon;Reference;IfcIdentifier;PressureClass;IfcPressureMeasure;PressureRange;IfcPressureMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure -Pset_DuctSegmentOccurrence;InteriorRoughnessCoefficient;IfcPositiveLengthMeasure;HasLiner;IfcBoolean;Color;IfcLabel -Pset_DuctSegmentTypeCommon;Reference;IfcIdentifier;WorkingPressure;IfcPressureMeasure;PressureRange;IfcPressureMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;LongitudinalSeam;IfcText;NominalDiameterOrWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;Reinforcement;IfcLabel;ReinforcementSpacing;IfcPositiveLengthMeasure -Pset_DuctSilencerTypeCommon;Reference;IfcIdentifier;HydraulicDiameter;IfcLengthMeasure;Length;IfcLengthMeasure;Weight;IfcMassMeasure;AirFlowrateRange;IfcVolumetricFlowRateMeasure;WorkingPressureRange;IfcPressureMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;HasExteriorInsulation;IfcBoolean -Pset_ElectricalDeviceCommon;RatedCurrent;IfcElectricCurrentMeasure;RatedVoltage;IfcElectricVoltageMeasure;NominalFrequencyRange;IfcFrequencyMeasure;PowerFactor;IfcNormalisedRatioMeasure;NumberOfPoles;IfcInteger;HasProtectiveEarth;IfcBoolean;IP_Code;IfcLabel;IK_Code;IfcLabel -Pset_ElectricApplianceTypeCommon;Reference;IfcIdentifier -Pset_ElectricDistributionBoardOccurrence;IsMain;IfcBoolean;IsSkilledOperator;IfcBoolean -Pset_ElectricDistributionBoardTypeCommon;Reference;IfcIdentifier -Pset_ElectricFlowStorageDeviceTypeCommon;Reference;IfcIdentifier;NominalSupplyVoltage;IfcElectricVoltageMeasure;NominalSupplyVoltageOffset;IfcElectricVoltageMeasure;NominalFrequency;IfcFrequencyMeasure;ShortCircuit3PoleMaximumState;IfcElectricCurrentMeasure;ShortCircuit3PolePowerFactorMaximumState;IfcReal;ShortCircuit2PoleMinimumState;IfcElectricCurrentMeasure;ShortCircuit2PolePowerFactorMinimumState;IfcReal;ShortCircuit1PoleMaximumState;IfcElectricCurrentMeasure;ShortCircuit1PolePowerFactorMaximumState;IfcReal;ShortCircuit1PoleMinimumState;IfcElectricCurrentMeasure;ShortCircuit1PolePowerFactorMinimumState;IfcReal;EarthFault1PoleMaximumState;IfcElectricCurrentMeasure;EarthFault1PolePowerFactorMaximumState;IfcReal;EarthFault1PoleMinimumState;IfcElectricCurrentMeasure;EarthFault1PolePowerFactorMinimumState;IfcReal -Pset_ElectricGeneratorTypeCommon;Reference;IfcIdentifier;ElectricGeneratorEfficiency;IfcPositiveRatioMeasure;StartCurrentFactor;IfcReal;MaximumPowerOutput;IfcPowerMeasure -Pset_ElectricMotorTypeCommon;Reference;IfcIdentifier;MaximumPowerOutput;IfcPowerMeasure;ElectricMotorEfficiency;IfcPositiveRatioMeasure;StartCurrentFactor;IfcReal;StartingTime;IfcTimeMeasure;TeTime;IfcTimeMeasure;LockedRotorCurrent;IfcElectricCurrentMeasure;FrameSize;IfcLabel;IsGuarded;IfcBoolean;HasPartWinding;IfcBoolean -Pset_ElectricTimeControlTypeCommon;Reference;IfcIdentifier -Pset_ElementAssemblyCommon;Reference;IfcLabel -Pset_ElementComponentCommon;Reference;IfcIdentifier -Pset_EngineTypeCommon;Reference;IfcIdentifier -Pset_EnvironmentalImpactIndicators;Reference;IfcIdentifier;FunctionalUnitReference;IfcLabel;Unit;IfcText;ExpectedServiceLife;IfcTimeMeasure;TotalPrimaryEnergyConsumptionPerUnit;IfcEnergyMeasure;WaterConsumptionPerUnit;IfcVolumeMeasure;HazardousWastePerUnit;IfcMassMeasure;NonHazardousWastePerUnit;IfcMassMeasure;ClimateChangePerUnit;IfcMassMeasure;AtmosphericAcidificationPerUnit;IfcMassMeasure;RenewableEnergyConsumptionPerUnit;IfcEnergyMeasure;NonRenewableEnergyConsumptionPerUnit;IfcEnergyMeasure;ResourceDepletionPerUnit;IfcMassMeasure;InertWastePerUnit;IfcMassMeasure;RadioactiveWastePerUnit;IfcMassMeasure;StratosphericOzoneLayerDestructionPerUnit;IfcMassMeasure;PhotochemicalOzoneFormationPerUnit;IfcMassMeasure;EutrophicationPerUnit;IfcMassMeasure -Pset_EnvironmentalImpactValues;TotalPrimaryEnergyConsumption;IfcEnergyMeasure;WaterConsumption;IfcVolumeMeasure;HazardousWaste;IfcMassMeasure;NonHazardousWaste;IfcMassMeasure;ClimateChange;IfcMassMeasure;AtmosphericAcidification;IfcMassMeasure;RenewableEnergyConsumption;IfcEnergyMeasure;NonRenewableEnergyConsumption;IfcEnergyMeasure;ResourceDepletion;IfcMassMeasure;InertWaste;IfcMassMeasure;RadioactiveWaste;IfcMassMeasure;StratosphericOzoneLayerDestruction;IfcMassMeasure;PhotochemicalOzoneFormation;IfcMassMeasure;Eutrophication;IfcMassMeasure;LeadInTime;IfcDuration;Duration;IfcDuration;LeadOutTime;IfcDuration -Pset_EvaporativeCoolerTypeCommon;Reference;IfcIdentifier;HeatExchangeArea;IfcAreaMeasure;OperationTemperatureRange;IfcThermodynamicTemperatureMeasure;WaterRequirement;IfcVolumetricFlowRateMeasure;EffectivenessTable;IfcReal;AirPressureDropCurve;IfcPressureMeasure;WaterPressDropCurve;IfcPressureMeasure -Pset_EvaporatorTypeCommon;Reference;IfcIdentifier;ExternalSurfaceArea;IfcAreaMeasure;InternalSurfaceArea;IfcAreaMeasure;InternalRefrigerantVolume;IfcVolumeMeasure;InternalWaterVolume;IfcVolumeMeasure;NominalHeatTransferArea;IfcAreaMeasure;NominalHeatTransferCoefficient;IfcThermalTransmittanceMeasure -Pset_FanOccurrence;FractionOfMotorHeatToAirStream;IfcNormalisedRatioMeasure;ImpellerDiameter;IfcPositiveLengthMeasure -Pset_FanTypeCommon;Reference;IfcIdentifier;OperationTemperatureRange;IfcThermodynamicTemperatureMeasure;NominalAirFlowRate;IfcVolumetricFlowRateMeasure;NominalTotalPressure;IfcPressureMeasure;NominalStaticPressure;IfcPressureMeasure;NominalRotationSpeed;IfcRotationalFrequencyMeasure;NominalPowerRate;IfcPowerMeasure;OperationalCriteria;IfcTimeMeasure;PressureCurve;IfcPressureMeasure;EfficiencyCurve;IfcNormalisedRatioMeasure -Pset_FastenerWeld;Type1;IfcLabel;Type2;IfcLabel;Surface1;IfcLabel;Surface2;IfcLabel;Process;IfcInteger;ProcessName;IfcLabel;a;IfcPositiveLengthMeasure;c;IfcPositiveLengthMeasure;d;IfcPositiveLengthMeasure;e;IfcPositiveLengthMeasure;l;IfcPositiveLengthMeasure;n;IfcCountMeasure;s;IfcPositiveLengthMeasure;z;IfcPositiveLengthMeasure;Intermittent;IfcBoolean;Staggered;IfcBoolean -Pset_FilterTypeAirParticleFilter;DustHoldingCapacity;IfcMassMeasure;FaceSurfaceArea;IfcAreaMeasure;MediaExtendedArea;IfcAreaMeasure;NominalCountedEfficiency;IfcReal;NominalWeightedEfficiency;IfcReal;PressureDropCurve;IfcPressureMeasure;CountedEfficiencyCurve;IfcReal;WeightedEfficiencyCurve;IfcReal -Pset_FilterTypeCommon;Reference;IfcIdentifier;Weight;IfcMassMeasure;InitialResistance;IfcPressureMeasure;FinalResistance;IfcPressureMeasure;OperationTemperatureRange;IfcThermodynamicTemperatureMeasure;FlowRateRange;IfcVolumetricFlowRateMeasure;NominalFilterFaceVelocity;IfcLinearVelocityMeasure;NominalMediaSurfaceVelocity;IfcLinearVelocityMeasure;NominalPressureDrop;IfcPressureMeasure;NominalFlowrate;IfcVolumetricFlowRateMeasure;NominalParticleGeometricMeanDiameter;IfcPositiveLengthMeasure;NominalParticleGeometricStandardDeviation;IfcReal -Pset_FilterTypeCompressedAirFilter;OperationPressureMax;IfcPressureMeasure;ParticleAbsorptionCurve;IfcPositiveRatioMeasure;AutomaticCondensateDischarge;IfcBoolean;CloggingIndicator;IfcBoolean -Pset_FireSuppressionTerminalTypeBreechingInlet;InletDiameter;IfcPositiveLengthMeasure;OutletDiameter;IfcPositiveLengthMeasure;HasCaps;IfcBoolean -Pset_FireSuppressionTerminalTypeCommon;Reference;IfcIdentifier -Pset_FireSuppressionTerminalTypeFireHydrant;PumperConnectionSize;IfcPositiveLengthMeasure;NumberOfHoseConnections;IfcInteger;HoseConnectionSize;IfcPositiveLengthMeasure;DischargeFlowRate;IfcVolumetricFlowRateMeasure;FlowClass;IfcLabel;WaterIsPotable;IfcBoolean;PressureRating;IfcPressureMeasure;BodyColor;IfcText;CapColor;IfcText -Pset_FireSuppressionTerminalTypeHoseReel;InletConnectionSize;IfcPositiveLengthMeasure;HoseDiameter;IfcPositiveLengthMeasure;HoseLength;IfcPositiveLengthMeasure;ClassOfService;IfcLabel;ClassificationAuthority;IfcLabel -Pset_FireSuppressionTerminalTypeSprinkler;ActivationTemperature;IfcThermodynamicTemperatureMeasure;CoverageArea;IfcAreaMeasure;HasDeflector;IfcBoolean;DischargeFlowRate;IfcVolumetricFlowRateMeasure;ResidualFlowingPressure;IfcPressureMeasure;DischargeCoefficient;IfcReal;MaximumWorkingPressure;IfcPressureMeasure;ConnectionSize;IfcPositiveLengthMeasure -Pset_FlowInstrumentTypeCommon;Reference;IfcIdentifier -Pset_FlowInstrumentTypePressureGauge;DisplaySize;IfcPositiveLengthMeasure -Pset_FlowInstrumentTypeThermometer;DisplaySize;IfcPositiveLengthMeasure -Pset_FlowMeterTypeCommon;Reference;IfcIdentifier;RemoteReading;IfcBoolean -Pset_FlowMeterTypeEnergyMeter;NominalCurrent;IfcElectricCurrentMeasure;MaximumCurrent;IfcElectricCurrentMeasure;MultipleTarriff;IfcBoolean -Pset_FlowMeterTypeGasMeter;ConnectionSize;IfcPositiveLengthMeasure;MaximumFlowRate;IfcVolumetricFlowRateMeasure;MaximumPressureLoss;IfcPressureMeasure -Pset_FlowMeterTypeOilMeter;ConnectionSize;IfcPositiveLengthMeasure;MaximumFlowRate;IfcVolumetricFlowRateMeasure -Pset_FlowMeterTypeWaterMeter;ConnectionSize;IfcPositiveLengthMeasure;MaximumFlowRate;IfcVolumetricFlowRateMeasure;MaximumPressureLoss;IfcPressureMeasure -Pset_FootingCommon;Reference;IfcIdentifier;LoadBearing;IfcBoolean -Pset_FurnitureTypeChair;SeatingHeight;IfcPositiveLengthMeasure;HighestSeatingHeight;IfcPositiveLengthMeasure;LowestSeatingHeight;IfcPositiveLengthMeasure -Pset_FurnitureTypeCommon;Reference;IfcIdentifier;Style;IfcLabel;NominalHeight;IfcPositiveLengthMeasure;NominalLength;IfcPositiveLengthMeasure;NominalDepth;IfcPositiveLengthMeasure;MainColor;IfcLabel;IsBuiltIn;IfcBoolean -Pset_FurnitureTypeDesk;WorksurfaceArea;IfcAreaMeasure -Pset_FurnitureTypeFileCabinet;WithLock;IfcBoolean -Pset_FurnitureTypeTable;WorksurfaceArea;IfcAreaMeasure;NumberOfChairs;IfcInteger -Pset_HeatExchangerTypeCommon;Reference;IfcIdentifier -Pset_HeatExchangerTypePlate;NumberOfPlates;IfcInteger -Pset_HumidifierTypeCommon;Reference;IfcIdentifier;Weight;IfcMassMeasure;NominalMoistureGain;IfcMassFlowRateMeasure;NominalAirFlowRate;IfcVolumetricFlowRateMeasure;WaterRequirement;IfcVolumetricFlowRateMeasure;SaturationEfficiencyCurve;IfcNormalisedRatioMeasure;AirPressureDropCurve;IfcPressureMeasure -Pset_InterceptorTypeCommon;Reference;IfcIdentifier;NominalBodyLength;IfcPositiveLengthMeasure;NominalBodyWidth;IfcPositiveLengthMeasure;NominalBodyDepth;IfcPositiveLengthMeasure;InletConnectionSize;IfcPositiveLengthMeasure;OutletConnectionSize;IfcPositiveLengthMeasure;CoverLength;IfcPositiveLengthMeasure;CoverWidth;IfcPositiveLengthMeasure;VentilatingPipeSize;IfcPositiveLengthMeasure -Pset_JunctionBoxTypeCommon;Reference;IfcIdentifier;NumberOfGangs;IfcInteger;ClearDepth;IfcPositiveLengthMeasure;IsExternal;IfcBoolean;IP_Code;IfcLabel -Pset_LampTypeCommon;Reference;IfcIdentifier;ContributedLuminousFlux;IfcLuminousFluxMeasure;LightEmitterNominalPower;IfcPowerMeasure;LampMaintenanceFactor;IfcReal;ColorAppearance;IfcLabel;Spectrum;IfcNumericMeasure;ColorTemperature;IfcThermodynamicTemperatureMeasure;ColorRenderingIndex;IfcInteger -Pset_LandRegistration;LandID;IfcIdentifier;IsPermanentID;IfcBoolean;LandTitleID;IfcIdentifier -Pset_LightFixtureTypeCommon;Reference;IfcIdentifier;NumberOfSources;IfcInteger;TotalWattage;IfcPowerMeasure;MaintenanceFactor;IfcReal;MaximumPlenumSensibleLoad;IfcPowerMeasure;MaximumSpaceSensibleLoad;IfcPowerMeasure;SensibleLoadToRadiant;IfcPositiveRatioMeasure -Pset_LightFixtureTypeSecurityLighting;FixtureHeight;IfcPositiveLengthMeasure -Pset_ManufacturerOccurrence;AcquisitionDate;IfcDate;BarCode;IfcIdentifier;SerialNumber;IfcIdentifier;BatchReference;IfcIdentifier -Pset_ManufacturerTypeInformation;GlobalTradeItemNumber;IfcIdentifier;ArticleNumber;IfcIdentifier;ModelReference;IfcLabel;ModelLabel;IfcLabel;Manufacturer;IfcLabel;ProductionYear;IfcLabel -Pset_MaterialCombustion;SpecificHeatCapacity;IfcSpecificHeatCapacityMeasure;N20Content;IfcPositiveRatioMeasure;COContent;IfcPositiveRatioMeasure;CO2Content;IfcPositiveRatioMeasure -Pset_MaterialCommon;MolecularWeight;IfcMolecularWeightMeasure;Porosity;IfcNormalisedRatioMeasure;MassDensity;IfcMassDensityMeasure -Pset_MaterialConcrete;CompressiveStrength;IfcPressureMeasure;MaxAggregateSize;IfcPositiveLengthMeasure;AdmixturesDescription;IfcText;Workability;IfcText;WaterImpermeability;IfcText;ProtectivePoreRatio;IfcNormalisedRatioMeasure -Pset_MaterialEnergy;ViscosityTemperatureDerivative;IfcReal;MoistureCapacityThermalGradient;IfcReal;ThermalConductivityTemperatureDerivative;IfcReal;SpecificHeatTemperatureDerivative;IfcReal;VisibleRefractionIndex;IfcReal;SolarRefractionIndex;IfcReal;GasPressure;IfcPressureMeasure -Pset_MaterialFuel;CombustionTemperature;IfcThermodynamicTemperatureMeasure;CarbonContent;IfcPositiveRatioMeasure;LowerHeatingValue;IfcHeatingValueMeasure;HigherHeatingValue;IfcHeatingValueMeasure -Pset_MaterialHygroscopic;UpperVaporResistanceFactor;IfcPositiveRatioMeasure;LowerVaporResistanceFactor;IfcPositiveRatioMeasure;IsothermalMoistureCapacity;IfcIsothermalMoistureCapacityMeasure;VaporPermeability;IfcVaporPermeabilityMeasure;MoistureDiffusivity;IfcMoistureDiffusivityMeasure -Pset_MaterialMechanical;DynamicViscosity;IfcDynamicViscosityMeasure;YoungModulus;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;PoissonRatio;IfcPositiveRatioMeasure;ThermalExpansionCoefficient;IfcThermalExpansionCoefficientMeasure -Pset_MaterialOptical;VisibleTransmittance;IfcPositiveRatioMeasure;SolarTransmittance;IfcPositiveRatioMeasure;ThermalIrTransmittance;IfcPositiveRatioMeasure;ThermalIrEmissivityBack;IfcPositiveRatioMeasure;ThermalIrEmissivityFront;IfcPositiveRatioMeasure;VisibleReflectanceBack;IfcPositiveRatioMeasure;VisibleReflectanceFront;IfcPositiveRatioMeasure;SolarReflectanceBack;IfcPositiveRatioMeasure;SolarReflectanceFront;IfcPositiveRatioMeasure -Pset_MaterialSteel;YieldStress;IfcPressureMeasure;UltimateStress;IfcPressureMeasure;UltimateStrain;IfcPositiveRatioMeasure;HardeningModule;IfcModulusOfElasticityMeasure;ProportionalStress;IfcPressureMeasure;PlasticStrain;IfcPositiveRatioMeasure;Relaxations;IfcNormalisedRatioMeasure -Pset_MaterialThermal;SpecificHeatCapacity;IfcSpecificHeatCapacityMeasure;BoilingPoint;IfcThermodynamicTemperatureMeasure;FreezingPoint;IfcThermodynamicTemperatureMeasure;ThermalConductivity;IfcThermalConductivityMeasure -Pset_MaterialWater;IsPotable;IfcBoolean;Hardness;IfcIonConcentrationMeasure;AlkalinityConcentration;IfcIonConcentrationMeasure;AcidityConcentration;IfcIonConcentrationMeasure;ImpuritiesContent;IfcNormalisedRatioMeasure;DissolvedSolidsContent;IfcNormalisedRatioMeasure;PHLevel;IfcPHMeasure -Pset_MaterialWood;Species;IfcLabel;StrengthGrade;IfcLabel;AppearanceGrade;IfcLabel;Layup;IfcLabel;Layers;IfcInteger;Plies;IfcInteger;MoistureContent;IfcPositiveRatioMeasure;DimensionalChangeCoefficient;IfcPositiveRatioMeasure;ThicknessSwelling;IfcPositiveRatioMeasure -Pset_MaterialWoodBasedBeam;ApplicableStructuralDesignMethod;IfcLabel;InPlane;IfcModulusOfElasticityMeasure;YoungModulusMin;IfcModulusOfElasticityMeasure;YoungModulusPerp;IfcModulusOfElasticityMeasure;YoungModulusPerpMin;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;ShearModulusMin;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;TensileStrengthPerp;IfcPressureMeasure;CompStrength;IfcPressureMeasure;CompStrengthPerp;IfcPressureMeasure;RaisedCompStrengthPerp;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;TorsionalStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure;InstabilityFactors;IfcPositiveRatioMeasure;InPlaneNegative;IfcModulusOfElasticityMeasure;YoungModulusMin;IfcModulusOfElasticityMeasure;YoungModulusPerp;IfcModulusOfElasticityMeasure;YoungModulusPerpMin;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;ShearModulusMin;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;TensileStrengthPerp;IfcPressureMeasure;CompStrength;IfcPressureMeasure;CompStrengthPerp;IfcPressureMeasure;RaisedCompStrengthPerp;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;TorsionalStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure;InstabilityFactors;IfcPositiveRatioMeasure;OutOfPlane;IfcModulusOfElasticityMeasure;YoungModulusMin;IfcModulusOfElasticityMeasure;YoungModulusPerp;IfcModulusOfElasticityMeasure;YoungModulusPerpMin;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;ShearModulusMin;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;TensileStrengthPerp;IfcPressureMeasure;CompStrength;IfcPressureMeasure;CompStrengthPerp;IfcPressureMeasure;RaisedCompStrengthPerp;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;TorsionalStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure;InstabilityFactors;IfcPositiveRatioMeasure -Pset_MaterialWoodBasedPanel;ApplicableStructuralDesignMethod;IfcLabel;InPlane;IfcModulusOfElasticityMeasure;YoungModulusTension;IfcModulusOfElasticityMeasure;YoungModulusCompression;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;CompressiveStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;BearingStrength;IfcPressureMeasure;RaisedCompressiveStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure;OutOfPlane;IfcModulusOfElasticityMeasure;YoungModulusTension;IfcModulusOfElasticityMeasure;YoungModulusCompression;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;CompressiveStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;BearingStrength;IfcPressureMeasure;RaisedCompressiveStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure;OutOfPlaneNegative;IfcModulusOfElasticityMeasure;YoungModulusTension;IfcModulusOfElasticityMeasure;YoungModulusCompression;IfcModulusOfElasticityMeasure;ShearModulus;IfcModulusOfElasticityMeasure;BendingStrength;IfcPressureMeasure;CompressiveStrength;IfcPressureMeasure;TensileStrength;IfcPressureMeasure;ShearStrength;IfcPressureMeasure;BearingStrength;IfcPressureMeasure;RaisedCompressiveStrength;IfcPressureMeasure;ReferenceDepth;IfcPositiveLengthMeasure -Pset_MechanicalFastenerAnchorBolt;AnchorBoltLength;IfcPositiveLengthMeasure;AnchorBoltDiameter;IfcPositiveLengthMeasure;AnchorBoltThreadLength;IfcPositiveLengthMeasure;AnchorBoltProtrusionLength;IfcPositiveLengthMeasure -Pset_MechanicalFastenerBolt;ThreadDiameter;IfcPositiveLengthMeasure;ThreadLength;IfcPositiveLengthMeasure;NutsCount;IfcCountMeasure;WashersCount;IfcCountMeasure;HeadShape;IfcLabel;KeyShape;IfcLabel;NutShape;IfcLabel;WasherShape;IfcLabel -Pset_MedicalDeviceTypeCommon;Reference;IfcIdentifier -Pset_MemberCommon;Reference;IfcIdentifier;Span;IfcPositiveLengthMeasure;Slope;IfcPlaneAngleMeasure;Roll;IfcPlaneAngleMeasure;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel -Pset_MotorConnectionTypeCommon;Reference;IfcIdentifier -Pset_OpeningElementCommon;Reference;IfcIdentifier;Purpose;IfcLabel;FireExit;IfcBoolean;ProtectedOpening;IfcBoolean -Pset_OutletTypeCommon;Reference;IfcIdentifier;IsPluggableOutlet;IfcLogical;NumberOfSockets;IfcInteger -Pset_OutsideDesignCriteria;HeatingDryBulb;IfcThermodynamicTemperatureMeasure;HeatingWetBulb;IfcThermodynamicTemperatureMeasure;HeatingDesignDay;IfcDateTime;CoolingDryBulb;IfcThermodynamicTemperatureMeasure;CoolingWetBulb;IfcThermodynamicTemperatureMeasure;CoolingDesignDay;IfcDateTime;WeatherDataStation;IfcText;WeatherDataDate;IfcDateTime;PrevailingWindDirection;IfcPlaneAngleMeasure;PrevailingWindVelocity;IfcLinearVelocityMeasure -Pset_PackingInstructions;SpecialInstructions;IfcText -Pset_Permit;EscortRequirement;IfcBoolean;StartDate;IfcDateTime;EndDate;IfcDateTime;SpecialRequirements;IfcText -Pset_PileCommon;Reference;IfcIdentifier;LoadBearing;IfcBoolean -Pset_PipeConnectionFlanged;FlangeTable;IfcLabel;FlangeStandard;IfcLabel;BoreSize;IfcPositiveLengthMeasure;FlangeDiameter;IfcPositiveLengthMeasure;FlangeThickness;IfcPositiveLengthMeasure;NumberOfBoltholes;IfcInteger;BoltSize;IfcPositiveLengthMeasure;BoltholePitch;IfcPositiveLengthMeasure -Pset_PipeFittingOccurrence;InteriorRoughnessCoefficient;IfcPositiveLengthMeasure;Color;IfcLabel -Pset_PipeFittingTypeBend;BendAngle;IfcPositivePlaneAngleMeasure;BendRadius;IfcPositiveLengthMeasure -Pset_PipeFittingTypeCommon;Reference;IfcIdentifier;PressureClass;IfcPressureMeasure;PressureRange;IfcPressureMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;FittingLossFactor;IfcReal -Pset_PipeFittingTypeJunction;JunctionLeftAngle;IfcPositivePlaneAngleMeasure;JunctionLeftRadius;IfcPositiveLengthMeasure;JunctionRightAngle;IfcPositivePlaneAngleMeasure;JunctionRightRadius;IfcPositiveLengthMeasure -Pset_PipeSegmentOccurrence;InteriorRoughnessCoefficient;IfcPositiveLengthMeasure;Color;IfcLabel;Gradient;IfcPositiveRatioMeasure;InvertElevation;IfcLengthMeasure -Pset_PipeSegmentTypeCommon;Reference;IfcIdentifier;WorkingPressure;IfcPressureMeasure;PressureRange;IfcPressureMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;NominalDiameter;IfcPositiveLengthMeasure;InnerDiameter;IfcPositiveLengthMeasure;OuterDiameter;IfcPositiveLengthMeasure -Pset_PipeSegmentTypeCulvert;InternalWidth;IfcLengthMeasure;ClearDepth;IfcLengthMeasure -Pset_PipeSegmentTypeGutter;Slope;IfcPlaneAngleMeasure;FlowRating;IfcVolumetricFlowRateMeasure -Pset_PlateCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel -Pset_PrecastConcreteElementFabrication;TypeDesignator;IfcLabel;ProductionLotId;IfcIdentifier;SerialNumber;IfcIdentifier;PieceMark;IfcLabel;AsBuiltLocationNumber;IfcLabel;ActualProductionDate;IfcDateTime;ActualErectionDate;IfcDateTime -Pset_PrecastConcreteElementGeneral;TypeDesignator;IfcLabel;CornerChamfer;IfcPositiveLengthMeasure;ManufacturingToleranceClass;IfcLabel;FormStrippingStrength;IfcPressureMeasure;LiftingStrength;IfcPressureMeasure;ReleaseStrength;IfcPressureMeasure;MinimumAllowableSupportLength;IfcPositiveLengthMeasure;InitialTension;IfcPressureMeasure;TendonRelaxation;IfcPositiveRatioMeasure;TransportationStrength;IfcPressureMeasure;SupportDuringTransportDescription;IfcText;HollowCorePlugging;IfcLabel;CamberAtMidspan;IfcRatioMeasure;BatterAtStart;IfcPlaneAngleMeasure;BatterAtEnd;IfcPlaneAngleMeasure;Twisting;IfcPlaneAngleMeasure;Shortening;IfcRatioMeasure;PieceMark;IfcLabel;DesignLocationNumber;IfcLabel -Pset_PrecastSlab;TypeDesignator;IfcLabel;ToppingType;IfcLabel;EdgeDistanceToFirstAxis;IfcPositiveLengthMeasure;DistanceBetweenComponentAxes;IfcPositiveLengthMeasure;AngleToFirstAxis;IfcPlaneAngleMeasure;AngleBetweenComponentAxes;IfcPlaneAngleMeasure;NominalThickness;IfcPositiveLengthMeasure;NominalToppingThickness;IfcPositiveLengthMeasure -Pset_ProfileArbitraryDoubleT;OverallWidth;IfcPositiveLengthMeasure;LeftFlangeWidth;IfcPositiveLengthMeasure;RightFlangeWidth;IfcPositiveLengthMeasure;OverallDepth;IfcPositiveLengthMeasure;FlangeDepth;IfcPositiveLengthMeasure;FlangeDraft;IfcNonNegativeLengthMeasure;FlangeChamfer;IfcNonNegativeLengthMeasure;FlangeBaseFillet;IfcNonNegativeLengthMeasure;FlangeTopFillet;IfcNonNegativeLengthMeasure;StemBaseWidth;IfcPositiveLengthMeasure;StemTopWidth;IfcPositiveLengthMeasure;StemBaseChamfer;IfcNonNegativeLengthMeasure;StemTopChamfer;IfcNonNegativeLengthMeasure;StemBaseFillet;IfcNonNegativeLengthMeasure;StemTopFillet;IfcNonNegativeLengthMeasure -Pset_ProfileArbitraryHollowCore;OverallWidth;IfcPositiveLengthMeasure;OverallDepth;IfcPositiveLengthMeasure;EdgeDraft;IfcNonNegativeLengthMeasure;DraftBaseOffset;IfcNonNegativeLengthMeasure;DraftSideOffset;IfcNonNegativeLengthMeasure;BaseChamfer;IfcNonNegativeLengthMeasure;KeyDepth;IfcNonNegativeLengthMeasure;KeyHeight;IfcNonNegativeLengthMeasure;KeyOffset;IfcNonNegativeLengthMeasure;BottomCover;IfcPositiveLengthMeasure;CoreSpacing;IfcPositiveLengthMeasure;CoreBaseHeight;IfcPositiveLengthMeasure;CoreMiddleHeight;IfcPositiveLengthMeasure;CoreTopHeight;IfcPositiveLengthMeasure;CoreBaseWidth;IfcPositiveLengthMeasure;CoreTopWidth;IfcPositiveLengthMeasure;CenterCoreSpacing;IfcPositiveLengthMeasure;CenterCoreBaseHeight;IfcPositiveLengthMeasure;CenterCoreMiddleHeight;IfcPositiveLengthMeasure;CenterCoreTopHeight;IfcPositiveLengthMeasure;CenterCoreBaseWidth;IfcPositiveLengthMeasure;CenterCoreTopWidth;IfcPositiveLengthMeasure;NumberOfCores;IfcCountMeasure -Pset_ProfileMechanical;MassPerLength;IfcMassPerLengthMeasure;CrossSectionArea;IfcAreaMeasure;Perimeter;IfcPositiveLengthMeasure;MinimumPlateThickness;IfcPositiveLengthMeasure;MaximumPlateThickness;IfcPositiveLengthMeasure;CentreOfGravityInX;IfcLengthMeasure;CentreOfGravityInY;IfcLengthMeasure;ShearCentreZ;IfcLengthMeasure;ShearCentreY;IfcLengthMeasure;MomentOfInertiaY;IfcMomentOfInertiaMeasure;MomentOfInertiaZ;IfcMomentOfInertiaMeasure;MomentOfInertiaYZ;IfcMomentOfInertiaMeasure;TorsionalConstantX;IfcMomentOfInertiaMeasure;WarpingConstant;IfcWarpingConstantMeasure;ShearDeformationAreaZ;IfcAreaMeasure;ShearDeformationAreaY;IfcAreaMeasure;MaximumSectionModulusY;IfcSectionModulusMeasure;MinimumSectionModulusY;IfcSectionModulusMeasure;MaximumSectionModulusZ;IfcSectionModulusMeasure;MinimumSectionModulusZ;IfcSectionModulusMeasure;TorsionalSectionModulus;IfcSectionModulusMeasure;ShearAreaZ;IfcAreaMeasure;ShearAreaY;IfcAreaMeasure;PlasticShapeFactorY;IfcPositiveRatioMeasure;PlasticShapeFactorZ;IfcPositiveRatioMeasure -Pset_ProjectOrderChangeOrder;ReasonForChange;IfcText;BudgetSource;IfcText -Pset_ProjectOrderMaintenanceWorkOrder;ProductDescription;IfcText;WorkTypeRequested;IfcText;ContractualType;IfcText;IfNotAccomplished;IfcText;ScheduledFrequency;IfcTimeMeasure -Pset_ProjectOrderMoveOrder;SpecialInstructions;IfcText -Pset_ProjectOrderPurchaseOrder;IsFOB;IfcBoolean;ShipMethod;IfcText -Pset_ProjectOrderWorkOrder;ProductDescription;IfcText;WorkTypeRequested;IfcText;ContractualType;IfcText;IfNotAccomplished;IfcText -Pset_PropertyAgreement;Identifier;IfcIdentifier;Version;IfcLabel;VersionDate;IfcDate;PropertyName;IfcLabel;CommencementDate;IfcDate;TerminationDate;IfcDate;Duration;IfcDuration;Options;IfcText;ConditionCommencement;IfcText;Restrictions;IfcText;ConditionTermination;IfcText -Pset_ProtectiveDeviceBreakerUnitI2TCurve;NominalCurrent;IfcElectricCurrentMeasure;BreakerUnitCurve;IfcReal -Pset_ProtectiveDeviceBreakerUnitI2TFuseCurve;BreakerUnitFuseMeltingCurve;IfcReal;BreakerUnitFuseBreakingingCurve;IfcReal -Pset_ProtectiveDeviceBreakerUnitIPICurve;NominalCurrent;IfcElectricCurrentMeasure;BreakerUnitIPICurve;IfcElectricCurrentMeasure -Pset_ProtectiveDeviceBreakerUnitTypeMCB;PowerLoss;IfcPowerMeasure;NominalCurrents;IfcElectricCurrentMeasure;ICU60947;IfcElectricCurrentMeasure;ICS60947;IfcElectricCurrentMeasure;ICN60898;IfcElectricCurrentMeasure;ICS60898;IfcElectricCurrentMeasure -Pset_ProtectiveDeviceBreakerUnitTypeMotorProtection;PerformanceClasses;IfcLabel;ICU60947;IfcElectricCurrentMeasure;ICS60947;IfcElectricCurrentMeasure;ICW60947;IfcElectricCurrentMeasure;ICM60947;IfcElectricCurrentMeasure -Pset_ProtectiveDeviceOccurrence;LongTimeFunction;IfcBoolean;ShortTimeFunction;IfcBoolean;ShortTimei2tFunction;IfcBoolean;GroundFaultFunction;IfcBoolean;GroundFaulti2tFunction;IfcBoolean;LongTimeCurrentSetValue;IfcElectricCurrentMeasure;ShortTimeCurrentSetValue;IfcElectricCurrentMeasure;InstantaneousCurrentSetValue;IfcElectricCurrentMeasure;GroundFaultCurrentSetValue;IfcElectricCurrentMeasure;LongTimeDelay;IfcTimeMeasure;ShortTimeTrippingTime;IfcTimeMeasure;InstantaneousTrippingTime;IfcTimeMeasure;GroundFaultTrippingTime;IfcTimeMeasure -Pset_ProtectiveDeviceTrippingCurve;TrippingCurve;IfcTimeMeasure -Pset_ProtectiveDeviceTrippingFunctionGCurve;IsSelectable;IfcBoolean;NominalCurrentAdjusted;IfcBoolean;ExternalAdjusted;IfcBoolean;ReleaseCurrent;IfcElectricCurrentMeasure;ReleaseTime;IfcTimeMeasure;CurrentTolerance1;IfcPositiveRatioMeasure;CurrentToleranceLimit1;IfcTimeMeasure;CurrentTolerance2;IfcPositiveRatioMeasure;IsCurrentTolerancePositiveOnly;IfcBoolean;TimeTolerance1;IfcPositiveRatioMeasure;TimeToleranceLimit1;IfcElectricCurrentMeasure;TimeTolerance2;IfcPositiveRatioMeasure;IsTimeTolerancePositiveOnly;IfcBoolean;ReleaseCurrentI2tStart;IfcElectricCurrentMeasure;ReleaseTimeI2tStart;IfcTimeMeasure;ReleaseCurrentI2tEnd;IfcElectricCurrentMeasure;ReleaseTimeI2tEnd;IfcTimeMeasure -Pset_ProtectiveDeviceTrippingFunctionICurve;IsSelectable;IfcBoolean;NominalCurrentAdjusted;IfcBoolean;ReleaseCurrent;IfcElectricCurrentMeasure;ReleaseTime;IfcTimeMeasure;CurrentTolerance1;IfcPositiveRatioMeasure;CurrentToleranceLimit1;IfcTimeMeasure;CurrentTolerance2;IfcPositiveRatioMeasure;IsCurrentTolerancePositiveOnly;IfcBoolean;TimeTolerance1;IfcPositiveRatioMeasure;TimeToleranceLimit1;IfcElectricCurrentMeasure;TimeTolerance2;IfcPositiveRatioMeasure;IsTimeTolerancePositiveOnly;IfcBoolean;MaxAdjustmentX_ICS;IfcElectricCurrentMeasure;IsOffWhenSFunctionOn;IfcBoolean -Pset_ProtectiveDeviceTrippingFunctionLCurve;IsSelectable;IfcBoolean;UpperCurrent1;IfcElectricCurrentMeasure;UpperCurrent2;IfcElectricCurrentMeasure;UpperTime1;IfcTimeMeasure;UpperTime2;IfcTimeMeasure;LowerCurrent1;IfcElectricCurrentMeasure;LowerCurrent2;IfcElectricCurrentMeasure;LowerTime1;IfcTimeMeasure;LowerTime2;IfcTimeMeasure -Pset_ProtectiveDeviceTrippingFunctionSCurve;IsSelectable;IfcBoolean;NominalCurrentAdjusted;IfcBoolean;ReleaseCurrent;IfcElectricCurrentMeasure;ReleaseTime;IfcTimeMeasure;CurrentTolerance1;IfcPositiveRatioMeasure;CurrentToleranceLimit1;IfcTimeMeasure;CurrentTolerance2;IfcPositiveRatioMeasure;IsCurrentTolerancePositiveOnly;IfcBoolean;TimeTolerance1;IfcPositiveRatioMeasure;TimeToleranceLimit1;IfcElectricCurrentMeasure;TimeTolerance2;IfcPositiveRatioMeasure;IsTimeTolerancePositiveOnly;IfcBoolean;ReleaseCurrentI2tStart;IfcElectricCurrentMeasure;ReleaseTimeI2tStart;IfcTimeMeasure;ReleaseCurrentI2tEnd;IfcElectricCurrentMeasure;ReleaseTimeI2tEnd;IfcTimeMeasure;IsOffWhenLfunctionOn;IfcBoolean -Pset_ProtectiveDeviceTrippingUnitCurrentAdjustment;AdjustmentRange;IfcElectricCurrentMeasure;AdjustmentRangeStepValue;IfcElectricCurrentMeasure;AdjustmentValues;IfcElectricCurrentMeasure;AdjustmentDesignation;IfcLabel -Pset_ProtectiveDeviceTrippingUnitTimeAdjustment;AdjustmentRange;IfcTimeMeasure;AdjustmentRangeStepValue;IfcTimeMeasure;AdjustmentValues;IfcTimeMeasure;AdjustmentDesignation;IfcLabel;CurrentForTimeDelay;IfcTimeMeasure -Pset_ProtectiveDeviceTrippingUnitTypeCommon;Reference;IfcIdentifier;Standard;IfcLabel;UseInDiscrimination;IfcBoolean;AtexVerified;IfcBoolean;OldDevice;IfcBoolean;LimitingTerminalSize;IfcAreaMeasure -Pset_ProtectiveDeviceTrippingUnitTypeElectroMagnetic;I1;IfcReal;I2;IfcReal;T2;IfcTimeMeasure;DefinedTemperature;IfcThermodynamicTemperatureMeasure;TemperatureFactor;IfcRatioMeasure;I4;IfcReal;I5;IfcReal;T5;IfcTimeMeasure;CurveDesignation;IfcLabel -Pset_ProtectiveDeviceTrippingUnitTypeElectronic;NominalCurrents;IfcElectricCurrentMeasure;N_Protection;IfcBoolean;N_Protection_50;IfcBoolean;N_Protection_100;IfcBoolean;N_Protection_Select;IfcBoolean -Pset_ProtectiveDeviceTrippingUnitTypeThermal;I1;IfcReal;I2;IfcReal;T2;IfcTimeMeasure;DefinedTemperature;IfcThermodynamicTemperatureMeasure;TemperatureFactor;IfcRatioMeasure;CurveDesignation;IfcLabel -Pset_ProtectiveDeviceTypeCircuitBreaker;PerformanceClasses;IfcLabel;ICU60947;IfcElectricCurrentMeasure;ICS60947;IfcElectricCurrentMeasure;ICW60947;IfcElectricCurrentMeasure;ICM60947;IfcElectricCurrentMeasure -Pset_ProtectiveDeviceTypeCommon;Reference;IfcIdentifier -Pset_ProtectiveDeviceTypeEarthLeakageCircuitBreaker;Sensitivity;IfcElectricCurrentMeasure -Pset_ProtectiveDeviceTypeFuseDisconnector;IC60269;IfcElectricCurrentMeasure;PowerLoss;IfcPowerMeasure -Pset_ProtectiveDeviceTypeResidualCurrentCircuitBreaker;Sensitivity;IfcElectricCurrentMeasure -Pset_ProtectiveDeviceTypeResidualCurrentSwitch;Sensitivity;IfcElectricCurrentMeasure -Pset_PumpOccurrence;ImpellerDiameter;IfcPositiveLengthMeasure -Pset_PumpTypeCommon;Reference;IfcIdentifier;FlowRateRange;IfcMassFlowRateMeasure;FlowResistanceRange;IfcPressureMeasure;ConnectionSize;IfcPositiveLengthMeasure;TemperatureRange;IfcThermodynamicTemperatureMeasure;NetPositiveSuctionHead;IfcPressureMeasure;NominalRotationSpeed;IfcRotationalFrequencyMeasure -Pset_RailingCommon;Reference;IfcIdentifier;Height;IfcPositiveLengthMeasure;Diameter;IfcPositiveLengthMeasure;IsExternal;IfcBoolean -Pset_RampCommon;Reference;IfcIdentifier;RequiredHeadroom;IfcPositiveLengthMeasure;RequiredSlope;IfcPlaneAngleMeasure;HandicapAccessible;IfcBoolean;HasNonSkidSurface;IfcBoolean;FireExit;IfcBoolean;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel -Pset_RampFlightCommon;Reference;IfcIdentifier;Headroom;IfcPositiveLengthMeasure;ClearWidth;IfcPositiveLengthMeasure;Slope;IfcPlaneAngleMeasure;CounterSlope;IfcPlaneAngleMeasure -Pset_ReinforcementBarCountOfIndependentFooting;Description;IfcText;Reference;IfcLabel;XDirectionLowerBarCount;IfcInteger;YDirectionLowerBarCount;IfcInteger;XDirectionUpperBarCount;IfcInteger;YDirectionUpperBarCount;IfcInteger -Pset_ReinforcementBarPitchOfBeam;Description;IfcText;Reference;IfcLabel;StirrupBarPitch;IfcPositiveLengthMeasure;SpacingBarPitch;IfcPositiveLengthMeasure -Pset_ReinforcementBarPitchOfColumn;Description;IfcText;Reference;IfcLabel;HoopBarPitch;IfcPositiveLengthMeasure;XDirectionTieHoopBarPitch;IfcPositiveLengthMeasure;XDirectionTieHoopCount;IfcInteger;YDirectionTieHoopBarPitch;IfcPositiveLengthMeasure;YDirectionTieHoopCount;IfcInteger -Pset_ReinforcementBarPitchOfContinuousFooting;Description;IfcText;Reference;IfcLabel;CrossingUpperBarPitch;IfcPositiveLengthMeasure;CrossingLowerBarPitch;IfcPositiveLengthMeasure -Pset_ReinforcementBarPitchOfSlab;Description;IfcText;Reference;IfcLabel;LongOutsideTopBarPitch;IfcPositiveLengthMeasure;LongInsideCenterTopBarPitch;IfcPositiveLengthMeasure;LongInsideEndTopBarPitch;IfcPositiveLengthMeasure;ShortOutsideTopBarPitch;IfcPositiveLengthMeasure;ShortInsideCenterTopBarPitch;IfcPositiveLengthMeasure;ShortInsideEndTopBarPitch;IfcPositiveLengthMeasure;LongOutsideLowerBarPitch;IfcPositiveLengthMeasure;LongInsideCenterLowerBarPitch;IfcPositiveLengthMeasure;LongInsideEndLowerBarPitch;IfcPositiveLengthMeasure;ShortOutsideLowerBarPitch;IfcPositiveLengthMeasure;ShortInsideCenterLowerBarPitch;IfcPositiveLengthMeasure;ShortInsideEndLowerBarPitch;IfcPositiveLengthMeasure -Pset_ReinforcementBarPitchOfWall;Description;IfcText;Reference;IfcLabel;VerticalBarPitch;IfcPositiveLengthMeasure;HorizontalBarPitch;IfcPositiveLengthMeasure;SpacingBarPitch;IfcPositiveLengthMeasure -Pset_Risk;NatureOfRisk;IfcLabel;SubNatureOfRisk1;IfcLabel;SubNatureOfRisk2;IfcLabel;RiskCause;IfcText;AffectsSurroundings;IfcBoolean;PreventiveMeassures;IfcText -Pset_RoofCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel -Pset_SanitaryTerminalTypeBath;DrainSize;IfcPositiveLengthMeasure;HasGrabHandles;IfcBoolean -Pset_SanitaryTerminalTypeBidet;SpilloverLevel;IfcPositiveLengthMeasure;DrainSize;IfcPositiveLengthMeasure -Pset_SanitaryTerminalTypeCistern;CisternCapacity;IfcVolumeMeasure;IsSingleFlush;IfcBoolean;FlushRate;IfcVolumeMeasure;IsAutomaticFlush;IfcBoolean -Pset_SanitaryTerminalTypeCommon;Reference;IfcIdentifier;NominalLength;IfcPositiveLengthMeasure;NominalWidth;IfcPositiveLengthMeasure;NominalDepth;IfcPositiveLengthMeasure;Color;IfcLabel -Pset_SanitaryTerminalTypeSanitaryFountain;DrainSize;IfcPositiveLengthMeasure -Pset_SanitaryTerminalTypeShower;HasTray;IfcBoolean;ShowerHeadDescription;IfcText;DrainSize;IfcPositiveLengthMeasure -Pset_SanitaryTerminalTypeSink;Color;IfcLabel;DrainSize;IfcPositiveLengthMeasure;MountingOffset;IfcLengthMeasure -Pset_SanitaryTerminalTypeToiletPan;SpilloverLevel;IfcPositiveLengthMeasure -Pset_SanitaryTerminalTypeUrinal;SpilloverLevel;IfcPositiveLengthMeasure -Pset_SanitaryTerminalTypeWashHandBasin;DrainSize;IfcPositiveLengthMeasure;MountingOffset;IfcLengthMeasure -Pset_SensorTypeCO2Sensor;SetPointConcentration;IfcPositiveRatioMeasure -Pset_SensorTypeCommon;Reference;IfcIdentifier -Pset_SensorTypeConductanceSensor;SetPointConductance;IfcElectricConductanceMeasure -Pset_SensorTypeContactSensor;SetPointContact;IfcInteger -Pset_SensorTypeFireSensor;FireSensorSetPoint;IfcThermodynamicTemperatureMeasure;AccuracyOfFireSensor;IfcThermodynamicTemperatureMeasure;TimeConstant;IfcTimeMeasure -Pset_SensorTypeFlowSensor;SetPointFlow;IfcVolumetricFlowRateMeasure -Pset_SensorTypeFrostSensor;SetPointFrost;IfcPositiveRatioMeasure -Pset_SensorTypeGasSensor;GasDetected;IfcLabel;SetPointConcentration;IfcPositiveRatioMeasure;CoverageArea;IfcAreaMeasure -Pset_SensorTypeHeatSensor;CoverageArea;IfcAreaMeasure;SetPointTemperature;IfcThermodynamicTemperatureMeasure;RateOfTemperatureRise;IfcTemperatureRateOfChangeMeasure -Pset_SensorTypeHumiditySensor;SetPointHumidity;IfcPositiveRatioMeasure -Pset_SensorTypeIdentifierSensor;SetPointIdentifier;IfcIdentifier -Pset_SensorTypeIonConcentrationSensor;SubstanceDetected;IfcLabel;SetPointConcentration;IfcIonConcentrationMeasure -Pset_SensorTypeLevelSensor;SetPointLevel;IfcPositiveLengthMeasure -Pset_SensorTypeLightSensor;SetPointIlluminance;IfcIlluminanceMeasure -Pset_SensorTypeMoistureSensor;SetPointMoisture;IfcPositiveRatioMeasure -Pset_SensorTypeMovementSensor;SetPointMovement;IfcPositiveRatioMeasure -Pset_SensorTypePHSensor;SetPointPH;IfcPHMeasure -Pset_SensorTypePressureSensor;SetPointPressure;IfcPressureMeasure;IsSwitch;IfcBoolean -Pset_SensorTypeRadiationSensor;SetPointRadiation;IfcPowerMeasure -Pset_SensorTypeRadioactivitySensor;SetPointRadioactivity;IfcRadioActivityMeasure -Pset_SensorTypeSmokeSensor;CoverageArea;IfcAreaMeasure;SetPointConcentration;IfcPositiveRatioMeasure;HasBuiltInAlarm;IfcBoolean -Pset_SensorTypeSoundSensor;SetPointSound;IfcSoundPressureMeasure -Pset_SensorTypeTemperatureSensor;SetPointTemperature;IfcThermodynamicTemperatureMeasure -Pset_SensorTypeWindSensor;SetPointSpeed;IfcLinearVelocityMeasure -Pset_ServiceLife;ServiceLifeDuration;IfcDuration;MeanTimeBetweenFailure;IfcDuration -Pset_ServiceLifeFactors;QualityOfComponents;IfcPositiveRatioMeasure;DesignLevel;IfcPositiveRatioMeasure;WorkExecutionLevel;IfcPositiveRatioMeasure;IndoorEnvironment;IfcPositiveRatioMeasure;OutdoorEnvironment;IfcPositiveRatioMeasure;InUseConditions;IfcPositiveRatioMeasure;MaintenanceLevel;IfcPositiveRatioMeasure -Pset_ShadingDeviceCommon;Reference;IfcIdentifier;MechanicalOperated;IfcBoolean;SolarTransmittance;IfcPositiveRatioMeasure;SolarReflectance;IfcPositiveRatioMeasure;VisibleLightTransmittance;IfcPositiveRatioMeasure;VisibleLightReflectance;IfcPositiveRatioMeasure;ThermalTransmittance;IfcThermalTransmittanceMeasure;IsExternal;IfcBoolean;Roughness;IfcLabel;SurfaceColor;IfcLabel -Pset_SiteCommon;Reference;IfcIdentifier;BuildableArea;IfcAreaMeasure;SiteCoverageRatio;IfcPositiveRatioMeasure;FloorAreaRatio;IfcPositiveRatioMeasure;BuildingHeightLimit;IfcPositiveLengthMeasure;TotalArea;IfcAreaMeasure -Pset_SlabCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;FireRating;IfcLabel;PitchAngle;IfcPlaneAngleMeasure;Combustible;IfcBoolean;SurfaceSpreadOfFlame;IfcLabel;Compartmentation;IfcBoolean;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean -Pset_SolarDeviceTypeCommon;Reference;IfcIdentifier -Pset_SoundAttenuation;SoundFrequency;IfcFrequencyMeasure -Pset_SoundGeneration;SoundCurve;IfcSoundPowerMeasure -Pset_SpaceCommon;Reference;IfcIdentifier;IsExternal;IfcBoolean;GrossPlannedArea;IfcAreaMeasure;NetPlannedArea;IfcAreaMeasure;PubliclyAccessible;IfcBoolean;HandicapAccessible;IfcBoolean -Pset_SpaceCoveringRequirements;FloorCovering;IfcLabel;FloorCoveringThickness;IfcPositiveLengthMeasure;WallCovering;IfcLabel;WallCoveringThickness;IfcPositiveLengthMeasure;CeilingCovering;IfcLabel;CeilingCoveringThickness;IfcPositiveLengthMeasure;SkirtingBoard;IfcLabel;SkirtingBoardHeight;IfcPositiveLengthMeasure;Molding;IfcLabel;MoldingHeight;IfcPositiveLengthMeasure;ConcealedFlooring;IfcBoolean;ConcealedFlooringOffset;IfcNonNegativeLengthMeasure;ConcealedCeiling;IfcBoolean;ConcealedCeilingOffset;IfcNonNegativeLengthMeasure -Pset_SpaceFireSafetyRequirements;FireRiskFactor;IfcLabel;FlammableStorage;IfcBoolean;FireExit;IfcBoolean;SprinklerProtection;IfcBoolean;SprinklerProtectionAutomatic;IfcBoolean;AirPressurization;IfcBoolean -Pset_SpaceHeaterTypeCommon;Reference;IfcIdentifier;BodyMass;IfcMassMeasure;ThermalMassHeatCapacity;IfcReal;OutputCapacity;IfcPowerMeasure;ThermalEfficiency;IfcNormalisedRatioMeasure;NumberOfPanels;IfcInteger;NumberOfSections;IfcInteger -Pset_SpaceHeaterTypeRadiator;TubingLength;IfcPositiveLengthMeasure;WaterContent;IfcMassMeasure -Pset_SpaceLightingRequirements;ArtificialLighting;IfcBoolean;Illuminance;IfcIlluminanceMeasure -Pset_SpaceOccupancyRequirements;OccupancyType;IfcLabel;OccupancyNumber;IfcCountMeasure;OccupancyNumberPeak;IfcCountMeasure;OccupancyTimePerDay;IfcTimeMeasure;AreaPerOccupant;IfcAreaMeasure;MinimumHeadroom;IfcLengthMeasure;IsOutlookDesirable;IfcBoolean -Pset_SpaceParking;ParkingUse;IfcLabel;ParkingUnits;IfcCountMeasure;IsAisle;IfcBoolean;IsOneWay;IfcBoolean -Pset_SpaceThermalDesign;CoolingDesignAirflow;IfcVolumetricFlowRateMeasure;HeatingDesignAirflow;IfcVolumetricFlowRateMeasure;TotalSensibleHeatGain;IfcPowerMeasure;TotalHeatGain;IfcPowerMeasure;TotalHeatLoss;IfcPowerMeasure;CoolingDryBulb;IfcThermodynamicTemperatureMeasure;CoolingRelativeHumidity;IfcPositiveRatioMeasure;HeatingDryBulb;IfcThermodynamicTemperatureMeasure;HeatingRelativeHumidity;IfcPositiveRatioMeasure;VentilationAirFlowrate;IfcVolumetricFlowRateMeasure;ExhaustAirFlowrate;IfcVolumetricFlowRateMeasure;CeilingRAPlenum;IfcBoolean;BoundaryAreaHeatLoss;IfcHeatFluxDensityMeasure -Pset_SpaceThermalLoad;People;IfcPowerMeasure;Lighting;IfcPowerMeasure;EquipmentSensible;IfcPowerMeasure;VentilationIndoorAir;IfcPowerMeasure;VentilationOutdoorAir;IfcPowerMeasure;RecirculatedAir;IfcPowerMeasure;ExhaustAir;IfcPowerMeasure;AirExchangeRate;IfcPowerMeasure;DryBulbTemperature;IfcPowerMeasure;RelativeHumidity;IfcPowerMeasure;InfiltrationSensible;IfcPowerMeasure;TotalSensibleLoad;IfcPowerMeasure;TotalLatentLoad;IfcPowerMeasure;TotalRadiantLoad;IfcPowerMeasure -Pset_SpaceThermalRequirements;SpaceTemperature;IfcThermodynamicTemperatureMeasure;SpaceTemperatureMax;IfcThermodynamicTemperatureMeasure;SpaceTemperatureMin;IfcThermodynamicTemperatureMeasure;SpaceTemperatureSummerMax;IfcThermodynamicTemperatureMeasure;SpaceTemperatureSummerMin;IfcThermodynamicTemperatureMeasure;SpaceTemperatureWinterMax;IfcThermodynamicTemperatureMeasure;SpaceTemperatureWinterMin;IfcThermodynamicTemperatureMeasure;SpaceHumidity;IfcRatioMeasure;SpaceHumidityMax;IfcRatioMeasure;SpaceHumidityMin;IfcRatioMeasure;SpaceHumiditySummer;IfcRatioMeasure;SpaceHumidityWinter;IfcRatioMeasure;DiscontinuedHeating;IfcBoolean;NaturalVentilation;IfcBoolean;NaturalVentilationRate;IfcCountMeasure;MechanicalVentilationRate;IfcCountMeasure;AirConditioning;IfcBoolean;AirConditioningCentral;IfcBoolean -Pset_SpatialZoneCommon;Reference;IfcLabel;IsExternal;IfcBoolean -Pset_StackTerminalTypeCommon;Reference;IfcIdentifier -Pset_StairCommon;Reference;IfcIdentifier;NumberOfRiser;IfcCountMeasure;NumberOfTreads;IfcCountMeasure;RiserHeight;IfcPositiveLengthMeasure;TreadLength;IfcPositiveLengthMeasure;NosingLength;IfcLengthMeasure;WalkingLineOffset;IfcPositiveLengthMeasure;TreadLengthAtOffset;IfcPositiveLengthMeasure;TreadLengthAtInnerSide;IfcPositiveLengthMeasure;WaistThickness;IfcPositiveLengthMeasure;RequiredHeadroom;IfcPositiveLengthMeasure;HandicapAccessible;IfcBoolean;HasNonSkidSurface;IfcBoolean;IsExternal;IfcBoolean;ThermalTransmittance;IfcThermalTransmittanceMeasure;LoadBearing;IfcBoolean;FireRating;IfcLabel;FireExit;IfcBoolean -Pset_StairFlightCommon;Reference;IfcIdentifier;NumberOfRiser;IfcCountMeasure;NumberOfTreads;IfcCountMeasure;RiserHeight;IfcPositiveLengthMeasure;TreadLength;IfcPositiveLengthMeasure;NosingLength;IfcLengthMeasure;WalkingLineOffset;IfcPositiveLengthMeasure;TreadLengthAtOffset;IfcPositiveLengthMeasure;TreadLengthAtInnerSide;IfcPositiveLengthMeasure;Headroom;IfcPositiveLengthMeasure;WaistThickness;IfcPositiveLengthMeasure -Pset_StructuralSurfaceMemberVaryingThickness;Thickness1;IfcPositiveLengthMeasure;Location1Local;IfcLengthMeasure;Location1Global;IfcLengthMeasure;Thickness2;IfcPositiveLengthMeasure;Location2Local;IfcLengthMeasure;Location2Global;IfcLengthMeasure;Thickness3;IfcPositiveLengthMeasure;Location3Local;IfcLengthMeasure;Location3Global;IfcLengthMeasure -Pset_SwitchingDeviceTypeCommon;Reference;IfcIdentifier;NumberOfGangs;IfcInteger;HasLock;IfcBoolean;IsIlluminated;IfcBoolean;Legend;IfcLabel;SetPoint;IfcLabel -Pset_SystemFurnitureElementTypeCommon;IsUsed;IfcBoolean;GroupCode;IfcIdentifier;NominalWidth;IfcPositiveLengthMeasure;NominalHeight;IfcPositiveLengthMeasure;Finishing;IfcLabel -Pset_SystemFurnitureElementTypePanel;HasOpening;IfcBoolean;NominalThickness;IfcPositiveLengthMeasure -Pset_SystemFurnitureElementTypeWorkSurface;UsePurpose;IfcLabel;HangingHeight;IfcPositiveLengthMeasure;NominalThickness;IfcPositiveLengthMeasure;ShapeDescription;IfcLabel -Pset_TankOccurrence;HasLadder;IfcBoolean;HasVisualIndicator;IfcBoolean -Pset_TankTypeCommon;Reference;IfcIdentifier;NominalLengthOrDiameter;IfcPositiveLengthMeasure;NominalWidthOrDiameter;IfcPositiveLengthMeasure;NominalDepth;IfcPositiveLengthMeasure;NominalCapacity;IfcVolumeMeasure;EffectiveCapacity;IfcVolumeMeasure;OperatingWeight;IfcMassMeasure;FirstCurvatureRadius;IfcPositiveLengthMeasure;SecondCurvatureRadius;IfcPositiveLengthMeasure;NumberOfSections;IfcInteger -Pset_TankTypeExpansion;ChargePressure;IfcPressureMeasure;PressureRegulatorSetting;IfcPressureMeasure;ReliefValveSetting;IfcPressureMeasure -Pset_TankTypePreformed;FirstCurvatureRadius;IfcPositiveLengthMeasure;SecondCurvatureRadius;IfcPositiveLengthMeasure -Pset_TankTypePressureVessel;ChargePressure;IfcPressureMeasure;PressureRegulatorSetting;IfcPressureMeasure;ReliefValveSetting;IfcPressureMeasure -Pset_TankTypeSectional;NumberOfSections;IfcInteger;SectionLength;IfcPositiveLengthMeasure;SectionWidth;IfcPositiveLengthMeasure -Pset_ThermalLoadAggregate;TotalCoolingLoad;IfcPowerMeasure;TotalHeatingLoad;IfcPowerMeasure;LightingDiversity;IfcPositiveRatioMeasure;InfiltrationDiversitySummer;IfcPositiveRatioMeasure;InfiltrationDiversityWinter;IfcPositiveRatioMeasure;ApplianceDiversity;IfcPositiveRatioMeasure;LoadSafetyFactor;IfcPositiveRatioMeasure -Pset_ThermalLoadDesignCriteria;OccupancyDiversity;IfcPositiveRatioMeasure;OutsideAirPerPerson;IfcVolumetricFlowRateMeasure;ReceptacleLoadIntensity;IfcReal;AppliancePercentLoadToRadiant;IfcPositiveRatioMeasure;LightingLoadIntensity;IfcReal;LightingPercentLoadToReturnAir;IfcPositiveRatioMeasure -Pset_TransformerTypeCommon;Reference;IfcIdentifier;PrimaryVoltage;IfcElectricVoltageMeasure;SecondaryVoltage;IfcElectricVoltageMeasure;PrimaryCurrent;IfcElectricCurrentMeasure;SecondaryCurrent;IfcElectricCurrentMeasure;PrimaryFrequency;IfcFrequencyMeasure;SecondaryFrequency;IfcFrequencyMeasure;PrimaryApparentPower;IfcPowerMeasure;SecondaryApparentPower;IfcPowerMeasure;MaximumApparentPower;IfcPowerMeasure;ShortCircuitVoltage;IfcComplexNumber;RealImpedanceRatio;IfcRatioMeasure;ImaginaryImpedanceRatio;IfcRatioMeasure;IsNeutralPrimaryTerminalAvailable;IfcBoolean;IsNeutralSecondaryTerminalAvailable;IfcBoolean -Pset_TransportElementCommon;Reference;IfcIdentifier;CapacityPeople;IfcCountMeasure;CapacityWeight;IfcMassMeasure;FireExit;IfcBoolean -Pset_TransportElementElevator;FireFightingLift;IfcBoolean;ClearWidth;IfcPositiveLengthMeasure;ClearDepth;IfcPositiveLengthMeasure;ClearHeight;IfcPositiveLengthMeasure -Pset_TubeBundleTypeCommon;Reference;IfcIdentifier;NumberOfRows;IfcInteger;StaggeredRowSpacing;IfcPositiveLengthMeasure;InLineRowSpacing;IfcPositiveLengthMeasure;NumberOfCircuits;IfcInteger;FoulingFactor;IfcThermalResistanceMeasure;ThermalConductivity;IfcThermalConductivityMeasure;Length;IfcPositiveLengthMeasure;Volume;IfcVolumeMeasure;NominalDiameter;IfcPositiveLengthMeasure;OutsideDiameter;IfcPositiveLengthMeasure;InsideDiameter;IfcPositiveLengthMeasure;HorizontalSpacing;IfcPositiveLengthMeasure;VerticalSpacing;IfcPositiveLengthMeasure;HasTurbulator;IfcBoolean -Pset_TubeBundleTypeFinned;Spacing;IfcPositiveLengthMeasure;Thickness;IfcPositiveLengthMeasure;ThermalConductivity;IfcThermalConductivityMeasure;Length;IfcPositiveLengthMeasure;Height;IfcPositiveLengthMeasure;Diameter;IfcPositiveLengthMeasure;FinCorrugatedType;IfcLabel;HasCoating;IfcBoolean -Pset_UnitaryControlElementTypeCommon;Reference;IfcIdentifier;Mode;IfcLabel -Pset_UnitaryControlElementTypeThermostat;TemperatureSetPoint;IfcThermodynamicTemperatureMeasure -Pset_UnitaryEquipmentTypeAirConditioningUnit;SensibleCoolingCapacity;IfcPowerMeasure;LatentCoolingCapacity;IfcPowerMeasure;CoolingEfficiency;IfcPositiveRatioMeasure;HeatingCapacity;IfcPowerMeasure;HeatingEfficiency;IfcPositiveRatioMeasure;CondenserFlowrate;IfcVolumetricFlowRateMeasure;CondenserEnteringTemperature;IfcThermodynamicTemperatureMeasure;CondenserLeavingTemperature;IfcThermodynamicTemperatureMeasure;OutsideAirFlowrate;IfcVolumetricFlowRateMeasure -Pset_UnitaryEquipmentTypeAirHandler;DualDeck;IfcBoolean -Pset_UnitaryEquipmentTypeCommon;Reference;IfcIdentifier -Pset_ValveTypeAirRelease;IsAutomatic;IfcBoolean -Pset_ValveTypeCommon;Reference;IfcIdentifier;Size;IfcPositiveLengthMeasure;TestPressure;IfcPressureMeasure;WorkingPressure;IfcPressureMeasure;FlowCoefficient;IfcReal;CloseOffRating;IfcPressureMeasure -Pset_ValveTypeDrawOffCock;HasHoseUnion;IfcBoolean -Pset_ValveTypeFaucet;Finish;IfcText;FaucetTopDescription;IfcText -Pset_ValveTypeFlushing;FlushingRate;IfcVolumetricFlowRateMeasure;HasIntegralShutOffDevice;IfcBoolean;IsHighPressure;IfcBoolean -Pset_ValveTypeGasTap;HasHoseUnion;IfcBoolean -Pset_ValveTypeIsolating;IsNormallyOpen;IfcBoolean -Pset_ValveTypeMixing;OutletConnectionSize;IfcPositiveLengthMeasure -Pset_ValveTypePressureReducing;UpstreamPressure;IfcPressureMeasure;DownstreamPressure;IfcPressureMeasure -Pset_ValveTypePressureRelief;ReliefPressure;IfcPressureMeasure -Pset_VibrationIsolatorTypeCommon;Reference;IfcIdentifier;VibrationTransmissibility;IfcPositiveRatioMeasure;IsolatorStaticDeflection;IfcLengthMeasure;IsolatorCompressibility;IfcRatioMeasure;MaximumSupportedWeight;IfcMassMeasure;NominalHeight;IfcPositiveLengthMeasure -Pset_WallCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;FireRating;IfcLabel;Combustible;IfcBoolean;SurfaceSpreadOfFlame;IfcLabel;ThermalTransmittance;IfcThermalTransmittanceMeasure;IsExternal;IfcBoolean;LoadBearing;IfcBoolean;ExtendToStructure;IfcBoolean;Compartmentation;IfcBoolean -Pset_Warranty;WarrantyIdentifier;IfcIdentifier;WarrantyStartDate;IfcDate;WarrantyEndDate;IfcDate;IsExtendedWarranty;IfcBoolean;WarrantyPeriod;IfcDuration;WarrantyContent;IfcText;PointOfContact;IfcLabel;Exclusions;IfcText -Pset_WasteTerminalTypeCommon;Reference;IfcIdentifier -Pset_WasteTerminalTypeFloorTrap;NominalBodyLength;IfcPositiveLengthMeasure;NominalBodyWidth;IfcPositiveLengthMeasure;NominalBodyDepth;IfcPositiveLengthMeasure;IsForSullageWater;IfcBoolean;SpilloverLevel;IfcPositiveLengthMeasure;HasStrainer;IfcBoolean;OutletConnectionSize;IfcPositiveLengthMeasure;InletConnectionSize;IfcPositiveLengthMeasure;CoverLength;IfcPositiveLengthMeasure;CoverWidth;IfcPositiveLengthMeasure -Pset_WasteTerminalTypeFloorWaste;NominalBodyLength;IfcPositiveLengthMeasure;NominalBodyWidth;IfcPositiveLengthMeasure;NominalBodyDepth;IfcPositiveLengthMeasure;OutletConnectionSize;IfcPositiveLengthMeasure;CoverLength;IfcPositiveLengthMeasure;CoverWidth;IfcPositiveLengthMeasure -Pset_WasteTerminalTypeGullySump;NominalSumpLength;IfcPositiveLengthMeasure;NominalSumpWidth;IfcPositiveLengthMeasure;NominalSumpDepth;IfcPositiveLengthMeasure;OutletConnectionSize;IfcPositiveLengthMeasure;InletConnectionSize;IfcPositiveLengthMeasure;CoverLength;IfcPositiveLengthMeasure;CoverWidth;IfcPositiveLengthMeasure -Pset_WasteTerminalTypeGullyTrap;NominalBodyLength;IfcPositiveLengthMeasure;NominalBodyWidth;IfcPositiveLengthMeasure;NominalBodyDepth;IfcPositiveLengthMeasure;HasStrainer;IfcBoolean;OutletConnectionSize;IfcPositiveLengthMeasure;InletConnectionSize;IfcPositiveLengthMeasure;CoverLength;IfcPositiveLengthMeasure;CoverWidth;IfcPositiveLengthMeasure -Pset_WasteTerminalTypeRoofDrain;NominalBodyLength;IfcPositiveLengthMeasure;NominalBodyWidth;IfcPositiveLengthMeasure;NominalBodyDepth;IfcPositiveLengthMeasure;OutletConnectionSize;IfcPositiveLengthMeasure;CoverLength;IfcPositiveLengthMeasure;CoverWidth;IfcPositiveLengthMeasure -Pset_WasteTerminalTypeWasteDisposalUnit;DrainConnectionSize;IfcPositiveLengthMeasure;OutletConnectionSize;IfcPositiveLengthMeasure;NominalDepth;IfcPositiveLengthMeasure -Pset_WasteTerminalTypeWasteTrap;OutletConnectionSize;IfcPositiveLengthMeasure;InletConnectionSize;IfcPositiveLengthMeasure -Pset_WindowCommon;Reference;IfcIdentifier;AcousticRating;IfcLabel;FireRating;IfcLabel;SecurityRating;IfcLabel;IsExternal;IfcBoolean;Infiltration;IfcVolumetricFlowRateMeasure;ThermalTransmittance;IfcThermalTransmittanceMeasure;GlazingAreaFraction;IfcPositiveRatioMeasure;HasSillExternal;IfcBoolean;HasSillInternal;IfcBoolean;HasDrive;IfcBoolean;SmokeStop;IfcBoolean;FireExit;IfcBoolean;WaterTightnessRating;IfcLabel;MechanicalLoadRating;IfcLabel;WindLoadRating;IfcLabel -Pset_WorkControlCommon;WorkStartTime;IfcTime;WorkFinishTime;IfcTime;WorkDayDuration;IfcDuration;WorkWeekDuration;IfcDuration;WorkMonthDuration;IfcDuration -Pset_ZoneCommon;Reference;IfcIdentifier;IsExternal;IfcBoolean;GrossPlannedArea;IfcAreaMeasure;NetPlannedArea;IfcAreaMeasure;PubliclyAccessible;IfcBoolean;HandicapAccessible;IfcBoolean diff --git a/src/Mod/BIM/utils/pset_definitions.xml b/src/Mod/BIM/utils/pset_definitions.xml deleted file mode 100644 index 45c44ca263d0..000000000000 --- a/src/Mod/BIM/utils/pset_definitions.xml +++ /dev/null @@ -1,79288 +0,0 @@ - - - - - Pset_ActionRequest - An action request is a request for an action to fulfill a need. HISTORY: IFC4: Removed RequestSourceType, RequestDescription, Status - - - IfcActionRequest - - IfcActionRequest - - - RequestSourceLabel - A specific name or label that further qualifies the identity of a request source. In the event of an email, this may be the email address. - - - - - - - Request Source Label - 要請ソースタイプ - - - - 要請がなされる源のあらかじめ定義されたタイプの識別子。 - - - - RequestSourceName - The person making the request, where known. - - - - - Request Source Name - 要請ソースラベル - - - - 要請源の識別を確認するための特定の名称またはラベル。電子メールの場合、電子メールアドレスに相当する。 - - - - RequestComments - Comments that may be made on the request. - - - - - - - Request Comments - 要請ソース名 - - - - 要請を作成する人物の名称。 - - - - - - ファシリティマネジメントにおける施策への要請事項に関するプロパティセット定義。 - - - - - Pset_ActorCommon - A property set that enables further classification of actors, including the ability to give a number of actors to be designated as a population, the number being specified as a property to be dealt with as a single value rather than having to aggregate a number of instances of IfcActor. - - - IfcActor - - IfcActor - - - NumberOfActors - The number of actors that are to be dealt with together in the population. - - - - - - - Number Of Actors - 関与者数 - 参与者数 - - - - 母集団において取り扱われる関与者の数。 - 该组参与者的总数。 - - - - Category - Designation of the category into which the actors in the population belong. - - - - - - - Category - 部門 - 类别 - - - - 母集団の中の関与者のカテゴリー(部門・分野)の指定。 - 该组参与者所属的类别。 - - - - SkillLevel - Skill level exhibited by the actor and which indicates an extent of their capability to perform actions on the artefacts upon which they can act. - - - - - - - Skill Level - 技能段階 - 技能等级 - - - - 関与者が示すスキルレベル(技能・技量段階)、および実行されるアクションへの能力を示すもの。 - 参与者具备的技能的等级,即他们在专业领域内所能展示的能力。 - - - - - - アクター(関係者)、ある指定された母集団に関与者数を与える能力、IfcActorのインスタンスの数の集合としてよりも一つの価値として扱うことの出来る特性として指定される数、などの分類を可能にするプロパティセット定義。 - 该属性集的作用为对参与者进一步分类,包括将一定数量的参与者归为一组的能力。本属性集的数量属性为一个单值,而不是作为多个IfcActor实例的集合。 - - - - - Pset_ActuatorPHistory - Properties for history of actuators. HISTORY: Added in IFC4. - - - IfcActuator - - IfcActuator - - - Position - Indicates position of the actuator over time where 0.0 is fully closed and 1.0 is fully open. - - - - - Position - 位置 - 참조 ID - - - - アクチュエータの時間ごとの位置を示す値。0.0が完全に閉じられた状態で、1.0が完全に開いた状態。 - 해당 프로젝트에서 사용이 유형에 대한 참조 ID (예 : 'A-1') ※ 기본이있는 경우 그 기호를 사용 - - - - Quality - Indicates the quality of measurement or failure condition, which may be further qualified by the Status. True: measured values are considered reliable; False: measured values are considered not reliable (i.e. a fault has been detected); Unknown: reliability of values is uncertain. - - - - - Quality - 品質 - 페일 세이프 유형 - - - - 計測の品質を示す値。 - 요청한 액츄에이터의 안전 장치 유형을 표시 - - - - Status - Indicates an error code or identifier, whose meaning is specific to the particular automation system. Example values include: 'ConfigurationError', 'NotConnected', 'DeviceFailure', 'SensorFailure', 'LastKnown, 'CommunicationsFailure', 'OutOfService'. - - - - - Status - 状態 - 재정 기능의 유무 - - - - エラーコードまたはIDを示す。例:'ConfigurationError', 'NotConnected', 'DeviceFailure', 'SensorFailure', 'LastKnown, 'CommunicationsFailure', 'OutOfService'. - 대체 기능으로 수동 조작이 제공되는지 (= TRUE) 여부 (= FALSE)를 확인한다. 수동으로 조작하는 액츄에이터의 경우는이 값을 기본값으로 FALSE로 설정해야하므로주의한다. - - - - - - アクチュエータの性能履歴の属性。IFC4にて追加。 - - - - - Pset_ActuatorTypeCommon - Actuator type common attributes. - - - IfcActuator - - IfcActuator - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照記号 - 참조 ID - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 해당 프로젝트에서 사용이 유형에 대한 참조 ID (예 : 'A-1') ※ 기본이있는 경우 그 기호를 사용 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - 페일 세이프 유형 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - 요청한 액츄에이터의 안전 장치 유형을 표시 - - - - FailPosition - Specifies the required fail-safe position of the actuator. - - - - FAILOPEN - FAILCLOSED - NOTKNOWN - UNSET - - - - FAILOPEN - - Fail Open - - - - - - - FAILCLOSED - - Fail Closed - - - - - - - OTHER - - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Fail Position - フェールセーフタイプ - 재정 기능의 유무 - - - - 要求されたアクチュエータのフェールセーフタイプを示す。 - 대체 기능으로 수동 조작이 제공되는지 (= TRUE) 여부 (= FALSE)를 확인한다. 수동으로 조작하는 액츄에이터의 경우는이 값을 기본값으로 FALSE로 설정해야하므로주의한다. - - - - ManualOverride - Identifies whether hand-operated operation is provided as an override (= TRUE) or not (= FALSE). Note that this value should be set to FALSE by default in the case of a Hand Operated Actuator. - - - - - - - Manual Override - オーバーライド機能の有無 - - - - オーバーライド機能として手動操作が提供されるか (= TRUE) 、否か (= FALSE)を識別する。手動で操作するアクチュエータの場合は、この値をデフォルトとしてFALSEに設定する必要があるので注意すること。 - - - - Application - Indicates application of actuator. - - - - EntryExitDevice - FireSmokeDamperActuator - DamperActuator - ValvePositioner - LampActuator - SunblindActuator - OTHER - NOTKNOWN - UNSET - - - - ENTRYEXITDEVICE - - Entry Exit Device - - - - - - - FIRESMOKEDAMPERACTUATOR - - Fire Smoke Damper Actuator - - - - - - - DAMPERACTUATOR - - Damper Actuator - - - - - - - VALVEPOSITIONER - - Valve Positioner - - - - - - - LAMPACTUATOR - - Lamp Actuator - - - - - - - SUNBLINDACTUATOR - - Sunblind Actuator - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Application - - - - - - - - - アクチュエータタイプの共通属性。 - - - - - Pset_ActuatorTypeElectricActuator - A device that electrically actuates a control element. - - - IfcActuator/ELECTRICACTUATOR - - IfcActuator/ELECTRICACTUATOR - - - ActuatorInputPower - Maximum input power requirement. - - - - - - - Actuator Input Power - 入力電力 - 입력 전력 - - - - 最大入力電力。 - 최대 입력 전력 - - - - ElectricActuatorType - Enumeration that identifies electric actuator as defined by its operational principle. - - - - MOTORDRIVE - MAGNETIC - OTHER - NOTKNOWN - UNSET - - - - MOTORDRIVE - - Motor Drive - - - - - - - MAGNETIC - - Magnetic - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Electric Actuator Type - 電気式アクチュエータタイプ - 전기식 액추에이터 유형 - - - - 作動原理によって定義された電気式アクチュエータを識別する一覧。 - 작동 원리에 의해 정의된 전기식 액츄에이터를 식별하는 목록 - - - - - - 制御要素を電気的に作動させるデバイス。 - - - - - Pset_ActuatorTypeHydraulicActuator - A device that hydraulically actuates a control element. - - - IfcActuator/HYDRAULICACTUATOR - - IfcActuator/HYDRAULICACTUATOR - - - InputPressure - Maximum design pressure for the actuator. - - - - - - - Input Pressure - 入力圧力 - 입력 압력 - - - - アクチュエータへの最大設計圧力。 - 액츄에이터의 최대 설계 압력 - - - - InputFlowrate - Maximum hydraulic flowrate requirement. - - - - - - - Input Flowrate - 入力流量 - 입력 유량 - - - - 最大流量。 - 최대 유량 - - - - - - 制御要素を水圧(油圧)で作動させるデバイス。 - - - - - Pset_ActuatorTypeLinearActuation - Characteristics of linear actuation of an actuator -History: Replaces Pset_LinearActuator - - - IfcActuator - - IfcActuator - - - Force - Indicates the maximum close-off force for the actuator. - - - - - - - Force - 最大推力 - 최대추력 - - - - アクチュエータの最大締め切り力を示す。 - 액츄에이터의 최대 마감 힘을 보여준다. - - - - Stroke - Indicates the maximum distance the actuator must traverse. - - - - - - - Stroke - ストローク - 입력 - - - - アクチュエータが動く最大距離を示す。 - 액츄에이터가 움직이는 최대 거리를 보여준다. - - - - - - アクチュエータの直線動作の特性。 - - - - - Pset_ActuatorTypePneumaticActuator - A device that pneumatically actuates a control element - - - IfcActuator/PNEUMATICACTUATOR - - IfcActuator/PNEUMATICACTUATOR - - - InputPressure - Maximum input control air pressure requirement. - - - - - - - Input Pressure - 入力圧力 - 입력 압력 - - - - 最大制御空気圧。 - 최대 제어 공압 - - - - InputFlowrate - Maximum input control air flowrate requirement. - - - - - - - Input Flowrate - 入力流量 - 입력 유량 - - - - 最大制御空気流量。 - 최대 제어 공기 유량 - - - - - - 制御要素を空気圧で作動させるデバイス。 - - - - - Pset_ActuatorTypeRotationalActuation - Characteristics of rotational actuation of an actuator -History: Replaces Pset_RotationalActuator - - - IfcActuator - - IfcActuator - - - Torque - Indicates the maximum close-off torque for the actuator. - - - - - - - Torque - 最大トルク - 최대 토크 - - - - アクチュエータの最大締め切りトルクを示す。 - 액츄에이터의 최대 마감 토크를 나타낸다. - - - - RangeAngle - Indicates the maximum rotation the actuator must traverse. - - - - - - - Range Angle - 最大回転角 - 최대 회전각 - - - - アクチュエータが動く最大回転角を示す。 - 액츄에이터가 움직이는 최대 회전각을 나타낸다. - - - - - - アクチュエータの回転動作の特性。 - - - - - Pset_AirSideSystemInformation - Attributes that apply to an air side HVAC system. HISTORY: New property set in IFC Release 1.0. - - - IfcSpace - IfcZone - IfcSpatialZone - - IfcSpace,IfcZone,IfcSpatialZone - - - Name - The name of the air side system. - - - - - - - Name - 名前 - 이름 - - - - 空調方式の名称。 - 공조 방식의 명칭 - - - - Description - The description of the air side system. - - - - - - - Description - 説明 - 설명 - - - - 空調方式の説明。 - 공조 방식 설명 - - - - AirSideSystemType - This enumeration specifies the basic types of possible air side systems (e.g., Constant Volume, Variable Volume, etc.). - - - - CONSTANTVOLUME - CONSTANTVOLUMESINGLEZONE - CONSTANTVOLUMEMULTIPLEZONEREHEAT - CONSTANTVOLUMEBYPASS - VARIABLEAIRVOLUME - VARIABLEAIRVOLUMEREHEAT - VARIABLEAIRVOLUMEINDUCTION - VARIABLEAIRVOLUMEFANPOWERED - VARIABLEAIRVOLUMEDUALCONDUIT - VARIABLEAIRVOLUMEVARIABLEDIFFUSERS - VARIABLEAIRVOLUMEVARIABLETEMPERATURE - OTHER - NOTKNOWN - UNSET - - - - CONSTANTVOLUME - - Constant Volume - - - - - - - CONSTANTVOLUMESINGLEZONE - - Constant Volume Single Zone - - - - - - - CONSTANTVOLUMEMULTIPLEZONEREHEAT - - Constant Volume Multiple Zone Reheat - - - - - - - CONSTANTVOLUMEBYPASS - - Constant Volume Bypass - - - - - - - VARIABLEAIRVOLUME - - Variable Air Volume - - - - - - - VARIABLEAIRVOLUMEREHEAT - - Variable Air Volume Reheat - - - - - - - VARIABLEAIRVOLUMEINDUCTION - - Variable Air Volume Induction - - - - - - - VARIABLEAIRVOLUMEFANPOWERED - - Variable Air Volume Fan Powered - - - - - - - VARIABLEAIRVOLUMEDUALCONDUIT - - Variable Air Volume Dual Conduit - - - - - - - VARIABLEAIRVOLUMEVARIABLEDIFFUSERS - - Variable Air Volume Variable Diffusers - - - - - - - VARIABLEAIRVOLUMEVARIABLETEMPERATURE - - Variable Air Volume Variable Temperature - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Air Side System Type - - - - - - - AirSideSystemDistributionType - This enumeration defines the basic types of air side systems (e.g., SingleDuct, DualDuct, Multizone, etc.). - - - - SINGLEDUCT - DUALDUCT - MULTIZONE - OTHER - NOTKNOWN - UNSET - - - - SINGLEDUCT - - Single Duct - - - - - - - DUALDUCT - - Dual Duct - - - - - - - MULTIZONE - - Multizone - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Air Side System Distribution Type - 搬送方式 - 반송방식 - - - - 基本的な空調方式(単一ダクト、二重ダクト、マルチゾーン等)。 - 기본적인 공조 방식 (단일 덕트, 이중 덕트, 멀티존 등) - - - - TotalAirflow - The total design supply air flowrate required for the system for either heating or cooling conditions, whichever is greater. - - - - - - - Total Airflow - 給気量 - 급기량 - - - - 暖房、冷房の条件の、いずれか大きい条件で要求される設計給気量。 - 난방, 냉방 조건 중 하나 큰 조건에서 요구되는 설계 급기 량 - - - - EnergyGainTotal - The total amount of energy gains for the spaces served by the system during the peak cooling conditions, plus any system-level total energy gains. - - - - - - - Energy Gain Total - 総熱取得 - 총 열 검색 - - - - 居室の最大冷房負荷と空調システム(機器等)の再熱負荷による最大熱負荷。 - 거실 최대 냉방 부하 및 공조 시스템 (장비 등) 재열 부하에 의한 최대 열부하. - - - - AirflowSensible - The air flowrate required to satisfy the sensible peak loads. - - - - - - - Airflow Sensible - 顕熱空調給気量 - 현열 공조 급기 량 - - - - 最大潜熱負荷に対応する給気量。 - 최대 잠열 부하에 대한 급기 량 - - - - EnergyGainSensible - The sum of total energy gains for the spaces served by the system during the peak cooling conditions, plus any system-level sensible energy gains. - - - - - - - Energy Gain Sensible - 顕熱空調負荷 - 현열 공조 부하 - - - - ピーク時各居室の最大冷房負荷と空調システムの顕熱負荷による最大顕熱負荷。 - 최대 각 거실 최대 냉방 부하 및 공조 시스템의 현열 부하에 의한 최대 현열 부하 - - - - EnergyLoss - The sum of energy losses for the spaces served by the system during the peak heating conditions. - - - - - - - Energy Loss - 熱(エネルギー)ロス - 열(에너지)로스 - - - - ピーク時空調システム最大暖房負荷を提供する際の熱ロス。 - 최대 공조 시스템 최대 난방 부하를 제공할 수있는 열 손실 - - - - LightingDiversity - Lighting diversity. - - - - - - - Lighting Diversity - 照明負荷係数 - 조명부하계수 - - - - 照明負荷係数。 - 조명 부하 계수 - - - - InfiltrationDiversitySummer - Diversity factor for Summer infiltration. - - - - - - - Infiltration Diversity Summer - 夏期すき間換気率 - 여름틈새 환기 비율 - - - - 夏期すき間換気率。 - 여름 틈새 환기 비율 - - - - InfiltrationDiversityWinter - Diversity factor for Winter infiltration. - - - - - - - Infiltration Diversity Winter - 冬期すき間換気率 - 겨울철 틈새 환기 비율 - - - - 冬期すき間換気率。 - 겨울철 틈새 환기 비율 - - - - ApplianceDiversity - Diversity of appliance load. - - - - - - - Appliance Diversity - 機器の負荷率 - 기기의 부하율 - - - - 機器の負荷率。 - 기기의 부하율 - - - - LoadSafetyFactor - Load safety factor. - - - - - - - Load Safety Factor - 負荷の安全率 - 부하의 안전율 - - - - 空調負荷計算用の安全率(割増係数)。 - 공조 부하 계산을위한 안전율 (할증 계수) - - - - HeatingTemperatureDelta - Heating temperature difference for calculating space air flow rates. - - - - - - - Heating Temperature Delta - 暖房時送風温度差 - 난방시 돌풍 온도차 - - - - 空調送風量計算用の暖房給気温度差。 - 에어컨 송풍 량 계산을위한 난방 급기 온도차 - - - - CoolingTemperatureDelta - Cooling temperature difference for calculating space air flow rates. - - - - - - - Cooling Temperature Delta - 冷房時送風温度差 - 냉방시 돌풍 온도차 - - - - 空調送風量計算用の冷房給気温度差。 - 에어컨 송풍 량 계산을위한 냉방 급기 온도차 - - - - Ventilation - Required outside air ventilation. - - - - - - - Ventilation - 外気量 - 외기량 - - - - 要求された外気量。 - 요청한 외기 량 - - - - FanPower - Fan motor loads contributing to the cooling load. - - - - - - - Fan Power - 送風機電力消費量 - 송풍기 소비 전력 - - - - 送風機モーターからの熱取得。 - 송풍기 모터의 열 취득 - - - - - - 空調システムに適用する属性。 - - - - - Pset_AirTerminalBoxPHistory - Air terminal box performance history attributes. - - - IfcAirTerminalBox - - IfcAirTerminalBox - - - DamperPosition - Control damper position, ranging from 0 to 1. - - - - - Damper Position - Position du registre - ダンパ開度 - - - - Position de contrôle du registre, compris entre 0 et 1. - 制御ダンパの開度(0~1) - - - - AtmosphericPressure - Ambient atmospheric pressure. - - - - - Atmospheric Pressure - Pression atmosphérique - 大気圧 - - - - Pression atmosphérique ambiante - 周囲大気圧 - - - - Sound - Sound performance. - - - - - Sound - Acoustique - 騒音 - - - - Performance acoustique - 騒音性能 - - - - AirflowCurve - Air flowrate versus damper position relationship;airflow = f ( valve position). - - - - - Airflow Curve - Courbe de débit d'air - 流量曲線 - - - - Relation entre débit d'air par rapport à la position du registre; Débit d'air = f (position du clapet) - ダンパ開度と風量の関係  風量=f(開度) - - - - - - ターミナルボックス性能履歴の属性。 - - - - - Pset_AirTerminalBoxTypeCommon - Air terminal box type common attributes. - - - IfcAirTerminalBox - - IfcAirTerminalBox - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - Référence - 参照記号 - - - - Identification de référence pour ce type spécifique à ce projet, c'est-à-dire type'A-1', fourni à partir du moment où, s'il n'y a pas de référence de classification par rapport à un système de classification reconnu et en usage. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Etat - 状態 - - - - Etat de l'élément, utilisé avant tout pour les projets de rénovation et réaménagement. L'état assigné peut être "Nouveau" - l'élément prévu pour du neuf, "Existant" - l'élément existait et est maintenu, "Démoli" - l'élément existait mais doit être démoli/supprimé, "Provisoire" - l'élément existera à titre provisoire seulement (comme un support structurel par exemple). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - AirflowRateRange - Range of airflow that can be delivered. - - - - - - - Airflow Rate Range - Domaine de débit d'air - 風量範囲 - - - - Plage de débit d'air pouvant être fourni. - 送風できる風量の範囲 - - - - AirPressureRange - Allowable air static pressure range at the entrance of the air terminal box. - - - - - - - Air Pressure Range - Plage de pression d'air - 空気圧範囲 - - - - Plage admise de la pression statique de l'air à l'entrée du registre terminal de ventilation - ターミナル入り口での許容静圧範囲 - - - - NominalAirFlowRate - Nominal airflow rate. - - - - - - - Nominal Air Flow Rate - Débit d'air nominal - 設計風量範囲 - - - - Débit d'air nominal - 設計風量範囲 - - - - ArrangementType - Terminal box arrangement. -SingleDuct: Terminal box receives warm or cold air from a single air supply duct. -DualDuct: Terminal box receives warm and cold air from separate air supply ducts. - - - - SINGLEDUCT - DUALDUCT - OTHER - NOTKNOWN - UNSET - - - - SINGLEDUCT - - Single Duct - - - - - - - DUALDUCT - - Dual Duct - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Arrangement Type - Type de configuration - ターミナル形式 - - - - Configuration du registre terminal. -Conduit unique: le registre terminal reçoit de l'air chaud ou froid depuis un conduit unique d'amenée d'air - ターミナルボックスの形式。 -単一ダクト:単一のダクトから、温風または冷風を受け取る -デュアルダクト:温風、冷風を分離されたダクトから受け取る - - - - ReheatType - Terminal box reheat type. - - - - ELECTRICALREHEAT - WATERCOILREHEAT - STEAMCOILREHEAT - GASREHEAT - NONE - OTHER - NOTKNOWN - UNSET - - - - ELECTRICALREHEAT - - Electrical Reheat - - - - - - - WATERCOILREHEAT - - Water Coil Reheat - - - - - - - STEAMCOILREHEAT - - Steam Coil Reheat - - - - - - - GASREHEAT - - Gas Reheat - - - - - - - NONE - - None - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Reheat Type - Type de réchauffage - 再熱形式 - - - - Type de réchauffage d'un registre terminal de ventilation - ターミナルの再熱方式 -(電気、水コイル、蒸気コイル、ガス加熱...) - - - - HasSoundAttenuator - Terminal box has a sound attenuator. - - - - - - - Has Sound Attenuator - Possède correction acoustique - 消音有無 - - - - Le registre terminal possède une correction acoustique - ターミナルに消音があるか否か (あればTRUE) - - - - HasReturnAir - Terminal box has return air mixed with supply air from duct work. - - - - - - - Has Return Air - Possède air repris - 還気有無 - - - - Le registre terminal a son air de reprise mélangé avec une amenée d'air issu du réseau de ventilation - ターミナルで還気を混合しているか否か(していればTRUE) - - - - HasFan - Terminal box has a fan inside (fan powered box). - - - - - - - Has Fan - Possède ventilateur - 送風機有無 - - - - Le registre terminal possède dans son intérieur un ventilateur (registre motorisé) - 内部に送風機を持つ時にTRUE - - - - NominalInletAirPressure - Nominal airflow inlet static pressure. - - - - - - - Nominal Inlet Air Pressure - Pression nominale à l'entrée d'air - 設計入口空気圧 - - - - Pression statique en débit d'air nominal à l'entrée - 入口静圧の設計値 - - - - NominalDamperDiameter - Nominal damper diameter. - - - - - - - Nominal Damper Diameter - Diamètre nominal clapet - 設計ダンパ直径 - - - - Diamètre nominal clapet - ダンパ直径の設計値 - - - - HousingThickness - Air terminal box housing material thickness. - - - - - - - Housing Thickness - Epaisseur de l'enveloppe - ハウジング板厚 - - - - Epaisseur du matériau réalisant l'enveloppe du registre terminal de ventilation - ターミナルのハウジング材の板厚 - - - - OperationTemperatureRange - Allowable operational range of the ambient air temperature. - - - - - - - Operation Temperature Range - Plage de température d'exploitation - 動作温度範囲 - - - - Plage opérationnelle possible de la température de l'air ambiant - 許容周囲温度範囲 - - - - ReturnAirFractionRange - Allowable return air fraction range as a fraction of discharge airflow. - - - - - - - Return Air Fraction Range - Plage pour la fraction d'air repris - 還気風量比 - - - - Plage possiblede la fraction d'air repris en tant que fraction de l'air rejeté - 送風量の一部としての許容還気風量 - - - - - - ターミナルボックスタイプの共通属性。 - - - - - Pset_AirTerminalOccurrence - Air terminal occurrence attributes attached to an instance of IfcAirTerminal. - - - IfcAirTerminal - - IfcAirTerminal - - - AirflowType - Enumeration defining the functional type of air flow through the terminal. - - - - SUPPLYAIR - RETURNAIR - EXHAUSTAIR - OTHER - NOTKNOWN - UNSET - - - - SUPPLYAIR - - Supply Air - - - - - - - RETURNAIR - - Return Air - - - - - - - EXHAUSTAIR - - Exhaust Air - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Airflow Type - Type de débit d'air - エアフロータイプ - - - - Enumération définissant le type fonctionnel de débit à travers le terminal - ターミナルを通過する気流の機能タイプ(給気、還気、排気他) - - - - AirFlowRate - The actual airflow rate as designed. - - - - - - - Air Flow Rate - - - - - - - Location - Location (a single type of diffuser can be used for multiple locations); high means close to ceiling. - - - - SIDEWALLHIGH - SIDEWALLLOW - CEILINGPERIMETER - CEILINGINTERIOR - FLOOR - SILL - OTHER - NOTKNOWN - UNSET - - - - SIDEWALLHIGH - - Side Wall High - - - - - - - SIDEWALLLOW - - Side Wall Low - - - - - - - CEILINGPERIMETER - - Ceiling Perimeter - - - - - - - CEILINGINTERIOR - - Ceiling Interior - - - - - - - FLOOR - - Floor - - - - - - - SILL - - Sill - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Location - Emplacement - 位置 - - - - Emplacement (un seul type de diffuseur peut être utilisé pour des emplaments multiples); Haut signifie proche du plafond. - 制気口の取り付け位置(壁面高所・低部、天井ぺり、天井中央、床、床下他) - - - - - - IfcAirTerminalのインスタンスの属性を設定。 - - - - - Pset_AirTerminalPHistory - Air terminal performance history common attributes. - - - IfcAirTerminal - - IfcAirTerminal - - - AirFlowRate - Volumetric flow rate. - - - - - Air Flow Rate - Débit d'air - 風量 - - - - Débit d'air volumique - 送風量 - - - - NeckAirVelocity - Air velocity at the neck. - - - - - Neck Air Velocity - Vitesse de l'air au point le plus étroit - ネック風速 - - - - Vitesse de l'air au point le plus étroit - ネックの風速 - - - - SupplyAirTemperatureHeating - Supply air temperature in heating mode. - - - - - Supply Air Temperature Heating - Température de l'air soufflé en chauffage - 暖房給気温度 - - - - Température de l'air soufflé en mode chauffage - 暖房時の給気温度 - - - - SupplyAirTemperatureCooling - Supply air temperature in cooling mode. - - - - - Supply Air Temperature Cooling - Température de l'air soufflé en refroidissement - 冷房給気温度 - - - - Température de l'air soufflé en mode refroidissement - 冷房時の給気温度 - - - - PressureDrop - Drop in total pressure between inlet and outlet at nominal air-flow rate. - - - - - Pressure Drop - Chute de pression - 圧力降下 - - - - Chute de pression totale entre l'entrée et la sortie en débit d'air nominal - 設定風量での入口/出口間の全圧降下 - - - - InductionRatio - Induction ratio versus distance from the diffuser and its discharge direction; induction ratio (or entrainment ratio) is the ratio of the volumetric flow rate in the jet to the volumetric flow rate at the air terminal. - - - - - - - - - - - - - Induction Ratio - Taux d'induction - 誘引率 - - - - Taux d'induction par rapport à la distance entre le diffuseur et sa direction de rejet; -Le taux d'induction est le rapport entre le débit volumique d'air dans le jet sur le débit volumique d'air au niveau du terminal. - 制気口からの距離とその排出方向に対する誘引比、 -誘導比(または同調比)は、エアターミナルでの体積流量に対する噴流の体積流量の比である。 - - - - CenterlineAirVelocity - Centerline air velocity versus distance from the diffuser and temperature differential; a function of distance from diffuser and temperature difference between supply air and room air. - - - - - - - - - - - - - Centerline Air Velocity - Vitesse de l'air en axe central de jet - 中心空気速度 - - - - Vitesse de l'air en axe central de jet par rapport à la distance entre le diffuseur et la température différentielle; une fonction de la distance entre le diffuseur et la différence de température entre celui de l'air fourni et celui de l'air de la pièce. - 吹出口かからの距離と温度差に対する中心速度、 -給気と室内空気の間の吹出口かからの距離と温度差の関数 - - - - - - エアターミナル性能履歴の共通属性を設定します。 - - - - - Pset_AirTerminalTypeCommon - Air terminal type common attributes. -SoundLevel attribute deleted in IFC2x2 Pset Addendum: Use IfcSoundProperties instead. - - - IfcAirTerminal - - IfcAirTerminal - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - Référence - 参照記号 - - - - Identification de référence pour ce type spécifique à ce projet, c'est-à-dire type'A-1', fourni à partir du moment où, s'il n'y a pas de référence de classification par rapport à un système de classification reconnu et en usage. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Etat - 状態 - - - - Etat de l'élément, utilisé avant tout pour les projets de rénovation et réaménagement. L'état assigné peut être "Nouveau" - l'élément prévu pour du neuf, "Existant" - l'élément existait et est maintenu, "Démoli" - l'élément existait mais doit être démoli/supprimé, "Provisoire" - l'élément existera à titre provisoire seulement (comme un support structurel par exemple). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - Shape - Shape of the air terminal. Slot is typically a long narrow supply device with an aspect ratio generally greater than 10 to 1. - - - - ROUND - RECTANGULAR - SQUARE - SLOT - OTHER - NOTKNOWN - UNSET - - - - ROUND - - Round - - - - - - - RECTANGULAR - - Rectangular - - - - - - - SQUARE - - Square - - - - - - - SLOT - - Slot - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Shape - Forme - 形状 - - - - Forme du terminal de ventilation. La fente est généralement un long et étroit appareil d'apport avec un rapport de forme généralement supérieur à 10 pour 1. - ターミナルの形状(円状、四角形、正方形、スロット他)。 スロット(溝状)は一般的にアスペクト比10以上が典型的である。 - - - - FaceType - Identifies how the terminal face of an AirTerminal is constructed. - - - - FOURWAYPATTERN - SINGLEDEFLECTION - DOUBLEDEFLECTION - SIGHTPROOF - EGGCRATE - PERFORATED - LOUVERED - OTHER - NOTKNOWN - UNSET - - - - FOURWAYPATTERN - - Fourway Pattern - - - - - - - SINGLEDEFLECTION - - Single Deflection - - - - - - - DOUBLEDEFLECTION - - Double Deflection - - - - - - - SIGHTPROOF - - Sight Proof - - - - - - - EGGCRATE - - Egg Crate - - - - - - - PERFORATED - - Perforated - - - - - - - LOUVERED - - Louvered - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Face Type - TypeCôté - 表面タイプ - - - - Caractérise comment le côté du terminal d'un terminal de ventilation est fabriqué. - ターミナル表面の形式定義 - - - - SlotWidth - Slot width. - - - - - - - Slot Width - EpaisseurFente - スロット巾 - - - - Epaisseur de la fente - スロット巾 - - - - SlotLength - Slot length. - - - - - - - Slot Length - ElongueurFente - スロット長 - - - - Longueur de la fente - スロット長 - - - - NumberOfSlots - Number of slots. - - - - - - - Number Of Slots - NombreDeFentes - スロット数 - - - - Nombre de fentes - スロット数 - - - - FlowPattern - Flow pattern. - - - - LINEARSINGLE - LINEARDOUBLE - LINEARFOURWAY - RADIAL - SWIRL - DISPLACMENT - COMPACTJET - OTHER - NOTKNOWN - UNSET - - - - LINEARSINGLE - - Linear Single - - - - - - - LINEARDOUBLE - - Linear Double - - - - - - - LINEARFOURWAY - - Linear Four-way - - - - - - - RADIAL - - Radial - - - - - - - SWIRL - - Swirl - - - - - - - DISPLACMENT - - Displacment - - - - - - - COMPACTJET - - Compact Jet - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Flow Pattern - FormeFlux - 流れ種類 - - - - Forme du flux - 流れ種類(単一直線、腹式直線、4方向、放射状、SWIRL、DISPLACEMENT、COMPACT他) - - - - AirFlowrateRange - Air flowrate range within which the air terminal is designed to operate. - - - - - - - Air Flowrate Range - PlageDébitVentilation - 流量範囲 - - - - Plage de débit de ventilation dans laquelle le terminal de ventilation est prévu de fonctionner. - 操作されるターミナル内の空気流の範囲 - - - - TemperatureRange - Temperature range within which the air terminal is designed to operate. - - - - - - - Temperature Range - PlageTemperature - 温度範囲 - - - - Plage de température dans laquelle le terminal de ventilation est prévu de fonctionner. - 操作されるターミナルの温度範囲 - - - - DischargeDirection - Discharge direction of the air terminal. - -Parallel: discharges parallel to mounting surface designed so that flow attaches to the surface. -Perpendicular: discharges away from mounting surface. -Adjustable: both parallel and perpendicular discharge. - - - - PARALLEL - PERPENDICULAR - ADJUSTABLE - OTHER - NOTKNOWN - UNSET - - - - PARALLEL - - Parallel - - - - - - - PERPENDICULAR - - Perpendicular - - - - - - - ADJUSTABLE - - Adjustable - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Discharge Direction - DirectionEmission - 吐き出し方向 - - - - Direction d'émission du terminal de ventilation. - -Parallèle: émission parallèle à la surface de fixation conçu de façon à ce que le flux se colle à la surface. -Perpendiculaire: émission s'éloignant de la surface de fixation. -Réglable: émission parallèle et aussi s'éloignant de la surface de fixation. - ターミナルの吐き出し方向 -水平:取り付け面と水平に吐き出し -垂直:取り付け面から離れた方向に吐き出し -調節可能:水平・垂直方向両方に調整 - - - - ThrowLength - The horizontal or vertical axial distance an airstream travels after leaving an AirTerminal before the maximum stream velocity is reduced to a specified terminal velocity under isothermal conditions at the upper value of the AirFlowrateRange. - - - - - - - Throw Length - Longueur de jet - 到達距離 - - - - La distance axiale horizontale ou verticale un jet d'air parcourt après avoir quitté un terminal de ventilation avant que la vittesse d'éjection maximale est réduite à une vitessedu terminal spécifique dans des conditions isothermes pour la valeur la plus élevée de la plage de débit d'air. - ターミナルからの水平または垂直の到達距離 -流量範囲の最大値での吐き出し速度が設定された流速に減速するまでの上限値 - - - - AirDiffusionPerformanceIndex - The Air Diffusion Performance Index (ADPI) is used for cooling mode conditions. If several measurements of air velocity and air temperature are made throughout the occupied zone of a space, the ADPI is the percentage of locations where measurements were taken that meet the specifications for effective draft temperature and air velocity. - - - - - - - Air Diffusion Performance Index - Indice de performance de diffusion de l'air - 空気拡散性能指標 - - - - L'Indice de Performance de Diffusion d'Air (ADPI) est utilisé pour des conditions en mode rafraîchissement. Si plusieurs mesures de vitesses et températures de l'air sont réalisées à travers toute une zone occupée d'un espace, l'ADPI est le pourcentage des emplacements où les mesures ont été réalisées et qui vérifient les caractéristiques pour une température de courant d'air et de vitesse d'air effectives. - 空気拡散性能指標(ADPI)は冷房時に使用される。 -空気速度および気温のいくつかの測定が空間の居住域の隅々でなされる場合、ADPIは有効な草案の温度および空気速度のための仕様に遭遇する測定が得られた位置の割合である。 - - - - FinishType - The type of finish for the air terminal. - - - - ANNODIZED - PAINTED - NONE - OTHER - NOTKNOWN - UNSET - - - - ANNODIZED - - Annodized - - - - - - - PAINTED - - Painted - - - - - - - NONE - - None - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Finish Type - TypeFinition - 仕上げ形式 - - - - Le type de finition du terminal de ventilation. - ターミナルの仕上げの形式(ANNODIZED,塗装他) - - - - FinishColor - The finish color for the air terminal. - - - - - - - Finish Color - CouleurFinition - 仕上げ色 - - - - La couleur de finition du terminal de ventilation. - ターミナルの仕上げ色 - - - - MountingType - The way the air terminal is mounted to the ceiling, wall, etc. - -Surface: mounted to the surface of something (e.g., wall, duct, etc.). -Flat flush: mounted flat and flush with a surface. -Lay-in: mounted in a lay-in type ceiling (e.g., a dropped ceiling grid). - - - - SURFACE - FLATFLUSH - LAYIN - OTHER - NOTKNOWN - UNSET - - - - SURFACE - - Surface - - - - - - - FLATFLUSH - - Flat Flush - - - - - - - LAYIN - - Layin - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Mounting Type - ModeFixation - 取り付け形式 - - - - La façon d'être fixé pour le terminal de ventilation au plafond, mur, etc. - -Surface: Fixé sur la surface de quelque chose (Ex: mur, conduit, etc.) -Alignement plat: Fixé plat et dans l'alignement d'une surface. -Insertion: Fixé dans un type de plafond avec capacité d'insertion (Ex: faux-plafondsuspendu) - ターミナルが天井や壁などに取り付けられる方法。 -表面、水平、LAYIN他 -表面:何か(壁・ダクト等)の表面に取り付け -FLATFLUSH:表面に水平・Flushni取り付け -LAYIN:天井にlay-in形式での取り付け(下がり天井格子など) - - - - CoreType - Identifies the way the core of the AirTerminal is constructed. - - - - SHUTTERBLADE - CURVEDBLADE - REMOVABLE - REVERSIBLE - NONE - OTHER - NOTKNOWN - UNSET - - - - SHUTTERBLADE - - Shutter Blade - - - - - - - CURVEDBLADE - - Curved Blade - - - - - - - REMOVABLE - - Removable - - - - - - - REVERSIBLE - - Reversible - - - - - - - NONE - - None - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Core Type - TypePartieCentrale - コア形式 - - - - Caractérise comment la partie centrale du terminal de ventilation est fabriquée. - 取り付けられたターミナルのコアの定義方法(SHUTTERBLADE, CURVEDBLADE, REMOVABLE, REVERSIBLEなど) - - - - CoreSetHorizontal - Degree of horizontal (in the X-axis of the LocalPlacement) blade set from the centerline. - - - - - - - Core Set Horizontal - PositionHorizontaleCentre - 水平羽根角度 - - - - Degré d'inclinaison horizontale (selon l'axe X par rapport au positionnement local) de la lame mesuré depuis la ligne médiane. - 水平翼の中心線からの水平(ローカル座標のX軸)面の羽根角度 - - - - CoreSetVertical - Degree of vertical (in the Y-axis of the LocalPlacement) blade set from the centerline. - - - - - - - Core Set Vertical - PositionVerticalCentre - 垂直羽根角度 - - - - Degré d'inclinaison verticale (selon l'axe Y par rapport au positionnement local) de la lame mesuré depuis la ligne médiane. - 垂直翼の中心線からの垂直(ローカル座標のY軸)方向の羽根角度 - - - - HasIntegralControl - If TRUE, a self powered temperature control is included in the AirTerminal. - - - - - - - Has Integral Control - PossèdeContrôleTotal - 自己制御有無 - - - - Si VRAI, une commande interne de la température est incluse dans le terminal de ventilation. - もし真なら、ターミナルに自身による温度制御が含まれる - - - - FlowControlType - Type of flow control element that may be included as a part of the construction of the air terminal. - - - - DAMPER - BELLOWS - NONE - OTHER - NOTKNOWN - UNSET - - - - DAMPER - - Damper - - - - - - - BELLOWS - - Bellows - - - - - - - NONE - - None - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Flow Control Type - NatureCommandeFlux - 流量制御形式 - - - - Nature de la commande de flux d'un élément qui pourrait être inclus en tant que tel dans le terminal de ventilation. - ターミナルの構成の一部として含まれる流量制御の形式 -(ダンパー、ベローズ、無し…) - - - - HasSoundAttenuator - If TRUE, the air terminal has sound attenuation. - - - - - - - Has Sound Attenuator - PossèdeCorrectionAcoustique - 消音有無 - - - - Si VRAI, le terminal de ventilation possède une correction acoustique. - ターミナルに消音が付いている場合に真 - - - - HasThermalInsulation - If TRUE, the air terminal has thermal insulation. - - - - - - - Has Thermal Insulation - PossèdeIsolationThermique - 断熱有無 - - - - Si VRAI, le terminal de ventilation possède une isolation thermique. - ターミナルに断熱がある場合に真 - - - - NeckArea - Neck area of the air terminal. - - - - - - - Neck Area - ZoneReduction - ネック面積 - - - - Partie la plus étroite du terminal de ventilation. - ターミナルのネック面積 - - - - EffectiveArea - Effective discharge area of the air terminal. - - - - - - - Effective Area - ZoneEfficace - 有効面積 - - - - Zone d'émission efficace du terminal de ventilation. - ターミナルの有効吹き出し範囲 - - - - AirFlowrateVersusFlowControlElement - Air flowrate versus flow control element position at nominal pressure drop. - - - - - - - - - - - - - Air Flowrate Versus Flow Control Element - DébitAirContreElementControleFlux - 流量制御特性 - - - - Débit d'air par rapport à la position de l'élément de contrôle du flux en perte de charge nominale - 標準の圧力低下における流量制御装置の位置に対する流量 - - - - - - エアターミナル型共通属性設定。 -SoundLevel属性はIFC2x2 psetの付録で削除された:IfcSoundPropertiesを代わりに使用します。 - - - - - Pset_AirToAirHeatRecoveryPHistory - Air to Air Heat Recovery performance history common attributes. - - - IfcAirToAirHeatRecovery - - IfcAirToAirHeatRecovery - - - SensibleEffectiveness - Sensible heat transfer effectiveness, where effectiveness is defined as the ratio of heat transfer to maximum possible heat transfer. - - - - - Sensible Effectiveness - EfficacitéSensible - 顕熱効率 - - - - Efficacité d'échange de chaleur sensible, où l'efficacité est définie par le rapport entre l'échange de chaleur effectif et l'échange maximum possible. - 顕熱効率 -効率は、最大可能熱交換に対する熱交換の比率で定義される - - - - TotalEffectiveness - Total heat transfer effectiveness: The ratio of heat transfer to the maximum possible heat transfer. - - - - - Total Effectiveness - Rendement thermique - 全熱効率 - - - - Rendement thermique: rapport entre la chaleur effective échangée et l'échange maximum possible. - 全熱効率 -最大可能熱交換に対する熱交換の比率 - - - - TemperatureEffectiveness - Temperature heat transfer effectiveness: The ratio of primary airflow temperature changes to maximum possible temperature changes. - - - - - Temperature Effectiveness - EfficacitéTempérature - 温度効率 - - - - Efficacité thermique sensible: rapport entre la différence de températures pour le flux primaire sur la différence maximale d'échange possible. - 温度熱交換効率: -最大可能温度変化に対する一次側温度変化の比 - - - - DefrostTemperatureEffectiveness - Temperature heat transfer effectiveness when defrosting is active. - - - - - Defrost Temperature Effectiveness - EfficacitéTemperatureDégel - デフロスト温度効率 - - - - Efficacité thermique sensible lorsque le mode dégel est actif - デフロスト作動時の温度熱交換効率 - - - - HumidityEffectiveness - Humidity heat transfer effectiveness: The ratio of primary airflow absolute humidity changes to maximum possible absolute humidity changes. - - - - - Humidity Effectiveness - EfficacitéLatente - 湿度効率 - - - - Efficacité sur transfert de chaleur latente: rapport entre difference de températures - 湿度熱交換効率: -最大可能絶対湿度変化に対する一次側絶対湿度変化の比 - - - - SensibleHeatTransferRate - Sensible heat transfer rate. - - - - - Sensible Heat Transfer Rate - PuissanceThermiqueSensible - 顕熱交換量 - - - - Puissance thermique sensible - 顕熱交換量 - - - - LatentHeatTransferRate - Latent heat transfer rate. - - - - - Latent Heat Transfer Rate - PuissanceThermiqueLatente - 潜熱交換量 - - - - Puissance thermique latente - 潜熱交換量 - - - - TotalHeatTransferRate - Total heat transfer rate. - - - - - Total Heat Transfer Rate - PuissanceThermiqueTotale - 全熱交換量 - - - - Puissance thermique totale - 全熱交換量 - - - - SensibleEffectivenessTable - Sensible heat transfer effectiveness curve as a function of the primary and secondary air flow rate. - - - - - Sensible Effectiveness Table - DiagrammeEfficacitéSensible - 顕熱効率テーブル - - - - Courbe d'efficacité d'échange thermique sensible, en tant que fonction du débit d'air au primaire et débit d'air au secondaire - 一次と二次空気量の関数としての顕熱交換効率曲線 - - - - TotalEffectivenessTable - Total heat transfer effectiveness curve as a function of the primary and secondary air flow rate. - - - - - Total Effectiveness Table - DiagrammeEfficacitéTotale - 全熱効率テーブル - - - - Courbe d'efficacité d'échange thermique total en tant que fonction du débit d'air au primaire et débit d'air au secondaire - 一次と二次空気量の関数としての全熱交換効率曲線 - - - - AirPressureDropCurves - Air pressure drop as function of air flow rate. - - - - - Air Pressure Drop Curves - CourbesPerteChargeAir - 空気圧力降下曲線 - - - - Perte de charge aéraulique fonction du débit d'air - 風量の関数としての空気圧力降下 - - - - - - 空気熱回収装置性能履歴共通属性。 - - - - - Pset_AirToAirHeatRecoveryTypeCommon - Air to Air Heat Recovery type common attributes. - - - IfcAirToAirHeatRecovery - - IfcAirToAirHeatRecovery - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - Référence - 参照記号 - - - - Identification de référence pour ce type spécifique à ce projet, c'est-à-dire type'A-1', fourni à partir du moment où, s'il n'y a pas de référence de classification par rapport à un système de classification reconnu et en usage. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Etat - 状態 - - - - Etat de l'élément, utilisé avant tout pour les projets de rénovation et réaménagement. L'état assigné peut être "Nouveau" - l'élément prévu pour du neuf, "Existant" - l'élément existait et est maintenu, "Démoli" - l'élément existait mais doit être démoli/supprimé, "Provisoire" - l'élément existera à titre provisoire seulement (comme un support structurel par exemple). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - HeatTransferTypeEnum - Type of heat transfer between the two air streams. - - - - SENSIBLE - LATENT - OTHER - NOTKNOWN - UNSET - - - - SENSIBLE - - Sensible - - - - - - - LATENT - - Latent - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Heat Transfer Type Enum - TypeEchangeChaleurEnum - 熱交換種類 - - - - Type de transfert de chaleur entre deux flux d'air. - 空気間の熱交換の種類(顕熱、潜熱…) - - - - HasDefrost - has the heat exchanger has defrost function or not. - - - - - - - Has Defrost - PossèdeDégel - デフロスト有無 - - - - Possède ou non une fonction dégel sur l'échangeur de chaleur - 熱交換器のデフロスト機能有無 - - - - OperationalTemperatureRange - Allowable operation ambient air temperature range. - - - - - - - Operational Temperature Range - PlageTempératureOpérationelle - 動作温度範囲 - - - - Opération admise sur la plage de température de l'air ambiant - 動作を許容する周囲温度の範囲 - - - - PrimaryAirflowRateRange - possible range of primary airflow that can be delivered.. - - - - - - - Primary Airflow Rate Range - PlageDébitAirPrimaire - 一次側風量範囲 - - - - Plage possible de débit d'air au primaire qui peut être fourni. - 一次側の送風可能範囲 - - - - SecondaryAirflowRateRange - possible range of secondary airflow that can be delivered. - - - - - - - Secondary Airflow Rate Range - PlageDébitAirSecondaire - 二次側風量範囲 - - - - Plage possible de débit d'air au secondaire qui peut être fourni. - 二次側の送風可能範囲 - - - - - - 空気熱回収タイプ共通属性。 - - - - - Pset_AlarmPHistory - Properties for history of alarm values. HISTORY: Added in IFC4. - - - IfcAlarm - - IfcAlarm - - - Enabled - Indicates whether alarm is enabled or disabled over time. - - - - - Enabled - - - - - - - Condition - Indicates alarm condition over time. The range of possible values and their meanings is defined by Pset_AlarmTypeCommon.Condition. An empty value indicates no present alarm condition. - - - - - Condition - - - - - - - Severity - Indicates alarm severity over time, where the scale of values is determined by the control system configuration. A zero value indicates no present alarm. - - - - - Severity - - - - - - - Acknowledge - Indicates acknowledgement status where False indicates acknowlegement is required and outstanding, True indicates condition has been acknowedged, and Unknown indicates no acknowledgement is required. Upon resetting the condition, then acknowledgement reverts to Unknown. - - - - - Acknowledge - - - - - - - User - Indicates acknowledging user over time by identification corresponding to IfcPerson.Identification on an IfcActor. - - - - - User - - - - - - - - - - - - - Pset_AlarmTypeCommon - Alarm type common attributes. HISTORY: Added in IFC4. - - - IfcAlarm - - IfcAlarm - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照記号 - 참조 ID - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 해당 프로젝트에서 사용이 유형에 대한 참조 ID (예 : 'A-1') ※ 기본이있는 경우 그 기호를 사용 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - Condition - Table mapping alarm condition identifiers to descriptive labels, which may be used for interpreting Pset_AlarmPHistory.Condition. - - - - - - - - - - - - - Condition - 条件 - - - - Pset_AlarmPHistory.Conditionで使用される、警報条件の識別子とラベル情報のマッピングを行う。 - - - - - - アラームタイプの共通属性。 - - - - - Pset_AnnotationContourLine - Specifies parameters of a standard curve that has a single, consistent measure value. - - - IfcAnnotation/ContourLine - - IfcAnnotation/ContourLine - - - ContourValue - Value of the elevation of the contour above or below a reference plane. - - - - - - - Contour Value - ValeurContour - 等高線値 - 등고선 값 - - - - Valeur de l'élévation du contour au dessus ou au dessous d'un plan de référence. - 参照平面に対する等高線の高さ値。 - 참조 평면에 대한 등고선의 높이 값. - - - - - - Définition de l'IAI : paramètres spécifiques à une courbe standard qui a une valeur simple et cohérente. - IfcAnnotation(注記)オブジェクトに関する標準の曲線に対する単一、同一の情報を設定するプロパティセット定義。GIS関連情報を扱う。 - - - - - Pset_AnnotationLineOfSight - Specifies the properties of the line of sight at a point of connection between two elements. Typically used to define the line of sight visibility at the junction between two roads (particularly between an access road and a public road). - - - IfcAnnotation/LineOfSight - - IfcAnnotation/LineOfSight - - - SetbackDistance - Setback distance from the point of connection on the major element along the axis of the minor element (e.g. distance from a public road at which the line of sigfht is measured. - - - - - - - Setback Distance - DistanceRecul - 後退距離 - - - - Distance de recul le long de l'axe de l'élément secondaire depuis le point de jonction sur l'élément principal (par exemple, distance depuis la route principale à partir de laquelle la visibilité est appréciée). - 副要素の軸に沿った主要素の接続点からの後退距離(例えば、可視線が測定される公道からの距離)。 - - - - VisibleAngleLeft - Angle of visibility to the left of the access. - - - - - - - Visible Angle Left - VisibiliteAngleGauche - 左側可視角度 - - - - Angle de visibilité à la gauche de l'accès. - 左側の経路に可視出来る角度。 - - - - VisibleAngleRight - Angle of visibility to the right of the access. - - - - - - - Visible Angle Right - VisibiliteAngleDroit - 右側可視角度 - - - - Angle de visibilité à la droite de l'accès. - 右側の経路に可視出来る角度。 - - - - RoadVisibleDistanceLeft - Distance visible to the left of the access. - - - - - - - Road Visible Distance Left - DistanceVisibiliteCoteGauche - 左側道路可視距離 - - - - Distance de visibilité à la gauche de l'accès. - 左側の経路に可視出来る距離。 - - - - RoadVisibleDistanceRight - Distance visible to the right of the access. - - - - - - - Road Visible Distance Right - DistanceVisibiliteCoteDroit - 右側道路可視距離 - - - - Distance de visibilité à la droite de l'accès. - 右側の経路に可視出来る距離。 - - - - - - Définition de l'IAI : spécifie les propriétés du point de vue à un point de jonction entre deux éléments. Par exemple, visibilité à la jonction entre deux routes (notamment entre un chemin d'accès et une route principale). - 二つの要素間の接続点での視線を設定する指定プロパティ。一般的に、2つの道路の間(特に公道と取付け道路(区画道路)との間)の接合部で可視線を定義するために使用される。 - - - - - Pset_AnnotationSurveyArea - Specifies particular properties of survey methods to be assigned to survey point set or resulting surface patches - - - IfcAnnotation/SurveyArea - - IfcAnnotation/SurveyArea - - - AcquisitionMethod - The means by which survey data was acquired. - - - - GPS - LASERSCAN_AIRBORNE - LASERSCAN_GROUND - SONAR - THEODOLITE - USERDEFINED - NOTKNOWN - UNSET - - - - GPS - - GPS - - - - - - - LASERSCAN_AIRBORNE - - Laserscan Airborne - - - - - - - LASERSCAN_GROUND - - Laserscan Ground - - - - - - - SONAR - - Sonar - - - - - - - THEODOLITE - - Theodolite - - - - - - - USERDEFINED - - Userdefined - - - - - - - NOTKNOWN - - Notknown - - - - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Acquisition Method - MethodeAcquisition - - - - La méthode utilisée pour effectuer le relevé. - - - - AccuracyQualityObtained - A measure of the accuracy quality of survey points as obtained expressed in percentage terms. - - - - - - - Accuracy Quality Obtained - PrecisionObtenue - - - - Mesure de la précision obtenue des points de relevé, exprimée en pourcentage. - - - - AccuracyQualityExpected - A measure of the accuracy quality of survey points as expected expressed in percentage terms. - - - - - - - Accuracy Quality Expected - PrecisionAttendue - - - - Mesure de la précision attendue des points de relevé, exprimée en pourcentage. - - - - - - Définition de l'IAI : spécifie des propriétés particulières de méthodes de relevé à relier à des ensembles de points de relevé ou aux surfaces résultant de ce relevé. - - - - - Pset_Asset - An asset is a uniquely identifiable element which has a financial value and against which maintenance actions are recorded. - - - IfcAsset - - IfcAsset - - - AssetAccountingType - Identifies the predefined types of risk from which the type required may be set. - - - - FIXED - NONFIXED - OTHER - NOTKNOWN - UNSET - - - - FIXED - - Fixed - - - - - - - NONFIXED - - Non Fixed - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Asset Accounting Type - 資産会計種別 - - - - 会計の定義済み種別。 - - - - AssetTaxType - Identifies the predefined types of taxation group from which the type required may be set. - - - - CAPITALISED - EXPENSED - OTHER - NOTKNOWN - UNSET - - - - CAPITALISED - - Capitalised - - - - - - - EXPENSED - - Expensed - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Asset Tax Type - 資産税種別 - - - - 税の定義済み種別。 - - - - AssetInsuranceType - Identifies the predefined types of insurance rating from which the type required may be set. - - - - PERSONAL - REAL - OTHER - NOTKNOWN - UNSET - - - - PERSONAL - - Personal - - - - - - - REAL - - Real - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Asset Insurance Type - 資産保険種別 - - - - 保険の定義済み種別。 - - - - - - 資産とは、維持管理活動が記録されている会計上の価値を持つ、単独に識別できる要素。 - - - - - Pset_AudioVisualAppliancePHistory - Captures realtime information for audio-video devices, such as for security camera footage and retail information displays. HISTORY: Added in IFC4. - - - IfcAudioVisualAppliance - - IfcAudioVisualAppliance - - - PowerState - Indicates the power state of the device where True is on and False is off. - - - - - Power State - 電源状態 - - - - 機器の電源オンオフの時間ごとの状態を示す。 - - - - MediaSource - Indicates the media source where the identifier corresponds to an entry within the table of available media sources on Pset_AudioVisualApplianceTypeCommon.MediaSource. - - - - - Media Source - - - - - - - MediaContent - Indicates the media content storage location, such as URLs to camera footage within particular time periods. - - - - - Media Content - - - - - - - AudioVolume - Indicates the audio volume level where the integer level corresponds to an entry or interpolation within Pset_AudioVisualApplianceTypeCommon.AudioVolume. - - - - - Audio Volume - - - - - - - - - オーディオビジュアル機器のリアルタイム情報の把握のためのプロパティセット。たとえばセキュリティカメラの画像情報インデックスや音量設定など。IFC4にて追加。 - - - - - Pset_AudioVisualApplianceTypeAmplifier - An audio-visual amplifier is a device that renders audio from a single external source connected from a port. HISTORY: Added in IFC4. - - - IfcAudioVisualAppliance/AMPLIFIER - - IfcAudioVisualAppliance/AMPLIFIER - - - AmplifierType - Indicates the type of amplifier. - - - - FIXED - VARIABLE - OTHER - NOTKNOWN - UNSET. - - - - FIXED - - Fixed - - - - - - - VARIABLE - - Variable - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET. - - Unset. - - - - - - - - - - Amplifier Type - アンプ形式 - 앰프 형식 - - - - アンプの形式を示す。 - 앰프의 형식을 보여준다. - - - - AudioAmplification - Indicates audio amplification frequency ranges. - - - - - - - - - - - - - Audio Amplification - オーディオアンプ - 오디오 앰프 - - - - 再生周波数帯域を示す。 - 재생 주파수 대역을 나타낸다. - - - - AudioMode - Indicates audio sound modes and corresponding labels, if applicable. - - - - - - - - - - - - - Audio Mode - オーディオモード - 오디오 모드 - - - - オーディオサウンドモードの設定。 - 오디오 사운드 모드 설정. - - - - - - ポートに接続された外部ソースからの音源を増幅する装置。 - - - - - Pset_AudioVisualApplianceTypeCamera - An audio-visual camera is a device that captures video, such as for security. HISTORY: Added in IFC4. - - - IfcAudioVisualAppliance/CAMERA - - IfcAudioVisualAppliance/CAMERA - - - CameraType - Indicates the type of camera. - - - - PHOTO - VIDEO - AUDIOVIDEO - OTHER - NOTKNOWN - UNSET. - - - - PHOTO - - Photo - - - - - - - VIDEO - - Video - - - - - - - AUDIOVIDEO - - Audio/Video - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET. - - Unset. - - - - - - - - - - Camera Type - カメラ形式 - 카메라 형식 - - - - カメラの形式を示す。 - 카메라의 형식을 보여준다. - - - - IsOutdoors - Indicates if camera is designed to be used outdoors. - - - - - - - Is Outdoors - 屋外対応の可否 - 실외 여부 - - - - 屋外利用が可能かどうかを示す。 - 옥외 이용이 가능한지 여부를 나타냅니다. - - - - VideoResolutionWidth - Indicates the number of horizontal pixels (the largest native video resolution width). - - - - - - - Video Resolution Width - 水平解像度 - 수평 해상도 - - - - 水平方向のピクセル数。 - 가로 픽셀 수입니다. - - - - VideoResolutionHeight - Indicates the number of vertical pixels (the largest native video resolution height). - - - - - - - Video Resolution Height - 垂直解像度 - 수직 해상도 - - - - 垂直方向のピクセル数。 - 세로 픽셀 수. - - - - VideoResolutionMode - Indicates video resolution modes. - - - - - - - - - - - - - Video Resolution Mode - ビデオ解像度モード - 비디오 해상도 모드 - - - - ビデオ解像度モードを示す。 - 비디오 해상도를 보여준다. - - - - VideoCaptureInterval - Indicates video frame capture time intervals. - - - - - - - - - - - - - Video Capture Interval - 撮影間隔 - - - - 撮影間隔を示す。 - - - - PanTiltZoomPreset - Indicates pan/tilt/zoom position presets. - - - - - - - - - - - - - Pan Tilt Zoom Preset - パン・チルト・ズーム初期設定 - - - - パン・チルト・ズーム機能の初期設定。 - - - - PanHorizontal - Indicates horizontal range for panning. - - - - - - - Pan Horizontal - パン水平方向可動範囲 - - - - 水平方向の可動範囲を示す。 - - - - PanVertical - Indicates vertical range for panning. - - - - - - - Pan Vertical - パン垂直方向可動範囲 - - - - 垂直方向の可動範囲を示す。 - - - - TiltHorizontal - Indicates horizontal range for pivoting, where positive values indicate the camera rotating clockwise, - - - - - - - Tilt Horizontal - チルト水平方向可動角度 - - - - チルト水平の可動角度を示す。 - - - - TiltVertical - Indicates vertical range for pivoting, where 0.0 is level, +90 degrees is looking up, -90 degrees is looking down. - - - - - - - Tilt Vertical - チルト垂直方向可動角度 - - - - チルト垂直の可動角度を示す。 - - - - Zoom - Indicates the zoom range. - - - - - - - Zoom - ズーム - - - - ズーム可能範囲(倍率)を示す。 - - - - - - セキュリティシステム向けの映像を撮影する装置。 - - - - - Pset_AudioVisualApplianceTypeCommon - An audio-visual appliance is a device that renders or captures audio and/or video. HISTORY: Added in IFC4. - - - IfcAudioVisualAppliance - - IfcAudioVisualAppliance - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照 - 참조 - - - - 当該プロジェクトで定義する形式の参照ID(例:A-1)、承認された分類に存在しないときに使用される。 - 해당 프로젝트에 정의된 형식의 참조 ID (예 : A-1) 승인된 분류에 존재하지 않을 때 사용된다. - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - 전원 상태 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - 현재 전원 상태를 나타냄 - - - - MediaSource - Indicates media sources and corresponding names of ports (IfcDistributionPort with FlowDirection=SINK and PredefinedType=AUDIOVISUAL) or aggregated audio/video components (IfcAudioVisualAppliance). - - - - - - - - - - - - - Media Source - メディアソース - 미디어 소스 - - - - メディアソースと定義済みタイプ(IfcDistributionPort with FlowDirection=SINK and PredefinedType=AUDIOVISUAL)及びaudio/videoを構成する集合に対応する名前。 - 미디어 소스 정의된 유형 (IfcDistributionPort with FlowDirection = SINK and PredefinedType = AUDIOVISUAL) 및 audio / video 구성 집합에 해당하는 이름. - - - - AudioVolume - Indicates discrete audio volume levels and corresponding sound power offsets, if applicable. Missing values may be interpolated. - - - - - - - - - - - - - Audio Volume - - - - - - - - - 音響と映像を撮影・録音し放送送出する機器。 - - - - - Pset_AudioVisualApplianceTypeDisplay - An audio-visual display is a device that renders video from a screen. HISTORY: Added in IFC4. - - - IfcAudioVisualAppliance/DISPLAY - - IfcAudioVisualAppliance/DISPLAY - - - DisplayType - Indicates the type of display. - - - - CRT - DLP - LCD - LED - PLASMA - OTHER - NOTKNOWN - UNSET. - - - - CRT - Cathode Ray Tube - - CRT - - - - - - - DLP - - DLP - - - Digital light projection - - - - LCD - Liquid Crystal Diode - - LCD - - - - - - - LED - LIght Emitting Diode - - LED - - - - - - - PLASMA - - Plasma - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET. - - Unset. - - - - - - - - - - Display Type - 画面種類 - 화면 유형 - - - - 画面の種類を示す。 - 화면 종류를 나타낸다 - - - - NominalSize - Indicates the diagonal screen size. - - - - - - - Nominal Size - 画面公称サイズ - 화면 공칭 크기 - - - - 画面の対角線サイズを示す。 - 화면의 대각선 크기를 나타낸다. - - - - DisplayWidth - Indicates the physical width of the screen (only the display surface). - - - - - - - Display Width - 画面幅 - 화면 폭 - - - - 画面の幅を示す。 - 화면 너비를 보여준다 - - - - DisplayHeight - Indicates the physical height of the screen (only the display surface). - - - - - - - Display Height - 画面高さ - 화면 높이 - - - - 画面の高さを示す。 - 화면의 높이를 나타낸다 - - - - Brightness - Indicates the display brightness. - - - - - - - Brightness - 明るさ - 밝기 - - - - 明るさ示す。 - 밝기 보여준다 - - - - ContrastRatio - Indicates the display contrast ratio. - - - - - - - Contrast Ratio - コントラスト比 - 명암비 - - - - コントラスト比を示す。 - 명암비를 보여준다 - - - - RefreshRate - Indicates the display refresh frequency. - - - - - - - Refresh Rate - リフレッシュレート - 재생 - - - - リフレッシュレート周波数範囲を示す。 - 빈도 재생 빈도 주파수 범위를 나타낸다. - - - - TouchScreen - Indicates touchscreen support. - - - - SINGLETOUCH - MULTITOUCH - NONE - OTHER - NOTKNOWN - UNSET - - - - SINGLETOUCH - - Single Touch - - - - - - - MULTITOUCH - - Multi Touch - - - - - - - NONE - - None - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Touch Screen - タッチスクリーン - 터치 스크린 - - - - タッチスクリーンのサポートを示す。 - 터치 스크린 지원을 보여준다 - - - - VideoResolutionWidth - Indicates the number of horizontal pixels, e.g. 1920. - - - - - - - Video Resolution Width - 水平解像度 - 수평 해상도 - - - - 水平方向のピクセル数を示す。 - 가로 픽셀 수를 나타낸다. - - - - VideoResolutionHeight - Indicates the number of vertical pixels, e.g. 1080. - - - - - - - Video Resolution Height - 垂直解像度 - 수직 해상도 - - - - 垂直方向のピクセル数を示す。 - 수직 픽셀 수를 나타낸다. - - - - VideoResolutionMode - Indicates video resolution modes. - - - - - - - - - - - - - Video Resolution Mode - 解像度モード - 디스플레이 모드 - - - - 解像度モードを示す。 - 해상도를 보여준다 - - - - VideoScaleMode - Indicates video scaling modes. - - - - - - - - - - - - - Video Scale Mode - ビデオスケールモード - 비디오 스케일 모드 - - - - ビデオスケーリングモードを示す。 - 비디오 크기 조정 모드를 나타낸다. - - - - VideoCaptionMode - Indicates video closed captioning modes. - - - - - - - - - - - - - Video Caption Mode - ビデオキャプションモード - 비디오 캡션 모드 - - - - クローズドキャプションモードを示す。(字幕機能) - 자막 모드를 나타낸다. (자막 기능) - - - - AudioMode - Indicates audio sound modes and corresponding labels, if applicable. - - - - - - - - - - - - - Audio Mode - オーディオモード - 오디오 모드 - - - - オーディオサウンドモードの設定。 - 오디오 사운드 모드 설정. - - - - - - 画面からビデオ映像を送出する機器。 - - - - - Pset_AudioVisualApplianceTypePlayer - An audio-visual player is a device that plays stored media into a stream of audio and/or video, such as camera footage in security systems, background audio in retail areas, or media presentations in conference rooms or theatres. HISTORY: Added in IFC4. - - - IfcAudioVisualAppliance/PLAYER - - IfcAudioVisualAppliance/PLAYER - - - PlayerType - Indicates the type of player. - - - - AUDIO - VIDEO - OTHER - NOTKNOWN - UNSET. - - - - AUDIO - - Audio - - - - - - - VIDEO - - Video - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET. - - Unset. - - - - - - - - - - Player Type - プレイヤー形式 - 플레이어 형식 - - - - 再生可能な形式を示す。 - 재생 가능한 형식을 보여준다. - - - - PlayerMediaEject - Indicates whether the media can be ejected from the player (if physical media). - - - - - - - Player Media Eject - メディア取り出し可否 - 미디어 꺼내기 여부 - - - - メディアを取り出すことができるかどうかを示す。 - 미디어를 꺼낼 수 있는지 여부를 나타낸다. - - - - PlayerMediaFormat - Indicates supported media formats. - - - - - - - - - - - - - Player Media Format - メディアフォーマット - 미디어 포맷 - - - - サポートされているメディアのフォーマットを示す。 - 지원되는 미디어 형식을 보여준다. - - - - - - セキュリティーシステムのカメラや店舗などのBGMシステム、または劇場や会議室ないのプレゼンテーションシステムのような収容された音響映像信号を表示・放送する装置。 - - - - - Pset_AudioVisualApplianceTypeProjector - An audio-visual projector is a device that projects video to a surface. HISTORY: Added in IFC4. - - - IfcAudioVisualAppliance/PROJECTOR - - IfcAudioVisualAppliance/PROJECTOR - - - ProjectorType - Indicates the type of projector. - - - - OTHER - NOTKNOWN - UNSET. - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET. - - Unset. - - - - - - - - - - Projector Type - プロジェクター形式 - 프로젝터 형식 - - - - プロジェクタの形式を示す。 - 프로젝터의 형식을 보여준다. - - - - VideoResolutionWidth - Indicates the number of horizontal pixels (the largest native video resolution width). - - - - - - - Video Resolution Width - 水平解像度 - 수평 해상도 - - - - 水平方向のピクセル数を示す。 - 가로 픽셀 수를 나타낸다. - - - - VideoResolutionHeight - Indicates the number of vertical pixels (the largest native video resolution height). - - - - - - - Video Resolution Height - 垂直解像度 - 수직 해상도 - - - - 垂直方向のピクセル数を示す。 - 세로 픽셀 수를 나타낸다. - - - - VideoResolutionMode - Indicates video resolution modes. - - - - - - - - - - - - - Video Resolution Mode - 解像度モード - 디스플레이 모드 - - - - 解像度モードを示す。 - 모드해상도를 보여준다 - - - - VideoScaleMode - Indicates video scaling modes. - - - - - - - - - - - - - Video Scale Mode - ビデオスケールモード - 비디오 스케일 - - - - ビデオスケーリングモードを示す。 - 비디오 크기 조정모드를 나타낸다. - - - - VideoCaptionMode - Indicates closed captioning modes. - - - - - - - - - - - - - Video Caption Mode - ビデオキャプションモード - 비디오 캡쳐모드 - - - - クローズドキャプションモードを示す。(字幕機能) - 자막 모드를 나타낸다.(자막 기능) - - - - - - 画面にビデオ映像を投影する装置。 - - - - - Pset_AudioVisualApplianceTypeReceiver - An audio-visual receiver is a device that switches audio and/or video from multiple sources, including external sources connected from ports and internal aggregated sources. HISTORY: Added in IFC4. - - - IfcAudioVisualAppliance/RECEIVER - - IfcAudioVisualAppliance/RECEIVER - - - ReceiverType - Indicates the type of receiver. - - - - AUDIO - AUDIOVIDEO - OTHER - NOTKNOWN - UNSET. - - - - AUDIO - - Audio - - - - - - - AUDIOVIDEO - - Audio/Video - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET. - - Unset. - - - - - - - - - - Receiver Type - 受信機形式 - 수신기 형식 - - - - 受信機の形式を示す。 - 수신기의 형식을 보여준다. - - - - AudioAmplification - Indicates audio amplification frequency ranges. - - - - - - - - - - - - - Audio Amplification - オーディオアンプ - 오디오 앰프 - - - - 再生周波数帯域を示す。 - 재생 주파수 대역을 나타낸다. - - - - AudioMode - Indicates audio sound modes and corresponding labels, if applicable. - - - - - - - - - - - - - Audio Mode - オーディオモード - 오디오 모드 - - - - オーディオサウンドモードの設定。 - 오디오 사운드 모드 설정. - - - - - - 内部や外部に接続された音源を含む複数の情報から、音響と映像信号を切り替える装置。 - - - - - Pset_AudioVisualApplianceTypeSpeaker - An audio-visual speaker is a device that converts amplified audio signals into sound waves. HISTORY: Added in IFC4. - - - IfcAudioVisualAppliance/SPEAKER - - IfcAudioVisualAppliance/SPEAKER - - - SpeakerType - Indicates the type of speaker. - - - - FULLRANGE - MIDRANGE - WOOFER - TWEETER - COAXIAL - OTHER - NOTKNOWN - UNSET. - - - - FULLRANGE - - Full Range - - - - - - - MIDRANGE - - Mid Range - - - - - - - WOOFER - - Woofer - - - - - - - TWEETER - - Tweeter - - - - - - - COAXIAL - - Coaxial - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET. - - Unset. - - - - - - - - - - Speaker Type - スピーカータイプ - 스피커 타입 - - - - スピーカーのタイプを示す。 - 스피커의 타입을 나타낸다. - - - - SpeakerMounting - Indicates how the speaker is designed to be mounted. - - - - FREESTANDING - CEILING - WALL - OUTDOOR - OTHER - NOTKNOWN - UNSET. - - - - FREESTANDING - - Freestanding - - - - - - - CEILING - - Ceiling - - - - - - - WALL - - Wall - - - - - - - OUTDOOR - - Outdoor - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET. - - Unset. - - - - - - - - - - Speaker Mounting - 取付可能方法 - 설치 가능 방법 - - - - 取付可能な方法を示す。 - 붙일 수있는 방법을 보여준다. - - - - SpeakerDriverSize - Indicates the number of drivers and their sizes. - - - - - - - - - - - - - Speaker Driver Size - スピーカードライバサイズ - 스피커 드라이버 - - - - ドライバユニットと数を示す。 - 드라이버 유닛과 수를 나타낸다 - - - - FrequencyResponse - Indicates the output over a specified range of frequencies. - - - - - - - - - - - - - Frequency Response - 周波数応答 - 주파수 응답 - - - - 周波数範囲での出力を示す。 - 주파수 범위에서 출력을 보여준다. - - - - Impedence - Indicates the speaker impedence. - - - - - - - Impedence - インピーダンス値 - 임피던스 - - - - インピーダンス値を示す。 - 임피던스 값을 나타낸다. - - - - - - 音響信号を音波に変換する装置。 - - - - - Pset_AudioVisualApplianceTypeTuner - An audio-visual tuner is a device that demodulates a signal into a stream of audio and/or video. HISTORY: Added in IFC4. - - - IfcAudioVisualAppliance/TUNER - - IfcAudioVisualAppliance/TUNER - - - TunerType - Indicates the tuner type. - - - - AUDIO - VIDEO - OTHER - NOTKNOWN - UNSET. - - - - AUDIO - - Audio - - - - - - - VIDEO - - Video - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET. - - Unset. - - - - - - - - - - Tuner Type - チューナータイプ - 튜너 타입 - - - - チューナータイプを示す。 - 튜너 타입을 나타낸다 - - - - TunerMode - Indicates the tuner modes (or bands). For example, 'AnalogCable', 'DigitalAir', 'AM', 'FM'. - - - - - - - - - - - - - Tuner Mode - チューナーモード - 튜너 모드 - - - - 受信可能な放送モードを示す。 - 수신 가능한 방송 모드를 나타낸다. - - - - TunerChannel - Indicates the tuner channels, if applicable. - - - - - - - - - - - - - Tuner Channel - チューナーチャンネル - 튜너 채널 선택 - - - - 設定可能なチャンネルを示す。 - 가능한 채널을 보여준다. - - - - TunerFrequency - Indicates the tuner frequencies, if applicable. - - - - - - - Tuner Frequency - 周波数 - 주파수 대응 - - - - 対応周波数帯を示す。 - 주파수 대역을 나타낸다. - - - - - - 音響と映像の信号を変換する装置。 - - - - - Pset_BeamCommon - Properties common to the definition of all occurrence and type objects of beam. - - - IfcBeam - - IfcBeam - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as "construction type". It should be provided as an alternative to the name of the "object type", if the software does not support object types. - - - - - - - Bauteiltyp - Reference - Reference - 参照記号 - 参考号 - - - Bezeichnung zur Zusammenfassung gleichartiger Bauteile zu einem Bauteiltyp (auch Konstruktionstyp genannt). Alternativ zum Namen des "Typobjekts", insbesondere wenn die Software keine Typen unterstützt. - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1") pour désigner un "type de construction". Une alternative au nom d'un objet type lorsque les objets types ne sont pas gérés par le logiciel. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 若未采用已知的分类系统,则该属性为该项目中该类型构件的参考编号(例如,类型A-1)。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Status - Statut - 状態 - - - Status bzw. Phase des Bauteils insbesondere beim Bauen im Bestand. "Neu" (new) neues Bauteil als Ergänzung, "Bestand" (existing) bestehendes Bauteil, dass erhalten bleibt, "Abbruch" (demolish) Bauteil, das abgebrochen wird, "Temporär" (temporary) Bauteil und andere Bauelemente, die vorübergehend eingebaut werden (wie Abstützungen, etc.) - - Statut de l'élément, principalement utilisé dans les projets de rénovation et de réhabilitation. Le statut a pour valeur NOUVEAU pour un nouvel élément, EXISTANT pour un élément existant qui est conservé, DEMOLI pour un élément existant à démolir et TEMPORAIRE pour un élément temporaire (comme une structure support provisoire). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - Span - Clear span for this object. - -The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. For geometry editing applications, like CAD: this value should be write-only. - - - - - - - Spannweite - Span - PorteeLibre - 全長 - 跨度 - - - Lichte Spannweite des Balkens für die statische Anforderung, - -Dieser Parameter wird zusätzlich zur geometrischen Repräsentation bereitgestellt. Im Fall der Inkonsistenz zwischen dem Parameter und der Geometrie hat die geometrische Repräsention Priorität. Dieser Parameter ist für CAD Software write-only. - - Portée libre de la poutre. Cette propriété est donnée en complément de la représentation de la forme et des paramètres géométriques qui la déterminent. En cas d'incohérence entre ces paramètres géométriques et cette propriété, ce sont les paramètres géométriques qui priment. Les applications qui déterminent la géométrie comme les logiciels de CAO ne doivent pas autoriser la modification de cette propriété. - このオブジェクトの全長。 - -その形状(オブジェクトの全長)情報は、表示のための形状に内部で使用される幾何学的パラメータを加えて提供される。形状情報と内部の幾何学的パラメータに矛盾が生じた場合は、幾何学的パラメータが優先される。幾何学的パラメ-タ編集アプリケーションでは、CADと同様に、この値は書き込み専用とする。 - 该对象的净跨度。 -该属性所提供的形状信息是对内部形状描述和几何参数的补充。如果几何参数与该属性所提供的形状属性不符,应以几何参数为准。对CAD等几何编辑程序,该属性应为只写类型。 - - - - Slope - Slope angle - relative to horizontal (0.0 degrees). - -The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. For geometry editing applications, like CAD: this value should be write-only. - - - - - - - Neigungswinkel - Slope - Inclinaison - 傾斜 - 坡度 - - - Neigungswinkel des Balkens relative zur Horizontalen (0 Grad). - -Dieser Parameter wird zusätzlich zur geometrischen Repräsentation bereitgestellt. Im Fall der Inkonsistenz zwischen dem Parameter und der Geometrie hat die geometrische Repräsention Priorität. Dieser Parameter ist für CAD Software write-only. - - Angle d'inclinaison avec l'horizontale (0 degrés). Cette propriété est donnée en complément de la représentation de la forme et des paramètres géométriques qui la déterminent. En cas d'incohérence entre ces paramètres géométriques et cette propriété, ce sont les paramètres géométriques qui priment. Les applications qui déterminent la géométrie comme les logiciels de CAO ne doivent pas autoriser la modification de cette propriété - 傾斜角度。水平を0度とする。 - -その形状(傾斜梁)情報は、表示のための形状に内部で使用される幾何学的パラメータを加えて提供される。形状情報と内部の幾何学的パラメータに矛盾が生じた場合は、幾何学的パラメータが優先される。幾何学的パラメ-タ編集アプリケーションでは、CADと同様に、この値は書き込み専用とする。 - 相对于水平(0.0度)方向的坡度角。 -该属性所提供的形状信息是对内部形状描述和几何参数的补充。如果几何参数与该属性所提供的形状属性不符,应以几何参数为准。对CAD等几何编辑程序,该属性应为只写类型。 - - - - Roll - Rotation against the longitudinal axis - relative to the global Z direction for all beams that are non-vertical in regard to the global coordinate system (Profile direction equals global Z is Roll = 0.) - -The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. For geometry editing applications, like CAD: this value should be write-only. - -Note: new property in IFC4 - - - - - - - Kippwinkel - Roll - RotationAutourAxeLongitudinal - 回転 - 转角 - - - Kippwinkel des Balkens relative zur Vertikalen (O Grad). - -Dieser Parameter wird zusätzlich zur geometrischen Repräsentation bereitgestellt. Im Fall der Inkonsistenz zwischen dem Parameter und der Geometrie hat die geometrische Repräsention Priorität. Dieser Parameter ist für CAD Software write-only. - - Rotation autour de l'axe longitudinal - relativement à l'axe Z pour toutes les poutres qui ne sont pas verticales relativement au repère absolu (la direction du profil est celle de l'axe Z si la valeur de la propriété est 0). Cette propriété est donnée en complément de la représentation de la forme de l'élément et des paramètres géométriques qui la déterminent. En cas d'incohérence entre ces paramètres géométriques et cette propriété, ce sont les paramètres géométriques qui priment. Les applications qui déterminent la géométrie comme les logiciels de CAO ne doivent pas autoriser la modification de cette propriété. Note : nouvelle propriété de la version IFC2x4. - 梁の材軸に対する回転。 --この材軸はグローバル座標系で非垂直な全ての梁に対してグローバルZ方向へ相対する。(表示方向は、グローバルZの回転方向を0とする。) - -その形状(梁の回転)情報は、表示のための形状に内部で使用される幾何学的パラメータを加えて提供される。形状情報と内部の幾何学的パラメータに矛盾が生じた場合は、幾何学的パラメータが優先される。幾何学的パラメ-タ編集アプリケーションでは、CADと同様に、この値は書き込み専用とする。 - -注:IFC2x4の新しいプロパティ - 相对于纵轴的旋转角。对全局坐标系中的非垂直梁,该属性为相对于Z轴的角度。(若轮廓方向在Z轴上,则转角为0。) -该属性所提供的形状信息是对内部形状描述和几何参数的补充。如果几何参数与该属性所提供的形状属性不符,应以几何参数为准。对CAD等几何编辑程序,该属性应为只写类型。 -注:IFC2x4新添属性 - - - - IsExternal - Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building. - - - - - - - Außenbauteil - Is External - EstExterieur - 外部区分 - 是否外部构件 - - - Angabe, ob dieses Bauteil ein Aussenbauteil ist (JA) oder ein Innenbauteil (NEIN). Als Aussenbauteil grenzt es an den Aussenraum (oder Erdreich, oder Wasser). - - Indique si l'élément est conçu pour être utilisé à l'extérieur (VRAI) ou non (FAUX). Si VRAI, c'est un élément extérieur qui donne sur l'extérieur du bâtiment. - 外部の部材かどうかを示すブーリアン値。もしTRUEの場合、外部の部材で建物の外側に面している。 - 表示该图元是否设计为外部构件。若是,则该图元为外部图元,朝向建筑物的外部。 - - - - ThermalTransmittance - Thermal transmittance coefficient (U-Value) of the element. Here the total thermal transmittance coefficient through the beam within the direction of the thermal flow (including all materials). - -Note: new property in IFC4 - - - - - - - U-Wert - Thermal Transmittance - TransmissionThermique - 熱貫流率 - 导热系数 - - - Wärmedurchgangskoeffizient (U-Wert) der Materialschichten. -Hier der Gesamtwärmedurchgangskoeffizient des Balkens (in Richtung des Wärmeflusses), angegeben ohne den inneren und äußeren Wärmeübergangswiderstand. - - Coefficient de transmission thermique surfacique (U). C'est le coefficient global de transmission thermique à travers la poutre dans la direction du flux thermique (tous matériaux inclus). Nouvelle propriété de la version 2x4. - 熱貫流率U値。 -ここでは(すべての材料を含む)梁を通した熱移動の方向における全体の熱還流率を示す。 -注:IFC2x4の新しいプロパティ - 材料的导热系数(U值)。 - -表示该梁在传热方向上的整体导热系数(包括所有材料)。 - -注:IFC2x4新添属性 - - - - LoadBearing - Indicates whether the object is intended to carry loads (TRUE) or not (FALSE). - - - - - - - Tragendes Bauteil - Load Bearing - Porteur - 耐力部材 - 是否承重 - - - Angabe, ob dieses Bauteil tragend ist (JA) oder nichttragend (NEIN) - - Indique si l'objet est censé porter des charges (VRAI) ou non (FAUX). - 荷重に関係している部材かどうかを示すブーリアン値。 - 表示该对象是否需要承重。 - - - - FireRating - Fire rating for the element. It is given according to the national fire safety classification. - - - - - - - Feuerwiderstandsklasse - Fire Rating - ResistanceAuFeu - 耐火等級 - 防火等级 - - - Feuerwiderstandasklasse gemäß der nationalen oder regionalen Brandschutzverordnung. - - Classement au feu de l'élément donné selon la classification nationale de sécurité incendie. - 主要な耐火等級。関連する建築基準法、消防法などの国家基準を参照。 - 该构件的防火等级。 -该属性的依据为国家防火安全分级。 - - - - - - Définition de l'IAI : propriétés communes à la définition de toutes les instances de la classe IfcBeam - IfcBeam(梁)オブジェクトに関する共通プロパティセット定義。 - 所有IfcBeam实例的定义中通用的属性。 - - - - - Pset_BoilerPHistory - Boiler performance history common attributes. -WaterQuality attribute deleted in IFC2x2 Pset Addendum: Use IfcWaterProperties instead. CombustionProductsMaximulLoad and CombustionProductsPartialLoad attributes deleted in IFC2x2 Pset Addendum: Use IfcProductsOfCombustionProperties instead. - - - IfcBoiler - - IfcBoiler - - - EnergySourceConsumption - Energy consumption. - - - - - Energy Source Consumption - ConsommationSourceEnergie. - エネルギ消費量 - - - - Consommation d'énergie. - エネルギ消費量 - - - - OperationalEfficiency - Operational efficiency: boiler output divided by total energy input (electrical and fuel). - - - - - Operational Efficiency - EfficacitéOpérationnelle - 運転効率 - - - - Efficacité opérationnelle: production de la chaudière divisée par l'apport total d'énergie (électrique et combustible). - 運転効率: -全入力エネルギ(電力または燃料)でボイラ出力を割る - - - - CombustionEfficiency - Combustion efficiency under nominal condition. - - - - - Combustion Efficiency - EfficacitéCombustion - 燃焼効率 - - - - Efficacité de la combustion sous conditions nominales. - 設計条件での燃焼効率 - - - - WorkingPressure - Boiler working pressure. - - - - - Working Pressure - PressionFonctionnement - 作動圧力 - - - - Pression de fonctionnement de la chaudière. - ボイラ運転圧力 - - - - CombustionTemperature - Average combustion chamber temperature. - - - - - Combustion Temperature - TempératureCombustion - 燃焼温度 - - - - Température de combustion moyenne au foyer. - 燃焼室平均温度 - - - - PartLoadRatio - Ratio of the real to the nominal capacity. - - - - - Part Load Ratio - Taux de charge - 部分負荷比 - - - - Ratio entre capacité effective et capacité nominale - 設計容量との比 - - - - Load - Boiler real load. - - - - - Load - Charge - 負荷 - - - - Charge effective de la chaudière. - ボイラ実負荷 - - - - PrimaryEnergyConsumption - Boiler primary energy source consumption (i.e., the fuel consumed for changing the thermodynamic state of the fluid). - - - - - Primary Energy Consumption - ConsommationEnergiePrimaire - 一次エネルギ消費量 - - - - Consommation d'énergie primaire de la chaudière(c'est-à-dire le combustible consommé pour le changement d'état thermodynamique du fluide). - ボイラ一次エネルギ消費量(つまり流体の熱力学状態変更のために消費された燃料) - - - - AuxiliaryEnergyConsumption - Boiler secondary energy source consumption (i.e., the electricity consumed by electrical devices such as fans and pumps). - - - - - Auxiliary Energy Consumption - ConsommationEnergieAuxiliaire - 補助エネルギ消費量 - - - - Consommation d'énergie secondaire de la chaudière(c'est-à-dire l'électricité consommée pour les équipements électriques tels que ventilateurs et circulateurs). - ボイラ補助エネルギ消費量(つまりファンおよびポンプのような電気装置によって消費される電気) - - - - - - ボイラ性能履歴共通属性: -WaterQuality(水質属性)はIFC2x2Psetの付録で削除された:代わりにIfcWaterPropertiesを使う。 -CombustionProductsMaximulLoad と CombustionProductsPartialLoadはIFC2x2Psetの付録で削除された:代わりにIfcProductsOfCombustionPropertiesを使う - - - - - Pset_BoilerTypeCommon - Boiler type common attributes. -SoundLevel attribute deleted in IFC2x2 Pset Addendum: Use IfcSoundProperties instead. PrimaryEnergySource and AuxiliaryEnergySource attributes deleted in IFC2x2 Pset Addendum: Use IfcEnergyProperties, IfcFuelProperties, etc. instead. - - - IfcBoiler - - IfcBoiler - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - Référence - 参照記号 - - - - Identification de référence pour ce type spécifique à ce projet, c'est-à-dire type'A-1', fourni à partir du moment où, s'il n'y a pas de référence de classification par rapport à un système de classification reconnu et en usage. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Etat - 状態 - - - - Etat de l'élément, utilisé avant tout pour les projets de rénovation et réaménagement. L'état assigné peut être "Nouveau" - l'élément prévu pour du neuf, "Existant" - l'élément existait et est maintenu, "Démoli" - l'élément existait mais doit être démoli/supprimé, "Provisoire" - l'élément existera à titre provisoire seulement (comme un support structurel par exemple). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - PressureRating - Nominal pressure rating of the boiler as rated by the agency having jurisdiction. - - - - - - - Pressure Rating - PressionAdmissibleNominale - 常用圧力 - - - - Pression nominale admissible de la chaudière comme classée par l'organisme qui fait autorité. - 管轄組織により設定されたボイラの常用圧力 - - - - OperatingMode - Identifies the operating mode of the boiler. - - - - FIXED - TWOSTEP - MODULATING - OTHER - NOTKNOWN - UNSET - - - - FIXED - - Fixed - - - - - - - TWOSTEP - - Two Step - - - - - - - MODULATING - - Modulating - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Operating Mode - ModeFonctionnement - 動作モード - - - - Identifie le mode de fonctionnement de la chaudière. - ボイラの動作モードのID (固定、2段階、比例...) - - - - HeatTransferSurfaceArea - Total heat transfer area of the vessel. - - - - - - - Heat Transfer Surface Area - SurfaceEchangeChaleur - 伝熱面積 - - - - Surface totale d'échange de chaleur du foyer - 容器の伝熱部面積の合計 - - - - NominalPartLoadRatio - Allowable part load ratio range. - - - - - - - Nominal Part Load Ratio - PlageNominaleChargePartielle - 設計部分負荷比率 - - - - Plage de charge partielle admissible - 許容部分負荷比範囲 - - - - WaterInletTemperatureRange - Allowable water inlet temperature range. - - - - - - - Water Inlet Temperature Range - PlageTempératureAlimentationEau - 入口水温範囲 - - - - Plage de température de l'alimentation en eau admissible - 入口水温範囲 - - - - WaterStorageCapacity - Water storage capacity. - - - - - - - Water Storage Capacity - CapacitéRéservoirEau - 缶内水量 - - - - Capacité de réserve en eau - 缶内水量 - - - - IsWaterStorageHeater - This is used to identify if the boiler has storage capacity (TRUE). If FALSE, then there is no storage capacity built into the boiler, such as an instantaneous hot water heater. - - - - - - - Is Water Storage Heater - AvoirChauffeEau - 給湯タンク有無 - - - - Utilisé pour identifier si la chaudière une capacité de réserve en eau (VRAI). Si FAUX, alors il n'y a pas de capacité de réserve intégrée dans la chaudière, tel qu'un chauffe-eau instantané. - 給湯用の缶体があればTRUE、(瞬間湯沸かし器のように)ボイラにタンクがなければFALSE - - - - PartialLoadEfficiencyCurves - Boiler efficiency as a function of the partial load factor; E = f (partialLaodfactor). - - - - - - - - - - - - - Partial Load Efficiency Curves - CourbesEfficacitéChargePartielle - 部分負荷効率曲線 - - - - Rendement de la chaudière en fonction de la facteur de charge partielle; E= f(FacteurChargePartielle). - 部分負荷係数の関数としてのボイラ効率  E=f(部分負荷率) - - - - OutletTemperatureRange - Allowable outlet temperature of either the water or the steam. - - - - - - - Outlet Temperature Range - PlageTempératureSortie - 出口温度範囲 - - - - Température admissible de sortie de l'eau ou de la vapeur - 水または蒸気のどちらかの許容出口温度 - - - - NominalEnergyConsumption - Nominal fuel consumption rate required to produce the total boiler heat output. - - - - - - - Nominal Energy Consumption - Consommation nominale d'energie - 設計エネルギー消費量 - - - - Consommation nominale de combustible correspondant à la production nominale totale de la chaudière. - ボイラ最大能力時の設計燃料消費量 - - - - EnergySource - Enumeration defining the energy source or fuel cumbusted to generate heat. - - - - COAL - COAL_PULVERIZED - ELECTRICITY - GAS - OIL - PROPANE - WOOD - WOOD_CHIP - WOOD_PELLET - WOOD_PULVERIZED - OTHER - NOTKNOWN - UNSET - - - - COAL - - Coal - - - - - - - COAL_PULVERIZED - - Coal Pulverized - - - - - - - ELECTRICITY - - Electricity - - - - - - - GAS - - Gas - - - - - - - OIL - - Oil - - - - - - - PROPANE - - Propane - - - - - - - WOOD - - Wood - - - - - - - WOOD_CHIP - - Wood Chip - - - - - - - WOOD_PELLET - - Wood Pellet - - - - - - - WOOD_PULVERIZED - - Wood Pulverized - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Energy Source - SourceEnergie - エネルギ種別 - - - - Liste définissant les sources d'énergie ou combustibles pour générer la chaleur. - 加熱に使用する燃料のエネルギ種類 (石炭、石炭粉末、電気、ガス、油、プロパン、木材、木材チップ、木材ペレット、木粉、他) - - - - - - ボイラ型共通属性を設定します。 -SoundLevel属性はIFC2x2 psetの付録で削除された:IfcSoundPropertiesを代わりに使用します。 -一次エネルギ源と補助エネルギ源属性はIFC2x2 psetの付録で削除された:IfcEnergyProperties,IfcFuelProperties等を代わりに使用 - - - - - Pset_BoilerTypeSteam - Steam boiler type common attributes. - - - IfcBoiler/STEAM - - IfcBoiler/STEAM - - - MaximumOutletPressure - Maximum steam outlet pressure. - - - - - - - Maximum Outlet Pressure - PressionSortieAdmissible - 最大出口圧力 - - - - Pression vapeur en sortie maximale - 最大出口蒸気圧力 - - - - NominalEfficiency - The nominal efficiency of the boiler as defined by the manufacturer. For steam boilers, a function of inlet temperature versus steam pressure. Note: as two variables are used, DefiningValues and DefinedValues are null, and values are stored in IfcTable in the following order: InletTemperature(IfcThermodynamicTemperatureMeasure) and OutletTemperature(IfcThermodynamicTemperatureMeasure) in DefiningValues, and NominalEfficiency(IfcNormalisedRatioMeasure) in DefinedValues. For example, DefininfValues(InletTemp, OutletTemp), DefinedValues(null, NominalEfficiency). The IfcTable is related to IfcPropertyTableValue using IfcMetric and IfcPropertyConstraintRelationship. - - - - - - - - - - - - - Nominal Efficiency - EfficacitéNominale - - - - Efficacité nominale de la chaudière tel que définie par le constructeur. -Pour les chaudières à vapeur, une fonction de la température en entrée par rapport à la pression de vapeur. -Remarque: Comme deux variables sont utilisées ValeurDefinir et ValeursDefinies sont nulles, et les valeurs sont enregistrées dans IfcTable dans l'ordre suivant: -- TempératureEntrée (IfcThermodynamicTemperatureMeasure) et TempératureSortie (IfcThermodynamicTemperatureMeasure) dans ValeursDefinir , et EfficacitéNominale (IfcNormalisedRatioMeasure) dansValeursDefinies. -Par exemple, ValeursDefinir (TempératureEntrée, TempératureSortie), ValeursDefinies (nul, RendementNominal). -IfcTable est lié à IfcPropertyTableValue qui utilise IfcMetric et IfcPropertyConstraintRelationship. - - - - HeatOutput - Total nominal heat output as listed by the Boiler manufacturer. For steam boilers, it is a function of inlet temperature versus steam pressure. Note: as two variables are used, DefiningValues and DefinedValues are null, and values are stored in IfcTable in the following order: InletTemperature(IfcThermodynamicTemperatureMeasure) and OutletTemperature(IfcThermodynamicTemperatureMeasure) in DefiningValues, and HeatOutput(IfcEnergyMeasure) in DefinedValues. For example, DefiningValues(InletTemp, OutletTemp), DefinedValues(null, HeatOutput). The IfcTable is related to IfcPropertyTableValue using IfcMetric and IfcPropertyConstraintRelationship. - - - - - - - - - - - - - Heat Output - RendementChaleur - - - - Rendement total nominal tel que défini par le constructeur de chaudière. -Pour les chaudières à vapeur, une fonction de la température en entrée par rapport à la pression de vapeur. -Remarque: Comme deux variables sont utilisées ValeurDefinir et ValeursDefinies sont nulles, et les valeurs sont enregistrées dans IfcTable dans l'ordre suivant: -- TempératureEntrée (IfcThermodynamicTemperatureMeasure) et TempératureSortie (IfcThermodynamicTemperatureMeasure) dans ValeursDefinir , et Rendement de chaleur (IfcEnergyMeasure) dansValeursDefinies. -Par exemple, ValeursDefinir (TempératureEntrée, TempératureSortie), ValeursDefinies (nul, RendementChaleur). -IfcPropertyTable est lié à IfcMetric qui utilise IfcMetric et IfcPropertyConstraintRelationship. - - - - - - 蒸気ボイラタイプ共通属性 - - - - - Pset_BoilerTypeWater - Water boiler type common attributes. - - - IfcBoiler/WATER - - IfcBoiler/WATER - - - NominalEfficiency - The nominal efficiency of the boiler as defined by the manufacturer. For water boilers, a function of inlet versus outlet temperature. Note: as two variables are used, DefiningValues and DefinedValues are null, and values are stored in IfcTable in the following order: InletTemperature(IfcThermodynamicTemperatureMeasure), OutletTemperature(IfcThermodynamicTemperatureMeasure), NominalEfficiency(IfcNormalizedRatioMeasure). The IfcTable is related to IfcPropertyTableValue using IfcMetric and IfcPropertyConstraintRelationship. - - - - - - - - - - - - - Nominal Efficiency - EfficacitéNominale - - - - Efficacité nominale de la chaudière tel que définie par le constructeur. -Pour les chaudières à eau chaude, une fonction de la température en entrée par rapport à la température de sortie. -Remarque: Comme deux variables sont utilisées ValeurDefinir et ValeursDefinies sont nulles, et les valeurs sont enregistrées dans IfcTable dans l'ordre suivant: -- TempératureEntrée (IfcThermodynamicTemperatureMeasure) et TempératureSortie (IfcThermodynamicTemperatureMeasure) dans ValeursDefinir , et EfficacitéNominale (IfcNormalisedRatioMeasure) dansValeursDefinies. -IfcTable est lié à IfcPropertyTableValue qui utilise IfcMetric et IfcPropertyConstraintRelationship. - - - - HeatOutput - Total nominal heat output as listed by the Boiler manufacturer. For water boilers, it is a function of inlet versus outlet temperature. For steam boilers, it is a function of inlet temperature versus steam pressure. Note: as two variables are used, DefiningValues and DefinedValues are null, and values are stored in IfcTable in the following order: InletTemperature(IfcThermodynamicTemperatureMeasure), OutletTemperature(IfcThermodynamicTemperatureMeasure), HeatOutput(IfcEnergyMeasure). The IfcTable is related to IfcPropertyTableValue using IfcMetric and IfcPropertyConstraintRelationship. - - - - - - - - - - - - - Heat Output - RendementChaleur - - - - Rendement total nominal tel que défini par le constructeur de chaudière. -Pour les chaudières à eau chaude, une fonction de la température en entrée par rapport à la température de sortie. -Remarque: Comme deux variables sont utilisées ValeurDefinir et ValeursDefinies sont nulles, et les valeurs sont enregistrées dans IfcTable dans l'ordre suivant: -- TempératureEntrée (IfcThermodynamicTemperatureMeasure) et TempératureSortie (IfcThermodynamicTemperatureMeasure) dans ValeursDefinir , et Rendement de chaleur (IfcEnergyMeasure) dansValeursDefinies. -IfcPropertyTable est lié à IfcMetric qui utilise IfcMetric et IfcPropertyConstraintRelationship. - - - - - - - - - - Pset_BuildingCommon - Properties common to the definition of all instances of IfcBuilding. Please note that several building attributes are handled directly at the IfcBuilding instance, the building number (or short name) by IfcBuilding.Name, the building name (or long name) by IfcBuilding.LongName, and the description (or comments) by IfcBuilding.Description. Actual building quantities, like building perimeter, building area and building volume are provided by IfcElementQuantity, and the building classification according to national building code by IfcClassificationReference. - - - IfcBuilding - - IfcBuilding - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). Used to store the non-classification driven internal project type. - - - - - - - Referenz ID - Reference - Reference - 参照記号 - 참조 ID - - - Identifikator der projektinternen Referenz für dieses Gebäude, z.B. nach der Gebäudelassifizierung des Bauherrn. Wird verwendet, wenn keine allgemein anerkanntes Klassifizierungssystem angewandt wird. - - Référence à l'identifiant d'un type spécifié dans le contexte de ce projet (exemple : "type A1"). A fournir s'il n'y a pas de référence à une classification en usage. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 이 프로젝트의 참조 ID (예 : A-1). 분류 코드가 아닌 내부에서 사용되는 프로젝트 형식으로 사용됩니다. - - - - BuildingID - A unique identifier assigned to a building. A temporary identifier is initially assigned at the time of making a planning application. This temporary identifier is changed to a permanent identifier when the building is registered into a statutory buildings and properties database. - - - - - - - Gebäudekennzeichen - Building ID - IdBatiment - 建物記号 - 건물 ID - - - Gebäudekennzeichen dieses Gebäudes. Während der Baueingabe ist es das temporäre Kennzeichnen des Bauantrags. - - Un identifiant unique attribué au bâtiment. Un identifiant temporaire est attribué au moment de la programmation. Il est ensuite remplacé par un identifiant permanent lorsque le bâtiment est enregistré dans une base de données de nature règlementaire. - 建物に付与されるユニークな識別子。計画要請の際に使用される初期の一時的な識別子。この一時的な識別子は、建物が正式に登録された際に恒久的な識別子へと変更される。 - 건물에 부여되는 고유 식별자이다. 계획 요청시 사용되는 초기 임시 식별자이다. 이 임시 식별자는 건물이 정식으로 등록된 경우에 영구적인 식별자로 변경된다. - - - - IsPermanentID - Indicates whether the identity assigned to a building is permanent (= TRUE) or temporary (=FALSE). - - - - - - - Gebäudekennzeichen permanent - Is Permanent ID - IdPermanent - 永久ID区分 - 영구 ID 구분 - - - Angabe, on das angegebene Gebäudekennzeichen permanent ist (TRUE), oder eine temporäre Antragsnummer (FALSE). - - Indique si l'identifiant attribuée au bâtiment est permanent (=VRAI) ou temporaire (=FAUX). - 建物IDが恒久的なIDかどうかのブーリアン値。 - 건물 ID가 영구적인 ID 여부값 - - - - ConstructionMethod - The type of construction action to the building, the project deals with, e.g. new construction, renovation, refurbishment, etc. - - - - - - - Art der Ausführung - Construction Method - RisqueIncendieUsagePrincipal - 工事種別 - 공사 종류 - - - Wesentliche Art der Projektausführung (Neubau, Umbau, Ertüchtigung, etc.) - - Le type d'intervention sur le bâtiment : construction neuve, rénovation, réhabilitation, etc. - 工事におけるタイプ。例:新築・リノベーション・改装等。 - 공사의 유형. 예 : 신축 리노베이션 · 개장 등. - - - - FireProtectionClass - Main fire protection class for the building which is assigned from the fire protection classification table as given by the relevant national building code. - - - - - - - Gebäudeklasse Brandschutz - Fire Protection Class - RisqueIncendieUsageSecondaire - 耐火等級 - 방화 등급 - - - Zugewiesene Gebäudeklasse nach der nationalen Brandschutzverordnung. - - Classe principale de protection contre le risque incendie, selon la réglementation nationale. - 主要な防火等級。関連する建築基準法、消防法などの国家基準を参照。 - 주요 방화 등급. 관련 건축 기준법, 소방법 등의 국가 표준을 참조하십시오. - - - - SprinklerProtection - Indication whether this object is sprinkler protected (TRUE) or not (FALSE). - - - - - - - Sprinklerschutz - Sprinkler Protection - ProtectionParSprinkler - スプリンクラー防御 - 스프링 클러 방어 - - - Angabe, ob das Gebäude durch eine Sprinkleranlage geschützt wird (WAHR) oder nicht (FALSCH). - - Indication selon laquelle ce bâtiment bénéficie d'une protection par sprinkler (VRAI) ou non (FAUX). - スプリンクラー設備の有無を示すブーリアン値。 - 스프링 클러 설비의 유무를 나타내는 값 - - - - SprinklerProtectionAutomatic - Indication whether this object has an automatic sprinkler protection (TRUE) or not (FALSE). - - - - - - - Sprinklerschutz automatisch - Sprinkler Protection Automatic - ProtectionAutomatiqueParSprinkler - スプリンクラー防御自動区分 - 스프링 클러 방어 자동 구분 - - - Angabe, ob das Gebäude durch eine automatische Sprinkleranlage geschützt wird (WAHR) oder nicht (FALSCH). - - Indication selon laquelle ce bâtiment bénéficie d'une protection automatique par sprinkler (VRAI) ou non (FAUX). - スプリンクラー設備が自動かどうか示すブーリアン値。 - 스프링 클러 설비가 자동 여부를 나타내는 값 - - - - OccupancyType - Occupancy type for this object. -It is defined according to the presiding national building code. - - - - - - - Nutzungsart - Occupancy Type - TypeOccupation - 占有者タイプ - 점유자 유형 - - - Hauptnutzungsart des Gebäudes (Schulbau. Kaufhaus, etc.). Wird verwendet, wenn keine allgemein anerkanntes Klassifizierungssystem angewandt wird. - - Type d'occupation. Est défini selon le Code National en vigueur. - 占有者のタイプ。建築基準法に準拠。 - 점령 자의 유형. 건축 기준법을 준수합니다. - - - - GrossPlannedArea - Total planned gross area for the building Used for programming the building. - - - - - - - Bruttofläche nach Raumprogramm - Gross Planned Area - Surface programmée brute - 計画グロス面積 - 계획 그로스 면적 - - - Geforderte Bruttofläche des Gebäudes laut Raumprogramm. - - Surface programmée brute totale du bâtiment. Telle que définie lors de la programmation. - 計画されたグロス面積。建物計画に際に使用。 - 계획된 그로스 면적. 건물 계획시 사용됩니다. - - - - NetPlannedArea - Total planned net area for the building Used for programming the building. - - - - - - - Nettofläche nach Raumprogramm - Net Planned Area - Surface programmée nette - 計画ネット面積 - - - Geforderte Nettofläche des Gebäudes laut Raumprogramm. - - Surface programmée nette totale du bâtiment. Telle que définie lors de la programmation. - 計画されたネット面積。建物計画に際に使用。(通常は、柱型等を抜いた面積となる) - - - - NumberOfStoreys - The number of storeys within a building. -Captured for those cases where the IfcBuildingStorey entity is not used. Note that if IfcBuilingStorey is asserted and the number of storeys in a building can be determined from it, then this approach should be used in preference to setting a property for the number of storeys. - - - - - - - Geschossanzahl - Number Of Storeys - NombreNiveaux - 階数 - 층 수 - - - Anzahl der Vollgeschosse des Gebäudes. - -Dieses Attribute soll nur dann eingefügt werden, wenn keine Geschosse als Objekte, IfcBuildingStorey, beinhaltet sind. Bei Unstimmigkeiten hat die Anzahl der IfcBuildingStorey Objekte Priorität. - - Le nombre de niveaux dans un bâtiment, à indiquer lorsque la classe IfcBuildingStorey n'est pas utilisée. Il est préférable de créer des instances d'IfcBuildingStorey et d'en déduire le nombre de niveaux plutôt que de saisir cette propriété. - 建物階の数。IfcBuildingStoreyの数とは関係なく扱う。 - 건물 층 수. IfcBuildingStorey 수와 관계없이 취급한다. - - - - YearOfConstruction - Year of construction of this building, including expected year of completion. - - - - - - - Baujahr - Year Of Construction - AnneeConstruction - 施工年 - 시공 년 - - - Jahr der Errichtung des Gebäudes, einschließliich des Jahres der geplanten Fertigstellung. - - Année de construction de ce bâtiment, incluant l'année de parfait achèvement. - 施工の年。竣工の予想年も含む。 - 시공 년. 준공 예정 년 포함한다. - - - - YearOfLastRefurbishment - Year of last major refurbishment, or reconstruction, of the building (applies to reconstruction works). - - - - - - - letztes Renovierungsjahr - Year Of Last Refurbishment - Année de la dernière rénovation - - - Jahr der letzten Renovierung des Gebäudes. - - Année de la dernière rénovation majeure ou de la reconstruction du bâtiment. - - - - IsLandmarked - This builing is listed as a historic building (TRUE), or not (FALSE), or unknown. - - - - - - - Denkmalschutz - Is Landmarked - ClasseMonumentHistorique - ランドマーク区分 - 랜드마크 구분 - - - Angabe, ob das Gebäude dem Denkmalschutz unterliegt (WAHR) oder nicht (FALSCH). - - Indique si le bâtiment est classé aux monuments historiques (VRAI) ou non (FAUX), ou si l'information n'est pas connue. - この建物は歴史的な建物かどうかを示すブーリアン値。 - 이 건물은 역사적인 건물 있는지 여부를 나타내는 값 - - - - - Property Set Definition in German - - Définition de l'IAI : propriétés communes à la définition de toutes les instances de la classe IfcBuilding. Veuillez noter que plusieurs attributs sont portés directement par l'instance IfcBuilding : le numéro du bâtiment ou nom court (IfcBuilding.Name), le nom ou nom long (IfcBuilding.LongName), et la description ou des commentaires (IfcBuilding.Description). Les quantités réelles du site comme le périmètre, la superficie et le volume du bâtiment sont fournis par des instances de IfcElementQuantity, et la référence à une classification nationale par IfcClassificationReference. - IfcBuildingオブジェクトに関する共通プロパティセット定義。建物ナンバーはIfcBuilding.Name、建物名称はIfcBuilding.LondName、そして記述またはコメントはIfcBuilding.Descriptionで設定する。実際の建物に関する数量、例えば建物周囲長、建物面積、建物体積等はIfcElementQuantityで設定する。また、建築基準法の建物分類に関しては、IfcClassificationReferenceで設定する。 - - - - - Pset_BuildingElementProxyCommon - Properties common to the definition of all instances of IfcBuildingElementProxy. - - - IfcBuildingElementProxy - - IfcBuildingElementProxy - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as "construction type". It should be provided as an alternative to the name of the "object type", if the software does not support object types. - - - - - - - Bauteiltyp - Reference - Référence - 参照記号 - 参考号 - - - Bezeichnung zur Zusammenfassung gleichartiger Bauteile zu einem Bauteiltyp (auch Konstruktionstyp genannt). Alternativ zum Namen des "Typobjekts", insbesondere wenn die Software keine Typen unterstützt. - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1") pour désigner un "type de construction". Une alternative au nom d'un objet type lorsque les objets types ne sont pas gérés par le logiciel. - 認識された分類体系で参照する分類がない場合にこのプロジェクト固有の参照記号(例:タイプ'A-1')が与えられる。 - 若未采用已知的分类系统,则该属性为该项目中该类型构件的参考编号(例如,类型A-1)。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Status - Statut - 状態 - - - Status bzw. Phase des Bauteils insbesondere beim Bauen im Bestand. "Neu" (new) neues Bauteil als Ergänzung, "Bestand" (existing) bestehendes Bauteil, dass erhalten bleibt, "Abbruch" (demolish) Bauteil, das abgebrochen wird, "Temporär" (temporary) Bauteil und andere Bauelemente, die vorübergehend eingebaut werden (wie Abstützungen, etc.) - - Statut de l'élément, principalement utilisé dans les projets de rénovation et de réhabilitation. Le statut a pour valeur NOUVEAU pour un nouvel élément, EXISTANT pour un élément existant qui est conservé, DEMOLI pour un élément existant à démolir et TEMPORAIRE pour un élément temporaire (comme une structure support provisoire). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - IsExternal - Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building. - - - - - - - Außenbauteil - Is External - Est extérieur - 外部区分 - 是否外部构件 - - - Angabe, ob dieses Bauteil ein Aussenbauteil ist (JA) oder ein Innenbauteil (NEIN). Als Aussenbauteil grenzt es an den Aussenraum (oder Erdreich, oder Wasser). - - Indique si l'élément est conçu pour être utilisé à l'extérieur (VRAI) ou non (FAUX). Si VRAI, c'est un élément extérieur qui donne sur l'extérieur du bâtiment. - 外部の部材かどうかを示すブーリアン値。もしTRUEの場合、外部の部材で建物の外側に面している。 - 表示该图元是否设计为外部构件。若是,则该图元为外部图元,朝向建筑物的外部。 - - - - ThermalTransmittance - Thermal transmittance coefficient (U-Value) of the element. It is the total thermal transmittance coefficient through the building element proxy within the direction of the thermal flow (including all materials). - -Note: new property in IFC4 - - - - - - - U-Wert - Thermal Transmittance - Transmission thermique surfacique - 熱貫流率 - 导热系数 - - - Wärmedurchgangskoeffizient (U-Wert) der Materialschichten. Angegeben wird der Gesamtwärmedurchgangskoeffizient des Proxy-Elements (in Richtung des Wärmeflusses), ohne den inneren und äußeren Wärmeübergangswiderstand. - - Coefficient de transmission thermique surfacique (U). C'est le coefficient global de transmission thermique à travers l'élément dans la direction du flux thermique (tous matériaux inclus). Nouvelle propriété de la version 2x4. - 熱貫流率U値。ここではオブジェクトを通した熱移動の方向における全体の熱還流率を示す。 - 材料的导热系数(U值)。 -表示该烟囱在传热方向上的整体导热系数(包括所有材料)。 -注:IFC2x4新添属性 - - - - LoadBearing - Indicates whether the object is intended to carry loads (TRUE) or not (FALSE). - - - - - - - Tragendes Bauteil - Load Bearing - Porteur - 耐力部材 - 是否承重 - - - Angabe, ob dieses Bauteil tragend ist (JA) oder nichttragend (NEIN) - - Indique si l'objet est censé porter des charges (VRAI) ou non (FAUX). - 荷重に関係している部材かどうかを示すブーリアン値。 - 表示该对象是否需要承重。 - - - - FireRating - Fire rating for the element. -It is given according to the national fire safety classification. - - - - - - - Feuerwiderstandsklasse - Fire Rating - Résistance au feu - 耐火等級 - 防火等级 - - - Feuerwiderstandasklasse gemäß der nationalen oder regionalen Brandschutzverordnung. - - Classement au feu de l'élément donné selon la classification nationale de sécurité incendie. - 主要な耐火等級。関連する建築基準法、消防法などの国家基準を参照。 - 该构件的防火等级。 -该属性的依据为国家防火安全分级。 - - - - - - IfcBuildingElementProxyの共通プロパティ情報を定義。明確なオブジェクトタイプが特定できないオブジェクトは、このIfcBuildingElementProxyオブジェクトで表現する。所謂代理(プロキシ)オブジェクト。 - 所有IfcBuildingElementProxy实例的定义中通用的属性。 - - - - - Pset_BuildingElementProxyProvisionForVoid - Properties common to the definition of a provision for void as a special type of an instance of IfcBuildingElementProxy. A provision for void is a spatial provision that might be resolved into a void in a building element. The properties carry requested values. - - - IfcBuildingElementProxy/PROVISIONFORVOID - - IfcBuildingElementProxy/PROVISIONFORVOID - - - Shape - The shape form of the provision for void, the minimum set of agreed values includes 'Rectangle', 'Round', and 'Undefined'. - - - - - - - Form - Shape - Forme - 形状 - 形状 - - - Anforderung an die Form des Durchbruchs, vordefinierte Werte sind "Rechteck", "Rund", und "Nicht definiert". - - La forme de la réservation. L'ensemble des valeurs autorisées contient au moins "Rectangle", "Round" et "Undefined". - 空間の形状を定義します。少なくとも「四角形」、「円」、「未定義」の値を含みます。 - 空构件的形状,当前得到认可的值至少包括“矩形”、“圆形”及“未定义”。 - - - - Width - The requested width (horizontal extension in elevation) of the provision for void, only provided if the Shape property is set to "rectangle". - - - - - - - Breite - Width - Largeur - - 宽度 - - - Geforderte Breite des Durchbruchs, wird nur dann angegeben, wenn der Wert des Attributes "Form" gleich "Rechteck" ist. - - La largeur requise de la réservation (extension horizontale en élévation). Fournie seulement si la propriété Forme a pour valeur "Rectangle". - 空間の幅(高さにおける水平方向の拡張)を求める定義です。「四角形」の形状プロパティのみ提示されます。 - 空构件的宽度(在立面图中水平方向的长度),仅当“形状”属性为“矩形”时适用。 - - - - Height - The requested height (vertical extension in elevation) of the provision for void", only provided if the Shape property is set to "rectangle". - - - - - - - Höhe - Height - Hauteur - 高さ - 高度 - - - Geforderte Höhe des Durchbruchs, wird nur dann angegeben, wenn der Wert des Attributes "Form" gleich "Rechteck" ist. - - La hauteur requise de la réservation (extension verticale en élévation). Fournie seulement si la propriété Forme a pour valeur "Rectangle". - 空間の高さ(高さにおける垂直方向の拡張)を求める定義です。「四角形」の形状プロパティのみ提示されます。 - 空构件的高度(在立面图中竖直方向的长度),仅当“形状”属性为“矩形”时适用。 - - - - Diameter - The requested diameter (in elevation) of the provision for void, only provided if the Shape property is set to "round". - - - - - - - Durchmesser - Diameter - Diamètre - 直径 - 直径 - - - Geforderte Durchmesser des Durchbruchs, wird nur dann angegeben, wenn der Wert des Attributes "Form" gleich "Rund" ist. - - Le diamètre requis de la réservation (en élévation). Fournie seulement si la propriété Forme a pour valeur "Round". - 空間における直径(高さにおける)を求める定義です。「円」形状プロパティのみに提示されます。 - 空构件的直径(在立面图中),仅当“形状”属性为“圆形”时适用。 - - - - Depth - The requested depth or thickness of the provision for void. - - - - - - - Tiefe - Depth - Profondeur - 深さ - 深度 - - - Geforderte Tiefe des Durchbruchs für eine Nische oder Aussparung. Wenn nicht angegeben, dann ist der geforderte Durchbruch eine Durchbruchsöffnung. - - La profondeur requise ou épaisseur de la réservation. - 空間の厚さに対しての深さが提示されます。 - 空构件的深度或厚度。 - - - - System - he building service system that requires the provision for voids, e.g. 'Air Conditioning', 'Plumbing', 'Electro', etc. - - - - - - - Anlage - System - Système - システム - 系统 - - - Angabe zu welcher Anlage (oder Anlagen) der Durchbruch benötigt wird. - - Le système qui requiert la réservation (exemples : "Conditionnement d'air", "Plomberie", "Electricité") - 空間に提示される建物サービスシステムです。例えば「空調」「配管」「電気」です。 - 需要空构件的建筑服务系统,例如,“空调”、“给排水”、“电气”等。 - - - - - - IfcBuildingElementProxyオブジェクトを使用して空間の取り合いにおける穴の位置を提案する際に必要な共通プロパティ情報を定義。 - 所有作为IfcBuildingElementProxy特例的空构件的定义中通用的属性。空构件是一种特殊的构件,可用以挖空其他建筑构件。其属性仅含特定的值。 - - - - - Pset_BuildingStoreyCommon - Properties common to the definition of all instances of IfcBuildingStorey. Please note that several building attributes are handled directly at the IfcBuildingStorey instance, the building storey number (or short name) by IfcBuildingStorey.Name, the building storey name (or long name) by IfcBuildingStorey.LongName, and the description (or comments) by IfcBuildingStorey.Description. Actual building storey quantities, like building storey perimeter, building storey area and building storey volume are provided by IfcElementQuantity, and the building storey classification according to national building code by IfcClassificationReference. - - - IfcBuildingStorey - - IfcBuildingStorey - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). Used to store the non-classification driven internal project type. - - - - - - - Referenz ID - Reference - Reference - 参照記号 - 참조 ID - - - Identifikator der projektinternen Referenz für dieses Geschoss, z.B. nach der Geschossklassifizierung des Bauherrn. Wird verwendet, wenn keine allgemein anerkanntes Klassifizierungssystem angewandt wird. - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1"). Utilisé pour enregistrer un type sans recourir à une classification. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 이 프로젝트의 참조 ID (예 : A-1). 분류 코드가 아닌 내부에서 사용되는 프로젝트 형식으로 사용됩니다. - - - - EntranceLevel - Indication whether this building storey is an entrance level to the building (TRUE), or (FALSE) if otherwise. - - - - - - - Eingangsebene - Entrance Level - NiveauEntrée - エントランスレベル - 입구 레벨 - - - Angabe, ob der Gebäudeeingang sich in diesem Geschoss befinded (WAHR), oder nicht (FALSCH). - - Indication si l'étage est au niveau d'une entrée (VRAI) ou non (FAUX) - エントランスレベルかどうかを示すブーリアン値。 - 입구 레벨 여부를 나타내는 값 - - - - AboveGround - Indication whether this building storey is fully above ground (TRUE), or below ground (FALSE), or partially above and below ground (UNKNOWN) - as in sloped terrain. - - - - - - - Oberirdisches Geschoss - Above Ground - AuDessusSol - 地上判別 - 지상 여부 - - - Angabe, ob dieses Geschoss vollständig überhalb oberirdisch ist (WAHR), vollständig unterirdisch (FALSCH), oder teilweise unter- und überirdisch (UNKNOWN). - - Indication si l'étage est complètement au dessus du niveau du sol (VRAI), au dessous du niveau du sol (FAUX) ou partiellement enterré (INCONNU) comme dans le cas d'un terrain en pente. - この建物階が地上(TRUE)、地下(FALSE)、一部が地下部分(UNKOWN)かどうかを示すロジカル値。 - 이 건물 층이 지상 (TRUE), 지하 (FALSE), 일부 지하 부분 (UNKOWN) 여부를 나타내는 논리 값. - - - - SprinklerProtection - Indication whether this object is sprinkler protected (TRUE) or not (FALSE). - - - - - - - Sprinklerschutz - Sprinkler Protection - ProtectionParSprinkler - スプリンクラー防御 - 스프링 클러 방어 - - - Angabe, ob des Geschoss durch eine Sprinkleranlage geschützt wird (WAHR) oder nicht (FALSCH). - - Indication selon laquelle ce bâtimentbénéficie d'une protection par sprinkler (VRAI) ou non (FAUX) - スプリンクラー設備の有無を示すブーリアン値。 - 스프링 클러 설비의 유무를 나타내는 값 - - - - SprinklerProtectionAutomatic - Indication whether this object has an automatic sprinkler protection (TRUE) or not (FALSE). -It should only be given, if the property "SprinklerProtection" is set to TRUE. - - - - - - - Sprinklerschutz automatisch - Sprinkler Protection Automatic - ProtectionAutomatiqueParSprinkler - スプリンクラー防御自動区分 - 스프링 클러 방어 자동 구분 - - - Angabe, ob das Geschoss durch eine automatische Sprinkleranlage geschützt wird (WAHR) oder nicht (FALSCH). - - Indication selon laquelle ce bâtiment bénéficie d'une protection automatique par sprinkler (VRAI) ou non (FAUX). Indication à ne fournir que si la propriété "SprinklerProtection" est cochée "VRAI". - スプリンクラー設備が自動かどうか示すブーリアン値。 - 스프링 클러 설비가 자동 여부를 나타내는 값 - - - - LoadBearingCapacity - Maximum load bearing capacity of the floor structure throughtout the storey as designed. - - - - - - - Deckentragfähigkeit - Load Bearing Capacity - Capacité porteuse - - - Maximale Deckentragfähigkeit in diesem Geschoss. - - Capacité porteuse maximale de la structure du plancher tel que conçu pour cet étage. - - - - GrossPlannedArea - Total planned area for the building storey. Used for programming the building storey. - - - - - - - Bruttofläche nach Raumprogramm - Gross Planned Area - Surface programmée brute - 計画グロス面積 - 계획 그로스 면적 - - - Geforderte Bruttofläche des Geschosses laut Raumprogramm. - - Surface programmée brute totale de l'étage. Telle que définie lors de la programmation. - 計画された建物階のグロス面積。建物計画に際に使用。 - 계획된 건물 층 그로스 면적. 건물 계획시 사용됩니다. - - - - NetPlannedArea - Total planned net area for the building storey. Used for programming the building storey. - - - - - - - Nettofläche nach Raumprogramm - Net Planned Area - Surface programmée nette - 計画ネット面積 - 계획 인터넷 면적 - - - Geforderte Nettofläche des Geschosses laut Raumprogramm. - - Surface programmée nette totale de l'étage. Telle que définie lors de la programmation. - 計画された建物階のネット面積。建物計画の際に使用。 - 계획된 건물 층 인터넷 공간이 있습니다. 건물 계획시 사용됩니다. - - - - - Property Set Definition in German - - Définition de l'IAI : propriétés communes à la définition de toutes les instances de IfcBuildingStorey. Veuillez noter que plusieurs attributs sont portés par l'instance IfcBuildingStorey : le numéro de l'étage ou nom court (IfcBuildingStorey.Name), le nom ou nom long (IfcBuildingStorey.LongName), et la description ou des commentaires (IfcBuildingStorey.Description). Les quantités réelles de l'étage comme le périmètre, la superficie et le volume sont fournis par des instances de IfcElementQuantity et la référence à une classification nationale par IfcClassificationReference. - IfcBuildinStorey(建物階)に関するプロパティセット定義。建物階ナンバーはIfcBuildingStorey.Name、建物階名称はIfcBuildingStorey.LongName、建物階に関する記述はIfcBuildingStorey.Descriptionで設定する。実際の建物階に関する数量、例えば建物階周囲長、建物階面積、建物階体積等はIfcElementQuantitiesで設定する。また、建築基準法の建物階分類に関しては、IfcClassificationReferenceで設定する。 - - - - - Pset_BuildingSystemCommon - Properties common to the definition of building systems. - - - IfcBuildingSystem - - IfcBuildingSystem - - - Reference - Reference ID for this specified instance of building system in this project (e.g. 'TRA/EL1'), The reference values depend on the local code of practice. - - - - - - - Kennzeichen - Reference - 参照記号 - 参考号 - - - Kennzeichen für diese bauliche System in dem Projekt (z.B. 'TRA/EL1'). Die Kennzeichensystematik hängt von den jeweiligen nationalen/regionalen Regelungen ab. - - このプロジェクトにおける建物システムの指定されたインスタンスの参照記号 - 该项目中该特定建筑系统实例的参考编号(例如,“TRA/EL1”)。该属性值由当地编码规范决定。 - - - - - - 建物システムの共通プロパティ定義 - 所有建筑系统的定义中通用的属性。 - - - - - Pset_BuildingUse - Provides information on on the real estate context of the building of interest both current and anticipated. - - - IfcBuilding - - IfcBuilding - - - MarketCategory - Category of use e.g. residential, commercial, recreation etc. - - - - - - - Market Category - CategorieMarche - - - - Catégorie d'usage (résidentiel, commercial, loisir,…) - - - - MarketSubCategory - Subset of category of use e.g. multi-family, 2 bedroom, low rise. - - - - - - - Market Sub Category - SousCategorieMarche - - - - Sous catégorie d'usage (exemple : collectif, deux pièces,…) - - - - PlanningControlStatus - Label of zoning category or class, or planning control category for the site or facility. - - - - - - - Planning Control Status - EtatPlanningControle - - - - Catégorie de zone ou classe, ou catégorie relativement à un planning de contrôle pour le site ou l'ensemble immobilier. - - - - NarrativeText - Added information relating to the adjacent building use that is not appropriate to the general descriptive text associated with an entity through the inherited IfcRoot.Description. - - - - - - - Narrative Text - TexteLibre - - - - Information relative aux bâtiments voisins qui n'est pas appropriée au texte d'ordre général que l'on peut saisir dans l'attribut hérité IfcRoot.Description. - - - - VacancyRateInCategoryNow - Percentage of vacancy found in the particular category currently. - - - - - - - Vacancy Rate In Category Now - TauxVacanceActuelParCategorie - - - - Taux actuel de vacance pour la catégorie. - - - - TenureModesAvailableNow - A list of the tenure modes that are currently available expressed in terms of IfcLabel. - - - - - - - - - Tenure Modes Available Now - PossibilitesOccupationActuelles - - - - Liste des possibilités d'occupation actuelles. - - - - MarketSubCategoriesAvailableNow - A list of the sub categories of property that are currently available expressed in terms of IfcLabel. - - - - - - - - - Market Sub Categories Available Now - DisponibilitesActuellesParSousCategories - - - - Liste de sous catégories actuellement disponibles - - - - RentalRatesInCategoryNow - Range of the cost rates for property currently available in the required category. - - - - - - - Rental Rates In Category Now - PrixActuelLoyerParCategorie - - - - Prix actuel des loyers pour la catégorie considérée. - - - - VacancyRateInCategoryFuture - Percentage of vacancy found in the particular category expected in the future. - - - - - - - Vacancy Rate In Category Future - TauxVacanceFuturParCategorie - - - - Taux de vacance attendu dans le futur pour la catégorie. - - - - TenureModesAvailableFuture - A list of the tenure modes that are expected to be available in the future expressed in terms of IfcLabel. - - - - - - - - - Tenure Modes Available Future - PossibilitesOccupationFutures - - - - Liste des possibilités d'occupation futures. - - - - MarketSubCategoriesAvailableFuture - A list of the sub categories of property that are expected to be available in the future expressed in terms of IfcLabel. - - - - - - - - - Market Sub Categories Available Future - DisponibilitesFuturesParSousCategories - - - - Liste de sous catégories disponibles dans le futur. - - - - RentalRatesInCategoryFuture - Range of the cost rates for property expected to be available in the future in the required category. - - - - - - - Rental Rates In Category Future - PrixFuturLoyerParCategorie - - - - Prix futur des loyers pour la catégorie considérée. - - - - - - Définition de l'IAI : information sur le contexte immobilier actuel et futur du bâtiment considéré. - - - - - Pset_BuildingUseAdjacent - Provides information on adjacent buildings and their uses to enable their impact on the building of interest to be determined. Note that for each instance of the property set used, where there is an existence of risk, there will be an instance of the property set Pset_Risk (q.v). - - - IfcBuilding - - IfcBuilding - - - MarketCategory - Category of use e.g. residential, commercial, recreation etc. - - - - - - - Market Category - CategorieUsage - - - - Catégorie d'usage (résidentiel, commercial, loisir,…) - - - - MarketSubCategory - Subset of category of use e.g. multi-family, 2 bedroom, low rise. - - - - - - - Market Sub Category - SousCategorieUsage - - - - Sous catégorie d'usage. - - - - PlanningControlStatus - Label of zoning category or class, or planning control category for the site or facility. - - - - - - - Planning Control Status - EtatPlanningControle - - - - Catégorie de zone ou classe, ou catégorie relativement à un planning de contrôle pour le site ou l'ensemble immobilier. - - - - NarrativeText - Added information relating to the adjacent building use that is not appropriate to the general descriptive text associated with an entity through the inherited IfcRoot.Description. - - - - - - - Narrative Text - CommentaireUsage - - - - Information sur l'usage des bâtiments voisins - - - - - - Définition de l'IAI : information sur les bâtiments voisins et sur leur usage pour apprécier leur impact sur le bâtiment auquel on s'intéresse. Veuillez noter que pour chaque instance de ce jeu de propriétés, dès lors qu'un risque existe, il doit exister une instance du jeu de propriétés Pset_Risk (q.v). - - - - - Pset_BurnerTypeCommon - Common attributes of burner types. - - - IfcBurner - - IfcBurner - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - Référence - 参照記号 - - - - Identification de référence pour ce type spécifique à ce projet, c'est-à-dire type'A-1', fourni à partir du moment où, s'il n'y a pas de référence de classification par rapport à un système de classification reconnu et en usage. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Etat - 状態 - - - - Etat de l'élément, utilisé avant tout pour les projets de rénovation et réaménagement. L'état assigné peut être "Nouveau" - l'élément prévu pour du neuf, "Existant" - l'élément existait et est maintenu, "Démoli" - l'élément existait mais doit être démoli/supprimé, "Provisoire" - l'élément existera à titre provisoire seulement (comme un support structurel par exemple). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - EnergySource - Enumeration defining the energy source or fuel cumbusted to generate heat. - - - - COAL - COAL_PULVERIZED - ELECTRICITY - GAS - OIL - PROPANE - WOOD - WOOD_CHIP - WOOD_PELLET - WOOD_PULVERIZED - OTHER - NOTKNOWN - UNSET - - - - COAL - - Coal - - - - - - - COAL_PULVERIZED - - Coal Pulverized - - - - - - - ELECTRICITY - - Electricity - - - - - - - GAS - - Gas - - - - - - - OIL - - Oil - - - - - - - PROPANE - - Propane - - - - - - - WOOD - - Wood - - - - - - - WOOD_CHIP - - Wood Chip - - - - - - - WOOD_PELLET - - Wood Pellet - - - - - - - WOOD_PULVERIZED - - Wood Pulverized - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Energy Source - SourceEnergie - エネルギ源 - - - - Liste définissant les sources d'énergie ou combustibles pour générer la chaleur. - 加熱に使用する燃料のエネルギ種類 (石炭、石炭粉末、電気、ガス、油、プロパン、木材、木材チップ、木材ペレット、木粉、他) - - - - - - バーナータイプの共通属性 - - - - - Pset_CableCarrierFittingTypeCommon - Common properties for cable carrier fittings. HISTORY: Added in IFC4. - - - IfcCableCarrierFitting - - IfcCableCarrierFitting - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照 - 참조 - - - - 当該プロジェクトで定義する形式の参照ID(例:A-1)、承認された分類に存在しないときに使用される。 - 해당 프로젝트에 정의된 형식의 참조 ID (예 : A-1) 승인된 분류에 존재하지 않을 때 사용된다. 참조 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - - - ケーブルキャリアの共通プロパティを定義。 - - - - - Pset_CableCarrierSegmentTypeCableLadderSegment - An open carrier segment on which cables are carried on a ladder structure. -HISTORY: IFC4 - NominalLength deleted. To be handled as a quantity measure. - - - IfcCableCarrierSegment/CABLELADDERSEGMENT - - IfcCableCarrierSegment/CABLELADDERSEGMENT - - - NominalWidth - The nominal width of the segment. - - - - - - - Nominal Width - 公称幅 - 공칭 폭 - - - - 呼び幅寸法。 - 폭 치수. - - - - NominalHeight - The nominal height of the segment. - - - - - - - Nominal Height - 公称高 - 공칭 높이 - - - - 呼び高寸法。 - 고치수 - - - - LadderConfiguration - Description of the configuration of the ladder structure used. - - - - - - - Ladder Configuration - 梯子設定 - 사다리 설정 - - - - 使用されるはしご構造の概要説明。 - 사용되는 사다리 구조의 개요 설명. - - - - - - はしご構造の上にケーブルを乗せる開放型ケーブルキャリアに関するプロパティセット定義。 - - - - - Pset_CableCarrierSegmentTypeCableTraySegment - An (typically) open carrier segment onto which cables are laid. -HISTORY: IFC4 - NominalLength deleted. To be handled as a quantity measure - - - IfcCableCarrierSegment/CABLETRAYSEGMENT - - IfcCableCarrierSegment/CABLETRAYSEGMENT - - - NominalWidth - The nominal width of the segment. - - - - - - - Nominal Width - 公称幅 - 공칭 폭 - - - - 呼び幅寸法。 - 폭 치수 - - - - NominalHeight - The nominal height of the segment. - - - - - - - Nominal Height - 公称高 - 공칭 높이 - - - - 呼び高寸法。 - 고 치수 - - - - HasCover - Indication of whether the cable tray has a cover (=TRUE) or not (= FALSE). By default, this value should be set to FALSE.. - - - - - - - Has Cover - カバー - 커버 - - - - カバー付かどうか。 - 커버 유무 - - - - - - 典型的な開放型ケーブルキャリアに関するプロパティセット定義。 - - - - - Pset_CableCarrierSegmentTypeCableTrunkingSegment - An enclosed carrier segment with one or more compartments into which cables are placed. -HISTORY: IFC4 - NominalLength deleted. To be handled as a quantity measure - - - IfcCableCarrierSegment/CABLETRUNKINGSEGMENT - - IfcCableCarrierSegment/CABLETRUNKINGSEGMENT - - - NominalWidth - The nominal width of the segment. - - - - - - - Nominal Width - 公称幅 - 공칭 폭 - - - - 呼び幅寸法。 - 폭 치수 - - - - NominalHeight - The nominal height of the segment. - - - - - - - Nominal Height - 公称高 - 공칭높이 - - - - 呼び高寸法。 - 고 치수 - - - - NumberOfCompartments - The number of separate internal compartments within the trunking. - - - - - - - Number Of Compartments - 区画数 - 구획 수 - - - - 管の区別される内部区画の個数。 - 관 구분되는 내부 파티션 개수 - - - - - - 一つ以上の区画にケーブルを収納する密閉型ケーブルキャリアに関するプロパティセット定義。 - - - - - Pset_CableCarrierSegmentTypeCommon - Common properties for cable carrier segments. HISTORY: Added in IFC4. - - - IfcCableCarrierSegment - - IfcCableCarrierSegment - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照 - 참조 - - - - 当該プロジェクトで定義する形式の参照ID(例:A-1)、承認された分類に存在しないときに使用される。 - 해당 프로젝트에 정의된 형식의 참조 ID (예 : A-1) 승인된 분류에 존재하지 않을 때 사용된다. - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - - - ケーブルキャリアに関する共通プロパティセット定義。 - - - - - Pset_CableCarrierSegmentTypeConduitSegment - An enclosed tubular carrier segment through which cables are pulled. -HISTORY: IFC4 - NominalLength deleted. To be handled as a quantity measure. - - - IfcCableCarrierSegment/CONDUITSEGMENT - - IfcCableCarrierSegment/CONDUITSEGMENT - - - NominalWidth - The nominal width of the segment. - - - - - - - Nominal Width - 公称幅 - 공칭 폭 - - - - 呼び幅寸法。 - 폭 치수 - - - - NominalHeight - The nominal height of the segment. - - - - - - - Nominal Height - 公称高 - 공칭 높이 - - - - 呼び高寸法。 - 고 치수 - - - - ConduitShapeType - The shape of the conduit segment. - - - - CIRCULAR - OVAL - OTHER - NOTKNOWN - UNSET - - - - CIRCULAR - - Circular - - - - - - - OVAL - - Oval - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Conduit Shape Type - 電線管のタイプ - 전선관의 유형 - - - - 電線管の形状タイプ。 -(円筒形,卵形,その他,不明,なし) - 전선관의 형상 타입. (원통형, 계란 모양, 기타 알 수 없음) " - - - - IsRigid - Indication of whether the conduit is rigid (= TRUE) or flexible (= FALSE). - - - - - - - Is Rigid - 鋼管 - 강관 - - - - 鋼管か否か。 - - - - - - - 電線管のプロパティを設定。 - - - - - Pset_CableFittingTypeCommon - Common properties for cable fittings. HISTORY: Added in IFC4. - - - IfcCableFitting - - IfcCableFitting - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照 - 참조 - - - - 当該プロジェクトで定義する形式の参照ID(例:A-1)、承認された分類に存在しないときに使用される。 - 해당 프로젝트에 정의된 형식의 참조 ID (예 : A-1) 승인된 분류에 존재하지 않을 때 사용된다. - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - - - ケーブルの共通プロパティを設定します。 -IFC4にて追加 - - - - - Pset_CableSegmentOccurrence - Properties for the occurrence of an electrical cable, core or conductor that conforms to a type as specified by an appropriate type definition within IFC. NOTE: Maximum allowed voltage drop should be derived from the property within Pset_ElectricalCircuit. - - - IfcCableSegment - - IfcCableSegment - - - DesignAmbientTemperature - The highest and lowest local ambient temperature likely to be encountered. - - - - - - - Design Ambient Temperature - - - - - - - UserCorrectionFactor - An arbitrary correction factor that may be applied by the user. - - - - - - - User Correction Factor - - - - - - - NumberOfParallelCircuits - Number of parallel circuits. - - - - - - - Number Of Parallel Circuits - - - - - - - InstallationMethod - Method of installation of cable/conductor. Installation methods are typically defined by reference in standards such as IEC 60364-5-52, table 52A-1 or BS7671 Appendix 4 Table 4A1 etc. Selection of the value to be used should be determined from such a standard according to local usage. - - - - - - - Installation Method - - - - - - - InstallationMethodFlagEnum - Special installation conditions relating to particular types of installation based on IEC60364-5-52:2001 reference installation methods C and D. - - - - INDUCT - INSOIL - ONWALL - BELOWCEILING - OTHER - NOTKNOWN - UNSET - - - - INDUCT - - In Duct - - - - - - - INSOIL - - In Soil - - - - - - - ONWALL - - On Wall - - - - - - - BELOWCEILING - - Below Ceiling - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Installation Method Flag Enum - - - - - - - DistanceBetweenParallelCircuits - Distance measured between parallel circuits. - - - - - - - Distance Between Parallel Circuits - - - - - - - SoilConductivity - Thermal conductivity of soil. Generally, within standards such as IEC 60364-5-52, table 52A-16, the resistivity of soil is required (measured in [SI] units of degK.m /W). This is the reciprocal of the conductivity value and needs to be calculated accordingly. - - - - - - - Soil Conductivity - - - - - - - CarrierStackNumber - Number of carrier segments (tray, ladder etc.) that are vertically stacked (vertical is measured as the z-axis of the local coordinate system of the carrier segment). - - - - - - - Carrier Stack Number - - - - - - - MountingMethod - The method of mounting cable segment occurrences on a cable carrier occurrence from which the method required can be selected. This is for the purpose of carrying out 'worst case' cable sizing calculations and may be a conceptual requirement rather than a statement of the physical occurrences of cable and carrier segments. - - - - PERFORATEDTRAY - LADDER - OTHER - NOTKNOWN - UNSET - - - - PERFORATEDTRAY - - Perforated Tray - - - - - - - LADDER - - Ladder - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Mounting Method - - - - - - - IsHorizontalCable - Indication of whether the cable occurrences are mounted horizontally (= TRUE) or vertically (= FALSE). - - - - - - - Is Horizontal Cable - - - - - - - IsMountedFlatCable - Indication of whether the cable occurrences are mounted flat (= TRUE) or in a trefoil pattern (= FALSE). - - - - - - - Is Mounted Flat Cable - - - - - - - CurrentCarryingCapasity - Maximum value of electric current which can be carried continuously by a conductor, a device or an apparatus, under specified conditions without its steady-state temperature exceeding a specified value. Based on IEC60826-11-13. NOTE: The temperature specified value is maximum Design Ambient Temperature. - - - - - - - Current Carrying Capasity - - - - - - - MaximumCableLength - Maximum cable length based on voltagedrop. NOTE: This value may also be specified as a constraint within an IFC model if required but is included within the property set at this stage pending implementation of the required capabilities within software applications. - - - - - - - Maximum Cable Length - - - - - - - PowerLoss - Total loss of power across this cable. - - - - - - - Power Loss - - - - - - - - - - - - - Pset_CableSegmentTypeBusBarSegment - Properties specific to busbar cable segments. - - - IfcCableSegment/BUSBARSEGMENT - - IfcCableSegment/BUSBARSEGMENT - - - IsHorizontalBusbar - Indication of whether the busbar occurrences are routed horizontally (= TRUE) or vertically (= FALSE). - - - - - - - Is Horizontal Busbar - 水平母線 - 수평 모선 - - - - 母線は、水平方向にルーティングされるかどうかを示す(= TRUE)または垂直方向に(= FALSE)を返します。 - 모선은 가로로 라우팅되는지 여부를 나타내는 (= TRUE) 또는 수직 (= FALSE)를 반환합니다. - - - - - - busbarケーブルの性質、性能。 - - - - - Pset_CableSegmentTypeCableSegment - Electrical cable with a specific purpose to lead electric current within a circuit or any other electric construction. Includes all types of electric cables, mainly several electrical segments wrapped together, e.g. cable, tube, busbar. Note that the number of conductors within a cable is determined by an aggregation mechanism that aggregates the conductors within the cable. A single-core cable is defined in IEV 461-06-02 as being 'a cable having only one core'; a multiconductor cable is defined in IEV 461-06-03 as b eing 'a cable having more than one conductor, some of which may be uninsulated'; a mulicore cable is defined in IEV 461-06-04 as being 'a cable having more than one core'. - - - IfcCableSegment/CABLESEGMENT - - IfcCableSegment/CABLESEGMENT - - - Standard - The designation of the standard applicable for the definition of the Cable/Bus used. - - - - - - - Standard - 標準 - 표준 - - - - 使用されるケーブル、busbarの定義のために使用される標準仕様。 - 사용되는 케이블, busbar의 정의를 위해 사용되는 표준. - - - - NumberOfCores - The number of cores in Cable/Bus. - - - - - - - Number Of Cores - 芯数 - 심수 - - - - ケーブルや母線の芯数を示す。 - 케이블과 모선의 심수 보여준다. - - - - OverallDiameter - The overall diameter of a Cable/Bus. - - - - - - - Overall Diameter - 直径 - 직경 - - - - ケーブルや母線の外形寸法(直径)を示す。 - 케이블과 모선의 외형 치수 (직경)를 나타낸다. - - - - RatedVoltage - The range of allowed voltage that a device is certified to handle. The upper bound of this value is the maximum. - - - - - - - Rated Voltage - 定格電圧 - 정격 전압 - - - - 使用できることが許可されている許容電圧。 - 사용할 수있는 권한이있는 허용 전압. - - - - RatedTemperature - The range of allowed temerature that a device is certified to handle. The upper bound of this value is the maximum. - - - - - - - Rated Temperature - 定格温度 - 정격 온도 - - - - 使用できることが許可されている許容温度。 - 사용할 수있는 권한이있는 허용 온도 - - - - ScreenDiameter - The diameter of the screen around a cable or bus segment (if present). - - - - - - - Screen Diameter - スクリーン径 - 스크린 지름 - - - - 遮へい層の径、厚さ。 - 차폐 층의 직경, 두께. - - - - HasProtectiveEarth - One core has protective earth marked insulation, Yellow/Green. - - - - - - - Has Protective Earth - 保護用接地の有無 - 보호 접지의 유무 - - - - 各ケーブルは黄色や緑で塗色された絶縁体をもっている。 - 각 케이블은 노란색 또는 녹색으로 도색되었다 절연체를 가지고있다. - - - - MaximumOperatingTemperature - The maximum temperature at which a cable or bus is certified to operate. - - - - - - - Maximum Operating Temperature - 許容最高温度 - 허용 최고 온도 - - - - ケーブルや母線の最大動作温度を示す。 - 케이블과 모선의 최대 작동 온도를 나타낸다. - - - - MaximumShortCircuitTemperature - The maximum short circuit temperature at which a cable or bus is certified to operate. - - - - - - - Maximum Short Circuit Temperature - 短絡許容最高温度 - 단락 허용 최고 온도 - - - - ケーブルや母線の最大短絡温度を示す。 - 케이블과 모선의 최대 단락 온도를 나타낸다. - - - - SpecialConstruction - Special construction capabilities like self-supporting, flat devidable cable or bus flat non devidable cable or bus supporting elements inside (steal, textile, concentric conductor). Note that materials used should be agreed between exchange participants before use. - - - - - - - Special Construction - 特別な施工方法 - 특별한 시공 방법 - - - - 特殊な構造を備えた性能-たとえば、平型フレキシブルケーブルあるいは硬い平型母線ケーブル、あるいは母線で内部に鉄製、繊維、同心導体で構成されているサポートを持っている。 -注記)使用する材料は、使用前に交流参加者間で合意すること。 - 특수한 구조를 갖춘 성능 - 예를 들어, 평형 플렉시블 케이블 또는 딱딱한 평형 모선 케이블 또는 모선 내부에 철제, 섬유, 동심 도체로 구성되어있는 지원이있다. 주) 사용하는 재료는 사용 전에 교류 참가자 사이에 동의한다. - - - - Weight - Weight of cable kg/km. - - - - - - - Weight - 重量 - 무게 - - - - ケーブルの重量。 - 케이블의 무게 - - - - SelfExtinguishing60332_1 - Self Extinguishing cable/core according to IEC 60332.1. - - - - - - - Self Extinguishing60332_1 - 自己消火ケーブル - 자기 소화 케이블 - - - - IEC 60332.1.に規定されている自己消火ケーブル。 - IEC 60332.1.에 규정되어있는 자기 소화 케이블 - - - - SelfExtinguishing60332_3 - Self Extinguishing cable/core according to IEC 60332.3. - - - - - - - Self Extinguishing60332_3 - 自己消火ケーブル - 자기 소화 케이블 - - - - IEC 60332.3.に規定されている自己消火ケーブル。 - IEC 60332.3.에 규정되어있는 자기 소화 케이블 - - - - HalogenProof - Produces small amount of smoke and irritating Deaerator/Gas. - - - - - - - Halogen Proof - エコケーブル - 에코 케이블 - - - - 煙や刺激臭のあるガスの発生が少ないケーブル。 - 연기와 자극적인 냄새가있는 가스의 발생이 적은 케이블 - - - - FunctionReliable - Cable/bus maintain given properties/functions over a given (tested) time and conditions. According to IEC standard. - - - - - - - Function Reliable - 信頼性のある機能 - 신뢰할 수있는 기능 - - - - ケーブルや母線が与えられた時間と条件の中で規定される機能、性質を維持すること。これはIEC基準による。 - 케이블 및 모선 주어진 시간과 조건에서 규정하는 기능, 성질을 유지한다. 이것은 IEC 기준에 의한다. - - - - - - IAIにて定義されるもので、電気回路やその他電源回路などで送電する目的を持った電気関係のケーブル。 -すべての種類の電気ケーブルを含み、主にいくつかの電気層にて保護されている。たとえばケーブル、busbar、チューブ。 -注記)導電帯の中のケーブルの数は集計システムで規定される。単芯ケーブルはIEV 461-06-02で規定される。複芯ケーブルはIEV 461-06-03にて規定される。それは一つ以上の導電帯を持ちいくつかは絶縁されていない。マルチコアケーブルはIEV 461-06-04で規定されて、少なくとも一つ以上のコアで形成されている。 - - - - - Pset_CableSegmentTypeCommon - Properties for the definitions of electrical cable segments. - - - IfcCableSegment - - IfcCableSegment - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照 - 참조 - - - - 当該プロジェクトで定義する形式の参照ID(例:A-1)、承認された分類に存在しないときに使用される。 - 해당프로젝트에 정의도니 형식의 참조ID (예 : A-1) 승인된 분류에 존재하지 않을 때 사용된다. - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - - - 電気ケーブルに関する性質でコアや導電帯、IFCにて定義されたコアや導電帯の性質。 -注記)最大の許容電圧低下はPset_ElectricalCircuit内から定義されるものである。 - - - - - Pset_CableSegmentTypeConductorSegment - An electrical conductor is a single linear element with the specific purpose to lead electric current. The core of one lead is normally single wired or multiwired which are intertwined. According to IEC 60050: IEV 195-01-07, a conductor is a conductive part intended to carry a specified electric current. - - - IfcCableSegment/CONDUCTORSEGMENT - - IfcCableSegment/CONDUCTORSEGMENT - - - CrossSectionalArea - Cross section area of the phase(s) lead(s). - - - - - - - Cross Sectional Area - 断面積 - 단면적 영역 - - - - 位相、リードの断面積。 - 리드 단면적. - - - - Function - Type of function for which the conductor is intended. - - - - LINE - NEUTRAL - PROTECTIVEEARTH - PROTECTIVEEARTHNEUTRAL - OTHER - NOTKNOWN - UNSET - - - - LINE - - Line - - - - - - - NEUTRAL - - Neutral - - - - - - - PROTECTIVEEARTH - - Protective Earth - - - - - - - PROTECTIVEEARTHNEUTRAL - - Protective Earth Neutral - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Function - 機能 - 기능 - - - - 導体の機能のタイプ。 - 도체의 기능 유형. - - - - Material - Type of material from which the conductor is constructed. - - - - ALUMINIUM - COPPER - OTHER - NOTKNOWN - UNSET - - - - ALUMINIUM - - Aluminium - - - - - - - COPPER - - Copper - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Material - 材料 - 도체의 기능 유형. - - - - 導体を構成する材料のタイプ。 - 도체를 구성하는 재료의 종류. - - - - Construction - Purpose of informing on how the vonductor is constucted (interwined or solid). I.e. Solid (IEV 461-01-06), stranded (IEV 461-01-07), solid-/finestranded(IEV 461-01-11) (not flexible/flexible). - - - - SOLIDCONDUCTOR - STRANDEDCONDUCTOR - FLEXIBLESTRANDEDCONDUCTOR - OTHER - NOTKNOWN - UNSET - - - - SOLIDCONDUCTOR - - Solid Conductor - - - - - - - STRANDEDCONDUCTOR - - Stranded Conductor - - - - - - - FLEXIBLESTRANDEDCONDUCTOR - - Flexible Stranded Conductor - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Construction - 構造 - 구조 - - - - 導体の構成(より線か単線)の定義。すなわち単線(IEV 461-01-06)、より線(IEV 461-01-07)、フレキシブル導体(IEV 461-01-11)(フレキシブルか否か)で定義。 - 도체 구성 (연선 또는 단선)의 정의 즉 단선 (IEV 461-01-06), 트위스트 (IEV 461-01-07), 플렉서블 도체 (IEV 461-01-11) (유연한 아닌지 가) 정의 - - - - Shape - Indication of the shape of the conductor. - - - - HELICALCONDUCTOR - CIRCULARCONDUCTOR - SECTORCONDUCTOR - RECTANGULARCONDUCTOR - OTHER - NOTKNOWN - UNSET - - - - HELICALCONDUCTOR - - Helical Conductor - - - - - - - CIRCULARCONDUCTOR - - Circular Conductor - - - - - - - SECTORCONDUCTOR - - Sector Conductor - - - - - - - RECTANGULARCONDUCTOR - - Rectangular Conductor - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Shape - 形状 - 형상 - - - - 導体の形状を表示。 - 도체의 형상을 표시합니다. - - - - - - 電気導体は電流を導く目的で使用される線状の導体である。 -1本の導体の中心は、1本のワイヤーまたは、寄り合わせた複数のワイヤーからなる。IEC 60050:IEV 195-01-07によると、導体は指定された電流を運ぶことを目的とする伝導部分である。 - - - - - Pset_CableSegmentTypeCoreSegment - An assembly comprising a conductor with its own insulation (and screens if any) - - - IfcCableSegment/CORESEGMENT - - IfcCableSegment/CORESEGMENT - - - OverallDiameter - The overall diameter of a core (maximun space used). - - - - - - - Overall Diameter - 全径 - 전체 직경 - - - - 全体の直径(最大スペース)。 - 전체 직경 (최대 공간). - - - - RatedVoltage - The range of allowed voltage that a device is certified to handle. The upper bound of this value is the maximum. - - - - - - - Rated Voltage - 定格電圧 - 정격 전압 - - - - 機器を使用できる保障された電圧。上限値は最大値。 - 장치를 사용할 보장된 전압. 상한은 최대. - - - - RatedTemperature - The range of allowed temerature that a device is certified to handle. The upper bound of this value is the maximum. - - - - - - - Rated Temperature - 定格温度 - 정격 온도 - - - - 機器を使用できる保障された温度。上限値は最大値。 - 장치를 사용할 보장된 온도 상한은 최대. - - - - ScreenDiameter - The diameter of the screen around a core segment (if present). - - - - - - - Screen Diameter - シールド径 - 실드 직경 - - - - コア部分(存在する場合)の面の直径。 - 코어 부분 (있는 경우)의 측면에 지름. - - - - CoreIdentifier - The core identification used Identifiers may be used such as by color (Black, Brown, Grey) or by number (1, 2, 3) or by IEC phase reference (L1, L2, L3) etc. - - - - - - - Core Identifier - コア識別子 - 코어 식별자 - - - - コアの識別は、色(ブラック、ブラウン、グレー)又は番号(1、2、3)又はIECの位相基準(L1、L2、L3)などを使用。 - 코어 식별 색 (블랙, 브라운, 그레이) 또는 번호 (1,2,3) 또는 IEC의 위상 기준 (L1, L2, L3)를 사용. - - - - SheathColors - Colour of the core (derived from IEC 60757). Note that the combined color 'GreenAndYellow' shall be used only as Protective Earth (PE) conductors according to the requirements of IEC 60446. - - - - BLACK - BLUE - BROWN - GOLD - GREEN - GREY - ORANGE - PINK - RED - SILVER - TURQUOISE - VIOLET - WHITE - YELLOW - GREENANDYELLOW - OTHER - NOTKNOWN - UNSET - - - - BLACK - - Black - - - - - - - BLUE - - Blue - - - - - - - BROWN - - Brown - - - - - - - GOLD - - Gold - - - - - - - GREEN - - Green - - - - - - - GREY - - Grey - - - - - - - ORANGE - - Orange - - - - - - - PINK - - Pink - - - - - - - RED - - Red - - - - - - - SILVER - - Silver - - - - - - - TURQUOISE - - Turquoise - - - - - - - VIOLET - - Violet - - - - - - - WHITE - - White - - - - - - - YELLOW - - Yellow - - - - - - - GREENANDYELLOW - - Green and Yellow - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Sheath Colors - シース色 - 코어 색 - - - - コア色(IEC60757による)。緑と黄色の混合色の保護接地(PE)の導体は、IEC60446の要件に応じて注意して使用。 - 녹색과 노란색 혼합 색상의 보호 접지 (PE) 도체는 IEC60446의 요구에 따라주의하여 사용. - - - - Weight - Weight of core kg/km. - - - - - - - Weight - 重量 - 무게 - - - - コアkg/kmの重量。 - 코어 kg / km의 무게. - - - - SelfExtinguishing60332_1 - Self Extinguishing cable/core according to IEC 60332.1. - - - - - - - Self Extinguishing60332_1 - 自動消火60332_1 - 자동 소화 60332_1 - - - - 自動消火ケーブル/コアはIEC 60332.1に準じる。 - 자동 소화 케이블 / 코어는 IEC 60332.1에 준한다 - - - - SelfExtinguishing60332_3 - Self Extinguishing cable/core according to IEC 60332.3. - - - - - - - Self Extinguishing60332_3 - 自動消火60332_3 - 자동 소화 60332_3 - - - - 自己消化ケーブル/コアはIEC 60332.3.に準じる。 - 자기 소화 케이블 / 코어는 IEC 60332.3.에 준한다. - - - - HalogenProof - Produces small amount of smoke and irritating deaerator/gas. - - - - - - - Halogen Proof - ハロゲン証明 - 할로겐 증명 - - - - 少量の煙および刺激する脱気/ガスを生成。 - 소량의 연기와 자극 탈기 / 가스를 생성합니다. - - - - FunctionReliable - Core maintain given properties/functions over a given (tested) time and conditions. According to (IEC) standard. - - - - - - - Function Reliable - 機能信頼性 - 기능 신뢰성 - - - - コアの維持は特定(テスト)の時間と条件でプロパティ/関数を指定する。標準会議(IEC)規格に準拠。 - 핵심 정비는 특정 (테스트) 시간과 조건의 속성 / 함수를 지정한다. 표준 회의 (IEC) 규격을 준수합니다. - - - - Standard - The designation of the standard applicable for the definition of the core used. - - - - - - - Standard - 基準 - 기준 - - - - 使用するコアの定義に適用される基準の指定。 - 사용하는 코어의 정의에 적용되는 기준 지정 - - - - - - 絶縁(と、いくつかのシールド)をもった導体の集合。 - - - - - Pset_ChillerPHistory - Chiller performance history attributes. - - - IfcChiller - - IfcChiller - - - Capacity - The product of the ideal capacity and the overall volumetric efficiency of the compressor. - - - - - Capacity - Puissance - - - - Le produit de la puissance optimale par le rendement global du compresseur. - - - - EnergyEfficiencyRatio - The Energy efficiency ratio (EER) is the ratio of net cooling capacity to the total input rate of electric power applied. By definition, the units are BTU/hour per Watt. -The input electric power may be obtained from Pset_DistributionPortPHistoryElectrical.RealPower on the 'Power' port of the IfcChiller. - - - - - Energy Efficiency Ratio - CoefficientEfficacitéEnergétique - - - - L'EER ou Energy Efficiency Ratio est le coefficient d'efficacité frigorifique, rapport entre entre l'énergie utile frigorifique divisée parénergie absorbée au compresseur. -Par définition, l'unité est le BTU/hour par Watt. -La puissance électrique fournie peut être obtenue depuis Pset_DistributionPortHistoryElectrical.RealPower sur le port "Power" du IfcChiller. - - - - CoefficientOfPerformance - The Coefficient of performance (COP) is the ratio of heat removed to energy input. -The energy input may be obtained by multiplying -Pset_DistributionPortPHistoryGas.FlowRate on the 'Fuel' port of the IfcChiller by Pset_MaterialFuel.LowerHeatingValue. -The IfcDistributionPort for fuel has an associated IfcMaterial with fuel properties and is assigned to an IfcPerformanceHistory object nested within this IfcPerformanceHistory object. - - - - - Coefficient Of Performance - CoefficientDePerformance - - - - Le coefficient de performance (COP) est le rapport entre l'énergie calorifique fournie sur l'énergie abosrbée. -L'énergie fournie peut être obtenue en multipliant Pset_DistributionPortHistoryGas.flowRate depuis le port du IfcChiller par Pset_MaterialFuel.LowerHeatingValue. -Le IfcDistributionPort pour combustible est associé à IfcMaterial pour les propriétés du combustible et est atrribué à l'objet IfcPerformanceHistory situé à l'intérieur même de cet objet IfcPerformanceHistory. - - - - - - - - - - Pset_ChillerTypeCommon - Chiller type common attributes. - - - IfcChiller - - IfcChiller - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - Référence - 参照記号 - - - - Identification de référence pour ce type spécifique à ce projet, c'est-à-dire type'A-1', fourni à partir du moment où, s'il n'y a pas de référence de classification par rapport à un système de classification reconnu et en usage. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Etat - 状態 - - - - Etat de l'élément, utilisé avant tout pour les projets de rénovation et réaménagement. L'état assigné peut être "Nouveau" - l'élément prévu pour du neuf, "Existant" - l'élément existait et est maintenu, "Démoli" - l'élément existait mais doit être démoli/supprimé, "Provisoire" - l'élément existera à titre provisoire seulement (comme un support structurel par exemple). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - NominalCapacity - Nominal cooling capacity of chiller at standardized conditions as defined by the agency having jurisdiction. - - - - - - - Nominal Capacity - PuissanceNominale - - - - Puissance froid nominale du groupe froid aux conditions standardisées telles que définies par l'organisation faisant autorité. - - - - NominalEfficiency - Nominal chiller efficiency under nominal conditions. - - - - - - - Nominal Efficiency - EfficacitéNominale - - - - Efficactié nominale du groupe froid sous les conditions nominales. - - - - NominalCondensingTemperature - Chiller condensing temperature. - - - - - - - Nominal Condensing Temperature - TemperatureCondensationNominale - - - - Température de condensation du groupe froid. - - - - NominalEvaporatingTemperature - Chiller evaporating temperature. - - - - - - - Nominal Evaporating Temperature - TempératureEvaporationNominale - - - - Température d'évaporation du groupe froid. - - - - NominalHeatRejectionRate - Sum of the refrigeration effect and the heat equivalent of the power input to the compressor. - - - - - - - Nominal Heat Rejection Rate - CoefficientEvacuationNominaleChaleur - - - - Somme de l'effet de réfrigération et de la chaleur équivalente à la puisssance absorbée par le compresseur. - - - - NominalPowerConsumption - Nominal total power consumption. - - - - - - - Nominal Power Consumption - ConsommationPuissanceNominale - - - - Puissance de consommation totale nominale. - - - - CapacityCurve - Chiller cooling capacity is a function of condensing temperature and evaporating temperature, data is in table form, Capacity = f (TempCon, TempEvp), capacity = a1+b1*Tei+c1*Tei^2+d1*Tci+e1*Tci^2+f1*Tei*Tci. -This table uses multiple input variables; to represent, both DefiningValues and DefinedValues lists are null and IfcTable is attached using IfcPropertyConstraintRelationship and IfcMetric. Columns are specified in the following order: -1.IfcPowerMeasure:Capacity -2.IfcThermodynamicTemperatureMeasure:CondensingTemperature -3.IfcThermodynamicTemperatureMeasure:EvaporatingTemperature - - - - - - - - - - - - - Capacity Curve - CourbePuissance - - - - Puissance frigoifique du groupe froid qui est une fonction de la température de condensation et de la température d'évaporation, les informations sont sous la forme d'un tableau, Puissance = f(TempCon,TempEvp), puissance = a1+b1*Tei+c1*Tei^2+d1*Tci+e1*Tci^2+f1*Tei*Tci. -Ce tableau utilises plusieurs entrées variables; pour la représenter, DefiningValues et DefinedValues sont pour les deux nulles et IfcTable est attachée en utilisant IfcPropertyConstraintRelationship et IfcMetric. Les colonnes sont indiquées dans l'ordre suivant: -1. IfcPowerMeasure: Capacity -2. IfcThermodynamicTemperatureMeasure: CondensingTemperature -3. IfcThermodynamicTemperatureMeasure: EvaporatingTemperature - - - - CoefficientOfPerformanceCurve - Chiller coefficient of performance (COP) is function of condensing temperature and evaporating temperature, data is in table form, COP= f (TempCon, TempEvp), COP = a2+b2*Tei+c2*Tei^2+d2*Tci+e2*Tci^2+f2*Tei*Tci. -This table uses multiple input variables; to represent, both DefiningValues and DefinedValues lists are null and IfcTable is attached using IfcPropertyConstraintRelationship and IfcMetric. Columns are specified in the following order: -1.IfcPositiveRatioMeasure:CoefficientOfPerformance -2.IfcThermodynamicTemperatureMeasure:CondensingTemperature -3.IfcThermodynamicTemperatureMeasure:EvaporatingTemperature - - - - - - - - - - - - - Coefficient Of Performance Curve - CourbeCOP - - - - Coefficient de Performance (COP) du groupe froid qui est une fonction de la température de condensation et de la température d'évaporation, les informations sont sous la forme d'un tableau, COP = f(TempCon,TempEvp), COP = a2+b1*Tei+c2*Tei^2+d2*Tci+e2*Tci^2+f2*Tei*Tci. -Ce tableau utilises plusieurs entrées variables; pour la représenter, DefiningValues et DefinedValues sont pour les deux nulles et IfcTable est attachée en utilisant IfcPropertyConstraintRelationship et IfcMetric. Les colonnes sont indiquées dans l'ordre suivant: -1. IfcPowerMeasureCapacity -2. IfcThermodynamicTemperatureMeasure: CondensingTemperature -3. IfcThermodynamicTemperatureMeasure: EvaporatingTemperature - - - - FullLoadRatioCurve - Ratio of actual power to full load power as a quadratic function of part load, at certain condensing and evaporating temperature, FracFullLoadPower = f ( PartLoadRatio). - - - - - - - - - - - - - Full Load Ratio Curve - CourbeFonctionnementPleineCharge - - - - Rapport entre la puissance instantanée et la puissance à pleine charge comme fonction quadratique de charge partielle, pour une certaine température de condensation et une température d'évaporation, FracFullLoadPower= f (CoefficientChargePartielle) - - - - - - - - - - Pset_ChimneyCommon - Properties common to the definition of all occurrence and type objects of chimneys. - - - IfcChimney - - IfcChimney - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as "construction type". It should be provided as an alternative to the name of the "object type", if the software does not support object types. - - - - - - - Bauteiltyp - Reference - Référence - 参照記号 - 参考号 - - - Bezeichnung zur Zusammenfassung gleichartiger Bauteile zu einem Bauteiltyp (auch Konstruktionstyp genannt). Alternativ zum Namen des "Typobjekts", insbesondere wenn die Software keine Typen unterstützt. - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1") pour désigner un "type de construction". Une alternative au nom d'un objet type lorsque les objets types ne sont pas gérés par le logiciel. - 認識された分類体系で参照する分類がない場合にこのプロジェクト固有の参照記号(例:タイプ'A-1')が与えられる。 - 若未采用已知的分类系统,则该属性为该项目中该类型构件的参考编号(例如,类型A-1)。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Status - Statut - 状態 - - - Status bzw. Phase des Bauteils insbesondere beim Bauen im Bestand. "Neu" (new) neues Bauteil als Ergänzung, "Bestand" (existing) bestehendes Bauteil, dass erhalten bleibt, "Abbruch" (demolish) Bauteil, das abgebrochen wird, "Temporär" (temporary) Bauteil und andere Bauelemente, die vorübergehend eingebaut werden (wie Abstützungen, etc.) - - Statut de l'élément, principalement utilisé dans les projets de rénovation et de réhabilitation. Le statut a pour valeur NOUVEAU pour un nouvel élément, EXISTANT pour un élément existant qui est conservé, DEMOLI pour un élément existant à démolir et TEMPORAIRE pour un élément temporaire (comme une structure support provisoire). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - NumberOfDrafts - Number of the chimney drafts, continuous holes in the chimney through which the air passes, within the single chimney. - - - - - - - Zügigkeit - Number Of Drafts - Nombre de conduits - 穴の数 - 烟道数 - - - Anzahl der Schornsteinzüge innerhalb eines Schornsteins. Gewöhnlich ein-, zwei, drei oder vierzügig. - - Nombre de conduits, percements continus par lesquels passe l'air à l'intérieur d'une cheminée simple. - 一つの煙突で、煙突の筒(chimney draft)、空気が流れる連続した穴の数。 - 单根烟囱内的烟道数目,烟道即烟囱内供空气流通的连续孔道。 - - - - IsExternal - Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building. - - - - - - - Außenbauteil - Is External - Est extérieur - 外部 - 是否外部构件 - - - Angabe, ob dieses Bauteil ein Aussenbauteil ist (JA) oder ein Innenbauteil (NEIN). Als Aussenbauteil grenzt es an den Aussenraum (oder Erdreich, oder Wasser). - - Indique si l'élément est conçu pour être utilisé à l'extérieur (VRAI) ou non (FAUX). Si VRAI, c'est un élément extérieur qui donne sur l'extérieur du bâtiment. - この要素が外部に用いられるか(TRUE)、否か(FALSE)を示す。(TRUE)の場合、これは外部要素で、建物の外部に面している。 - 表示该图元是否设计为外部构件。若是,则该图元为外部图元,朝向建筑物的外部。 - - - - ThermalTransmittance - Thermal transmittance coefficient (U-Value) of an element. Here the total thermal transmittance coefficient through the chimney within the direction of the thermal flow (including all materials). - - - - - - - U-Wert - Thermal Transmittance - Transmission thermique surfacique - 熱貫流率 - 导热系数 - - - Wärmedurchgangskoeffizient (U-Wert) der Materialschichten. -Hier der Gesamtwärmedurchgangskoeffizient des Schornsteins (in Richtung des Wärmeflusses), angegeben ohne den inneren und äußeren Wärmeübergangswiderstand. - - Coefficient de transmission thermique surfacique (U). C'est le coefficient global de transmission thermique à travers la cheminée dans la direction du flux thermique (tous matériaux inclus). Nouvelle propriété de la version 2x4. - 材料の熱貫流率(U値)。ここでは、煙突全体の熱の流れる方向の熱貫流率(全ての材料を含む)。 - 材料的导热系数(U值)。 -表示该烟囱在传热方向上的整体导热系数(包括所有材料)。 - - - - LoadBearing - Indicates whether the object is intended to carry loads (TRUE) or not (FALSE). - - - - - - - Tragendes Bauteil - Load Bearing - Porteur - 耐力部材 - 是否承重 - - - Angabe, ob dieses Bauteil tragend ist (JA) oder nichttragend (NEIN) - - Indique si l'objet est censé porter des charges (VRAI) ou non (FAUX). - オブジェクトが荷重を保持するか(TRUE)、保持しないか(FALSE)を示す。 - 表示该对象是否需要承重。 - - - - FireRating - Fire rating for the element. It is given according to the national fire safety classification. - - - - - - - Feuerwiderstandsklasse - Fire Rating - Résistance au feu - 耐火等級 - 防火等级 - - - Feuerwiderstandasklasse gemäß der nationalen oder regionalen Brandschutzverordnung. - - Classement au feu de l'élément donné selon la classification nationale de sécurité incendie. - 当該オブジェクトの耐火等級。国で定めた耐火安全等級分類による。 - 该构件的防火等级。 -该属性的依据为国家防火安全分级。 - - - - - - IfcChimneyタイプとそのすべての実体の定義に共通な属性。 - 所有IfcChimney实例和类型的定义中通用的属性。 - - - - - Pset_CivilElementCommon - Properties common to the definition of all occurrence and type objects of civil element. - - - - - Reference - - - - - - - - - - Status - - - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - - - - - - - - Pset_CoilOccurrence - Coil occurrence attributes attached to an instance of IfcCoil. - - - IfcCoil - - IfcCoil - - - HasSoundAttenuation - TRUE if the coil has sound attenuation, FALSE if it does not. - - - - - - - Has Sound Attenuation - PossedeCorrectionAcoustique - - - - VRAI si la batterie possède une correction acoustique, FAUX si ce n'est pas le cas. - - - - - - - - - - Pset_CoilPHistory - Coil performance history common attributes. -Sound attribute deleted in IFC2x2 Pset Addendum: Use IfcSoundProperties instead. - - - IfcCoil - - IfcCoil - - - AtmosphericPressure - Ambient atmospheric pressure. - - - - - Atmospheric Pressure - Pression atmosphérique - - - - Pression atmosphérique ambiante. - - - - AirPressureDropCurve - Air pressure drop curve, pressure drop – flow rate curve, AirPressureDrop = f (AirflowRate). - - - - - Air Pressure Drop Curve - CourbePerteDeChargeAir - - - - Courbe de perte de charge aéraulique, courbe perte de charge/débit. - - - - SoundCurve - Regenerated sound versus air-flow rate. - - - - - Sound Curve - CourbeSon - - - - Son généré par rapport au débit aéraulique. - - - - FaceVelocity - Air velocity through the coil. - - - - - Face Velocity - VitesseFace - - - - Vitesse de l'air à travers la batterie. - - - - - - - - - - Pset_CoilTypeCommon - Coil type common attributes. - - - IfcCoil - - IfcCoil - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - Référence - 参照記号 - - - - Identification de référence pour ce type spécifique à ce projet, c'est-à-dire type'A-1', fourni à partir du moment où, s'il n'y a pas de référence de classification par rapport à un système de classification reconnu et en usage. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Etat - 状態 - - - - Etat de l'élément, utilisé avant tout pour les projets de rénovation et réaménagement. L'état assigné peut être "Nouveau" - l'élément prévu pour du neuf, "Existant" - l'élément existait et est maintenu, "Démoli" - l'élément existait mais doit être démoli/supprimé, "Provisoire" - l'élément existera à titre provisoire seulement (comme un support structurel par exemple). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - OperationalTemperatureRange - Allowable operational air temperature range. - - - - - - - Operational Temperature Range - PlageTemperatureFonctionnelle - - - - Plage de température fonctionnelle admissible. - - - - AirflowRateRange - Possible range of airflow that can be delivered. For cases where there is no airflow across the coil (e.g. electric coil in a floor slab), then the value is zero. - - - - - - - Airflow Rate Range - PlageDébitAéraulique - - - - Plage possible de débit aéraulique pouvant être délivré. Pour les cas où il n'y a pas de débit à travers la batterie (par ex. batterie électrique en plancher), alors la valeur est zéro. - - - - NominalSensibleCapacity - Nominal sensible capacity. - - - - - - - Nominal Sensible Capacity - PuissanceSensibleNominale - - - - Puissance sensible nominale. - - - - NominalLatentCapacity - Nominal latent capacity. - - - - - - - Nominal Latent Capacity - PuissanceLatenteNominale - - - - Puissance latente nominale. - - - - NominalUA - Nominal UA value. - - - - - - - Nominal UA - UANominale - - - - Valeur nominale du coefficient de transmission thermique totale. - - - - PlacementType - Indicates the placement of the coil. -FLOOR indicates an under floor heater (if coil type is WATERHEATINGCOIL or ELECTRICHEATINGCOIL); -CEILING indicates a cooling ceiling (if coil type is WATERCOOLINGCOIL); -UNIT indicates that the coil is part of a cooling or heating unit, like cooled beam, etc. - - - - FLOOR - CEILING - UNIT - OTHER - NOTKNOWN - UNSET - - - - FLOOR - - Floor - - - - - - - CEILING - - Ceiling - - - - - - - UNIT - - Unit - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Placement Type - TypeImplantation - - - - Précise l'implantation de la batterie. -PLANCHER indique que c'est un plancher chauffant (si le type de batterie is BATTERIEEAUCHAUDE ou CABLECHAUFFANTLECTRIQUE); -PLAFOND indique un plafond rafraïchissant (si le type de la batterie est BATTERIEEAUFROIDE); UNITE indique que la batterie fait partie d'une unité de chauffage ou de refroidissement, tel que poutre froide, etc. - - - - - - - - - - Pset_CoilTypeHydronic - Hydronic coil type attributes. - - - IfcCoil - - IfcCoil - - - FluidPressureRange - Allowable water working pressure range inside the tube. - - - - - - - Fluid Pressure Range - PlagePressionFluide - - - - Plage de pression hydraulique fonctionnelle admissible dans le tube. - - - - CoilCoolant - The fluid used for heating or cooling used by the hydronic coil. - - - - WATER - BRINE - GLYCOL - OTHER - NOTKNOWN - UNSET - - - - WATER - - Water - - - - - - - BRINE - - Brine - - - - - - - GLYCOL - - Glycol - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Coil Coolant - RefrigerantBatterie - - - - Le fluide utilisé pour chauffer ou refroidir dans la batterie deux tubes. - - - - CoilConnectionDirection - Coil connection direction (facing into the air stream). - - - - LEFT - RIGHT - OTHER - NOTKNOWN - UNSET - - - - LEFT - - Left - - - - - - - RIGHT - - Right - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Coil Connection Direction - DirectionConnexionBatterie - - - - Direction de la connexion à la batterie (en face du jet d'air) - - - - CoilFluidArrangement - Fluid flow arrangement of the coil. - -CrossCounterFlow: Air and water flow enter in different directions. -CrossFlow: Air and water flow are perpendicular. -CrossParallelFlow: Air and water flow enter in same directions. - - - - CROSSFLOW - CROSSCOUNTERFLOW - CROSSPARALLELFLOW - OTHER - NOTKNOWN - UNSET - - - - CROSSFLOW - - Cross Flow - - - - - - - CROSSCOUNTERFLOW - - Cross Counter Flow - - - - - - - CROSSPARALLELFLOW - - Cross Parallel Flow - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Coil Fluid Arrangement - DispositionFluideBatterie - - - - Disposition du flux du fluide dans la batterie. - - - - CoilFaceArea - Coil face area in the direction against air the flow. - - - - - - - Coil Face Area - SurfaceEchangeBatterie - - - - Surface d'échange de la batterie dans la direction contraire du jet. - - - - HeatExchangeSurfaceArea - Heat exchange surface area associated with U-value. - - - - - - - Heat Exchange Surface Area - SurfaceEchangeThermique - - - - Surface d'échange thermique associé à la valeur U. - - - - PrimarySurfaceArea - Primary heat transfer surface area of the tubes and headers. - - - - - - - Primary Surface Area - SurfaceEchangePrimaire - - - - Surface d'échange thermique au primaire des tubes et aux collecteurs. - - - - SecondarySurfaceArea - Secondary heat transfer surface area created by fins. - - - - - - - Secondary Surface Area - SurfaceEchangeSecondaire - - - - Surface d'échange thermique au secondaire crée par les ailettes. - - - - TotalUACurves - Total UA curves, UA - air and water velocities, UA = [(C1 * AirFlowRate^0.8)^-1 + (C2 * WaterFlowRate^0.8)^-1]^-1. Note: as two variables are used, DefiningValues and DefinedValues are null, and values are stored in IfcTable in the following order: AirFlowRate,WaterFlowRate,UA. The IfcTable is related to IfcPropertyTableValue using IfcMetric and IfcPropertyConstraintRelationship. - - - - - - - - - - - - - Total UACurves - CourbesCoefficientTransmissionThermiqueTotal - - - - Courbes de coefficient de transmission thermique total - vitesses de l'eau et de l'air, U.S = [(C1*DébitAéraulique^0,8)^-1 + (C2*DébitHydraulique^0,8)^-1]^-1. -Remarque: comme deux variables sont utilisées, ValeursDefinir et ValeursDéfinies sont nulles, et les valeurs sont enregistrées dans IfcTable dans l'ordre suivant: -DébitAéraulique, DebitHydraulique, U.S. -Le IfcTable est lié à IfcPropertyTableValue en utilisant IfcMetric et IfcPropertyConstraintRelationship. - - - - WaterPressureDropCurve - Water pressure drop curve, pressure drop – flow rate curve, WaterPressureDrop = f(WaterflowRate). - - - - - - - - - - - - - Water Pressure Drop Curve - CourbePerteChargeHydraulique - - - - Courbe de perte de charge hydraulique, courbe perte de charge - débit, perte de charge = f(DébitHydraulique). - - - - BypassFactor - Fraction of air that is bypassed by the coil (0-1). - - - - - - - Bypass Factor - FacteurBypass - - - - Fraction de l'air qui est bypassé par la batterie (0 à 1). - - - - SensibleHeatRatio - Air-side sensible heat ratio, or fraction of sensible heat transfer to the total heat transfer. - - - - - - - Sensible Heat Ratio - RatioChaleurSensible - - - - Ratio de chaleur sensible, ou fraction d'échange thermique sensible sur la chaleur thermique totale échangée. - - - - WetCoilFraction - Fraction of coil surface area that is wet (0-1). - - - - - - - Wet Coil Fraction - FractionBatterieHumide - - - - Fraction de la surface de la batterie qui est humide (0 à 1). - - - - - - - - - - Pset_ColumnCommon - Properties common to the definition of all occurrence and type objects of column. - - - IfcColumn - - IfcColumn - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as "construction type". It should be provided as an alternative to the name of the "object type", if the software does not support object types. - - - - - - - Bauteiltyp - Reference - Reference - 参照記号 - 参考号 - - - Bezeichnung zur Zusammenfassung gleichartiger Bauteile zu einem Bauteiltyp (auch Konstruktionstyp genannt). Alternativ zum Namen des "Typobjekts", insbesondere wenn die Software keine Typen unterstützt. - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1") pour désigner un "type de construction". Une alternative au nom d'un objet type lorsque les objets types ne sont pas gérés par le logiciel. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 若未采用已知的分类系统,则该属性为该项目中该类型构件的参考编号(例如,类型A-1)。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Status - Statut - 状態 - - - Status bzw. Phase des Bauteils insbesondere beim Bauen im Bestand. "Neu" (new) neues Bauteil als Ergänzung, "Bestand" (existing) bestehendes Bauteil, dass erhalten bleibt, "Abbruch" (demolish) Bauteil, das abgebrochen wird, "Temporär" (temporary) Bauteil und andere Bauelemente, die vorübergehend eingebaut werden (wie Abstützungen, etc.) - - Statut de l'élément, principalement utilisé dans les projets de rénovation et de réhabilitation. Le statut a pour valeur NOUVEAU pour un nouvel élément, EXISTANT pour un élément existant qui est conservé, DEMOLI pour un élément existant à démolir et TEMPORAIRE pour un élément temporaire (comme une structure support provisoire). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - Slope - Slope angle - relative to horizontal (0.0 degrees). - -The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. For geometry editing applications, like CAD: this value should be write-only. - - - - - - - Neigungswinkel - Slope - Inclinaison - 傾斜 - 坡度 - - - Neigungswinkel der Stütze relative zur Horizontalen (0 Grad). - -Dieser Parameter wird zusätzlich zur geometrischen Repräsentation bereitgestellt. Im Fall der Inkonsistenz zwischen dem Parameter und der Geometrie hat die geometrische Repräsention Priorität. Dieser Parameter ist für CAD Software write-only. - - Angle d'inclinaison avec l'horizontale (0 degrés). Cette propriété est donnée en complément de la représentation de la forme et des paramètres géométriques qui la déterminent. En cas d'incohérence entre ces paramètres géométriques et cette propriété, ce sont les paramètres géométriques qui priment. - 傾斜角度。水平を0度とする。 - 相对于水平(0.0度)方向的坡度角。 -该属性所提供的形状信息是对内部形状描述和几何参数的补充。如果几何参数与该属性所提供的形状属性不符,应以几何参数为准。对CAD等几何编辑程序,该属性应为只写类型。 - - - - Roll - Rotation against the longitudinal axis - relative to the global X direction for all columns that are vertical in regard to the global coordinate system (Profile direction equals global X is Roll = 0.). For all non-vertical columns the following applies: Roll is relative to the global Z direction f(Profile direction of non-vertical columns that equals global Z is Roll = 0.) - -The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. For geometry editing applications, like CAD: this value should be write-only. - -Note: new property in IFC4 - - - - - - - Drehwinkel - Roll - RotationAutourAxeLongitudinal - 回転 - 转角 - - - Drehwinkel der Stütze relative zur globalen X Ausrichtung (O Grad). Bei nicht-vertikalen Stützen wird die Verdrehung analog zu den Balken (Verkippung gegen die Vertikale) angegeben. - -Dieser Parameter wird zusätzlich zur geometrischen Repräsentation bereitgestellt. Im Fall der Inkonsistenz zwischen dem Parameter und der Geometrie hat die geometrische Repräsention Priorität. Dieser Parameter ist für CAD Software write-only. - - Rotation autour de l'axe longitudinal - relativement à l'axe X pour tous les poteaux qui sont verticaux relativement au repère absolu (la direction du profil est celle de l'axe X si la valeur est 0). Pour tous les poteaux non verticaux, la valeur de la propriété est relative à l'axe Z (la direction du profil des poteaux non verticaux est celle de l'axe Z si la valeur est 0). -Cette propriété est donnée en complément de la représentation de la forme de l'élément et des paramètres géométriques qui la déterminent. En cas d'incohérence entre ces paramètres géométriques et cette propriété, ce sont les paramètres géométriques qui priment. Les applications qui déterminent la géométrie comme les logiciels de CAO ne doivent pas autoriser la modification de cette propriété. Note : nouvelle propriété de la version IFC2x4. - 柱の長軸に対する回転。 - 相对于纵轴的旋转角。对全局坐标系中的垂直柱,该属性为相对于X轴的角度。(若轮廓方向在X轴上,则转角为0。)对全局坐标系中的非垂直柱,该属性为相对于Z轴的角度。(若轮廓方向在Z轴上,则转角为0。) -该属性所提供的形状信息是对内部形状描述和几何参数的补充。如果几何参数与该属性所提供的形状属性不符,应以几何参数为准。对CAD等几何编辑程序,该属性应为只写类型。 -注:IFC2x4新添属性 - - - - IsExternal - Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building. - - - - - - - Außenbauteil - Is External - EstExterieur - 外部区分 - 是否外部构件 - - - Angabe, ob dieses Bauteil ein Aussenbauteil ist (JA) oder ein Innenbauteil (NEIN). Als Aussenbauteil grenzt es an den Aussenraum (oder Erdreich, oder Wasser). - - Indique si l'élément est conçu pour être utilisé à l'extérieur (VRAI) ou non (FAUX). Si VRAI, c'est un élément extérieur qui donne sur l'extérieur du bâtiment. - 外部の部材かどうかを示すブーリアン値。もしTRUEの場合、外部の部材で建物の外側に面している。 - 表示该图元是否设计为外部构件。若是,则该图元为外部图元,朝向建筑物的外部。 - - - - ThermalTransmittance - Thermal transmittance coefficient (U-Value) of the element. Here the total thermal transmittance coefficient through the column within the direction of the thermal flow (including all materials). - -Nore: new property in IFC4 - - - - - - - U-Wert - Thermal Transmittance - TransmissionThermique - 熱貫流率 - 导热系数 - - - Wärmedurchgangskoeffizient (U-Wert) der Materialschichten. -Hier der Gesamtwärmedurchgangskoeffizient des Balkens (in Richtung des Wärmeflusses), angegeben ohne den inneren und äußeren Wärmeübergangswiderstand. - - Coefficient de transmission thermique surfacique (U). C'est le coefficient global de transmission thermique à travers le poteau dans la direction du flux thermique (tous matériaux inclus). Nouvelle propriété de la version 2x4. - 熱貫流率U値。ここでは柱を通した熱移動の方向における全体の熱還流率を示す。 - 材料的导热系数(U值)。 - -表示该柱在传热方向上的整体导热系数(包括所有材料)。 - -注:IFC2x4新添属性 - - - - LoadBearing - Indicates whether the object is intended to carry loads (TRUE) or not (FALSE). - - - - - - - Tragendes Bauteil - Load Bearing - Porteur - 耐力部材 - 是否承重 - - - Angabe, ob dieses Bauteil tragend ist (JA) oder nichttragend (NEIN) - - Indique si l'objet est censé porter des charges (VRAI) ou non (FAUX). - 荷重に関係している部材かどうかを示すブーリアン値。 - 表示该对象是否需要承重。 - - - - FireRating - Fire rating for the element. -It is given according to the national fire safety classification. - - - - - - - Feuerwiderstandsklasse - Fire Rating - ResistanceAuFeu - 耐火等級 - 防火等级 - - - Feuerwiderstandasklasse gemäß der nationalen oder regionalen Brandschutzverordnung. - - Classement au feu de l'élément donné selon la classification nationale de sécurité incendie. - 主要な耐火等級。関連する建築基準法、消防法などの国家基準を参照。 - 该构件的防火等级。 -该属性的依据为国家防火安全分级。 - - - - - - Définition de l'IAI : propriétés communes à la définition de toutes les instances de la classe IfcColumn - IfcColumn(柱)オブジェクトに関する共通プロパティセット定義。 - 所有IfcColumn实例的定义中通用的属性。 - - - - - Pset_CommunicationsAppliancePHistory - Captures realtime information for communications devices, such as for server farm energy usage. HISTORY: Added in IFC4. - - - IfcCommunicationsAppliance - - IfcCommunicationsAppliance - - - PowerState - Indicates the power state of the device where True is on and False is off. - - - - - Power State - - - - - - - - - - - - - Pset_CommunicationsApplianceTypeCommon - Common properties for communications appliances. HISTORY: Added in IFC4. - - - IfcCommunicationsAppliance - - IfcCommunicationsAppliance - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照 - 참조 - - - - 当該プロジェクトで定義する形式の参照ID(例:A-1)、承認された分類に存在しないときに使用される。 - 해당 프로젝트에 정의된 형식의 참조 ID (예 : A-1) 승인된 분류에 존재하지 않을 때 사용된다. - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - - - 通信機器の共通プロパティ。 -IFC4にて追加。 - - - - - Pset_CompressorPHistory - Compressor performance history attributes. - - - IfcCompressor - - IfcCompressor - - - CompressorCapacity - The product of the ideal capacity and the overall volumetric efficiency of the compressor. - - - - - Compressor Capacity - PuissanceCompresseur - - - - Le produit de la puissance optimale par le rendement global du compresseur. - - - - EnergyEfficiencyRatio - Energy efficiency ratio (EER). - - - - - Energy Efficiency Ratio - CoefficientEfficacitéThermique - - - - EER, coefficient d'efficacité Thermique - - - - CoefficientOfPerformance - Coefficient of performance (COP). - - - - - Coefficient Of Performance - CoefficientPerformance - - - - Coefficient de performance (COP). - - - - VolumetricEfficiency - Ratio of the actual volume of gas entering the compressor to the theoretical displacement of the compressor. - - - - - Volumetric Efficiency - RendementVolumétrique - - - - Rapport entre le volume effectif de gaz rentrant dans le compresseur et le volume déplacé théorique du compresseur. - - - - CompressionEfficiency - Ratio of the work required for isentropic compression of the gas to the work delivered to the gas within the compression volume (as obtained by measurement). - - - - - Compression Efficiency - RendementCompression - - - - Rapport entre le travail requis pour une compression isentropique du gaz et le travail fourni au gaz dans le volume comprimé (telq qu'obtenu par mesure). - - - - MechanicalEfficiency - Ratio of the work (as measured) delivered to the gas to the work input to the compressor shaft. - - - - - Mechanical Efficiency - RendementMécanique - - - - Rapport entre le travail fourni (tel que mesuré) au gaz et le travail fourni à l'arbre du compresseur. - - - - IsentropicEfficiency - Ratio of the work required for isentropic compression of the gas to work input to the compressor shaft. - - - - - Isentropic Efficiency - RendementIsentropique - - - - Rapport entre le travail requis pour une compression isentropique du gaz et le travail fourni à l'arbre du compresseur. - - - - CompressorTotalEfficiency - Ratio of the thermal cooling capacity to electrical input. - - - - - Compressor Total Efficiency - RendementGlobalIsentropique - - - - Rapport entre la puissance frigorifique et l'énergie électrique absorbée. - - - - ShaftPower - The actual shaft power input to the compressor. - - - - - Shaft Power - PuissanceArbre - - - - La puissance mécanique appliquée au niveau de l'arbre du compresseur. - - - - InputPower - Input power to the compressor motor. - - - - - Input Power - PuissanceEntréeMoteur - - - - Puissance fournie au moteur du compresseur. - - - - LubricantPumpHeatGain - Lubricant pump heat gain. - - - - - Lubricant Pump Heat Gain - GainThermiqueLubrifiantPompe - - - - Gain thermique par lubrification de la pompe à chaleur. - - - - FrictionHeatGain - Friction heat gain. - - - - - Friction Heat Gain - GainThermiqueFriction - - - - Gain thermique par friction. - - - - CompressorTotalHeatGain - Compressor total heat gain. - - - - - Compressor Total Heat Gain - GainThermiqueTotalCompresseur - - - - Gain thermique total au niveau du compresseur. - - - - FullLoadRatio - Ratio of actual power to full load power as a quadratic function of part load, at certain condensing and evaporating temperature, FracFullLoadPower = f ( PartLoadRatio). - - - - - Full Load Ratio - CoefficientChargeTotale - - - - Rapport entre puissance actuelle sur la puissance à pleine charge, comme fonction quadratique de la charge partielle, à une température de condensation et une température d'évaporation donnée, FracFullLoadPower = f (RapportChargePartielle). - - - - - - - - - - Pset_CompressorTypeCommon - Compressor type common attributes. - - - IfcCompressor - - IfcCompressor - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - Référence - 参照記号 - - - - Identification de référence pour ce type spécifique à ce projet, c'est-à-dire type'A-1', fourni à partir du moment où, s'il n'y a pas de référence de classification par rapport à un système de classification reconnu et en usage. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Etat - 状態 - - - - Etat de l'élément, utilisé avant tout pour les projets de rénovation et réaménagement. L'état assigné peut être "Nouveau" - l'élément prévu pour du neuf, "Existant" - l'élément existait et est maintenu, "Démoli" - l'élément existait mais doit être démoli/supprimé, "Provisoire" - l'élément existera à titre provisoire seulement (comme un support structurel par exemple). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - PowerSource - Type of power driving the compressor. - - - - MOTORDRIVEN - ENGINEDRIVEN - GASTURBINE - OTHER - NOTKNOWN - UNSET - - - - MOTORDRIVEN - - Motor Driven - - - - - - - ENGINEDRIVEN - - Engine Driven - - - - - - - GASTURBINE - - Gas Turbine - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Power Source - SourcePuissance - - - - Type de puissance fournie au compresseur - - - - RefrigerantClass - Refrigerant class used by the compressor. - -CFC: Chlorofluorocarbons. -HCFC: Hydrochlorofluorocarbons. -HFC: Hydrofluorocarbons. - - - - CFC - HCFC - HFC - HYDROCARBONS - AMMONIA - CO2 - H2O - OTHER - NOTKNOWN - UNSET - - - - CFC - - CFC - - - Chlorofluorocarbons - - - - HCFC - - HCFC - - - Hydrochlorofluorocarbons - - - - HFC - - HFC - - - Hydrofluorocarbons - - - - HYDROCARBONS - - Hydrocarbons - - - - - - - AMMONIA - - Ammonia - - - - - - - CO2 - - CO2 - - - - - - - H2O - - H2O - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Refrigerant Class - ClasseRéfrigérant - - - - Classe de réfrigérant utilisé par le compresseur. - -CFC -HCFC -HFC - - - - MinimumPartLoadRatio - Minimum part load ratio as a fraction of nominal capacity. - - - - - - - Minimum Part Load Ratio - CoefficientMinimalChargePartielle - - - - Coefficient minimum de charge partielle en tant que fraction de la puissance nominale. - - - - MaximumPartLoadRatio - Maximum part load ratio as a fraction of nominal capacity. - - - - - - - Maximum Part Load Ratio - CoefficientMaximalChargePartielle - - - - Coefficient maximal de charge partielle en tant que fraction de la puissance nominale. - - - - CompressorSpeed - Compressor speed. - - - - - - - Compressor Speed - VitesseCompresseur - - - - Vitesse du compresseur - - - - NominalCapacity - Compressor nameplate capacity. - - - - - - - Nominal Capacity - PuissanceCompresseur - - - - Puissance du compresseur au niveau de sa plaque. - - - - IdealCapacity - Compressor capacity under ideal conditions. - - - - - - - Ideal Capacity - PuissanceMaximale - - - - Puissance maximale sous des conditions idéales - - - - IdealShaftPower - Compressor shaft power under ideal conditions. - - - - - - - Ideal Shaft Power - PuissanceArbreMaximale - - - - Puissance au niveau de l'arbre du compresseur sous conditions idéales. - - - - HasHotGasBypass - Whether or not hot gas bypass is provided for the compressor. TRUE = Yes, FALSE = No. - - - - - - - Has Hot Gas Bypass - PossedeBypassGazChaud - - - - Qu'il y ait ou non un bypass du gaz chaud fourni au niveau du compresseur, VRAI= oui, FAUX= Non. - - - - ImpellerDiameter - Diameter of compressor impeller - used to scale performance of geometrically similar compressors. - - - - - - - Impeller Diameter - DiametreRotor - - - - Diamètre du rotor du compresseur - utilisé pour dimensionner les performances des compresseurs géométriquement similaires. - - - - - - コンプレッサー型の共通プロパティ属性設定。 - - - - - Pset_ConcreteElementGeneral - General properties common to different types of concrete elements, including reinforced concrete elements. The property set can be used by a number of subtypes of IfcBuildingElement, indicated that such element is designed or constructed using a concrete construction method. - - - IfcBeam - IfcBuildingElementProxy - IfcChimney - IfcColumn - IfcFooting - IfcMember - IfcPile - IfcPlate - IfcRailing - IfcRamp - IfcRampFlight - IfcRoof - IfcSlab - IfcStair - IfcStairFlight - IfcWall - IfcCivilElement - - IfcBeam,IfcBuildingElementProxy,IfcChimney,IfcColumn,IfcFooting,IfcMember,IfcPile,IfcPlate,IfcRailing,IfcRamp,IfcRampFlight,IfcRoof,IfcSlab,IfcStair,IfcStairFlight,IfcWall,IfcCivilElement - - - ConstructionMethod - Designator for whether the concrete element is constructed on site or prefabricated. Allowed values are: 'In-Situ' vs 'Precast'. - - - - - - - Ausführung - Construction Method - - - Angabe, ob dieses Betonbauteil als Ortbeton ("In-Situ") oder als Fertigteil ("Precast") ausgeführt werden soll. - - - - - StructuralClass - The structural class defined for the concrete structure (e.g. '1'). - - - - - - - Structural Class - 構造クラス - 구조 클래스 - - - - 構造クラスはコンクリート構造を定義した。(例えば「1」) - 구조 클래스는 콘크리트 구조를 정의했다 (예를 들어 "1") - - - - StrengthClass - Classification of the concrete strength in accordance with the concrete design code which is applied in the project. - - - - - - - Betonfestigkeitsklasse - Strength Class - - - Klassifikation der Betonfestigkeit gemäß der aktuellen, im Projekt angewandten, Norm. - - - - - ExposureClass - Classification of exposure to environmental conditions, usually specified in accordance with the concrete design code which is applied in the project. - - - - - - - Expositionsklasse - Exposure Class - - - Klassifikation der Widerstandsfähigkeit gegenüber chemischen und physikalischen Einwirkungen gemäß der aktuellen, im Projekt angewandten, Norm. - - - - - ReinforcementVolumeRatio - The required ratio of the effective mass of the reinforcement to the effective volume of the concrete of a reinforced concrete structural element. - - - - - - - Bewehrungsgrad Volumen - Reinforcement Volume Ratio - - - Das geforderte Verhältnis der effektiven Masse der Bewehrung im Verhältnis zur effektiven Masse des Betons für dieses Element. - - - - - ReinforcementAreaRatio - The required ratio of the effective area of the reinforcement to the effective area of the concrete At any section of a reinforced concrete structural element. - - - - - - - Bewehrungsgrad Fläche - Reinforcement Area Ratio - - - Das geforderte Verhältnis der effektiven flächenbezogenen Masse der Bewehrung im Verhältnis zur effektiven Fläche des Betons für dieses Element. - - - - - DimensionalAccuracyClass - Classification designation of the dimensional accuracy requirement according to local standards. - - - - - - - Dimensional Accuracy Class - 寸法精度クラス - 치수 정밀도 클래스 - - - - 国の基準が求める寸法精度の分類指定。 - 국가 표준이 요구하는 치수 정밀도의 분류 지정 - - - - ConstructionToleranceClass - Classification designation of the on-site construction tolerances according to local standards. - - - - - - - Construction Tolerance Class - 製造許容クラス - 제조 허용 클래스 - - - - 国の基準が求める現場での製造許容の分類指定。 - 국가 표준이 요구하는 현장에서 제조 허용 범주 지정 - - - - ConcreteCover - The protective concrete cover at the reinforcing bars according to local building regulations. - - - - - - - Betonüberdeckung - Concrete Cover - - - Abstand zwischen der Betonoberfläche und der Außenkante einer vom Beton umhüllten Bewehrung. - - - - - ConcreteCoverAtMainBars - The protective concrete cover at the main reinforcing bars according to local building regulations. - - - - - - - Betonüberdeckung Hauptstäbe - Concrete Cover At Main Bars - 主筋のコンクリート被り - 주근 콘크리트 입고 - - - Abstand zwischen der Betonoberfläche und der Außenkante den vom Beton umhüllten Bewehrungshauptstäben. - - 国の建築基準に従い、主鉄筋をコンクリートの被りで保護する。 - 국가의 건축 기준에 따라 주로 철근을 콘크리트 입고로 보호 - - - - ConcreteCoverAtLinks - The protective concrete cover at the reinforcement links according to local building regulations. - - - - - - - Betonüberdeckung Verbindungsstäbe - Concrete Cover At Links - 補強筋のコンクリート被り - 보강근 콘크리트 입고 - - - Abstand zwischen der Betonoberfläche und der Außenkante der vom Beton umhüllten Bewehrungsverbindungsstäben. - - 国の建築基準に従い、補強筋をコンクリートの被りで保護する。 - 국가의 건축 기준에 따라 보강근 콘크리트의 입고로 보호 - - - - ReinforcementStrengthClass - Classification of the reinforcement strength in accordance with the concrete design code which is applied in the project. The reinforcing strength class often combines strength and ductility. - - - - - - - Reinforcement Strength Class - - - - - - - - Generelle Eigenschaften die allen Betonbauteilen, einschließlich Stahlbetonbauteilen, gemeinsam sind. Dieser Eigenschaftssatz kann den verschiedenen Bauelementklassen (Subtypen von IfcBuildingElement) zugeordnet werden. - - コンクリート要素の異なるタイプに対する共通の一般的な属性。 Pset は IfcBuildingElement の多くのサブタイプによって使うことができる。 - - - - - Pset_CondenserPHistory - Condenser performance history attributes. - - - IfcCondenser - - IfcCondenser - - - HeatRejectionRate - Sum of the refrigeration effect and the heat equivalent of the power input to the compressor. - - - - - Heat Rejection Rate - - - - - - - ExteriorHeatTransferCoefficient - Exterior heat transfer coefficient associated with exterior surface area. - - - - - Exterior Heat Transfer Coefficient - - - - - - - InteriorHeatTransferCoefficient - Interior heat transfer coefficient associated with interior surface area. - - - - - Interior Heat Transfer Coefficient - - - - - - - RefrigerantFoulingResistance - Fouling resistance on the refrigerant side. - - - - - Refrigerant Fouling Resistance - - - - - - - CondensingTemperature - Refrigerant condensing temperature. - - - - - Condensing Temperature - - - - - - - LogarithmicMeanTemperatureDifference - Logarithmic mean temperature difference between refrigerant and water or air. - - - - - Logarithmic Mean Temperature Difference - - - - - - - UAcurves - UV = f (VExterior, VInterior), UV as a function of interior and exterior fluid flow velocity at the entrance. - - - - - UAcurves - - - - - - - CompressorCondenserHeatGain - Heat gain between condenser inlet to compressor outlet. - - - - - Compressor Condenser Heat Gain - - - - - - - CompressorCondenserPressureDrop - Pressure drop between condenser inlet and compressor outlet. - - - - - Compressor Condenser Pressure Drop - - - - - - - CondenserMeanVoidFraction - Mean void fraction in condenser. - - - - - Condenser Mean Void Fraction - - - - - - - WaterFoulingResistance - Fouling resistance on water/air side. - - - - - Water Fouling Resistance - - - - - - - - - - - - - Pset_CondenserTypeCommon - Condenser type common attributes. - - - IfcCondenser - - IfcCondenser - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - - - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - - - - RefrigerantClass - Refrigerant class used by the condenser. - -CFC: Chlorofluorocarbons. -HCFC: Hydrochlorofluorocarbons. -HFC: Hydrofluorocarbons. - - - - CFC - HCFC - HFC - HYDROCARBONS - AMMONIA - CO2 - H2O - OTHER - NOTKNOWN - UNSET - - - - CFC - - CFC - - - Chlorofluorocarbons - - - - HCFC - - HCFC - - - Hydrochlorofluorocarbons - - - - HFC - - HFC - - - Hydrofluorocarbons - - - - HYDROCARBONS - - Hydrocarbons - - - - - - - AMMONIA - - Ammonia - - - - - - - CO2 - - CO2 - - - - - - - H2O - - H2O - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Refrigerant Class - - - - - - - ExternalSurfaceArea - External surface area (both primary and secondary area). - - - - - - - External Surface Area - - - - - - - InternalSurfaceArea - Internal surface area. - - - - - - - Internal Surface Area - - - - - - - InternalRefrigerantVolume - Internal volume of condenser (refrigerant side). - - - - - - - Internal Refrigerant Volume - - - - - - - InternalWaterVolume - Internal volume of condenser (water side). - - - - - - - Internal Water Volume - - - - - - - NominalHeatTransferArea - Nominal heat transfer surface area associated with nominal overall heat transfer coefficient. - - - - - - - Nominal Heat Transfer Area - - - - - - - NominalHeatTransferCoefficient - Nominal overall heat transfer coefficient associated with nominal heat transfer area. - - - - - - - Nominal Heat Transfer Coefficient - - - - - - - - - コンデンサー型の共通プロパティ属性設定。 - - - - - Pset_Condition - Determines the state or condition of an element at a particular point in time. - - - IfcElement - - IfcElement - - - AssessmentDate - Date on which the overall condition is assessed - - - - - - - Assessment Date - 評価日 - - - - 全体状況を評価した日。 - - - - AssessmentCondition - The overall condition of a product based on an assessment of the contributions to the overall condition made by the various criteria considered. The meanings given to the values of assessed condition should be agreed and documented by local agreements. For instance, is overall condition measured on a scale of 1 - 10 or by assigning names such as Good, OK, Poor. - - - - - - - Assessment Condition - 評価状態 - - - - 様々な基準を用いた評価による製品に関する全体的な状態。評価された状態値の意味は、ローカル協定によって同意され、文書化されなければならない。例えば、状態を1から10の値で計測したり、Good, Ok, Poor等で表す。 - - - - AssessmentDescription - Qualitative description of the condition. - - - - - - - Assessment Description - 評価記述 - - - - 状態に関する定性的な記述。 - - - - - - ある時点における、FM要素の状態・状況を規定する属性情報。 - - - - - Pset_ConstructionResource - Properties for tracking resource usage over time. - - - IfcConstructionResource - - IfcConstructionResource - - - ScheduleWork - The scheduled work on behalf of the resource allocation. - - - - - Schedule Work - 予定作業時間 - - - - 資源配分のための予定された作業。 - - - - ActualWork - The actual work on behalf of the resource allocation. - - - - - Actual Work - 実績作業時間 - - - - 資源配分のための実績の作業。 - - - - RemainingWork - The remaining work on behalf of the resource allocation. - - - - - Remaining Work - 残存作業時間 - - - - 資源配分のための残存している作業。 - - - - ScheduleCost - The budgeted cost on behalf of the resource allocation. - - - - - Schedule Cost - 予定コスト - - - - 資源配分のための予定されているコスト。 - - - - ActualCost - The actual cost on behalf of the resource allocation. - - - - - Actual Cost - 実績コスト - - - - 資源配分のための実績のコスト。 - - - - RemainingCost - The remaining cost on behalf of the resource allocation. - - - - - Remaining Cost - 残存コスト - - - - 資源配分のための残存しているコスト。 - - - - ScheduleCompletion - The scheduled completion percentage of the allocation. - - - - - Schedule Completion - 予定完了率 - - - - 予定された完了率。 - - - - ActualCompletion - The actual completion percentage of the allocation. - - - - - Actual Completion - 実績完了率 - - - - 実績の完了率。 - - - - - - - - - - Pset_ControllerPHistory - Properties for history of controller values. HISTORY: Added in IFC4. - - - IfcController - - IfcController - - - Value - Indicates values over time which may be recorded continuously or only when changed beyond a particular deadband. The range of possible values is defined by the Value property on the corresponding occurrence property set (Pset_ControllerTypeFloating, Pset_ControllerTypeProportional, Pset_ControllerTypeMultiPosition, or Pset_ControllerTypeTwoPosition). - - - - - Value - デフォルト出力時系列定数 - 이상 출력 시계열 상수 - - - - 時間とともに値を示す。 -Pset_ControllerTypeValue.Valueに対応 -※ 設定可能情報は IfcTimeSeriesプロパティ参照 - 시간이 지남에 오류 상태를 나타내는 Pset_ControllerTypeValue.Fault에 대응 ※ 설정 가능한 정보는 IfcTimeSeries 속성 참조 - - - - Quality - Indicates the quality of measurement or failure condition, which may be further qualified by the Status. True: measured values are considered reliable; False: measured values are considered not reliable (i.e. a fault has been detected); Unknown: reliability of values is uncertain. - - - - - Quality - 기본 출력 시계열 상수 - - - - 시간이 지남에 값을 나타내는 Pset_ControllerTypeValue.Value에 대응 ※ 설정 가능한 정보는 IfcTimeSeries 속성 참조 - - - - Status - Indicates an error code or identifier, whose meaning is specific to the particular automation system. Example values include: 'ConfigurationError', 'NotConnected', 'DeviceFailure', 'SensorFailure', 'LastKnown, 'CommunicationsFailure', 'OutOfService'. - - - - - Status - - - - - - - - - コントローラの性能履歴属性。 -IFC4 にて新規追加。 - - - - - Pset_ControllerTypeCommon - Controller type common attributes. - - - IfcController - - IfcController - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照記号 - 참조ID - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 해당 프로젝트에서 사용이 유형에 대한 참조 ID (예 : 'A-1') ※ 기본이있는 경우 그 기호를 사용 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - - - コントローラ共通属性。 - - - - - Pset_ControllerTypeFloating - Properties for signal handling for an analog controller taking disparate valued multiple inputs and creating a single valued output. HISTORY: IFC4 adapted from Pset_ControllerTypeCommon and applicable predefined type made specific to FLOATING; ACCUMULATOR and PULSECONVERTER types added; additional properties added to replace Pset_AnalogInput and Pset_AnalogOutput. - - - IfcController/FLOATING - - IfcController/FLOATING - - - ControlType - The type of signal modification effected and applicable ports: - -CONSTANT: No inputs; SignalOffset is written to the output value. -MODIFIER: Single analog input is read, added to SignalOffset, multiplied by SignalFactor, and written to the output value. -ABSOLUTE: Single analog input is read and absolute value is written to the output value. -INVERSE: Single analog input is read, 1.0 is divided by the input value and written to the output value. -HYSTERISIS: Single analog input is read, delayed according to SignalTime, and written to the output value. -RUNNINGAVERAGE: Single analog input is read, averaged over SignalTime, and written to the output value. -DERIVATIVE: Single analog input is read and the rate of change during the SignalTime is written to the output value. -INTEGRAL: Single analog input is read and the average value during the SignalTime is written to the output value. -BINARY: Single binary input is read and SignalOffset is written to the output value if True. -ACCUMULATOR: Single binary input is read, and for each pulse the SignalOffset is added to the accumulator, and while the accumulator is greater than the SignalFactor, the accumulator is decremented by SignalFactor and the integer result is incremented by one. -PULSECONVERTER: Single integer input is read, and for each increment the SignalMultiplier is added and written to the output value. -SUM: Two analog inputs are read, added, and written to the output value. -SUBTRACT: Two analog inputs are read, subtracted, and written to the output value. -PRODUCT: Two analog inputs are read, multiplied, and written to the output value. -DIVIDE: Two analog inputs are read, divided, and written to the output value. -AVERAGE: Two analog inputs are read and the average is written to the output value. -MAXIMUM: Two analog inputs are read and the maximum is written to the output value. -MINIMUM: Two analog inputs are read and the minimum is written to the output value.. -INPUT: Controller element is a dedicated input. -OUTPUT: Controller element is a dedicated output. -VARIABLE: Controller element is an in-memory variable. - - - - CONSTANT - MODIFIER - ABSOLUTE - INVERSE - HYSTERESIS - RUNNINGAVERAGE - DERIVATIVE - INTEGRAL - BINARY - ACCUMULATOR - PULSECONVERTER - LOWERLIMITCONTROL - UPPERLIMITCONTROL - SUM - SUBTRACT - PRODUCT - DIVIDE - AVERAGE - MAXIMUM - MINIMUM - REPORT - SPLIT - INPUT - OUTPUT - VARIABLE - OTHER - NOTKNOWN - UNSET - - - - CONSTANT - - Constant - - - No inputs - - - - MODIFIER - - Modifier - - - Single analog input is read, added to SignalOffset, multiplied by SignalFactor, and written to the output value - - - - ABSOLUTE - - Absolute - - - Single analog input is read and absolute value is written to the output value - - - - INVERSE - - Inverse - - - Single analog input is read, 1 - - - - HYSTERESIS - - Hysteresis - - - - - - - RUNNINGAVERAGE - - Running Average - - - Single analog input is read, averaged over SignalTime, and written to the output value - - - - DERIVATIVE - - Derivative - - - Single analog input is read and the rate of change during the SignalTime is written to the output value - - - - INTEGRAL - - Integral - - - Single analog input is read and the average value during the SignalTime is written to the output value - - - - BINARY - - Binary - - - Single binary input is read and SignalOffset is written to the output value if True - - - - ACCUMULATOR - - Accumulator - - - Single binary input is read, and for each pulse the SignalOffset is added to the accumulator, and while the accumulator is greater than the SignalFactor, the accumulator is decremented by SignalFactor and the integer result is incremented by one - - - - PULSECONVERTER - - Pulse Converter - - - Single integer input is read, and for each increment the SignalMultiplier is added and written to the output value - - - - LOWERLIMITCONTROL - - Lower Limit Control - - - - - - - UPPERLIMITCONTROL - - Upper Limit Control - - - - - - - SUM - - Sum - - - Two analog inputs are read, added, and written to the output value - - - - SUBTRACT - - Subtract - - - Two analog inputs are read, subtracted, and written to the output value - - - - PRODUCT - - Product - - - Two analog inputs are read, multiplied, and written to the output value - - - - DIVIDE - - Divide - - - Two analog inputs are read, divided, and written to the output value - - - - AVERAGE - - Average - - - Single analog input is read, averaged over SignalTime, and written to the output value - - - - MAXIMUM - - Maximum - - - Two analog inputs are read and the maximum is written to the output value - - - - MINIMUM - - Minimum - - - Two analog inputs are read and the minimum is written to the output value - - - - REPORT - - Report - - - - - - - SPLIT - - Split - - - - - - - INPUT - - Input - - - Controller element is a dedicated input - - - - OUTPUT - - Output - - - Controller element is a dedicated output - - - - VARIABLE - - Variable - - - Controller element is an in-memory variable - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Control Type - FLOATING 유형 - - - - 컨트롤러는 항상 하나의 출력 포트와 가변 입력 포트 유형에 따라있는 한결 : output = SignalOffset 수정자 : output = input * SignalFactor + SignalOffset 절대치 : output = | input | 역수 : output = 1.0 / input 지연 : output = 지연 (input, SignalTime 후) 이동 평균 : output = 평균 (inputN, SignalTime 사이) 미분 : output = 미분 (inputN, SignalTime 사이) 적분 : output = 적분 (inputN, SignalTime 사이) 바이너리 : output = SignalOffset ※ input = TRUE의 경우 누적 : output = accumulator ※ accumulator = 펄스 카운트 * SignalOffset ※ if (accumulator> SignalFactor) accumulator - = SignalFactor ??? 펄스 카운터 : output = input * SignalMultiplier ※ input 펄스 카운트, SignalMultiplier은 원인 불명 ??? 총 : output = input1 + input2 뺄셈 : output = input1 - input2 적립 : output = input1 * input2 나누기 : output = input1 / input2 평균 : output = (input1 + input2) / 2 최대 : output = input1 or input2 ※보다 큰 최소 : output = input1 or input2 ※보다 작은 - - - - Labels - Table mapping values to labels, where such labels indicate transition points such as 'Hi', 'Lo', 'HiHi', or 'LoLo'. - - - - - - - - - - - - - Labels - - - - - - - Range - The physical range of values supported by the device. - - - - - - - Range - - - - - - - Value - The expected range and default value. While the property data type is IfcReal (to support all cases including when the units are unknown), a unit may optionally be provided to indicate the measure and unit. The LowerLimitValue and UpperLimitValue must fall within the physical Range and may be used to determine extents when charting Pset_ControllerPHistory.Value. - - - - - - - Value - - - - - - - SignalOffset - Offset constant added to modfied signal. - - - - - - - Signal Offset - 옵셋 - - - - 오프셋 상수 변경 신호에 추가됨 - - - - SignalFactor - Factor multiplied onto offset signal. - - - - - - - Signal Factor - 요소 - - - - 인자는 오프셋 신호 곱셈 - - - - SignalTime - Time factor used for integral and running average controllers. - - - - - - - Signal Time - 시간 요소 - - - - 시간 요소는 INTEGRAL (적분)과 AVERAGE ((이동) 평균) 컨트롤러에 사용됨 - - - - - - - - - - Pset_ControllerTypeMultiPosition - Properties for discrete inputs, outputs, and values within a programmable logic controller. HISTORY: New in IFC4, replaces Pset_MultiStateInput and Pset_MultiStateOutput. - - - IfcController/MULTIPOSITION - - IfcController/MULTIPOSITION - - - ControlType - The type of signal modification effected and applicable ports: - -INPUT: Controller element is a dedicated input. -OUTPUT: Controller element is a dedicated output. -VARIABLE: Controller element is an in-memory variable. - - - - INPUT - OUTPUT - VARIABLE - OTHER - NOTKNOWN - UNSET - - - - INPUT - - Input - - - Controller element is a dedicated input - - - - OUTPUT - - Output - - - Controller element is a dedicated output - - - - VARIABLE - - Variable - - - Controller element is an in-memory variable - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Control Type - - - - - - - Labels - Table mapping values to labels, where each entry corresponds to an integer within the ValueRange. - - - - - - - - - - - - - Labels - - - - - - - Range - The physical range of values supported by the device. - - - - - - - Range - - - - - - - Value - The expected range and default value. The LowerLimitValue and UpperLimitValue must fall within the physical Range. - - - - - - - Value - - - - - - - - - - - - - Pset_ControllerTypeProgrammable - Properties for Discrete Digital Control (DDC) or programmable logic controllers. HISTORY: Added in IFC4. - - - IfcController/PROGRAMMABLE - - IfcController/PROGRAMMABLE - - - ControlType - The type of discrete digital controller: - -PRIMARY: Controller has built-in communication interface for PC connection, may manage secondary controllers. -SECONDARY: Controller communicates with primary controller and its own managed devices. - - - - PRIMARY - SECONDARY - OTHER - NOTKNOWN - UNSET - - - - PRIMARY - - Primary - - - Controller has built-in communication interface for PC connection, may manage secondary controllers - - - - SECONDARY - - Secondary - - - Controller communicates with primary controller and its own managed devices - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Control Type - - - - - - - FirmwareVersion - Indicates version of device firmware according to device manufacturer. - - - - - - - Firmware Version - 펌웨어 버전 - - - - 컨트롤러 펌웨어 버전 - - - - SoftwareVersion - Indicates version of application software according to systems integrator. - - - - - - - Software Version - 소프트웨어 버전 - - - - 컨트롤러 소프트웨어 버전 - - - - Application - Indicates application of controller. - - - - ModemController - TelephoneDirectory - FanCoilUnitController - RoofTopUnitController - UnitVentilatorController - SpaceConfortController - VAV - PumpController - BoilerController - DischargeAirController - OccupancyController - ConstantLightController - SceneController - PartitionWallController - RealTimeKeeper - RealTimeBasedScheduler - LightingPanelController - SunblindController - OTHER - NOTKNOWN - UNSET - - - - MODEMCONTROLLER - - Modem Controller - - - - - - - TELEPHONEDIRECTORY - - Telephone Directory - - - - - - - FANCOILUNITCONTROLLER - - Fan Coil Unit Controller - - - - - - - ROOFTOPUNITCONTROLLER - - Roof Top Unit Controller - - - - - - - UNITVENTILATORCONTROLLER - - Unit Ventilator Controller - - - - - - - SPACECONFORTCONTROLLER - - Space Confort Controller - - - - - - - VAV - - VAV - - - - - - - PUMPCONTROLLER - - Pump Controller - - - - - - - BOILERCONTROLLER - - Boiler Controller - - - - - - - DISCHARGEAIRCONTROLLER - - Discharge Air Controller - - - - - - - OCCUPANCYCONTROLLER - - Occupancy Controller - - - - - - - CONSTANTLIGHTCONTROLLER - - Constant Light Controller - - - - - - - SCENECONTROLLER - - Scene Controller - - - - - - - PARTITIONWALLCONTROLLER - - Partition Wall Controller - - - - - - - REALTIMEKEEPER - - Real Time Keeper - - - - - - - REALTIMEBASEDSCHEDULER - - Real Time Based Scheduler - - - - - - - LIGHTINGPANELCONTROLLER - - Lighting Panel Controller - - - - - - - SUNBLINDCONTROLLER - - Sunblind Controller - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Application - - - - - - - - - - - - - Pset_ControllerTypeProportional - Properties for signal handling for an proportional controller taking setpoint and feedback inputs and creating a single valued output. HISTORY: In IFC4, SignalFactor1, SignalFactor2 and SignalFactor3 changed to ProportionalConstant, IntegralConstant and DerivativeConstant. SignalTime1 and SignalTime2 changed to SignalTimeIncrease and SignalTimeDecrease. - - - IfcController/PROPORTIONAL - - IfcController/PROPORTIONAL - - - ControlType - The type of signal modification. -PROPORTIONAL: Output is proportional to the control error. The gain of a proportional control (Kp) will have the effect of reducing the rise time and reducing , but never eliminating, the steady-state error of the variable controlled. -PROPORTIONALINTEGRAL: Part of the output is proportional to the control error and part is proportional to the time integral of the control error. Adding the gain of an integral control (Ki) will have the effect of eliminating the steady-state error of the variable controlled, but it may make the transient response worse. -PROPORTIONALINTEGRALDERIVATIVE: Part of the output is proportional to the control error, part is proportional to the time integral of the control error and part is proportional to the time derivative of the control error. Adding the gain of a derivative control (Kd) will have the effect of increasing the stability of the system, reducing the overshoot, and improving the transient response of the variable controlled. - - - - PROPORTIONAL - PROPORTIONALINTEGRAL - PROPORTIONALINTEGRALDERIVATIVE - OTHER - NOTKNOWN - UNSET - - - - PROPORTIONAL - - Proportional - - - Output is proportional to the control error - - - - PROPORTIONALINTEGRAL - - Proportional Integral - - - Part of the output is proportional to the control error and part is proportional to the time integral of the control error - - - - PROPORTIONALINTEGRALDERIVATIVE - - Proportional Integral Derivative - - - Part of the output is proportional to the control error, part is proportional to the time integral of the control error and part is proportional to the time derivative of the control error - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Control Type - PROPORTIONAL 유형 - - - - 신호 변경 유형 P (비례), I (적분), D (미분)의 조합 PROPORTIONAL : P (비례) 제어 PROPORTIONALINTEGRAL : PI (비례 적분) 제어 PROPORTIONALINTEGRALDERIVATIVE : PID (비례 적분 미분) 제어 - - - - Labels - Table mapping values to labels, where such labels indicate transition points such as 'Hi', 'Lo', 'HiHi', or 'LoLo'. - - - - - - - - - - - - - Labels - - - - - - - Range - The physical range of values. - - - - - - - Range - - - - - - - Value - The expected range and default value. While the property data type is IfcReal (to support all cases including when the units are unknown), a unit may optionally be provided to indicate the measure and unit. - - - - - - - Value - - - - - - - ProportionalConstant - The proportional gain factor of the controller (usually referred to as Kp). - - - - - - - Proportional Constant - 비례 게인 (Kp) - - - - 비례 게인 (Kp) - - - - IntegralConstant - The integral gain factor of the controller (usually referred to as Ki). Asserted where ControlType is PROPORTIONALINTEGRAL or PROPORTIONALINTEGRALDERIVATIVE. - - - - - - - Integral Constant - 적분 게인 (Ki) - - - - 적분 게인 (Ki) - - - - DerivativeConstant - The derivative gain factor of the controller (usually referred to as Kd). Asserted where ControlType is PROPORTIONALINTEGRALDERIVATIVE. - - - - - - - Derivative Constant - 미분 게인 (Kd) - - - - 미분 게인 (Kd) - - - - SignalTimeIncrease - Time factor used for exponential increase. - - - - - - - Signal Time Increase - 적분 시간 (Ti) - - - - 적분 시간 (Ti) - - - - SignalTimeDecrease - Time factor used for exponential decrease. - - - - - - - Signal Time Decrease - 미분 시간 (Td) - - - - 미분 시간 (Td) - - - - - - - - - - Pset_ControllerTypeTwoPosition - Properties for signal handling for an analog controller taking disparate valued multiple inputs and creating a single valued binary output. HISTORY: In IFC4, extended properties to replace Pset_BinaryInput and Pset_BinaryOutput. - - - IfcController/TWOPOSITION - - IfcController/TWOPOSITION - - - ControlType - The type of signal modification effected and applicable ports: - -LOWERLIMITSWITCH: Single analog input is read and if less than Value.LowerBound then True is written to the output value. -UPPERLIMITSWITCH: Single analog input is read and if more than Value.UpperBound then True is written to the output value. -LOWERBANDSWITCH: Single analog input is read and if less than Value.LowerBound+BandWidth then True is written to the output value. -UPPERBANDSWITCH: Single analog input is read and if more than Value.UpperBound-BandWidth then True is written to the output value. -NOT: Single binary input is read and the opposite value is written to the output value. -AND: Two binary inputs are read and if both are True then True is written to the output value. -OR: Two binary inputs are read and if either is True then True is written to the output value. -XOR: Two binary inputs are read and if one is true then True is written to the output value. -CALENDAR: No inputs; the current time is compared with an IfcWorkCalendar to which the IfcController is assigned and True is written if active. -INPUT: Controller element is a dedicated input. -OUTPUT: Controller element is a dedicated output. -VARIABLE: Controller element is an in-memory variable. - - - - NOT - AND - OR - XOR - LOWERLIMITSWITCH - UPPERLIMITSWITCH - LOWERBANDSWITCH - UPPERBANDSWITCH - AVERAGE - CALENDAR - INPUT - OUTPUT - VARIABLE - OTHER - NOTKNOWN - UNSET - - - - NOT - - Not - - - Single binary input is read and the opposite value is written to the output value - - - - AND - - And - - - Two binary inputs are read and if both are True then True is written to the output value - - - - OR - - Or - - - Two binary inputs are read and if either is True then True is written to the output value - - - - XOR - - Xor - - - Two binary inputs are read and if one is true then True is written to the output value - - - - LOWERLIMITSWITCH - - Lower Limit Switch - - - Single analog input is read and if less than Value - - - - UPPERLIMITSWITCH - - Upper Limit Switch - - - Single analog input is read and if more than Value - - - - LOWERBANDSWITCH - - Lower Band Switch - - - Single analog input is read and if less than Value - - - - UPPERBANDSWITCH - - Upper Band Switch - - - Single analog input is read and if more than Value - - - - AVERAGE - - Average - - - - - - - CALENDAR - - Calendar - - - No inputs - - - - INPUT - - Input - - - Controller element is a dedicated input - - - - OUTPUT - - Output - - - Controller element is a dedicated output - - - - VARIABLE - - Variable - - - Controller element is an in-memory variable - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Control Type - TWOPOSITION 유형 - - - - 신호 변경 유형 리미트 스위치가 범위를 Pset_ControllerTypeValue 값을 묶여 속성에 의해 결정 하한 : if (Value.LowerBound> Input) output = TRUE 상한 : if (Value.UpperBound <Input) output = TRUE 하한 + 불감대 : if (Value.LowerBound + BandWidth> Input) output = TRUE 최대 - 불감대 : if (Value.UpperBound - BandWidth <Input) output = TRUE 논리 부정 : output = NOT (input) 논리적 : output = AND (input1, input2) 논리합 : output = OR (input, input2) 배타적 논리합 : output = XOR (input, input2) 달력 : output = TRUE ※ 컨트롤러에 입력없이하고 IfcWorkCalendar 컨트롤러가 할당되어 현재 시간인 경우 - - - - Labels - Table mapping values to labels, where such labels indicate the meanings of True and False, such as 'Open' and 'Closed' - - - - - - - - - - - - - Labels - - - - - - - Polarity - True indicates normal polarity; False indicates reverse polarity. - - - - - - - Polarity - - - - - - - Value - The default value such as normally-closed or normally-open. - - - - - - - Value - - - - - - - - - - - - - Pset_CooledBeamPHistory - Common performance history attributes for a cooled beam. - - - IfcCooledBeam - - IfcCooledBeam - - - TotalCoolingCapacity - Total cooling capacity. This includes cooling capacity of beam and cooling capacity of supply air. - - - - - Total Cooling Capacity - - - - - - - TotalHeatingCapacity - Total heating capacity. This includes heating capacity of beam and heating capacity of supply air. - - - - - Total Heating Capacity - - - - - - - BeamCoolingCapacity - Cooling capacity of beam. This excludes cooling capacity of supply air. - - - - - Beam Cooling Capacity - - - - - - - BeamHeatingCapacity - Heating capacity of beam. This excludes heating capacity of supply air. - - - - - Beam Heating Capacity - - - - - - - CoolingWaterFlowRate - Water flow rate for cooling. - - - - - Cooling Water Flow Rate - - - - - - - HeatingWaterFlowRate - Water flow rate for heating. - - - - - Heating Water Flow Rate - - - - - - - CorrectionFactorForCooling - Correction factor k as a function of water flow rate (used to calculate cooling capacity). - - - - - Correction Factor For Cooling - - - - - - - CorrectionFactorForHeating - Correction factor k as a function of water flow rate (used to calculate heating capacity). - - - - - Correction Factor For Heating - - - - - - - WaterPressureDropCurves - Water pressure drop as function of water flow rate. - - - - - Water Pressure Drop Curves - - - - - - - SupplyWaterTemperatureCooling - Supply water temperature in cooling mode. - - - - - Supply Water Temperature Cooling - - - - - - - ReturnWaterTemperatureCooling - Return water temperature in cooling mode. - - - - - Return Water Temperature Cooling - - - - - - - SupplyWaterTemperatureHeating - Supply water temperature in heating mode. - - - - - Supply Water Temperature Heating - - - - - - - ReturnWaterTemperatureHeating - Return water temperature in heating mode. - - - - - Return Water Temperature Heating - - - - - - - - - - - - - Pset_CooledBeamPHistoryActive - Performance history attributes for an active cooled beam. - - - IfcCooledBeam/ACTIVE - - IfcCooledBeam/ACTIVE - - - AirFlowRate - Air flow rate. - - - - - Air Flow Rate - - - - - - - Throw - Distance cooled beam throws the air. - - - - - Throw - - - - - - - AirPressureDropCurves - Air pressure drop as function of air flow rate. - - - - - Air Pressure Drop Curves - - - - - - - - - - - - - Pset_CooledBeamTypeActive - Active (ventilated) cooled beam common attributes. - - - IfcCooledBeam/ACTIVE - - IfcCooledBeam/ACTIVE - - - AirFlowConfiguration - Air flow configuration type of cooled beam. - - - - BIDIRECTIONAL - UNIDIRECTIONALRIGHT - UNIDIRECTIONALLEFT - OTHER - NOTKNOWN - UNSET - - - - BIDIRECTIONAL - - Bidirectional - - - - - - - UNIDIRECTIONALRIGHT - - Unidirectional Right - - - - - - - UNIDIRECTIONALLEFT - - Unidirectional Left - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Air Flow Configuration - - - - - - - AirflowRateRange - Possible range of airflow that can be delivered. - - - - - - - Airflow Rate Range - - - - - - - SupplyAirConnectionType - The manner in which the pipe connection is made to the cooled beam. - - - - STRAIGHT - RIGHT - LEFT - TOP - OTHER - NOTKNOWN - UNSET - - - - STRAIGHT - - Straight - - - - - - - RIGHT - - Right - - - - - - - LEFT - - Left - - - - - - - TOP - - Top - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Supply Air Connection Type - - - - - - - ConnectionSize - Duct connection diameter. - - - - - - - Connection Size - - - - - - - - - - - - - Pset_CooledBeamTypeCommon - Cooled beam common attributes. -SoundLevel and SoundAttenuation attributes deleted in IFC2x2 Pset Addendum: Use IfcSoundProperties instead. - - - IfcCooledBeam - - IfcCooledBeam - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - IsFreeHanging - Is it free hanging type (not mounted in a false ceiling)? - - - - - - - Is Free Hanging - - - - - - - PipeConnection - The manner in which the pipe connection is made to the cooled beam. - - - - - - STRAIGHT - - Straight - - - - - - - RIGHT - - Right - - - - - - - LEFT - - Left - - - - - - - TOP - - Top - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Pipe Connection Enum - - - - - - - WaterFlowControlSystemType - Factory fitted waterflow control system. - - - - - - NONE - - None - - - - - - - ONOFFVALVE - - On/Off Valve - - - - - - - 2WAYVALVE - - 2-Way Valve - - - - - - - 3WAYVALVE - - 3-Way Valve - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Water Flow Control System Type - - - - - - - WaterPressureRange - Allowable water circuit working pressure range. - - - - - - - Water Pressure Range - - - - - - - NominalCoolingCapacity - Nominal cooling capacity. - - - - - - - Nominal Cooling Capacity - - - - - - - NominalSurroundingTemperatureCooling - Nominal surrounding temperature (refers to nominal cooling capacity). - - - - - - - Nominal Surrounding Temperature Cooling - - - - - - - NominalSurroundingHumidityCooling - Nominal surrounding humidity (refers to nominal cooling capacity). - - - - - - - Nominal Surrounding Humidity Cooling - - - - - - - NominalSupplyWaterTemperatureCooling - Nominal supply water temperature (refers to nominal cooling capacity). - - - - - - - Nominal Supply Water Temperature Cooling - - - - - - - NominalReturnWaterTemperatureCooling - Nominal return water temperature (refers to nominal cooling capacity). - - - - - - - Nominal Return Water Temperature Cooling - - - - - - - NominalWaterFlowCooling - Nominal water flow (refers to nominal cooling capacity). - - - - - - - Nominal Water Flow Cooling - - - - - - - NominalHeatingCapacity - Nominal heating capacity. - - - - - - - Nominal Heating Capacity - - - - - - - NominalSurroundingTemperatureHeating - Nominal surrounding temperature (refers to nominal heating capacity). - - - - - - - Nominal Surrounding Temperature Heating - - - - - - - NominalSupplyWaterTemperatureHeating - Nominal supply water temperature (refers to nominal heating capacity). - - - - - - - Nominal Supply Water Temperature Heating - - - - - - - NominalReturnWaterTemperatureHeating - Nominal return water temperature (refers to nominal heating capacity). - - - - - - - Nominal Return Water Temperature Heating - - - - - - - NominalWaterFlowHeating - Nominal water flow (refers to nominal heating capacity). - - - - - - - Nominal Water Flow Heating - - - - - - - IntegratedLightingType - Integrated lighting in cooled beam. - - - - - - NONE - - None - - - - - - - DIRECT - - Direct - - - - - - - INDIRECT - - Indirect - - - - - - - DIRECTANDINDIRECT - - Direct and Indirect - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Integrated Lighting Type - - - - - - - FinishColor - Finish color for cooled beam. - - - - - - - Finish Color - - - - - - - CoilLength - Length of coil. - - - - - - - Coil Length - - - - - - - CoilWidth - Width of coil. - - - - - - - Coil Width - - - - - - - - - - - - - Pset_CoolingTowerPHistory - Cooling tower performance history attributes. - - - IfcCoolingTower - - IfcCoolingTower - - - Capacity - Cooling tower capacity in terms of heat transfer rate of the cooling tower between air stream and water stream. - - - - - Capacity - - - - - - - HeatTransferCoefficient - Heat transfer coefficient-area product. - - - - - Heat Transfer Coefficient - - - - - - - SumpHeaterPower - Electrical heat power of sump heater. - - - - - Sump Heater Power - - - - - - - UACurve - UA value as a function of fan speed at certain water flow rate, UA = f ( fan speed). - - - - - UACurve - - - - - - - Performance - Water temperature change as a function of wet-bulb temperature, water entering temperature, water flow rate, air flow rate, Tdiff = f ( Twet-bulb, Twater,in, mwater, mair). - - - - - Performance - - - - - - - - - - - - - Pset_CoolingTowerTypeCommon - Cooling tower type common attributes. -WaterRequirement attribute unit type modified in IFC2x2 Pset Addendum. - - - IfcCoolingTower - - IfcCoolingTower - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - NominalCapacity - Nominal cooling tower capacity in terms of heat transfer rate of the cooling tower between air stream and water stream at nominal conditions. - - - - - - - Nominal Capacity - - - - - - - CircuitType - OpenCircuit: Exposes water directly to the cooling atmosphere. -CloseCircuit: The fluid is separated from the atmosphere by a heat exchanger. -Wet: The air stream or the heat exchange surface is evaporatively cooled. -Dry: No evaporation into the air stream. -DryWet: A combination of a dry tower and a wet tower. - - - - OPENCIRCUIT - CLOSEDCIRCUITWET - CLOSEDCIRCUITDRY - CLOSEDCIRCUITDRYWET - OTHER - NOTKNOWN - UNSET - - - - OPENCIRCUIT - - Open Circuit - - - - - - - CLOSEDCIRCUITWET - - Closed Circuit Wet - - - - - - - CLOSEDCIRCUITDRY - - Closed Circuit Dry - - - - - - - CLOSEDCIRCUITDRYWET - - Closed Circuit Dry Wet - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Circuit Type - - - - - - - FlowArrangement - CounterFlow: Air and water flow enter in different directions. -CrossFlow: Air and water flow are perpendicular. -ParallelFlow: air and water flow enter in same directions. - - - - COUNTERFLOW - CROSSFLOW - PARALLELFLOW - OTHER - NOTKNOWN - UNSET - - - - COUNTERFLOW - - Counter Flow - - - - - - - CROSSFLOW - - Cross Flow - - - - - - - PARALLELFLOW - - Parallel Flow - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Flow Arrangement - - - - - - - SprayType - SprayFilled: Water is sprayed into airflow. -SplashTypeFill: water cascades over successive rows of splash bars. -FilmTypeFill: water flows in a thin layer over closely spaced sheets. - - - - SPRAYFILLED - SPLASHTYPEFILL - FILMTYPEFILL - OTHER - NOTKNOWN - UNSET - - - - SPRAYFILLED - - Spray Filled - - - - - - - SPLASHTYPEFILL - - Splash Type Fill - - - - - - - FILMTYPEFILL - - Film Type Fill - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Spray Type - - - - - - - CapacityControl - FanCycling: Fan is cycled on and off to control duty. -TwoSpeedFan: Fan is switched between low and high speed to control duty. -VariableSpeedFan: Fan speed is varied to control duty. -DampersControl: Dampers modulate the air flow to control duty. -BypassValveControl: Bypass valve modulates the water flow to control duty. -MultipleSeriesPumps: Turn on/off multiple series pump to control duty. -TwoSpeedPump: Switch between high/low pump speed to control duty. -VariableSpeedPump: vary pump speed to control duty. - - - - FANCYCLING - TWOSPEEDFAN - VARIABLESPEEDFAN - DAMPERSCONTROL - BYPASSVALVECONTROL - MULTIPLESERIESPUMPS - TWOSPEEDPUMP - VARIABLESPEEDPUMP - OTHER - NOTKNOWN - UNSET - - - - FANCYCLING - - Fan Cycling - - - - - - - TWOSPEEDFAN - - Two-Speed Fan - - - - - - - VARIABLESPEEDFAN - - Variable Speed Fan - - - - - - - DAMPERSCONTROL - - Dampers Control - - - - - - - BYPASSVALVECONTROL - - Bypass Valve Control - - - - - - - MULTIPLESERIESPUMPS - - Multiple Series Pumps - - - - - - - TWOSPEEDPUMP - - Two-Speed Pump - - - - - - - VARIABLESPEEDPUMP - - Variable Speed Pump - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Capacity Control - - - - - - - ControlStrategy - FixedExitingWaterTemp: The capacity is controlled to maintain a fixed exiting water temperature. -WetBulbTempReset: The set-point is reset based on the wet-bulb temperature. - - - - FIXEDEXITINGWATERTEMP - WETBULBTEMPRESET - OTHER - NOTKNOWN - UNSET - - - - FIXEDEXITINGWATERTEMP - - Fixed Exiting Water Temp - - - - - - - WETBULBTEMPRESET - - Wet Bulb Temp Reset - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Control Strategy - - - - - - - NumberOfCells - Number of cells in one cooling tower unit. - - - - - - - Number Of Cells - - - - - - - BasinReserveVolume - Volume between operating and overflow levels in cooling tower basin. - - - - - - - Basin Reserve Volume - - - - - - - LiftElevationDifference - Elevation difference between cooling tower sump and the top of the tower. - - - - - - - Lift Elevation Difference - - - - - - - WaterRequirement - Make-up water requirements. - - - - - - - Water Requirement - - - - - - - OperationTemperatureRange - Allowable operation ambient air temperature range. - - - - - - - Operation Temperature Range - - - - - - - AmbientDesignDryBulbTemperature - Ambient design dry bulb temperature used for selecting the cooling tower. - - - - - - - Ambient Design Dry Bulb Temperature - - - - - - - AmbientDesignWetBulbTemperature - Ambient design wet bulb temperature used for selecting the cooling tower. - - - - - - - Ambient Design Wet Bulb Temperature - - - - - - - - - - - - - Pset_CoveringCeiling - Properties common to the definition of all occurrence and type objects of covering with the predefined type set to CEILING. - - - IfcCovering/CEILING - - IfcCovering/CEILING - - - Permeability - Ratio of the permeability of the ceiling. -The ration can be used to indicate an open ceiling (that enables identification of whether ceiling construction should be considered as impeding distribution of sprinkler water, light etc. from installations within the ceiling area). - - - - - - - Durchlässigkeit - Permeability - Perméabilité - 渗透率 - - - Durchlässigkeit der Unterdecke als Faktor zwischen 0 Undurchlässig und 1 völlig durchlässig. Der Faktor kann zur Abschätzung genutzt werden, ob die Unterdecke zur Decke hin offen und durchlässig (für Licht, Wasser und Sicht) ist. - - Ratio de perméabilité du plafond. Ce ratio peut être utilisé pour désigner un plafond ouvert (cela permet de savoir si la pose du plafond empêche la distribution de fluides à partir d'installations situées dans le faux plafond). - 天花板的渗透比率。 -该比率可用以表示开敞式天花板(表示天花板能否阻隔其内侧的喷淋水、光线等的)。 - - - - TileLength - Length of ceiling tiles. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence. - - - - - - - Deckenplattenlänge - Tile Length - Longueur des carreaux - 面砖长度 - - - Länge der Unterdeckenplatten, oder -panele, die zur Verkleidung verwendet werden. - - Longueur des carreaux de plafond. Cette propriété est donnée en complément de la représentation de la forme et des paramètres géométriques qui la déterminent. En cas d'incohérence entre ces paramètres géométriques et cette propriété, ce sont les paramètres géométriques qui priment. - 天花板面砖的长度。 -该属性所提供的尺寸信息是对内部形状描述和几何参数的补充。如果几何参数与该属性所提供的尺寸属性不符,应以几何参数为准。 - - - - TileWidth - Width of ceiling tiles. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence. - - - - - - - Deckenplattenbreite - Tile Width - Largeur des carreaux - 面砖宽度 - - - Breite der Unterdeckenplatten, oder -panele, die zur Verkleidung verwendet werden. - - Largeur des carreaux de plafond. Cette propriété est donnée en complément de la représentation de la forme et des paramètres géométriques qui la déterminent. En cas d'incohérence entre ces paramètres géométriques et cette propriété, ce sont les paramètres géométriques qui priment. - 天花板面砖的宽度。 -该属性所提供的尺寸信息是对内部形状描述和几何参数的补充。如果几何参数与该属性所提供的尺寸属性不符,应以几何参数为准。 - - - - - - 所有PredefinedType设置为CEILING的IfcCovering实例的定义中通用的属性。 - - - - - Pset_CoveringCommon - Properties common to the definition of all occurrence and type objects of covering - - - IfcCovering - - IfcCovering - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as "construction type". It should be provided as an alternative to the name of the "object type", if the software does not support object types. - - - - - - - Bauteiltyp - Reference - Référence - 参照記号 - 参考号 - - - Bezeichnung zur Zusammenfassung gleichartiger Bauteile zu einem Bauteiltyp (auch Konstruktionstyp genannt). Alternativ zum Namen des "Typobjekts", insbesondere wenn die Software keine Typen unterstützt. - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1") pour désigner un "type de construction". Une alternative au nom d'un objet type lorsque les objets types ne sont pas gérés par le logiciel. - このプロジェクトにおける参照記号(例:A-1) - 该项目中该类型构件的参考编号(例如,类型A-1)。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Status - Statut - 状態 - - - Status bzw. Phase des Bauteils insbesondere beim Bauen im Bestand. "Neu" (new) neues Bauteil als Ergänzung, "Bestand" (existing) bestehendes Bauteil, dass erhalten bleibt, "Abbruch" (demolish) Bauteil, das abgebrochen wird, "Temporär" (temporary) Bauteil und andere Bauelemente, die vorübergehend eingebaut werden (wie Abstützungen, etc.) - - Statut de l'élément, principalement utilisé dans les projets de rénovation et de réhabilitation. Le statut a pour valeur NOUVEAU pour un nouvel élément, EXISTANT pour un élément existant qui est conservé, DEMOLI pour un élément existant à démolir et TEMPORAIRE pour un élément temporaire (comme une structure support provisoire). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - AcousticRating - Acoustic rating for this object. -It is giving according to the national building code. It indicates the sound transmission resistance of this object by an index ration (instead of providing full sound absorbtion values). - - - - - - - Schallschutzklasse - Acoustic Rating - Isolation acoustique - 遮音等級 - 隔音等级 - - - Schallschutzklasse gemäß der nationalen oder regionalen Schallschutzverordnung. - - Classement acoustique de cet objet. Donné selon le Code National du Bâtiment. Il indique la résistance à la transmission du son de cet objet par une valeur de référence (au lieu de fournir les valeurs totales d'absorption du son). - 遮音等級。当該国の建築法規による。 -このオブジェクトの音の透過損失を等級値で示す。 - 该构件的隔音等级。 -该属性的依据为国家建筑规范。为表示该构件隔音效果的比率(而不是完全吸收声音的值)。 - - - - FlammabilityRating - Flammability Rating for this object. -It is given according to the national building code that governs the rating of flammability for materials. - - - - - - - Entflammbarkeitsklasse - Flammability Rating - Inflammabilité - 可燃性等級 - - - Angabe zur Entflammbarkeit des Materials gemäß der nationalen oder regionalen Normen. - - Classement de l'inflammabilité de l'élément selon la classification nationale de sécurité incendie. - 可燃性等級。当該国の建築法規による。 - - - - FragilityRating - Indication on the fragility of the covering (e.g., under fire conditions). It is given according to the national building code that might provide a classification for fragility. - - - - - - - Fragilitätsklasse - Fragility Rating - Fragilité - 脆弱性等級 - - - Angabe zur Zerbrechlichkeit des Materials (zum Beispiel unter Brandlast oder Erschütterung) gemäß der nationalen oder regionalen Normen. - - Indication de la fragilité du revêtement selon une classification nationale. - 脆弱性等級。当該国の建築法規による。 - - - - Combustible - Indication whether the object is made from combustible material (TRUE) or not (FALSE). - - - - - - - Brennbares Material - Combustible - Combustible - 可燃性区分 - 是否可燃 - - - Angabe ob das Bauteil brennbares Material enthält (WAHR) oder nicht (FALSCH). - - Indique si l'objet est réalisé à partir de matériau combustible (VRAI) ou non (FAUX). - この部材が可燃性物質で作られているかどうかを示すブーリアン値。 - 表示该构件是否由可燃材料制成。 - - - - SurfaceSpreadOfFlame - Indication on how the flames spread around the surface, -It is given according to the national building code that governs the fire behaviour for materials. - - - - - - - Brandverhalten - Surface Spread Of Flame - Propagation des flammes en surface - 火炎表面伝播性 - - - Beschreibung des Brandverhaltens des Bauteils gemäß der nationalen oder regionalen Brandschutzverordnung. - - Indique comment les flammes se propagent sur une surface. Indication donnée selon le Code National du Bâtiment régissant le comportement au feu des matériaux. - 火炎表面伝播性。当該国の建築法規による。 - - - - Finish - Finish selection for this object. -Here specification of the surface finish for informational purposes. - - - - - - - Oberflächengüte - Finish - Finition - 仕上げ - 表面处理 - - - Oberflächenbehandlung oder Oberflächengüte, wie "poliert", "schalungsrau", imprägniert. - - Finition de cet objet. Spécification de la finition donnée à titre informatif. - 仕上げ選択に関する情報。表面仕上げに関する仕様。 - 该构件的表面处理方式。仅供参考。 - - - - IsExternal - Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building. - - - - - - - Außenbauteil - Is External - Est extérieur - 外部区分 - 是否外部构件 - - - Angabe, ob dieser Bekleidung eine Außenbekleidung ist (JA) oder ein Innenbekleidung (NEIN). - - Indique si l'élément est conçu pour être utilisé à l'extérieur (VRAI) ou non (FAUX). Si VRAI, c'est un élément extérieur qui donne sur l'extérieur du bâtiment. - 外部の部材かどうかを示すブーリアン値。もしTRUEの場合、外部の部材で建物の外側に面している。 - 表示该构件是否设计为外部构件。若是,则该构件为外部构件,朝向建筑物的外侧。 - - - - ThermalTransmittance - Thermal transmittance coefficient (U-Value) of an element. -Here the total thermal transmittance coefficient through the covering (including all materials). - - - - - - - U-Wert - Thermal Transmittance - Transmission thermique surfacique - 熱貫流率 - 导热系数 - - - Wärmedurchgangskoeffizient (U-Wert) der Materialschichten. -Hier der Gesamtwärmedurchgangskoeffizient der Bekleidung (für alle Schichten). - - Coefficient de transmission thermique surfacique (U). C'est le coefficient global de transmission thermique à travers le revêtement dans la direction du flux thermique (tous matériaux inclus). Nouvelle propriété de la version 2x4. - 熱貫流率U値。ここではカバリングを通した熱移動の方向における全体の熱還流率を示す。 - 材料的导热系数(U值)。 -表示穿过该覆盖层的整体导热系数(包括所有材料)。 - - - - FireRating - Fire rating for this object. -It is given according to the national fire safety classification. - - - - - - - Feuerwiderstandsklasse - Fire Rating - Résistance au feu - 耐火等級 - 防火等级 - - - Feuerwiderstandsklasse gemäß der nationalen oder regionalen Brandschutzverordnung. - - Classement au feu de l'élément donné selon la classification nationale de sécurité incendie. - 耐火等級。当該国の建築法規による。 - 该构件的防火等级。 -该属性的依据为国家防火安全分级。 - - - - - - IfcCoveringオブジェクトに関する共通プロパティセット定義。 - 所有IfcCovering实例的定义中通用的属性。 - - - - - Pset_CoveringFlooring - Properties common to the definition of all occurrence and type objects of covering with the predefined type set to FLOORING. - - - IfcCovering/FLOORING - - - IfcCovering/FLOORING, - - - HasNonSkidSurface - Indication whether the surface finish is designed to prevent slippery (TRUE) or not (FALSE). - - - - - - - Nichtrutschende Oberfläche - Has Non Skid Surface - Anti dérapant - 表面是否防滑 - - - Angabe, ob der Bodenbelag eine nichtrutschende Oberfläche hat (JA), oder nicht (NEIN). - - Indique si la finition est conçue pour être anti dérapante (VRAI) ou non (FAUX). - 表示表面处理是否设计为防滑的。 - - - - HasAntiStaticSurface - Indication whether the surface finish is designed to prevent electrostatic charge (TRUE) or not (FALSE). - - - - - - - Antistatische Oberfläche - Has Anti Static Surface - Anti statique - 表面是否防静电 - - - Angabe, ob der Bodenbelag eine antistatische Oberfläche hat (JA), oder nicht (NEIN). - - Indique si la finition est conçue pour être anti statique (VRAI) ou non (FAUX). - 表示表面处理是否设计为防静电的。 - - - - - - 所有PredefinedType设置为FLOORING的IfcCovering实例的定义中通用的属性。 - - - - - Pset_CurtainWallCommon - Properties common to the definition of all occurrences of IfcCurtainWall. - - - IfcCurtainWall - - IfcCurtainWall - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as "construction type". It should be provided as an alternative to the name of the "object type", if the software does not support object types. - - - - - - - Bauteiltyp - Reference - Reference - 参照記号 - 参考号 - - - Bezeichnung zur Zusammenfassung gleichartiger Bauteile zu einem Bauteiltyp (auch Konstruktionstyp genannt). Alternativ zum Namen des "Typobjekts", insbesondere wenn die Software keine Typen unterstützt. - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1") pour désigner un "type de construction". Une alternative au nom d'un objet type lorsque les objets types ne sont pas gérés par le logiciel. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 若未采用已知的分类系统,则该属性为该项目中该类型构件的参考编号(例如,类型A-1)。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Status - Statut - 状態 - - - Status bzw. Phase des Bauteils insbesondere beim Bauen im Bestand. "Neu" (new) neues Bauteil als Ergänzung, "Bestand" (existing) bestehendes Bauteil, dass erhalten bleibt, "Abbruch" (demolish) Bauteil, das abgebrochen wird, "Temporär" (temporary) Bauteil und andere Bauelemente, die vorübergehend eingebaut werden (wie Abstützungen, etc.) - - Statut de l'élément, principalement utilisé dans les projets de rénovation et de réhabilitation. Le statut a pour valeur NOUVEAU pour un nouvel élément, EXISTANT pour un élément existant qui est conservé, DEMOLI pour un élément existant à démolir et TEMPORAIRE pour un élément temporaire (comme une structure support provisoire). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - AcousticRating - Acoustic rating for this object. -It is provided according to the national building code. It indicates the sound transmission resistance of this object by an index ratio (instead of providing full sound absorbtion values). - - - - - - - Schallschutzklasse - Acoustic Rating - IsolationAcoustique - 遮音等級 - 隔音等级 - - - Schallschutzklasse gemäß der nationalen oder regionalen Schallschutzverordnung. - - Classement acoustique de cet objet. Donné selon le Code National du Bâtiment. Il indique la résistance à la transmission du son de cet objet par une valeur de référence (au lieu de fournir les valeurs totales d'absorption du son). - 遮音等級情報。関連する建築基準法を参照。 - 该构件的隔音等级。 -该属性的依据为国家建筑规范。为表示该构件隔音效果的比率(而不是完全吸收声音的值)。 - - - - FireRating - Fire rating given according to the national fire safety classification. - - - - - - - Feuerwiderstandsklasse - Fire Rating - ResistanceAuFeu - 耐火等級 - 防火等级 - - - Feuerwiderstandasklasse gemäß der nationalen oder regionalen Brandschutzverordnung. - - Classement au feu de l'élément donné selon la classification nationale de sécurité incendie. - 主要な耐火等級。関連する建築基準法、消防法などの国家基準を参照。 - 该构件的防火等级。 -该属性的依据为国家防火安全分级。 - - - - Combustible - Indication whether the object is made from combustible material (TRUE) or not (FALSE). - - - - - - - Brennbares Material - Combustible - Combustible - 可燃性区分 - 是否可燃 - - - German-description-4 - - Indique si l'objet est réalisé à partir de matériau combustible (VRAI) ou non (FAUX). - この部材が可燃性物質で作られているかどうかを示すブーリアン値。 - 表示该构件是否由可燃材料制成。 - - - - SurfaceSpreadOfFlame - Indication on how the flames spread around the surface, -It is given according to the national building code that governs the fire behaviour for materials. - - - - - - - Brandverhalten - Surface Spread Of Flame - SurfacePropagationFlamme - 火炎伝播性 - - - German-description-5 - - Indique comment les flammes se propagent sur une surface. Indication donnée selon le Code National du Bâtiment régissant le comportement au feu des matériaux. - 炎がどのように材料の表面を広がるかという指標。材料の炎に対する振る舞いについての国家建築規則に従って提供される。 - - - - ThermalTransmittance - Thermal transmittance coefficient (U-Value) of a material. -Here the total thermal transmittance coefficient through the wall (including all materials). - - - - - - - U-Wert - Thermal Transmittance - TransmissionThermique - 熱貫流率 - 导热系数 - - - Wärmedurchgangskoeffizient (U-Wert) der Materialschichten. -Hier der Gesamtwärmedurchgangskoeffizient des Balkens (in Richtung des Wärmeflusses), angegeben ohne den inneren und äußeren Wärmeübergangswiderstand. - - Coefficient de transmission thermique surfacique (U). C'est le coefficient global de transmission thermique à travers le mur dans la direction du flux thermique (tous matériaux inclus). Nouvelle propriété de la version 2x4. - 熱貫流率U値。ここではカーテンウォールを通した熱移動の方向における全体の熱還流率を示す。 - 材料的导热系数(U值)。 -表示穿过该墙的整体导热系数(包括所有材料)。 - - - - IsExternal - Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building. - - - - - - - Außenbauteil - Is External - EstExterieur - 外部区分 - 是否外部构件 - - - Angabe, ob dieses Bauteil ein Aussenbauteil ist (JA) oder ein Innenbauteil (NEIN). Als Aussenbauteil grenzt es an den Aussenraum (oder Erdreich, oder Wasser). - - Indique si l'élément est conçu pour être utilisé à l'extérieur (VRAI) ou non (FAUX). Si VRAI, c'est un élément extérieur qui donne sur l'extérieur du bâtiment. - 外部の部材かどうかを示すブーリアン値。もしTRUEの場合、外部の部材で建物の外側に面している。 - 表示该构件是否设计为外部构件。若是,则该构件为外部构件,朝向建筑物的外侧。 - - - - - - Définition de l'IAI : propriétés communes à la définition de toutes les occurrences de la classe IfcCurtainWall - IfcCurtainWall(カーテンウォール)オブジェクトに関する共通プロパティセット定義。 - 所有IfcCurtainWall实例的定义中通用的属性。 - - - - - Pset_DamperOccurrence - Damper occurrence attributes attached to an instance of IfcDamper - - - IfcDamper - - IfcDamper - - - SizingMethod - Identifies whether the damper is sized nominally or with exact measurements: - -NOMINAL: Nominal sizing method. -EXACT: Exact sizing method. - - - - NOMINAL - EXACT - NOTKNOWN - UNSET - - - - NOMINAL - - Nominal - - - Nominal sizing method - - - - EXACT - - Exact - - - Exact sizing method - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Sizing Method - - - - - - - - - - - - - Pset_DamperPHistory - Damper performance history attributes. - - - IfcDamper - - IfcDamper - - - AirFlowRate - Air flow rate. - - - - - Air Flow Rate - - - - - - - Leakage - Air leakage rate. - - - - - Leakage - - - - - - - PressureDrop - Pressure drop. - - - - - Pressure Drop - - - - - - - BladePositionAngle - Blade position angle; angle between the blade and flow direction ( 0 - 90). - - - - - Blade Position Angle - - - - - - - DamperPosition - Damper position (0-1); damper position ( 0=closed=90deg position angle, 1=open=0deg position angle. - - - - - Damper Position - - - - - - - PressureLossCoefficient - Pressure loss coefficient. - - - - - Pressure Loss Coefficient - - - - - - - - - - - - - Pset_DamperTypeCommon - Damper type common attributes. - - - IfcDamper - - IfcDamper - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - Operation - The operational mechanism for the damper operation. - - - - AUTOMATIC - MANUAL - OTHER - NOTKNOWN - UNSET - - - - AUTOMATIC - - Automatic - - - - - - - MANUAL - - Manual - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Operation - - - - - - - Orientation - The intended orientation for the damper as specified by the manufacturer. - - - - VERTICAL - HORIZONTAL - VERTICALORHORIZONTAL - OTHER - NOTKNOWN - UNSET - - - - VERTICAL - - Vertical - - - - - - - HORIZONTAL - - Horizontal - - - - - - - VERTICALORHORIZONTAL - - Vertical or Horizontal - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Orientation - - - - - - - BladeThickness - The thickness of the damper blade. - - - - - - - Blade Thickness - - - - - - - BladeAction - Blade action. - - - - FOLDINGCURTAIN - PARALLEL - OPPOSED - SINGLE - OTHER - NOTKNOWN - UNSET - - - - FOLDINGCURTAIN - - Folding Curtain - - - - - - - PARALLEL - - Parallel - - - - - - - OPPOSED - - Opposed - - - - - - - SINGLE - - Single - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Blade Action - - - - - - - BladeShape - Blade shape. Flat means triple V-groove. - - - - FLAT - FABRICATEDAIRFOIL - EXTRUDEDAIRFOIL - OTHER - NOTKNOWN - UNSET - - - - FLAT - - Flat - - - - - - - FABRICATEDAIRFOIL - - Fabricated Airfoil - - - - - - - EXTRUDEDAIRFOIL - - Extruded Airfoil - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Blade Shape - - - - - - - BladeEdge - Blade edge. - - - - CRIMPED - UNCRIMPED - OTHER - NOTKNOWN - UNSET - - - - CRIMPED - - Crimped - - - - - - - UNCRIMPED - - Uncrimped - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Blade Edge - - - - - - - NumberofBlades - Number of blades. - - - - - - - Numberof Blades - - - - - - - FaceArea - Face area open to the airstream. - - - - - - - Face Area - - - - - - - MaximumAirFlowRate - Maximum allowable air flow rate. - - - - - - - Maximum Air Flow Rate - - - - - - - TemperatureRange - Temperature range. - - - - - - - Temperature Range - - - - - - - MaximumWorkingPressure - Maximum working pressure. - - - - - - - Maximum Working Pressure - - - - - - - TemperatureRating - Temperature rating. - - - - - - - Temperature Rating - - - - - - - NominalAirFlowRate - Nominal air flow rate. - - - - - - - Nominal Air Flow Rate - - - - - - - OpenPressureDrop - Total pressure drop across damper. - - - - - - - Open Pressure Drop - - - - - - - LeakageFullyClosed - Leakage when fully closed. - - - - - - - Leakage Fully Closed - - - - - - - LossCoefficentCurve - Loss coefficient – blade position angle curve; ratio of pressure drop to velocity pressure versus blade angle; C = f (blade angle position). - - - - - - - - - - - - - Loss Coefficent Curve - - - - - - - LeakageCurve - Leakage versus pressure drop; Leakage = f (pressure). - - - - - - - - - - - - - Leakage Curve - - - - - - - RegeneratedSoundCurve - Regenerated sound versus air flow rate. - - - - - - - - - - - - - Regenerated Sound Curve - - - - - - - FrameType - The type of frame used by the damper (e.g., Standard, Single Flange, Single Reversed Flange, Double Flange, etc.). - - - - - - - Frame Type - - - - - - - FrameDepth - The length (or depth) of the damper frame. - - - - - - - Frame Depth - - - - - - - FrameThickness - The thickness of the damper frame material. - - - - - - - Frame Thickness - - - - - - - CloseOffRating - Close off rating. - - - - - - - Close Off Rating - - - - - - - - - ダンパー型の共通プロパティ属性設定。 - - - - - Pset_DamperTypeControlDamper - Control damper type attributes. -Pset renamed from Pset_DamperTypeControl to Pset_DamperTypeControlDamper in IFC2x2 Pset Addendum. - - - IfcDamper/CONTROLDAMPER - - IfcDamper/CONTROLDAMPER - - - TorqueRange - Torque range: minimum operational torque to maximum allowable torque. - - - - - - - Torque Range - - - - - - - ControlDamperOperation - The inherent characteristic of the control damper operation. - - - - LINEAR - EXPONENTIAL - OTHER - NOTKNOWN - UNSET - - - - LINEAR - - Linear - - - - - - - EXPONENTIAL - - Exponential - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Control Damper Operation - - - - - - - - - - - - - Pset_DamperTypeFireDamper - Fire damper type attributes. -Pset renamed from Pset_DamperTypeFire to Pset_DamperTypeFireDamper in IFC2x2 Pset Addendum. - - - IfcDamper/FIREDAMPER - - IfcDamper/FIREDAMPER - - - ActuationType - Enumeration that identifies the different types of dampers. - - - - GRAVITY - SPRING - OTHER - NOTKNOWN - UNSET - - - - GRAVITY - - Gravity - - - - - - - SPRING - - Spring - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Actuation Type - - - - - - - ClosureRatingEnum - Enumeration that identifies the closure rating for the damper. - - - - DYNAMIC - STATIC - OTHER - NOTKNOWN - UNSET - - - - DYNAMIC - - Dynamic - - - - - - - STATIC - - Static - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Closure Rating Enum - - - - - - - FireResistanceRating - Measure of the fire resistance rating in hours (e.g., 1.5 hours, 2 hours, etc.). - - - - - - - Fire Resistance Rating - - - - - - - FusibleLinkTemperature - The temperature that the fusible link melts. - - - - - - - Fusible Link Temperature - - - - - - - - - - - - - Pset_DamperTypeFireSmokeDamper - Combination Fire and Smoke damper type attributes. -New Pset in IFC2x2 Pset Addendum. - - - IfcDamper/FIRESMOKEDAMPER - - IfcDamper/FIRESMOKEDAMPER - - - ControlType - The type of control used to operate the damper (e.g., Open/Closed Indicator, Resetable Temperature Sensor, Temperature Override, etc.). - - - - - - - Control Type - - - - - - - ActuationType - Enumeration that identifies the different types of dampers. - - - - GRAVITY - SPRING - OTHER - NOTKNOWN - UNSET - - - - GRAVITY - - Gravity - - - - - - - SPRING - - Spring - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Actuation Type - - - - - - - ClosureRatingEnum - Enumeration that identifies the closure rating for the damper. - - - - DYNAMIC - STATIC - OTHER - NOTKNOWN - UNSET - - - - DYNAMIC - - Dynamic - - - - - - - STATIC - - Static - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Closure Rating Enum - - - - - - - FireResistanceRating - Measure of the fire resistance rating in hours (e.g., 1.5 hours, 2 hours, etc.). - - - - - - - Fire Resistance Rating - - - - - - - FusibleLinkTemperature - The temperature that the fusible link melts. - - - - - - - Fusible Link Temperature - - - - - - - - - - - - - Pset_DamperTypeSmokeDamper - Smoke damper type attributes. -Pset renamed from Pset_DamperTypeSmoke to Pset_DamperTypeSmokeDamper in IFC2x2 Pset Addendum. - - - IfcDamper/SMOKEDAMPER - - IfcDamper/SMOKEDAMPER - - - ControlType - The type of control used to operate the damper (e.g., Open/Closed Indicator, Resetable Temperature Sensor, Temperature Override, etc.) . - - - - - - - Control Type - - - - - - - - - - - - - Pset_DiscreteAccessoryColumnShoe - Shape properties common to column shoes. - - - IfcDiscreteAccessory/SHOE - - IfcDiscreteAccessory/SHOE - - - ColumnShoeBasePlateThickness - The thickness of the column shoe base plate. - - - - - - - Column Shoe Base Plate Thickness - ベースプレート厚 - 베이스 플레이트 두께 - - - - 柱脚ベースプレートの板厚。 - 기둥 다리베이스 플레이트의 두께 - - - - ColumnShoeBasePlateWidth - The width of the column shoe base plate. - - - - - - - Column Shoe Base Plate Width - ベースプレート幅 - 베이스 플레이트 폭 - - - - 柱脚ベースプレートの幅。 - 기둥 다리 받침판 폭 - - - - ColumnShoeBasePlateDepth - The depth of the column shoe base plate. - - - - - - - Column Shoe Base Plate Depth - ベースプレート成 - 베이스 플레이트 구성 - - - - 柱脚ベースプレートの成。 - 기둥 다리 받침판 구성 - - - - ColumnShoeCasingHeight - The height of the column shoe casing. - - - - - - - Column Shoe Casing Height - ケーシング厚 - 케이스 두께 - - - - 柱脚ケーシングの板厚。 - 기둥 다리 케이스의 두께 - - - - ColumnShoeCasingWidth - The width of the column shoe casing. - - - - - - - Column Shoe Casing Width - ケーシング幅 - 케이스 폭 - - - - 柱脚ケーシングの幅。 - 기둥 다리 케이스의 폭 - - - - ColumnShoeCasingDepth - The depth of the column shoe casing. - - - - - - - Column Shoe Casing Depth - ケーシング成 - 케이스 구성 - - - - 柱脚ケーシングの成。 - 기둥 다리 케이스의 구성 - - - - - - 柱脚の共通形状特性。 - - - - - Pset_DiscreteAccessoryCornerFixingPlate - Properties specific to corner fixing plates. - - - IfcDiscreteAccessory/Corner fixing plate - - IfcDiscreteAccessory/Corner fixing plate - - - CornerFixingPlateLength - The length of the L-shaped corner plate. - - - - - - - Corner Fixing Plate Length - 長さ - 길이 - - - - L型コーナープレートの長さ。 - L 형 코너 플레이트의 길이 - - - - CornerFixingPlateThickness - The thickness of the L-shaped corner plate. - - - - - - - Corner Fixing Plate Thickness - 板厚 - 두께 - - - - L型コーナープレートの板厚。 - L 형 코너 플레이트의 두께 - - - - CornerFixingPlateFlangeWidthInPlaneZ - The flange width of the L-shaped corner plate in plane Z. - - - - - - - Corner Fixing Plate Flange Width In Plane Z - フランジ幅Z - 플랜지 폭 Z - - - - L型コーナープレートのZ面のフランジ幅。 - L 형 코너 플레이트 Z면 플랜지 폭 - - - - CornerFixingPlateFlangeWidthInPlaneX - The flange width of the L-shaped corner plate in plane X. - - - - - - - Corner Fixing Plate Flange Width In Plane X - フランジ幅X - 플랜지 폭 X - - - - L型コーナープレートのX面のフランジ幅。 - L 형 코너 플레이트 X면 플랜지 폭 - - - - - - コーナーを固定するプレートの固有特性。 - - - - - Pset_DiscreteAccessoryDiagonalTrussConnector - Shape properties specific to connecting accessories in truss form with diagonal cross-bars. - - - IfcDiscreteAccessory/Diagonal truss connector - - IfcDiscreteAccessory/Diagonal truss connector - - - DiagonalTrussHeight - The overall height of the truss connector. - - - - - - - Diagonal Truss Height - 全体高さ - 전체 높이 - - - - トラス接続部材の全体の高さ。 - 트러스 연결 부재의 전체 높이 - - - - DiagonalTrussLength - The overall length of the truss connector. - - - - - - - Diagonal Truss Length - 全体長さ - 전체 길이 - - - - トラス接続部材の全体の長さ。 - 트러스 연결 부재의 전체 길이 - - - - DiagonalTrussCrossBarSpacing - The spacing between diagonal cross-bar sections. - - - - - - - Diagonal Truss Cross Bar Spacing - クロスバー間隔 - 크로스바 간격 - - - - 斜めのクロスバーの間隔。 - 대각선 크로스바 간격 - - - - DiagonalTrussBaseBarDiameter - The nominal diameter of the base bar. - - - - - - - Diagonal Truss Base Bar Diameter - ベースバー径 - 기반 막대 지름 - - - - ベースバーの公称直径。 - 기반 막대의 공칭 지름 - - - - DiagonalTrussSecondaryBarDiameter - The nominal diameter of the secondary bar. - - - - - - - Diagonal Truss Secondary Bar Diameter - 二次バー径 - 보조 막대 지름 - - - - 二次バーの公称直径。 - 보조 막대의 공칭 지름 - - - - DiagonalTrussCrossBarDiameter - The nominal diameter of the diagonal cross-bars. - - - - - - - Diagonal Truss Cross Bar Diameter - クロスバー径 - 크로스바 지름 - - - - 斜めクロスバーの公称直径。 - 대각선 크로스바 공칭 지름 - - - - - - 斜めのクロスバーを使って接続したトラスの形状定義。 - - - - - Pset_DiscreteAccessoryEdgeFixingPlate - Properties specific to edge fixing plates. - - - IfcDiscreteAccessory/Edge fixing plate - - IfcDiscreteAccessory/Edge fixing plate - - - EdgeFixingPlateLength - The length of the L-shaped edge plate. - - - - - - - Edge Fixing Plate Length - 長さ - 길이 - - - - L型端部プレートの長さ。 - L 형 단부 플레이트의 길이 - - - - EdgeFixingPlateThickness - The thickness of the L-shaped edge plate. - - - - - - - Edge Fixing Plate Thickness - 板厚 - 두께 - - - - L型端部プレートの板厚。 - L 형 단부 플레이트의 두께 - - - - EdgeFixingPlateFlangeWidthInPlaneZ - The flange width of the L-shaped edge plate in plane Z. - - - - - - - Edge Fixing Plate Flange Width In Plane Z - フランジ幅Z - 플랜지 폭 Z - - - - L型端部プレートのZ面フランジ幅。 - L 형 단부 플레이트 Z면 플랜지 폭 - - - - EdgeFixingPlateFlangeWidthInPlaneX - The flange width of the L-shaped edge plate in plane X. - - - - - - - Edge Fixing Plate Flange Width In Plane X - フランジ幅X - 플랜지 폭 X - - - - L型端部プレートのX面フランジ幅。 - L 형 단부 플레이트 X면 플랜지 폭 - - - - - - 端部固定プレートの固有。 - - - - - Pset_DiscreteAccessoryFixingSocket - Properties common to fixing sockets. - - - IfcDiscreteAccessory/Fixing socket - - IfcDiscreteAccessory/Fixing socket - - - FixingSocketTypeReference - Type reference for the fixing socket according to local standards. - - - - - Fixing Socket Type Reference - 参照基準 - 참조 기준 - - - - 固定ソケットが参照するローカル標準。 - 고정 소켓이 참조하는 로컬 표준 - - - - FixingSocketHeight - The overall height of the fixing socket. - - - - - - - Fixing Socket Height - 全体長さ - 전체 길이 - - - - 固定ソケットの全体長さ。 - 고정 소켓의 전체 길이 - - - - FixingSocketThreadDiameter - The nominal diameter of the thread. - - - - - - - Fixing Socket Thread Diameter - 公称径 - 공칭 지름 - - - - 線の公称直径。 - 고정 소켓의 전체 길이 - - - - FixingSocketThreadLength - The length of the threaded part of the fixing socket. - - - - - - - Fixing Socket Thread Length - ねじ部長さ - 나사부 길이 - - - - 固定ソケットの全体長さねじ部の長さ。 - 고정 소켓의 전체 길이 나사부의 길이 - - - - - - 固定ソケットの共通特性。 - - - - - Pset_DiscreteAccessoryLadderTrussConnector - Shape properties specific to connecting accessories in truss form with straight cross-bars in ladder shape. - - - IfcDiscreteAccessory/Ladder truss connector - - IfcDiscreteAccessory/Ladder truss connector - - - LadderTrussHeight - The overall height of the truss connector. - - - - - - - Ladder Truss Height - 全体高さ - 전체 높이 - - - - トラス接続部材の全体の高さ。 - 트러스 연결 부재의 전체 높이 - - - - LadderTrussLength - The overall length of the truss connector. - - - - - - - Ladder Truss Length - 全体長さ - 전체길이 - - - - トラス接続部材の全体の長さ。 - 트러스 연결 부재의 전체 길이 - - - - LadderTrussCrossBarSpacing - The spacing between the straight cross-bars. - - - - - - - Ladder Truss Cross Bar Spacing - クロスバー間隔 - 크로스바 간격 - - - - まっすぐなのクロスバーの間隔。 - 똑바른 크로스바 간격 - - - - LadderTrussBaseBarDiameter - The nominal diameter of the base bar. - - - - - - - Ladder Truss Base Bar Diameter - ベースバー径 - 기반 막대 지름 - - - - ベースバーの公称直径。 - 기반 막대의 공칭 지름 - - - - LadderTrussSecondaryBarDiameter - The nominal diameter of the secondary bar. - - - - - - - Ladder Truss Secondary Bar Diameter - 二次バー径 - 보조막대 지름 - - - - 二次バーの公称直径。 - 보조 막대의 공칭 지름 - - - - LadderTrussCrossBarDiameter - The nominal diameter of the straight cross-bars. - - - - - - - Ladder Truss Cross Bar Diameter - クロスバー径 - 크로스바 지름 - - - - まっすぐなクロスバーの公称直径。 - 똑바른 크로스바 공칭 지름 - - - - - - はじご状のまっすぐなクロスバーを使って接合したトラスの形状特性。 - - - - - Pset_DiscreteAccessoryStandardFixingPlate - Properties specific to standard fixing plates. - - - IfcDiscreteAccessory/Standard fixing plate - - IfcDiscreteAccessory/Standard fixing plate - - - StandardFixingPlateWidth - The width of the standard fixing plate. - - - - - - - Standard Fixing Plate Width - - - - - - 標準的な固定プレートの幅。 - 표준 고정 플레이트의 폭 - - - - StandardFixingPlateDepth - The depth of the standard fixing plate. - - - - - - - Standard Fixing Plate Depth - - 구성 - - - - 標準的な固定プレートの成。 - 표준 고정 플레이트 구성 - - - - StandardFixingPlateThickness - The thickness of the standard fixing plate. - - - - - - - Standard Fixing Plate Thickness - 板厚 - 두께 - - - - 標準的な固定プレートの板厚。 - 표준 고정 플레이트의 두께 - - - - - - 標準的な固定プレートの固有特性。 - - - - - Pset_DiscreteAccessoryWireLoop - Shape properties common to wire loop joint connectors. - - - IfcDiscreteAccessory/Wire loop - - IfcDiscreteAccessory/Wire loop - - - WireLoopBasePlateThickness - The thickness of the base plate. - - - - - - - Wire Loop Base Plate Thickness - ベースプレート厚 - 베이스 플레이트 두께 - - - - ベースプレートの板厚。 - 베이스 플레이트 두께 - - - - WireLoopBasePlateWidth - The width of the base plate. - - - - - - - Wire Loop Base Plate Width - ベースプレート幅 - 베이스 플레이트 폭 - - - - ベースプレートの幅。 - 베이스 플레이트 폭 - - - - WireLoopBasePlateLength - The length of the base plate. - - - - - - - Wire Loop Base Plate Length - ベースプレート長さ - 플레이트 길이 - - - - ベースプレートの長さ。 - 플레이트 길이 - - - - WireDiameter - The nominal diameter of the wire. - - - - - - - Wire Diameter - ワイヤー径 - 와이어 지름 - - - - ワイヤーの公称直径。 - 와이어의 공칭 지름 - - - - WireEmbeddingLength - The length of the part of wire which is embedded in the precast concrete element. - - - - - - - Wire Embedding Length - 埋め込み長さ - 포함 길이 - - - - プレキャストコンクリート部材の中に埋め込まれたワイヤーの長さ。 - 프리 캐스트 콘크리트 부재속에 묻힌 철사의 길이 - - - - WireLoopLength - The length of the fastening loop part of the wire. - - - - - - - Wire Loop Length - 留め具長さ - 클램프 길이 - - - - ワイヤーの留め具部分の長さ。 - 와이어 클램프 부분의 길이 - - - - - - ワイヤー留め具による接続部の形状特性。 - - - - - Pset_DistributionChamberElementCommon - Common properties of all occurrences of IfcDistributionChamberElement. - - - IfcDistributionChamberElement - - IfcDistributionChamberElement - - - Reference - Reference ID for this specific instance (e.g. 'WWS/VS1/400/001', which indicates the occurrence belongs to system WWS, subsystems VSI/400, and has the component number 001). - - - - - - - Reference - 参照記号 - 참조 기호 - - - - 具体的な参照ID(例えば、“WWS/VS1/400/001”はWWS系統、VS1/400サブシステム001番部品)。 - 구체적인 참조 ID (예 : "WWS/VS1/400/001"는 WWS 계통, VS1/400 서브 시스템 001 번 부품) - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - - - 全てのIfcDistributionChamberElement.オブジェクトに関する共通の属性情報。 - - - - - Pset_DistributionChamberElementTypeFormedDuct - Space formed in the ground for the passage of pipes, cables, ducts. - - - IfcDistributionChamberElement/FORMEDDUCT - - IfcDistributionChamberElement/FORMEDDUCT - - - ClearWidth - The width of the formed space in the duct. - - - - - - - Clear Width - 幅員 - - - - - ダクトスペースの幅。 - 덕트 공간 폭 - - - - ClearDepth - The depth of the formed space in the duct. - - - - - - - Clear Depth - 深さ - 깊이 - - - - ダクトスペースの深さ。 - 덕트 공간의 깊이 - - - - WallThickness - The thickness of the duct wall construction -NOTE: It is assumed that chamber walls will be constructed at a single thickness. - - - - - - - Wall Thickness - 壁の厚さ - 벽 두께 - - - - ダクトスペース壁の厚さ。 -注:ダクトスペースの壁は単層と仮定する - 덕트 공간 벽 두께 참고 : 덕트 공간의 벽은 단층 가정 - - - - BaseThickness - The thickness of the duct base construction -NOTE: It is assumed that duct base will be constructed at a single thickness. - - - - - - - Base Thickness - 基部の厚さ - 바닥두께 - - - - ダクトスペース床面の厚さ。 -注:ダクトスペースの床は単層と仮定する - 덕트 공간 바닥의 두께 참고 : 덕트 공간의 바닥은 단층 가정 - - - - AccessCoverLoadRating - The load rating of the access cover (which may be a value or an alphanumerically defined class rating). - - - - - - - Access Cover Load Rating - アクセス(点検)カバーの耐荷重 - 사용(체크)커버 하중 - - - - アクセス(点検)カバーの耐荷重(数字或いはアルファベットで定義する)。 - 사용 (체크) 커버 하중 (숫자 혹은 알파벳에서 정의됨) - - - - - - BS6100 100 3410より定義: 地中に配管、配線、ダクトを設置するためのダクトスペース。 - - - - - Pset_DistributionChamberElementTypeInspectionChamber - Chamber constructed on a drain, sewer or pipeline and with a removable cover, that permits visible inspection. - - - IfcDistributionChamberElement/INSPECTIONCHAMBER - - IfcDistributionChamberElement/INSPECTIONCHAMBER - - - ChamberLengthOrRadius - Length or, in the event of the shape being circular in plan, the radius of the chamber. - - - - - - - Chamber Length Or Radius - チャンバー(バイブスペース?)の長さあるいは半径 - 챔버 (파이프 공간)의 길이 또는 반경 - - - - チャンバーの長さあるいは円形チャンバーの半径。 - 챔버의 길이 또는 원형 챔버의 반경 - - - - ChamberWidth - Width, in the event of the shape being non circular in plan. - - - - - - - Chamber Width - チャンバー(バイブスペース?)の幅 - 챔버 (파이프 공간)의 너비 - - - - 非円形チャンバーの幅。 - 비원 챔버의 폭 - - - - InvertLevel - Level of the lowest part of the cross section as measured from ground level. - - - - - - - Invert Level - 最大深さ - 최대 깊이 - - - - 断面の最も低い部分の深さ(地面から)。 - 단면의 가장 낮은 부분의 깊이 (지상에서) - - - - SoffitLevel - Level of the highest internal part of the cross section as measured from ground level. - - - - - - - Soffit Level - 最小深さ - 최소깊이 - - - - 断面の最も高い部分の深さ(地面から)。 - 단면의 가장 높은 부분의 깊이 (지상에서) - - - - WallMaterial - The material from which the wall of the chamber is constructed. -NOTE: It is assumed that chamber walls will be constructed of a single material. - - - - - Wall Material - 壁の材質 - 벽의 재질 - - - - ダクトスペース壁の材質。 -注:ダクトスペースの壁は単層と仮定する - 덕트 공간 벽의 재질 참고 : 덕트 공간의 벽은 단층 가정 - - - - WallThickness - The thickness of the chamber wall construction -NOTE: It is assumed that chamber walls will be constructed at a single thickness. - - - - - - - Wall Thickness - 壁厚さ - 벽 두께 - - - - ダクトスペース壁の厚さ。 -注:ダクトスペースの壁は単層と仮定する - 덕트 공간 벽 두께 참고 : 덕트 공간의 벽은 단층 가정 - - - - BaseMaterial - The material from which the base of the chamber is constructed. -NOTE: It is assumed that chamber base will be constructed of a single material. - - - - - Base Material - 床の材質 - 바닥의 재질 - - - - ダクトスペース床面の材質。 -注:ダクトスペースの床は単層と仮定する - 덕트 공간 바닥의 재질 참고 : 덕트 공간의 바닥은 단층 가정 - - - - BaseThickness - The thickness of the chamber base construction -NOTE: It is assumed that chamber base will be constructed at a single thickness. - - - - - - - Base Thickness - 床の厚さ - 바닥의 두께 - - - - ダクトスペース床面の厚さ。 -注:ダクトスペースの床は単層と仮定する - 덕트 공간 바닥의 두께 참고 : 덕트 공간의 바닥은 단층 가정 - - - - WithBackdrop - Indicates whether the chamber has a backdrop or tumbling bay (TRUE) or not (FALSE). - - - - - - - With Backdrop - バックドロップ付け - 백 드롭 지정 - - - - ダクトスペースはバックドロップ或いは堰付けかどうか(TRUE或いはFALSE)。 - 덕트 공간 백드롭 혹은 보 표시 여부 (TRUE 또는 FALSE) - - - - AccessCoverMaterial - The material from which the access cover to the chamber is constructed. -NOTE: It is assumed that chamber walls will be constructed of a single material. - - - - - Access Cover Material - アクセス(点検)カバーの材質 - 사용(체크)커버의 재질 - - - - アクセス(点検)カバーの材質。 -注:バイブスペースの壁は単層と仮定する - 액세스 (체크) 커버의 재질 주 : 챔퍼 공간의 벽은 단층 가정 - - - - AccessLengthOrRadius - The length of the chamber access cover or, where the plan shape of the cover is circular, the radius. - - - - - - - Access Length Or Radius - アクセス(点検)カバーの長さ或いは半径 - 사용(체크)덮개 길이 혹은 반경 - - - - アクセス(点検)カバーの長さ、或いは円形カバーの半径。 - 사용 (체크) 덮개 길이, 혹은 원형 커버 반경 - - - - AccessWidth - The width of the chamber access cover where the plan shape of the cover is not circular. - - - - - - - Access Width - アクセス(点検)カバーの幅 - 사용 (체크)커버 폭 - - - - アクセス(点検)カバーの幅。 - 사용 (체크) 커버 폭 - - - - AccessCoverLoadRating - The load rating of the access cover (which may be a value or an alphanumerically defined class rating). - - - - - - - Access Cover Load Rating - アクセス(点検)カバーの耐荷重 - 사용 (체크)커버 하중 - - - - アクセス(点検)カバーの耐荷重(数字或いはアルファベットで定義する)。 - 사용 (체크) 커버 하중 (숫자 혹은 알파벳에서 정의됨) - - - - - - 排水、下水管の上にある・点検用可移動カバー付けパイプスペース。 - - - - - Pset_DistributionChamberElementTypeInspectionPit - Recess or chamber formed to permit access for inspection of substructure and services (definition modified from BS6100 221 4128). - - - IfcDistributionChamberElement/INSPECTIONPIT - - IfcDistributionChamberElement/INSPECTIONPIT - - - Length - The length of the pit. - - - - - - - Length - 長さ - 길이 - - - - ピット長さ。 - 피트 길이 - - - - Width - The width of the pit. - - - - - - - Width - - - - - - ピット幅。 - 피트 폭 - - - - Depth - The depth of the pit. - - - - - - - Depth - 深さ - 깊이 - - - - ピット深さ。 - 구덩이 깊이 - - - - - - 基礎の点検とサービスのためにアクセスできるピット(凹所)あるいはチャンバ(空間)。 - - - - - Pset_DistributionChamberElementTypeManhole - Chamber constructed on a drain, sewer or pipeline and with a removable cover, that permits the entry of a person. - - - IfcDistributionChamberElement/MANHOLE - - IfcDistributionChamberElement/MANHOLE - - - InvertLevel - Level of the lowest part of the cross section as measured from ground level. - - - - - - - Invert Level - 最大深さ - 최대 깊이 - - - - 断面の最も低い部分の深さ(地面から)。 - 단면의 가장 낮은 부분의 깊이 (지상에서) - - - - SoffitLevel - Level of the highest internal part of the cross section as measured from ground level. - - - - - - - Soffit Level - 最小深さ - 최소깊이 - - - - 断面の最も高い部分の深さ(地面から)。 - 단면의 가장 높은 부분의 깊이 (지상에서) - - - - WallMaterial - The material from which the wall of the chamber is constructed. -NOTE: It is assumed that chamber walls will be constructed of a single material. - - - - - Wall Material - 壁の材質 - 벽의 재질 - - - - ダクトスペース壁の材質。 -注:ダクトスペースの壁は単層と仮定する - 덕트 공간 벽의 재질 참고 : 덕트 공간의 벽은 단층 가정 - - - - WallThickness - The thickness of the chamber wall construction -NOTE: It is assumed that chamber walls will be constructed at a single thickness. - - - - - - - Wall Thickness - 壁厚さ - 벽 두께 - - - - ダクトスペース壁の厚さ。 -注:ダクトスペースの壁は単層と仮定する - 덕트 공간 벽 두께 참고 : 덕트 공간의 벽은 단층 가정 - - - - BaseMaterial - The material from which the base of the chamber is constructed. -NOTE: It is assumed that chamber base will be constructed of a single material. - - - - - Base Material - 床の材質 - 바닥의 재질 - - - - ダクトスペース床面の材質。 -注:ダクトスペースの床は単層と仮定する - 덕트 공간 바닥의 재질 참고 : 덕트 공간의 바닥은 단층 가정 - - - - BaseThickness - The thickness of the chamber base construction -NOTE: It is assumed that chamber base will be constructed at a single thickness. - - - - - - - Base Thickness - 床の厚さ - 바닥의 두께 - - - - ダクトスペース床面の厚さ。 -注:ダクトスペースの床は単層と仮定する - 덕트 공간 바닥의 두께 참고 : 덕트 공간의 바닥은 단층 가정 - - - - IsShallow - Indicates whether the chamber has been designed as being shallow (TRUE) or deep (FALSE). - - - - - - - Is Shallow - 浅いか - 덕트공간 - - - - ダクトスペースは浅いかどうか(TRUE或いはFALSE)。 - 덕트 공간이 얕은 여부 (TRUE 또는 FALSE) - - - - HasSteps - Indicates whether the chamber has steps (TRUE) or not (FALSE). - - - - - - - Has Steps - 階段付け - 계단 지정 - - - - ダクトスペースは階段付けかどうか(TRUE或いはFALSE)。 - 덕트 공간은 계단 표시 여부 (TRUE 또는 FALSE) - - - - WithBackdrop - Indicates whether the chamber has a backdrop or tumbling bay (TRUE) or not (FALSE). - - - - - - - With Backdrop - バックドロップ付け - 백 드롭 지정 - - - - ダクトスペースはバックドロップ或いは堰付けかどうか(TRUE或いはFALSE)。 - 덕트 공간 백드롭 혹은 보 표시 여부 (TRUE 또는 FALSE) - - - - AccessCoverMaterial - The material from which the access cover to the chamber is constructed. -NOTE: It is assumed that chamber walls will be constructed of a single material. - - - - - Access Cover Material - アクセス(点検)カバーの材質 - 사용(체크)커버의 재질 - - - - アクセス(点検)カバーの材質。 -注:バイブスペースの壁は単層と仮定する - 액세스 (체크) 커버의 재질 주 : 챔퍼 공간의 벽은 단층 가정 - - - - AccessLengthOrRadius - The length of the chamber access cover or, where the plan shape of the cover is circular, the radius. - - - - - - - Access Length Or Radius - アクセス(点検)カバーの長さ或いは半径 - 사용(체크)덮개 길이 혹은 반경 - - - - アクセス(点検)カバーの長さ、或いは円形カバーの半径。 - 사용 (체크) 덮개 길이, 혹은 원형 커버 반경 - - - - AccessWidth - The width of the chamber access cover where the plan shape of the cover is not circular. - - - - - - - Access Width - アクセス(点検)カバーの幅 - 사용 (체크)커버 폭 - - - - アクセス(点検)カバーの幅。 - 사용 (체크) 커버 폭 - - - - AccessCoverLoadRating - The load rating of the access cover (which may be a value or an alphanumerically defined class rating). - - - - - - - Access Cover Load Rating - アクセス(点検)カバーの耐荷重 - 사용 (체크)커버 하중 - - - - アクセス(点検)カバーの耐荷重(数字或いはアルファベットで定義する)。 - 사용 (체크) 커버 하중 (숫자 혹은 알파벳에서 정의됨) - - - - - - 排水、下水管の上にある・点検用可移動カバー付けパイプスペース。 - - - - - Pset_DistributionChamberElementTypeMeterChamber - Chamber that houses a meter(s) (definition modified from BS6100 250 6224). - - - IfcDistributionChamberElement/METERCHAMBER - - IfcDistributionChamberElement/METERCHAMBER - - - ChamberLengthOrRadius - Length or, in the event of the shape being circular in plan, the radius of the chamber. - - - - - - - Chamber Length Or Radius - チャンバーの長さあるいは半径 - 챔버의 길이 또는 반경 - - - - チャンバーの長さあるいは円形チャンバーの半径。 - 챔버의 길이 또는 원형 챔버의 반경 - - - - ChamberWidth - Width, in the event of the shape being non circular in plan. - - - - - - - Chamber Width - チャンバーの幅 - 챔버의 폭 - - - - 非円形チャンバーの幅。 - 비원 챔버의 폭 - - - - WallMaterial - The material from which the wall of the chamber is constructed. -NOTE: It is assumed that chamber walls will be constructed of a single material. - - - - - Wall Material - 壁の材質 - 벽의 재질 - - - - ダクトスペース壁の材質。 -注:ダクトスペースの壁は単層と仮定する - 덕트 공간 벽의 재질 참고 : 덕트 공간의 벽은 단층 가정 - - - - WallThickness - The thickness of the chamber wall construction -. -NOTE: It is assumed that chamber walls will be constructed at a single thickness. - - - - - - - Wall Thickness - 壁厚さ - 벽 두께 - - - - ダクトスペース壁の厚さ。 -注:ダクトスペースの壁は単層と仮定する - 덕트 공간 벽 두께 참고 : 덕트 공간의 벽은 단층 가정 - - - - BaseMaterial - The material from which the base of the chamber is constructed. -NOTE: It is assumed that chamber base will be constructed of a single material. - - - - - Base Material - 床の材質 - 바닥의 ​​재질 - - - - ダクトスペース床面の材質。 -注:ダクトスペースの床は単層と仮定する - 덕트 공간 바닥의 재질 참고 : 덕트 공간의 바닥은 단층 가정 - - - - BaseThickness - The thickness of the chamber base construction. -NOTE: It is assumed that chamber base will be constructed at a single thickness. - - - - - - - Base Thickness - 床の厚さ - 바닥의 두께 - - - - ダクトスペース床面の厚さ。 -注:ダクトスペースの床は単層と仮定する - 덕트 공간 바닥의 두께 참고 : 덕트 공간의 바닥은 단층 가정 - - - - AccessCoverMaterial - The material from which the access cover to the chamber is constructed. -NOTE: It is assumed that chamber walls will be constructed of a single material. - - - - - Access Cover Material - アクセス(点検)カバーの材質 - 사용 (체크) 커버의 재질 - - - - アクセス(点検)カバーの材質。 -注:バイブスペースの壁は単層と仮定する - 액세스 (체크) 커버의 재질 주 : 바이브 공간의 벽은 단층 가정 - - - - - - メーター室に関する属性情報。 - - - - - Pset_DistributionChamberElementTypeSump - Recess or small chamber into which liquid is drained to facilitate its removal. - - - IfcDistributionChamberElement/SUMP - - IfcDistributionChamberElement/SUMP - - - Length - The length of the sump. - - - - - - - Length - 長さ - 길이 - - - - 排水チャンバーの長さ。 - 배수 챔버의 길이 - - - - Width - The width of the sump. - - - - - - - Width - - - - - - 排水チャンバーの幅。 - 배수 챔버의 폭 - - - - InvertLevel - The lowest point in the cross section of the sump. - - - - - - - Invert Level - 最大深さ - 최대 깊이 - - - - 断面の最も低い部分の深さ(地面から)。 - 단면의 가장 낮은 부분의 깊이 (지상에서) - - - - - - 排水チャンバー(ピット)に関する属性情報。 - - - - - Pset_DistributionChamberElementTypeTrench - Excavation, the length of which greatly exceeds the width. - - - IfcDistributionChamberElement/TRENCH - - IfcDistributionChamberElement/TRENCH - - - Width - The width of the trench. - - - - - - - Width - 長さ - 길이 - - - - 溝の長さ。 - 홈의 길이 - - - - Depth - The depth of the trench. - - - - - - - Depth - - - - - - 溝の幅。 - 홈의 폭 - - - - InvertLevel - Level of the lowest part of the cross section as measured from ground level. - - - - - - - Invert Level - 最大深さ - 최대 깊이 - - - - 断面の最も低い部分の深さ(地面から)。 - 단면의 가장 낮은 부분의 깊이 (지상) - - - - - - チャンバーの溝(長さは幅より長い)に関する属性情報。 - - - - - Pset_DistributionChamberElementTypeValveChamber - Chamber that houses a valve(s). - - - IfcDistributionChamberElement/VALVECHAMBER - - IfcDistributionChamberElement/VALVECHAMBER - - - ChamberLengthOrRadius - Length or, in the event of the shape being circular in plan, the radius of the chamber. - - - - - - - Chamber Length Or Radius - チャンバーの長さあるいは半径 - 챔버의 길이 또는 반경 - - - - チャンバーの長さあるいは円形チャンバーの半径。 - 챔버의 길이 또는 원형 챔버의 반경 - - - - ChamberWidth - Width, in the event of the shape being non circular in plan. - - - - - - - Chamber Width - チャンバー幅 - 챔버의 너비 - - - - 非円形チャンバーの幅。 - 비원 챔버의 폭 - - - - WallMaterial - The material from which the wall of the chamber is constructed. -NOTE: It is assumed that chamber walls will be constructed of a single material. - - - - - Wall Material - 壁の材質 - 벽의 재질 - - - - ダクトスペース壁の材質。 -注:ダクトスペースの壁は単層と仮定する - 덕트 공간 벽의 재질 참고 : 덕트 공간의 벽은 단층 가정 - - - - WallThickness - The thickness of the chamber wall construction. -NOTE: It is assumed that chamber walls will be constructed at a single thickness. - - - - - - - Wall Thickness - 壁厚さ - 벽 두께 - - - - ダクトスペース壁の厚さ。 -注:ダクトスペースの壁は単層と仮定する - 덕트 공간 벽 두께 참고 : 덕트 공간의 벽은 단층 가정 - - - - BaseMaterial - The material from which the base of the chamber is constructed. -NOTE: It is assumed that chamber base will be constructed of a single material. - - - - - Base Material - 床の材質 - 바닥의 재질 - - - - ダクトスペース床面の材質。 -注:ダクトスペースの床は単層と仮定する - 덕트 공간 바닥의 재질 참고 : 덕트 공간의 바닥은 단층 가정 - - - - BaseThickness - The thickness of the chamber base construction. -NOTE: It is assumed that chamber base will be constructed at a single thickness. - - - - - - - Base Thickness - 床の厚さ - 바닥의 두께 - - - - ダクトスペース床面の厚さ。 -注:ダクトスペースの床は単層と仮定する - 덕트 공간 바닥의 두께 참고 : 덕트 공간의 바닥은 단층 가정 - - - - AccessCoverMaterial - The material from which the access cover to the chamber is constructed. -NOTE: It is assumed that chamber walls will be constructed of a single material. - - - - - Access Cover Material - アクセス(点検)カバーの材質 - 사용(체크)커버의 재질 - - - - アクセス(点検)カバーの材質。 -注:バイブスペースの壁は単層と仮定する - 액세스 (체크) 커버의 재질 주 : 바이브 공간의 벽은 단층 가정 - - - - - - バルブ室(バルブチャンバー)に関する属性情報。 - - - - - Pset_DistributionPortCommon - Common attributes attached to an instance of IfcDistributionPort. - - - IfcDistributionPort - - IfcDistributionPort - - - PortNumber - The port index for logically ordering the port within the containing element or element type. - - - - - - - Port Number - ポート番号 - 포트 번호 - - - - ポートに含まれる要素、種類を示す番号。 - 포트에 포함되는 요소 유형을 나타내는 숫자 - - - - ColorCode - Name of a color for identifying the connector, if applicable. - - - - - - - Color Code - 色番号 - 색상번호 - - - - コネクタの色。 - 커넥터 고유 이름 - - - - - - IfcDistributionPortオブジェクトに関する基本属性。 - - - - - Pset_DistributionPortPHistoryCable - Log of electrical activity attached to an instance of IfcPerformanceHistory having an assigned IfcDistributionPort of type CABLE. - - - IfcDistributionPort/CABLE - - IfcDistributionPort/CABLE - - - Current - Log of electrical current. - - - - - Current - 電流 - - - - 電流のログ。 - - - - Voltage - Log of electrical voltage. - - - - - Voltage - 電圧 - - - - 電圧のログ。 - - - - RealPower - Real power. - - - - - Real Power - 有効電力 - - - - 有効電力。 - - - - ReactivePower - Reactive power. - - - - - Reactive Power - 無効電力 - - - - 無効電力。 - - - - ApparentPower - Apparent power. - - - - - Apparent Power - 皮相電力 - - - - 皮相電力。 - - - - PowerFactor - Power factor. - - - - - Power Factor - パワーファクタ - - - - パワーファクタ。 - - - - DataTransmitted - For data ports, captures log of data transmitted. The LIST at IfcTimeSeriesValue.Values may split out data according to Pset_DistributionPortTypeCable.Protocols. - - - - - Data Transmitted - 発信 - - - - 発信データのログ。IfcTimeSeriesValue.Valuesのリスト値にはPset_DistributionPortTypeCable.Protocolsよりデータを送信する。 - - - - DataReceived - For data ports, captures log of data received. The LIST at IfcTimeSeriesValue.Values may split out data according to Pset_DistributionPortTypeCable.Protocols. - - - - - Data Received - 受信 - - - - 受信データのログ。IfcTimeSeriesValue.Valuesのリスト値にはPset_DistributionPortTypeCable.Protocolsよりデータを受信する。 - - - - - - IfcDistributionPortオブジェクトがELECTRICAL型の際に関連するIfcPerformanceHistoryに設定される電力使用のログ。 - - - - - Pset_DistributionPortPHistoryDuct - Fluid flow performance history attached to an instance of IfcPerformanceHistory assigned to IfcDistributionPort. This replaces the deprecated IfcFluidFlowProperties for performance values. - - - IfcDistributionPort/DUCT - - IfcDistributionPort/DUCT - - - Temperature - Temperature of the fluid. For air this value represents the dry bulb temperature. - - - - - Temperature - - - - - - - WetBulbTemperature - Wet bulb temperature of the fluid; only applicable if the fluid is air. - - - - - Wet Bulb Temperature - - - - - - - VolumetricFlowRate - The volumetric flow rate of the fluid. - - - - - Volumetric Flow Rate - - - - - - - MassFlowRate - The mass flow rate of the fluid. - - - - - Mass Flow Rate - - - - - - - FlowCondition - Defines the flow condition as a percentage of the cross-sectional area. - - - - - Flow Condition - - - - - - - Velocity - The velocity of the fluid. - - - - - Velocity - - - - - - - Pressure - The pressure of the fluid. - - - - - Pressure - - - - - - - - - - - - - Pset_DistributionPortPHistoryPipe - Log of substance usage attached to an instance of IfcPerformanceHistory having an assigned IfcDistributionPort of type PIPE. - - - IfcDistributionPort/PIPE - - IfcDistributionPort/PIPE - - - Temperature - The temperature of the fuel. - - - - - Temperature - 温度 - - - - 燃料の温度。 - - - - Pressure - The pressure of the fuel. - - - - - Pressure - 圧力 - - - - 燃料の圧力。 - - - - Flowrate - The flowrate of the fuel. - - - - - Flowrate - 流量 - - - - 燃料の流速。 - - - - - - IfcDistributionPortオブジェクトがGAS型の際に関連するIfcPerformanceHistoryに設定される燃料使用のログ。 - - - - - Pset_DistributionPortTypeCable - Cable port occurrence attributes attached to an instance of IfcDistributionPort. - - - IfcDistributionPort/CABLE - - IfcDistributionPort/CABLE - - - ConnectionType - The physical port connection: - -ACPLUG: AC plug -DCPLUG: DC plug -CRIMP: bare wire - - - - ACPLUG - DCPLUG - CRIMPCOAXIAL - RJ - RADIO - DIN - DSUB - DVI - EIAJ - HDMI - RCA - TRS - XLR - OTHER - NOTKNOWN - UNSET - - - - ACPLUG - Plug for power using alternating current (AC) - - AC Plug - - - AC plug - - - - DCPLUG - Plug for power using direct current (DC) - - DC Plug - - - DC plug - - - - COAXIAL - Coaxial cable for high-speed communication - - Coaxial - - - - - - - CRIMP - Crimped wire - - Crimp - - - - - - - RJ - Registered jack - - Rj - - - - - - - RADIO - Radio wave transmission - - Radio - - - - - - - DIN - - DIN - - - - - - - DSUB - - - D-Sub - - - - - - - DVI - Digital video interchange - - DVI - - - - - - - EIAJ - - EIAJ - - - - - - - HDMI - High Definition Multimedia Interface - - HDMI - - - High-definition multimedia interface - - - - RCA - - - RCA - - - - - - - SOCKET - Socket for a light bulb, where the ConnectionSubtype identifies the base (though not necessarily the bulb shape or size). - - - - - TRS - - TRS - - - - - - - USB - Universal serial bus - - USB - - - - - - - XLR - - XLR - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Connection Type - 接続タイプ - - - - 物理ポート接続: - -- ACPLUG: AC プラグ -- DCPLUG: DC プラグ -- CRIMP: 裸線 - - - - ConnectionSubtype - <p>The physical port connection subtype that further qualifies the ConnectionType. The following values are recommended:</p> - -<ul> -<li>ACPLUG: A, B, C, D, E, F, EF, G, H, I, J, K, L, M</li> -<li>DIN: Mini3P, Mini4P, Mini5P, Mini6P, Mini7P, Mini8P, Mini9P</li> -<li>DSub: DA15, DB25, DC37, DD50, DE9, DE15</li> -<li>EIAJ: RC5720</li> - -<li>HDMI: A, B, C</li> -<li>RADIO: IEEE802.11g, IEEE802.11n -</li> -<li>RJ: 4P4C, 6P2C, 8P8C</li> -<li>SOCKET: E-11, E-12, E-14, E-17, E-26, E-27, E-39, E-40</li> -<li>TRS: TS_Mini, TS_SubMini, TRS_Mini, TRS_SubMini</li> -</ul> - - - - - - - Connection Subtype - 接続サブタイプ - - - - 物理ポート接続のサブタイプ。接続タイプ以外の情報を設定する場合に使用。下記の値を設定: - -- ACプラグ: A, B, C, D, E, F, EF, G, H, I, J, K, L, M - - - - ConnectionGender - The physical connection gender. - - - - - - MALE - - Male - - - - - - - FEMALE - - Female - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Connection Gender - 接続ジェンダー - - - - 形状的な接続ジェンダー(オス、メス、その他、未知、未設定)。 - - - - ConductorFunction - For ports distributing power, indicates function of the conductors to which the load is connected. - - - - - - PHASE_L1 - - Phase L1 - - - - - - - PHASE_L2 - - Phase L2 - - - - - - - PHASE_L3 - - Phase L3 - - - - - - - NEUTRAL - - Neutral - - - - - - - PROTECTIVEEARTH - - Protective Earth - - - - - - - PROTECTIVEEARTHNEUTRAL - - Protective Earth Neutral - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Conductor Function - 電線種類 - - - - 電気負荷と連結する電線種類。 - - - - CurrentContent3rdHarmonic - The ratio between the third harmonic current and the phase current. - - - - - - - Current Content3rd Harmonic - 第3高調波電流と相電流の比 - - - - 第3高調波電流と相電流の比率。 - - - - Current - The actual current and operable range. - - - - - - - Current - 電流 - - - - 実電流と動作可能範囲。 - - - - Voltage - The actual voltage and operable range. - - - - - - - Voltage - 電圧 - - - - 実電圧と動作可能範囲。 - - - - Power - The actual power and operable range. - - - - - - - Power - 電力 - - - - 実電力と動作可能範囲。 - - - - Protocols - For data ports, identifies the protocols used as defined by the Open System Interconnection (OSI) Basic Reference Model (ISO 7498). Layers include: 1. Physical; 2. DataLink; 3. Network; 4. Transport; 5. Session; 6. Presentation; 7. Application. Example: 3:IP, 4:TCP, 5:HTTP - - - - - - - - - Protocols - プロトコル - - - - OSIのオープンシステム相互接続用基本プロトコル(ISO 7498): -1. 物理層; 2.データリンク層; 3. ネットワーク層; 4. トランスポート層; 5. セッション層; 6.プレゼンテーション層 ; 7. アプリケーション層. -例: 3:IP, 4:TCP, 5:HTTP - - - - - - IfcDistributionPortオブジェクトに設定される電力ポートに関する属性情報。 - - - - - Pset_DistributionPortTypeDuct - Duct port occurrence attributes attached to an instance of IfcDistributionPort. - - - IfcDistributionPort/DUCT - - IfcDistributionPort/DUCT - - - ConnectionType - The end-style treatment of the duct port: - -BEADEDSLEEVE: Beaded Sleeve. -COMPRESSION: Compression. -CRIMP: Crimp. -DRAWBAND: Drawband. -DRIVESLIP: Drive slip. -FLANGED: Flanged. -OUTSIDESLEEVE: Outside Sleeve. -SLIPON: Slipon. -SOLDERED: Soldered. -SSLIP: S-Slip. -STANDINGSEAM: Standing seam. -SWEDGE: Swedge. -WELDED: Welded. -OTHER: Another type of end-style has been applied. -NONE: No end-style has been applied. - - - - BEADEDSLEEVE - COMPRESSION - CRIMP - DRAWBAND - DRIVESLIP - FLANGED - OUTSIDESLEEVE - SLIPON - SOLDERED - SSLIP - STANDINGSEAM - SWEDGE - WELDED - OTHER - NONE - USERDEFINED - NOTDEFINED - - - - BEADEDSLEEVE - - Beaded Sleeve - - - Beaded Sleeve - - - - COMPRESSION - - Compression - - - Compression - - - - CRIMP - - Crimp - - - Crimp - - - - DRAWBAND - - Drawband - - - Drawband - - - - DRIVESLIP - - Driveslip - - - Drive slip - - - - FLANGED - - Flanged - - - Flanged - - - - OUTSIDESLEEVE - - Outside Sleeve - - - Outside Sleeve - - - - SLIPON - - Slipon - - - Slipon - - - - SOLDERED - - Soldered - - - Soldered - - - - SSLIP - - S-Slip - - - S-Slip - - - - STANDINGSEAM - - Standing seam - - - Standing seam - - - - SWEDGE - - Swedge - - - Swedge - - - - WELDED - - Welded - - - Welded - - - - OTHER - - (other) - - - Value is not listed. - - - - NONE - - None - - - No end-style has been applied - - - - USERDEFINED - - Userdefined - - - - - - - NOTDEFINED - - Notdefined - - - - - - - - - - Connection Type - - - - - - - ConnectionSubType - The physical port connection subtype that further qualifies the ConnectionType. - - - - - - - Connection Sub Type - - - - - - - NominalWidth - The nominal width or diameter of the duct connection. - - - - - - - Nominal Width - - - - - - - NominalHeight - The nominal height of the duct connection. Only provided for rectangular shaped ducts. - - - - - - - Nominal Height - - - - - - - NominalThickness - The nominal wall thickness of the duct at the connection point. - - - - - - - Nominal Thickness - - - The nominal wall thickness of the duct at the connection point. - - - - DryBulbTemperature - Dry bulb temperature of the air. - - - - - - - Dry Bulb Temperature - - - - - - - WetBulbTemperature - Wet bulb temperature of the air. - - - - - - - Wet Bulb Temperature - - - - - - - VolumetricFlowRate - The volumetric flow rate of the fluid. - - - - - - - Volumetric Flow Rate - - - - - - - Velocity - The velocity of the fluid. - - - - - - - Velocity - - - - - - - Pressure - The pressure of the fluid. - - - - - - - Pressure - - - - - - - - - - - - - Pset_DistributionPortTypePipe - Pipe port occurrence attributes attached to an instance of IfcDistributionPort. - - - IfcDistributionPort/PIPE - - IfcDistributionPort/PIPE - - - ConnectionType - The end-style treatment of the pipe port: - -BRAZED: Brazed. -COMPRESSION: Compression. -FLANGED: Flanged. -GROOVED: Grooved. -OUTSIDESLEEVE: Outside Sleeve. -SOLDERED: Soldered. -SWEDGE: Swedge. -THREADED: Threaded. -WELDED: Welded. -OTHER: Another type of end-style has been applied. -NONE: No end-style has been applied. -USERDEFINED: User-defined port connection type. -NOTDEFINED: Undefined port connection type. - - - - BRAZED - COMPRESSION - FLANGED - GROOVED - OUTSIDESLEEVE - SOLDERED - SWEDGE - THREADED - WELDED - OTHER - NONE - UNSET - - - - BRAZED - - Brazed - - - Brazed - - - - COMPRESSION - - Compression - - - Compression - - - - FLANGED - - Flanged - - - Flanged - - - - GROOVED - - Grooved - - - Grooved - - - - OUTSIDESLEEVE - - Outside Sleeve - - - Outside Sleeve - - - - SOLDERED - - Soldered - - - Soldered - - - - SWEDGE - - Swedge - - - Swedge - - - - THREADED - - Threaded - - - Threaded - - - - WELDED - - Welded - - - Welded - - - - OTHER - - (other) - - - Value is not listed. - - - - NONE - - None - - - No end-style has been applied - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Connection Type - 接続タイプ - - - - 物理ポート接続: - -- Coaxial: 同軸コネクタ. -- DSub: D-Subコネクタ. -- Infrared:赤外線 -- RJ: 登録済みジャック. -- Radio: 無線 -- USB: USB. - - - - ConnectionSubType - The physical port connection subtype that further qualifies the ConnectionType. - - - - - - - Connection Sub Type - 接続サブタイプ - - - - 物理ポート接続のサブタイプ。接続タイプ以外の情報を設定する場合に使用。下記の値を設定: - -- DSub: DA15, DB25, DC37, DD50, DE9, DE15 -- Radio: IEEE802.11g, IEEE802.11n -- RJ: 4P4C, 6P2C, 8P8C -- USB: A, B, MiniA, MiniB, MicroA, MicroB - - - - NominalDiameter - The nominal diameter of the pipe connection. - - - - - - - Nominal Diameter - 呼び径 - - - - 配管の呼び径。 - - - - InnerDiameter - The actual inner diameter of the pipe. - - - - - - - Inner Diameter - 内径 - - - - 配管の実内径。 - - - - OuterDiameter - The actual outer diameter of the pipe. - - - - - - - Outer Diameter - 外径 - - - - 配管の実外径。 - - - - Temperature - Temperature of the fluid. - - - - - - - Temperature - 温度 - - - - 流体の温度。 - - - - VolumetricFlowRate - The volumetric flow rate of the fluid. - - - - - - - Volumetric Flow Rate - 体積流量 - - - - 流体の体積流量。 - - - - MassFlowRate - The mass flow rate of the fluid. - - - - - - - Mass Flow Rate - 質量流量 - - - - 流体の質量流量。 - - - - FlowCondition - Defines the flow condition as a percentage of the cross-sectional area. - - - - - - - Flow Condition - 流動状態 - - - - 断面の充満率で流動状態を定義する。 - - - - Velocity - The velocity of the fluid. - - - - - - - Velocity - 速度 - - - - 流体の速度。 - - - - Pressure - The pressure of the fluid. - - - - - - - Pressure - 圧力 - - - - 流体の圧力。 - - - - - - IfcDistributionPortオブジェクトに設定される配管ポートに関する属性情報。 - - - - - Pset_DistributionSystemCommon - Distribution system occurrence attributes attached to an instance of IfcDistributionSystem. - - - IfcDistributionSystem - - IfcDistributionSystem - - - Reference - Reference ID for this specific instance of a distribution system, or sub-system (e.g. 'WWS/VS1', which indicates the system to be WWS, subsystems VSI/400). The reference values depend on the local code of practice. - - - - - - - Reference - 参照記号 - 참조기호 - - - - 空調システム、或いはサブシステムの参照ID(例えば、'WWS/VS1'はWWS系統のVSI/400サブ系統)。IDは当該地域技術基準より決められる。 - 공조 시스템 혹은 서브 시스템의 참조 ID (예 : 'WWS/VS1'는 WWS 계통의 VSI/400 하위 계통). ID는 해당 지역 기술 기준보다 결정된다. - - - - - - 搬送システムIfcDistributionSystemの関連属性。 - - - - - Pset_DistributionSystemTypeElectrical - Properties of electrical circuits. - - - IfcDistributionSystem/ELECTRICAL - - IfcDistributionSystem/ELECTRICAL - - - ElectricalSystemType - For certain purposes of electrical regulations, IEC 60364 defines types of system using type identifiers. Assignment of identifiers depends upon the relationship of the source, and of exposed conductive parts of the installation, to Ground (Earth). Identifiers that may be assigned through IEC 60364 are: - -•TN type system, a system having one or more points of the source of energy directly earthed, the exposed conductive parts of the installation being connected to that point by protective conductors, -•TN C type system, a TN type system in which neutral and protective functions are combined in a single conductor throughout the system, -•TN S type system, a TN type system having separate neutral and protective conductors throughout the system, -•TN C S type system, a TN type system in which neutral and protective functions are combined in a single conductor in part of the system, -•TT type system, a system having one point of the source of energy directly earthed, the exposed conductive parts of the installation being connected to earth electrodes electrically independent of the earth electrodes of the source, -•IT type system, a system having no direct connection between live parts and Earth, the exposed conductive parts of the electrical installation being earthed. - - - - TN - TN_C - TN_S - TN_C_S - TT - IT - OTHER - NOTKNOWN - UNSET - - - - TN - - TN - - - - - - - TN_C - - TN C - - - - - - - TN_S - - TN S - - - - - - - TN_C_S - - TN C S - - - - - - - TT - - TT - - - - - - - IT - - IT - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Electrical System Type - 電気システム方式 - 전기 시스템 방식 - - - - IEC60364電気基準に定義した電気接地の方式。電気設備の種類、接地電極と設備の導電性部分の種類で決められる。具体的なには、IEC60364に下記のような方法がある: - - -- TNシステム:電気設備は一点或いは多点の接地点を持ち、直接接地されるシステム。設備と接地極の導電性部分は保護されていること。 -- TN Cシステム:系統の全てにわたって、中性線と保護導体が一つの導体のTNシステム。 -- TN Sシステム:系統の全てにわたって、独立の中性線と保護導体を有するTNシステム。 -- TN C Sシステム:系統の一部では、中性線と保護導体が一つの導体のTNシステム。 -- TTシステム:一点を大地に直接接続し、電力系統の接地とは無関係に、設備の露出導電性部分を大地に直接接地すること。 -- ITシステム:電力システムを大地(接地)から絶縁する、設備の露出導電性部分を大地に直接接地すること。 - IEC60364 전기 기준으로 정의한 전기 접지 방식. 전기 설비의 종류, 접지 전극 시설의 도전성 부분 유형에 결정된다. 구체적인에는 IEC60364에 다음과 같은 방법이있다. · TN 시스템 : 전기 설비는한데 또는 다점 접지 점을 가지고 직접 접지되는 시스템. 시설과 접지극의 도전성 부분을 보호하는 것. · TN C 시스템 : 계통의 모든 걸쳐 중성선과 보호 도체가 하나의 도체 TN 시스템. · TN S 시스템 : 계통의 모든 걸쳐 독립 중성선과 보호 도체가있는 TN 시스템. · TN C S 시스템 : 계통의 일부가, 중성선과 보호 도체가 하나의 도체 TN 시스템. · TT 시스템 : 한 점을 대지에 직접 연결하여 전력 계통의 접지와는 상관없이 설비의 노출 도전성 부분을 대지에 직접 접지한다. · IT 시스템 : 전력 시스템을 대지 (접지)로부터 절연하는 설비의 노출 도전성 부분을 대지에 직접 접지한다. - - - - ElectricalSystemCategory - Designates the voltage range of the circuit, according to IEC. HIGHVOLTAGE indicates >1000V AC or >1500V DV; LOWVOLTAGE indicates 50-1000V AC or 120-1500V DC; EXTRALOWVOLTAGE indicates <50V AC or <120V DC. - - - - HIGHVOLTAGE - LOWVOLTAGE - EXTRALOWVOLTAGE - OTHER - NOTKNOWN - UNSET - - - - HIGHVOLTAGE - - High Voltage - - - - - - - LOWVOLTAGE - - Low Voltage - - - - - - - EXTRALOWVOLTAGE - - Extra Low Voltage - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Electrical System Category - 電気システムのカテゴリー - 전기 시스템 카테고리 - - - - IECに準拠した回路の電圧レンジを示す。次の列挙型の値を取る。(HIGHVOLTAGE indicates >1000V AC or >1500V DV; LOWVOLTAGE indicates 50-1000V AC or 120-1500V DC; EXTRALOWVOLTAGE indicates <50V AC or <120V DC.) - IEC에 따른 회로의 전압 범위를 나타낸다. 다음 열거 형의 값을 받는다. (HIGHVOLTAGE indicates> 1000V AC or> 1500V DV; LOWVOLTAGE indicates 50-1000V AC or 120-1500V DC; EXTRALOWVOLTAGE indicates <50V AC or <120V DC) - - - - Diversity - The ratio, expressed as a numerical -value or as a percentage, of the -simultaneous maximum demand of -a group of electrical appliances or -consumers within a specified period, -to the sum of their individual maximum -demands within the same -period. The group of electrical appliances is in this case connected to this circuit. Defenition from IEC 60050, IEV 691-10-04 -NOTE1: It is often not desirable to size each conductor in a distribution system to support the total connected load at that point in the network. Diversity is applied on the basis of the anticipated loadings that are likely to result from all loads not being connected at the same time. -NOTE2: Diversity is applied to final circuits only, not to sub-main circuits supplying other DBs. - - - - - - - Diversity - 負荷率 - 부하율 - - - - ある期間中同じ回路にある複数電気設備の同時最大負荷と各設備の合計負荷の比率。 - 일정 기간 동안 동일 회로에 여러 전기 설비의 동시 최대 부하와 각 설비의 총 부하의 비율. - - - - NumberOfLiveConductors - Number of live conductors within this circuit. Either this property or the ConductorFunction property (if only one) may be asserted. - - - - - - - Number Of Live Conductors - - - - - - - MaximumAllowedVoltageDrop - The maximum voltage drop across the circuit that must not be exceeded. -There are two voltage drop limit settings that may be applied; one for sub-main circuits, and one in each Distribution Board or Consumer Unit for final circuits connected to that board. The settings should limit the overall voltage drop to the required level. Default settings of 1.5% for sub-main circuits and 2.5% for final circuits, giving an overall limit of 4% may be applied. -NOTE: This value may also be specified as a constraint within an IFC model if required but is included within the property set at this stage pending implementation of the required capabilities within software applications. - - - - - - - Maximum Allowed Voltage Drop - 最大許容電圧降下 - 최대허용전압강하 - - - - 電気回路での電圧降下は最大電圧降下を超えないように。二種類の電圧降下限度があり、一つは分岐-主回路、もう一つは各分電盤或いは末端回路の電気需要装置と接続電気盤である。総電圧下降を使用範囲以内に制限する。デフォルト値は分岐-主回路1.5%、末端回路2.5%、合計総電圧4%である。 -注:この値はIFCモデルでの制約値と指定されているが、現段階ではプロプティセットに設定する。将来的には必要な性能として各ソフトアプリケションに利用する。 - 전기 회로에서 전압 강하는 최대 전압 강하를 초과하지 않도록. 두 종류의 전압 강하 한도가 있는데 하나는 분기 - 주회로, 다른 하나는 각 분전반 혹은 말단 회로의 전기 수요 장치와 연결 전기 판이다. 총 전압 하강을 사용 범위 이내로 제한한다. 기본값은 분기 - 주회로 1.5 %, 말단 회로 2.5 %, 합계 총 전압 4 %이다. 참고 :이 값은 IFC 모델에 따라 제한 값이 지정되어 있지만, 현 단계에서는 프로 쁘띠 세트로 설정한다. 미래에 필요한 성능으로 각 소프트웨어 어플 리케이션에 이용한다. - - - - NetImpedance - The maximum earth loop impedance upstream of a circuit (typically stated as the variable Zs). This value is for 55o C (130oF) Celsius usage. - - - - - - - Net Impedance - ネットインピーダンス - 인터넷 임피던스 - - - - 電気回路での最大接地インピーダンス(一般はZsで表示)。55℃ (130°F)での数値。 - 전기 회로에서 최대 접지 임피던스 (일반은 Zs로 표시). 55 ℃ (130 ° F)의 숫자. - - - - - - 電気回路の関連属性。 - - - - - Pset_DistributionSystemTypeVentilation - This property set is used to define the general characteristics of the duct design parameters within a system. -HISTORY: New property set in IFC Release 2.0. Renamed from Pset_DuctDesignCriteria in IFC4. - - - IfcDistributionSystem/VENTILATION - - IfcDistributionSystem/VENTILATION - - - DesignName - A name for the design values. - - - - - - - Design Name - 設計値名称 - 설계 값이름 - - - - 設計値の名称。 - 설계 값의 명칭. - - - - DuctSizingMethod - Enumeration that identifies the methodology to be used to size system components. - - - - CONSTANTFRICTION - CONSTANTPRESSURE - STATICREGAIN - OTHER - NOTKNOWN - UNSET - - - - CONSTANTFRICTION - - Constant Friction - - - - - - - CONSTANTPRESSURE - - Constant Pressure - - - - - - - STATICREGAIN - - Static Regain - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Duct Sizing Method - ダクト寸法の決め方 - 덕트 치수 결정 방법 - - - - ダクト寸法を決める計算方法。 - 덕트 치수를 결정하는 계산 방법. - - - - PressureClass - Nominal pressure rating of the system components. (Data type = PressureMeasure) - - - - - - - Pressure Class - 圧力等級 - 압력 등급 - - - - ダクトシステム各部位の圧力等級(計測した圧力)。 - 덕트 시스템 각 부위의 압력 등급 (측정된 압력) - - - - LeakageClass - Nominal leakage rating for the system components. - - - - - - - Leakage Class - 漏れ率 - 누설비율 - - - - ダクトシステム各部位の漏れ率。 - 덕트 시스템 각 부위의 누출 비율. - - - - FrictionLoss - The pressure loss due to friction per unit length. (Data type = PressureMeasure/LengthMeasure) - - - - - - - Friction Loss - 摩擦損失 - 마찰 소실 - - - - 単位長さあたりの圧力損失(計測した圧力損失/ダクト長さ)。 - 단위 길이 당 압력 손실 (측정 압력 손실 / 덕트 길이). - - - - ScrapFactor - Sheet metal scrap factor. - - - - - - - Scrap Factor - 廃材率 - 폐기물 비율 - - - - 金属板の廃材率。 - 금속판의 폐재 비율. - - - - DuctSealant - Type of sealant used on the duct and fittings. - - - - - Duct Sealant - ダクトの密閉性 - 덕트 밀폐 - - - - ダクトと継ぎ手の密閉形式。 - 덕트와 이음새의 밀폐 형식입니다. - - - - MaximumVelocity - The maximum design velocity of the air in the duct or fitting. - - - - - - - Maximum Velocity - 最大速度 - 최대 속도 - - - - ダクト或いは継ぎ手の最大設計風速。 - 덕트 또는 이음새의 최대 설계 바람. - - - - AspectRatio - The default aspect ratio. - - - - - - - Aspect Ratio - アスペクト比 - 화면 비율 - - - - デフォルトアスペクト比。 - 기본 화면 비율. - - - - MinimumHeight - The minimum duct height for rectangular, oval or round duct. - - - - - - - Minimum Height - 最小高さ - 최소 높이 - - - - 矩形、円形或いは楕円形ダクトの最小高さ。 - 사각형, 원형 또는 타원형 덕트의 최소 높이입니다. - - - - MinimumWidth - The minimum duct width for oval or rectangular duct. - - - - - - - Minimum Width - 最小幅 - 최소폭 - - - - 矩形、円形或いは楕円形ダクトの最小幅。 - 사각형, 원형 또는 타원형 덕트의 최소 폭. - - - - - - ダクトシステムの一般的な特徴、パラメーターの属性。 - - - - - Pset_DoorCommon - Properties common to the definition of all occurrences of IfcDoor. - - - IfcDoor - - IfcDoor - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as "construction type". It should be provided as an alternative to the name of the "object type", if the software does not support object types. - - - - - - - Bauteiltyp - Reference - Reference - 参照記号 - 参考号 - - - Bezeichnung zur Zusammenfassung gleichartiger Bauteile zu einem Bauteiltyp (auch Konstruktionstyp genannt). Alternativ zum Namen des "Typobjekts", insbesondere wenn die Software keine Typen unterstützt. - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1") pour désigner un "type de construction". Une alternative au nom d'un objet type lorsque les objets types ne sont pas gérés par le logiciel. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 若未采用已知的分类系统,则该属性为该项目中该类型构件的参考编号(例如,类型A-1)。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Status - Statut - 状態 - - - Status bzw. Phase des Bauteils insbesondere beim Bauen im Bestand. "Neu" (new) neues Bauteil als Ergänzung, "Bestand" (existing) bestehendes Bauteil, dass erhalten bleibt, "Abbruch" (demolish) Bauteil, das abgebrochen wird, "Temporär" (temporary) Bauteil und andere Bauelemente, die vorübergehend eingebaut werden (wie Abstützungen, etc.) - - Statut de l'élément, principalement utilisé dans les projets de rénovation et de réhabilitation. Le statut a pour valeur NOUVEAU pour un nouvel élément, EXISTANT pour un élément existant qui est conservé, DEMOLI pour un élément existant à démolir et TEMPORAIRE pour un élément temporaire (comme une structure support provisoire). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - FireRating - Fire rating for this object. It is given according to the national fire safety code or regulation. - - - - - - - Feuerwiderstandsklasse - Fire Rating - ResistanceAuFeu - 耐火等級 - 防火等级 - - - Feuerwiderstandsklasse für den Brandschutz gemäß der nationalen oder regionalen Richtlinie die für den Brandschutz der Brandschutztür gewährleistet werden muss. - - Classement au feu de l'élément donné selon la classification nationale de sécurité incendie. - 主要な耐火等級。関連する建築基準法、消防法などの国家基準を参照。 - 该构件的防火等级。 -该属性的依据为国家防火安全分级。 - - - - AcousticRating - Acoustic rating for this object. -It is provided according to the national building code. It indicates the sound transmission resistance of this object by an index ratio (instead of providing full sound absorbtion values). - - - - - - - Schallschutzklasse - Acoustic Rating - IsolationAcoustique - 遮音等級 - 隔音等级 - - - Schallschutzklasse gemäß der nationalen oder regionalen Richtlinie die als Mindestanforderung für die Schalldämmung der Tür gewährleistet sein muss. - - Classement acoustique de cet objet. Donné selon le Code National du Bâtiment. Il indique la résistance à la transmission du son de cet objet par une valeur de référence (au lieu de fournir les valeurs totales d'absorption du son). - 遮音等級情報。関連する建築基準法を参照。 - 该构件的隔音等级。 -该属性的依据为国家建筑规范。为表示该构件隔音效果的比率(而不是完全吸收声音的值)。 - - - - SecurityRating - Index based rating system indicating security level. -It is giving according to the national building code. - - - - - - - Widerstandsklasse - Security Rating - NiveauSecurite - 防犯等級 - 安全等级 - - - Widerstandsklasse für den Einbruchschutz gemäß der nationalen oder regionalen Richtlinie die als Mindestanforderung für die Einbruchhemmung der Tür gewährleistet sein muss. - - Système de classification par indices, indiquant le niveau de sécurité. - 防犯等級情報。関連する基準を参照。 - 表示安全程度的参考性等级。 -该属性的依据为国家建筑规范。 - - - - DurabilityRating - Durability against mechanical stress. It is given according to the national code or regulation. - - - - - - - Beanspruchungsklasse - Durability Rating - Durabilité - - - Mechanische Widerstandsfähigkeit gegen immer wiederkehrende Bewegungen und Einflüsse gemäß der nationalen oder regionalen Richtlinie. - - Durabilité au stress mécanique, selon une classification ou règlementation nationale. - - - - HygrothermalRating - Resistence against hygrothermal impact from different temperatures and humidities inside and outside. It is given according to the national code or regulation. - - - - - - - Klimaklasse - Hygrothermal Rating - Résistance hygrothermique - - - Hygrothermische Widerstandsfähigkeit gegen Temperatur- und Feuchteunterschiede gemäß der nationalen oder regionalen Richtlinie als Mindestanforderung gegen die Verformung der Tür. - - Résistance à l'impact hygrothermique des différences de température et d'humidité entre l'intérieur et l'extérieur, selon une classification ou règlementation nationale. - - - - WaterTightnessRating - Water tightness rating for this object. -It is provided according to the national building code. - - - - - - - - - - MechanicalLoadRating - Mechanical load rating for this object. -It is provided according to the national building code. - - - - - - - - - - WindLoadRating - Wind load resistance rating for this object. -It is provided according to the national building code. - - - - - - - - - - Infiltration - Infiltration flowrate of outside air for the filler object based on the area of the filler object at a pressure level of 50 Pascals. It shall be used, if the length of all joints is unknown. - - - - - - - Luftdurchlässigkeit - Infiltration - TauxInfiltration - - - Luftaustausch über die Fugen der geschlossenen Tür (Q-Wert). Gibt die Luftdurchlässigkeit der gesamten Tür bei einem Luftdruckniveau von 50 Pascal an. - - Taux d'infiltration de l'air extérieur lorsqu'on soumet la porte à une pression de 50 pascals. Cette valeur sera utilisée si la longueur des joints n'est pas connue. - - - - IsExternal - Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building. - - - - - - - Außenbauteil - Is External - EstExterieur - 外部区分 - 是否外部构件 - - - Angabe, ob dieses Bauteil ein Aussenbauteil ist (JA) oder ein Innenbauteil (NEIN). Als Aussenbauteil grenzt es an den Aussenraum (oder Erdreich, oder Wasser). - - Indique si l'élément est conçu pour être utilisé à l'extérieur (VRAI) ou non (FAUX). Si VRAI, c'est un élément extérieur qui donne sur l'extérieur du bâtiment. - 外部の部材かどうかを示すブーリアン値。もしTRUEの場合、外部の部材で建物の外側に面している。 - 表示该图元是否设计为外部构件。若是,则该图元为外部图元,朝向建筑物的外部。 - - - - ThermalTransmittance - Thermal transmittance coefficient (U-Value) of a material. -It applies to the total door construction. - - - - - - - U-Wert - Thermal Transmittance - TransmissionThermique - 熱貫流率 - 导热系数 - - - Wärmedurchgangskoeffizient (U-Wert) der Materialschichten. -Hier der Gesamtwärmedurchgangskoeffizient der Tür. - - Coefficient de transmission thermique (U) d'un matériau. Il s'applique à l'ensemble de la porte. - 熱貫流率U値。 - 材料的导热系数(U值)。 -适用于门的整体结构。 - - - - GlazingAreaFraction - Fraction of the glazing area relative to the total area of the filling element. -It shall be used, if the glazing area is not given separately for all panels within the filling element. - - - - - - - Glasflächenanteil - Glazing Area Fraction - FractionSurfaceVitree - - - Anteil der verglasten Fläche an der Gesamtfläche der Tür. - - Part de surface de vitrage par rapport à la surface totale de l'élément de remplissage. Doit être utilisée si la surface de vitrage n'est pas donnée séparément pour tous les panneaux occupant l'ouverture. - - - - HandicapAccessible - Indication that this object is designed to be accessible by the handicapped. -It is giving according to the requirements of the national building code. - - - - - - - Behindertengerecht - Handicap Accessible - AccessibleHandicapes - - - Angabe, ob die Tür behindertengerecht gemäß der nationalen oder regionalen Verordnung ist (JA), oder nicht (NEIN). - - Indique que cet objet est conçu pour être accessible aux handicapés. Indication donnée selon le Code National. - - - - FireExit - Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE). -Here it defines an exit door in accordance to the national building code. - - - - - - - Notausgang - Fire Exit - Sortie Secours - 非常口区分 - 是否为紧急出口 - - - Angabe, ob die Tür ein Notausgang gemäß der nationalen oder regionalen Brandschutzverordnung ist (JA), oder nicht (NEIN).. - - Indique si cet objet est conçu pour servir de sortie en cas d'incendie (VRAI) ou non (FAUX). Définition de la sortie de secours selon le Code National. - このオブジェクトが火災時の非常口として設計されているかどうかを示すブーリアン値。ここでは関連する建築基準法における出口ドアとして定義している。 - 表示该构件是否设计为火灾时的紧急出口。 -该属性的依据为国家建筑规范。 - - - - HasDrive - Indication whether this object has an automatic drive to operate it (TRUE) or no drive (FALSE) - - - - - - - Antrieb - Has Drive - - - Angabe, ob dieses Bauteil einen automatischen Antrieb zum Öffnen und Schließen besitzt (JA) oder nicht (NEIN). - - - - - SelfClosing - Indication whether this object is designed to close automatically after use (TRUE) or not (FALSE). - - - - - - - Selbstschliessend - Self Closing - FermetureAutomatique - 自動ドア閉機能区分 - 是否自动关闭 - - - Angabe, ob die Tür sicher und selbständig nach der Benutzung durch einen Türschließer schließt (Ja) oder nicht (NEIN). - - Indique si cet objet est conçu pour une fermeture automatique après usage (VRAI) ou non (FAUX) - このドアが自動的に閉まる機能を有するかどうかのブーリアン値。 - 表示该构件是否设计为自动关闭。 - - - - SmokeStop - Indication whether the object is designed to provide a smoke stop (TRUE) or not (FALSE). - - - - - - - Rauchschutz - Smoke Stop - CoupeFumee - 煙止め機能区分 - 是否防烟 - - - Angabe, ob die Tür einen Rauchschutz gemäß der nationalen oder regionalen Brandschutzverordnung gewährleistet (JA) oder nicht (NEIN). Rauchschutztüren müssen selbstschließend sein. - - Indique si la porte est conçue pour une fonction coupe-fumée (VRAI) ou non (FAUX) - このドアが煙を止める機能を有するかどうかのブーリアン値。 - 表示该构件是否设计为防烟。 - - - - - - Définition de l'IAI : propriétés communes à la définition de toutes les instances de la classe IfcDoor - IfcDoor(ドア)オブジェクトに関する共通プロパティセット定義。 - 所有IfcDoor实例的定义中通用的属性。 - - - - - Pset_DoorWindowGlazingType - Properties common to the definition of the glazing component of occurrences of IfcDoor and IfcWindow, used for thermal and lighting calculations. - - - IfcDoor - IfcWindow - - IfcDoor, IfcWindow - - - GlassLayers - Number of glass layers within the frame. E.g. "2" for double glazing. - - - - - - - German-name-1 - Glass Layers - NombreVitrages - ガラス枚数 - 玻璃层数 - - - German-description-1 - - Nombre de couches de verre dans le cadre. Exemple : 2 pour le double vitrage. - ガラスの枚数。例:"2"はペアガラス。 - 框内玻璃的层数。例如:”2”表示双层玻璃。 - - - - GlassThickness1 - Thickness of the first (inner) glass layer. - - - - - - - German-name-2 - Glass Thickness1 - EpaisseurVitrage1 - ガラス厚1 - 玻璃厚度1 - - - German-description-2 - - Epaisseur de la première couche de verre (côté intérieur) - 最初の(室内側)ガラスの厚み。 - 第一层(内侧)玻璃的厚度。 - - - - GlassThickness2 - Thickness of the second (intermediate or outer) glass layer. - - - - - - - German-name-3 - Glass Thickness2 - EpaisseurVitrage2 - ガラス厚2 - 玻璃厚度2 - - - German-description-3 - - Epaisseur de la deuxième couche de verre (intermédiaire ou côté extérieur) - 2番目(中間、あるいは外側)のガラスの厚み。 - 第二层(中间或外侧)玻璃的厚度。 - - - - GlassThickness3 - Thickness of the third (outer) glass layer. - - - - - - - German-name-4 - Glass Thickness3 - EpaisseurVitrage3 - ガラス厚3 - 玻璃厚度3 - - - German-description-4 - - Epaisseur de la troisième couche de verre (côté extérieur) - 3番目(外側)のガラスの厚み。 - 第三层(外侧)玻璃的厚度。 - - - - FillGas - Name of the gas by which the gap between two glass layers is filled. It is given for information purposes only. - - - - - - - German-name-5 - Fill Gas - GazEntreVitrages - 充填ガス種 - 填充气体 - - - German-description-5 - - Nom du gaz remplissant l'espace entre deux couches de verre. Donné à titre informatif seulement. - 2枚のガラス間の隙間に充填されたガスの名称。これは情報目的専用に提供される。 - 两层玻璃之间填充气体的名称。仅供参考。 - - - - GlassColor - Color (tint) selection for this glazing. It is given for information purposes only. - - - - - - - German-name-6 - Glass Color - CouleurVitrage - ガラス色 - 玻璃颜色 - - - German-description-6 - - Choix de la couleur (teinte) du vitrage. Donné à titre informatif seulement. - ガラスの色合い。これは情報目的専用に提供される。 - 玻璃(贴膜)的颜色。仅供参考。 - - - - IsTempered - Indication whether the glass is tempered (TRUE) or not (FALSE) . - - - - - - - German-name-7 - Is Tempered - VitrageTrempe - 強化ガラス - 是否钢化 - - - German-description-7 - - Indique si le verre est trempé (VRAI) ou non (FAUX). - 強化ガラスか(TRUE)否か(FALSE)を示す。 - 表示玻璃是否经过强化处理。 - - - - IsLaminated - Indication whether the glass is layered with other materials (TRUE) or not (FALSE). - - - - - - - German-name-8 - Is Laminated - VitrageFeuillete - 皮膜を被せたガラス - 是否夹层 - - - German-description-8 - - Indique si le verre est feuilleté (VRAI) ou non (FAUX). - ガラス以外の素材が重ねられているか(TRUE)否か(FALSE)示す。 - 表示玻璃是否具有含其他材料的夹层。 - - - - IsCoated - Indication whether the glass is coated with a material (TRUE) or not (FALSE). - - - - - - - German-name-9 - Is Coated - VitrageTraite - コーティング - 是否镀膜 - - - German-description-9 - - Indique si le verre a subi un traitement de surface (VRAI) ou non (FAUX). - ガラスがコーティングされいるか(TRUE)否か(FALSE)示す。 - 表示玻璃是否具有某种材料的镀膜。 - - - - IsWired - Indication whether the glass includes a contained wire mesh to prevent break-in (TRUE) or not (FALSE) - - - - - - - German-name-10 - Is Wired - VitrageArme - 網入りガラス - 是否夹丝 - - - German-description-10 - - Indique si le verre est un verre armé à maille anti-effraction (VRAI) ou non (FAUX) - 不法侵入防止の網入りガラスか(TRUE)否か(FALSE)示す。 - 表示玻璃是否具有防断裂的纤维网格。 - - - - VisibleLightReflectance - Fraction of the visible light that is reflected by the glazing at normal incidence. It is a value without unit. - - - - - - - Reflektionsgrad für sichtbares Licht - Visible Light Reflectance - ReflexionVisible - 可視光反射率 - 可见光反射率 - - - German-description-12 - - Fraction du rayonnement visible qui est réfléchi par le vitrage sous incidence normale. Valeur sans unité. - ガラスへ法線入射した可視光の反射率。単位の無い値。 - 正射时被玻璃反射的可见光比例。无单位。 - - - - VisibleLightTransmittance - Fraction of the visible light that passes the glazing at normal incidence. It is a value without unit. - - - - - - - Transmissionsgrad für sichtbares Licht - Visible Light Transmittance - TransmittanceVisible - 可視光透過率 - 可见光透射率 - - - German-description-11 - - Fraction du rayonnement visible qui est transmise par le vitrage sous incidence normale. Valeur sans unité. - ガラスへ法線入射した可視光の透過率。単位の無い値。 - 正射时穿透玻璃的可见光比例。无单位。 - - - - SolarAbsorption - (Asol) The ratio of incident solar radiation that is absorbed by a glazing system. It is the sum of the absorption distributed to the exterior (a) and to the interior (qi). Note the following equation Asol + Rsol + Tsol = 1 - - - - - - - Strahlungsabsorbtionsgrad - Solar Absorption - AbsorptionRayonnementSolaire - 日射吸収率 - 太阳能吸收率 - - - German-description-13 - - (Asol). Ratio du rayonnement solaire incident qui est absorbé par le vitrage. Somme de l'absorption distribuée à l'extérieur (a) et à l'intérieur (qi). Noter l'équation suivante : Asol + Rsol + Tsol = 1. - (Asol)ガラスで吸収される日射の比率。吸収の合計は外部(a)と、室内(qi)に分配される。以下の方程式に注意。Asol + Rsol + Tsol = 1 - (Asol)被玻璃系统吸收的太阳入射辐射的比率,为传递到室外和室内的吸收的总量。注:以下等式成立Asol + Rsol + Tsol = 1 - - - - SolarReflectance - (Rsol): The ratio of incident solar radiation that is reflected by a glazing system (also named ρe). Note the following equation Asol + Rsol + Tsol = 1 - - - - - - - Strahlungsreflectionsgrad - Solar Reflectance - ReflexionRayonnementSolaire - 日射反射率 - 太阳能反射率 - - - German-description-14 - - (Rsol). Ratio du rayonnement solaire incident qui est réfléchi par le vitrage. Noter l'équation suivante : Asol + Rsol + Tsol = 1. - (Rsol)ガラスで反射する日射の比率(ρeとも表わされる)。以下の方程式に注意。Asol + Rsol + Tsol = 1 - (Rsol)被玻璃系统反射的太阳入射辐射的比率(也可用ρe表示)。注:以下等式成立Asol + Rsol + Tsol = 1 - - - - SolarTransmittance - (Tsol): The ratio of incident solar radiation that directly passes through a glazing system (also named τe). Note the following equation Asol + Rsol + Tsol = 1 - - - - - - - Strahlungstransmissionsgrad - Solar Transmittance - TransmissionRayonnementSolaire - 日射透過率 - 太阳能透射率 - - - German-description-15 - - (Tsol). Ratio du rayonnement solaire incident qui est transmis directement par le vitrage. Noter l'équation suivante : Asol + Rsol + Tsol = 1. - (Tsol)ガラスを透過する日射の比率(τeとも表わされる)。以下の方程式に注意。Asol + Rsol + Tsol = 1 - (Tsol)透过玻璃系统的太阳入射辐射的比率(也可用τe表示)。注:以下等式成立Asol + Rsol + Tsol = 1 - - - - SolarHeatGainTransmittance - (SHGC): The ratio of incident solar radiation that contributes to the heat gain of the interior, it is the solar radiation that directly passes (Tsol or τe) plus the part of the absorbed radiation that is distributed to the interior (qi). The SHGC is refered to also as g-value (g = τe + qi). - - - - - - - Gesamtenergiedurchlassgrad - Solar Heat Gain Transmittance - ApportsSolaires - 透過太陽熱利得係数 - 太阳能得热系数 - - - German-description-16 - - (SHGC): Ratio du rayonnement solaire incident qui contribue aux apports solaires récupérés. Rayonnemment transmis directement (Tsol ou Te), plus la part de rayonnement absorbé restitué à l'intérieur (qi). Le SHGC est également appelé valeur-g (g = Te + qi). - (SHGC):室内の熱利得の原因となる日射の比率。ガラスの透過分(Tsol or τe)と吸収分の内、室内側(qi)への分配分の和。SHGCは、g値(g = τe + qi)としても参照される。 - (SHGC)导致室内取得热量的入射太阳辐射比率,该值为透射太阳辐射(Tsol或τe)与分配到室内的吸收太阳辐射(qi)的和。SHGC也被称为g值(g = τe + qi)。 - - - - ShadingCoefficient - (SC): The measure of the ability of a glazing to transmit solar heat, relative to that ability for 3 mm (1/8-inch) clear, double-strength, single glass. Shading coefficient is being phased out in favor of the solar heat gain coefficient (SHGC), and is approximately equal to the SHGC multiplied by 1.15. The shading coefficient is expressed as a number without units between 0 and 1. - - - - - - - mittlere Durchlassfaktor b - Shading Coefficient - CoefficientOmbrage - 遮蔽係数 - 遮阳系数 - - - Das Verhältnis aus g-Wert der jeweiligen Verglasung und dem g-Wert eines Zweischeiben-Normalglasfensters. -Der g-Wert dieses Zweischeiben-Normalglasfensters wird als Konstante mit 80 % angesetzt. Bei Einfachglas beträgt die Konstante 87 %, Auch "Shading coefficient" genannt. - - (SC): Mesure de la capacité d'un vitrage à transmettre l'énergie solaire comparativement à un simple vitrage clair, de 3 mm (double renfort). Le coefficient d'atténuation est supprimé progressivement en faveur du coefficient d'apport solaire (SHGC) et est approximativement égal au SHGC multiplié par 1,15. Le coefficient d'atténuation est exprimé comme nombre sans unités entre 0 et 1. - (SC): ガラスの太陽熱伝導の基準、3mm(1/8インチ)透明の一枚ガラスの性能との比。遮蔽係数は太陽熱利得係数(SHGC)に移行し、段階的に廃止、SHGC×1.15とほとんど等しい。遮蔽係数は0から1までの単位無しの値。 - (SC)玻璃传递太阳热量能力的度量,以3mm(1/8英寸)透明双倍强度单层玻璃为基准。遮阳系数有被太阳能得热系数(SHGC)取代的趋势,其值约为SHGC的1.15倍。遮阳系数以大于0小于1的无单位数表示。 - - - - ThermalTransmittanceSummer - Thermal transmittance coefficient (U-Value) of a material. -Summer thermal transmittance coefficient of the glazing only, often referred to as (U-value). - - - - - - - German-name-15 - Thermal Transmittance Summer - TransmittanceThermiqueEte - 夏期の熱透過係数 - 夏季导热系数 - - - German-description-17 - - Coefficient de transmission thermique (U) d'un matériau. Coefficient de transmission thermique en été du vitrage seul, souvent désigné comme étant Uw. - 素材の熱透過係数(U値)。夏期のガラスの熱透過係数だけ、U値として参照される - 材料的导热系数(U值)。 -仅玻璃的夏季导热系数,常以U值表示。 - - - - ThermalTransmittanceWinter - Thermal transmittance coefficient (U-Value) of a material. -Winter thermal transmittance coefficient of the glazing only, often referred to as (U-value). - - - - - - - German-name-16 - Thermal Transmittance Winter - TransmittanceThermiqueHiver - 冬季の熱透過係数 - 冬季导热系数 - - - German-description-18 - - Coefficient de transmission thermique (U) d'un matériau. Coefficient de transmission thermique en hiver du vitrage seul, souvent désigné comme étant Uw. - 素材の熱透過係数(U値)。夏期のガラスの熱透過係数だけ、U値として参照される。 - 材料的导热系数(U值)。 -仅玻璃的冬季导热系数,常以U值表示。 - - - - - - Définition de l'IAI : propriétés communes à la définition du composant vitrage des instances des classes IfcDoor et IfcWindow, utilisées pour des calculs thermiques et d'éclairage. - IfcDoorとIfcWindowにあるガラス部品に関する共通プロパティセット定義。熱と明るさの計算に用いる。 - IfcDoor和IfcWindow实例的玻璃构件定义中通用的属性,用于热工和采光计算。 - - - - - Pset_DuctFittingOccurrence - Duct fitting occurrence attributes. - - - IfcDuctFitting - - IfcDuctFitting - - - InteriorRoughnessCoefficient - The interior roughness of the duct fitting material. - - - - - - - Interior Roughness Coefficient - 内面粗さ係数 - - - - ダクト継手材料の内面粗さ - - - - HasLiner - TRUE if the fitting has interior duct insulating lining, FALSE if it does not. - - - - - - - Has Liner - 内張り有無 - - - - 内貼り保温ダクト内面にあるときにTRUE。無い時にFALSE - - - - Color - The color of the duct segment. - -Note: This is typically used for any duct segments with a painted surface which is not otherwise specified as a covering. - - - - - - - Color - - - - - ダクト継手の色 -メモ:塗装されているときに使用される。他の場合は仕上げとして定義 - - - - - - ダクト継手の属性。 - - - - - Pset_DuctFittingPHistory - Duct fitting performance history common attributes. - - - IfcDuctFitting - - IfcDuctFitting - - - LossCoefficient - Dimensionless loss coefficient used for calculating fluid resistance representing the ratio of total pressure loss to velocity pressure at a referenced cross-section. - - - - - Loss Coefficient - 損失係数 - - - - 参照された断面での動圧に対する全圧損失の比を表わす流体抵抗の計算に使用される無次元の損失係数 - - - - AtmosphericPressure - Ambient atmospheric pressure. - - - - - Atmospheric Pressure - 大気圧 - - - - 周囲の大気圧 - - - - AirFlowLeakage - Volumetric leakage flow rate. - - - - - Air Flow Leakage - 漏れ量 - - - - 体積漏れ流量 - - - - - - ダクト継手の性能履歴共通属性。 - - - - - Pset_DuctFittingTypeCommon - Duct fitting type common attributes. - - - IfcDuctFitting - - IfcDuctFitting - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - PressureClass - Pressure classification as defined by the authority having jurisdiction (e.g., SMACNA, etc.). - - - - - - - Pressure Class - 圧力クラス - - - - 管轄権を持つ当局(SMACNAなど)によって定義された圧力分類 - - - - PressureRange - Allowable maximum and minimum working pressure (relative to ambient pressure). - - - - - - - Pressure Range - 圧力範囲 - - - - 許容最大・最小動作圧力(周辺圧力との相対値) - - - - TemperatureRange - Allowable maximum and minimum temperature. - - - - - - - Temperature Range - 温度範囲 - - - - 許容最高・最低温度 - - - - - - ダクト継手形式共通属性。 - - - - - Pset_DuctSegmentOccurrence - Duct segment occurrence attributes attached to an instance of IfcDuctSegment. - - - IfcDuctSegment - - IfcDuctSegment - - - InteriorRoughnessCoefficient - The interior roughness of the duct fitting material. - - - - - - - Interior Roughness Coefficient - 内面粗さ係数 - - - - ダクト継手材料の内面粗さ - - - - HasLiner - TRUE if the fitting has interior duct insulating lining, FALSE if it does not. - - - - - - - Has Liner - 内張り有無 - - - - 内貼り保温ダクト内面にあるときにTRUE。無い時にFALSE - - - - Color - The color of the duct segment. - -Note: This is typically used for any duct segments with a painted surface which is not otherwise specified as a covering. - - - - - - - Color - - - - - ダクト継手の色 -メモ:塗装されているときに使用される。他の場合は仕上げとして定義 - - - - - - IfcDuctSegmentの値に関連づいたダクト直管の属性。 - - - - - Pset_DuctSegmentPHistory - Duct segment performance history common attributes. - - - IfcDuctSegment - - IfcDuctSegment - - - LossCoefficient - Dimensionless loss coefficient used for calculating fluid resistance representing the ratio of total pressure loss to velocity pressure at a referenced cross-section. - - - - - Loss Coefficient - 損失係数 - - - - 参照された断面での動圧に対する全圧損失の比を表わす流体抵抗の計算に使用される無次元の損失係数 - - - - AtmosphericPressure - Ambient atmospheric pressure. - - - - - Atmospheric Pressure - 大気圧 - - - - 周囲の大気圧 - - - - LeakageCurve - Leakage per unit length curve versus working pressure. If a scalar is expressed then it represents LeakageClass which is flowrate per unit area at a specified pressure rating (e.g., ASHRAE Fundamentals 2001 34.16.). - - - - - Leakage Curve - 漏れ曲線 - - - - 作動圧力に対する単位長さあたりの漏れ曲線。 -スカラー値が表現されている場合は、所定の圧力(例えば、ASHRAE Fundamentals 200134.16)における単位面積当たりの流量である漏れクラスを表す。 - - - - FluidFlowLeakage - Volumetric leakage flow rate. - - - - - Fluid Flow Leakage - 漏れ量 - - - - 体積漏れ流量 - - - - - - ダクト直管性能履歴共通属性。 - - - - - Pset_DuctSegmentTypeCommon - Duct segment type common attributes. - - - IfcDuctSegment - - IfcDuctSegment - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - Shape - Cross sectional shape. Note that this shape is uniform throughout the length of the segment. For nonuniform shapes, a transition fitting should be used instead. - - - - FLATOVAL - RECTANGULAR - ROUND - OTHER - NOTKNOWN - UNSET - - - - FLATOVAL - - Flatoval - - - - - - - RECTANGULAR - - Rectangular - - - - - - - ROUND - - Round - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Shape - 形状 - - - - 断面形状: -この形状は直管を通じて一定である。変形する形状のためには、かわりに変形継手が使用される。(フラットオーバル、角型、丸型 他) - - - - WorkingPressure - Pressure classification as defined by the authority having jurisdiction (e.g., SMACNA, etc.). - - - - - - - Working Pressure - 圧力クラス - - - - 管轄権を持つ当局(SMACNAなど)によって定義された圧力分類 - - - - PressureRange - Allowable maximum and minimum working pressure (relative to ambient pressure). - - - - - - - Pressure Range - 圧力範囲 - - - - 許容最大・最小動作圧力(周辺圧力との相対値) - - - - TemperatureRange - Allowable maximum and minimum temperature. - - - - - - - Temperature Range - 温度範囲 - - - - 許容最高・最低温度 - - - - LongitudinalSeam - The type of seam to be used along the longitudinal axis of the duct segment. - - - - - - - Longitudinal Seam - ハゼ - - - - ハゼの種類は、ダクト直管の縦方向に使用するハゼの種類 - - - - NominalDiameterOrWidth - The nominal diameter or width of the duct segment. - - - - - - - Nominal Diameter Or Width - 呼び径・巾 - - - - ダクト直管の呼び径またはダクト巾 - - - - NominalHeight - The nominal height of the duct segment. - - - - - - - Nominal Height - 呼び高さ - - - - ダクト直管の高さ - - - - Reinforcement - The type of reinforcement, if any, used for the duct segment. - - - - - - - Reinforcement - 補強 - - - - ダクト直管に何か使用されている場合の補強種類 - - - - ReinforcementSpacing - The spacing between reinforcing elements. - - - - - - - Reinforcement Spacing - 補強間隔 - - - - 補強要素間の距離 - - - - - - ダクト直管タイプ共通属性。 - - - - - Pset_DuctSilencerPHistory - Duct silencer performance history common attributes. - - - IfcDuctSilencer - - IfcDuctSilencer - - - AirFlowRate - Volumetric air flow rate. - - - - - Air Flow Rate - 風量 - - - - 体積風量 - - - - AirPressureDropCurve - Air pressure drop as a function of air flow rate. - - - - - Air Pressure Drop Curve - 圧力降下曲線 - - - - 風量の関数としての空気圧力降下 - - - - - - ダクト消音器の性能履歴共通属性。 - - - - - Pset_DuctSilencerTypeCommon - Duct silencer type common attributes. -InsertionLoss and RegeneratedSound attributes deleted in IFC2x2 Pset Addendum: Use IfcSoundProperties instead. - - - IfcDuctSilencer - - IfcDuctSilencer - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - HydraulicDiameter - Hydraulic diameter. - - - - - - - Hydraulic Diameter - 水力直径 - - - - 水力直径 - - - - Length - The finished length of the silencer. - - - - - - - Length - 長さ - - - - サイレンサの仕上げ長さ - - - - Weight - The weight of the silencer. - - - - - - - Weight - 重さ - - - - サイレンサ重量 - - - - AirFlowrateRange - Possible range of airflow that can be delivered. - - - - - - - Air Flowrate Range - 流量範囲 - - - - 送風可能な風量範囲 - - - - WorkingPressureRange - Allowable minimum and maximum working pressure (relative to ambient pressure). - - - - - - - Working Pressure Range - 作動圧力範囲 - - - - 許容最小・最大作動圧力(周囲圧との相対値) - - - - TemperatureRange - Allowable minimum and maximum temperature. - - - - - - - Temperature Range - 温度範囲 - - - - 許容最低・最高温度 - - - - HasExteriorInsulation - TRUE if the silencer has exterior insulation. FALSE if it does not. - - - - - - - Has Exterior Insulation - 外部保温 - - - - サイレンサに外部保温があるときTRUE - - - - - - ダクト消音器共通属性 - -InsertionLossとRegeneratedSoundはIFC2x2 psetの付録で削除された属性:IfcSoundPropertiesを代わりに使用します。 - - - - - Pset_ElectricalDeviceCommon - A collection of properties that are commonly used by electrical device types. - - - IfcDistributionElement - - IfcDistributionElement - - - RatedCurrent - The current that a device is designed to handle. - - - - - - - Rated Current - - - - - - - RatedVoltage - The voltage that a device is designed to handle. - - - - - - - Rated Voltage - - - - - - - NominalFrequencyRange - The upper and lower limits of frequency for which the operation of the device is certified. - - - - - - - Nominal Frequency Range - - - - - - - PowerFactor - The ratio between the rated electrical power and the product of the rated current and rated voltage - - - - - - - Power Factor - - - - - - - ConductorFunction - Function of a line conductor to which a device is intended to be connected where L1, L2 and L3 represent the phase lines according to IEC 60446 notation (sometimes phase lines may be referenced by color [Red, Blue, Yellow] or by number [1, 2, 3] etc). Protective Earth is sometimes also known as CPC or common protective conductor. Note that for an electrical device, a set of line conductor functions may be applied. - - - - L1 - L2 - L3 - - - - PHASE_L1 - - Phase L1 - - - - - - - PHASE_L2 - - Phase L2 - - - - - - - PHASE_L3 - - Phase L3 - - - - - - - NEUTRAL - - Neutral - - - - - - - PROTECTIVEEARTH - - Protective Earth - - - - - - - PROTECTIVEEARTHNEUTRAL - - Protective Earth Neutral - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Conductor Function - - - - - - - NumberOfPoles - The number of live lines that is intended to be handled by the device. - - - - - - - Number Of Poles - - - - - - - HasProtectiveEarth - Indicates whether the electrical device has a protective earth connection (=TRUE) or not (= FALSE). - - - - - - - Has Protective Earth - - - - - - - InsulationStandardClass - Insulation standard classes provides basic protection information against electric shock. Defines levels of insulation required in terms of constructional requirements (creepage and clearance distances) and electrical requirements (compliance with electric strength tests). Basic insulation is considered to be shorted under single fault conditions. The actual values required depend on the working voltage to which the insulation is subjected, as well as other factors. Also indicates whether the electrical device has a protective earth connection. - - - - - - CLASS0APPLIANCE - - Class 0 Appliance - - - - - - - CLASS0IAPPLIANCE - - Class 0I Appliance - - - - - - - CLASSIAPPLIANCE - - Class I Appliance - - - - - - - CLASSIIAPPLIANCE - - Class II Appliance - - - - - - - CLASSIIIAPPLIANCE - - Class III Appliance - - - - - - - OTHER - - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Insulation Standard Class - - - - - - - IP_Code - IP Code, the International Protection Marking, IEC 60529), classifies and rates the degree of protection provided against intrusion. - - - - - - - IP_ Code - - - - - - - IK_Code - IK Code according to IEC 62262 (2002) is a numeric classification for the degree of protection provided by enclosures for electrical equipment against external mechanical impacts. -<blockquote class="note">NOTE&nbsp; In earlier labeling, the third numeral (1..) had been occasionally added to the closely related IP Code on ingress protection, to indicate the level of impact protection.</blockquote> - - - - - - - - - - - - - - - - Pset_ElectricAppliancePHistory - Captures realtime information for electric appliances, such as for energy usage. HISTORY: Added in IFC4. - - - IfcElectricAppliance - - IfcElectricAppliance - - - PowerState - Indicates the power state of the device where True is on and False is off. - - - - - Power State - - - - - - - - - - - - - Pset_ElectricApplianceTypeCommon - Common properties for electric appliances. HISTORY: Added in IFC4. - - - IfcElectricAppliance - - IfcElectricAppliance - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照 - 참조 - - - - 当該プロジェクトで定義する形式の参照ID(例:A-1)、承認された分類に存在しないときに使用される。 - 해당 프로젝트에 정의된 형식의 참조 ID (예 : A-1) 승인된 분류에 존재하지 않을 때 사용된다. - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - - - 電化製品の共通プロパティ。 -IFC4にて追加。 - - - - - Pset_ElectricApplianceTypeDishwasher - Common properties for dishwasher appliances. HISTORY: Added in IFC4. - - - IfcElectricAppliance/DISHWASHER - - IfcElectricAppliance/DISHWASHER - - - DishwasherType - Type of dishwasher. - - - - POTWASHER - TRAYWASHER - DISHWASHER - BOTTLEWASHER - CUTLERYWASHER - OTHER - UNKNOWN - UNSET - - - - POTWASHER - - Pot Washer - - - - - - - TRAYWASHER - - Tray Washer - - - - - - - DISHWASHER - - Dish Washer - - - - - - - BOTTLEWASHER - - Bottle Washer - - - - - - - CUTLERYWASHER - - Cutlery Washer - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - UNKNOWN - - Unknown - - - - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Dishwasher Type - 食器洗浄機のタイプ - 식기 세척기의 유형 - - - - 食器洗浄機のタイプ。 - 식기 세척기의 유형 - - - - - - 食器洗浄機の共通のプロパティ。 -IFC4にて追加。 - - - - - Pset_ElectricApplianceTypeElectricCooker - Common properties for electric cooker appliances. HISTORY: Added in IFC4. - - - IfcElectricAppliance/ELECTRICCOOKER - - IfcElectricAppliance/ELECTRICCOOKER - - - ElectricCookerType - Type of electric cooker. - - - - STEAMCOOKER - DEEPFRYER - STOVE - OVEN - TILTINGFRYINGPAN - COOKINGKETTLE - OTHER - UNKNOWN - UNSET - - - - STEAMCOOKER - - Steam Cooker - - - - - - - DEEPFRYER - - Deep Fryer - - - - - - - STOVE - - Stove - - - - - - - OVEN - - Oven - - - - - - - TILTINGFRYINGPAN - - Tilting Frying Pan - - - - - - - COOKINGKETTLE - - Cooking Kettle - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - UNKNOWN - - Unknown - - - - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Electric Cooker Type - 電気調理器のタイプ - 전기 밥솥의 종류 - - - - 電気調理器のタイプ。 - 전자 조리기의 유형. - - - - - - 電気調理器の共通プロパティ。 -IFC4にて追加。 - - - - - Pset_ElectricDistributionBoardOccurrence - Properties that may be applied to electric distribution board occurrences. - - - IfcElectricDistributionBoard - - IfcElectricDistributionBoard - - - IsMain - Identifies if the current instance is a main distribution point or topmost level in an electrical distribution hierarchy (= TRUE) or a sub-main distribution point (= FALSE). - - - - - - - Is Main - - - - - - - IsSkilledOperator - Identifies if the current instance requires a skilled person or instructed person to perform operations on the distribution board (= TRUE) or whether operations may be performed by a person without appropriate skills or instruction (= FALSE). - - - - - - - Is Skilled Operator - - - - - - - - - - - - - Pset_ElectricDistributionBoardTypeCommon - Properties that may be applied to electric distribution boards. - - - IfcElectricDistributionBoard - - IfcElectricDistributionBoard - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照 - 참조 - - - - 当該プロジェクトで定義する形式の参照ID(例:A-1)、承認された分類に存在しないときに使用される。 - 해당 프로젝트에 정의된 형식의 참조 ID (예 : A-1) 승인된 분류에 존재하지 않을 때 사용된다. - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - - - 配電盤に適用するプロパティ。 - - - - - Pset_ElectricFlowStorageDeviceTypeCommon - The characteristics of the supply associated with an electrical device occurrence acting as a source of supply to an electrical distribution system NOTE: Properties within this property set should ONLY be used in circumstances when an electrical supply is applied. The property set, the properties contained and their values are not applicable to a circumstance where the sypply is not being applied to the eletrical system or is temporarily disconnected. All properties within this property set are considered to represent a steady state situation. - - - IfcElectricFlowStorageDevice - - IfcElectricFlowStorageDevice - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照 - 참조 - - - - 当該プロジェクトで定義する形式の参照ID(例:A-1)、承認された分類に存在しないときに使用される。 - 해당 프로젝트에 정의된 형식의 참조 ID (예 : A-1) 승인된 분류에 존재하지 않을 때 사용된다. - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - NominalSupplyVoltage - The nominal voltage of the supply. - - - - - - - Nominal Supply Voltage - 公称電圧 - 공칭 주파수 - - - - 電源の公称電圧。 - 전원 공칭 주파수 - - - - NominalSupplyVoltageOffset - The maximum and minimum allowed voltage of the supply e.g. boundaries of 380V/440V may be applied for a nominal voltage of 400V. - - - - - - - Nominal Supply Voltage Offset - オフセット公称電圧 - 옵셋 공칭 전압 - - - - 電源の最大値と最小許容電圧。たとえば380V/440Vの境界は400Vの公称電圧に適用される。 - 전원 최대 및 최소 허용 전압 예 : 380V/440V 경계는 400V의 정격 전압에 적용된다. - - - - NominalFrequency - The nominal frequency of the supply. - - - - - - - Nominal Frequency - 公称周波数 - 공칭 주파수 - - - - 電源の公称周波数。 - 전원 공칭 주파수. - - - - ConnectedConductorFunction - Function of the conductors to which the load is connected. - - - - PHASE_L1 - PHASE_L2 - PHASE_L3 - NEUTRAL - PROTECTIVEEARTH - PROTECTIVEEARTHNEUTRAL - OTHER - NOTKNOWN - UNSET - - - - PHASE_L1 - - Phase L1 - - - - - - - PHASE_L2 - - Phase L2 - - - - - - - PHASE_L3 - - Phase L3 - - - - - - - NEUTRAL - - Neutral - - - - - - - PROTECTIVEEARTH - - Protective Earth - - - - - - - PROTECTIVEEARTHNEUTRAL - - Protective Earth Neutral - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Connected Conductor Function - 接続導体機能 - 연결 도체 기능 - - - - 導体の機能は負荷が接続された状態。 - 도체의 기능은 부하가 연결된 상태. - - - - ShortCircuit3PoleMaximumState - Maximum 3 pole short circuit current provided at the point of supply. - - - - - - - Short Circuit3 Pole Maximum State - 3極最大短絡電流 - 3 극 최대 단락 전류 - - - - 電源供給時点の3極最大短絡電流。 - 전원 공급 시점의 3 극 최대 단락 전류. - - - - ShortCircuit3PolePowerFactorMaximumState - Power factor of the maximum 3 pole short circuit current provided at the point of supply. - - - - - - - Short Circuit3 Pole Power Factor Maximum State - 3極最大短絡電流力率 - 3 극 최대 단락 전류 역률 - - - - 電源供給時点の3極最大短絡電流力率。 - 전원 공급 시점의 3 극 최대 단락 전류 역률. - - - - ShortCircuit2PoleMinimumState - Minimum 2 pole short circuit current provided at the point of supply. - - - - - - - Short Circuit2 Pole Minimum State - 2極最小短絡電流 - 2 극 최소 단락 전류 - - - - 電源供給時点の2極最小短絡電流。 - 전원 공급 시점의 양극 최소 단락 전류. - - - - ShortCircuit2PolePowerFactorMinimumState - Power factor of the minimum 2 pole short circuit current provided at the point of supply. - - - - - - - Short Circuit2 Pole Power Factor Minimum State - 2極最小短絡電流力率 - 2 극 최소 단락 전류 역률 - - - - 電源供給時点の2極最小短絡電流力率。 - 전원 공급 시점의 양극 최소 단락 전류 역률. - - - - ShortCircuit1PoleMaximumState - Maximum 1 pole short circuit current provided at the point of supply i.e. the fault between 1 phase and N. - - - - - - - Short Circuit1 Pole Maximum State - 1極最大短絡電流 - 1 극 최대 단락 전류 - - - - 電源供給時点の点1相とN間の1極最大短絡電流。 - 전원 공급 시점 점 1 단계와 N 사이의 1 극 최대 단락 전류 역률. - - - - ShortCircuit1PolePowerFactorMaximumState - Power factor of the maximum 1 pole short circuit current provided at the point of supply i.e. the fault between 1 phase and N. - - - - - - - Short Circuit1 Pole Power Factor Maximum State - 1極最大短絡電流力率 - 1 극 최대 단락 전류 역률 - - - - 電源供給時点の点1相とN間の1極最大短絡電流力率。 - 전원 공급 시점 점 1 단계와 N 사이의 1 극 최대 단락 전류 역률. - - - - ShortCircuit1PoleMinimumState - Minimum 1 pole short circuit current provided at the point of supply i.e. the fault between 1 phase and N. - - - - - - - Short Circuit1 Pole Minimum State - 1極最小短絡電流 - 1 극 최소 단락 전류 - - - - 電源供給時点の点1相とN間の1極最小短絡電流。 - 전원 공급 시점 점 1 단계와 N 사이의 1 극 최소 단락 전류. - - - - ShortCircuit1PolePowerFactorMinimumState - Power factor of the minimum 1 pole short circuit current provided at the point of supply i.e. the fault between 1 phase and N. - - - - - - - Short Circuit1 Pole Power Factor Minimum State - 1極最小短絡電流力率 - 1 극 최소 단락 전류 역률 - - - - 電源供給時点の点1相とN間の1極最小短絡電流力率。 - 전원 공급 시점 점 1 단계와 N 사이의 1 극 최소 단락 전류 역률. - - - - EarthFault1PoleMaximumState - Maximum 1 pole earth fault current provided at the point of supply i.e. the fault between 1 phase and PE/PEN. - - - - - - - Earth Fault1 Pole Maximum State - 1極最大地絡電流 - 1 극 최대 지락 전류 - - - - 電源供給時点の点1相とPE/PEN間の1極最大地絡電流。 - 전원 공급 시점 점 1 상 및 PE / PEN 사이의 1 극 최대 지락 전류. - - - - EarthFault1PolePowerFactorMaximumState - Power factor of the maximum 1 pole earth fault current provided at the point of supply i.e. the fault between 1 phase and PE/PEN. - - - - - - - Earth Fault1 Pole Power Factor Maximum State - 1極最大地絡電流力率 - 1 극 최대 지락 전류 역률 - - - - 電源供給時点の点1相とPE/PEN間の1極最大地絡電流力率。 - 전원 공급 시점 점 1 상 및 PE / PEN 사이의 1 극 최대 지락 전류 역률. - - - - EarthFault1PoleMinimumState - Minimum 1 pole earth fault current provided at the point of supply i.e. the fault between 1 phase and PE/PEN. - - - - - - - Earth Fault1 Pole Minimum State - 1極最小地絡電流 - 1 극 최소 지락 전류 - - - - 電源供給時点の点1相とPE/PEN間の1極最小地絡電流。 - 전원 공급 시점 점 1 상 및 PE / PEN 사이의 1 극 최소 지락 전류 - - - - EarthFault1PolePowerFactorMinimumState - Power factor of the minimum 1 pole earth fault current provided at the point of supply i.e. the fault between 1 phase and PE/PEN. - - - - - - - Earth Fault1 Pole Power Factor Minimum State - 1極最小地絡電流力率 - 1극 최소 지락 전류 역률 - - - - 電源供給時点の点1相とPE/PEN間の1極最小地絡電流力率。 - 전원 공급 시점 점 1 상 및 PE / PEN 사이의 1 극 최소 지락 전류 역률. - - - - - - 配電システムから電気機器への供給源として機能するために関連する電源の特性。電気供給が適用されるときのみ使用する必要がある場合このプロパティを設定する。プロパティセット、プロパティが含まれているそれらの値は電源、または電気システムに適用されていない一時的に切断されている状況には適用されない。このプロパティセットは定常状態の状況を表す。 - - - - - Pset_ElectricGeneratorTypeCommon - Defines a particular type of engine that is a machine for converting mechanical energy into electrical energy. - - - IfcElectricGenerator - - IfcElectricGenerator - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照 - 참조 - - - - 当該プロジェクトで定義する形式の参照ID(例:A-1)、承認された分類に存在しないときに使用される。 - 해당 프로젝트에 정의된 형식의 참조 ID (예 : A-1) 승인된 분류에 존재하지 않을 때 사용된다 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - ElectricGeneratorEfficiency - The ratio of output capacity to intake capacity. - - - - - - - Electric Generator Efficiency - 発電効率 - 발전 효율 - - - - 出力容量と入力容量の比率。 - 출력 용량을 입력 용량의 비율 - - - - StartCurrentFactor - IEC. Start current factor defines how large the peek starting current will become on the engine. StartCurrentFactor is multiplied to NominalCurrent and we get the start current. - - - - - - - Start Current Factor - 始動電流係数 - 시동 전류 계수 - - - - 始動電流係数はエンジンが動き始めた時のピーク始動電流を定義。始動電流係数は定格電流と始動時の電流を掛け合わせたもの。 - 시동 전류 계수는 엔진이 움직이기 시작했다 피크 기동 전류를 정의합니다. 시동 전류 계수는 정격 전류 시동시 전류를 곱한 것 - - - - MaximumPowerOutput - The maximum output power rating of the engine. - - - - - - - Maximum Power Output - 最大出力 - 최대 출력 - - - - エンジンの最大出力定格。 - 엔진의 최대 출력 정격 - - - - - - 機械エネルギーを電気エネルギーに変換する特殊なエンジンを定義。 - - - - - Pset_ElectricMotorTypeCommon - Defines a particular type of engine that is a machine for converting electrical energy into mechanical energy. Note that in cases where a close coupled or monobloc pump or close coupled fan is being driven by the motor, the motor may itself be considered to be directly part of the pump or fan. In this case , motor information may need to be specified directly at the pump or fan and not througfh separate motor/motor connection entities. NOTE: StartingTime and TeTime added at IFC4 - - - IfcElectricMotor - - IfcElectricMotor - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照 - 참조 - - - - 当該プロジェクトで定義する形式の参照ID(例:A-1)、承認された分類に存在しないときに使用される。 - 해당 프로젝트에 정의된 형식의 참조 ID (예 : A-1) 승인된 분류에 존재하지 않을 때 사용된다. - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - MaximumPowerOutput - The maximum output power rating of the engine. - - - - - - - Maximum Power Output - 最大出力 - 최대 출력 - - - - エンジンの最大出力定格。 - 엔진의 최대 출력 정격. - - - - ElectricMotorEfficiency - The ratio of output capacity to intake capacity. - - - - - - - Electric Motor Efficiency - 出力効率 - 출력 효율 - - - - 出力容量と入力容量の比率。 - 출력 용량을 입력 용량의 비율. - - - - StartCurrentFactor - IEC. Start current factor defines how large the peak starting current will become on the engine. StartCurrentFactor is multiplied to NominalCurrent and to give the start current. - - - - - - - Start Current Factor - 始動電流係数 - 시동전류 계수 - - - - 始動電流係数はエンジンが動き始めた時のピーク始動電流を定義。始動電流係数は定格電流と始動時の電流を掛け合わせたもの。 - 시동 전류 계수는 엔진이 움직이기 시작했다 피크 기동 전류를 정의합니다. 시동 전류 계수는 정격 전류 시동시 전류를 곱한 것 - - - - StartingTime - The time (in s) needed for the motor to reach its rated speed with its driven equipment attached, starting from standstill and at the nominal voltage applied at its terminals. - - - - - - - Starting Time - 始動時間 - 시작 시간 - - - - モーターが停止状態から定格電圧を印加し定格速度に到達するまでに必要な時間。 - 모터가 정지 상태에서 정격 전압을인가하여 정격 속도에 도달하는 데 필요한 시간 - - - - TeTime - The maximum time (in s) at which the motor could run with locked rotor when the motor is used in an EX-environment. The time indicates that a protective device should trip before this time when the starting current of the motor is slowing through the device. - - - - - - - Te Time - 最大時間 - 최대 시간 - - - - モーターがEX環境でローターロックされて使用きる最大時間。 -モーター始動電流が機器を介して減速している時間より前に保護装置で停止する時間を示す。 - 모터가 EX 환경 로터 잠겨 사용 수있는 최대 시간. 모터 기동 전류가 장비를 통해 감속하고있다 시간 전에 보호 장치 중지 시간을 보여준다 - - - - LockedRotorCurrent - Input current when a motor armature is energized but not rotating. - - - - - - - Locked Rotor Current - 拘束ロータ電流 - 구속 회전자 전류 - - - - モーターの電機子に電圧を印加しロータが回っていない時の入力電流。 - 모터의 전기자 전압을인가 로터가 회전하지 않을 때 입력 전류. - - - - MotorEnclosureType - A list of the available types of motor enclosure from which that required may be selected. - - - - OPENDRIPPROOF - TOTALLYENCLOSEDAIROVER - TOTALLYENCLOSEDFANCOOLED - TOTALLYENCLOSEDNONVENTILATED - OTHER - NOTKNOWN - UNSET - - - - OPENDRIPPROOF - - Open Drip Proof - - - - - - - TOTALLYENCLOSEDAIROVER - - Totally Enclosed Air Over - - - - - - - TOTALLYENCLOSEDFANCOOLED - - Totally Enclosed Fan Cooled - - - - - - - TOTALLYENCLOSEDNONVENTILATED - - Totally Enclosed Nonventilated - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Motor Enclosure Type - モーター保護構造 - 모터 보호구조 - - - - モーターに必要な筐体を使用可能なタイプのリストから選択。 - 모터에 필요한 케이스를 사용 가능한 종류 목록에서 선택합니다. - - - - FrameSize - Designation of the frame size according to the named range of frame sizes designated at the place of use or according to a given standard. - - - - - - - Frame Size - フレームサイズ - 프레임 크기 - - - - フレームサイズの意味が実際の大きさを表示しているのか、規格表記なのかを指定。 - 프레임 크기의 의미가 실제 크기를 표시하고 있는지, 표준 표기인지 지정합니다. - - - - IsGuarded - Indication of whether the motor enclosure is guarded (= TRUE) or not (= FALSE). - - - - - - - Is Guarded - 保護 - 보호 - - - - モーターの筐体が守られているかどうかを示す。 - 모터의 케이스가 지켜지고 있는지 여부를 나타낸다. - - - - HasPartWinding - Indication of whether the motor is single speed, i.e. has a single winding (= FALSE) or multi-speed i.e.has part winding (= TRUE) . - - - - - - - Has Part Winding - 巻線  - 권선 - - - - モータが単一の速度であるかどうかを示す。例えば、単巻線、マルチスピード、分割巻線。 - 모터가 단일 속도인지 여부를 나타내는 예를 들어, 단일 권선, 다중 속도 분할 권선 - - - - - - 電気エネルギーを機械エネルギーに変換するエンジンを定義。一体型ポンプやファンの近くで接続した場合は、モーター自体が直接ポンプやファンの一部とみなされる可能性があるので、モーターで駆動されている時は注意。この場合、モーターの情報はモーター/モーターの接続実態を経由せずにポンプやファンで直接指定する必要がある。 -StartingTimeとTeTimeは IFC4で追加。 - - - - - Pset_ElectricTimeControlTypeCommon - Common properties for electric time control devices. HISTORY: Added in IFC4. - - - IfcElectricTimeControl - - IfcElectricTimeControl - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照 - 참조 - - - - 当該プロジェクトで定義する形式の参照ID(例:A-1)、承認された分類に存在しないときに使用される。 - 해당 프로젝트에 정의된 형식의 참조 ID (예 : A-1) 승인된 분류에 존재하지 않을 때 사용된다. - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - - - 電気時間制御装置のための共通のプロパティ。 -IFC4にて追加。 - - - - - Pset_ElementAssemblyCommon - Properties common to the definition of all occurrence and type objects of element assembly. - - - - - Reference - - - - - - - - - - Status - - - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - - - - - - - - Pset_ElementComponentCommon - Set of common properties of component elements (especially discrete accessories, but also fasteners, reinforcement elements, or other types of components). - - - IfcElementComponent - - IfcElementComponent - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as "construction type". It should be provided as an alternative to the name of the "object type", if the software does not support object types. - - - - - - - Reference - 参照記号 - - - - 具体的な参照ID(例えば、“WWS/VS1/400/001”はWWS系統、VS1/400サブシステム001番部品)。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - DeliveryType - Determines how the accessory will be delivered to the site. - - - - CAST_IN_PLACE - WELDED_TO_STRUCTURE - LOOSE - ATTACHED_FOR_DELIVERY - PRECAST - NOTDEFINED - - - - CAST_IN_PLACE - - Cast In Place - - - - - - - WELDED_TO_STRUCTURE - - Welded To Structure - - - - - - - LOOSE - - Loose - - - - - - - ATTACHED_FOR_DELIVERY - - Attached For Delivery - - - - - - - PRECAST - - Precast - - - - - - - NOTDEFINED - - Notdefined - - - - - - - - - - Delivery Type - - - - - - - CorrosionTreatment - Determines corrosion treatment for metal components. This property is provided if the requirement needs to be expressed (a) independently of a material specification and (b) as a mere requirements statement rather than a workshop design/ processing feature. - - - - PAINTED - EPOXYCOATED - GALVANISED - STAINLESS - NONE - NOTDEFINED - - - - PAINTED - - Painted - - - - - - - EPOXYCOATED - - Epoxy Coated - - - - - - - GALVANISED - - Galvanised - - - - - - - STAINLESS - - Stainless - - - - - - - NONE - - None - - - - - - - NOTDEFINED - - Notdefined - - - - - - - - - - Corrosion Treatment - - - - - - - - - - - - - Pset_EngineTypeCommon - Engine type common attributes. - - - IfcEngine - - IfcEngine - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - EnergySource - The source of energy. - - - - DIESEL - GASOLINE - NATURALGAS - PROPANE - BIODIESEL - SEWAGEGAS - HYDROGEN - BIFUEL - OTHER - UNKNOWN - UNSET - - - - DIESEL - - Diesel - - - - - - - GASOLINE - - Gasoline - - - - - - - NATURALGAS - - Natural Gas - - - - - - - PROPANE - - Propane - - - - - - - BIODIESEL - - Biodiesel - - - - - - - SEWAGEGAS - - Sewage Gas - - - - - - - HYDROGEN - - Hydrogen - - - - - - - BIFUEL - - Bifuel - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - UNKNOWN - - Unknown - - - - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Energy Source - エネルギ源 - - - - エネルギー源(ディーゼル、ガソリン、天然ガス、プロパン、バイオディーゼル、下水ガス、水素、バイオ燃料、 他) - - - - - - エンジンタイプ共通属性。 - - - - - Pset_EnvironmentalImpactIndicators - Environmental impact indicators are related to a given “functional unit” (ISO 14040 concept). An example of functional unit is a "Double glazing window with PVC frame" and the unit to consider is "one square meter of opening elements filled by this product”. -Indicators values are valid for the whole life cycle or only a specific phase (see LifeCyclePhase property). Values of all the indicators are expressed per year according to the expected service life. The first five properties capture the characteristics of the functional unit. The following properties are related to environmental indicators. -There is a consensus agreement international for the five one. Last ones are not yet fully and formally agreed at the international level. - - - IfcElement - - IfcElement - - - Reference - Reference ID for this specified type in this project - - - - - - - Reference - Reference - 参照記号 - 참조 - - - - Référence à l'identifiant d'un type spécifié dans le contexte de ce projet. - このプロジェクトのための参照記号。 - 이 프로젝트에서 여기에 특정한 형식에 대한 참조 ID - - - - FunctionalUnitReference - Reference to a database or a classification - - - - - - - Functional Unit Reference - ReferenceUniteFonctionnelle - 機能単位参照 - 기능단위참조 - - - - Référence à une base de données ou à une classification [NDT : référence, par exemple, à l'identification d'un produit dans la base INIES] - データベースやクラスへの参照。 - 데이터베이스 또는 분류에 대한 참조 - - - - Unit - The unit of the quantity the environmental indicators values are related with. - - - - - - - Unit - Unite - 単位 - 단위 - - - - Unité de la quantité prise en compte pour la détermination des impacts environnementaux. - 関連する環境指数値の数量単位。 - 환경 지표 값이 연결된 량의 단위 - - - - LifeCyclePhase - The whole life cycle or only a given phase from which environmental data are valid. - - - - Acquisition - Cradletosite - Deconstruction - Disposal - Disposaltransport - Growth - Installation - Maintenance - Manufacture - Occupancy - Operation - Procurement - Production - Productiontransport - Recovery - Refurbishment - Repair - Replacement - Transport - Usage - Waste - Wholelifecycle - UserDefined - NotDefined - - - - ACQUISITION - - Acquisition - - - - - - - CRADLETOSITE - - Cradletosite - - - - - - - DECONSTRUCTION - - Deconstruction - - - - - - - DISPOSAL - - Disposal - - - - - - - DISPOSALTRANSPORT - - Disposal Transport - - - - - - - GROWTH - - Growth - - - - - - - INSTALLATION - - Installation - - - - - - - MAINTENANCE - - Maintenance - - - - - - - MANUFACTURE - - Manufacture - - - - - - - OCCUPANCY - - Occupancy - - - - - - - OPERATION - - Operation - - - - - - - PROCUREMENT - - Procurement - - - - - - - PRODUCTION - - Production - - - - - - - PRODUCTIONTRANSPORT - - Production Transport - - - - - - - RECOVERY - - Recovery - - - - - - - REFURBISHMENT - - Refurbishment - - - - - - - REPAIR - - Repair - - - - - - - REPLACEMENT - - Replacement - - - - - - - TRANSPORT - - Transport - - - - - - - USAGE - - Usage - - - - - - - WASTE - - Waste - - - - - - - WHOLELIFECYCLE - - Wholelifecycle - - - - - - - USERDEFINED - - User Defined - - - - - - - NOTDEFINED - - Not Defined - - - - - - - - - - Life Cycle Phase - PhaseCycleDeVie - ライフサイクルフェーズ - 라이프 사이클 단계 - - - - Le cycle de vie complet ou seulement une de ses phases pour lequel les les données environnementales sont valides - 環境データが有効であるライフサイクル全てまたは特定の段階。 - 환경 데이터가 유효한지 라이프 사이클 또는 단 하나 주어진 단계 - - - - ExpectedServiceLife - Expected service life in years. - - - - - - - Expected Service Life - DureeDeVieTypique - 期待される耐用期間 - 예상수명 - - - - Durée de vie typique exprimée en années. - 数年間の期待される耐用年数。 - 예상 수명 - - - - TotalPrimaryEnergyConsumptionPerUnit - Quantity of energy used as defined in ISO21930:2007. - - - - - - - Total Primary Energy Consumption Per Unit - ConsommationTotaleEnergiePrimaireParUnite - 単位あたり全一次エネルギ消費 - 단위당 모든 차 에너지 소비 - - - - Consommation d'énergie primaire utilisée, telle que définie dans la norme ISO21930:2007 [NDT : et dans la norme NF P01-010] - ISO21930:2007で定義されたエネルギー消費量。 - ISO21930 : 2007에서 정의된 에너지 사용량 - - - - WaterConsumptionPerUnit - Quantity of water used. - - - - - - - Water Consumption Per Unit - ConsommationEauParUnite - 単位あたり水使用 - 단위 당 물 사용 - - - - Quantité d'eau utilisée telle que définie dans la norme ISO21930:2007 [NDT : et dans la norme NF P01-010]. Exprimée en litres. - リットル単位で表現された水の消費量。 - 사용 수량의 리터 수 - - - - HazardousWastePerUnit - Quantity of hazardous waste generated - - - - - - - Hazardous Waste Per Unit - DechetsDangereuxParUnite - 単位あたり有害廃棄物 - 단위당 유해 폐기물 - - - - Quantité de déchets dangereux générés tels que définis dans la norme ISO21930:2007 [NDT : et dans la norme NF P01-010]. - 生成された有害な廃棄量。 - 유해 폐기물의 발생량 - - - - NonHazardousWastePerUnit - Quantity of non hazardous waste generated - - - - - - - Non Hazardous Waste Per Unit - DechetsNonDangereuxParUnite - 単位あたり非有害廃棄物 - 단위당 비 유해 폐기물 - - - - Quantité de déchets non dangereux générés tels que définis dans la norme ISO21930:2007 [NDT : et dans la norme NF P01-010]. - 生成された無害な排気量。 - 비 유해 폐기물의 발생량 - - - - ClimateChangePerUnit - Quantity of greenhouse gases emitted calculated in equivalent CO2 - - - - - - - Climate Change Per Unit - ChangementClimatiqueParUnite - 単位あたり気候変動 - 단위당 기후 변화 - - - - Quantité d'émissions de gaz à effet de serre exprimée en Kg d'équivalent CO2 tels que définis dans la norme ISO21930:2007 [NDT : ainsi que dans les normes PrEN15804:2008 et NF P01-010]. - CO2で計算された温室効果ガスの放出量。 - CO2 등가 환산되는 온실 가스 발생량 - - - - AtmosphericAcidificationPerUnit - Quantity of gases responsible for the atmospheric acidification calculated in equivalent SO2 - - - - - - - Atmospheric Acidification Per Unit - AcidificationAtmospheriqueParUnite - 単位あたり大気酸性化 - 단위당 대기 산성화 - - - - Quantité de gaz responsables de l'acidification atmosphérique exprimée en Kg d'équivalent SO2 [NDT : selon les normes PrEN15804:2008 et NF P01-010]. - SO2で計算される大気の酸性化に影響するガスの量。 - SO2에 해당 환산된 대기 산성 화의 원인이되는 가스량 - - - - RenewableEnergyConsumptionPerUnit - Quantity of renewable energy used as defined in ISO21930:2007 - - - - - - - Renewable Energy Consumption Per Unit - ConsommationEnergieRenouvelableParUnite - 単位あたり再生可能エネルギ消費 - 단위당 재생 에너지 소비 - - - - Consommation d'énergie renouvelable telle que définie dans la norme ISO21930:2007 [NDT : et dans la norme NF P01-010] - ISO21930:2007で定義される再生可能エネルギーの使用量。 - ISO21930 : 2007에 정의된 재생 가능 에너지 사용량 - - - - NonRenewableEnergyConsumptionPerUnit - Quantity of non-renewable energy used as defined in ISO21930:2007 - - - - - - - Non Renewable Energy Consumption Per Unit - ConsommationEnergieNonRenouvelableParUnite - 単位あたり再生不可エネルギ消費 - 단위당 재생 불가 에너지 소비 - - - - Consommation d'énergie non renouvelable telle que définie dans la norme ISO21930:2007 [NDT : et dans la norme NF P01-010] - ISO21930:2007で定義される非再生エネルギーの使用量。 - ISO21930 : 2007에 정의된 재생 불가 에너지 사용량 - - - - ResourceDepletionPerUnit - Quantity of resources used calculated in equivalent antimony - - - - - - - Resource Depletion Per Unit - EpuisementRessourcesParUnite - 単位あたり資源消費 - 단위당 자원소비 - - - - Quantité de ressources consommées exprimée en équivalent Antimoine telles que définies dans la norme ISO21930:2007 [NDT : et dans la norme NF P01-010] - アンチモンで計算される資源の使用量。 - 안티몬에 해당 환산된 사용 자원 량 - - - - InertWastePerUnit - Quantity of inert waste generated - - - - - - - Inert Waste Per Unit - DechetsInertesParUnite - 単位あたり不活性廃棄物 - 단위당 불황성 폐기물 - - - - Quantité de déchets inertes générés [NDT : selon la norme NF P01-010] - 生成された安定廃棄物の量。 - 불활성 폐기물 발생량 - - - - RadioactiveWastePerUnit - Quantity of radioactive waste generated - - - - - - - Radioactive Waste Per Unit - DechetsRadioactifsParUnite - 単位あたり放射性廃棄物 - 단위당 방사성 폐기물 - - - - Quantité de déchets radioactifs générés [NDT : selon la norme NF P01-010] - 生成された放射性廃棄物の量。 - 방사성 폐기물 발생량 - - - - StratosphericOzoneLayerDestructionPerUnit - Quantity of gases destroying the stratospheric ozone layer calculated in equivalent CFC-R11 - - - - - - - Stratospheric Ozone Layer Destruction Per Unit - DestructionCoucheOzoneStartospheriqueParUnite - 単位あたり成層圏オゾン層破壊 - 단위당 성층권 오존층 파괴 - - - - Quantité de gaz destructeurs de la couche d'ozone exprimée en équivalent CFC-R11 tels que définis dans la norme ISO21930:2007 [NDT : et dans la norme NF P01-010] - CFC-R11で計算される成層圏のオゾン層を破壊するガスの量。 - CFC-R11에 해당 환산된 성층권 오존층 파괴 가스량 - - - - PhotochemicalOzoneFormationPerUnit - Quantity of gases creating the photochemical ozone calculated in equivalent ethylene - - - - - - - Photochemical Ozone Formation Per Unit - FormationOzonePhotochimiqueParUnite - 単位あたり光化学オゾン生成 - 단위당 광화학 오존 생성 - - - - Quantité de gaz producteurs d'ozone photochimique exprimée en équivalent ethylène tels que définis dans la norme ISO21930:2007 [NDT : et dans la norme NF P01-010] - エチレンで計算される光化学物質オゾンを生成するガスの量。 - 에틸렌에 해당 환산된 광화학 오존 생성 끊 가스량 - - - - EutrophicationPerUnit - Quantity of eutrophicating compounds calculated in equivalent PO4 - - - - - - - Eutrophication Per Unit - EutrophisationParUnite - 単位あたり富栄養化 - 단위당 부영양화 - - - - Quantité de composés responsables de l'eutrophisation exprimée en équivalent P04 tels que définis dans la norme ISO21930:2007 [NDT : et dans la norme PrEN15804:2008] - PO4で計算される富栄養化する化合物の量。 - PO4 (인산)에 상응하는 환산되는 부영 양화 성분 물량 - - - - - - Définition de l'IAI : Les indicateurs d'impacts environnementaux sont valables pour une unité fonctionnelle, concept défini dans l'ISO 14040. Exemple : fenêtre à double vitrage et à menuiserie en PVC ; l'unité à considérer est "un mètre carré d'ouverture remplie par ce produit". - 環境影響指標は、「機能単位functional unit (ISO 14040 コンセプト)」に関連があります。機能単位の例は「PVCフレームによる二重ガラス窓」です。そして、考慮する単位は「この製品で満たされた開口要素の1平方メートル」です。 - 指標の値は、ライフサイクル全て、または特定の段階(ライフサイクルフェーズLifeCyclePhaseプロパティ参照)だけにあてはまります。全ての指標の値は、期待される耐用年数によって年ごとに表現されます。初めの5つのプロパティは functional unitの特性を捉えています。 -以下の特性は、環境指標に関連があります。 -5つについての国際的な意見の合意があります。最後のものは、国際レベルで、まだ完全には正式に同意されていない。 - - - - - Pset_EnvironmentalImpactValues - The following properties capture environmental impact values of an element. They correspond to the indicators defined into Pset_EnvironmentalImpactIndicators. -Environmental impact values are obtained multiplying indicator value per unit by the relevant quantity of the element. - - - IfcElement - - IfcElement - - - TotalPrimaryEnergyConsumption - Quantity of energy used as defined in ISO21930:2007. - - - - - - - Total Primary Energy Consumption - ConsommationTotaleEnergiePrimaire - 主なエネルギー消費の総量 - 모든 차 에너지 소비 - - - - Consommation d'énergie primaire utilisée, telle que définie dans les normes ISO21930:2007 [NDT : ou NF P01-010] - ISO21930:2007.で定義されているエネルギー量。 - ISO21930 : 2007에서 정의된 에너지 사용량 - - - - WaterConsumption - Quantity of water used. - - - - - - - Water Consumption - ConsommationEau - 水消費量 - 물 사용 - - - - Quantité d'eau utilisée [NDT : telle que définie dans la norme NF P01-010] - 水の消費量。 - 사용 수량의 리터 수 - - - - HazardousWaste - Quantity of hazardous waste generated. - - - - - - - Hazardous Waste - DechetsDangereux - 有害廃棄物 - 유해 폐기물 - - - - Quantité de déchets dangereux générés [NDT : tels que définis dans la norme NF P01-010] - 生成される有害廃棄物の量。 - 유해 폐기물의 발생량 - - - - NonHazardousWaste - Quantity of non hazardous waste generated. - - - - - - - Non Hazardous Waste - DechetsNonDangereux - 一般廃棄物 - 비 유해 폐기물 - - - - Quantité de déchets non dangereux générés [NDT : tels que définis dans la norme NF P01-010] - 生成される一般廃棄物の量。 - 비 유해 폐기물의 발생량 - - - - ClimateChange - Quantity of greenhouse gases emitted calculated in equivalent CO2. - - - - - - - Climate Change - ChangementClimatique - 気候変化 - 기후변화 - - - - Quantité d'émissions de gaz à effet de serre exprimée en Kg d'équivalent CO2, selon les normes PrEN15804:2008 [NDT : ou NF P01-010] - 算出されたCO2と等しい放出される温室効果ガスの量。 - CO2 등가 환산되는 온실 가스 발생량 - - - - AtmosphericAcidification - Quantity of gases responsible for the atmospheric acidification calculated in equivalent SO2. - - - - - - - Atmospheric Acidification - AcidificationAtmospherique - 大気の酸性化 - 대기산성화 - - - - Quantité de gaz responsables de l'acidification atmosphérique exprimée en Kg d'équivalent SO2, selon les normes PrEN15804:2008 [NDT : ou NF P01-010] - 算出されたSO2と等しい大気中の酸性化の責任を負うガスの量。 - SO2에 해당 환산된 대기 산성 화의 원인이되는 가스량 - - - - RenewableEnergyConsumption - Quantity of renewable energy used as defined in ISO21930:2007 - - - - - - - Renewable Energy Consumption - ConsommationEnergieRenouvelable - 継続可能なエネルギー消費量 - 재생 가능 에너지 소비 - - - - Consommation d'énergie renouvelable telle que définie dans les normes ISO21930:2007 [NDT : ou NF P01-010] - ISO21930:2007 で定義されている継続可能なエネルギー消費量。 - ISO21930 : 2007에 정의된 재생 가능 에너지 사용량 - - - - NonRenewableEnergyConsumption - Quantity of non-renewable energy used as defined in ISO21930:2007 - - - - - - - Non Renewable Energy Consumption - ConsommationEnergieNonRenouvelable - 継続不可能なエネルギー消費量 - 재생 불가 에너지 소비 - - - - Consommation d'énergie non renouvelable telle que définie dans les normes ISO21930:2007 [NDT : ou NF P01-010] - ISO21930:2007 で定義されている継続不可能なエネルギー消費量。 - ISO21930 : 2007에 정의된 재생 불가 에너지 사용량 - - - - ResourceDepletion - Quantity of resources used calculated in equivalent antimony. - - - - - - - Resource Depletion - EpuisementRessources - 資源の枯渇 - 자원 소비 - - - - Quantité de ressources consommées exprimée en équivalent Antimoine [NDT : selon la norme NF P01-010] - 算出されたアンチモンと同等な資源の量。 - 안티몬에 해당 환산된 사용 자원 량 - - - - InertWaste - Quantity of inert waste generated . - - - - - - - Inert Waste - DechetsInertes - 安定廃棄物 - 불활성 폐기불 - - - - Quantité de déchets inertes générés [NDT : selon la norme NF P01-010] - 生成される安定廃棄物の量。 - 불활성 폐기물 발생량 - - - - RadioactiveWaste - Quantity of radioactive waste generated. - - - - - - - Radioactive Waste - DechetsRadioactifs - 放射性廃棄物 - 방사성 폐기물 - - - - Quantité de déchets radioactifs générés [NDT : selon la norme NF P01-010] - 生成される放射性廃棄物の量。 - 방사성 폐기물 발생량 - - - - StratosphericOzoneLayerDestruction - Quantity of gases destroying the stratospheric ozone layer calculated in equivalent CFC-R11. - - - - - - - Stratospheric Ozone Layer Destruction - DestructionCoucheOzoneStartospherique - 大気オゾン層破壊 - 성층권 오존층 파괴 - - - - Quantité de gaz destructeurs de la couche d'ozone exprimée en équivalent CFC-R11 [NDT : selon la norme NF P01-010] - 算出された CFC-R11と等しい大気オゾン層を破壊するガスの量。 - CFC-R11에 해당 환산된 성층권 오존층 파괴 가스량 - - - - PhotochemicalOzoneFormation - Quantity of gases creating the photochemical ozone calculated in equivalent ethylene. - - - - - - - Photochemical Ozone Formation - FormationOzonePhotochimique - 光化学オゾン生成 - 광화학 오존 생성 - - - - Quantité de gaz producteurs d'ozone photochimique exprimée en équivalent ethylène [NDT : selon la norme NF P01-010] - 算出された エチレンと等しい光化学オゾン層を生成するガスの量。 - 에틸렌에 해당 환산된 광화학 오존 생성 끊 가스량 - - - - Eutrophication - Quantity of eutrophicating compounds calculated in equivalent PO4. - - - - - - - Eutrophication - Eutrophisation - 富栄養化 - 부영 양화 - - - - Quantité de composés responsables de l'eutrophisation exprimée en équivalent P04 [NDT : selon la norme PrEN15804:2008] - 算出されたPO4と等しい富栄養化を混合する量。 - PO4 (인산)에 상응하는 환산되는 부영 양화 성분 물량 - - - - LeadInTime - Lead in time before start of process. - - - - - - - Lead In Time - - - Lead in time before start of process. - - - - Duration - Duration of process. - - - - - - - Duration - - - Duration of process. - - - - LeadOutTime - Lead out time after end of process. - - - - - - - Lead Out Time - - - Lead out time after end of process. - - - - - - Définition de l'IAI : les propriétés suivantes capturent les valeurs des impacts environnementaux d'un élément. Ils correspondent aux indicateurs définis dans Pset_EnvironmentalImpactIndicators. - IAIによる定義:次のプロパティは、要素の環境への影響値を捕える。それらは Pset_EnvironmentalImpactIndicators に定義されている指標に対応。 -環境に影響する値は、要素の適切な数量によって、単位あたりに割り増した値を取得。 - - - - - Pset_EvaporativeCoolerPHistory - Evaporative cooler performance history attributes. - - - IfcEvaporativeCooler - - IfcEvaporativeCooler - - - WaterSumpTemperature - Water sump temperature. - - - - - Water Sump Temperature - 液温度 - - - - 液温度 (水溜り温度) - - - - Effectiveness - Ratio of the change in dry bulb temperature of the (primary) air stream to the difference between the entering dry bulb temperature of the (primary) air and the wet-bulb temperature of the (secondary) air. - - - - - Effectiveness - 効率 - - - - (一次)空気の入力乾球温度と(二次)空気の湿球温度の差に対する(一次)空気の流れの乾球温度の変化の割合。 - - - - SensibleHeatTransferRate - Sensible heat transfer rate to primary air flow. - - - - - Sensible Heat Transfer Rate - 顕熱交換量 - - - - 一次空気流の顕熱交換量 - - - - LatentHeatTransferRate - Latent heat transfer rate to primary air flow. - - - - - Latent Heat Transfer Rate - 潜熱交換量 - - - - 一次空気流の潜熱交換量 - - - - TotalHeatTransferRate - Total heat transfer rate to primary air flow. - - - - - Total Heat Transfer Rate - 全熱交換量 - - - - 一次空気流の全熱交換量 - - - - - - 蒸発冷却器の性能履歴属性 - - - - - Pset_EvaporativeCoolerTypeCommon - Evaporative cooler type common attributes. -Sound attribute deleted in IFC2x2 Pset Addendum: Use IfcSoundProperties instead. WaterRequirement attribute unit type modified in IFC2x2 Pset Addendum. - - - IfcEvaporativeCooler - - IfcEvaporativeCooler - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - FlowArrangement - CounterFlow: Air and water flow enter in different directions. - -CrossFlow: Air and water flow are perpendicular. -ParallelFlow: Air and water flow enter in same directions. - - - - COUNTERFLOW - CROSSFLOW - PARALLELFLOW - OTHER - NOTKNOWN - UNSET - - - - COUNTERFLOW - - Counter Flow - - - - - - - CROSSFLOW - - Cross Flow - - - - - - - PARALLELFLOW - - Parallel Flow - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Flow Arrangement - 流れ種類 - - - - カウンタフロー:空気と水の流れが逆方向で入る -クロスフロー:空気と「水の流れが垂直 -平行流:空気と水の流れが同じ方向で入る - - - - HeatExchangeArea - Heat exchange area. - - - - - - - Heat Exchange Area - 熱交換面積 - - - - 熱交換面積 - - - - OperationTemperatureRange - Allowable operation ambient air temperature range. - - - - - - - Operation Temperature Range - 動作温度範囲 - - - - 許容作動周囲空気温度範囲 - - - - WaterRequirement - Make-up water requirement. - - - - - - - Water Requirement - 水要件 - - - - 水の要件 - - - - EffectivenessTable - Total heat transfer effectiveness curve as a function of the primary air flow rate. - - - - - - - - - - - - - Effectiveness Table - - - - - - - AirPressureDropCurve - Air pressure drop as function of air flow rate. - - - - - - - - - - - - - Air Pressure Drop Curve - - - - - - - WaterPressDropCurve - Water pressure drop as function of water flow rate. - - - - - - - - - - - - - Water Press Drop Curve - - - - - - - - - 蒸発冷却器共通属性を設定 -Sound属性がIFC2x2 psetの付録で削除された:IfcSoundPropertiesを代わりに使用します。 WaterRequirement属性ユニットタイプはIFC2x2 psetの付録で変更された。 - - - - - Pset_EvaporatorPHistory - Evaporator performance history attributes. - - - IfcEvaporator - - IfcEvaporator - - - HeatRejectionRate - Sum of the refrigeration effect and the heat equivalent of the power input to the compressor. - - - - - Heat Rejection Rate - 排熱量 - - - - 冷凍効果と圧縮機への電源入力の相当熱量の合計 - - - - ExteriorHeatTransferCoefficient - Exterior heat transfer coefficient associated with exterior surface area. - - - - - Exterior Heat Transfer Coefficient - 外表面熱交換係数 - - - - 外表面に関連づけられた外表面熱交換係数 - - - - InteriorHeatTransferCoefficient - Interior heat transfer coefficient associated with interior surface area. - - - - - Interior Heat Transfer Coefficient - 内面熱交換係数 - - - - 内面に関連づけられた内面熱交換係数 - - - - RefrigerantFoulingResistance - Fouling resistance on the refrigerant side. - - - - - Refrigerant Fouling Resistance - - - - - - - EvaporatingTemperature - Refrigerant evaporating temperature. - - - - - Evaporating Temperature - 蒸発温度 - - - - 蒸発温度 - - - - LogarithmicMeanTemperatureDifference - Logarithmic mean temperature difference between refrigerant and water or air. - - - - - Logarithmic Mean Temperature Difference - 対数平均温度差 - - - - 冷媒と水または空気の対数平均温度差 - - - - UAcurves - UV = f (VExterior, VInterior), UV as a function of interior and exterior fluid flow velocity at the entrance. - - - - - UAcurves - UA曲線 - - - - UV=f(V外面、V内面)、UVは、入り口での内面・外面流体速度の関数 - - - - CompressorEvaporatorHeatGain - Heat gain between the evaporator outlet and the compressor inlet. - - - - - Compressor Evaporator Heat Gain - 圧縮機・蒸発器熱取得 - - - - 蒸発器出口と圧縮機入口間の熱取得 - - - - CompressorEvaporatorPressureDrop - Pressure drop between the evaporator outlet and the compressor inlet. - - - - - Compressor Evaporator Pressure Drop - 圧縮機・蒸発器圧力降下 - - - - 蒸発器出口と圧縮機入口間の圧力降下 - - - - EvaporatorMeanVoidFraction - Mean void fraction in evaporator. - - - - - Evaporator Mean Void Fraction - 蒸発器平均空隙率 - - - - 蒸発器の平均の空隙率 - - - - WaterFoulingResistance - Fouling resistance on water/air side. - - - - - Water Fouling Resistance - 水側汚れ抵抗 - - - - 水/空気面の汚れ抵抗 - - - - - - 蒸発器性能履歴属性 - - - - - Pset_EvaporatorTypeCommon - Evaporator type common attributes. - - - IfcEvaporator - - IfcEvaporator - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - EvaporatorMediumType - ColdLiquid: Evaporator is using liquid type of fluid to exchange heat with refrigerant. -ColdAir: Evaporator is using air to exchange heat with refrigerant. - - - - COLDLIQUID - COLDAIR - OTHER - NOTKNOWN - UNSET - - - - COLDLIQUID - - Cold Liquid - - - - - - - COLDAIR - - Cold Air - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Evaporator Medium Type - 蒸発媒体 - - - - ColdLiquidは:蒸発器は、冷媒と熱交換するために液状の流体を使用しています。 -ColdAir:蒸発器は、冷媒と熱交換するために空気を使用している。 - - - - EvaporatorCoolant - The fluid used for the coolant in the evaporator. - - - - WATER - BRINE - GLYCOL - OTHER - NOTKNOWN - UNSET - - - - WATER - - Water - - - - - - - BRINE - - Brine - - - - - - - GLYCOL - - Glycol - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Evaporator Coolant - 蒸発器冷却剤 - - - - 蒸発器で使用する流体(水、ブライン、グリコール、 他) - - - - RefrigerantClass - Refrigerant class used by the compressor. -CFC: Chlorofluorocarbons. -HCFC: Hydrochlorofluorocarbons. -HFC: Hydrofluorocarbons. - - - - CFC - HCFC - HFC - HYDROCARBONS - AMMONIA - CO2 - H2O - OTHER - NOTKNOWN - UNSET - - - - CFC - - CFC - - - Chlorofluorocarbons - - - - HCFC - - HCFC - - - Hydrochlorofluorocarbons - - - - HFC - - HFC - - - Hydrofluorocarbons - - - - HYDROCARBONS - - Hydrocarbons - - - - - - - AMMONIA - - Ammonia - - - - - - - CO2 - - CO2 - - - - - - - H2O - - H2O - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Refrigerant Class - 冷媒分類 - - - - 圧縮機で使用される冷媒種類 -CFC: Chlorofluorocarbons. -HCFC: Hydrochlorofluorocarbons. -HFC: Hydrofluorocarbons. -(CFC, HCFC, HFC, HYDROCARBONS, AMMONIA, CO2, H2O, その他) - - - - ExternalSurfaceArea - External surface area (both primary and secondary area). - - - - - - - External Surface Area - 外表面積 - - - - 外表面積(一次・二次の両面積) - - - - InternalSurfaceArea - Internal surface area. - - - - - - - Internal Surface Area - 内表面積 - - - - 内部表面積 - - - - InternalRefrigerantVolume - Internal volume of evaporator (refrigerant side). - - - - - - - Internal Refrigerant Volume - 内部冷媒容積 - - - - 蒸発器(冷媒側)の内部容積 - - - - InternalWaterVolume - Internal volume of evaporator (water side). - - - - - - - Internal Water Volume - 内部水容積 - - - - 蒸発器(水側)の内部容積 - - - - NominalHeatTransferArea - Nominal heat transfer surface area associated with nominal overall heat transfer coefficient. - - - - - - - Nominal Heat Transfer Area - 設計熱交換面積 - - - - 設計全熱交換係数の設計熱交換面積 - - - - NominalHeatTransferCoefficient - Nominal overall heat transfer coefficient associated with nominal heat transfer area. - - - - - - - Nominal Heat Transfer Coefficient - 設計熱交換係数 - - - - 設計熱交換面積の全熱交換係数 - - - - - - 蒸発器タイプ共通属性 - - - - - Pset_FanCentrifugal - Centrifugal fan occurrence attributes attached to an instance of IfcFan. - - - IfcFan/CENTRIFUGAL - - IfcFan/CENTRIFUGAL - - - DischargePosition - Centrifugal fan discharge position. - -TOPHORIZONTAL: Top horizontal discharge. -TOPANGULARDOWN: Top angular down discharge. -DOWNBLAST: Downblast discharge. -BOTTOMANGULARDOWN: Bottom angular down discharge. -BOTTOMHORIZONTAL: Bottom horizontal discharge. -BOTTOMANGULARUP: Bottom angular up discharge. -UPBLAST: Upblast discharge. -TOPANGULARUP: Top angular up discharge. -OTHER: Other type of fan arrangement. - - - - TOPHORIZONTAL - TOPANGULARDOWN - TOPANGULARUP - DOWNBLAST - BOTTOMANGULARDOWN - BOTTOMHORIZONTAL - BOTTOMANGULARUP - UPBLAST - OTHER - NOTKNOWN - UNSET - - - - TOPHORIZONTAL - - Top Horizontal - - - Top horizontal discharge - - - - TOPANGULARDOWN - - Top Angular Down - - - Top angular down discharge - - - - TOPANGULARUP - - Top Angular Up - - - Top angular up discharge - - - - DOWNBLAST - - Down Blast - - - Downblast discharge - - - - BOTTOMANGULARDOWN - - Bottom Angular Down - - - Bottom angular down discharge - - - - BOTTOMHORIZONTAL - - Bottom Horizontal - - - Bottom horizontal discharge - - - - BOTTOMANGULARUP - - Bottom Angular Up - - - Bottom angular up discharge - - - - UPBLAST - - Upblast - - - Upblast discharge - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Discharge Position - 吐出位置 - - - - 遠心送風機の吐出位置 -TOPHORIZONTAL: 上部水平 -TOPANGULARDOWN: 上部角度付き下向き -DOWNBLAST: 下向き -BOTTOMANGULARDOWN: 下部角度付き下向き -BOTTOMHORIZONTAL: 下部水平 -BOTTOMANGULARUP: 下部角度付き上向き -UPBLAST: 上向き -TOPANGULARUP: 上部角度付き上向き. -OTHER: その他 - - - - DirectionOfRotation - The direction of the centrifugal fan wheel rotation when viewed from the drive side of the fan. - -CLOCKWISE: Clockwise. -COUNTERCLOCKWISE: Counter-clockwise. -OTHER: Other type of fan rotation. - - - - CLOCKWISE - COUNTERCLOCKWISE - OTHER - NOTKNOWN - UNSET - - - - CLOCKWISE - - Clockwise - - - Clockwise - - - - COUNTERCLOCKWISE - - Counter-clockwise - - - Counter-clockwise - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Direction Of Rotation - 角度方向 - - - - ファンの駆動側から見たホイール回転方向 -CLOCKWISE  時計回り - COUNTERCLOCKWISE 反時計回り - OTHER その他 - - - - Arrangement - Defines the fan and motor drive arrangement as defined by AMCA. - -ARRANGEMENT1: Arrangement 1. -ARRANGEMENT2: Arrangement 2. -ARRANGEMENT3: Arrangement 3. -ARRANGEMENT4: Arrangement 4. -ARRANGEMENT7: Arrangement 7. -ARRANGEMENT8: Arrangement 8. -ARRANGEMENT9: Arrangement 9. -ARRANGEMENT10: Arrangement 10. -OTHER: Other type of fan drive arrangement. - - - - ARRANGEMENT1 - ARRANGEMENT2 - ARRANGEMENT3 - ARRANGEMENT4 - ARRANGEMENT7 - ARRANGEMENT8 - ARRANGEMENT9 - ARRANGEMENT10 - OTHER - NOTKNOWN - UNSET - - - - ARRANGEMENT1 - - Arrangement1 - - - Arrangement 1 - - - - ARRANGEMENT2 - - Arrangement2 - - - Arrangement 2 - - - - ARRANGEMENT3 - - Arrangement3 - - - Arrangement 3 - - - - ARRANGEMENT4 - - Arrangement4 - - - Arrangement 4 - - - - ARRANGEMENT7 - - Arrangement7 - - - Arrangement 7 - - - - ARRANGEMENT8 - - Arrangement8 - - - Arrangement 8 - - - - ARRANGEMENT9 - - Arrangement9 - - - Arrangement 9 - - - - ARRANGEMENT10 - - Arrangement10 - - - Arrangement 10 - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Arrangement - 配置 - - - - ファンとモーターの配置(AMCAによる定義) -ARRANGEMENT1, ARRANGEMENT2, ARRANGEMENT3, ARRANGEMENT4, ARRANGEMENT7, ARRANGEMENT8, ARRANGEMENT9, ARRANGEMENT10, OTHER, NOTKNOWN, UNSET - - - - - - IfcFanの値に付け加えられた遠心送風機の属性 - - - - - Pset_FanOccurrence - Fan occurrence attributes attached to an instance of IfcFan. - - - IfcFan - - IfcFan - - - DischargeType - Defines the type of connection at the fan discharge. - -Duct: Discharge into ductwork. -Screen: Discharge into screen outlet. -Louver: Discharge into a louver. -Damper: Discharge into a damper. - - - - DUCT - SCREEN - LOUVER - DAMPER - OTHER - NOTKNOWN - UNSET - - - - DUCT - - Duct - - - - - - - SCREEN - - Screen - - - - - - - LOUVER - - Louver - - - - - - - DAMPER - - Damper - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Discharge Type - 吐出形式 - - - - 送風機出口の接続形式定義 -Duct:ダクトへの吐き出し -Screen:SCREEN内への吐き出し -Louver:ルーバーへの吐き出し - - - - ApplicationOfFan - The functional application of the fan. - -SupplyAir: Supply air fan. -ReturnAir: Return air fan. -ExhaustAir: Exhaust air fan. -Other: Other type of application not defined above. - - - - SUPPLYAIR - RETURNAIR - EXHAUSTAIR - COOLINGTOWER - OTHER - NOTKNOWN - UNSET - - - - SUPPLYAIR - - Supply Air - - - - - - - RETURNAIR - - Return Air - - - - - - - EXHAUSTAIR - - Exhaust Air - - - - - - - COOLINGTOWER - - Cooling Tower - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Application Of Fan - Fan用途 - - - - Fanの系統 -SUPPLYAIR, RETURNAIR, EXHAUSTAIR, COOLINGTOWER, OTHER - - - - CoilPosition - Defines the relationship between a fan and a coil. - -DrawThrough: Fan located downstream of the coil. -BlowThrough: Fan located upstream of the coil. - - - - DRAWTHROUGH - BLOWTHROUGH - OTHER - NOTKNOWN - UNSET - - - - DRAWTHROUGH - - Draw Through - - - - - - - BLOWTHROUGH - - Blow Through - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Coil Position - コイル位置 - - - - Fanとコイル間の関係定義 -DwawThrough:ファンはコイルの下流に位置 -BlowThrough:ファンはコイルの上流に位置 - - - - MotorPosition - Defines the location of the motor relative to the air stream. - -InAirStream: Fan motor is in the air stream. -OutOfAirStream: Fan motor is out of the air stream. - - - - INAIRSTREAM - OUTOFAIRSTREAM - OTHER - NOTKNOWN - UNSET - - - - INAIRSTREAM - - In Air Stream - - - - - - - OUTOFAIRSTREAM - - Out of Air Stream - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Motor Position - モーター位置 - - - - 空気流路と相対的なモーターの位置定義 -流路内、流路外 その他 - - - - FanMountingType - Defines the method of mounting the fan in the building. - - - - MANUFACTUREDCURB - FIELDERECTEDCURB - CONCRETEPAD - SUSPENDED - WALLMOUNTED - DUCTMOUNTED - OTHER - NOTKNOWN - UNSET - - - - MANUFACTUREDCURB - - Manufactured Curb - - - - - - - FIELDERECTEDCURB - - Field Erected Curb - - - - - - - CONCRETEPAD - - Concrete Pad - - - - - - - SUSPENDED - - Suspended - - - - - - - WALLMOUNTED - - Wall Mounted - - - - - - - DUCTMOUNTED - - Duct Mounted - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Fan Mounting Type - Fan設置タイプ - - - - 建物へのFan設置方法定義 -MANUFACTUREDCURB, FIELDERECTEDCURB, CONCRETEPAD, SUSPENDED, WALLMOUNTED, DUCTMOUNTED - - - - FractionOfMotorHeatToAirStream - Fraction of the motor heat released into the fluid flow. - - - - - - - Fraction Of Motor Heat To Air Stream - モーター排熱 - - - - 流体中にモーター発熱が放出される場合にTRUE - - - - ImpellerDiameter - Diameter of fan wheel - used to scale performance of geometrically similar fans. - - - - - - - Impeller Diameter - 羽根径 - - - - ファンホイールの直径 - 幾何学的に類似したファンの性能を基準化するために使用。 - - - - - - IfcFanの値に付け加えられたFan属性 - - - - - Pset_FanPHistory - Fan performance history attributes. -Sound attribute deleted in IFC2x2 Pset Addendum: Use IfcSoundProperties instead. - - - IfcFan - - IfcFan - - - FanRotationSpeed - Fan rotation speed. - - - - - Fan Rotation Speed - 回転速度 - - - - 回転速度 - - - - WheelTipSpeed - Fan blade tip speed, typically defined as the linear speed of the tip of the fan blade furthest from the shaft. - - - - - Wheel Tip Speed - ホイール先端速度 - - - - ファンブレード先端速度 -通常、軸から最も遠いファンブレードの先端の直線速度として定義されている - - - - FanEfficiency - Fan mechanical efficiency. - - - - - Fan Efficiency - Fan効率 - - - - ファン機械効率 - - - - OverallEfficiency - Total efficiency of motor and fan. - - - - - Overall Efficiency - 全体効率 - - - - モーターとファンの全体効率 - - - - FanPowerRate - Fan power consumption. - - - - - Fan Power Rate - Fan効率動力量 - - - - ファン消費電力 - - - - ShaftPowerRate - Fan shaft power. - - - - - Shaft Power Rate - 軸動力量 - - - - ファン軸動力 - - - - DischargeVelocity - The speed at which air discharges from the fan through the fan housing discharge opening. - - - - - Discharge Velocity - 吐出速度 - - - - ファン吐出口からの吐出風速 - - - - DischargePressureLoss - Fan discharge pressure loss associated with the discharge arrangement. - - - - - Discharge Pressure Loss - 吐出圧力損失 - - - - 吐出部に関連した吐出圧力損失 - - - - DrivePowerLoss - Fan drive power losses associated with the type of connection between the motor and the fan wheel. - - - - - Drive Power Loss - 駆動電力損失 - - - - ファン駆動力損失は、モータとファンホイールとの間の接続の種類に関連付けられている。 - - - - - - Fan性能履歴属性 -Sound属性はIFC2x2付録で削除された。: IfcSoundPropertiesを代わりに使う - - - - - Pset_FanTypeCommon - Fan type common attributes. - - - IfcFan - - IfcFan - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - MotorDriveType - Motor drive type: -DIRECTDRIVE: Direct drive. -BELTDRIVE: Belt drive. -COUPLING: Coupling. -OTHER: Other type of motor drive. -UNKNOWN: Unknown motor drive type. - - - - DIRECTDRIVE - BELTDRIVE - COUPLING - OTHER - NOTKNOWN - UNSET - - - - DIRECTDRIVE - - Direct Drive - - - Direct drive - - - - BELTDRIVE - - Belt Drive - - - Belt drive - - - - COUPLING - - Coupling - - - Coupling - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Motor Drive Type - モーター駆動種類 - - - - モーター駆動種類 -DIRECTDRIVE: ダイレクトドライブ -BELTDRIVE: ベルトドライブ -COUPLING: カップリング -OTHER: その他 - - - - CapacityControlType - InletVane: Control by adjusting inlet vane. -VariableSpeedDrive: Control by variable speed drive. -BladePitchAngle: Control by adjusting blade pitch angle. -TwoSpeed: Control by switch between high and low speed. -DischargeDamper: Control by modulating discharge damper. - - - - INLETVANE - VARIABLESPEEDDRIVE - BLADEPITCHANGLE - TWOSPEED - DISCHARGEDAMPER - OTHER - NOTKNOWN - UNSET - - - - INLETVANE - - Inlet Vane - - - - - - - VARIABLESPEEDDRIVE - - Variable Speed Drive - - - - - - - BLADEPITCHANGLE - - Blade Pitch Angle - - - - - - - TWOSPEED - - Two Speed - - - - - - - DISCHARGEDAMPER - - Discharge Damper - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Capacity Control Type - 容量制御方式 - - - - InletVane: インレットベーン -VariableSpeedDrive: 変速駆動 -BladePitchAngle: 羽根ピッチ制御 -TwoSpeed: 二速制御 -DischargeDamper: 吐出ダンパ制御 - - - - OperationTemperatureRange - Allowable operation ambient air temperature range. - - - - - - - Operation Temperature Range - 動作温度範囲 - - - - 許容動作周囲温度範囲 - - - - NominalAirFlowRate - Nominal air flow rate. - - - - - - - Nominal Air Flow Rate - 設計風量 - - - - 設計風量 - - - - NominalTotalPressure - Nominal total pressure rise across the fan. - - - - - - - Nominal Total Pressure - 設計全圧 - - - - ファンでの設計全圧上昇 - - - - NominalStaticPressure - The static pressure within the air stream that the fan must overcome to insure designed circulation of air. - - - - - - - Nominal Static Pressure - 設計静圧 - - - - 設計空気循環量を保証するためにファンが克服しなければならない気流中の静圧 - - - - NominalRotationSpeed - Nominal fan wheel speed. - - - - - - - Nominal Rotation Speed - 設計回転速度 - - - - 設計ホイール速度 - - - - NominalPowerRate - Nominal fan power rate. - - - - - - - Nominal Power Rate - 設計動力 - - - - 設計動力 - - - - OperationalCriteria - Time of operation at maximum operational ambient air temperature. - - - - - - - Operational Criteria - 動作環境 - - - - 最大動作周囲温度での動作の時間 - - - - PressureCurve - Pressure rise = f (flow rate). - - - - - - - - - - - - - Pressure Curve - - - - - - - EfficiencyCurve - Fan efficiency =f (flow rate). - - - - - - - - - - - - - Efficiency Curve - - - - - - - - - Fanタイプ共通属性 - - - - - Pset_FastenerWeld - Properties related to welded connections. - - - IfcFastener/WELD - - IfcFastener/WELD - - - Type1 - Type of weld seam according to ISO 2553. Note, combined welds are given by two corresponding symbols in the direction of the normal axis of the coordinate system. For example, an X weld is specified by Type1 = 'V' and Type2 = 'V'. - - - - - - - Type1 - - - - - - - Type2 - See Type1. - - - - - - - Type2 - - - - - - - Surface1 - Aspect of weld seam surface, i.e. 'plane', 'curved' or 'hollow'. Combined welds are given by two corresponding symbols analogous to Type1 and Type2. - - - - - - - Surface1 - - - - - - - Surface2 - See Surface1. - - - - - - - Surface2 - - - - - - - Process - Reference number of the welding process according to ISO 4063, an up to three digits long code - - - - - - - Process - - - - - - - ProcessName - Name of the welding process. Alternative to the numeric Process property. - - - - - - - Process Name - - - - - - - a - Measure a according to ISO 2553 - - - - - - - a - - - - - - - c - Measure c according to ISO 2553 - - - - - - - c - - - - - - - d - Measure d according to ISO 2553 - - - - - - - d - - - - - - - e - Measure e according to ISO 2553 - - - - - - - e - - - - - - - l - Measure l according to ISO 2553 - - - - - - - l - - - - - - - n - Count n according to ISO 2553 - - - - - - - n - - - - - - - s - Measure s according to ISO 2553 - - - - - - - s - - - - - - - z - Measure z according to ISO 2553 - - - - - - - z - - - - - - - Intermittent - If fillet weld, intermittent or not - - - - - - - Intermittent - - - - - - - Staggered - If intermittent weld, staggered or not - - - - - - - Staggered - - - - - - - - - - - - - Pset_FilterPHistory - Filter performance history attributes. - - - IfcFilter - - IfcFilter - - - CountedEfficiency - Filter efficiency based the particle counts concentration before and after filter against particles with certain size distribution. - - - - - Counted Efficiency - - - - - - - WeightedEfficiency - Filter efficiency based the particle weight concentration before and after filter against particles with certain size distribution. - - - - - Weighted Efficiency - - - - - - - ParticleMassHolding - Mass of particle holding in the filter. - - - - - Particle Mass Holding - - - - - - - - - - - - - Pset_FilterTypeAirParticleFilter - Air particle filter type attributes. - - - IfcFilter/AIRPARTICLEFILTER - - IfcFilter/AIRPARTICLEFILTER - - - AirParticleFilterType - A panel dry type extended surface filter is a dry-type air filter with random fiber mats or blankets in the forms of pockets, V-shaped or radial pleats, and include the following: - -CoarseFilter: Filter with a efficiency lower than 30% for atmosphere dust-spot. -CoarseMetalScreen: Filter made of metal screen. -CoarseCellFoams: Filter made of cell foams. -CoarseSpunGlass: Filter made of spun glass. -MediumFilter: Filter with an efficiency between 30-98% for atmosphere dust-spot. -MediumElectretFilter: Filter with fine electret synthetic fibers. -MediumNaturalFiberFilter: Filter with natural fibers. -HEPAFilter: High efficiency particulate air filter. -ULPAFilter: Ultra low penetration air filter. -MembraneFilters: Filter made of membrane for certain pore diameters in flat sheet and pleated form. -A renewable media with a moving curtain viscous filter are random-fiber media coated with viscous substance in roll form or curtain where fresh media is fed across the face of the filter and the dirty media is rewound onto a roll at the bottom or to into a reservoir: -RollForm: Viscous filter used in roll form. -AdhesiveReservoir: Viscous filter used in moving curtain form. -A renewable moving curtain dry media filter is a random-fiber dry media of relatively high porosity used in moving-curtain(roll) filters. -An electrical filter uses electrostatic precipitation to remove and collect particulate contaminants. - - - - COARSEMETALSCREEN - COARSECELLFOAMS - COARSESPUNGLASS - MEDIUMELECTRETFILTER - MEDIUMNATURALFIBERFILTER - HEPAFILTER - ULPAFILTER - MEMBRANEFILTERS - RENEWABLEMOVINGCURTIANDRYMEDIAFILTER - ELECTRICALFILTER - ROLLFORM - ADHESIVERESERVOIR - OTHER - NOTKNOWN - UNSET - - - - COARSEMETALSCREEN - - Coarse Metal Screen - - - - - - - COARSECELLFOAMS - - Coarse Cell Foams - - - - - - - COARSESPUNGLASS - - Coarse Spun Glass - - - - - - - MEDIUMELECTRETFILTER - - Medium Electret Filter - - - - - - - MEDIUMNATURALFIBERFILTER - - Medium Natural Fiber Filter - - - - - - - HEPAFILTER - - HEPA Filter - - - - - - - ULPAFILTER - - ULPA Filter - - - - - - - MEMBRANEFILTERS - - Membrane Filters - - - - - - - RENEWABLEMOVINGCURTIANDRYMEDIAFILTER - - Renewable Moving Curtian Dry Media Filter - - - - - - - ELECTRICALFILTER - - Electrical Filter - - - - - - - ROLLFORM - - Roll Form - - - - - - - ADHESIVERESERVOIR - - Adhesive Reservoir - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Air Particle Filter Type - - - - - - - FrameMaterial - Filter frame material. - - - - - Frame Material - - - - - - - SeparationType - Air particulate filter media separation type. - - - - BAG - PLEAT - TREADSEPARATION - OTHER - NOTKNOWN - UNSET - - - - BAG - - Bag - - - - - - - PLEAT - - Pleat - - - - - - - TREADSEPARATION - - Tread Separation - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Separation Type - - - - - - - DustHoldingCapacity - Maximum filter dust holding capacity. - - - - - - - Dust Holding Capacity - - - - - - - FaceSurfaceArea - Face area of filter frame. - - - - - - - Face Surface Area - - - - - - - MediaExtendedArea - Total extended media area. - - - - - - - Media Extended Area - - - - - - - NominalCountedEfficiency - Nominal filter efficiency based the particle count concentration before and after the filter against particles with a certain size distribution. - - - - - - - Nominal Counted Efficiency - - - - - - - NominalWeightedEfficiency - Nominal filter efficiency based the particle weight concentration before and after the filter against particles with a certain size distribution. - - - - - - - Nominal Weighted Efficiency - - - - - - - PressureDropCurve - Under certain dust holding weight, DelPressure = f (fluidflowRate) - - - - - - - - - - - - - Pressure Drop Curve - - - - - - - CountedEfficiencyCurve - Counted efficiency curve as a function of dust holding weight, efficiency = f (dust holding weight). - - - - - - - - - - - - - Counted Efficiency Curve - - - - - - - WeightedEfficiencyCurve - Weighted efficiency curve as a function of dust holding weight, efficiency = f (dust holding weight). - - - - - - - - - - - - - Weighted Efficiency Curve - - - - - - - - - - - - - Pset_FilterTypeCommon - Filter type common attributes. - - - IfcFilter - - IfcFilter - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - Weight - Weight of filter. - - - - - - - Weight - - - - - - - InitialResistance - Initial new filter fluid resistance (i.e., pressure drop at the maximum air flowrate across the filter when the filter is new per ASHRAE Standard 52.1). - - - - - - - Initial Resistance - - - - - - - FinalResistance - Filter fluid resistance when replacement is required (i.e., Pressure drop at the maximum air flowrate across the filter when the filter needs replacement per ASHRAE Standard 52.1). - - - - - - - Final Resistance - - - - - - - OperationTemperatureRange - Allowable operation ambient fluid temperature range. - - - - - - - Operation Temperature Range - - - - - - - FlowRateRange - Possible range of fluid flowrate that can be delivered. - - - - - - - Flow Rate Range - - - - - - - NominalFilterFaceVelocity - Filter face velocity. - - - - - - - Nominal Filter Face Velocity - - - - - - - NominalMediaSurfaceVelocity - Average fluid velocity at the media surface. - - - - - - - Nominal Media Surface Velocity - - - - - - - NominalPressureDrop - Total pressure drop across the filter. - - - - - - - Nominal Pressure Drop - - - - - - - NominalFlowrate - Nominal fluid flow rate through the filter. - - - - - - - Nominal Flowrate - - - - - - - NominalParticleGeometricMeanDiameter - Particle geometric mean diameter associated with nominal efficiency. - - - - - - - Nominal Particle Geometric Mean Diameter - - - - - - - NominalParticleGeometricStandardDeviation - Particle geometric standard deviation associated with nominal efficiency. - - - - - - - Nominal Particle Geometric Standard Deviation - - - - - - - - - - - - - Pset_FilterTypeCompressedAirFilter - Compressed air filter type attributes. - - - IfcFilter/COMPRESSEDAIRFILTER - - IfcFilter/COMPRESSEDAIRFILTER - - - CompressedAirFilterType - ACTIVATEDCARBON: absorbs oil vapor and odor; PARTICLE_FILTER: used to absorb solid particles of medium size; COALESCENSE_FILTER: used to absorb fine solid, oil, and water particles, also called micro filter - - - - ACTIVATEDCARBON - PARTICLE_FILTER - COALESCENSE_FILTER - OTHER - NOTKNOWN - UNSET - - - - ACTIVATEDCARBON - - Activated Carbon - - - - - - - PARTICLE_FILTER - - Particle Filter - - - used to absorb solid particles of medium size - - - - COALESCENSE_FILTER - - Coalescense Filter - - - used to absorb fine solid, oil, and water particles, also called micro filter - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Compressed Air Filter Type - - - - - - - OperationPressureMax - Maximum pressure under normal operating conditions. - - - - - - - Operation Pressure Max - - - - - - - ParticleAbsorptionCurve - Ratio of particles that are removed by the filter. Each entry describes the ratio of particles absorbed greater than equal to the specified size and less than the next specified size. For example, given for 3 significant particle sizes >= 0,1 micro m, >= 1 micro m, >= 5 micro m - - - - - - - - - - - - - Particle Absorption Curve - - - - - - - AutomaticCondensateDischarge - Whether or not the condensing water or oil is discharged automatically from the filter. - - - - - - - Automatic Condensate Discharge - - - - - - - CloggingIndicator - Whether the filter has an indicator to display the degree of clogging of the filter. - - - - - - - Clogging Indicator - - - - - - - - - - - - - Pset_FilterTypeWaterFilter - Water filter type attributes. - - - IfcFilter/WATERFILTER - - IfcFilter/WATERFILTER - - - WaterFilterType - Further qualifies the type of water filter. Filtration removes undissolved matter; Purification removes dissolved matter; Softening replaces dissolved matter. - - - - FILTRATION_DIATOMACEOUSEARTH - FILTRATION_SAND - PURIFICATION_DEIONIZING - PURIFICATION_REVERSEOSMOSIS - SOFTENING_ZEOLITE - OTHER - NOTKNOWN - UNSET - - - - FILTRATION_DIATOMACEOUSEARTH - - Filtration Diatomaceous Earth - - - - - - - FILTRATION_SAND - - Filtration Sand - - - - - - - PURIFICATION_DEIONIZING - - Purification Deionizing - - - - - - - PURIFICATION_REVERSEOSMOSIS - - Purification Reverse Osmosis - - - - - - - SOFTENING_ZEOLITE - - Softening Zeolite - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Water Filter Type - - - - - - - - - - - - - Pset_FireSuppressionTerminalTypeBreechingInlet - Symmetrical pipe fitting that unites two or more inlets into a single pipe (BS6100 330 114 adapted). - - - IfcFireSuppressionTerminal/BREECHINGINLET - - IfcFireSuppressionTerminal/BREECHINGINLET - - - BreechingInletType - Defines the type of breeching inlet. - - - - TWOWAY - FOURWAY - OTHER - USERDEFINED - NOTDEFINED - - - - TWOWAY - - Two-way - - - - - - - FOURWAY - - Four-way - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - USERDEFINED - - Userdefined - - - - - - - NOTDEFINED - - Notdefined - - - - - - - - - - Breeching Inlet Type - 送水口タイプ - - - - 送水口タイプの定義。 - - - - InletDiameter - The inlet diameter of the breeching inlet. - - - - - - - Inlet Diameter - 入口口径 - - - - 入口の直径。 - - - - OutletDiameter - The outlet diameter of the breeching inlet. - - - - - - - Outlet Diameter - 出口口径 - - - - 出口の直径。 - - - - CouplingType - Defines the type coupling on the inlet of the breeching inlet. - - - - INSTANTANEOUS_FEMALE - INSTANTANEOUS_MALE - OTHER - USERDEFINED - NOTDEFINED - - - - INSTANTANEOUS_FEMALE - - Instantaneous Female - - - - - - - INSTANTANEOUS_MALE - - Instantaneous Male - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - USERDEFINED - - Userdefined - - - - - - - NOTDEFINED - - Notdefined - - - - - - - - - - Coupling Type - カップリングタイプ - - - - 送水口入口のカップリングタイプ。 - - - - HasCaps - Does the inlet connection have protective caps. - - - - - - - Has Caps - 保護キャップ - - - - 入口接続が保護キャップを持っているか。 - - - - - - ひとつのパイプ(適合BS6100330114)に2つ以上の入口をもつ対称配管継手。 - - - - - Pset_FireSuppressionTerminalTypeCommon - Common properties for fire suppression terminals. - - - IfcFireSuppressionTerminal - - IfcFireSuppressionTerminal - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照記号 - - - - 使用される認識分類システムで分類基準がない場合、プロジェクトで指定された型(タイプ'A-1'など)で提供されるレファレンスID。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - - - 消火栓の共通プロパティを設定。 - - - - - Pset_FireSuppressionTerminalTypeFireHydrant - Device, fitted to a pipe, through which a temporary supply of water may be provided (BS6100 330 6107) - -For further details on fire hydrants, see www.firehydrant.org - - - IfcFireSuppressionTerminal/FIREHYDRANT - - IfcFireSuppressionTerminal/FIREHYDRANT - - - FireHydrantType - Defines the range of hydrant types from which the required type can be selected where. - -DryBarrel: A hydrant that has isolating valves fitted below ground and that may be used where the possibility of water freezing is a consideration. -WetBarrel: A hydrant that has isolating valves fitted above ground and that may be used where there is no possibility of water freezing. - - - - DRYBARREL - WETBARREL - OTHER - NOTKNOWN - UNSET - - - - DRYBARREL - - Dry Barrel - - - - - - - WETBARREL - - Wet Barrel - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Fire Hydrant Type - 消火栓のタイプ - - - - 消火栓の必要なタイプを定義する。 - -乾式l:凍結の可能性のあるとき地中に開放弁セット。 - -湿式:凍結の可能性のないとき地上に開放弁セット。 - - - - PumperConnectionSize - The size of a connection to which a fire hose may be connected that is then linked to a pumping unit. - - - - - - - Pumper Connection Size - ポンプ接続サイズ - - - - ポンプユニットに接続されであろう消防ホースの接続サイズ。 - - - - NumberOfHoseConnections - The number of hose connections on the hydrant (excluding the pumper connection). - - - - - - - Number Of Hose Connections - ホースの接続の数 - - - - (ポンプ接続を除く)消火栓のホース接続の数。 - - - - HoseConnectionSize - The size of connections to which a hose may be connected (other than that to be linked to a pumping unit). - - - - - - - Hose Connection Size - ホース接続サイズ - - - - 接続ホースのサイズ(ポンプユニット接続以外の)。 - - - - DischargeFlowRate - The volumetric rate of fluid discharge. - - - - - - - Discharge Flow Rate - 放水流量 - - - - 放水液体の体積。 - - - - FlowClass - Alphanumeric indication of the flow class of a hydrant (may be used in connection with or instead of the FlowRate property). - - - - - - - Flow Class - 流量クラス - - - - 消火栓流量クラスの英数字表示(流量属性と一緒に、または代わりに用いられる)。 - - - - WaterIsPotable - Indication of whether the water flow from the hydrant is potable (set TRUE) or non potable (set FALSE). - - - - - - - Water Is Potable - 飲用水かどうか - - - - 消火栓の水が飲用かどうかの表示(飲用:TRUEを設定、飲用以外:FALSEを設定)。 - - - - PressureRating - Maximum pressure that the hydrant is manufactured to withstand. - - - - - - - Pressure Rating - 圧力 - - - - 最大圧力、消火栓の耐圧。 - - - - BodyColor - Color of the body of the hydrant. - -Note: Consult local fire regulations for statutory colors that may be required for hydrant bodies in particular circumstances. - - - - - - - Body Color - 本体色 - - - - 消火栓本体の色。 - -注意:特定の状況で消火栓ボディに求められる地域消防規則法定色による。 - - - - CapColor - Color of the caps of the hydrant. - -Note: Consult local fire regulations for statutory colors that may be required for hydrant caps in particular circumstances. - - - - - - - Cap Color - キャップ色 - - - - 消火栓キャップの色。 - -注意:特定の状況で消火栓キャップに求められる地域消防規則法定色による。 - - - - - - (BS61003306107)から供給される一時的な水を通す配管に取り付けられる装置。 - -消火栓の詳細については、www.firehydrant.orgを参照。 - - - - - Pset_FireSuppressionTerminalTypeHoseReel - A supporting framework on which a hose may be wound (BS6100 155 8201). - -Note that the service provided by the hose (water/foam) is determined by the context of the system onto which the hose reel is connected. - - - IfcFireSuppressionTerminal/HOSEREEL - - IfcFireSuppressionTerminal/HOSEREEL - - - HoseReelType - Identifies the predefined types of hose arrangement from which the type required may be set. - - - - RACK - REEL - OTHER - NOTKNOWN - UNSET - - - - RACK - - Rack - - - - - - - REEL - - Reel - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Hose Reel Type - ホースリールタイプ - - - - あらかじめ定義済みのホース構成の型から必要な型を設定する識別。 - - - - HoseReelMountingType - Identifies the predefined types of hose reel mounting from which the type required may be set. - - - - CABINET_RECESSED - CABINET_SEMIRECESSED - SURFACE - OTHER - NOTKNOWN - UNSET - - - - CABINET_RECESSED - - Cabinet Recessed - - - - - - - CABINET_SEMIRECESSED - - Cabinet Semirecessed - - - - - - - SURFACE - - Surface - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Hose Reel Mounting Type - ホースリール装着タイプ - - - - あらかじめ定義済みの取り付けホースリールの型から必要な型を設定する識別。 - - - - InletConnectionSize - Size of the inlet connection to the hose reel. - - - - - - - Inlet Connection Size - インレット接続サイズ - - - - ホースリールへの入口接続のサイズ。 - - - - HoseDiameter - Notional diameter (bore) of the hose. - - - - - - - Hose Diameter - ホース径 - - - - ホースの公称口径(内径)。 - - - - HoseLength - Notional length of the hose fitted to the hose reel when fully extended. - - - - - - - Hose Length - ホースの長さ - - - - ホースホースリールに装着されたホースの公称長さ(全て伸ばされたときの)。 - - - - HoseNozzleType - Identifies the predefined types of nozzle (in terms of spray pattern) fitted to the end of the hose from which the type required may be set. - - - - FOG - STRAIGHTSTREAM - OTHER - NOTKNOWN - UNSET - - - - FOG - - Fog - - - - - - - STRAIGHTSTREAM - - Straight Stream - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Hose Nozzle Type - ホースノズルタイプ - - - - あらかじめ定義済みのホースの先端に取り付けられるノズルの型(放出パターンの観点から)から必要な型を設定する識別。 - - - - ClassOfService - A classification of usage of the hose reel that may be applied. - - - - - - - Class Of Service - サービスクラス - - - - 適用されるホースリールの使用方法の分類。 - - - - ClassificationAuthority - The name of the authority that applies the classification of service to the hose reel (e.g. NFPA/FEMA). - - - - - - - Classification Authority - 分類認証機関 - - - - ホースリールの分類認証機関の名称。(例 NFPA/ FEMA) - - - - - - ホースが損傷したときのサポートの仕組み。(BS61001558201) - -ホースに供給されるサービスが水か泡かは、そのホースリールが接続されているシステムによる。 - - - - - Pset_FireSuppressionTerminalTypeSprinkler - Device for sprinkling water from a pipe under pressure over an area (BS6100 100 3432) - - - IfcFireSuppressionTerminal/SPRINKLER - - IfcFireSuppressionTerminal/SPRINKLER - - - SprinklerType - Identifies the predefined types of sprinkler from which the type required may be set. - - - - CEILING - CONCEALED - CUT-OFF - PENDANT - RECESSEDPENDANT - SIDEWALL - UPRIGHT - OTHER - NOTKNOWN - UNSET - - - - CEILING - - Ceiling - - - - - - - CONCEALED - - Concealed - - - - - - - CUTOFF - - Cut-Off - - - - - - - PENDANT - - Pendant - - - - - - - RECESSEDPENDANT - - Recessed Pendant - - - - - - - SIDEWALL - - Sidewall - - - - - - - UPRIGHT - - Upright - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Sprinkler Type - スプリンクラータイプ - - - - あらかじめ定義済みのスプリンクラーの型から必要な型を設定する識別。 - - - - Activation - Identifies the predefined methods of sprinkler activation from which that required may be set. - - - - BULB - FUSIBLESOLDER - OTHER - NOTKNOWN - UNSET - - - - BULB - - Bulb - - - - - - - FUSIBLESOLDER - - Fusible Solder - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Activation - 作動 - - - - あらかじめ定義済みのスプリンクラーの作動方式から必要な方式を設定する識別。 - - - - Response - Identifies the predefined methods of sprinkler response from which that required may be set. - - - - QUICK - STANDARD - NOTKNOWN - UNSET - - - - QUICK - - Quick - - - - - - - STANDARD - - Standard - - - - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Response - 応答 - - - - あらかじめ定義済みのスプリンクラーの応答方式から必要な方式を設定する識別。 - - - - ActivationTemperature - The temperature at which the object is designed to activate. - - - - - - - Activation Temperature - 作動温度 - - - - 設計作動温度。 - - - - CoverageArea - The area that the sprinkler is designed to protect. - - - - - - - Coverage Area - カバー面積 - - - - スプリンクラーの設計保護区画面積。 - - - - HasDeflector - Indication of whether the sprinkler has a deflector (baffle) fitted to diffuse the discharge on activation (= TRUE) or not (= FALSE). - - - - - - - Has Deflector - ディフレクターの有無 - - - - スプリンクラー作動時、放水を拡散させる偏向器(バッフル)取り付けているかどうかの表示(= TRUE)そうでないか(= FALSE)を返します。 - - - - BulbLiquidColor - The color of the liquid in the bulb for a bulb activated sprinkler. Note that the liquid color varies according to the activation temperature requirement of the sprinkler head. Note also that this property does not need to be asserted for quick response activated sprinklers. - - - - ORANGE - RED - YELLOW - GREEN - BLUE - MAUVE - OTHER - NOTKNOWN - UNSET - - - - ORANGE - - Orange - - - - - - - RED - - Red - - - - - - - YELLOW - - Yellow - - - - - - - GREEN - - Green - - - - - - - BLUE - - Blue - - - - - - - MAUVE - - Mauve - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Bulb Liquid Color - バルブ液体色 - - - - バルブ作動スプリンクラーのバルブ液体色の設定。液体色は、スプリンクラーヘッドの作動温度に応じて変化する。また、この属性は、高速応答スプリンクラーは設定する必要はない。 - - - - DischargeFlowRate - The volumetric rate of fluid discharge. - - - - - - - Discharge Flow Rate - 吐出流量 - - - - 吐出流体の体積流量。 - - - - ResidualFlowingPressure - The residual flowing pressure in the pipeline at which the discharge flow rate is determined. - - - - - - - Residual Flowing Pressure - 残留流動圧力 - - - - 吐出流量が確保される、パイプラインの流れ時残留圧力。 - - - - DischargeCoefficient - The coefficient of flow at the sprinkler. - - - - - - - Discharge Coefficient - 流量係数 - - - - スプリンクラーの流れの係数。 - - - - MaximumWorkingPressure - Maximum pressure that the object is manufactured to withstand. - - - - - - - Maximum Working Pressure - 最大作動圧力 - - - - 最大圧力、製造耐圧。 - - - - ConnectionSize - Size of the inlet connection to the sprinkler. - - - - - - - Connection Size - 接続サイズ - - - - スプリンクラーへの入口接続のサイズ。 - - - - - - 特定エリアに水圧をかけた配管より散水する装置。(BS61001003432) - - - - - Pset_FlowInstrumentPHistory - Properties for history of flow instrument values. HISTORY: Added in IFC4. - - - IfcFlowInstrument - - IfcFlowInstrument - - - Value - Indicates measured values over time which may be recorded continuously or only when changed beyond a particular deadband. - - - - - Value - - - - - - - Quality - Indicates the quality of measurement or failure condition, which may be further qualified by the Status. True: measured values are considered reliable; False: measured values are considered not reliable (i.e. a fault has been detected); Unknown: reliability of values is uncertain. - - - - - Quality - - - - - - - Status - Indicates an error code or identifier, whose meaning is specific to the particular automation system. Example values include: 'ConfigurationError', 'NotConnected', 'DeviceFailure', 'SensorFailure', 'LastKnown, 'CommunicationsFailure', 'OutOfService'. - - - - - Status - - - - - - - - - - - - - Pset_FlowInstrumentTypeCommon - Flow Instrument type common attributes. HISTORY: Added in IFC4. - - - IfcFlowInstrument - - IfcFlowInstrument - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照記号 - 참조 ID - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 해당 프로젝트에서 사용이 유형에 대한 참조 ID (예 : 'A-1') ※ 기본이있는 경우 그 기호를 사용 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - - - 流体計器の共通属性。 - - - - - Pset_FlowInstrumentTypePressureGauge - A device that reads and displays a pressure value at a point or the pressure difference between two points. - - - IfcFlowInstrument/PRESSUREGAUGE - - IfcFlowInstrument/PRESSUREGAUGE - - - PressureGaugeType - Identifies the means by which pressure is displayed. - - - - DIAL - DIGITAL - MANOMETER - OTHER - NOTKNOWN - UNSET - - - - DIAL - - Dial - - - - - - - DIGITAL - - Digital - - - - - - - MANOMETER - - Manometer - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Pressure Gauge Type - 圧力計タイプ - 압력계 유형 - - - - 圧力が表示される手段を識別する。 - 압력이 표시되는 방법을 확인한다. - - - - DisplaySize - The physical size of the display. For a dial pressure gauge it will be the diameter of the dial. - - - - - - - Display Size - 表示サイズ - 디스플레이 크기 - - - - 表示のサイズ。 ダイヤル圧力計に関しては、ダイヤルの直径になる。 - 표시의 크기입니다. 다이얼 게이지에 관해서는 전화 직경된다. - - - - - - その位置の圧力、または、2か所の差圧を測定し表示するデバイス。 - - - - - Pset_FlowInstrumentTypeThermometer - A device that reads and displays a temperature value at a point. - - - IfcFlowInstrument/THERMOMETER - - IfcFlowInstrument/THERMOMETER - - - ThermometerType - Identifies the means by which temperature is displayed. - - - - DIAL - DIGITAL - STEM - OTHER - NOTKNOWN - UNSET - - - - DIAL - - Dial - - - - - - - DIGITAL - - Digital - - - - - - - STEM - - Stem - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Thermometer Type - 温度計タイプ - 온도계 유형 - - - - 温度が表示される手段を識別する。 - 온도가 표시되는 방법을 확인한다. - - - - DisplaySize - The physical size of the display. In the case of a stem thermometer, this will be the length of the stem. For a dial thermometer, it will be the diameter of the dial. - - - - - - - Display Size - 表示サイズ - 디스플레이 크기 - - - - 表示のサイズ。 棒温度計の場合では、軸の長さになる。 ダイヤル温度計に関しては、ダイヤルの直径になる。 - 표시의 크기입니다. 막대 온도계의 경우, 축의 길이가된다. 다이얼 온도계에 대해서는 다이얼 직경된다. - - - - - - 温度を測定し表示するデバイス。 - - - - - Pset_FlowMeterOccurrence - Flow meter occurrence common attributes. - - - IfcFlowMeter - - IfcFlowMeter - - - Purpose - Enumeration defining the purpose of the flow meter occurrence. - - - - MASTER - SUBMASTER - SUBMETER - OTHER - NOTKNOWN - UNSET - - - - MASTER - - Master - - - - - - - SUBMASTER - - Submaster - - - - - - - SUBMETER - - Submeter - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Purpose - - - - - - - - - - - - - Pset_FlowMeterTypeCommon - Common attributes of a flow meter type - - - IfcFlowMeter - - IfcFlowMeter - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - ReadOutType - Indication of the form that readout from the meter takes. In the case of a dial read out, this may comprise multiple dials that give a cumulative reading and/or a mechanical odometer. - - - - DIAL - DIGITAL - OTHER - NOTKNOWN - UNSET - - - - DIAL - - Dial - - - - - - - DIGITAL - - Digital - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Read Out Type - - - - - - - RemoteReading - Indicates whether the meter has a connection for remote reading through connection of a communication device (set TRUE) or not (set FALSE). - - - - - - - Remote Reading - - - - - - - - - - - - - Pset_FlowMeterTypeEnergyMeter - Device that measures, indicates and sometimes records, the energy usage in a system. - - - IfcFlowMeter/ENERGYMETER - - IfcFlowMeter/ENERGYMETER - - - NominalCurrent - The nominal current that is designed to be measured. - - - - - - - Nominal Current - - - - - - - MaximumCurrent - The maximum allowed current that a device is certified to handle. - - - - - - - Maximum Current - - - - - - - MultipleTarriff - Indicates whether meter has built-in support for multiple tarriffs (variable energy cost rates). - - - - - - - Multiple Tarriff - - - - - - - - - - - - - Pset_FlowMeterTypeGasMeter - Device that measures, indicates and sometimes records, the volume of gas that passes through it without interrupting the flow. - - - IfcFlowMeter/GASMETER - - IfcFlowMeter/GASMETER - - - GasType - Defines the types of gas that may be specified. - - - - COMMERCIALBUTANE - COMMERCIALPROPANE - LIQUEFIEDPETROLEUMGAS - NATURALGAS - OTHER - NOTKNOWN - UNSET - - - - COMMERCIALBUTANE - - Commercial Butane - - - - - - - COMMERCIALPROPANE - - Commercial Propane - - - - - - - LIQUEFIEDPETROLEUMGAS - - Liquefied Petroleum Gas - - - - - - - NATURALGAS - - Natural Gas - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Gas Type - - - - - - - ConnectionSize - Defines the size of inlet and outlet pipe connections to the meter. - - - - - - - Connection Size - - - - - - - MaximumFlowRate - Maximum rate of flow which the meter is expected to pass. - - - - - - - Maximum Flow Rate - - - - - - - MaximumPressureLoss - Pressure loss expected across the meter under conditions of maximum flow. - - - - - - - Maximum Pressure Loss - - - - - - - - - - - - - Pset_FlowMeterTypeOilMeter - Device that measures, indicates and sometimes records, the volume of oil that passes through it without interrupting the flow. - - - IfcFlowMeter/OILMETER - - IfcFlowMeter/OILMETER - - - ConnectionSize - Defines the size of inlet and outlet pipe connections to the meter. - - - - - - - Connection Size - - - - - - - MaximumFlowRate - Maximum rate of flow which the meter is expected to pass. - - - - - - - Maximum Flow Rate - - - - - - - - - - - - - Pset_FlowMeterTypeWaterMeter - Device that measures, indicates and sometimes records, the volume of water that passes through it without interrupting the flow. - - - IfcFlowMeter/WATERMETER - - IfcFlowMeter/WATERMETER - - - Type - Defines the allowed values for selection of the flow meter operation type. - - - - COMPOUND - INFERENTIAL - PISTON - OTHER - NOTKNOWN - UNSET - - - - COMPOUND - - Compound - - - - - - - INFERENTIAL - - Inferential - - - - - - - PISTON - - Piston - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Type - - - - - - - ConnectionSize - Defines the size of inlet and outlet pipe connections to the meter. - - - - - - - Connection Size - - - - - - - MaximumFlowRate - Maximum rate of flow which the meter is expected to pass. - - - - - - - Maximum Flow Rate - - - - - - - MaximumPressureLoss - Pressure loss expected across the meter under conditions of maximum flow. - - - - - - - Maximum Pressure Loss - - - - - - - BackflowPreventerType - Identifies the type of backflow preventer installed to prevent the backflow of contaminated or polluted water from an irrigation/reticulation system to a potable water supply. - - - - NONE - ATMOSPHERICVACUUMBREAKER - ANTISIPHONVALVE - DOUBLECHECKBACKFLOWPREVENTER - PRESSUREVACUUMBREAKER - REDUCEDPRESSUREBACKFLOWPREVENTER - OTHER - NOTKNOWN - UNSET - - - - NONE - - None - - - - - - - ATMOSPHERICVACUUMBREAKER - - Atmospheric Vacuum Breaker - - - - - - - ANTISIPHONVALVE - - Antisiphon Valve - - - - - - - DOUBLECHECKBACKFLOWPREVENTER - - Double Check Backflow Preventer - - - - - - - PRESSUREVACUUMBREAKER - - Pressure Vacuum Breaker - - - - - - - REDUCEDPRESSUREBACKFLOWPREVENTER - - Reduced Pressure Backflow Preventer - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Backflow Preventer Type - - - - - - - - - - - - - Pset_FootingCommon - Properties common to the definition of all occurrences of IfcFooting. - - - IfcFooting - - IfcFooting - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). - - - - - - - Reference - 参照記号 - - - - 当プロジェクトにおけるこの指定型式のためのリファレンスID。(たとえは、'A-1'型) - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - LoadBearing - Indicates whether the object is intended to carry loads (TRUE) or not (FALSE) - - - - - - - Tragendes Bauteil - Load Bearing - Porteur - 耐力部材 - - - Angabe, ob dieses Bauteil tragend ist (JA) oder nichttragend (NEIN) - Indicates whether the object is intended to carry loads (TRUE) or not (FALSE). - Indique si l'objet est censé porter des charges (VRAI) ou non (FAUX). - 荷重に関係している部材かどうかを示すブーリアン値。 - - - - - - 生成されたすべてのIfcFooting の定義に共通するプロパティ。 - - - - - Pset_FurnitureTypeChair - A set of specific properties for furniture type chair. HISTORY: First issued in IFC Release R1.5. Renamed from Pset_Chair - - - IfcFurniture/CHAIR - - IfcFurniture/CHAIR - - - SeatingHeight - The value of seating height if the chair height is not adjustable. - - - - - - - Seating Height - - - - - - - HighestSeatingHeight - The value of seating height of high level if the chair height is adjustable. - - - - - - - Highest Seating Height - - - - - - - LowestSeatingHeight - The value of seating height of low level if the chair height is adjustable. - - - - - - - Lowest Seating Height - - - - - - - - - - - - - Pset_FurnitureTypeCommon - Common properties for all types of furniture such as chair, desk, table, and file cabinet. HISTORY: First issued in IFC Release R1.5. Renamed from Pset_FurnitureCommon. IFC 2x4: 'IsBuiltIn' property added - - - IfcFurniture - - IfcFurniture - - - Reference - - - - - - - - - - Status - - - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - - - - Style - Description of the furniture style. - - - - - - - Style - - - - - - - NominalHeight - The nominal height of the furniture of this type. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence. - - - - - - - Nominal Height - - - - - - - NominalLength - The nominal length of the furniture of this type. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence. - - - - - - - Nominal Length - - - - - - - NominalDepth - The nominal depth of the furniture of this type. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence. - - - - - - - Nominal Depth - - - - - - - MainColor - The main color of the furniture of this type. - - - - - - - Main Color - - - - - - - IsBuiltIn - Indicates whether the furniture type is intended to be 'built in' i.e. physically attached to a building or facility (= TRUE) or not i.e. Loose and movable (= FALSE). - - - - - - - Is Built In - - - - - - - - - - - - - Pset_FurnitureTypeDesk - A set of specific properties for furniture type desk. HISTORY: First issued in IFC Release R1.5. Renamed from Pset_Desk - - - IfcFurniture/DESK - - IfcFurniture/DESK - - - WorksurfaceArea - The value of the work surface area of the desk. - - - - - - - Worksurface Area - - - - - - - - - - - - - Pset_FurnitureTypeFileCabinet - A set of specific properties for furniture type file cabinet HISTORY: First issued in IFC Release R1.5. Renamed from Pset_FileCabinet - - - IfcFurniture/FILECABINET - - IfcFurniture/FILECABINET - - - WithLock - Indicates whether the file cabinet is lockable (= TRUE) or not (= FALSE). - - - - - - - With Lock - - - - - - - - - - - - - Pset_FurnitureTypeTable - HISTORY: First issued in IFC Release R1.5. Renamed from Pset_Table - - - IfcFurniture/TABLE - - IfcFurniture/TABLE - - - WorksurfaceArea - The value of the work surface area of the desk.. - - - - - - - Worksurface Area - - - - - - - NumberOfChairs - Maximum number of chairs that can fit with the table for normal use. - - - - - - - Number Of Chairs - - - - - - - - - - - - - Pset_HeatExchangerTypeCommon - Heat exchanger type common attributes. - - - IfcHeatExchanger - - IfcHeatExchanger - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - Arrangement - Defines the basic flow arrangements for the heat exchanger: - -COUNTERFLOW: Counterflow heat exchanger arrangement. -CROSSFLOW: Crossflow heat exchanger arrangement. -PARALLELFLOW: Parallel flow heat exchanger arrangement. -MULTIPASS: Multipass flow heat exchanger arrangement. -OTHER: Other type of heat exchanger flow arrangement not defined above. - - - - COUNTERFLOW - CROSSFLOW - PARALLELFLOW - MULTIPASS - OTHER - NOTKNOWN - UNSET - - - - COUNTERFLOW - - Counter Flow - - - Counterflow heat exchanger arrangement - - - - CROSSFLOW - - Cross Flow - - - Crossflow heat exchanger arrangement - - - - PARALLELFLOW - - Parallel Flow - - - Parallel flow heat exchanger arrangement - - - - MULTIPASS - - Multipass - - - Multipass flow heat exchanger arrangement - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Arrangement - 配置 - - - - 熱交換器の流れの基本的配置(カウンターフロー、クロスフロー。パラレルフロー、マルチパス、その他) - - - - - - - - - - Pset_HeatExchangerTypePlate - Plate heat exchanger type common attributes. - - - IfcHeatExchanger/PLATE - - IfcHeatExchanger/PLATE - - - NumberOfPlates - Number of plates used by the plate heat exchanger. - - - - - - - Number Of Plates - プレート数 - - - - プレート式熱交換器に使われているプレート数 - - - - - - - - - - Pset_HumidifierPHistory - Humidifier performance history attributes. -Sound attribute deleted in IFC2x2 Pset Addendum: Use IfcSoundProperties instead. - - - IfcHumidifier - - IfcHumidifier - - - AtmosphericPressure - Ambient atmospheric pressure. - - - - - Atmospheric Pressure - 標準大気圧(外気圧) - - - - 標準大気圧(外気圧) - - - - SaturationEfficiency - Saturation efficiency: Ratio of leaving air absolute humidity to the maximum absolute humidity. - - - - - Saturation Efficiency - 飽和比率 - - - - 飽和比率:最大絶対湿度に対する現在の絶対湿度の割合 - - - - - - - - - - Pset_HumidifierTypeCommon - Humidifier type common attributes. -WaterProperties attribute renamed to WaterRequirement and unit type modified in IFC2x2 Pset Addendum. - - - IfcHumidifier - - IfcHumidifier - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - Application - Humidifier application. - -Fixed: Humidifier installed in a ducted flow distribution system. -Portable: Humidifier is not installed in a ducted flow distribution system. - - - - PORTABLE - FIXED - OTHER - NOTKNOWN - UNSET - - - - PORTABLE - - Portable - - - - - - - FIXED - - Fixed - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Application - 応用 - - - - 加湿器の応用 (固定式:ダクト搬送系に設置する加湿器、可搬式:クト搬送系に設置しない加湿器) - - - - Weight - The weight of the humidifier. - - - - - - - Weight - 重量 - - - - 加湿器の重量 - - - - NominalMoistureGain - Nominal rate of water vapor added into the airstream. - - - - - - - Nominal Moisture Gain - 加湿量の平均 - - - - 気流に加わった水蒸気の平均量 - - - - NominalAirFlowRate - Nominal rate of air flow into which water vapor is added. - - - - - - - Nominal Air Flow Rate - 気流量の平均 - - - - 加湿される気流の平均量 - - - - InternalControl - Internal modulation control. - - - - ONOFF - STEPPED - MODULATING - NONE - OTHER - NOTKNOWN - UNSET - - - - ONOFF - - Onoff - - - - - - - STEPPED - - Stepped - - - - - - - MODULATING - - Modulating - - - - - - - NONE - - None - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Internal Control - 内部制御 - - - - 内部調整の制御 - - - - WaterRequirement - Make-up water requirement. - - - - - - - Water Requirement - 水必要量 - - - - 補給水の必要量 - - - - SaturationEfficiencyCurve - Saturation efficiency as a function of the air flow rate. - - - - - - - - - - - - - Saturation Efficiency Curve - - - - - - - AirPressureDropCurve - Air pressure drop versus air-flow rate. - - - - - - - - - - - - - Air Pressure Drop Curve - - - - - - - - - 加湿器型情報に関する共通プロパティ属性設定。 - - - - - Pset_InterceptorTypeCommon - Common properties for interceptors. - - - IfcInterceptor - - IfcInterceptor - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照記号 - - - - 使用される認識分類システムで分類基準がない場合、プロジェクトで指定された型(タイプ'A-1'など)で提供されるレファレンスID。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - NominalBodyLength - Nominal or quoted length, measured along the x-axis of the local coordinate system of the object, of the body of the object. - - - - - - - Nominal Body Length - - - - - - - NominalBodyWidth - Nominal or quoted length, measured along the y-axis of the local coordinate system of the object, of the body of the object. - - - - - - - Nominal Body Width - - - - - - - NominalBodyDepth - Nominal or quoted =length, measured along the z-axis of the local coordinate system of the object, of the body of the object. - - - - - - - Nominal Body Depth - - - - - - - InletConnectionSize - Size of the inlet connection. - - - - - - - Inlet Connection Size - - - - - - - OutletConnectionSize - Size of the outlet connection. - - - - - - - Outlet Connection Size - - - - - - - CoverLength - The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the oil interceptor. - - - - - - - Cover Length - - - - - - - CoverWidth - The length measured along the x-axis in the local coordinate system of the cover of the oil interceptor. - - - - - - - Cover Width - - - - - - - VentilatingPipeSize - Size of the ventilating pipe(s). - - - - - - - Ventilating Pipe Size - - - - - - - - - 阻集器の共通プロパティを設定します。 - - - - - Pset_JunctionBoxTypeCommon - A junction box is an enclosure within which cables are connected. - -History: New in IFC4 - - - IfcJunctionBox - - IfcJunctionBox - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照 - 참조 - - - - 当該プロジェクトで定義する形式の参照ID(例:A-1)、承認された分類に存在しないときに使用される。 - 해당 프로젝트에 정의된 형식의 참조 ID (예 : A-1) 승인된 분류에 존재하지 않을 때 사용된다. - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - NumberOfGangs - Number of slots available for switches/outlets (most commonly 1, 2, 3, or 4). - - - - - - - Number Of Gangs - 分岐の数 - 분기의 수 - - - - スロットスイッチ/コンセント(最も一般的に1、2、3、または4)で使用可能な数。 - 슬롯 스위치 / 콘센트 (가장 일반적으로 1,2,3 또는 4)에서 사용할 수있는 수. - - - - ClearDepth - Clear unobstructed depth available for cable inclusion within the junction box. - - - - - - - Clear Depth - 明確な深さ - 명확한 깊이 - - - - ジヤンクションボックスにケーブルを収められる深さ。 - 지얀 섹션 상자에 케이블을 거둘 깊이. - - - - ShapeType - Shape of the junction box. - - - - RECTANGULAR - ROUND - SLOT - OTHER - NOTKNOWN - UNSET - - - - RECTANGULAR - - Rectangular - - - - - - - ROUND - - Round - - - - - - - SLOT - - Slot - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Shape Type - 形状 - 형상 - - - - ジヤンクションボックスの形状。 - 지얀 섹션 상자 모양. - - - - PlacingType - Location at which the type of junction box can be located. - - - - CEILING - FLOOR - WALL - OTHER - NOTKNOWN - UNSET - - - - CEILING - - Ceiling - - - - - - - FLOOR - - Floor - - - - - - - WALL - - Wall - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Placing Type - 位置 - 위치 - - - - ジヤンクションボックスの配置場所。 - 지얀 섹션 보트 상자 설치 방법. - - - - MountingType - Method of mounting to be adopted for the type of junction box. - - - - FACENAIL - SIDENAIL - CUT_IN - OTHER - NOTKNOWN - UNSET - - - - FACENAIL - - Facenail - - - - - - - SIDENAIL - - Sidenail - - - - - - - CUT_IN - - Cut In - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Mounting Type - 取り付け - 설치 - - - - ジヤンクションボツクスの取り付け方法。 - 지얀 섹션 보트 상자 설치 방법. - - - - IsExternal - Indication of whether the junction box type is allowed for exposure to outdoor elements (set TRUE where external exposure is allowed). - - - - - - - Is External - 外部露出 - 외부노출 - - - - ジャンクションボックスが外部露出の許可がされているかどうかを表示(外部露出が許可されている場合は設定)。 - 정션 박스 외부 노출의 허가가되어 있는지 여부를 표시 (외부 노출이 허용되는 경우 설정). - - - - IP_Code - IEC 60529 (1989) Classification of degrees of protection provided by enclosures (IP Code). - - - - - - - IP_ Code - 機密性エンクロージャ等級 - 기밀성 인클로저 등급 - - - - エンクロージャによる国際保護等級(IPコード)。 - 인클로저에 의한 국제 보호 등급 (IP 코드). - - - - - - ジャンクションボックスは中にケーブルが接続されているケース。 - IFC4にて新規。 - - - - - Pset_LampTypeCommon - A lamp is a component within a light fixture that is designed to emit light. - -History: Name changed from Pset_LampEmitterTypeCommon in IFC 2x3. - - - IfcLamp - - IfcLamp - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照 - 참조 - - - - 当該プロジェクトで定義する形式の参照ID(例:A-1)、承認された分類に存在しないときに使用される。 - 해당 프로젝트에 정의된 형식의 참조 ID (예 : A-1) 승인된 분류에 존재하지 않을 때 사용된다. - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - ContributedLuminousFlux - Luminous flux is a photometric measure of radiant flux, i.e. the volume of light emitted from a light source. Luminous flux is measured either for the interior as a whole or for a part of the interior (partial luminous flux for a solid angle). All other photometric parameters are derivatives of luminous flux. Luminous flux is measured in lumens (lm). The luminous flux is given as a nominal value for each lamp. - - - - - - - Contributed Luminous Flux - 光束 - 광속 - - - - 光束は放射束を光度測定したもので、たとえば、光源からの発光の量である。光束は全室内、または室内の一部(立体角の部分的な光束)で計測する。 -全ての光度測定の項目は高速の派生である。光束は単位ルーメンで計られる。光束は各ランプからの値で与えられる。 - 광속은 방사들을 광도 측정 것으로, 예를 들어, 광원에서 방출 양이다. 광속은 모든 실내, 실내 일부 (입체 각의 부분적인 광속)로 측정한다.모든 광도 측정 항목은 빠른 파생이다. 광속 단위 루멘으로 정해진다. 광속은 각 램프의 값으로 주어진다. - - - - LightEmitterNominalPower - Light emitter nominal power. - - - - - - - Light Emitter Nominal Power - 照明器具ワット数 - 조명기구 와트 - - - - 発光するための定格ワット数 - 발광하는 정격 와트 - - - - LampMaintenanceFactor - Non recoverable losses of luminous flux of a lamp due to lamp depreciation; i.e. the decreasing of light output of a luminaire due to aging and dirt. - - - - - - - Lamp Maintenance Factor - 保守率 - 보수 비율 - - - - 回復不可能な光量減少が原因の光源自体の光束の低下、たとえば照明器具の老朽化や汚れによる光量の減少。 - 복구할 수없는 광량 감소가 원인 광원 자체의 광속 저하, 예를 들어 조명기구의 노후화 및 오염에 의한 광량 감소. - - - - LampBallastType - The type of ballast used to stabilise gas discharge by limiting the current during operation and to deliver the necessary striking voltage for starting. Ballasts are needed to operate Discharge Lamps such as Fluorescent, Compact Fluorescent, High-pressure Mercury, Metal Halide and High-pressure Sodium Lamps. -Magnetic ballasts are chokes which limit the current passing through a lamp connected in series on the principle of self-induction. The resultant current and power are decisive for the efficient operation of the lamp. A specially designed ballast is required for every type of lamp to comply with lamp rating in terms of Luminous Flux, Color Appearance and service life. The two types of magnetic ballasts for fluorescent lamps are KVG Conventional (EC-A series) and VVG Low-loss ballasts (EC-B series). Low-loss ballasts have a higher efficiency, which means reduced ballast losses and a lower thermal load. Electronic ballasts are used to run fluorescent lamps at high frequencies (approx. 35 - 40 kHz). - - - - - - CONVENTIONAL - - Conventional - - - - - - - ELECTRONIC - - Electronic - - - - - - - LOWLOSS - - Low Loss - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - RESISTOR - Fixed or variable resistors. Fixed resistors are used with low-powered loads such as neon or LED. Variable are used in incandescent lamps. - - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Lamp Ballast Type - 安定期のタイプ - 안정기의 종류 - - - - 安定器は使用中の過電流を抑え、蛍光ランプの起動に必要な高い電圧を供給し、ガス放電を安定させる。安定器は蛍光灯、水銀灯、メタルハライドランプ、高圧ナトリウムランプ等の放電灯使用する時に必要となる。 -磁気式安定器はランプに流れる電流の制限のために、直列に接続された自己誘導の手法を用いている電流と出力から照明の効率運用の結果がわかる。 -特別な設計の安定器は全ての照明の光束、色の見え方、寿命の要求に答える。 -蛍光灯用の磁気式安定器にはKVG従来型とVVG省電力型の2種類がある。 -省電力型安定器は光効率で、安定器での損失の低減及び低熱負荷になっている。電子式安定器は蛍光灯を高周波で安定的に点灯させる。 - 안정기는 사용중인 서지를 억제하고, 형광 램프 시작하는 데 필요한 높은 전압을 공급하여 가스 방전을 안정시킨다. 안정기는 형광등, 수은등, 메탈 할라이드 램프, 고압 나트륨 램프 등의 방전등 사용 때 필요하다. 마그네틱 안정기는 램프에 흐르는 전류의 제한을 위해 직렬로 연결된 자기 유도 방법을 사용하는 전류 출력에서 조명 효율 운영 결과 알 수있다. 특별한 디자인의 안정기는 모든 조명의 광속, 색상의 외관 수명의 요구에 반응한다. 형광 등용 자기 식 안정기에 KVG 기존과 VVG 절전 형의 2 종류가있다. 에너지 절약형 안정기는 조명 효율에서 안정기의 손실 감소 및 낮은 열 부하되어있다. 전자식 안정기는 형광등 고주파에서 안정적으로 점등한다. - - - - LampCompensationType - Identifies the form of compensation used for power factor correction and radio suppression. - - - - - - CAPACITIVE - - Capacitive - - - - - - - INDUCTIVE - - Inductive - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Lamp Compensation Type - ランプ補正 - 램프보정 - - - - 力率の改善と高調波の抑制のために使用される補正 - - - - - ColorAppearance - In both the DIN and CIE standards, artificial light sources are classified in terms of their color appearance. To the human eye they all appear to be white; the difference can only be detected by direct comparison. Visual performance is not directly affected by differences in color appearance. - - - - - - - Color Appearance - 色の見え方 - 색상의 외관 - - - - DIN(ドイツ規格協会)とCIE(国際照明委員会)の両方の規格で、人工照明は色の見え方で分類される。 -人の目には全て白く見えてくる、その差異は直接比較することにより判別することが可能である。視機能は色の見え方の差異に直接影響はしない。 - - - - - Spectrum - The spectrum of radiation describes its composition with regard to wavelength. Light, for example, as the portion of electromagnetic radiation that is visible to the human eye, is radiation with wavelengths in the range of approx. 380 to 780 nm (1 nm = 10 m). The corresponding range of colours varies from violet to indigo, blue, green, yellow, orange, and red. These colours form a continuous spectrum, in which the various spectral sectors merge into each other. - - - - - - - - - - - - - Spectrum - 波長域 - 파장 - - - - 波長を考慮して合成することを放射スペクトルで表現する。 -光は可視の電磁波の一種で、訳380~780nmの範囲の波長の放射である。 -色の変化は紫から藍色、青、緑、黄色、オレンジ、赤の範囲に相当する。これらの色は連続する波長で、お互いに合成した波長領域である。 - - - - - ColorTemperature - The color temperature of any source of radiation is defined as the temperature (in Kelvin) of a black-body or Planckian radiator whose radiation has the same chromaticity as the source of radiation. Often the values are only approximate color temperatures as the black-body radiator cannot emit radiation of every chromaticity value. The color temperatures of the commonest artificial light sources range from less than 3000K (warm white) to 4000K (intermediate) and over 5000K (daylight). - - - - - - - Color Temperature - 色温度 - 색온도 - - - - 放射源の色温度は黒体、または完全放射体の色温度にて定義され、与えられた放射の色度と等しい黒体の温度のこと。与えられた放射の色度が黒体放射軌跡上にない場合に、相対分光分布を黒体放射に近似する。最も一般的な人工光源の色温度の範囲は、3000K以下(暖白)から4000K(中間)で、5000k以上は昼光。 - 방사 원의 색온도는 흑체 또는 흑체의 색온도에서 정의된 주어진 방사의 색도와 동일 흑체의 온도 것. 주어진 방사의 색도가 흑체 복사 궤적에없는 경우 상대 분광 분포를 흑체 복사에 근사한다. 가장 일반적인 인공 광원의 색온도 범위는 3000K 이하 (따뜻한 흰색)에서 4000K (중간)에서 5000k 이상은 일광. - - - - ColorRenderingIndex - The CRI indicates how well a light source renders eight standard colors compared to perfect reference lamp with the same color temperature. The CRI scale ranges from 1 to 100, with 100 representing perfect rendering properties. - - - - - - - Color Rendering Index - 演色評価数 - 연색 평가수 - - - - 同じ色温度の基準光源で、規定された8色の試験色票での光源による色彩の再表現を比較する。CRIの評価スケールは1~100で、基準光源の場合を100とする。 - 같은 색온도의 기준 광원으로 규정된 8 가지 시험 색 표의 광원에 의한 색채를 다시 표현을 비교한다. CRI의 평가 척도는 1에서 100에서 기준 광원의 경우 100로한다. - - - - - - ランプは光を発するように設計された照明器具の部品。 -IFC 2x3のPset_LampEmitterTypeCommonから名前が変更。 - - - - - Pset_LandRegistration - Specifies the identity of land within a statutory registration system. NOTE: The property LandTitleID is to be used in preference to deprecated attribute LandTitleNumber in IfcSite. - - - IfcSite - - IfcSite - - - LandID - Identification number assigned by the statutory registration authority to a land parcel. - - - - - - - Land ID - IdParcelle - 敷地ID - 부지 ID - - - - Identifiant numérique de la parcelle attribué par une autorité [NDT : exemple : DGI] - 登記における識別番号。 - 등기의 ID입니다. - - - - IsPermanentID - Indicates whether the identity assigned to a land parcel is permanent (= TRUE) or temporary (=FALSE). - - - - - - - Is Permanent ID - IdPermanent - 恒久ID区分 - 영구 ID 구분 - - - - Indique si l'identifiant est permanent (VRAI) ou non (FAUX) - 敷地IDが恒久的なものかどうかを示すブーリアン値。 - 부지 ID가 영구적인 것인지 여부를 나타내는 값입니다. - - - - LandTitleID - Identification number assigned by the statutory registration authority to the title to a land parcel. - - - - - - - Land Title ID - IdTitreParcelle - 敷地番号ID - 부지 번호 ID - - - - Identifiant numérique du titre de la parcelle attribué par une autorité. - 登記所による識別番号。 - 등기소의 ID입니다. - - - - - - Définition de l'IAI : spécifie l'identité de l'entité foncière attribué par une autorité. Nota : La propriété LandTitleID doit être utilisée de préférence à l'attribut LandTitleNumber de la classe IfcSite. - 敷地の登記システム上の識別情報に関するプロパティセット定義。備考:LandTitileIDプロパティは、IfcSite.LandTitleNumber属性が廃止されるのに伴い、優先的に使用される。 - - - - - Pset_LightFixtureTypeCommon - Common data for light fixtures. -History: IFC4 - Article number and manufacturer specific information deleted. Use Pset_ManufacturerTypeInformation. ArticleNumber instead. Load properties moved from Pset_LightFixtureTypeThermal (deleted). - - - IfcLightFixture - - IfcLightFixture - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照 - - - - 当該プロジェクトで定義する形式の参照ID(例:A-1)、承認された分類に存在しないときに使用される。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - NumberOfSources - Number of sources . - - - - - - - Number Of Sources - 電球数 - 전구수 - - - - 電球数。 - 전구수 - - - - TotalWattage - Wattage on whole lightfitting device with all sources intact. - - - - - - - Total Wattage - 総ワット数 - 총 와트 - - - - 全ての照明器具のワット数。 - 모든 조명기구 와트. - - - - LightFixtureMountingType - A list of the available types of mounting for light fixtures from which that required may be selected. - - - - CABLESPANNED - FREESTANDING - POLE_SIDE - POLE_TOP - RECESSED - SURFACE - SUSPENDED - TRACKMOUNTED - OTHER - NOTKNOWN - UNSET - - - - CABLESPANNED - - Cable Spanned - - - - - - - FREESTANDING - - Freestanding - - - - - - - POLE_SIDE - - Pole Side - - - - - - - POLE_TOP - - Pole Top - - - - - - - RECESSED - - Recessed - - - - - - - SURFACE - - Surface - - - - - - - SUSPENDED - - Suspended - - - - - - - TRACKMOUNTED - - Track Mounted - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Light Fixture Mounting Type - 照明器具取付方法 - 조명기구 설치방법 - - - - 照明器具の取付方法をリストから選択。 - 조명기구의 설치 방법을 목록에서 선택합니다. - - - - LightFixturePlacingType - A list of the available types of placing specification for light fixtures from which that required may be selected. - - - - CEILING - FLOOR - FURNITURE - POLE - WALL - OTHER - NOTKNOWN - UNSET - - - - CEILING - - Ceiling - - - - - - - FLOOR - - Floor - - - - - - - FURNITURE - - Furniture - - - - - - - POLE - - Pole - - - - - - - WALL - - Wall - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Light Fixture Placing Type - 照明器具取付場所 - 조명기구 설치 장소 - - - - 照明器具の取付場所をリストから選択。 - 조명기구의 설치 장소를 목록에서 선택합니다. - - - - MaintenanceFactor - The arithmetical allowance made for depreciation of lamps and reflective equipment from their initial values due to dirt, fumes, or age. - - - - - - - Maintenance Factor - 保守率 - 보수 비율 - - - - 汚れ、煙、年数による初期からのランプや反射装置の低減許容計算。 - 먼지, 연기, 연수의 초기부터 램프와 반사 장치의 저감 허용 계산. - - - - MaximumPlenumSensibleLoad - Maximum or Peak sensible thermal load contributed to return air plenum by the light fixture. - - - - - - - Maximum Plenum Sensible Load - - - - - - - MaximumSpaceSensibleLoad - Maximum or Peak sensible thermal load contributed to the conditioned space by the light fixture. - - - - - - - Maximum Space Sensible Load - - - - - - - SensibleLoadToRadiant - Percent of sensible thermal load to radiant heat. - - - - - - - Sensible Load To Radiant - - - - - - - - - 照明器具の共通データ。 -IFC4でArticleNumberは削除されました。代わりにPset_ManufacturerTypeInformationを使用してください。 - - - - - Pset_LightFixtureTypeSecurityLighting - Properties that characterize security lighting. - - - IfcLightFixture/SECURITYLIGHTING - - IfcLightFixture/SECURITYLIGHTING - - - SecurityLightingType - The type of security lighting. - - - - SAFETYLIGHT - WARNINGLIGHT - EMERGENCYEXITLIGHT - BLUEILLUMINATION - OTHER - NOTKNOWN - UNSET - - - - SAFETYLIGHT - - Safety Light - - - - - - - WARNINGLIGHT - - Warning Light - - - - - - - EMERGENCYEXITLIGHT - - Emergency Exit Light - - - - - - - BLUEILLUMINATION - - Blue Illumination - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Security Lighting Type - 防犯灯 - 방범등 - - - - 防犯灯のタイプ。 - 방범등 유형 - - - - FixtureHeight - The height of the fixture, such as the text height of an exit sign. - - - - - - - Fixture Height - 器具の高さ - 기구의 높이 - - - - 出口標識などの器具の高さ。 - 출구 표지판 등의기구의 높이 - - - - SelfTestFunction - The type of self test function. - - - - CENTRAL - LOCAL - NONE - OTHER - NOTKNOWN - UNSET - - - - CENTRAL - - Central - - - - - - - LOCAL - - Local - - - - - - - NONE - - None - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Self Test Function - 自己診断機能 - 자기 진단 기능 - - - - 自己診断機能のタイプ。 - 자기 진단 기능의 유형 - - - - BackupSupplySystem - The type of backup supply system. - - - - LOCALBATTERY - CENTRALBATTERY - OTHER - NOTKNOWN - UNSET - - - - LOCALBATTERY - - Local Battery - - - - - - - CENTRALBATTERY - - Central Battery - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Backup Supply System - 電源バックアップシステム - 전원백업 시스템 - - - - 電源バックアップシステムのタイプ。 - 전원 백업 시스템 유형 - - - - PictogramEscapeDirection - The direction of escape pictogram. - - - - RIGHTARROW - LEFTARROW - DOWNARROW - UPARROW - OTHER - NOTKNOWN - UNSET - - - - RIGHTARROW - - Right Arrow - - - - - - - LEFTARROW - - Left Arrow - - - - - - - DOWNARROW - - Down Arrow - - - - - - - UPARROW - - Up Arrow - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Pictogram Escape Direction - 避難標識の向き - 피난 표지판 방향 - - - - 避難標識の向き。 - 피난 표지판 방향 - - - - Addressablility - The type of addressability. - - - - IMPLEMENTED - UPGRADEABLETO - NOTIMPLEMENTED - OTHER - NOTKNOWN - UNSET - - - - IMPLEMENTED - - Implemented - - - - - - - UPGRADEABLETO - - Upgradeable To - - - - - - - NOTIMPLEMENTED - - Not Implemented - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Addressablility - アドレス指定能力 - 주소 지정 능력 - - - - アドレス指定能力のタイプ。 - 주소 지정 능력 타입 - - - - - - 防犯灯の特徴プロパティ。 - - - - - Pset_ManufacturerOccurrence - Defines properties of individual instances of manufactured products that may be given by the manufacturer. -HISTORY: IFC 2x4: AssemblyPlace property added. This property does not need to be asserted if Pset_ManufacturerTypeInformation is allocated to the type and the AssemblyPlace property is asserted there. - - - IfcElement - - IfcElement - - - AcquisitionDate - The date that the manufactured item was purchased. - - - - - - - Acquisition Date - - - - - - - BarCode - The identity of the bar code given to an occurrence of the product. - - - - - - - Bar Code - - - - - - - SerialNumber - The serial number assigned to an occurrence of a product. - - - - - - - Serial Number - - - - - - - BatchReference - The identity of the batch reference from which an occurrence of a product is taken. - - - - - - - Batch Reference - - - - - - - AssemblyPlace - Enumeration defining where the assembly is intended to take place, either in a factory, other offsite location or on the building site. - - - - FACTORY - OFFSITE - SITE - OTHER - NOTKNOWN - UNSET - - - - FACTORY - - Factory - - - - - - - OFFSITE - - Offsite - - - - - - - SITE - - Site - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Assembly Place - - - - - - - - - - - - - Pset_ManufacturerTypeInformation - Defines characteristics of types (ranges) of manufactured products that may be given by the manufacturer. Note that the term 'manufactured' may also be used to refer to products that are supplied and identified by the supplier or that are assembled off site by a third party provider. -HISTORY: This property set replaces the entity IfcManufacturerInformation from previous IFC releases. IFC 2x4: AssemblyPlace property added. - - - IfcElement - - IfcElement - - - GlobalTradeItemNumber - The Global Trade Item Number (GTIN) is an identifier for trade items developed by GS1 (www.gs1.org). - - - - - - - Global Trade Item Number - - - - - - - ArticleNumber - Article number or reference that is be applied to a configured product according to a standard scheme for article number definition as defined by the manufacturer. It is often used as the purchasing number. - - - - - - - Article Number - - - - - - - ModelReference - The model number or designator of the product model (or product line) as assigned by the manufacturer of the manufactured item. - - - - - - - Model Reference - - - - - - - ModelLabel - The descriptive model name of the product model (or product line) as assigned by the manufacturer of the manufactured item. - - - - - - - Model Label - - - - - - - Manufacturer - The organization that manufactured and/or assembled the item. - - - - - - - Manufacturer - - - - - - - ProductionYear - The year of production of the manufactured item. - - - - - - - Production Year - - - - - - - AssemblyPlace - Enumeration defining where the assembly is intended to take place, either in a factory or on the building site. - - - - FACTORY - OFFSITE - SITE - OTHER - NOTKNOWN - UNSET - - - - FACTORY - - Factory - - - - - - - OFFSITE - - Offsite - - - - - - - SITE - - Site - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Assembly Place - - - - - - - - - - - - - Pset_MaterialCombustion - A set of extended material properties of products of combustion generated by elements typically used within the context of building services and flow distribution systems. - - - IfcMaterial - - IfcMaterial - - - SpecificHeatCapacity - Specific heat of the products of combustion: heat energy absorbed per temperature unit. - - - - - - - Specific Heat Capacity - - - - - - - N20Content - Nitrous oxide (N2O) content of the products of combustion. This is measured in weight of N2O per unit weight and is therefore unitless. - - - - - - - N20 Content - - - - - - - COContent - Carbon monoxide (CO) content of the products of combustion. This is measured in weight of CO per unit weight and is therefore unitless. - - - - - - - COContent - - - - - - - CO2Content - Carbon dioxide (CO2) content of the products of combustion. This is measured in weight of CO2 per unit weight and is therefore unitless. - - - - - - - CO2 Content - - - - - - - - - - - - - Pset_MaterialCommon - A set of general material properties. - - - IfcMaterial - - IfcMaterial - - - MolecularWeight - Molecular weight of material (typically gas). - - - - - - - Molecular Weight - - - - - - - Porosity - The void fraction of the total volume occupied by material (Vbr - Vnet)/Vbr. - - - - - - - Porosity - - - - - - - MassDensity - Material mass density. - - - - - - - Mass Density - - - - - - - - - - - - - Pset_MaterialConcrete - A set of extended mechanical properties related to concrete materials. - - - IfcMaterial/Concrete - - IfcMaterial/Concrete - - - CompressiveStrength - The compressive strength of the concrete. - - - - - - - Compressive Strength - - - - - - - MaxAggregateSize - The maximum aggregate size of the concrete. - - - - - - - Max Aggregate Size - - - - - - - AdmixturesDescription - Description of the admixtures added to the concrete mix. - - - - - - - Admixtures Description - - - - - - - Workability - Description of the workability of the fresh concrete defined according to local standards. - - - - - - - Workability - - - - - - - WaterImpermeability - Description of the water impermeability denoting the water repelling properties. - - - - - - - Water Impermeability - - - - - - - ProtectivePoreRatio - The protective pore ratio indicating the frost-resistance of the concrete. - - - - - - - Protective Pore Ratio - - - - - - - - - - - - - Pset_MaterialEnergy - A set of extended material properties for energy calculation purposes. - - - IfcMaterial - - IfcMaterial - - - ViscosityTemperatureDerivative - Viscosity temperature derivative. - - - - - - - Viscosity Temperature Derivative - - - - - - - MoistureCapacityThermalGradient - Thermal gradient coefficient for moisture capacity. Based on water vapor density. - - - - - - - Moisture Capacity Thermal Gradient - - - - - - - ThermalConductivityTemperatureDerivative - Thermal conductivity temperature derivative. - - - - - - - Thermal Conductivity Temperature Derivative - - - - - - - SpecificHeatTemperatureDerivative - Specific heat temperature derivative. - - - - - - - Specific Heat Temperature Derivative - - - - - - - VisibleRefractionIndex - Index of refraction (visible) defines the "bending" of the sola! r ray in the visible spectrum when it passes from one medium into another. - - - - - - - Visible Refraction Index - - - - - - - SolarRefractionIndex - Index of refraction (solar) defines the "bending" of the solar ray when it passes from one medium into another. - - - - - - - Solar Refraction Index - - - - - - - GasPressure - Fill pressure (e.g. for between-pane gas fills): the pressure exerted by a mass of gas confined in a constant volume. - - - - - - - Gas Pressure - - - - - - - - - - - - - Pset_MaterialFuel - A set of extended material properties of fuel energy typically used within the context of building services and flow distribution systems. - - - IfcMaterial - - IfcMaterial - - - CombustionTemperature - Combustion temperature of the material when air is at 298 K and 100 kPa. - - - - - - - Combustion Temperature - - - - - - - CarbonContent - The carbon content in the fuel. This is measured in weight of carbon per unit weight of fuel and is therefore unitless. - - - - - - - Carbon Content - - - - - - - LowerHeatingValue - Lower Heating Value is defined as the amount of energy released (MJ/kg) when a fuel is burned completely, and H2O is in vapor form in the combustion products. - - - - - - - Lower Heating Value - - - - - - - HigherHeatingValue - Higher Heating Value is defined as the amount of energy released (MJ/kg) when a fuel is burned completely, and H2O is in liquid form in the combustion products. - - - - - - - Higher Heating Value - - - - - - - - - - - - - Pset_MaterialHygroscopic - A set of hygroscopic properties of materials. - - - IfcMaterial - - IfcMaterial - - - UpperVaporResistanceFactor - The vapor permeability relationship of air/material (typically value > 1), measured in high relative humidity (typically in 95/50 % RH). - - - - - - - Upper Vapor Resistance Factor - - - - - - - LowerVaporResistanceFactor - The vapor permeability relationship of air/material (typically value > 1), measured in low relative humidity (typically in 0/50 % RH). - - - - - - - Lower Vapor Resistance Factor - - - - - - - IsothermalMoistureCapacity - Based on water vapor density. - - - - - - - Isothermal Moisture Capacity - - - - - - - VaporPermeability - The rate of water vapor transmission per unit area per unit of vapor pressure differential under test conditions. - - - - - - - Vapor Permeability - - - - - - - MoistureDiffusivity - Moisture diffusivity is a transport property that is frequently used in the hygrothermal analysis of building envelope components. - - - - - - - Moisture Diffusivity - - - - - - - - - - - - - Pset_MaterialMechanical - A set of mechanical material properties normally used for structural analysis purpose. It contains all properties which are independent of the actual material type. - - - IfcMaterial - - IfcMaterial - - - DynamicViscosity - A measure of the viscous resistance of the material. - - - - - - - Dynamic Viscosity - - - - - - - YoungModulus - A measure of the Young's modulus of elasticity of the material. - - - - - - - Young Modulus - - - - - - - ShearModulus - A measure of the shear modulus of elasticity of the material. - - - - - - - Shear Modulus - - - - - - - PoissonRatio - A measure of the lateral deformations in the elastic range. - - - - - - - Poisson Ratio - - - - - - - ThermalExpansionCoefficient - A measure of the expansion coefficient for warming up the material about one Kelvin. - - - - - - - Thermal Expansion Coefficient - - - - - - - - - - - - - Pset_MaterialOptical - A set of optical properties of materials. - - - IfcMaterial - - IfcMaterial - - - VisibleTransmittance - Transmittance at normal incidence (visible). Defines the fraction of the visible spectrum of solar radiation that passes through per unit area, perpendicular to the surface. - - - - - - - Visible Transmittance - - - - - - - SolarTransmittance - Transmittance at normal incidence (solar). Defines the fraction of solar radiation that passes through per unit area, perpendicular to the surface. - - - - - - - Solar Transmittance - - - - - - - ThermalIrTransmittance - Thermal IR transmittance at normal incidence. Defines the fraction of thermal energy that passes through per unit area, perpendicular to the surface. - - - - - - - Thermal Ir Transmittance - - - - - - - ThermalIrEmissivityBack - Thermal IR emissivity: back side. Defines the fraction of thermal energy emitted per unit area to "blackbody" at the same temperature, through the "back" side of the material. - - - - - - - Thermal Ir Emissivity Back - - - - - - - ThermalIrEmissivityFront - Thermal IR emissivity: front side. Defines the fraction of thermal energy emitted per unit area to "blackbody" at the same temperature, through the "front" side of the material. - - - - - - - Thermal Ir Emissivity Front - - - - - - - VisibleReflectanceBack - Reflectance at normal incidence (visible): back side. Defines the fraction of the solar ray in the visible spectrum that is reflected and not transmitted when the ray passes from one medium into another, at the "back" side of the other material, perpendicular to the surface. Dependent on material and surface characteristics. - - - - - - - Visible Reflectance Back - - - - - - - VisibleReflectanceFront - Reflectance at normal incidence (visible): front side. Defines the fraction of the solar ray in the visible spectrum that is reflected and not transmitted when the ray passes from one medium into another, at the "front" side of the other material, perpendicular to the surface. Dependent on material and surface characteristics. - - - - - - - Visible Reflectance Front - - - - - - - SolarReflectanceBack - Reflectance at normal incidence (solar): back side. Defines the fraction of the solar ray that is reflected and not transmitted when the ray passes from one medium into another, at the "back" side of the other material, perpendicular to the surface. Dependent on material and surface characteristics. - - - - - - - Solar Reflectance Back - - - - - - - SolarReflectanceFront - Reflectance at normal incidence (solar): front side. Defines the fraction of the solar ray that is reflected and not transmitted when the ray passes from one medium into another, at the "front" side of the other material, perpendicular to the surface. Dependent on material and surface characteristics. - - - - - - - Solar Reflectance Front - - - - - - - - - - - - - Pset_MaterialSteel - A set of extended mechanical properties related to steel (or other metallic and isotropic) materials. - - - IfcMaterial/Steel - - IfcMaterial/Steel - - - YieldStress - A measure of the yield stress (or characteristic 0.2 percent proof stress) of the material. - - - - - - - Yield Stress - - - - - - - UltimateStress - A measure of the ultimate stress of the material. - - - - - - - Ultimate Stress - - - - - - - UltimateStrain - A measure of the (engineering) strain at the state of ultimate stress of the material. - - - - - - - Ultimate Strain - - - - - - - HardeningModule - A measure of the hardening module of the material (slope of stress versus strain curve after yield range). - - - - - - - Hardening Module - - - - - - - ProportionalStress - A measure of the proportional stress of the material. It describes the stress before the first plastic deformation occurs and is commonly measured at a deformation of 0.01%. - - - - - - - Proportional Stress - - - - - - - PlasticStrain - A measure of the permanent displacement, as in slip or twinning, which remains after the stress has been removed. Currently applied to a strain of 0.2% proportional stress of the material. - - - - - - - Plastic Strain - - - - - - - Relaxations - Measures of decrease in stress over long time intervals resulting from plastic flow. Different relaxation values for different initial stress levels for a material may be given. It describes the time dependent relative relaxation value for a given initial stress level at constant strain. -Relating values are the "RelaxationValue". Related values are the "InitialStress" - - - - - - - - - - - - - Relaxations - - - - - - - - - - - - - Pset_MaterialThermal - A set of thermal material properties. - - - IfcMaterial - - IfcMaterial - - - SpecificHeatCapacity - Defines the specific heat of the material: heat energy absorbed per temperature unit. - - - - - - - Specific Heat Capacity - - - - - - - BoilingPoint - The boiling point of the material (fluid). - - - - - - - Boiling Point - - - - - - - FreezingPoint - The freezing point of the material (fluid). - - - - - - - Freezing Point - - - - - - - ThermalConductivity - The rate at which thermal energy is transmitted through the material. - - - - - - - Thermal Conductivity - - - - - - - - - - - - - Pset_MaterialWater - A set of extended material properties for of water typically used within the context of building services and flow distribution systems. - - - IfcMaterial - - IfcMaterial - - - IsPotable - If TRUE, then the water is considered potable. - - - - - - - Is Potable - - - - - - - Hardness - Water hardness as positive, multivalent ion concentration in the water (usually concentrations of calcium and magnesium ions in terms of calcium carbonate). - - - - - - - Hardness - - - - - - - AlkalinityConcentration - Maximum alkalinity concentration (maximum sum of concentrations of each of the negative ions substances measured as CaCO3). - - - - - - - Alkalinity Concentration - - - - - - - AcidityConcentration - Maximum CaCO3 equivalent that would neutralize the acid. - - - - - - - Acidity Concentration - - - - - - - ImpuritiesContent - Fraction of impurities such as dust to the total amount of water. This is measured in weight of impurities per weight of water and is therefore unitless. - - - - - - - Impurities Content - - - - - - - DissolvedSolidsContent - Fraction of the dissolved solids to the total amount of water. This is measured in weight of dissolved solids per weight of water and is therefore unitless. - - - - - - - Dissolved Solids Content - - - - - - - PHLevel - Maximum water PH in a range from 0-14. - - - - - - - PHLevel - - - - - - - - - - - - - Pset_MaterialWood - This is a collection of properties applicable to wood-based materials that specify kind and grade of material as well as moisture related parameters. - - - IfcMaterial/Wood - - IfcMaterial/Wood - - - Species - Wood species of a solid wood or laminated wood product. - - - - - - - Species - - - - - - - StrengthGrade - Grade with respect to mechanical strength and stiffness. - - - - - - - Strength Grade - - - - - - - AppearanceGrade - Grade with respect to visual quality. - - - - - - - Appearance Grade - - - - - - - Layup - Configuration of the lamination. - - - - - - - Layup - - - - - - - Layers - Number of layers. - - - - - - - Layers - - - - - - - Plies - Number of plies. - - - - - - - Plies - - - - - - - MoistureContent - Total weight of moisture relative to oven-dried weight of the wood. - - - - - - - Moisture Content - - - - - - - DimensionalChangeCoefficient - Weighted dimensional change coefficient, relative to 1% change in moisture content. - - - - - - - Dimensional Change Coefficient - - - - - - - ThicknessSwelling - Swelling ratio relative to board depth. - - - - - - - Thickness Swelling - - - - - - - - - - - - - Pset_MaterialWoodBasedBeam - This is a collection of mechanical properties applicable to wood-based materials for beam-like products, especially laminated materials like glulam and LVL. -Anisotropy of such materials is taken into account by different properties according to grain direction and load types. - -All values shall be given for a standardized service condition, a standardized load duration and a standardized reference size of the member according to local design codes. - -NOTE: In cases where mechanical material properties are graduated for different given reference sizes, separate instances of IfcExtendedMaterialProperties and IfcMaterial have to be used for each required graduation. Mechanically differing versions of a material are treated as different materials. - -References to the orientation of grain or lay-up correspond to material orientation given by geometrical or topological representation of element objects or types, especially IfcMemberType and IfcStructuralMember. - - - IfcMaterial/Wood - - IfcMaterial/Wood - - - ApplicableStructuralDesignMethod - Determines whether mechanical material properties are applicable to 'ASD' = allowable stress design (working stress design), 'LSD' = limit state design, or 'LRFD' = load and resistance factor design. - - - - - - - Applicable Structural Design Method - - - - - - - InPlane - Mechanical properties with respect to in-plane load, i.e. bending about the strong axis; tension zone of unbalanced layups is stressed in tension. - - - - YoungModulus - Elastic modulus, mean value, α=0°. - - - - - - - - - - YoungModulusMin - Elastic modulus, minimal value, α=0°. - - - - - - - - - - YoungModulusPerp - Elastic modulus, mean value, α=90°. - - - - - - - - - - YoungModulusPerpMin - Elastic modulus, minimal value, α=90°. - - - - - - - - - - ShearModulus - Shear modulus, mean value. - - - - - - - - - - ShearModulusMin - Shear modulus, minimal value. - - - - - - - - - - BendingStrength - Bending strength. - - - - - - - - - - TensileStrength - Tensile strength, α=0°. - - - - - - - - - - TensileStrengthPerp - Tensile strength, α=90°. - - - - - - - - - - CompStrength - Compressive strength, α=0°. - - - - - - - - - - CompStrengthPerp - Compressive strength, α=90°. - - - - - - - - - - RaisedCompStrengthPerp - Alternative value for compressive strength, α=90°, which may be used under material and code dependent conditions (e.g. if deformation is tolerable, or far from ends of the member); conditions should be stated in SELF\IfcProperty.Description. - - - - - - - - - - ShearStrength - Shear strength. - - - - - - - - - - TorsionalStrength - Shear strength in torsion. - - - - - - - - - - ReferenceDepth - Depth in bending for which the mechanical properties are valid; provided as a means to check the integrity of material assignment. - - - - - - - - - - InstabilityFactors - Defining values: slenderness ratios; defined values: either factors or divisors of the strength, depending on the design method (if <1: factors, if >1: divisors). - - - - - - - - - - - - - - - - - - In Plane - - - - - - - InPlaneNegative - Mechanical properties with respect to in-plane load, i.e. bending about the strong axis; compression zone of unbalanced layups is stressed in tension. - - - - YoungModulus - Elastic modulus, mean value, α=0°. - - - - - - - - - - YoungModulusMin - Elastic modulus, minimal value, α=0°. - - - - - - - - - - YoungModulusPerp - Elastic modulus, mean value, α=90°. - - - - - - - - - - YoungModulusPerpMin - Elastic modulus, minimal value, α=90°. - - - - - - - - - - ShearModulus - Shear modulus, mean value. - - - - - - - - - - ShearModulusMin - Shear modulus, minimal value. - - - - - - - - - - BendingStrength - Bending strength. - - - - - - - - - - TensileStrength - Tensile strength, α=0°. - - - - - - - - - - TensileStrengthPerp - Tensile strength, α=90°. - - - - - - - - - - CompStrength - Compressive strength, α=0°. - - - - - - - - - - CompStrengthPerp - Compressive strength, α=90°. - - - - - - - - - - RaisedCompStrengthPerp - Alternative value for compressive strength, α=90°, which may be used under material and code dependent conditions (e.g. if deformation is tolerable, or far from ends of the member); conditions should be stated in SELF\IfcProperty.Description. - - - - - - - - - - ShearStrength - Shear strength. - - - - - - - - - - TorsionalStrength - Shear strength in torsion. - - - - - - - - - - ReferenceDepth - Depth in bending for which the mechanical properties are valid; provided as a means to check the integrity of material assignment. - - - - - - - - - - InstabilityFactors - Defining values: slenderness ratios; defined values: either factors or divisors of the strength, depending on the design method (if <1: factors, if >1: divisors). - - - - - - - - - - - - - - - - - - In Plane Negative - - - - - - - OutOfPlane - Mechanical properties with respect to out-of-plane load, i.e. bending about the weak axis. - - - - YoungModulus - Elastic modulus, mean value, α=0°. - - - - - - - - - - YoungModulusMin - Elastic modulus, minimal value, α=0°. - - - - - - - - - - YoungModulusPerp - Elastic modulus, mean value, α=90°. - - - - - - - - - - YoungModulusPerpMin - Elastic modulus, minimal value, α=90°. - - - - - - - - - - ShearModulus - Shear modulus, mean value. - - - - - - - - - - ShearModulusMin - Shear modulus, minimal value. - - - - - - - - - - BendingStrength - Bending strength. - - - - - - - - - - TensileStrength - Tensile strength, α=0°. - - - - - - - - - - TensileStrengthPerp - Tensile strength, α=90°. - - - - - - - - - - CompStrength - Compressive strength, α=0°. - - - - - - - - - - CompStrengthPerp - Compressive strength, α=90°. - - - - - - - - - - RaisedCompStrengthPerp - Alternative value for compressive strength, α=90°, which may be used under material and code dependent conditions (e.g. if deformation is tolerable, or far from ends of the member); conditions should be stated in SELF\IfcProperty.Description. - - - - - - - - - - ShearStrength - Shear strength. - - - - - - - - - - TorsionalStrength - Shear strength in torsion. - - - - - - - - - - ReferenceDepth - Depth in bending for which the mechanical properties are valid; provided as a means to check the integrity of material assignment. - - - - - - - - - - InstabilityFactors - Defining values: slenderness ratios; defined values: either factors or divisors of the strength, depending on the design method (if <1: factors, if >1: divisors). - - - - - - - - - - - - - - - - - - Out Of Plane - - - - - - - - - - - - - Pset_MaterialWoodBasedPanel - This is a collection of mechanical properties related to wood-based materials for panel-like products like plywood or OSB. The propositions given above for wood-based beam materials with respect to anisotropy, strength graduation according to element sizes (especially panel thickness) apply accordingly. - - - IfcMaterial/Wood - - IfcMaterial/Wood - - - ApplicableStructuralDesignMethod - Determines whether mechanical material properties are applicable to 'ASD' = allowable stress design (working stress design), 'LSD' = limit state design, or 'LRFD' = load and resistance factor design. - - - - - - - Applicable Structural Design Method - - - - - - - InPlane - Mechanical properties with respect to in-plane load, i.e. for function as a membrane. - - - - YoungModulusBending - Defining values: α; defined values: elastic modulus in bending. - - - - - - - - - - - - - - - - YoungModulusTension - Defining values: α; defined values: elastic modulus in tension. - - - - - - - - - - - - - - - - YoungModulusCompression - Elastic modulus in compression. - - - - - - - - - - ShearModulus - Shear modulus. - - - - - - - - - - BendingStrength - Defining values: α; defined values: bending strength. - - - - - - - - - - - - - - - - CompressiveStrength - Defining values: α; defined values: compressive strength. - - - - - - - - - - - - - - - - TensileStrength - Defining values: α; defined values: tensile strength. - - - - - - - - - - - - - - - - ShearStrength - Defining values: α; defined values: shear strength. - - - - - - - - - - - - - - - - BearingStrength - Defining values: α; defined values: bearing strength of bolt holes, i.e. intrados pressure. - - - - - - - - - - - - - - - - RaisedCompressiveStrength - Alternative value for compressive strength which may be used under material and code dependent conditions (e.g. if deformation is tolerable, or far from ends of the member); conditions should be stated in SELF\IfcProperty.Description. - - - - - - - - - - ReferenceDepth - Depth in bending for which the mechanical properties are valid; provided as a means to check the integrity of material assignment. - - - - - - - - - - - - In Plane - - - - - - - OutOfPlane - Mechanical properties with respect to out-of-plane load, i.e. for function as a plate; tension zone of unbalanced layups is stressed in tension. - - - - YoungModulusBending - Defining values: α; defined values: elastic modulus in bending. - - - - - - - - - - - - - - - - YoungModulusTension - Defining values: α; defined values: elastic modulus in tension. - - - - - - - - - - - - - - - - YoungModulusCompression - Elastic modulus in compression. - - - - - - - - - - ShearModulus - Shear modulus. - - - - - - - - - - BendingStrength - Defining values: α; defined values: bending strength. - - - - - - - - - - - - - - - - CompressiveStrength - Defining values: α; defined values: compressive strength. - - - - - - - - - - - - - - - - TensileStrength - Defining values: α; defined values: tensile strength. - - - - - - - - - - - - - - - - ShearStrength - Defining values: α; defined values: shear strength. - - - - - - - - - - - - - - - - BearingStrength - Defining values: α; defined values: bearing strength of bolt holes, i.e. intrados pressure. - - - - - - - - - - - - - - - - RaisedCompressiveStrength - Alternative value for compressive strength which may be used under material and code dependent conditions (e.g. if deformation is tolerable, or far from ends of the member); conditions should be stated in SELF\IfcProperty.Description. - - - - - - - - - - ReferenceDepth - Depth in bending for which the mechanical properties are valid; provided as a means to check the integrity of material assignment. - - - - - - - - - - - - Out Of Plane - - - - - - - OutOfPlaneNegative - Mechanical properties with respect to out-of-plane load i.e. for function as a plate; compression zone of unbalanced layups is stressed in tension. - - - - YoungModulusBending - Defining values: α; defined values: elastic modulus in bending. - - - - - - - - - - - - - - - - YoungModulusTension - Defining values: α; defined values: elastic modulus in tension. - - - - - - - - - - - - - - - - YoungModulusCompression - Elastic modulus in compression. - - - - - - - - - - ShearModulus - Shear modulus. - - - - - - - - - - BendingStrength - Defining values: α; defined values: bending strength. - - - - - - - - - - - - - - - - CompressiveStrength - Defining values: α; defined values: compressive strength. - - - - - - - - - - - - - - - - TensileStrength - Defining values: α; defined values: tensile strength. - - - - - - - - - - - - - - - - ShearStrength - Defining values: α; defined values: shear strength. - - - - - - - - - - - - - - - - BearingStrength - Defining values: α; defined values: bearing strength of bolt holes, i.e. intrados pressure. - - - - - - - - - - - - - - - - RaisedCompressiveStrength - Alternative value for compressive strength which may be used under material and code dependent conditions (e.g. if deformation is tolerable, or far from ends of the member); conditions should be stated in SELF\IfcProperty.Description. - - - - - - - - - - ReferenceDepth - Depth in bending for which the mechanical properties are valid; provided as a means to check the integrity of material assignment. - - - - - - - - - - - - Out Of Plane Negative - - - - - - - - - - - - - Pset_MechanicalFastenerAnchorBolt - Properties common to different types of anchor bolts. - - - IfcMechanicalFastener/ANCHORBOLT - - IfcMechanicalFastener/ANCHORBOLT - - - AnchorBoltLength - The length of the anchor bolt. - - - - - - - Anchor Bolt Length - 長さ - 길이 - - - - アンカーボルトの長さ。 - 앵커 볼트의 길이 - - - - AnchorBoltDiameter - The nominal diameter of the anchor bolt bar(s). - - - - - - - Anchor Bolt Diameter - 直径 - 지름 - - - - アンカーボルトの直径。 - 앵커 볼트의 공칭 직경 - - - - AnchorBoltThreadLength - The length of the threaded part of the anchor bolt. - - - - - - - Anchor Bolt Thread Length - 나사부 길이 - - - - 앵커 볼트의 나사 부분의 길이 - - - - AnchorBoltProtrusionLength - The length of the protruding part of the anchor bolt. - - - - - - - Anchor Bolt Protrusion Length - 돌출부 길이 - - - - 앵커 볼트의 돌출 부분의 길이 - - - - - - アンカーボルトの共通プロパティ。 - - - - - Pset_MechanicalFastenerBolt - Properties related to bolt-type fasteners. The properties of a whole set with bolt, washers and nut may be provided. Note, it is usually not necessary to transmit these properties in case of standardized bolts. Instead, the standard is referred to. - - - IfcMechanicalFastener/BOLT - - IfcMechanicalFastener/BOLT - - - ThreadDiameter - Nominal diameter of the thread, if different from the bolt's overall nominal diameter - - - - - - - Thread Diameter - - - - - - - ThreadLength - Nominal length of the thread - - - - - - - Thread Length - - - - - - - NutsCount - Count of nuts to be mounted on one bolt - - - - - - - Nuts Count - - - - - - - WashersCount - Count of washers to be mounted on one bolt - - - - - - - Washers Count - - - - - - - HeadShape - Shape of the bolt's head, e.g. 'Hexagon', 'Countersunk', 'Cheese' - - - - - - - Head Shape - - - - - - - KeyShape - If applicable, shape of the head's slot, e.g. 'Slot', 'Allen' - - - - - - - Key Shape - - - - - - - NutShape - Shape of the nut, e.g. 'Hexagon', 'Cap', 'Castle', 'Wing' - - - - - - - Nut Shape - - - - - - - WasherShape - Shape of the washers, e.g. 'Standard', 'Square' - - - - - - - Washer Shape - - - - - - - - - - - - - Pset_MedicalDeviceTypeCommon - Medical device type common attributes. - - - IfcMedicalDevice - - IfcMedicalDevice - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - - - 医療機器に関する共通プロパティ属性設定。 - - - - - Pset_MemberCommon - Properties common to the definition of all occurrences of IfcMember. - - - IfcMember - - IfcMember - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as "construction type". It should be provided as an alternative to the name of the "object type", if the software does not support object types. - - - - - - - Bauteiltyp - Reference - Reference - 参照記号 - 参考号 - - - Bezeichnung zur Zusammenfassung gleichartiger Bauteile zu einem Bauteiltyp (auch Konstruktionstyp genannt). Alternativ zum Namen des "Typobjekts", insbesondere wenn die Software keine Typen unterstützt. - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1") pour désigner un "type de construction". Une alternative au nom d'un objet type lorsque les objets types ne sont pas gérés par le logiciel. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 若未采用已知的分类系统,则该属性为该项目中该类型构件的参考编号(例如,类型A-1)。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Status - Statut - 状態 - - - Status bzw. Phase des Bauteils insbesondere beim Bauen im Bestand. "Neu" (new) neues Bauteil als Ergänzung, "Bestand" (existing) bestehendes Bauteil, dass erhalten bleibt, "Abbruch" (demolish) Bauteil, das abgebrochen wird, "Temporär" (temporary) Bauteil und andere Bauelemente, die vorübergehend eingebaut werden (wie Abstützungen, etc.) - - Statut de l'élément, principalement utilisé dans les projets de rénovation et de réhabilitation. Le statut a pour valeur NOUVEAU pour un nouvel élément, EXISTANT pour un élément existant qui est conservé, DEMOLI pour un élément existant à démolir et TEMPORAIRE pour un élément temporaire (comme une structure support provisoire). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - Span - Clear span for this object. -The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. - - - - - - - Spannweite - Span - PorteeLibre - 全長 - 跨度 - - - German-description-2 - - Portée libre. Cette propriété est donnée en complément de la représentation de la forme de l'élément et des paramètres géométriques qui la déterminent. En cas d'incohérence entre ces paramètres géométriques et cette propriété, ce sont les paramètres géométriques qui priment. - このオブジェクトの全長。 - 该对象的净跨度。 -该属性所提供的形状信息是对内部形状描述和几何参数的补充。如果几何参数与该属性所提供的形状属性不符,应以几何参数为准。对CAD等几何编辑程序,该属性应为只写类型。 - - - - Slope - Slope angle - relative to horizontal (0.0 degrees). -The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. - - - - - - - Neigungswinkel - Slope - Inclinaison - 傾斜 - 坡度 - - - German-description-3 - - Angle d'inclinaison avec l'horizontale (0 degrés). Cette propriété est donnée en complément de la représentation de la forme de l'élément et des paramètres géométriques qui la déterminent. En cas d'incohérence entre ces paramètres géométriques et cette propriété, ce sont les paramètres géométriques qui priment. - 傾斜角度。水平を0度とする。 - 相对于水平(0.0度)方向的坡度角。 -该属性所提供的形状信息是对内部形状描述和几何参数的补充。如果几何参数与该属性所提供的形状属性不符,应以几何参数为准。对CAD等几何编辑程序,该属性应为只写类型。 - - - - Roll - Rotation against the longitudinal axis - relative to the global Z direction for all members that are non-vertical in regard to the global coordinate system (Profile direction equals global Z is Roll = 0.) -The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. -Note: new property in IFC4. - - - - - - - Kippwinkel - Roll - RotationAutourAxeLongitudinal - 回転 - 转角 - - - German-description-4 - - Rotation autour de l'axe longitudinal - relativement à l'axe Z pour toutes les membrures qui ne sont pas verticales relativement au repère absolu (la direction du profil est celle de l'axe Z si la valeur de la propriété est 0). Cette propriété est donnée en complément de la représentation de la forme de l'élément et des paramètres géométriques qui la déterminent. En cas d'incohérence entre ces paramètres géométriques et cette propriété, ce sont les paramètres géométriques qui priment. Note : nouvelle propriété de la version IFC2x4. - オブジェクトの長軸に対する回転。 - 相对于纵轴的旋转角。对全局坐标系中的非垂直构件,该属性为相对于Z轴的角度。(若轮廓方向在Z轴上,则转角为0。) -该属性所提供的形状信息是对内部形状描述和几何参数的补充。如果几何参数与该属性所提供的形状属性不符,应以几何参数为准。对CAD等几何编辑程序,该属性应为只写类型。 -注:IFC2x4新添属性 - - - - IsExternal - Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building. - - - - - - - Außenbauteil - Is External - EstExterieur - 外部区分 - 是否外部构件 - - - Angabe, ob dieses Bauteil ein Aussenbauteil ist (JA) oder ein Innenbauteil (NEIN). Als Aussenbauteil grenzt es an den Aussenraum (oder Erdreich, oder Wasser). - - Indique si l'élément est conçu pour être utilisé à l'extérieur (VRAI) ou non (FAUX). Si VRAI, c'est un élément extérieur qui donne sur l'extérieur du bâtiment. - 外部の部材かどうかを示すブーリアン値。もしTRUEの場合、外部の部材で建物の外側に面している。 - 表示该图元是否设计为外部构件。若是,则该图元为外部图元,朝向建筑物的外部。 - - - - ThermalTransmittance - Thermal transmittance coefficient (U-Value) of a material. -Here the total thermal transmittance coefficient through the member within the direction of the thermal flow (including all materials). -Note: new property in IFC4. - - - - - - - U-Wert - Thermal Transmittance - TransmissionThermique - 熱貫流率 - 导热系数 - - - Wärmedurchgangskoeffizient (U-Wert) der Materialschichten. -Hier der Gesamtwärmedurchgangskoeffizient des Balkens (in Richtung des Wärmeflusses), angegeben ohne den inneren und äußeren Wärmeübergangswiderstand. - - Coefficient de transmission thermique surfacique (U). C'est le coefficient global de transmission thermique à travers la membrure dans la direction du flux thermique (tous matériaux inclus). Nouvelle propriété de la version 2x4. - 熱貫流率U値。ここではメンバーオブジェクトを通した熱移動の方向における全体の熱還流率を示す。 - 材料的导热系数(U值)。 -表示该构件在传热方向上的整体导热系数(包括所有材料)。 -注:IFC2x4新添属性 - - - - LoadBearing - Indicates whether the object is intended to carry loads (TRUE) or not (FALSE). - - - - - - - Tragendes Bauteil - Load Bearing - Porteur - 耐力部材 - 是否承重 - - - Angabe, ob dieses Bauteil tragend ist (JA) oder nichttragend (NEIN) - - Indique si l'objet est censé porter des charges (VRAI) ou non (FAUX). - 荷重に関係している部材かどうかを示すブーリアン値。 - 表示该对象是否需要承重。 - - - - FireRating - Fire rating for this object. -It is given according to the national fire safety classification. - - - - - - - Feuerwiderstandsklasse - Fire Rating - ResistanceAuFeu - 耐火等級 - 防火等级 - - - Feuerwiderstandasklasse gemäß der nationalen oder regionalen Brandschutzverordnung. - - Classement au feu de l'élément donné selon la classification nationale de sécurité incendie. - 主要な耐火等級。関連する建築基準法、消防法などの国家基準を参照。 - 该构件的防火等级。 -该属性的依据为国家防火安全分级。 - - - - - - Définition de l'IAI : propriétés communes à la définition de toutes les instances de la classe IfcMember - IfcMemberオブジェクトに関する共通プロパティセット定義。 - 所有IfcMember实例的定义中通用的属性。 - - - - - Pset_MotorConnectionTypeCommon - Common properties for motor connections. HISTORY: Added in IFC4. - - - IfcMotorConnection - - IfcMotorConnection - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照 - 참조 - - - - 当該プロジェクトで定義する形式の参照ID(例:A-1)、承認された分類に存在しないときに使用される。 - 해당 프로젝트에 정의된 형식의 참조 ID (예 : A-1) 승인된 분류에 존재하지 않을 때 사용된다. - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - - - モーター接続の共通プロパティ。 -IFC4にて追加。 - - - - - Pset_OpeningElementCommon - Properties common to the definition of all instances of IfcOpeningElement. - - - IfcOpeningElement - - IfcOpeningElement - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). Used to store the non-classification driven internal construction type. - - - - - - - Referenz ID - Reference - Reference - 参照記号 - 참조ID - - - Wird verwendet, wenn keine allgemein anerkanntes Klassifizierungssystem angewandt wird. - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1"). Utilisé pour enregistrer un type sans recourir à une classification. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 프로젝트의 참조 ID (예 : A-1). 분류 코드가 아닌 내부에서 사용되는 프로젝트 형식으로 사용됩니다. - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Status - Statut - 状態 - - - Status bzw. Phase des Bauteils insbesondere beim Bauen im Bestand. "Neu" (new) neues Bauteil als Ergänzung, "Bestand" (existing) bestehendes Bauteil, dass erhalten bleibt, "Abbruch" (demolish) Bauteil, das abgebrochen wird, "Temporär" (temporary) Bauteil und andere Bauelemente, die vorübergehend eingebaut werden (wie Abstützungen, etc.) - - Statut de l'élément, principalement utilisé dans les projets de rénovation et de réhabilitation. Le statut a pour valeur NOUVEAU pour un nouvel élément, EXISTANT pour un élément existant qui est conservé, DEMOLI pour un élément existant à démolir et TEMPORAIRE pour un élément temporaire (comme une structure support provisoire). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - Purpose - Indication of the purpose for that opening, e.g. 'ventilation', 'access', etc. - - - - - - - Purpose - Motif - 目的 - - - - Indication du motif de l'ouverture (ventilation, accès, etc.). - 開口の目的を示す文字列。例:"ventilation"(換気)、"access"(通行)など。 - - - - FireExit - Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE). -Here whether the space (in case of e.g., a corridor) is designed to serve as an exit space, e.g., for fire escape purposes. - - - - - - - Fire Exit - Sortie de secours - 非常口区分 - - - - Indique si cet objet est conçu pour servir de sortie en cas d'incendie (VRAI) ou non (FAUX). - このオブジェクト(開口)が火災の場合に出口として使われるように設計されているかどうかを示すブーリアン値。(TRUE)はい、(FALSE)いいえ。 -ここに、空間(例えば廊下)は、例えば火災避難目的のために出口空間として使われるよう設計されているかどうか。 - - - - ProtectedOpening - Indication whether the opening is considered to be protected under fire safety considerations. If (TRUE) it counts as a protected opening under the applicable building code, (FALSE) otherwise. - - - - - - - Protected Opening - Ouverture avec protection incendie - 保護 - - - - Indique si l'ouverture fait l'objet d'une protection incendie. Si (VRAI) elle est considérée comme une ouverture avec protection conformément à la règlementation applicable, (FAUX) sinon. - 開港が安全性を考慮した保護機能があるかどうかを示すブーリアン値。適用される建築基準などにより保護されている場合(TRUE)、そうではない場合(FALSE)となる。 - - - - - Property Set Definition in German - - Définition de l'IAI : propriétés communes à la définition de toutes les occurrences de la classe IfcOpeningElement - IfcOpeningElementに関する共通プロパティセット定義。 - - - - - Pset_OutletTypeCommon - Common properties for different outlet types. - - - IfcOutlet - - IfcOutlet - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照 - 참조 - - - - 当該プロジェクトで定義する形式の参照ID(例:A-1)、承認された分類に存在しないときに使用される。 - 해당 프로젝트에 정의된 형식의 참조 ID (예 : A-1) 승인된 분류에 존재하지 않을 때 사용된다 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - IsPluggableOutlet - Indication of whether the outlet accepts a loose plug connection (= TRUE) or whether it is directly connected (= FALSE) or whether the form of connection has not yet been determined (= UNKNOWN). - - - - - - - Is Pluggable Outlet - プラグ接続可否 - 플러그 여부 - - - - 差込口が緩いプラグ接続を認めるか、それが直接接続されるかどうか、あるいは接続の形式がまだ決定されていないかを指示する。 - 슬롯이 느슨한 플러그를 인정하거나 그것에 직접 연결되는지 여부, 연결 형식이 아직 결정되지 않았는지 설명한다 - - - - NumberOfSockets - The number of sockets that may be connected. In case of inconsistency, sockets defined on ports take precedence. - - - - - - - Number Of Sockets - - - - - - - - - 異なる差込口タイプの共通プロパティ。 - - - - - Pset_OutsideDesignCriteria - Outside air conditions used as the basis for calculating thermal loads at peak conditions, as well as the weather data location from which these conditions were obtained. HISTORY: New property set in IFC Release 1.0. - - - IfcBuilding - - IfcBuilding - - - HeatingDryBulb - Outside dry bulb temperature for heating design. - - - - - - - Heating Dry Bulb - 暖房用設計外気乾球温度 - 난방 설계 외기 건구 온도 - - - - 暖房用設計用外気乾球温度。 - 난방 설계 외기 건구 온도 - - - - HeatingWetBulb - Outside wet bulb temperature for heating design. - - - - - - - Heating Wet Bulb - 暖房用設計外気湿球温度 - 난방 설계 외기 습구온도 - - - - 暖房用設計用外気湿球温度。 - 난방 설계 외기 습구온도 - - - - HeatingDesignDay - The month, day and time that has been selected for the heating design calculations. - - - - - - - Heating Design Day - 暖房設計基準日 - 난방 설계 기준일 - - - - 暖房設計用気象データの日付。 - 난방 설계 기상 데이터의 날짜 - - - - CoolingDryBulb - Outside dry bulb temperature for cooling design. - - - - - - - Cooling Dry Bulb - 冷房用設計外気乾球温度 - 냉방용 설계 외기건구 온도 - - - - 冷房用設計用外気乾球温度。 - 냉방용 설계 외기건구 온도 - - - - CoolingWetBulb - Outside wet bulb temperature for cooling design. - - - - - - - Cooling Wet Bulb - 冷房用設計外気湿球温度 - 냉방용 설계외기 습구온도 - - - - 冷房用設計用外気湿球温度。 - 냉방용 설계외기 습구온도 - - - - CoolingDesignDay - The month, day and time that has been selected for the cooling design calculations. - - - - - - - Cooling Design Day - 冷房設計基準日 - 냉방설계 기준일 - - - - 冷房設計用気象データの日時(月、日、時刻)。 - 냉방 설계 기상 데이터의 시간 (월, 일, 시간). - - - - WeatherDataStation - The site weather data station description or reference to the data source from which weather data was obtained for use in calculations. - - - - - - - Weather Data Station - 気象台所在地 - 기상대 위치 - - - - 空調負荷計算時使用する気象データの気象台所在地。 - 공조 부하 계산시 사용하는 기상 데이터 기상대 위치. - - - - WeatherDataDate - The date for which the weather data was gathered. - - - - - - - Weather Data Date - 気象データ - 기상데이터 - - - - 気象台所在地の気象データ。 - 기상대 지역의 기상 데이터입니다. - - - - BuildingThermalExposure - The thermal exposure expected by the building based on surrounding site conditions. - - - - LIGHT - MEDIUM - HEAVY - NOTKNOWN - UNSET - - - - LIGHT - - Light - - - - - - - MEDIUM - - Medium - - - - - - - HEAVY - - Heavy - - - - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Building Thermal Exposure - 周囲環境からの熱放射強度 - 주위환경에서 열의 방사강도 - - - - 周囲環境から建物への熱放射強度。 - 주위 환경​​에서 건물의 열 방사 강도. - - - - PrevailingWindDirection - The prevailing wind angle direction measured from True North (0 degrees) in a clockwise direction. - - - - - - - Prevailing Wind Direction - 卓越風の風向 - 탁월한 방람의 풍향 - - - - 卓越風の風向、真北は0°、時計回り。 - 탁월한 바람의 풍향, 북쪽은 0 ° 시계 방향. - - - - PrevailingWindVelocity - The design wind velocity coming from the direction specified by the PrevailingWindDirection attribute. - - - - - - - Prevailing Wind Velocity - 卓越風の風速 - 탁월한 바람의 풍속 - - - - PrevailingWindDirection 属性に示された風向から来た卓越風の風速。 - PrevailingWindDirection 속성에 지정된 풍향 온 탁월한 바람 바람. - - - - - - ピーク時熱負荷を計算するために使用する所在地の外気条件。履歴:IFC1.0に定義された新属性。 - - - - - Pset_PackingInstructions - Packing instructions are specific instructions relating to the packing that is required for an artifact in the event of a move (or transport). - - - IfcTask/MOVE - - IfcTask/MOVE - - - PackingCareType - Identifies the predefined types of care that may be required when handling the artefact during a move where: - -Fragile: artefact may be broken during a move through careless handling. -HandleWithCare: artefact may be damaged during a move through careless handling. - - - - FRAGILE - HANDLEWITHCARE - OTHER - NOTKNOWN - UNSET - - - - FRAGILE - - Fragile - - - - - - - HANDLEWITHCARE - - Handle With Care - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Packing Care Type - 荷造り注意タイプ - - - - 引越しの最中の品物の取り扱いに要求される、あらかじめ定義されている注意タイプの識別子: - -Fragile: 注意深い取り扱いをしないと壊れる品物。 -HandleWithCare: 注意深い取り扱いでしないと損害を受ける品物。 - - - - WrappingMaterial - Special requirements for material used to wrap an artefact. - - - - - Wrapping Material - 包装材料 - - - - 品物の包装に使用される材料に関する特記事項。 - - - - ContainerMaterial - Special requirements for material used to contain an artefact. - - - - - Container Material - コンテナー材料 - - - - 品物の収容するのに使用される材料に関する特記事項。 - - - - SpecialInstructions - Special instructions for packing. - - - - - - - Special Instructions - 特記事項 - - - - 荷造りに関する特記事項。 - - - - - - 引越しの際の品物(IfcElement)に対して要求される荷造り指示に関するプロパティセット定義。 - - - - - Pset_Permit - A permit is a document that allows permission to gain access to an area or carry out work in a situation where security or other access restrictions apply. -HISTORY: IFC4 EndDate added. PermitType, PermitDuration, StartTime and EndTime are deleted. - - - IfcPermit - - IfcPermit - - - EscortRequirement - Indicates whether or not an escort is required to accompany persons carrying out a work order at or to/from the place of work (= TRUE) or not (= FALSE). - -NOTE - There are many instances where escorting is required, particularly in a facility that has a high security rating. Escorting may require that persons are escorted to and from the place of work. Alternatively, it may involve the escort remaining at the place of work at all times. - - - - - - - Escort Requirement - - - - - - - StartDate - Date and time from which the permit becomes valid. - - - - - - - Start Date - - - - - - - EndDate - Date and time at which the permit ceases to be valid. - - - - - - - End Date - - - - - - - SpecialRequirements - Any additional special requirements that need to be included in the permit to work. - -NOTE - Additional permit requirements may be imposed according to the nature of the facility at which the work is carried out. For instance, in clean areas, special clothing may be required whilst in corrective institutions, it may be necessary to check in and check out tools that will be used for work as a safety precaution. - - - - - - - Special Requirements - - - - - - - - - - - - - Pset_PileCommon - Properties common to the definition of all occurrences of IfcPile. - - - IfcPile - - IfcPile - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). - - - - - - - Reference - 参照記号 - - - - 当プロジェクトにおけるこの指定型式のためのリファレンスID。(たとえは、'A-1'型) - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - LoadBearing - - - - - - - - Tragendes Bauteil - Load Bearing - Porteur - 耐力部材 - - - Angabe, ob dieses Bauteil tragend ist (JA) oder nichttragend (NEIN) - Indicates whether the object is intended to carry loads (TRUE) or not (FALSE). - Indique si l'objet est censé porter des charges (VRAI) ou non (FAUX). - 荷重に関係している部材かどうかを示すブーリアン値。 - - - - - - 生成されたすべてのIfcPileの定義に共通するプロパティ。 - - - - - Pset_PipeConnectionFlanged - This property set is used to define the specifics of a flanged pipe connection used between occurrences of pipe segments and fittings. - - - IfcPipeSegment - - IfcPipeSegment - - - FlangeTable - Designation of the standard table to which the flange conforms. - - - - - - - Flange Table - フランジ基準 - - - - フランジ形状の名称基準 - - - - FlangeStandard - Designation of the standard describing the flange table. - - - - - - - Flange Standard - フランジ規格 - - - - フランジ規格を記述している基準 - - - - BoreSize - The nominal bore of the pipe flange. - - - - - - - Bore Size - フランジの内径のサイズ - - - - フランジの呼び径 - - - - FlangeDiameter - Overall diameter of the flange. - - - - - - - Flange Diameter - フランジの直径 - - - - フランジの全直径 - - - - FlangeThickness - Thickness of the material from which the pipe bend is constructed. - - - - - - - Flange Thickness - フランジの厚さ - - - - パイプをつなぐ材料の厚み - - - - NumberOfBoltholes - Number of boltholes in the flange. - - - - - - - Number Of Boltholes - ボルト穴の数 - - - - フランジにあるボルト穴の数 - - - - BoltSize - Size of the bolts securing the flange. - - - - - - - Bolt Size - ボルトの大きさ - - - - フランジを締めるボルトの大きさ - - - - BoltholePitch - Diameter of the circle along which the boltholes are placed. - - - - - - - Bolthole Pitch - ボルト穴ピッチ - - - - ボルト穴がある円の直径 - - - - - - - - - - Pset_PipeFittingOccurrence - Pipe segment occurrence attributes attached to an instance of IfcPipeSegment. - - - IfcPipeFitting - - IfcPipeFitting - - - InteriorRoughnessCoefficient - The interior roughness coefficient of the pipe segment. - - - - - - - Interior Roughness Coefficient - 内部粗度係数 - - - - 配管部の内部粗度係数 - - - - Color - The color of the pipe segment. - -Note: This is typically used only for plastic pipe segments. However, it may be used for any pipe segments with a painted surface which is not otherwise specified as a covering. - - - - - - - Color - - - - - 配管部の内部粗度係数 記:プラスチック配管にのみ使われる。保護のためではない塗装された表面を持つ配管にも使われる。 - - - - - - - - - - Pset_PipeFittingPHistory - Pipe fitting performance history common attributes. - - - IfcPipeFitting - - IfcPipeFitting - - - LossCoefficient - Dimensionless loss coefficient used for calculating fluid resistance representing the ratio of total pressure loss to velocity pressure at a referenced cross-section. - - - - - Loss Coefficient - 損失係数 - - - - 無次元数的な損失係数で、ある断面において、動圧に対する全圧損失の割合を表す流れ抵抗を計算するのに使われる。 - - - - FlowrateLeakage - Leakage flowrate versus pressure difference. - - - - - Flowrate Leakage - 漏洩流量 - - - - 漏洩量と圧力差の関係 - - - - - - - - - - Pset_PipeFittingTypeBend - Pipe fitting type attributes for bend shapes. - - - IfcPipeFitting/BEND - - IfcPipeFitting/BEND - - - BendAngle - The change of direction of flow. - - - - - - - Bend Angle - 曲がり角度 - - - - 流れの方向を変える - - - - BendRadius - The radius of bending if circular arc or zero if sharp bend. - - - - - - - Bend Radius - 曲率半径 - - - - 円弧の曲率半径? - - - - - - - - - - Pset_PipeFittingTypeCommon - Pipe fitting type common attributes. - - - IfcPipeFitting - - IfcPipeFitting - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - PressureClass - The test or rated pressure classification of the fitting. - - - - - - - Pressure Class - 圧力分類 - - - - 継ぎ手接合部の圧力等級? - - - - PressureRange - Allowable maximum and minimum working pressure (relative to ambient pressure). - - - - - - - Pressure Range - 圧力範囲 - - - - 許容できる最大/最小管内圧力(周囲圧力に比較して) - - - - TemperatureRange - Allowable maximum and minimum temperature. - - - - - - - Temperature Range - 温度範囲 - - - - 許容できる最大/最小温度 - - - - FittingLossFactor - A factor that determines the pressure loss due to friction through the fitting. - - - - - - - Fitting Loss Factor - 継ぎ手接合部損失係数 - - - - 接合部を通過する際の摩擦による圧力損失を決める係数 - - - - - - - - - - Pset_PipeFittingTypeJunction - Pipe fitting type attributes for junction shapes. - - - IfcPipeFitting/JUNCTION - - IfcPipeFitting/JUNCTION - - - JunctionType - The type of junction. TEE=3 ports, CROSS = 4 ports. - - - - TEE - CROSS - OTHER - NOTKNOWN - UNSET - - - - TEE - - Tee - - - - - - - CROSS - - Cross - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Junction Type - 継ぎ手タイプ - - - - 接合のタイプ (T継ぎ手は3本 十字継ぎ手は4本) - - - - JunctionLeftAngle - The change of direction of flow for the left junction. - - - - - - - Junction Left Angle - 左継ぎ手角度 - - - - 左継ぎ手の流れの方向の変化 - - - - JunctionLeftRadius - The radius of bending for the left junction. - - - - - - - Junction Left Radius - 左継ぎ手半径 - - - - 左継ぎ手の曲がりの半径 - - - - JunctionRightAngle - The change of direction of flow for the right junction where 0 indicates straight segment. - - - - - - - Junction Right Angle - 右継ぎ手角度 - - - - 右継ぎ手の流れの方向の変化 - - - - JunctionRightRadius - The radius of bending for the right junction where 0 indicates sharp bend. - - - - - - - Junction Right Radius - 右継ぎ手半径 - - - - 右継ぎ手の曲がりの半径(ゼロは鋭い曲がりを意味する) - - - - - - - - - - Pset_PipeSegmentOccurrence - Pipe segment occurrence attributes attached to an instance of IfcPipeSegment. - - - IfcPipeSegment - - IfcPipeSegment - - - InteriorRoughnessCoefficient - The interior roughness coefficient of the pipe segment. - - - - - - - Interior Roughness Coefficient - 内部粗度係数 - - - - 配管部の内部粗度係数 - - - - Color - The color of the pipe segment. - -Note: This is typically used only for plastic pipe segments. However, it may be used for any pipe segments with a painted surface which is not otherwise specified as a covering. - - - - - - - Color - - - - - 配管部の内部粗度係数 記:この語はプラスチック配管にのみ使われる。しかしながら、保護のためではない塗装された表面を持つ配管にも使われる。 - - - - Gradient - The gradient of the pipe segment. - - - - - - - Gradient - 勾配 - - - - 配管部の勾配 - - - - InvertElevation - The invert elevation relative to the datum established for the project. - - - - - - - Invert Elevation - - - - - - - - - - - - - Pset_PipeSegmentPHistory - Pipe segment performance history common attributes. - - - IfcPipeSegment - - IfcPipeSegment - - - LeakageCurve - Leakage per unit length curve versus working pressure. - - - - - Leakage Curve - 漏洩曲線 - - - - 配管圧力に対する単位あたり流出量曲線 - - - - FluidFlowLeakage - Volumetric leakage flow rate. - - - - - Fluid Flow Leakage - 流体漏洩量 - - - - 漏洩量 - - - - - - - - - - Pset_PipeSegmentTypeCommon - Pipe segment type common attributes. - - - IfcPipeSegment - - IfcPipeSegment - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - WorkingPressure - Working pressure. - - - - - - - Working Pressure - 動作圧 - - - - 動作圧 - - - - PressureRange - Allowable maximum and minimum working pressure (relative to ambient pressure). - - - - - - - Pressure Range - 圧力範囲 - - - - 許容最大/最小管内圧力(周囲圧力に比較して) - - - - TemperatureRange - Allowable maximum and minimum temperature. - - - - - - - Temperature Range - 温度範囲 - - - - 許容最大/最小温度 - - - - NominalDiameter - The nominal diameter of the pipe segment. - - - - - - - Nominal Diameter - 呼び径 - - - - 配管部の呼び径、リストに一つの数字しかないとき、この呼び径が全ての管端に当てはまる。一つ以上の数字があるとき、呼び径はリストの表示に対応する管端にあてはまる。 - - - - InnerDiameter - The actual inner diameter of the pipe. - - - - - - - Inner Diameter - 内径 - - - - 配管の実内径(リストの複数の数字の解釈については呼び径参照) - - - - OuterDiameter - The actual outer diameter of the pipe. - - - - - - - Outer Diameter - 外径 - - - - 配管の実外径(リストの複数の数字の解釈については呼び径参照) - - - - - - - - - - Pset_PipeSegmentTypeCulvert - Covered channel or large pipe that forms a watercourse below ground level, usually under a road or railway (BS6100). - - - IfcPipeSegment/CULVERT - - IfcPipeSegment/CULVERT - - - InternalWidth - The internal width of the culvert. - - - - - - - Internal Width - 内幅 - - - - 暗渠管の内幅 - - - - ClearDepth - The clear depth of the culvert. - - - - - - - Clear Depth - 許容深さ - - - - 暗渠管の許容(安全)深さ - - - - - - - - - - Pset_PipeSegmentTypeGutter - Gutter segment type common attributes. - - - IfcPipeSegment/GUTTER - - IfcPipeSegment/GUTTER - - - Slope - Angle of the gutter to allow for drainage. - - - - - - - Slope - 勾配 - - - - 排水に必要な溝の角度(傾斜) - - - - FlowRating - Actual flow capacity for the gutter. Value of 0.00 means this value has not been set. - - - - - - - Flow Rating - 流量 - - - - 実際の排水流量  0.00値はこの値がセットされていないことを意味する  - - - - - - - - - - Pset_PlateCommon - Properties common to the definition of all occurrences of IfcPlate. - - - IfcPlate - - IfcPlate - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as "construction type". It should be provided as an alternative to the name of the "object type", if the software does not support object types. - - - - - - - Bauteiltyp - Reference - Reference - 参照記号 - 参考号 - - - Bezeichnung zur Zusammenfassung gleichartiger Bauteile zu einem Bauteiltyp (auch Konstruktionstyp genannt). Alternativ zum Namen des "Typobjekts", insbesondere wenn die Software keine Typen unterstützt. - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1") pour désigner un "type de construction". Une alternative au nom d'un objet type lorsque les objets types ne sont pas gérés par le logiciel. - 認識された分類体系で参照する分類がない場合にこのプロジェクト固有の参照記号(例:タイプ'A-1')が与えられる。 - 若未采用已知的分类系统,则该属性为该项目中该类型构件的参考编号(例如,类型A-1)。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Status - Statut - 状態 - - - Status bzw. Phase des Bauteils insbesondere beim Bauen im Bestand. "Neu" (new) neues Bauteil als Ergänzung, "Bestand" (existing) bestehendes Bauteil, dass erhalten bleibt, "Abbruch" (demolish) Bauteil, das abgebrochen wird, "Temporär" (temporary) Bauteil und andere Bauelemente, die vorübergehend eingebaut werden (wie Abstützungen, etc.) - - Statut de l'élément, principalement utilisé dans les projets de rénovation et de réhabilitation. Le statut a pour valeur NOUVEAU pour un nouvel élément, EXISTANT pour un élément existant qui est conservé, DEMOLI pour un élément existant à démolir et TEMPORAIRE pour un élément temporaire (comme une structure support provisoire). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - AcousticRating - Acoustic rating for this object. -It is provided according to the national building code. It indicates the sound transmission resistance of this object by an index ratio (instead of providing full sound absorbtion values). - - - - - - - Schallschutzklasse - Acoustic Rating - IsolationAcoustique - 遮音等級 - 隔音等级 - - - Schallschutzklasse gemäß der nationalen oder regionalen Schallschutzverordnung. - - Classement acoustique de cet objet. Donné selon le Code National du Bâtiment. Il indique la résistance à la transmission du son de cet objet par une valeur de référence (au lieu de fournir les valeurs totales d'absorption du son). - このオブジェクトの遮音等級。各国の建築基準に従って決められる。このオブジェクトの音響透過を指数であらわす。(実際の吸音値を示すかわりに) - 该构件的隔音等级。 -该属性的依据为国家建筑规范。为表示该构件隔音效果的比率(而不是完全吸收声音的值)。 - - - - IsExternal - Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building. - - - - - - - Außenbauteil - Is External - EstExterieur - 外部区分 - 是否外部构件 - - - Angabe, ob dieses Bauteil ein Aussenbauteil ist (JA) oder ein Innenbauteil (NEIN). Als Aussenbauteil grenzt es an den Aussenraum (oder Erdreich, oder Wasser). - - Indique si l'élément est conçu pour être utilisé à l'extérieur (VRAI) ou non (FAUX). Si VRAI, c'est un élément extérieur qui donne sur l'extérieur du bâtiment. - この要素が外部に用いられるか(TRUE)、否か(FALSE)を示す。(TRUE)の場合、これは外部要素で、建物の外部に面している。 - 表示该构件是否设计为外部构件。若是,则该构件为外部构件,朝向建筑物的外侧。 - - - - ThermalTransmittance - Thermal transmittance coefficient (U-Value) of a material. -It applies to the total door construction. - - - - - - - U-Wert - Thermal Transmittance - TransmissionThermique - 熱貫流率 - 导热系数 - - - Wärmedurchgangskoeffizient (U-Wert) der Materialschichten. -Hier der Gesamtwärmedurchgangskoeffizient der Platte (für alle Schichten). - - Coefficient de transmission thermique (U) qui s'applique à l'ensemble de la plaque. - 材料の熱貫流率(U値)。すべての扉部材に適応される。 - 材料的导热系数(U值)。 -适用于门的整体结构。 - - - - LoadBearing - Indicates whether the object is intended to carry loads (TRUE) or not (FALSE). - - - - - - - Tragendes Bauteil - Load Bearing - Porteur - 耐力部材 - 是否承重 - - - Angabe, ob dieses Bauteil tragend ist (JA) oder nichttragend (NEIN) - - Indique si l'objet est censé porter des charges (VRAI) ou non (FAUX). - オブジェクトが荷重を保持するか(TRUE)、保持しないか(FALSE)を示す。 - 表示该对象是否需要承重。 - - - - FireRating - Fire rating for this object. -It is given according to the national fire safety classification. - - - - - - - Feuerwiderstandsklasse - Fire Rating - ResistanceAuFeu - 耐火等級 - 防火等级 - - - Feuerwiderstandasklasse gemäß der nationalen oder regionalen Brandschutzverordnung. - - Classement au feu de l'élément donné selon la classification nationale de sécurité incendie. - 当該オブジェクトの耐火等級。国で定めた耐火安全等級分類による。 - 该构件的防火等级。 -该属性的依据为国家防火安全分级。 - - - - - - Définition de l'IAI : propriétés communes à la définition de toutes les instances de la classe IfcPlate - IfcPlaceオブジェクトに関する共通プロパティセット定義。 - Property Set Definition in Chinese - - - - - Pset_PrecastConcreteElementFabrication - Production and manufacturing related properties common to different types of precast concrete elements. The Pset applies to manufactured pieces. It can be used by a number of subtypes of IfcBuildingElement. If the precast concrete ele - - - IfcBeam - IfcBuildingElementProxy - IfcChimney - IfcColumn - IfcFooting - IfcMember - IfcPile - IfcPlate - IfcRamp - IfcRampFlight - IfcRoof - IfcSlab - IfcStair - IfcStairFlight - IfcWall - IfcCivilElement - - IfcBeam,IfcBuildingElementProxy,IfcChimney,IfcColumn,IfcFooting,IfcMember,IfcPile,IfcPlate,IfcRamp,IfcRampFlight,IfcRoof,IfcSlab,IfcStair,IfcStairFlight,IfcWall,IfcCivilElement - - - TypeDesignator - Type designator for the precast concrete element. The content depends on local standards. For instance in Finland it usually a one-letter acronym, e.g. P=Column, K=reinforced concrete beam,etc. - - - - - - - Type Designator - - - - - - - ProductionLotId - The manufacturer's production lot identifier. - - - - - - - Production Lot Id - - - - - - - SerialNumber - The manufacturer's serial number for the precast concrete element. - - - - - - - Serial Number - - - - - - - PieceMark - Defines a unique piece for production purposes. All pieces with the same piece mark value are identical and interchangeable. The piece mark may be composed of sub-parts that have specific locally defined meaning (e.g. B-1A may denote a beam, of generic type ‘1’ and specific shape ‘A’). - - - - - - - Piece Mark - - - - - - - AsBuiltLocationNumber - Defines a unique location within a structure, the ‘slot’ into which the piece was installed. Where pieces share the same piece mark, they can be interchanged. The value is only known after erection. - - - - - - - As Built Location Number - - - - - - - ActualProductionDate - Production date (stripped from form). - - - - - - - Actual Production Date - - - - - - - ActualErectionDate - Date erected. - - - - - - - Actual Erection Date - - - - - - - - - - - - - Pset_PrecastConcreteElementGeneral - Production and manufacturing related properties common to different types of precast concrete elements. The Pset can be used by a number of subtypes of IfcBuildingElement. If the precast concrete element is a sandwich wall panel each structural layer or shell represented by an IfcBuildingElementPart may be attached to a separate Pset of this type, if needed. Some of the properties apply only for specific types of precast concrete elements. - - - IfcBeam - IfcBuildingElementProxy - IfcChimney - IfcColumn - IfcFooting - IfcMember - IfcPile - IfcPlate - IfcRamp - IfcRampFlight - IfcRoof - IfcSlab - IfcStair - IfcStairFlight - IfcWall - IfcCivilElement - - IfcBeam,IfcBuildingElementProxy,IfcChimney,IfcColumn,IfcFooting,IfcMember,IfcPile,IfcPlate,IfcRamp,IfcRampFlight,IfcRoof,IfcSlab,IfcStair,IfcStairFlight,IfcWall,IfcCivilElement - - - TypeDesignator - Type designator for the precast concrete element. The content depends on local standards. For instance in Finland it usually a one-letter acronym, e.g. P=Column, K=reinforced concrete beam,etc. - - - - - - - Type Designator - 特定子の記述 - - - - プレキャストコンクリート要素の特定子(部位)を記述する。内容はローカルな(各国の)標準(規格)に依存する。例えばフィンランドでは、柱はP、梁はKのように通常、頭文字1文字で表す。 - - - - CornerChamfer - The chamfer in the corners of the precast element. The chamfer is presumed to be equal in both directions. - - - - - - - Corner Chamfer - 面取り - - - - プレキャストコンクリート要素の面取り。面取りは両方向で等しいものとする。 - - - - ManufacturingToleranceClass - Classification designation of the manufacturing tolerances according to local standards. - - - - - - - Manufacturing Tolerance Class - メーカーの認可分類 - - - - ローカルな標準によるメーカーの認可分類。 - - - - FormStrippingStrength - The minimum required compressive strength of the concrete at form stripping time. - - - - - - - Form Stripping Strength - 脱型強度 - - - - 脱型時におけるコンクリートの最小必要圧縮強度。 - - - - LiftingStrength - The minimum required compressive strength of the concrete when the concrete element is lifted. - - - - - - - Lifting Strength - 吊り上げ強度 - - - - コンクリート要素が吊り上げられる時のコンクリートの最小必要圧縮強度。 - - - - ReleaseStrength - The minimum required compressive strength of the concrete when the tendon stress is released. This property applies to prestressed concrete elements only. - - - - - - - Release Strength - リリース強度 - - - - 緊張力が解放される時のコンクリートの最小必要圧縮強度。この属性はプレストレストコンクリート要素のみに適用される。 - - - - MinimumAllowableSupportLength - The minimum allowable support length. - - - - - - - Minimum Allowable Support Length - 最小許容支持長さ - - - - 最小許容支持長さ。 - - - - InitialTension - The initial stress of the tendon. This property applies to prestressed concrete elements only. - - - - - - - Initial Tension - 初引張力 - - - - 緊張材の初期応力。この属性はプレストレストコンクリート要素のみに適用される。 - - - - TendonRelaxation - The maximum allowable relaxation of the tendon (usually expressed as %/1000 h).This property applies to prestressed concrete elements only. - - - - - - - Tendon Relaxation - 緊張材のリラクセーション - - - - 緊張材の最大許容リラクセーション(応力弛緩、-係数)。通常、1000時間あたりの割合(%)。この属性はプレストレストコンクリート要素のみに適用される。 - - - - TransportationStrength - The minimum required compressive strength of the concrete required for transportation. - - - - - - - Transportation Strength - 輸送強度 - - - - 輸送に必要なコンクリートの最小必要圧縮強度。 - - - - SupportDuringTransportDescription - Textual description of how the concrete element is supported during transportation. - - - - - - - Support During Transport Description - 輸送中の支持に関する記述 - - - - プレキャストコンクリート要素が輸送中における支持方法について書かれたテキスト文書。 - - - - SupportDuringTransportDocReference - Reference to an external document defining how the concrete element is supported during transportation. - - - - - Support During Transport Doc Reference - 輸送中の支持に関する参考文献 - - - - プレキャストコンクリート要素が輸送中における支持方法について書かれた外部ドキュメントの参照。 - - - - HollowCorePlugging - A descriptive label for how the hollow core ends are treated: they may be left open, closed with a plug, or sealed with cast concrete. Values would be, for example: 'Unplugged', 'Plugged', 'SealedWithConcrete'. This property applies to hollow core slabs only. - - - - - - - Hollow Core Plugging - くぼみの充填 - - - - (定着部の?)くぼみをどのように扱うのかについて書かれたラベル:開けたままにするか、プラグで塞ぐ、または後詰めコンクリートで塞ぐ。例えば、「塞がない」、「塞ぐ」、「コンクリートで塞ぐ」と書かれるだろう。この属性はスラブに開けられたくぼみにも適用される。 - - - - CamberAtMidspan - The camber deflection, measured from the midpoint of a cambered face of a piece to the midpoint of the chord joining the ends of the same face, as shown in the figure below, divided by the original (nominal) straight length of the face of the piece. - - - - - - - Camber At Midspan - - - - - - - BatterAtStart - The angle, in radians, by which the formwork at the starting face of a piece is to be rotated from the vertical in order to compensate for the rotation of the face that will occur once the piece is stripped from its form, inducing camber due to eccentric prestressing. - - - - - - - Batter At Start - - - - - - - BatterAtEnd - The angle, in radians, by which the formwork at the ending face of a piece is to be rotated from the vertical in order to compensate for the rotation of the face that will occur once the piece is stripped from its form, inducing camber due to eccentric prestressing. - - - - - - - Batter At End - - - - - - - Twisting - The angle, in radians, through which the end face of a precast piece is rotated with respect to its starting face, along its longitudinal axis, as a result of non-aligned supports. This measure is also termed the ‘warping’ angle. - - - - - - - Twisting - - - - - - - Shortening - The ratio of the distance by which a precast piece is shortened after release from its form (due to compression induced by prestressing) to its original (nominal) length. - - - - - - - Shortening - - - - - - - PieceMark - Defines a unique piece for production purposes. All pieces with the same piece mark value are identical and interchangeable. The piece mark may be composed of sub-parts that have specific locally defined meaning (e.g. B-1A may denote a beam, of generic type ‘1’ and specific shape ‘A’). - - - - - - - Piece Mark - - - - - - - DesignLocationNumber - Defines a unique location within a structure, the ‘slot’ for which the piece was designed. - - - - - - - Design Location Number - - - - - - - - - 生産(設計)と製造(メーカー)でタイプの異なるプレキャストコンクリート要素(部材)に、共通の属性(プロパティ)を関連付けた。Psetは多くのIfcBuildingElementのサブタイプとして使用できる。もしプレキャストコンクリート要素が壁板であるとしたら、IfcBuildingElementPartで表される各々の構造的な層かシェルは、このタイプの別々のPsetで結び付くかもしれない。幾つかの属性が、特定なタイプのプレキャストコンクリート要素のためだけに適用される。 - - - - - Pset_PrecastSlab - Layout and component information defining how prestressed slab components are laid out in a precast slab assembly. The values are global defaults for the slab as a whole, but can be overridden by local placements of the individual com - - - IfcSlab - - IfcSlab - - - TypeDesignator - Type designator for the precast concrete slab, expressing mainly the component type. Possible values are “Hollow-core”, “Double-tee”, “Flat plank”, etc. - - - - - - - Type Designator - - - - - - - ToppingType - Defines if a topping is applied and what kind. Values are “Full topping”, “Perimeter Wash”, “None” - - - - - - - Topping Type - - - - - - - EdgeDistanceToFirstAxis - The distance from the left (‘West’) edge of the slab (in the direction of span of the components) to the axis of the first component. - - - - - - - Edge Distance To First Axis - - - - - - - DistanceBetweenComponentAxes - The distance between the axes of the components, measured along the ‘South’ edge of the slab. - - - - - - - Distance Between Component Axes - - - - - - - AngleToFirstAxis - The angle of rotation of the axis of the first component relative to the ‘West’ edge of the slab. - - - - - - - Angle To First Axis - - - - - - - AngleBetweenComponentAxes - The angle between the axes of each pair of components. - - - - - - - Angle Between Component Axes - - - - - - - NominalThickness - The nominal overall thickness of the slab. - - - - - - - Nominal Thickness - - - - - - - NominalToppingThickness - The nominal thickness of the topping. - - - - - - - Nominal Topping Thickness - - - - - - - - - - - - - Pset_ProfileArbitraryDoubleT - This is a collection of geometric properties of double-T section profiles of precast concrete elements, to be used in conjunction with IfcArbitraryProfileDef when profile designation alone does not fulfill the information requirements. - - - IfcArbitraryClosedProfileDef - - IfcArbitraryClosedProfileDef - - - OverallWidth - Overall width of the profile. - - - - - - - Overall Width - - - - - - - LeftFlangeWidth - Left flange width of the profile. - - - - - - - Left Flange Width - - - - - - - RightFlangeWidth - Right flange width of the profile. - - - - - - - Right Flange Width - - - - - - - OverallDepth - Overall depth of the profile. - - - - - - - Overall Depth - - - - - - - FlangeDepth - Flange depth of the profile. - - - - - - - Flange Depth - - - - - - - FlangeDraft - Flange draft of the profile. - - - - - - - Flange Draft - - - - - - - FlangeChamfer - Flange chamfer of the profile. - - - - - - - Flange Chamfer - - - - - - - FlangeBaseFillet - Flange base fillet of the profile. - - - - - - - Flange Base Fillet - - - - - - - FlangeTopFillet - Flange top fillet of the profile. - - - - - - - Flange Top Fillet - - - - - - - StemBaseWidth - Stem base width of the profile. - - - - - - - Stem Base Width - - - - - - - StemTopWidth - Stem top width of the profile. - - - - - - - Stem Top Width - - - - - - - StemBaseChamfer - Stem base chamfer of the profile. - - - - - - - Stem Base Chamfer - - - - - - - StemTopChamfer - Stem top chamfer of the profile. - - - - - - - Stem Top Chamfer - - - - - - - StemBaseFillet - Stem base fillet of the profile. - - - - - - - Stem Base Fillet - - - - - - - StemTopFillet - Stem top fillet of the profile. - - - - - - - Stem Top Fillet - - - - - - - - - - - - - Pset_ProfileArbitraryHollowCore - This is a collection of geometric properties of hollow core section profiles of precast concrete elements, to be used in conjunction with IfcArbitraryProfileDefWithVoids when profile designation alone does not fulfill the information requirements. - -In all cases, the cores are symmetrically distributed on either side of the plank center line, irrespective of whether the number of cores is odd or even. For planks with a center core with different geometry to that of the other cores, provide the property CenterCoreSpacing. When the number of cores is even, no Center Core properties shall be asserted. - -Key chamfers and draft chamfer are all 45 degree chamfers. - -The CoreTopRadius and CoreBaseRadius parameters can be derived and are therefore not listed in the property set. They are shown to define that the curves are arcs. The parameters for the center core are the same as above, but with the prefix "Center". - - - IfcArbitraryProfileDefWithVoids - - IfcArbitraryProfileDefWithVoids - - - OverallWidth - Overall width of the profile. - - - - - - - Overall Width - - - - - - - OverallDepth - Overall depth of the profile. - - - - - - - Overall Depth - - - - - - - EdgeDraft - Edge draft of the profile. - - - - - - - Edge Draft - - - - - - - DraftBaseOffset - Draft base offset of the profile. - - - - - - - Draft Base Offset - - - - - - - DraftSideOffset - Draft side offset of the profile. - - - - - - - Draft Side Offset - - - - - - - BaseChamfer - Base chamfer of the profile. - - - - - - - Base Chamfer - - - - - - - KeyDepth - Key depth of the profile. - - - - - - - Key Depth - - - - - - - KeyHeight - Key height of the profile. - - - - - - - Key Height - - - - - - - KeyOffset - Key offset of the profile. - - - - - - - Key Offset - - - - - - - BottomCover - Bottom cover of the profile. - - - - - - - Bottom Cover - - - - - - - CoreSpacing - Core spacing of the profile. - - - - - - - Core Spacing - - - - - - - CoreBaseHeight - Core base height of the profile. - - - - - - - Core Base Height - - - - - - - CoreMiddleHeight - Core middle height of the profile. - - - - - - - Core Middle Height - - - - - - - CoreTopHeight - Core top height of the profile. - - - - - - - Core Top Height - - - - - - - CoreBaseWidth - Core base width of the profile. - - - - - - - Core Base Width - - - - - - - CoreTopWidth - Core top width of the profile. - - - - - - - Core Top Width - - - - - - - CenterCoreSpacing - Center core spacing of the profile. - - - - - - - Center Core Spacing - - - - - - - CenterCoreBaseHeight - Center core base height of the profile. - - - - - - - Center Core Base Height - - - - - - - CenterCoreMiddleHeight - Center core middle height of the profile. - - - - - - - Center Core Middle Height - - - - - - - CenterCoreTopHeight - Center core top height of the profile. - - - - - - - Center Core Top Height - - - - - - - CenterCoreBaseWidth - Center core base width of the profile. - - - - - - - Center Core Base Width - - - - - - - CenterCoreTopWidth - Center core top width of the profile. - - - - - - - Center Core Top Width - - - - - - - NumberOfCores - Number of cores. - - - - - - - Number Of Cores - - - - - - - - - - - - - Pset_ProfileMechanical - This is a collection of mechanical properties that are applicable to virtually all profile classes. Most of these properties are especially used in structural analysis. - - - IfcProfileDef - - IfcProfileDef - - - MassPerLength - Mass per length, i.e. mass of a beam with a unit length of extrusion. For example measured in kg/m. - - - - - - - Mass Per Length - - - - - - - CrossSectionArea - Area of the profile. For example measured in mm2. If given, the value of the cross section area shall be greater than zero. - - - - - - - Cross Section Area - - - - - - - Perimeter - Perimeter of the profile for calculating the surface area. For example measured in mm. - - - - - - - Perimeter - - - - - - - MinimumPlateThickness - This value may be needed for stress analysis and to handle buckling problems. It can also be derived from the given profile geometry or classification and therefore it is only an optional feature allowing for an explicit description. For example measured in mm. - - - - - - - Minimum Plate Thickness - - - - - - - MaximumPlateThickness - This value may be needed for stress analysis and to handle buckling problems. It can also be derived from the given profile geometry or classification and therefore it is only an optional feature allowing for an explicit description. For example measured in mm. - - - - - - - Maximum Plate Thickness - - - - - - - CentreOfGravityInX - Location of the profile's centre of gravity (geometric centroid), measured along xp. - - - - - - - Centre Of Gravity In X - - - - - - - CentreOfGravityInY - Location of the profile's centre of gravity (geometric centroid), measured along yp. - - - - - - - Centre Of Gravity In Y - - - - - - - ShearCentreZ - Location of the profile's shear centre, measured along zs. - - - - - - - Shear Centre Z - - - - - - - ShearCentreY - Location of the profile's shear centre, measured along ys. - - - - - - - Shear Centre Y - - - - - - - MomentOfInertiaY - Moment of inertia about ys (second moment of area, about ys). For example measured in mm4. - - - - - - - Moment Of Inertia Y - - - - - - - MomentOfInertiaZ - Moment of inertia about zs (second moment of area, about zs). For example measured in mm4 - - - - - - - Moment Of Inertia Z - - - - - - - MomentOfInertiaYZ - Moment of inertia about ys and zs (product moment of area). For example measured in mm4. - - - - - - - Moment Of Inertia YZ - - - - - - - TorsionalConstantX - Torsional constant about xs. For example measured in mm4. - - - - - - - Torsional Constant X - - - - - - - WarpingConstant - Warping constant of the profile for torsional action. For example measured in mm6. - - - - - - - Warping Constant - - - - - - - ShearDeformationAreaZ - Area of the profile for calculating the shear deformation due to a shear force parallel to zs. For example measured in mm². If given, the shear deformation area zs shall be non-negative. - - - - - - - Shear Deformation Area Z - - - - - - - ShearDeformationAreaY - Area of the profile for calculating the shear deformation due to a shear force parallel to ys. For example measured in mm². If given, the shear deformation area ys shall be non-negative. - - - - - - - Shear Deformation Area Y - - - - - - - MaximumSectionModulusY - Bending resistance about the ys axis at the point with maximum zs ordinate. For example measured in mm³. - - - - - - - Maximum Section Modulus Y - - - - - - - MinimumSectionModulusY - Bending resistance about the ys axis at the point with minimum zs ordinate. For example measured in mm³. - - - - - - - Minimum Section Modulus Y - - - - - - - MaximumSectionModulusZ - Bending resistance about the zs axis at the point with maximum ys ordinate. For example measured in mm³. - - - - - - - Maximum Section Modulus Z - - - - - - - MinimumSectionModulusZ - Bending resistance about the zs axis at the point with minimum ys ordinate. For example measured in mm³. - - - - - - - Minimum Section Modulus Z - - - - - - - TorsionalSectionModulus - Torsional resistance (about xs). For example measured in mm³. - - - - - - - Torsional Section Modulus - - - - - - - ShearAreaZ - Area of the profile for calculating the shear stress due to shear force parallel to the section analysis axis zs. For example measured in mm². If given, the shear area zs shall be non-negative. - - - - - - - Shear Area Z - - - - - - - ShearAreaY - Area of the profile for calculating the shear stress due to shear force parallel to the section analysis axis ys. For example measured in mm². If given, the shear area ys shall be non-negative. - - - - - - - Shear Area Y - - - - - - - PlasticShapeFactorY - Ratio of plastic versus elastic bending moment capacity about the section analysis axis ys. A dimensionless value. - - - - - - - Plastic Shape Factor Y - - - - - - - PlasticShapeFactorZ - Ratio of plastic versus elastic bending moment capacity about the section analysis axis zs. A dimensionless value. - - - - - - - Plastic Shape Factor Z - - - - - - - - - - - - - Pset_ProjectOrderChangeOrder - A change order is an instruction to make a change to a product or work being undertake. Note that the change order status is defined in the same way as a work order status since a change order implies a work requirement. - - - IfcProjectOrder/CHANGEORDER - - IfcProjectOrder/CHANGEORDER - - - ReasonForChange - A description of the problem for why a change is needed. - - - - - - - Reason For Change - 変更理由 - - - - 変更が必要となる問題の記述。 - - - - BudgetSource - The budget source requested. - - - - - - - Budget Source - 予算源 - - - - 要求された予算の出所・源。 - - - - - - 変更指示は、製品または引き受けている作業に変化を生じさせる指示。変更指示状態は、作業指示状態と同様な手段で定義される。変更指示は作業要求を必要とするからである。 - - - - - Pset_ProjectOrderMaintenanceWorkOrder - A MaintenanceWorkOrder is a detailed description of maintenance work that is to be performed. Note that the Scheduled Frequency property of the maintenance work order is used when the order is required as an instance of a scheduled work order. - - - IfcProjectOrder/MAINTENANCEWORKORDER - - IfcProjectOrder/MAINTENANCEWORKORDER - - - ProductDescription - A textual description of the products that require the work. - - - - - - - Product Description - - - - - - - WorkTypeRequested - Work type requested in circumstances where there are categorizations of types of work task. It could be used to identify a remedial task, minor work task, electrical task etc. - - - - - - - Work Type Requested - - - - - - - ContractualType - The contractual type of the work. - - - - - - - Contractual Type - - - - - - - IfNotAccomplished - Comments if the job is not accomplished. - - - - - - - If Not Accomplished - - - - - - - MaintenaceType - Identifies the predefined types of maintenance that can be done from which the type that generates the maintenance work order may be set where: - -ConditionBased: generated as a result of the condition of an asset or artefact being less than a determined value. -Corrective: generated as a result of an immediate and urgent need for maintenance action. -PlannedCorrective: generated as a result of immediate corrective action being needed but with sufficient time available for the work order to be included in maintenance planning. -Scheduled: generated as a result of a fixed, periodic maintenance requirement. - - - - CONDITIONBASED - CORRECTIVE - PLANNEDCORRECTIVE - SCHEDULED - OTHER - NOTKNOWN - UNSET - - - - CONDITIONBASED - - Condition Based - - - - - - - CORRECTIVE - - Corrective - - - - - - - PLANNEDCORRECTIVE - - Planned Corrective - - - - - - - SCHEDULED - - Scheduled - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Maintenace Type - - - - - - - FaultPriorityType - Identifies the predefined types of priority that can be assigned from which the type may be set where: - -High: action is required urgently. -Medium: action can occur within a reasonable period of time. -Low: action can occur when convenient. - - - - HIGH - MEDIUM - LOW - OTHER - NOTKNOWN - UNSET - - - - HIGH - - High - - - - - - - MEDIUM - - Medium - - - - - - - LOW - - Low - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Fault Priority Type - - - - - - - LocationPriorityType - Identifies the predefined types of priority that can be assigned from which the type may be set where: - -High: action is required urgently. -Medium: action can occur within a reasonable period of time. -Low: action can occur when convenient. - - - - HIGH - MEDIUM - LOW - OTHER - NOTKNOWN - UNSET - - - - HIGH - - High - - - - - - - MEDIUM - - Medium - - - - - - - LOW - - Low - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Location Priority Type - - - - - - - ScheduledFrequency - The period of time between expected instantiations of a work order that may have been predefined. - - - - - - - Scheduled Frequency - - - - - - - - - - - - - Pset_ProjectOrderMoveOrder - Defines the requirements for move orders. Note that the move order status is defined in the same way as a work order status since a move order implies a work requirement. - - - IfcProjectOrder/MOVEORDER - - IfcProjectOrder/MOVEORDER - - - SpecialInstructions - Special instructions that affect the move. - - - - - - - Special Instructions - 特別指示 - - - - 移動・引っ越しに影響する特別な指示。 - - - - - - 移動・引っ越しへの必要条件を定義する。注:移動指示は、作業の必要条件を含むので、移動命令状態は、作業指示状態と同様な手段で定義される。 - - - - - Pset_ProjectOrderPurchaseOrder - Defines the requirements for purchase orders in a project. - - - IfcProjectOrder/PURCHASEORDER - - IfcProjectOrder/PURCHASEORDER - - - IsFOB - Indication of whether contents of the purchase order are delivered 'Free on Board' (= True) or not (= False). FOB is a shipping term which indicates that the supplier pays the shipping costs (and usually also the insurance costs) from the point of manufacture to a specified destination, at which point the buyer takes responsibility. - - - - - - - Is FOB - - - - - - - ShipMethod - Method of shipping that will be used for goods or services. - - - - - - - Ship Method - - - - - - - - - - - - - Pset_ProjectOrderWorkOrder - Defines the requirements for purchase orders in a project. - - - IfcProjectOrder/WORKORDER - - IfcProjectOrder/WORKORDER - - - ProductDescription - A textual description of the products that require the work. - - - - - - - Product Description - - - - - - - WorkTypeRequested - Work type requested in circumstances where there are categorizations of types of work task. It could be used to identify a remedial task, minor work task, electrical task etc. - - - - - - - Work Type Requested - - - - - - - ContractualType - The contractual type of the work. - - - - - - - Contractual Type - - - - - - - IfNotAccomplished - Comments if the job is not accomplished. - - - - - - - If Not Accomplished - - - - - - - - - - - - - Pset_PropertyAgreement - A property agreement is an agreement that enables the occupation of a property for a period of time. - -The objective is to capture the information within an agreement that is relevant to a facilities manager. Design and construction information associated with the property is not considered. A property agreement may be applied to an instance of IfcSpatialStructureElement including to compositions defined through the IfcSpatialStructureElement.Element.CompositionEnum. - -Note that the associated actors are captured by the IfcOccupant class. - - - IfcSpatialStructureElement - - IfcSpatialStructureElement - - - AgreementType - Identifies the predefined types of property agreement from which the type required may be set. - - - - ASSIGNMENT - LEASE - TENANT - OTHER - NOTKNOWN - UNSET - - - - ASSIGNMENT - - Assignment - - - - - - - LEASE - - Lease - - - - - - - TENANT - - Tenant - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Agreement Type - - - - - - - Identifier - The identifier assigned to the agreement for the purposes of tracking. - - - - - - - Identifier - - - - - - - Version - The version number of the agreement that is identified. - - - - - - - Version - - - - - - - VersionDate - The date on which the version of the agreement became applicable. - - - - - - - Version Date - - - - - - - PropertyName - Addressing details of the property as stated within the agreement. - - - - - - - Property Name - - - - - - - CommencementDate - Date on which the agreement commences. - - - - - - - Commencement Date - - - - - - - TerminationDate - Date on which the agreement terminates. - - - - - - - Termination Date - - - - - - - Duration - The period of time for the lease. - - - - - - - Duration - - - - - - - Options - A statement of the options available in the agreement. - - - - - - - Options - - - - - - - ConditionCommencement - Condition of property provided on commencement of the agreement e.g. cold shell, warm lit shell, broom clean, turn-key. - - - - - - - Condition Commencement - - - - - - - Restrictions - Restrictions that may be placed by a competent authority. - - - - - - - Restrictions - - - - - - - ConditionTermination - Condition of property required on termination of the agreement e.g. cold shell, warm lit shell, broom clean, turn-key. - - - - - - - Condition Termination - - - - - - - - - - - - - Pset_ProtectiveDeviceBreakerUnitI2TCurve - A coherent set of attributes representing a curve for let-through energy of a protective device. Note - A protective device may be associated with different instances of this pSet providing information related to different basic characteristics - - - IfcProtectiveDevice - - IfcProtectiveDevice - - - VoltageLevel - The voltage levels of the protective device for which the data of the instance is valid. More than one value may be selected in the enumeration. - - - - U230 - U400 - U440 - U525 - U690 - U1000 - OTHER - NOTKNOWN - UNSET - - - - U230 - - U230 - - - - - - - U400 - - U400 - - - - - - - U440 - - U440 - - - - - - - U525 - - U525 - - - - - - - U690 - - U690 - - - - - - - U1000 - - U1000 - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Voltage Level - 電圧レベル - 전압 레벨 - - - - 保護装置が作動する電圧レベルを選択。 -[U230,U400,U525,U690,U1000,その他,不明,無] - 보호 장치가 작동 전압 레벨을 선택합니다. [U230, U400, U525, U690, U1000, 기타 알 수 없음, 무 - - - - NominalCurrent - A set of nominal currents in [A] for which the data of this instance is valid. At least one value shall be provided. Any value in the set shall not exceed the value of the -UltimateRatedCurrent associated with the same breaker unit. - - - - - - - Nominal Current - 定格電流 - 정격전류 - - - - 定格電流[A]を少なくても1つ値をセットしなければならない。 - セット内の任意の値の値を超えてはならない。 - 定格電流は、同じブレーカ部に関連付けられている。 - 정격 전류 [A]를 적어도 1 개의 값을 설정해야한다. 동일한 차단기부와 연결된 정격전류는세트 내의 임의의 값은 초과할 수 없다. - - - - BreakerUnitCurve - A curve that establishes the let through energy of a breaker unit when a particular prospective current is applied. Note that the breaker unit curve is defined within a Cartesian coordinate system and this fact must be asserted within the property set: - -(1) Defining value: ProspectiveCurrent: A list of minimum 2 and maximum 16 numbers providing the currents in [A] for points in the current/I2t log/log coordinate space. The curve is drawn as a straight line between two consecutive points. -(2) Defined value: LetThroughEnergy: A list of minimum 2 and maximum 16 numbers providing the let-through energy, I2t, in [A2s] for points in the current/I2t log/log coordinate space. The curve is drawn as a straight line between two consecutive points. - - - - - - - - - - - - - Breaker Unit Curve - 遮断機曲線 - 차단기 곡선 - - - - 適用された電流と通過する遮断機のエネルギーを示した曲線 - (1)定義値:ProspectiveCurrent(固有電流): - 電流/I2tで示される最小2から最大8のリストで電流[A]を定義します。 - カーブが連続する2つの点を結ぶ直線として描かれています。 - - - (2)定義値:LetThroughEnergy: - 電流/I2tで示される最小2から最大8のリストで通過エネルギー電流[[A2s]を定義します。 - カーブが連続する2つの点を結ぶ直線として描かれています。 - 적용된 전류 통과 차단기의 에너지를 나타낸 곡선 (1) 정의 값 : ProspectiveCurrent (고유 전류) : 전류 / I2t에 표시된 최소 2에서 최대 8 개의 목록에서 전류 [A]를 정의합니다. 커브가 연속되는 두 개의 점을 연결하는 직선으로 그려져 있습니다. (2) 정의 값 : LetThroughEnergy : 전류 / I2t에 표시된 최소 2에서 최대 8 개의 목록에서 통과 에너지 전류 [A2s을 정의합니다. 커브가 연속되는 두 개의 점을 연결하는 직선으로 그려져 있습니다. - - - - - - 保護装置の通電エネルギーの曲線を表す一連のプロパティセット。 -注記-保護装置は、根本的な特性に関連付けられた提供されたプロパティの情報は、 異なる実態に関連しているかもしれません。                  - - - - - Pset_ProtectiveDeviceBreakerUnitI2TFuseCurve - A coherent set of attributes representing curves for melting- and breaking-energy of a fuse. Note - A fuse may be associated with different instances of this property set providing information related to different basic characteristics. - - - IfcProtectiveDevice - - IfcProtectiveDevice - - - VoltageLevel - The voltage levels of the fuse for which the data of the instance is valid. More than one value may be selected in the enumeration. - - - - U230 - U400 - U440 - U525 - U690 - U1000 - OTHER - NOTKNOWN - UNSET - - - - U230 - - U230 - - - - - - - U400 - - U400 - - - - - - - U440 - - U440 - - - - - - - U525 - - U525 - - - - - - - U690 - - U690 - - - - - - - U1000 - - U1000 - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Voltage Level - 電圧レベル - 전압레벨 - - - - 電圧レベルを選択。 - 전압 레벨을 선택합니다. - - - - BreakerUnitFuseMeltingCurve - A curve that establishes the energy required to melt the fuse of a breaker unit when a particular prospective melting current is applied. Note that the breaker unit fuse melting curve is defined within a Cartesian coordinate system and this fact must be: - -(1) Defining value: ProspectiveCurrentMelting :A list of minimum 2 and maximum 8 numbers providing the currents in [A] for points in the -current/melting_energy log/log coordinate space. The curve is drawn as a straight line between two consecutive points. -(2) Defined value: MeltingEnergy: A list of minimum 2 and maximum 8 numbers providing the energy whereby the fuse is starting to melt, I2t, in [A2s] for points in the current/melting_energy log/log coordinate space. The curve is drawn as a straight line between two consecutive points. - - - - - - - - - - - - - Breaker Unit Fuse Melting Curve - フューズ遮断機融解曲線 - 퓨즈 차단기 융해 곡선 - - - - 想定外の電流が流れた時に遮断機のフューズを溶かすために必要なエネルギーを表す曲線。 - 想定外の電流が流れた時に遮断機のフューズを溶かすために必要なエネルギーを表す曲線。 - - (1)定義値:融解電流:電流/ 融解エネルギーで示される最小2から最大8のリストで電流[A]を定義します。 - カーブが連続する2つの点を結ぶ直線として描かれています。 - (2)定義値:融解エネルギー:/電流/融解エネルギーの位置[A2s]で示される2~16の想定されるフューズが溶解始める電流[A2s]を定義します。カーブが連続する2つの点を結ぶ直線として描かれています。 - 예상치 못한 전류가 흐를 때 차단기의 퓨즈를 녹이는 데 필요한 에너지를 나타내는 곡선. 예상외의 전류가 흘렀을 때에 차단기의 퓨즈를 녹이는 데 필요한 에너지를 나타내는 곡선. (1) 정의 값 : 융해 전류 : 전류 / 융해 에너지에 표시된 최소 2에서 최대 8 개의 목록에서 전류 [A]를 정의합니다. 커브가 연속되는 두 개의 점을 연결하는 직선으로 그려져 있습니다. (2) 정의 값 : 융해 에너지 :/ 전류 / 융해 에너지의 위치 [A2s에서 나타나는 2 ~ 16 예상되는 퓨즈가 용해 시작 전류 [A2s을 정의합니다. 커브가 연속되는 두 개의 점을 연결하는 직선으로 그려져 있습니다. - - - - BreakerUnitFuseBreakingingCurve - A curve that establishes the let through breaking energy of a breaker unit when a particular prospective breaking current is applied. Note that the breaker unit fuse breaking curve is defined within a Cartesian coordinate system and this fact must be: - -(1) Defining value: ProspectiveCurrentBreaking: A list of minimum 2 and maximum 8 numbers providing the currents in [A] for points in the -current/breaking energy log/log coordinate space. The curve is drawn as a straight line between two consecutive points. -(2) Defined value: LetThroughBreakingEnergy: A list of minimum 2 and maximum 8 numbers providing the breaking energy whereby the fuse has provided a break, I2t, in [A2s] for points in the current/breakting_energy log/log coordinate space. The curve is drawn as a straight line between two consecutive. - - - - - - - - - - - - - Breaker Unit Fuse Breakinging Curve - フューズ遮断機融解曲線 - 퓨즈 차단기 융해 곡선 - - - - 想定外の電流が流れた時に遮断機のフューズを溶かすために必要なエネルギーを表す曲線。 - 想定外の電流が流れた時に遮断機のフューズを溶かすために必要なエネルギーを表す曲線。 - - (1)定義値:融解電流:電流/ 融解エネルギーで示される最小2から最大8のリストで電流[A]を定義します。 - カーブが連続する2つの点を結ぶ直線として描かれています。 - (2)定義値:融解エネルギー:/電流/融解エネルギーの位置[A2s]で示される2~16の想定されるフューズが溶解始める電流[A2s]を定義します。カーブが連続する2つの点を結ぶ直線として描かれています。 - 예상치 못한 전류가 흐를 때 차단기의 퓨즈를 녹이는 데 필요한 에너지를 나타내는 곡선. 예상외의 전류가 흘렀을 때에 차단기의 퓨즈를 녹이는 데 필요한 에너지를 나타내는 곡선. (1) 정의 값 : 융해 전류 : 전류 / 융해 에너지에 표시된 최소 2에서 최대 8 개의 목록에서 전류 [A]를 정의합니다. 커브가 연속되는 두 개의 점을 연결하는 직선으로 그려져 있습니다. (2) 정의 값 : 융해 에너지 :/ 전류 / 융해 에너지의 위치 [A2s에서 나타나는 2 ~ 16 예상되는 퓨즈가 용해 시작 전류 [A2s을 정의합니다. 커브가 연속되는 두 개의 점을 연결하는 직선으로 그려져 있습니다. - - - - - - フューズの融解-遮断エネルギー曲線を表す一連のプロパティセット。 -注記-フューズは、根本的な特性に関連付けられた提供されたプロパティの情報は、 異なる実態に関連しているかもしれません。                  - - - - - Pset_ProtectiveDeviceBreakerUnitIPICurve - A coherent set of attributes representing curves for let-through currents of a protective device. Note - A protective device may be associated with different instances of this pSet providing information related to different basic characteristics. - - - IfcProtectiveDevice - - IfcProtectiveDevice - - - VoltageLevel - The voltage level of the protective device for which the data of the instance is valid. More than one value may be selected in the enumeration. - - - - U230 - U400 - U440 - U525 - U690 - U1000 - OTHER - NOTKNOWN - UNSET - - - - U230 - - U230 - - - - - - - U400 - - U400 - - - - - - - U440 - - U440 - - - - - - - U525 - - U525 - - - - - - - U690 - - U690 - - - - - - - U1000 - - U1000 - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Voltage Level - 電圧レベル - 전압 레벨 - - - - 電圧レベルを選択。 - 전압 레벨을 선택합니다. - - - - NominalCurrent - A set of nominal currents in [A] for which the data of this instance is valid. At least one value shall be provided. Any value in the set shall not exceed the value of the -UltimateRatedCurrent associated with the same breaker unit. - - - - - - - Nominal Current - 定格電流 - 정격전류 - - - - 定格電流[A]を少なくても1つ値をセットしなければならない。 - セット内の任意の値の値を超えてはならない。 - 定格電流は、同じブレーカ部に関連付けられている。 - 정격 전류 [A]를 적어도 1 개의 값을 설정해야한다. 동일한 차단기부와 연결된 정격전류는세트 내의 임의의 값은 초과할 수 없다. - - - - BreakerUnitIPICurve - A curve that establishes the let through peak current of a breaker unit when a particular prospective current is applied. Note that the breaker unit IPI curve is defined within a Cartesian coordinate system and this fact must be asserted within the property set: - -(1) Defining value: A list of minimum 2 and maximum 16 numbers providing the currents in [A] for points in the I/Î log/log coordinate space. The curve is drawn as a straight line between two consecutive points. -(2) Defined value: A list of minimum 2 and maximum 16 numbers providing the let-through peak currents, Î, in [A] for points in the I/Î log/log coordinate space. The curve is drawn as a straight line between two consecutive points. - - - - - - - - - - - - - Breaker Unit IPICurve - 遮断機曲線 - 차단기 곡선 - - - - 適用された電流と通過する遮断機のエネルギーを示した曲線 - (1)定義値:ProspectiveCurrent(固有電流): - 電流/I2tで示される最小2から最大8のリストで電流[A]を定義します。 - カーブが連続する2つの点を結ぶ直線として描かれています。 - - - (2)定義値:LetThroughEnergy: - 電流/I2tで示される最小2から最大8のリストで通過エネルギー電流[[A2s]を定義します。 - カーブが連続する2つの点を結ぶ直線として描かれています。 - 적용된 전류 통과 차단기의 에너지를 나타낸 곡선 (1) 정의 값 : ProspectiveCurrent (고유 전류) : 전류 / I2t에 표시된 최소 2에서 최대 8 개의 목록에서 전류 [A]를 정의합니다. 커브가 연속되는 두 개의 점을 연결하는 직선으로 그려져 있습니다. (2) 정의 값 : LetThroughEnergy : 전류 / I2t에 표시된 최소 2에서 최대 8 개의 목록에서 통과 에너지 전류 [A2s을 정의합니다. 커브가 연속되는 두 개의 점을 연결하는 직선으로 그려져 있습니다. - - - - - - プロパティセット定義文 -保護装置の通電エネルギーの曲線を表す一連のプロパティセット -注記-保護装置は、根本的な特性に関連付けられた提供されたプロパティの情報は、 異なる実態に関連しているかもしれません。                  - - - - - Pset_ProtectiveDeviceBreakerUnitTypeMCB - A coherent set of attributes representing the breaking capacities of an MCB. Note - A protective device may be associated with different instances of this property set providing information related to different basic characteristics. - - - IfcProtectiveDevice/CIRCUITBREAKER - - IfcProtectiveDevice/CIRCUITBREAKER - - - PowerLoss - The power loss in [W] per pole of the MCB when the nominal current is flowing through the MCB. - - - - - - - Power Loss - 電力損失 - 전력 손실 - - - - 定格電流がMCBに流れている時のMCBの極当たりの電力損失[W]。 - 정격 전류가 MCB 흐르고있을 때의 MCB 극 당 전력 손실 [W]. - - - - VoltageLevel - The voltage levels for which the data of the instance is valid. More than one value may be selected in the enumeration. - - - - U230 - U400 - U440 - U525 - U690 - U1000 - OTHER - NOTKNOWN - UNSET - - - - U230 - - U230 - - - - - - - U400 - - U400 - - - - - - - U440 - - U440 - - - - - - - U525 - - U525 - - - - - - - U690 - - U690 - - - - - - - U1000 - - U1000 - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Voltage Level - 電圧レベル - 전압 레벨 - - - - 電圧レベルを選択。 - 전압레벨을 선택합니다. - - - - NominalCurrents - A set of nominal currents in [A] for which the data of this instance is valid. At least one value shall be provided. Any value in the set shall not exceed the value of the -UltimateRatedCurrent associated with the same breaker unit. - - - - - - - - - Nominal Currents - 定格電流 - 정격 전류 - - - - 定格電流[A]を少なくても1つ値をセットしなければならない。 - セット内の任意の値の値を超えてはならない。 - 定格電流は、同じブレーカ部に関連付けられている。 - 정격 전류 [A]를 적어도 2 개의 값을 설정해야한다. 동일한 차단기부와 연결된 정격전류는세트 내의 임의의 값은 초과할 수 없다. - - - - ICU60947 - The ultimate breaking capacity in [A] for an MCB tested in accordance with the IEC 60947 series. - - - - - - - ICU60947 - 定格限界短絡遮断容量 - 정격 한계 단락 차단 용량 - - - - IECの60947シリーズに基づいてテストされたMCBの定格限界短絡遮断容量を[A]で設定。 - IEC의 60948 시리즈를 기반으로 시험한 MCB의 정격 한계 단락 차단 용량 [A]로 설정. - - - - ICS60947 - The service breaking capacity in [A] for an MCB tested in accordance with the IEC 60947 series. - - - - - - - ICS60947 - 定格使用短絡遮断容量 - 정격 사용 단락 차단 용량 - - - - IECの60947シリーズに基づいてテストされたMCBの定格使用短絡遮断容量を[A]で設定。 - IEC의 60947 시리즈를 기반으로 시험한 MCB의 정격 사용 단락 차단 용량 [A]로 설정. - - - - ICN60898 - The nominal breaking capacity in [A] for an MCB tested in accordance with the IEC 60898 series. - - - - - - - ICN60898 - ICN60898 - ICN60898 - - - - IECの60898シリーズに基づいてテストされたMCBの定格遮断容量を[A]で設定。 - IEC의 60898 시리즈를 기반으로 시험한 MCB의 정격 차단 용량 [A]로 설정. - - - - ICS60898 - The service breaking capacity in [A] for an MCB tested in accordance with the IEC 60898 series. - - - - - - - ICS60898 - ICS60898 - ICS60898 - - - - IECの60898シリーズに基づいてテストされたMCBの遮断使用容量を[A]で設定。 - IEC의 60898 시리즈를 기반으로 시험한 MCB 차단 사용 용량 [A]로 설정. - - - - - - - - - - Pset_ProtectiveDeviceBreakerUnitTypeMotorProtection - A coherent set of attributes representing different capacities of a a motor protection device, defined in accordance with IEC 60947. Note - A protective device may be associated with different instances of this Pset. - - - IfcProtectiveDevice - - IfcProtectiveDevice - - - PerformanceClasses - A set of designations of performance classes for the breaker unit for which the data of this instance is valid. A breaker unit being a motor protection device may be -constructed for different levels of breaking capacities. A maximum of 7 different -performance classes may be provided. Examples of performance classes that may be specified include B, C, N, S, H, L, V. - - - - - - - - - Performance Classes - 能力クラス - 능력클래스 - - - - モータ保護を行う開閉装置は、能力が違う最大7種類がある。名称の例として、B, C, N, S, H, L, Vが含まれる。 - 모터 보호하는 개폐 장치는 능력이 다른 최대 7 종류가있다. 이름의 예로는, B, C, N, S, H, L, V가 포함된다. - - - - VoltageLevel - The voltage levels for which the data of the instance is valid. More than one value may be selected in the enumeration. - - - - U230 - U400 - U440 - U525 - U690 - U1000 - OTHER - NOTKNOWN - UNSET - - - - U230 - - U230 - - - - - - - U400 - - U400 - - - - - - - U440 - - U440 - - - - - - - U525 - - U525 - - - - - - - U690 - - U690 - - - - - - - U1000 - - U1000 - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Voltage Level - 電圧レベル - 전압레벨 - - - - 電圧レベルを選択。 - 전압 레벨을 선택합니다. - - - - ICU60947 - The ultimate breaking capacity in [A] for a circuit breaker or motor protection device tested in accordance with the IEC 60947 series. - - - - - - - ICU60947 - ICU60947 - ICU60947 - - - - IECの60947シリーズに基づいてテスト配線用遮断機またはモータ保護装置のための遮断容量を[A]で設定。 - IEC의 60947 시리즈를 기반으로 테스트 배선용 차단기 또는 모터 보호 장치를위한 차단 용량 [A]로 설정. - - - - ICS60947 - The service breaking capacity in [A] for a circuit breaker or motor protection device tested in accordance with the IEC 60947 series. - - - - - - - ICS60947 - ICS60947 - ICS60947 - - - - IECの60947シリーズに基づいてテスト配線用遮断機またはモータ保護装置のための遮断容量サービスを[A]で設定。 - IEC의 60947 시리즈를 기반으로 테스트 배선용 차단기 또는 모터 보호 장치를위한 차단 용량 서비스를 [A]로 설정. - - - - ICW60947 - The thermal withstand current in [A] for a circuit breaker or motor protection device tested in accordance with the IEC 60947 series. The value shall be related to 1 s. - - - - - - - ICW60947 - ICW60947 - ICW60947 - - - - IEC60947シリーズに基づいてテストした配線遮断機またはモータ保護装置のための電流[A]に耐える温度。 - 値は、1sで与えられる。 - IEC60947 시리즈를 기반으로 테스트 배선 차단기 또는 모터 보호 장치를위한 전류 [A]에 견디는 온도 값은 1s 주어진다. - - - - ICM60947 - The making capacity in [A] for a circuit breaker or motor protection device tested in accordance with the IEC 60947 series. - - - - - - - ICM60947 - ICM60947 - ICM60947 - - - - IECの60947シリーズに基づいてテストした配線遮断機またはモータ保護装置のためので作る能力[A]。 - IEC의 60947 시리즈를 기반으로 테스트 배선 차단기 또는 모터 보호 장치를위한 만드는 능력 [A]. " - - - - - - AAのモータ保護装置の異なる容量を表す属性の一貫したセットは、IEC60947に基づいて定義されています。 - 注-保護装置は、このプロセッサセットの別のインスタンスに関連付けられている可能性があります。 - - - - - Pset_ProtectiveDeviceOccurrence - Properties that are applied to an occurrence of a protective device. - - - IfcProtectiveDevice - - IfcProtectiveDevice - - - PoleUsage - Pole usage. - - - - 1P - 2P - 3P - 4P - 1PN - 3PN - OTHER - NOTKNOWN - UNSET - - - - 1P - - 1 P - - - - - - - 2P - - 2 P - - - - - - - 3P - - 3 P - - - - - - - 4P - - 4 P - - - - - - - 1PN - - 1 PN - - - - - - - 3PN - - 3 PN - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Pole Usage - - - - - - - LongTimeFunction - Applying long time function -A flag indicating that the long time function (i.e. the thermal tripping) of the device is used. The value should be set to TRUE for all devices except those that allows the Long time function of the device not to be used. - - - - - - - Long Time Function - - - - - - - ShortTimeFunction - Applying short time function A flag indicating that the short time function of the device is used. The value should be set to FALSE for devices not having a short time function, or if the short time function is not selected to be used. - - - - - - - Short Time Function - - - - - - - ShortTimei2tFunction - Applying short time i2t function. A flag indicating that the I2t short time function of the device is used. The value should be set to TRUE only if the I2t function  is explicitly selected for the device. - - - - - - - Short Timei2t Function - - - - - - - GroundFaultFunction - Applying ground fault function. A flag indicating that the ground fault function of the device is used. The value should be set to FALSE for devices not having a ground fault function, or if the ground fault function is not selected to be used. - - - - - - - Ground Fault Function - - - - - - - GroundFaulti2tFunction - Applying ground fault i2t function. A flag indicating that the I2t ground fault function of the device is used. The value should be set to TRUE only if the I2t function is explicitly selected for the device. - - - - - - - Ground Faulti2t Function - - - - - - - LongTimeCurrentSetValue - Long time current set value. The set value of the long time tripping current if adjustable. - - - - - - - Long Time Current Set Value - - - - - - - ShortTimeCurrentSetValue - Short time current set value. The set value of the long time tripping current if adjustable. - - - - - - - Short Time Current Set Value - - - - - - - InstantaneousCurrentSetValue - Instantaneous current set value. The set value of the instantaneous tripping current if adjustable. - - - - - - - Instantaneous Current Set Value - - - - - - - GroundFaultCurrentSetValue - Ground fault current set value. The set value of the ground tripping current if adjustable. - - - - - - - Ground Fault Current Set Value - - - - - - - LongTimeDelay - Long time delay. The set value of the long time time-delay if adjustable. - - - - - - - Long Time Delay - - - - - - - ShortTimeTrippingTime - Short time tripping time. The set value of the short time tripping time if adjustable. - - - - - - - Short Time Tripping Time - - - - - - - InstantaneousTrippingTime - Instantaneous tripping time. The set value of the instantaneous tripping time if adjustable. - - - - - - - Instantaneous Tripping Time - - - - - - - GroundFaultTrippingTime - Ground fault tripping time. The set value of the ground fault tripping current if adjustable. - - - - - - - Ground Fault Tripping Time - - - - - - - - - - - - - Pset_ProtectiveDeviceTrippingCurve - Tripping curves are applied to thermal, thermal magnetic or MCB_RCD tripping units (i.e. tripping units having type property sets for thermal, thermal magnetic or MCB_RCD tripping defined). They are not applied to electronic tripping units. - - - IfcProtectiveDevice - - IfcProtectiveDevice - - - TrippingCurveType - The type of tripping curve that is represented by the property set. - - - - UPPER - LOWER - OTHER - NOTKNOWN - UNSET - - - - UPPER - - Upper - - - - - - - LOWER - - Lower - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Tripping Curve Type - 動作特性曲線のタイプ - 동작 특성 곡선의 유형 - - - - 動作特性曲線のタイプを指定。 - 동작 특성 곡선의 유형을 지정합니다. - - - - TrippingCurve - A curve that establishes the release time of a tripping unit when a particular prospective current is applied. Note that the tripping curve is defined within a Cartesian coordinate system and this fact must be asserted within the property set: - -(1) Defining value is the Prospective Current which is a list of minimum 2 and maximum 16 numbers providing the currents in [x In] for points in the current/time log/log coordinate space. The curve is drawn as a straight line between two consecutive points. -(2) Defined value is a list of minimum 2 and maximum 16 numbers providing the release_time in [s] for points in the current/time log/log coordinate space. The curve is drawn as a straight line between two consecutive points. Note that a defined interpolation. - - - - - - - - - - - - - Tripping Curve - 動作特性曲線 - 동작 특성 곡선 - - - - (1)電流/時間の位置[x In]で示される2~16の想定される電流値を定義する。 -(2)定義された値は、電流/時間の位置[s]で示される2~16の想定される放電時間。 - (1) 전류 / 시간 위치 [x In에서 나타나는 2 ~ 16 예상되는 전류 값을 정의한다. (2) 정의된 값은 전류 / 시간 위치 [s]로 표시되는 2 ~ 16 예상되는 방전 시간. - - - - - - プロパティセット定義文 -熱、熱磁気またはMCB_RCDトリップ装置のトリップ曲線 -(例えば、トリッピング装置は、熱,熱電磁,MCB_RCDのトリッピング定義されたプロパティセットタイプを持っている) -これらは、電子トリッピング装置に適用されない。 - - - - - Pset_ProtectiveDeviceTrippingFunctionGCurve - Tripping functions are applied to electronic tripping units (i.e. tripping units having type property sets for electronic tripping defined). They are not applied to thermal, thermal magnetic or RCD tripping units. -This property set represent the ground fault protection (G-curve) of an electronic protection device - - - IfcProtectiveDeviceTrippingUnit - - IfcProtectiveDeviceTrippingUnit - - - IsSelectable - Indication whether the S-function can be switched off or not. - - - - - - - Is Selectable - 切り替え - 전환 - - - - 装置の “ON-OFF”状態を電気的表示が切り替え可能かどうか。 - 장치"ON-OFF "상태를 전기적으로 표시가 교체 가능합니까? - - - - NominalCurrentAdjusted - An indication if the tripping currents of the short time protection is related to the nominal current multiplied with the actual setting of the current adjustment, if any, of the long time protection part of the protective device, or not. - - - - - - - Nominal Current Adjusted - 定格調整電流 - 정격전류조정 - - - - 電流によって、動作時間が短かかったり長かったりするかどうか。 - 전류 작동 시간의 여부 - - - - ExternalAdjusted - An indication if the ground fault protection may be adjusted according to an external current coil or not. - - - - - - - External Adjusted - 外部調整 - 외부조정 - - - - 外部調整が可能かどうか。 - 외부 조정이 가능합니까? - - - - ReleaseCurrent - The release current in [x In] for the initial tripping of the S-function. - - - - - - - Release Current - 放出電流 - 방출전류 - - - - 放出する電流は、S-functionの初期特性。 - 방출 전류는 S-function의 초기 특성. - - - - ReleaseTime - The release time in [s] for the initial tripping of the relevant part. This time indicates that for current lower than the indicated release current, the tripping time will be longer than the indicated release time. The value is given as a mean value. - - - - - - - Release Time - 放出時間 - 방출 시간 - - - - 関連する部分の初期トリップのための[s]が放出時間。 - このトリップ時間は、リリースの電流よりも低い電流の場合、指定された動作時間よりも長くなります。 - 値が平均値として与えられる。 - 관련 부분의 초기 여행을위한 [s]가 방출 시간. 이 트립 시간은 릴리스 전류보다 낮은 전류의 경우 지정된 동작 시간보다 길어집니다. 값을 평균으로 주어진다. - - - - CurrentTolerance1 - The tolerance for the current of time/current-curve in [%]. - - - - - - - Current Tolerance1 - 許容電流1 - 허용 전류1 - - - - 時間/特性曲線の許容範囲を[%]で指定。 - 시간 / 특성 곡선의 허용 범위를 [%]로 지정합니다. - - - - CurrentToleranceLimit1 - The time limit in [s] limiting the application of CurrentTolerance1, if any. If the value is set to 0, the value of the CurrentTolerance1 is valid for the whole time/current-curve. - - - - - - - Current Tolerance Limit1 - 許容電流限界1 - 허용전류한계1 - - - - 許容電流1を制限する時間制限。 -値が0の場合は、制限はない。 - 허용 전류 1 제한 시간 제한. 값이 0이면 제한이 없다. - - - - CurrentTolerance2 - The tolerance for the current of time/current-curve in [%] valid for times above CurrentTolereanceLimit1. - - - - - - - Current Tolerance2 - 許容電流2 - 허용전류 2 - - - - [%]で指定された時間/特性曲線の許容範囲は、上記の許容電流限界1の時間で有効です。 - [%]로 지정된 시간 / 특성 곡선의 허용 범위는 상기의 허용 전류 한계 1 시간에 유효합니다. - - - - IsCurrentTolerancePositiveOnly - Indication whether the value of CurrentTolerance1 is provided as a positive tolereance only or not. If not, the value is proved as a pluss/minus tolerance. - - - - - - - Is Current Tolerance Positive Only - 電流許容値 - 전류 허용 값 - - - - 許容電流限界1の値のみかどうか - 上記でない場合、電流許容値はプラス/マイナスした値。 - 허용 전류 한계 값 1 만 여부 위의 경우, 전류 허용 값은 플러스 / 마이너스 값. - - - - TimeTolerance1 - The tolerance for the time of time/current-curve in [%]. - - - - - - - Time Tolerance1 - 許容時間1 - 허용 시간1 - - - - [%]で時間/特性曲線の許容時間を設定 - [%] 시간 / 특성 곡선의 허용 시간을 설정 - - - - TimeToleranceLimit1 - The current limit in [x In] limiting the application of TimeTolerance1, if any. If the value is set to 0, the value of the TimeTolerance1 is valid for the whole time/current-curve. - - - - - - - Time Tolerance Limit1 - 許容限界時間1 - 허용 한계시간1 - - - - 許容時間1を制限する電流制限値。 -値が0の場合は、制限はない。 - 허용 시간 1를 제한하는 전류 제한. 값이 0이면 제한이 없다 - - - - TimeTolerance2 - The tolerance for the time of the time/current-curve in [%] valid for currents above TimeToleranceLimit1. - - - - - - - Time Tolerance2 - 許容時間2 - 허용시간 2 - - - - [%]で指定された時間/特性曲線の許容範囲は、上記の許容電流限界1の電流で有効です。 - [%]로 지정된 시간 / 특성 곡선의 허용 범위는 상기의 허용 전류 한계 1의 전류로 사용할 수 있습니다. - - - - IsTimeTolerancePositiveOnly - Indication whether the value of TimeTolerance1 is provided as a positive tolereance only or not. If not, the value is proved as a pluss/minus tolerance. - - - - - - - Is Time Tolerance Positive Only - 時間許容値 - 시간 허용치 - - - - 許容時間1の値のみかどうか - 上記でない場合、時間許容値は、プラス/マイナスした値。 - 허용 시간 1 값만 여부 위의 경우 시간 허용치는 플러스 / 마이너스 값. - - - - ReleaseCurrentI2tStart - The release current in [x In] for the start point of the I2t tripping curve of the G-function, if any. - - - - - - - Release Current I2t Start - I2tの開始放流電流 - I2t 시작 방류 전류 - - - - G関数の特性曲線I2tの始点[x In]が開始放流電流。 - G 함수 특성 곡선 I2t의 시작점 [x In]가 시작 방류 전류. - - - - ReleaseTimeI2tStart - The release time in [s] for the start point of the I2t tripping curve of the G-function, if any. - - - - - - - Release Time I2t Start - I2tの開始放流時間 - I2t 시작 방류 시간 - - - - G関数の特性曲線I2tの始点[s]が開始放流時間。 - G 함수 특성 곡선 I2t의 시작점 [s]가 시작 방류 시간. - - - - ReleaseCurrentI2tEnd - The release current in [x In] for the end point of the I2t tripping curve of the G-function, if any. The value of ReleaseCurrentI2tEnd shall be larger than ReleaseCurrentI2tStart. - - - - - - - Release Current I2t End - I2tの終了放流電流 - I2t 종료 방류 전류 - - - - G関数のI2の特性曲線のエンドポイントの[s]を放流電流。 - I2tの終了放流電流がI2tの開始放流電流よりも低くしなければならない。 - G 함수 I2의 특성 곡선의 끝점에서 s를 방류 전류. I2t 종료 방류 전류가 I2t 시작 방류 전류보다 낮게해야한다. " - - - - ReleaseTimeI2tEnd - The release time in [s] for the end point of the I2 tripping curve of the G-function, if any. The value of ReleaseTimeI2tEnd shall be lower than ReleaseTimeI2tStart. - - - - - - - Release Time I2t End - I2tの終了放流時間 - I2t 종료 방류 시간 - - - - G関数のI2の特性曲線のエンドポイントの[s]を放流時間。 - I2tの終了放流電流時間がI2tの開始放流時間よりも低くしなければならない。 - G 함수 I2의 특성 곡선의 끝점에서 s를 방류 시간. I2t 종료 방류 전류 시간이 I2t 시작 방류 시간보다 낮게해야한다 - - - - - - トリッピング関数は、電子トリッピング装置に適用される。 -(例えば、トリッピング装置は、電子トリッピング定義されたプロパティセットタイプを持っている) -これらは、熱,熱電磁,RCDトリッピング装置に適用されない。 -このプロパティセットは、電子保護装置(G-curve)の地絡保護を表す。 - - - - - Pset_ProtectiveDeviceTrippingFunctionICurve - Tripping functions are applied to electronic tripping units (i.e. tripping units having type property sets for electronic tripping defined). They are not applied to thermal, thermal magnetic or RCD tripping units. -This property set represent the instantaneous time protection (I-curve) of an electronic protection device. - - - IfcProtectiveDeviceTrippingUnit - - IfcProtectiveDeviceTrippingUnit - - - IsSelectable - Indication whether the S-function can be switched off or not. - - - - - - - Is Selectable - 切り替え - 전환 - - - - 装置の “ON-OFF”状態を電気的表示が切り替え可能かどうか。 - 장치의 "ON-OFF"상태를 전기적으로 표시가 교체 가능합니까? - - - - NominalCurrentAdjusted - An indication if the tripping currents of the short time protection is related to the nominal current multiplied with the actual setting of the current adjustment, if any, of the long time protection part of the protective device, or not. - - - - - - - Nominal Current Adjusted - 定格調整電流 - 정격전류조정 - - - - 電流によって、動作時間が短かかったり長かったりするかどうか。 - 전류 작동 시간 길이 여부 - - - - ReleaseCurrent - The release current in [x In] for the initial tripping of the S-function. - - - - - - - Release Current - 放出電流 - 방출전류 - - - - 放出する電流は、S-functionの初期特性。 - 방출 전류는 S-function의 초기 특성. - - - - ReleaseTime - The release time in [s] for the initial tripping of the relevant part. This time indicates that for current lower than the indicated release current, the tripping time will be longer than the indicated release time. The value is given as a mean value. - - - - - - - Release Time - 放出時間 - 방출 시간 - - - - 関連する部分の初期トリップのための[s]が放出時間。 - このトリップ時間は、リリースの電流よりも低い電流の場合、指定された動作時間よりも長くなります。 - 値が平均値として与えられる。 - 관련 부분의 초기 여행을위한 [s]가 방출 시간. 이 트립 시간은 릴리스 전류보다 낮은 전류의 경우 지정된 동작 시간보다 길어집니다. 값을 평균으로 주어진다. " - - - - CurrentTolerance1 - The tolerance for the current of time/current-curve in [%]. - - - - - - - Current Tolerance1 - 許容電流1 - 허용 전류1 - - - - 時間/特性曲線の許容範囲を[%]で指定。 - 시간 / 특성 곡선의 허용 범위를 [%]로 지정합니다. - - - - CurrentToleranceLimit1 - The time limit in [s] limiting the application of CurrentTolerance1, if any. If the value is set to 0, the value of the CurrentTolerance1 is valid for the whole time/current-curve. - - - - - - - Current Tolerance Limit1 - 許容電流限界1 - 허용전류한계1 - - - - 許容電流1を制限する時間制限。 -値が0の場合は、制限はない。 - 허용 전류 1 제한 시간 제한. 값이 0이면 제한이 없다. - - - - CurrentTolerance2 - The tolerance for the current of time/current-curve in [%] valid for times above CurrentTolereanceLimit1. - - - - - - - Current Tolerance2 - 許容電流2 - 허용전류 2 - - - - [%]で指定された時間/特性曲線の許容範囲は、上記の許容電流限界1の時間で有効です。 - [%]로 지정된 시간 / 특성 곡선의 허용 범위는 상기의 허용 전류 한계 1 시간에 유효합니다. - - - - IsCurrentTolerancePositiveOnly - Indication whether the value of CurrentTolerance1 is provided as a positive tolereance only or not. If not, the value is proved as a pluss/minus tolerance. - - - - - - - Is Current Tolerance Positive Only - 電流許容値 - 전류 허용 값 - - - - 許容電流限界1の値のみかどうか - 上記でない場合、電流許容値はプラス/マイナスした値。 - 허용 전류 한계 값 1 만 여부 위의 경우, 전류 허용 값은 플러스 / 마이너스 값. - - - - TimeTolerance1 - The tolerance for the time of time/current-curve in [%]. - - - - - - - Time Tolerance1 - 許容時間1 - 허용 시간1 - - - - [%]で時間/特性曲線の許容時間を設定。 - [%] 시간 / 특성 곡선의 허용 시간을 설정 - - - - TimeToleranceLimit1 - The current limit in [x In] limiting the application of TimeTolerance1, if any. If the value is set to 0, the value of the TimeTolerance1 is valid for the whole time/current-curve. - - - - - - - Time Tolerance Limit1 - 許容限界時間1 - 허용 한계시간1 - - - - 許容時間1を制限する電流制限値。 -値が0の場合は、制限はない。 - 허용 시간 1를 제한하는 전류 제한. 값이 0이면 제한이 없다 - - - - TimeTolerance2 - The tolerance for the time of the time/current-curve in [%] valid for currents above TimeToleranceLimit1. - - - - - - - Time Tolerance2 - 許容時間2 - 허용시간 2 - - - - [%]で指定された時間/特性曲線の許容範囲は、上記の許容電流限界1の電流で有効です。 - [%]로 지정된 시간 / 특성 곡선의 허용 범위는 상기의 허용 전류 한계 1의 전류로 사용할 수 있습니다. - - - - IsTimeTolerancePositiveOnly - Indication whether the value of TimeTolerance1 is provided as a positive tolereance only or not. If not, the value is proved as a pluss/minus tolerance. - - - - - - - Is Time Tolerance Positive Only - 時間許容値 - 시간 허용치 - - - - 許容時間1の値のみかどうか - 上記でない場合、時間許容値は、プラス/マイナスした値。 - 허용 시간 1 값만 여부 위의 경우 시간 허용치는 플러스 / 마이너스 값. - - - - MaxAdjustmentX_ICS - Provides the maximum setting value for the available current adjustment in relation to the -Ics breaking capacity of the protection device of which the actual tripping unit is a part of. The value is not asserted unless the instantaneous time protection is. - - - - - - - Max Adjustment X_ ICS - 最大調整X_ICS - 최대 조정 X_ICS - - - - 実際のトリップ装置の一部である保護装置のIcs 遮断容量に関連して利用可能な電流の最大調整値。 - 실제 트립 장치의 일부인 보호자 Ics 차단 용량과 관련하여 사용 가능한 전류의 최대 조정 값 - - - - IsOffWhenSFunctionOn - Indication whether the I-function is automatically switched off when the S-function is switched on. - - - - - - - Is Off When SFunction On - - - - - - - - - トリッピング関数は、電子トリッピング装置に適用される。 -(例えば、トリッピング装置は、電子トリッピング定義されたプロパティセットタイプを持っている) -これらは、熱,熱電磁,RCDトリッピング装置に適用されない。 -このプロパティセットは、電子保護装置の瞬時短絡保護(I-curve)を表す。 - - - - - Pset_ProtectiveDeviceTrippingFunctionLCurve - Tripping functions are applied to electronic tripping units (i.e. tripping units having type property sets for electronic tripping defined). They are not applied to thermal, thermal magnetic or RCD tripping units. -This property set represent the long time protection (L-curve) of an electronic protection device - - - IfcProtectiveDeviceTrippingUnit - - IfcProtectiveDeviceTrippingUnit - - - IsSelectable - Indication whether the L-function can be switched off or not. - - - - - - - Is Selectable - 切り替え - 전환 - - - - 装置の “ON-OFF”状態を電気的表示が切り替え可能かどうか。 - 장치의 "ON-OFF"상태를 전기적으로 표시가 교체 가능합니까? - - - - UpperCurrent1 - The current in [x In], indicating that for currents larger than UpperCurrent1 the I2t part of the L-function will trip the current. - - - - - - - Upper Current1 - 上電流1 - 상전류1 - - - - [x In]の電流,電流をトリップするL関数のI2t部分は、上限電流1よりも大きい電流を示す。 - x In] 전류 전류를 여행하는 L 함수 I2t 부분은 최대 전류 1보다 큰 전류를 보여준다. - - - - UpperCurrent2 - The current in [x In], indicating the upper current limit of the upper time/current curve of the I2t part of the L-function. - - - - - - - Upper Current2 - 上電流2 - 상전류2 - - - - [x In]の電流,電流をトリップするL関数のI2t部分は、上限時間/特性曲線よりも大きい電流を示す。 - [x In] 전류 전류를 여행하는 L 함수 I2t 부분은 제한 시간 / 특성 곡선보다 큰 전류를 보여준다. - - - - UpperTime1 - The time in [s], indicating that tripping times of the upper time/current curve lower than UpperTime1 is determined by the I2t part of the L-function. - - - - - - - Upper Time1 - 上時間1 - 상시간1 - - - - [s]の時間,上時間より低い上部の時間/特性曲線のトリップ時間は、L-関数ののI2t部分によって決定される。 - [s]의 시간에 시간 더 낮은 위 시간 / 특성 곡선의 트립 시간은 L-함수의 I2t 부분에 의해 결정된다 - - - - UpperTime2 - The time in [s], indicating the tripping times of the upper time/current curve at the UpperCurrent2. - - - - - - - Upper Time2 - 上時間2 - 상시간2 - - - - [s]の時間,上電流2より上部の特性曲線のトリップ時間を示す - [s]의 시간에 전류 2보다 상단의 특성 곡선의 트립 시간을 나타냄 - - - - LowerCurrent1 - The current in [x In], indicating that for currents smaller than LowerCurrent1 the I2t part of the L-function will not trip the current, - - - - - - - Lower Current1 - 下電流1 - 하전류 1 - - - - [x In]の電流,電流をトリップするL関数のI2t部分は、下電流1よりも小さい電流を示す。 - [x In] 전류 전류를 여행하는 L 함수 I2t 부분은 아래 전류 1보다 작은 전류를 보여준다. - - - - LowerCurrent2 - The current in [x In], indicating the upper current limit of the lower time/current curve of the I2t part of the L-function. - - - - - - - Lower Current2 - 下電流2 - 하전류 2 - - - - [x In]の電流,電流をトリップするL関数のI2t部分は、特性曲線よりも小さい電流を示す。 - x In] 전류 전류를 여행하는 L 함수 I2t 부분은 곡선보다 작은 전류를 보여준다. - - - - LowerTime1 - The time in [s], indicating that tripping times of the lower time/current curve lower than LowerTime1 is determined by the I2t part of the L-function. - - - - - - - Lower Time1 - 下時間1 - 하 시간 1 - - - - [s]の時間,下時間より低い特性曲線のトリップ時間は、L-関数ののI2t部分によって決定される。 - [s] 시간 아래 시간보다 낮은 특성 곡선의 트립 시간은 L-함수의 I2t 부분에 의해 결정된다. - - - - LowerTime2 - The time in [s], indicating the tripping times of the upper time/current curve at the LowerCurrent2. - - - - - - - Lower Time2 - 下時間2 - 하 시간 2 - - - - [s]の時間,下電流2より下部の特性曲線のトリップ時間を示す。 - [s] 시간, 아래 전류 2보다 하부의 특성 곡선의 트립 시간을 보여준다. - - - - - - トリッピング関数は、電子トリッピング装置に適用される。 -(例えば、トリッピング装置は、電子トリッピング定義されたプロパティセットタイプを持っている) -これらは、熱,熱電磁,RCDトリッピング装置に適用されない。 -このプロパティセットは、電子保護装置の遅延短絡保護(L-curve)を表す。 - - - - - Pset_ProtectiveDeviceTrippingFunctionSCurve - Tripping functions are applied to electronic tripping units (i.e. tripping units having type property sets for electronic tripping defined). They are not applied to thermal, thermal magnetic or RCD tripping units. -This property set represent the short time protection (S-curve) of an electronic protection device. - - - IfcProtectiveDeviceTrippingUnit - - IfcProtectiveDeviceTrippingUnit - - - IsSelectable - Indication whether the S-function can be switched off or not. - - - - - - - Is Selectable - 切り替え - 전환 - - - - 装置の “ON-OFF”状態を電気的表示が切り替え可能かどうか。 - 장치"ON-OFF "상태를 전기적으로 표시가 교체 가능합니까? - - - - NominalCurrentAdjusted - An indication if the tripping currents of the short time protection is related to the nominal current multiplied with the actual setting of the current adjustment, if any, of the long time protection part of the protective device, or not. - - - - - - - Nominal Current Adjusted - 定格調整電流 - 정격전류조정 - - - - 電流によって、動作時間が短かかったり長かったりするかどうか。 - 전류 작동 시간의 여부 - - - - ReleaseCurrent - The release current in [x In] for the initial tripping of the S-function. - - - - - - - Release Current - 放出電流 - 방출전류 - - - - 放出する電流は、S-functionの初期特性。 - 방출 전류는 S-function의 초기 특성. - - - - ReleaseTime - The release time in [s] for the initial tripping of the relevant part. This time indicates that for current lower than the indicated release current, the tripping time will be longer than the indicated release time. The value is given as a mean value. - - - - - - - Release Time - 放出時間 - 방출 시간 - - - - 関連する部分の初期トリップのための[s]が放出時間。 - このトリップ時間は、リリースの電流よりも低い電流の場合、指定された動作時間よりも長くなります。 - 値が平均値として与えられる。 - 관련 부분의 초기 여행을위한 [s]가 방출 시간. 이 트립 시간은 릴리스 전류보다 낮은 전류의 경우 지정된 동작 시간보다 길어집니다. 값을 평균으로 주어진다. - - - - CurrentTolerance1 - The tolerance for the current of time/current-curve in [%]. - - - - - - - Current Tolerance1 - 許容電流1 - 허용 전류1 - - - - 時間/特性曲線の許容範囲を[%]で指定。 - 시간 / 특성 곡선의 허용 범위를 [%]로 지정합니다. - - - - CurrentToleranceLimit1 - The time limit in [s] limiting the application of CurrentTolerance1, if any. If the value is set to 0, the value of the CurrentTolerance1 is valid for the whole time/current-curve. - - - - - - - Current Tolerance Limit1 - 許容電流限界1 - 허용전류한계1 - - - - 許容電流1を制限する時間制限。 -値が0の場合は、制限はない。 - 허용 전류 1 제한 시간 제한. 값이 0이면 제한이 없다. - - - - CurrentTolerance2 - The tolerance for the current of time/current-curve in [%] valid for times above CurrentTolereanceLimit1. - - - - - - - Current Tolerance2 - 許容電流2 - 허용전류 2 - - - - [%]で指定された時間/特性曲線の許容範囲は、上記の許容電流限界1の時間で有効です。 - [%]로 지정된 시간 / 특성 곡선의 허용 범위는 상기의 허용 전류 한계 1 시간에 유효합니다. - - - - IsCurrentTolerancePositiveOnly - Indication whether the value of CurrentTolerance1 is provided as a positive tolereance only or not. If not, the value is proved as a pluss/minus tolerance. - - - - - - - Is Current Tolerance Positive Only - 電流許容値 - 전류 허용 값 - - - - 許容電流限界1の値のみかどうか - 上記でない場合、電流許容値はプラス/マイナスした値。 - 허용 전류 한계 값 1 만 여부 위의 경우, 전류 허용 값은 플러스 / 마이너스 값. - - - - TimeTolerance1 - The tolerance for the time of time/current-curve in [%]. - - - - - - - Time Tolerance1 - 許容時間1 - 허용 시간1 - - - - [%]で時間/特性曲線の許容時間を設定 - [%] 시간 / 특성 곡선의 허용 시간을 설정 - - - - TimeToleranceLimit1 - The current limit in [x In] limiting the application of TimeTolerance1, if any. If the value is set to 0, the value of the TimeTolerance1 is valid for the whole time/current-curve. - - - - - - - Time Tolerance Limit1 - 許容限界時間1 - 허용 한계시간1 - - - - 許容時間1を制限する電流制限値。 -値が0の場合は、制限はない。 - 허용 시간 1를 제한하는 전류 제한. 값이 0이면 제한이 없다 - - - - TimeTolerance2 - The tolerance for the time of the time/current-curve in [%] valid for currents above TimeToleranceLimit1. - - - - - - - Time Tolerance2 - 許容時間2 - 허용시간 2 - - - - [%]で指定された時間/特性曲線の許容範囲は、上記の許容電流限界1の電流で有効です。 - [%]로 지정된 시간 / 특성 곡선의 허용 범위는 상기의 허용 전류 한계 1의 전류로 사용할 수 있습니다. - - - - IsTimeTolerancePositiveOnly - Indication whether the value of TimeTolerance1 is provided as a positive tolereance only or not. If not, the value is proved as a pluss/minus tolerance. - - - - - - - Is Time Tolerance Positive Only - 時間許容値 - 시간 허용치 - - - - 許容時間1の値のみかどうか。 - 上記でない場合、時間許容値は、プラス/マイナスした値。 - 허용 시간 1 값만 여부 위의 경우 시간 허용치는 플러스 / 마이너스 값. - - - - ReleaseCurrentI2tStart - The release current in [x In] for the start point of the I2t tripping curve of the S-function, if any. - - - - - - - Release Current I2t Start - I2tの開始放流電流 - I2t 시작 방류 전류 - - - - S関数の特性曲線I2tの始点[x In]が開始放流電流。 - S 함수 특성 곡선 I2t의 시작점 [x In]가 시작 방류 전류. - - - - ReleaseTimeI2tStart - The release time in [s] for the start point of the I2t tripping curve of the S-function, if any - - - - - - - Release Time I2t Start - I2tの開始放流時間 - I2t 시작 방류 시간 - - - - S関数の特性曲線I2tの始点[s]が開始放流時間。 - S함수 특성 곡선 I2t의 시작점 [s]가 시작 방류 시간. - - - - ReleaseCurrentI2tEnd - The release current in [x In] for the end point of the I2t tripping curve of the S-function, if any. The value of ReleaseCurrentI2tEnd shall be larger than ReleaseCurrentI2tStart. - - - - - - - Release Current I2t End - I2tの終了放流電流 - I2t 종료 방류 전류 - - - - S関数のI2の特性曲線のエンドポイントの[s]を放流電流。 - I2tの終了放流電流がI2tの開始放流電流よりも低くしなければならない。 - S함수 I2의 특성 곡선의 끝점에서 s를 방류 전류. I2t 종료 방류 전류가 I2t 시작 방류 전류보다 낮게해야한다. " - - - - ReleaseTimeI2tEnd - The release time in [s] for the end point of the I2 tripping curve of the S-function, if any. The value of ReleaseTimeI2tEnd shall be lower than ReleaseTimeI2tStart. - - - - - - - Release Time I2t End - I2tの終了放流時間 - I2t 종료 방류 시간 - - - - S関数のI2の特性曲線のエンドポイントの[s]を放流時間。 - I2tの終了放流電流時間がI2tの開始放流時間よりも低くしなければならない。 - S함수 I2의 특성 곡선의 끝점에서 s를 방류 시간. I2t 종료 방류 전류 시간이 I2t 시작 방류 시간보다 낮게해야한다 - - - - IsOffWhenLfunctionOn - Indication whether the S-function is automatically switched off when the I-function is switched on. - - - - - - - Is Off When Lfunction On - - - - - - - - - トリッピング関数は、電子トリッピング装置に適用される。 -(例えば、トリッピング装置は、電子トリッピング定義されたプロパティセットタイプを持っている) -これらは、熱,熱電磁,RCDトリッピング装置に適用されない。 -このプロパティセットは、電子保護装置の短絡保護(S-curve)を表す。 - - - - - Pset_ProtectiveDeviceTrippingUnitCurrentAdjustment - A set of current adjustment values that may be applied to an electronic or thermal tripping unit type. - - - IfcProtectiveDeviceTrippingUnit - - IfcProtectiveDeviceTrippingUnit - - - AdjustmentValueType - The type of adjustment value that is applied through the property set. This determines the properties that should be asserted (see below). - - - - RANGE - LIST - - - - RANGE - - Range - - - - - - - LIST - - List - - - - - - - - - - Adjustment Value Type - 調整値の型 - 조정 형식 - - - - 調整値のタイプを設定。 - 조정 값 유형을 설정합니다. - - - - AdjustmentRange - Upper and lower current adjustment limits for an AdjustmentValueType = RANGE. Note that this property should not have a value for an AdjustmentValueType = LIST. - - - - - - - Adjustment Range - 調整範囲 - 조정 범위 - - - - 時間調整の範囲の上限値と下限値を設定。一覧表ではもっていない事を注意。 - 시간 조정 범위의 상한 치와 하한 치를 설정합니다. 목록은 갖고 있지 않은 것을주의. - - - - AdjustmentRangeStepValue - Step value of current adjustment for an AdjustmentValueType = RANGE. Note that this property should not have a value for an AdjustmentValueType = LIST. - - - - - - - Adjustment Range Step Value - 調整範囲のステップ値 - 조정범위 단계값 - - - - 時間調整の範囲をステップ値を設定。一覧表ではもっていない事を注意。 - 시간 조정 범위를 단계 값을 설정합니다. 목록은 갖고 있지 않은 것을주의. - - - - AdjustmentValues - A list of current adjustment values that may be applied to a tripping unit for an AdjustmentValueType = LIST. A minimum of 1 and a maximum of 16 adjustment values may be specified. Note that this property should not have a value for an AdjustmentValueType = RANGE. - - - - - - - - - Adjustment Values - 調整値 - 조정 값 - - - - 時間調整値を1から16で設定。範囲では、ない事を注意。 - 시간 조정 값을 1에서 16로 설정. 범위는없는 것을주의. - - - - AdjustmentDesignation - The desgnation on the device for the adjustment. - - - - - - - Adjustment Designation - 調整の指定 - 조정지정 - - - - 調整する装置の指定。 - 조정하는 장치를 지정합니다. - - - - - - 電磁式または熱動式のトリップ装置の電流調整値。 - - - - - Pset_ProtectiveDeviceTrippingUnitTimeAdjustment - A set of time adjustment values that may be applied to an electronic or thermal tripping unit type. - - - IfcProtectiveDeviceTrippingUnit - - IfcProtectiveDeviceTrippingUnit - - - AdjustmentValueType - The type of adjustment value that is applied through the property set. This determines the properties that should be asserted (see below). - - - - RANGE - LIST - - - - RANGE - - Range - - - - - - - LIST - - List - - - - - - - - - - Adjustment Value Type - 調整値の型 - 조정 형식 - - - - 調整値のタイプを設定。 - 조정 값 유형을 설정합니다. - - - - AdjustmentRange - Upper and lower time adjustment limits for an AdjustmentValueType = RANGE. Note that this property should not have a value for an AdjustmentValueType = LIST. - - - - - - - Adjustment Range - 調整範囲 - 조정 범위 - - - - 時間調整の範囲の上限値と下限値を設定。一覧表ではもっていない事を注意。 - 시간 조정 범위의 상한 치와 하한 치를 설정합니다. 목록은 갖고 있지 않은 것을주의. - - - - AdjustmentRangeStepValue - Step value of time adjustment for an AdjustmentValueType = RANGE. Note that this property should not have a value for an AdjustmentValueType = LIST. - - - - - - - Adjustment Range Step Value - 調整範囲のステップ値 - 조정범위 단계값 - - - - 時間調整の範囲をステップ値を設定。一覧表ではもっていない事を注意。 - 시간 조정 범위를 단계 값을 설정합니다. 목록은 갖고 있지 않은 것을주의. - - - - AdjustmentValues - A list of time adjustment values that may be applied to a tripping unit for an AdjustmentValueType = LIST. A minimum of 1 and a maximum of 16 adjustment values may be specified. Note that this property should not have a value for an AdjustmentValueType = RANGE. - - - - - - - - - Adjustment Values - 調整値 - 조정 값 - - - - 時間調整値を1から16で設定。範囲では、ない事を注意。 - 시간 조정 값을 1에서 16로 설정. 범위는없는 것을주의. - - - - AdjustmentDesignation - The desgnation on the device for the adjustment. - - - - - - - Adjustment Designation - 調整の指定 - 조정지정 - - - - 調整する装置の指定。 - 조정하는 장치를 지정합니다. - - - - CurrentForTimeDelay - The tripping current in [x In] at which the time delay is specified. A value for this property should only be asserted for time delay of L-function, and for I2t of the S and G function. - - - - - - - Current For Time Delay - 時延電流 - 시간연장 전류 - - - - 時延[x]ののトリップ電流は、L関数の遅延時間、およびSとG関数のI2tを指定。 - 시간 연장 [x]의 트립 전류는 L 함수의 지연 시간 및 S와 G 함수 I2t를 지정합니다. - - - - I2TApplicability - The applicability of the time adjustment related to the tripping function. - - - - L_FUNCTION - S_FUNCTION - G_FUNCTION - OTHER - NOTKNOWN - UNSET - - - - RANGE - - Range - - - - - - - LIST - - List - - - - - - - - - - I2 TApplicability - I2Tの適用 - 12 T적용 - - - - トリップ機能の時延を求める時に適用する関数。 - 트립 기능 시간 연장을 요구할 때 적용하는 함수입니다. - - - - - - 電磁式または熱動式トリップユニット型に適用することができる時間調整(時延)のセット。 - - - - - Pset_ProtectiveDeviceTrippingUnitTypeCommon - Common information concerning tripping units that area associated with protective devices - - - IfcProtectiveDeviceTrippingUnit - - IfcProtectiveDeviceTrippingUnit - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照 - 참조 - - - - 当該プロジェクトで定義する形式の参照ID(例:A-1)、承認された分類に存在しないときに使用される。 - 해당 프로젝트에 정의된 형식의 참조 ID (예 : A-1) 승인된 분류에 존재하지 않을 때 사용된다. - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - Standard - The designation of the standard applicable for the definition of the characteristics of the -tripping_unit. - - - - - - - Standard - 特性定義 - 특성 정의 - - - - トリッピング装置の特性定義のための標準的な適用の指定。 - 토릿삔구 장치의 특성 정의에 대한 표준 적용 지정. - - - - UseInDiscrimination - An indication whether the time/current tripping information can be applied in a discrimination -analysis or not. - - - - - - - Use In Discrimination - 使用方法 - 사용방법 - - - - トリップ情報を時間か電流かどちらで判断するか。 - 트립 정보를 시간 또는 전류가 어디에서 결정하는가? - - - - AtexVerified - An indication whether the tripping_unit is verified to be applied in EX-environment or not. - - - - - - - Atex Verified - アテックス認証 - EX -환경 인증 - - - - トリップ装置がEX-環境で適用されるかどうか。 - 트립 장치가 EX-환경에 적용되는지 여부 - - - - OldDevice - Indication whether the protection_ unit is out-dated or not. If not out-dated, the device is still for sale. - - - - - - - Old Device - 販売中止装置 - 판매중지 장치 - - - - 基準に適合されていて販売されているかどうか。 - 기준에 적합하여 판매하는지에 대한 여부 - - - - LimitingTerminalSize - The maximum terminal size capacity of the device. - - - - - - - Limiting Terminal Size - 接続限界値 - 연결 한계 - - - - 装置に接続される最大サイズ。 - 장치에 연결되는 최대 크기입니다. - - - - - - 保護装置に関連付けられているトリップ機能に関する共通情報。 - - - - - Pset_ProtectiveDeviceTrippingUnitTypeElectroMagnetic - Information on tripping units that are electrically or magnetically tripped. - - - IfcProtectiveDeviceTrippingUnit/ELECTROMAGNETIC - - IfcProtectiveDeviceTrippingUnit/ELECTROMAGNETIC - - - ElectroMagneticTrippingUnitType - A list of the available types of electric magnetic tripping unit from which that required may be selected. These cover overload, none special, short circuit, motor protection and bi-metal tripping. - - - - OL - TMP_STD - TMP_SC - TMP_MP - TMP_BM - OTHER - NOTKNOWN - UNSET - - - - OL - - Ol - - - - - - - TMP_STD - - Tmp Std - - - - - - - TMP_SC - - Tmp Sc - - - - - - - TMP_MP - - Tmp Mp - - - - - - - TMP_BM - - Tmp Bm - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Electro Magnetic Tripping Unit Type - 電磁トリップ装置タイプ - 전자 트립장치 유형 - - - - 電磁トリップ装置タイプを選択する。(過電流・配線用・モーター・バイメタル・その他) - 전자 트립 장치 유형을 선택합니다. (과전류 · 배선 모터 바이메탈 기타) - - - - I1 - The (thermal) lower testing current limit in [x In], indicating that for currents lower than I1, the tripping time shall be longer than the associated tripping time, T2. - - - - - - - I1 - I1 - I1 - - - - 熱動式の低試験電流限界値を [x In]、電流は I1 よりも低い値を示す。トリップ時間は関連する T2 の時間よりも長い。 - 열 동식 낮은 시험 전류 한계를 [x In] 전류는 I1보다 낮은 값을 나타낸다. 트립 시간은 관련 T2 시간보다 길다. - - - - I2 - The (thermal) upper testing current limit in [x In], indicating that for currents larger than I2, the tripping time shall be shorter than the associated tripping time, T2. - - - - - - - I2 - I2 - I2 - - - - 熱動式の高試験電流限界値を [x In], 電流は I2 よりも高い値を示す。トリップ時間は関連する T2 の時間よりも短い。 - 열 동식 높은 시험 전류 한계를 [x In], 전류 I2보다 높은 값을 나타낸다. 트립 시간은 관련 T2 시간보다 짧다. - - - - T2 - The (thermal) testing time in [s] associated with the testing currents I1 and I2. - - - - - - - T2 - T2 - T2 - - - - 熱動式の試験時間を [s] , 関連する試験電流を I1 と I2 とする。 - 열 동식 시험 시간 [s] 관련 시험 전류를 I1과 I2로한다. - - - - DefinedTemperature - The ambient temperature at which the thermal current/time-curve associated with this protection device is defined. - - - - - - - Defined Temperature - 設定温度 - 설정 온도 - - - - この保護装置が定める温度・電流/時間-カーブに関連する周囲温度。 - 이 보호 장치가 정한 온도 · 전류 / 시간 - 곡선과 관련된 주위 온도. - - - - TemperatureFactor - The correction factor (typically measured as %/deg K) for adjusting the thermal current/time to an ambient temperature different from the value given by the defined temperature. - - - - - - - Temperature Factor - 温度係数 - 온도 계수 - - - - 熱の電流/時間を、定義済みの温度によって与えられる値と異なる場合に周囲温度に合わせるための補正係数(%/deg K で計測する)。 - 열 전류 / 시간 미리 정의된 온도에 의해 주어진 값과 다른 경우 주위 온도에 맞추기위한 보정 계수 (% / deg K로 측정한다). - - - - I4 - The lower electromagnetic testing current limit in [x In], indicating that for currents lower than I4, the tripping time shall be longer than the associated tripping time, T5, i.e. the device shall not trip instantaneous. - - - - - - - I4 - I4 - I4 - - - - 電磁の低試験電流限界値を [x In], 電流は I4 よりも低い値を示す。トリップ時間は関連する T5 と瞬時に遮断する定格使用電流の時間よりも長い。 - 전자 낮은 시험 전류 한계를 [x In] 전류는 I4보다 낮은 값을 나타낸다. 트립 시간은 관련 T5 즉석에서 차단하는 정격 사용 전류의 시간보다 길다. - - - - I5 - The upper electromagnetic testing current limit in [x In], indicating that for currents larger than I5, the tripping time shall be shorter than or equal to the associated tripping time, T5, i.e. the device shall trip instantaneous. - - - - - - - I5 - I5 - I5 - - - - 電磁の高試験電流限界値を [x In], 電流は I4 よりも低い値を示す。トリップ時間は関連する T5 と瞬時に遮断する定格使用電流の時間よりも長い。 - 전자의 높은 시험 전류 한계를 [x In] 전류는 I4보다 낮은 값을 나타낸다. 트립 시간은 관련 T5 즉석에서 차단하는 정격 사용 전류의 시간보다 길다. - - - - T5 - The electromagnetic testing time in [s] associated with the testing currents I4 and I5, i.e. electromagnetic tripping time - - - - - - - T5 - T5 - T5 - - - - 電磁の試験時間を [s] , 関連する試験電流を I4 と I5 とする。 - 전자 시험 시간 [s] 관련 시험 전류를 I4하면 I5한다. - - - - CurveDesignation - The designation of the trippingcurve given by the manufacturer. For a MCB the designation should be in accordance with the designations given in IEC 60898. - - - - - - - Curve Designation - 曲線指定 - 곡성 지정 - - - - メーカーが提供する指定のトリッピングカーブ。MCBのために、指定はIEC 60898に準拠しなければならない。 - 제조 업체가 제공하는 지정된 토릿삔구 곡선. MCB 위해, 지정은 IEC 60898을 준수해야한다. - - - - - - 電気と磁気により遮断するトリップ装置の情報。 - - - - - Pset_ProtectiveDeviceTrippingUnitTypeElectronic - Information on tripping units that are electronically tripped. - - - IfcProtectiveDeviceTrippingUnit/ELECTRONIC - - IfcProtectiveDeviceTrippingUnit/ELECTRONIC - - - ElectronicTrippingUnitType - A list of the available types of electronic tripping unit from which that required may be selected. - - - - EP_BM - EP_MP - EP_SC - EP_STD - EP_TIMEDELAYED - OTHER - NOTKNOWN - UNSET - - - - EP_BM - - Ep Bm - - - - - - - EP_MP - - Ep Mp - - - - - - - EP_SC - - Ep Sc - - - - - - - EP_STD - - Ep Std - - - - - - - EP_TIMEDELAYED - - Ep Timedelayed - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Electronic Tripping Unit Type - 電磁式の装置タイプ - 전자식 장치 유형 - - - - 電磁式の装置タイプをリストから選択。 - 전자식 장치 유형을 목록에서 선택합니다. - - - - NominalCurrents - A set of values providing information on available modules (chips) for setting the nominal current of the protective device. If -the set is empty, no nominal current modules are available for the tripping unit. - - - - - - - - - Nominal Currents - 定格電流 - 정격전류 - - - - トリップ装置が対応する定格電流。 - 트립 장치가 지원하는 정격 전류. - - - - N_Protection - An indication whether the electronic tripping unit has separate protection for the N conductor, or not. - - - - - - - N_ Protection - N_Protection - N_Protection - - - - 電磁式トリップ装置がN個の導体を保護するか否かの設定。 - 전자식 트립 장치가 N 개의 도체를 보호 여부 설정. - - - - N_Protection_50 - An indication whether the electronic tripping unit is tripping if the current in the N conductor is more than 50% of that of the phase conductors. The property is only asserted if the property N_Protection is asserted. - - - - - - - N_ Protection_50 - N_Protection_50 - N_Protection_50 - - - - 電磁式トリップ装置がN導体の50%以上で保護するか否かの設定。 - 전자식 트립 장치가 N 도체의 50 % 이상으로 보호 여부 설정. - - - - N_Protection_100 - An indication whether the electronic tripping unit is tripping if the current in the N conductor is more than 100% of that of the phase conductors. The property is only asserted if the property N_Protection is asserted. - - - - - - - N_ Protection_100 - N_Protection_100 - N_Protection_100 - - - - 電磁式トリップ装置がN導体の100%以上で保護するか否かの設定。 - 전자식 트립 장치가 N 도체의 100 % 이상으로 보호 여부 설정. - - - - N_Protection_Select - An indication whether the use of the N_Protection can be selected by the user or not. If both the properties N_Protection_50 and N_Protection_100 are asserted, the value of N_Protection_Select property is set to TRUE. The property is only asserted if the property N_Protection is asserted. - - - - - - - N_ Protection_ Select - N_Protectionの選択 - N_Protection 선택 - - - - どのN_Protectionを使うかユーザが設定できるかどうかを指定する。 -N_Protection_50とN_Protection_100の両方が有効な場合は、TRUEにします。 - 어떤 N_Protection를 사용하거나 사용자가 설정할 수 있는지 여부를 지정합니다. N_Protection_50하면 N_Protection_100를 모두 사용할 경우에는 TRUE합니다. - - - - - - 電気で遮断するトリップ装置の情報。 - - - - - Pset_ProtectiveDeviceTrippingUnitTypeResidualCurrent - Information on tripping units that are activated by residual current. - - - IfcProtectiveDeviceTrippingUnit/RESIDUALCURRENT - - IfcProtectiveDeviceTrippingUnit/RESIDUALCURRENT - - - TrippingUnitReleaseCurrent - The value of tripping or residual current for which the device has the possibility to be equipped. The values are given in mA. - - - - 10 - 30 - 100 - 300 - 500 - 1000 - OTHER - NOTKNOWN - UNSET - - - - 10 - - 10 - - - - - - - 30 - - 30 - - - - - - - 100 - - 100 - - - - - - - 300 - - 300 - - - - - - - 500 - - 500 - - - - - - - 1000 - - 1000 - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Tripping Unit Release Current - 定格感度電流 - 정격 감도 전류 - - - - 漏電ブレーカの感度電流値(mA)。 - 누전 차단기의 감도 전류 (mA). - - - - - - 漏電電流で遮断するトリップ装置の情報。 - - - - - Pset_ProtectiveDeviceTrippingUnitTypeThermal - Information on tripping units that are thermally tripped. - - - IfcProtectiveDeviceTrippingUnit/THERMAL - - IfcProtectiveDeviceTrippingUnit/THERMAL - - - ThermalTrippingUnitType - A list of the available types of thermal tripping unit from which that required may be selected. - - - - NH_FUSE - DIAZED - MINIZED - NEOZED - OTHER - NOTKNOWN - UNSET - - - - NH_FUSE - - NH Fuse - - - - - - - DIAZED - - Diazed - - - - - - - MINIZED - - Minized - - - - - - - NEOZED - - Neozed - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Thermal Tripping Unit Type - サーマルトリップ装置タイプ - 열 트립 장치 유형 - - - - 選択を必要とするときのためのサーマルトリップ装置の選択リスト。 - 선택을 필요로하는 경우를위한 열 트립 장치 선택 목록. - - - - I1 - The (thermal) lower testing current limit in [x In], indicating that for currents lower than I1, the tripping time shall be longer than the associated tripping time, T2. - - - - - - - I1 - I1 - I1 - - - - サーマルの低試験電流限界値を [x In]、電流は I1 よりも低い値を示す。トリップ時間は関連する T2 の時間よりも長い。 - 열 낮은 시험 전류 한계를 [x In] 전류는 I1보다 낮은 값을 나타낸다. 트립 시간은 관련 T2 시간보다 길다. - - - - I2 - The (thermal) upper testing current limit in [x In], indicating that for currents larger than I2, the tripping time shall be shorter than the associated tripping time, T2. - - - - - - - I2 - I2 - I2 - - - - サーマルの高試験電流限界値を [x In], 電流は I2 よりも高い値を示す。トリップ時間は関連する T2 の時間よりも短い。 - 열 높은 시험 전류 한계를 [x In], 전류 I2보다 높은 값을 나타낸다. 트립 시간은 관련 T2 시간보다 짧다. - - - - T2 - The (thermal) testing time in [s] associated with the testing currents I1 and I2. - - - - - - - T2 - T2 - T2 - - - - サーマルの試験時間を [s] , 関連する試験電流を I1 と I2 とする。 - 열 시험 시간 [s] 관련 시험 전류를 I1과 I2로한다. - - - - DefinedTemperature - The ambient temperature at which the thermal current/time-curve associated with this protection device is defined. - - - - - - - Defined Temperature - 設定温度 - 설정 온도 - - - - この保護装置が定める温度・電流/時間-カーブに関連する周囲温度 - 이 보호 장치가 정한 온도 · 전류 / 시간 - 곡선과 관련된 주위 온도 - - - - TemperatureFactor - The correction factor (typically measured as %/deg K) for adjusting the thermal current/time to an ambient temperature different from the value given by the defined temperature. - - - - - - - Temperature Factor - 温度係数 - 온도 계수 - - - - 熱の電流/時間を、定義済みの温度によって与えられる値と異なる場合に周囲温度に合わせるための補正係数(%/deg K で計測する)。 - 열 전류 / 시간 미리 정의된 온도에 의해 주어진 값과 다른 경우 주위 온도에 맞추기위한 보정 계수 (% / deg K로 측정한다). - - - - CurveDesignation - The designation of the trippingcurve given by the manufacturer. For a MCB the designation should be in accordance with the designations given in IEC 60898. - - - - - - - Curve Designation - 曲線指定 - 곡선 지정 - - - - メーカーが提供する指定のトリッピングカーブ。MCBのために、指定はIEC 60898に準拠しなければならない。 - 제조 업체가 제공하는 지정된 토릿삔구 곡선. MCB 위해, 지정은 IEC 60898을 준수해야한다. - - - - - - 温度により遮断するトリップ装置の情報。 - - - - - Pset_ProtectiveDeviceTypeCircuitBreaker - A coherent set of attributes representing different capacities of a circuit breaker or of a motor protection device, defined in accordance with IEC 60947. Note - A protective device may be associated with different instances of this property set providing information related to different basic characteristics. - - - IfcProtectiveDevice/CIRCUITBREAKER - - IfcProtectiveDevice/CIRCUITBREAKER - - - PerformanceClasses - A set of designations of performance classes for the breaker unit for which the data of this instance is valid. A breaker unit being a circuit breaker may be -constructed for different levels of breaking capacities. A maximum of 7 different -performance classes may be provided. Examples of performance classes that may be specified include B, C, N, S, H, L, V. - - - - - - - - - Performance Classes - 能力クラス - 능력 클래스 - - - - モータ保護を行う開閉装置は、能力が違う最大7種類がある。名称の例として、B, C, N, S, H, L, Vが含まれる。 - 모터 보호하는 개폐 장치는 능력이 다른 최대 7 종류가있다. 이름의 예로는, B, C, N, S, H, L, V가 포함된다. - - - - VoltageLevel - The voltage levels for which the data of the instance is valid. More than one value may be selected in the enumeration. - - - - U230 - U400 - U440 - U525 - U690 - U1000 - OTHER - NOTKNOWN - UNSET - - - - U230 - - U230 - - - - - - - U400 - - U400 - - - - - - - U440 - - U440 - - - - - - - U525 - - U525 - - - - - - - U690 - - U690 - - - - - - - U1000 - - U1000 - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Voltage Level - 電圧レベル - 전압레벨 - - - - 電圧レベルを選択。 - 전압 레벨을 선택합니다. - - - - ICU60947 - The ultimate breaking capacity in [A] for a circuit breaker or motor protection device tested in accordance with the IEC 60947 series. - - - - - - - ICU60947 - 定格限界短絡遮断容量 - 정격한계단락 차단 용량 - - - - IECの60947シリーズに基づいてテストされた回路遮断機及びモータ保護装置の短絡遮断容量[A]。 - IEC의 60947 시리즈를 기반으로 테스트 회로 차단기 및 모터 보호 장치의 단락 차단 용량 [A]. - - - - ICS60947 - The service breaking capacity in [A] for a circuit breaker or motor protection device tested in accordance with the IEC 60947 series. - - - - - - - ICS60947 - 定格使用短絡遮断容量 - 정격사용 단락 차단 용량 - - - - IECの60947シリーズに基づいてテストされた回路遮断機及びモータ保護装置の使用短絡遮断容量[A]。 - IEC60947 시리즈를 기반으로 테스트 배선 차단기 또는 모터 보호 장치를위한 전류 [A]에 견디는 온도 값은 1s 주어진다. - - - - ICW60947 - The thermal withstand current in [A] for a circuit breaker or motor protection device tested in accordance with the IEC 60947 series. The value shall be related to 1 s. - - - - - - - ICW60947 - ICW60947 - ICW60947 - - - - IEC60947シリーズに基づいてテストした配線遮断機またはモータ保護装置のための電流[A]に耐える温度。 - 値は、1sで与えられる。 - IEC60947 시리즈를 기반으로 테스트 배선 차단기 또는 모터 보호 장치를위한 전류 [A]에 견디는 온도 값은 1s 주어진다. - - - - ICM60947 - The making capacity in [A] for a circuit breaker or motor protection device tested in accordance with the IEC 60947 series. - - - - - - - ICM60947 - ICM60947 - ICM60947 - - - - IECの60947シリーズに基づいてテストされた回路遮断機またはモータ保護装置の能力[A]。 - IEC의 60947 시리즈를 기반으로 테스트 회로 차단 기나 모터 보호 장치의 능력 [A]. - - - - - - IECの60947に基づいて定義されている回路ブレーカ、またはモータ保護装置の異なる容量を表すプロパティセットの定義。 -注記-保護装置は、根本的な特性に関連付けられた提供されたプロパティの情報は、 異なる実態に関連しているかもしれません。                  - - - - - Pset_ProtectiveDeviceTypeCommon - Properties that are applied to a definition of a protective device. - - - IfcProtectiveDevice - - IfcProtectiveDevice - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照 - 참조 - - - - このプロジェクト (例. 'A-1' タイプなど)で指定された参照ID。認められた分類体系の分類参照が存在しない場合に適用される。 - 이 프로젝트 (예 : 'A-1'유형 등) 지정된 참조 ID. 인정 분류 체계의 분류 참조가없는 경우에 적용된다. - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - - - 保護装置の事象に該当する属性。 - - - - - Pset_ProtectiveDeviceTypeEarthLeakageCircuitBreaker - An earth failure device acts to protect people and equipment from the effects of current leakage. - - - IfcProtectiveDevice/EARTHLEAKAGECIRCUITBREAKER - - IfcProtectiveDevice/EARTHLEAKAGECIRCUITBREAKER - - - EarthFailureDeviceType - A list of the available types of circuit breaker from which that required may be selected where: - -Standard: Device that operates without a time delay. -TimeDelayed: Device that operates after a time delay. - - - - STANDARD - TIMEDELAYED - OTHER - NOTKNOWN - UNSET - - - - STANDARD - - Standard - - - - - - - TIMEDELAYED - - Time Delayed - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Earth Failure Device Type - 漏電回路遮断機のタイプ - 누전 회로 차단기의 유형 - - - - 以下の中から選択が必要となる場合の遮断機タイプのリスト: - -スタンダード:遅延無しで動作する機器 -遅延:一定時間を経た後で動作する機器 - 다음 중 선택이 필요한 경우 차단기 유형 목록 : 스탠다드 : 지연없이 동작하는 기기 지연 : 일정 시간이 지난 후에 동작하는 기기 " - - - - Sensitivity - The rated rms value of the vector sum of the instantaneous currents flowing in the main circuits of the device which causes the device to operate under specified conditions. (IEC 61008-1). - - - - - - - Sensitivity - 感度 - 감도 - - - - 装置のメイン回路を流れる瞬時電流の合計ベクトルの関連する rms 値、特定の条件になると機器が動作するようになる(IEC 61008-1)。 - 장치의 기본 회로를 흐르는 순간 전류의 합계 벡터 관련 rms 값이 특정 조건이되면 장치가 작동하게된다 (IEC 61008-1). - - - - - - 漏電回路遮断機は、人々と器材を漏電電流の影響から保護する動作を行います。 - - - - - Pset_ProtectiveDeviceTypeFuseDisconnector - A coherent set of attributes representing the breakeing capacity of a fuse, defined in accordance with IEC 60269. Note - A protective device may be associated with different instances of this pSet providing information related to different basic characteristics. - - - IfcProtectiveDevice/FUSEDISCONNECTOR - - IfcProtectiveDevice/FUSEDISCONNECTOR - - - FuseDisconnectorType - A list of the available types of fuse disconnector from which that required may be selected where: - -EngineProtectionDevice: A fuse whose characteristic is specifically designed for the protection of a motor or generator. -FuseSwitchDisconnector: A switch disconnector in which a fuse link or a fuse carrier with fuse link forms the moving contact, -HRC: A standard fuse (High Rupturing Capacity) -OverloadProtectionDevice: A device that disconnects the supply when the operating conditions in an electrically undamaged circuit causes an overcurrent, -SemiconductorFuse: A fuse whose characteristic is specifically designed for the protection of sem-conductor devices. -SwitchDisconnectorFuse: A switch disconnector in which one or more poles have a fuse in series in a composite unit. - - - - ENGINEPROTECTIONDEVICE - FUSEDSWITCH - HRC - OVERLOADPROTECTIONDEVICE - SWITCHDISCONNECTORFUSE - OTHER - NOTKNOWN - UNSET - - - - ENGINEPROTECTIONDEVICE - - Engine Protection Device - - - - - - - FUSEDSWITCH - - Fused Switch - - - - - - - HRC - - Hrc - - - A standard fuse (High Rupturing Capacity) - - - - OVERLOADPROTECTIONDEVICE - - Overload Protection Device - - - - - - - SWITCHDISCONNECTORFUSE - - Switch Disconnector Fuse - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Fuse Disconnector Type - ヒューズ遮断機のタイプ - 퓨즈차단기 유형 - - - - 自家用発電連携側:モータや発電機の保護のために設計されているヒューズ。 - 地絡保護装置:これでヒューズリンクまたはヒューズリンクヒューズキャリアは、可動接点を形成するスイッチ断路器、 - HRC:標準ヒューズ(高連動破壊容量) - 漏電保護装置:電気的に破損して回路の動作条件は、過電流が発生する電源を切断装置 - 欠相保護付:その特性を具体的にsemが芯デバイスの保護のために設計されているヒューズ。 - 複合ヒューズ保護装置:その内の1つまたは複数の極は、複合ユニットに直列にヒューズを持っているスイッチ断路器。 - 자가용 발전 연계 측면 : 모터 및 발전기 보호를 위해 디자인되는 퓨즈. 지락 보호 장치 : 이제 퓨즈 링크 또는 퓨즈 링크 퓨즈 캐리어는 가동 접점을 형성하는 스위치 단로기, HRC : 표준 퓨즈 (높이 연동 파괴 용량) 누전 보호 장치 : 전기 손상 회로의 동작 조건은 과전류가 발생하는 전원을 차단 장치 결상 보호 부착 : 그 특성을 구체적으로 sem이 심 장치 보호를 위해 디자인되는 퓨즈. 복합 퓨즈 보호 장치 : 어떤 한 개 이상의 전극은 복합 유닛에 직렬로 퓨즈를 가지고있는 스위치 단로기. - - - - VoltageLevel - The voltage levels for which the data of the instance is valid. More than one value may be selected in the enumeration. - - - - U230 - U400 - U440 - U525 - U690 - U1000 - OTHER - NOTKNOWN - UNSET - - - - U230 - - U230 - - - - - - - U400 - - U400 - - - - - - - U440 - - U440 - - - - - - - U525 - - U525 - - - - - - - U690 - - U690 - - - - - - - U1000 - - U1000 - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Voltage Level - 電圧レベル - 전압레벨 - - - - 電圧レベルを選択。 - 전압 레벨을 선택합니다. - - - - IC60269 - The breaking capacity in [A] for fuses in accordance with the IEC 60269 series. - - - - - - - IC60269 - IC60269 - IC60269 - - - - IECの60269シリーズに応じたヒューズの遮断容量[A]。 - IEC의 60269 시리즈에 따라 퓨즈의 차단 용량 [A]. - - - - PowerLoss - The power loss in [W] of the fuse when the nominal current is flowing through the fuse. - - - - - - - Power Loss - 電力損失 - 전력 손실 - - - - 定格電流がヒューズに流れる時の電力損失[W]。 - 정격 전류가 퓨즈에 흐르는시 전력 손실 [W]. - - - - - - ヒューズのbreakeing容量を表す属性の一貫したセットは、IEC60269に基づいて定義されています。 - 注-保護デバイスが別の基本的な特性に関連する情報を提供し、このプロセッサセットの別のインスタンスに関連付けられている可能性があります。 - - - - - Pset_ProtectiveDeviceTypeResidualCurrentCircuitBreaker - A residual current circuit breaker opens, closes or isolates a circuit and has short circuit and overload protection. - - - IfcProtectiveDevice/RESIDUALCURRENTCIRCUITBREAKER - - IfcProtectiveDevice/RESIDUALCURRENTCIRCUITBREAKER - - - Sensitivity - Current leakage to an unwanted leading path during normal operation (IEC 151-14-49). - - - - - - - Sensitivity - 感度 - 감도 - - - - 通常操作における望ましくない引き込みパスとの電流鎖交 (IEC 151-14-49)。 - 정상 작동의 원치 않는 철회 경로와 전류 사슬 교환 (IEC 151-14-49). - - - - - - 残留電流遮断回路が 開いているか、 閉じているか、または 回路から独立しているか、また短絡(ショートサーキット)を保有し、過負荷保護継電方式であるか。 - - - - - Pset_ProtectiveDeviceTypeResidualCurrentSwitch - A residual current switch opens, closes or isolates a circuit and has no short circuit or overload protection. - - - IfcProtectiveDevice/RESIDUALCURRENTSWITCH - - IfcProtectiveDevice/RESIDUALCURRENTSWITCH - - - Sensitivity - Current leakage to an unwanted leading path during normal operation (IEC 151-14-49). - - - - - - - Sensitivity - 感度 - 감도 - - - - 通常操作における望ましくない引き込みパスとの電流鎖交 (IEC 151-14-49)。 - 정상 작동의 원치 않는 철회 경로와 전류 사슬 교환 (IEC 151-14-49). - - - - - - 残留電流遮断回路が 開いているか、 閉じているか、または 回路から独立しているか、また短絡(ショートサーキット)を保有し、過負荷保護継電方式であるか。 - - - - - Pset_ProtectiveDeviceTypeVaristor - A high voltage surge protection device. - - - IfcProtectiveDevice/VARISTOR - - IfcProtectiveDevice/VARISTOR - - - VaristorType - A list of the available types of varistor from which that required may be selected. - - - - METALOXIDE - ZINCOXIDE - OTHER - NOTKNOWN - UNSET - - - - METALOXIDE - - Metal Oxide - - - - - - - ZINCOXIDE - - Zinc Oxide - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Varistor Type - 保護タイプ - 보호 종류 - - - - 選択が必要となる、バリスターの一覧リスト。 - 선택된 varistor(소자)의 유용한 유형목록 - - - - - - 高圧避雷装置。 - - - - - Pset_PumpOccurrence - Pump occurrence attributes attached to an instance of IfcPump. - - - IfcPump - - IfcPump - - - ImpellerDiameter - Diameter of pump impeller - used to scale performance of geometrically similar pumps. - - - - - - - Impeller Diameter - 羽根直径 - - - - 幾何学的に似たポンプの性能を予測するのに使われる。 - - - - BaseType - Defines general types of pump bases. - -FRAME: Frame. -BASE: Base. -NONE: There is no pump base, such as an inline pump. -OTHER: Other type of pump base. - - - - FRAME - BASE - NONE - OTHER - NOTKNOWN - UNSET - - - - FRAME - - Frame - - - Frame - - - - BASE - - Base - - - Base - - - - NONE - - None - - - There is no pump base, such as an inline pump - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Base Type - 基礎タイプ - - - - ポンプ基礎の一般的な型を定義する(フレーム、(コンクリ)基礎、なし、その他) - - - - DriveConnectionType - The way the pump drive mechanism is connected to the pump. - -DIRECTDRIVE: Direct drive. -BELTDRIVE: Belt drive. -COUPLING: Coupling. -OTHER: Other type of drive connection. - - - - DIRECTDRIVE - BELTDRIVE - COUPLING - OTHER - NOTKNOWN - UNSET - - - - DIRECTDRIVE - - Direct Drive - - - Direct drive - - - - BELTDRIVE - - Belt Drive - - - Belt drive - - - - COUPLING - - Coupling - - - Coupling - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Drive Connection Type - 駆動接続タイプ - - - - ポンプの動力機械がポンプに接続される方法(直動、ベルト、カップリング、その他) - - - - - - - - - - Pset_PumpPHistory - Pump performance history attributes. - - - IfcPump - - IfcPump - - - MechanicalEfficiency - The pumps operational mechanical efficiency. - - - - - Mechanical Efficiency - 機械効率 - - - - ポンプの稼動時の機械効率 - - - - OverallEfficiency - The pump and motor overall operational efficiency. - - - - - Overall Efficiency - 全効率 - - - - ポンプとモーターの運用全効率 - - - - PressureRise - The developed pressure. - - - - - Pressure Rise - 昇圧 - - - - 上がった圧力 - - - - RotationSpeed - Pump rotational speed. - - - - - Rotation Speed - 回転速度 - - - - ポンプ回転速度 - - - - Flowrate - The actual operational fluid flowrate. - - - - - Flowrate - 流量 - - - - 実際の運用流量 - - - - Power - The actual power consumption of the pump. - - - - - Power - 動力 - - - - ポンプの実動力消費 - - - - - - - - - - Pset_PumpTypeCommon - Common attributes of a pump type. - - - IfcPump - - IfcPump - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - FlowRateRange - Allowable range of volume of fluid being pumped against the resistance specified. - - - - - - - Flow Rate Range - 流量範囲 - - - - 指定された抵抗に対してポンプでくみ上げ可能な流対量の許容範囲 - - - - FlowResistanceRange - Allowable range of frictional resistance against which the fluid is being pumped. - - - - - - - Flow Resistance Range - 流体抵抗の範囲 - - - - 流体をポンプでくみ上げる際の摩擦抵抗の許容範囲 - - - - ConnectionSize - The connection size of the to and from the pump. - - - - - - - Connection Size - 接続サイズ - - - - ポンプの入出の接続サイズ - - - - TemperatureRange - Allowable operational range of the fluid temperature. - - - - - - - Temperature Range - 温度範囲 - - - - 流体温度の許容範囲 - - - - NetPositiveSuctionHead - Minimum liquid pressure at the pump inlet to prevent cavitation. - - - - - - - Net Positive Suction Head - 正味吸入側水頭 - - - - キャビテーションを防ぐポンプ入口の最小限の流体圧力 - - - - NominalRotationSpeed - Pump rotational speed under nominal conditions. - - - - - - - Nominal Rotation Speed - 通常の回転速度 - - - - 多目的な状況の下でのポンプの回転速度 - - - - - - ポンプタイプ共通属性 - - - - - Pset_RailingCommon - Properties common to the definition of all occurrences of IfcRailing. - - - IfcRailing - - IfcRailing - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as "construction type". It should be provided as an alternative to the name of the "object type", if the software does not support object types. - - - - - - - Bauteiltyp - Reference - Reference - 参照記号 - 参考号 - - - Bezeichnung zur Zusammenfassung gleichartiger Bauteile zu einem Bauteiltyp (auch Konstruktionstyp genannt). Alternativ zum Namen des "Typobjekts", insbesondere wenn die Software keine Typen unterstützt. - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1") pour désigner un "type de construction". Une alternative au nom d'un objet type lorsque les objets types ne sont pas gérés par le logiciel. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 若未采用已知的分类系统,则该属性为该项目中该类型构件的参考编号(例如,类型A-1)。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Status - Statut - 状態 - - - Status bzw. Phase des Bauteils insbesondere beim Bauen im Bestand. "Neu" (new) neues Bauteil als Ergänzung, "Bestand" (existing) bestehendes Bauteil, dass erhalten bleibt, "Abbruch" (demolish) Bauteil, das abgebrochen wird, "Temporär" (temporary) Bauteil und andere Bauelemente, die vorübergehend eingebaut werden (wie Abstützungen, etc.) - - Statut de l'élément, principalement utilisé dans les projets de rénovation et de réhabilitation. Le statut a pour valeur NOUVEAU pour un nouvel élément, EXISTANT pour un élément existant qui est conservé, DEMOLI pour un élément existant à démolir et TEMPORAIRE pour un élément temporaire (comme une structure support provisoire). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - Height - Height of the object. It is the upper hight of the railing above the floor or stair. -The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence. - - - - - - - Höhe - Height - Hauteur - 高さ - 高度 - - - German-description-2 - - Hauteur du garde-corps. C'est la plus grande hauteur du garde-corps relativement au plancher ou à l'escalier. Cette propriété est donnée en complément de la représentation de la forme et des paramètres géométriques qui la déterminent. En cas d'incohérence entre ces paramètres géométriques et cette propriété, ce sont les paramètres géométriques qui priment. - オブジェクトの高さ。床または会談から手すりの上部までの高さ。 - 构件的高度。该属性为栏杆在地板或楼梯以上部分的高度。 -该属性所提供的形状信息是对内部形状描述和几何参数的补充。如果几何参数与该属性所提供的形状属性不符,应以几何参数为准。 - - - - Diameter - Diameter of the object. It is the diameter of the handrail of the railing. -The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence. -Here the diameter of the hand or guardrail within the railing. - - - - - - - Handlaufdurchmesser - Diameter - Diametre - 直径 - 直径 - - - German-description-3 - - Diamètre de la rampe du garde-corps. Cette propriété est donnée en complément de la représentation de la forme et des paramètres géométriques qui la déterminent. En cas d'incohérence entre ces paramètres géométriques et cette propriété, ce sont les paramètres géométriques qui priment. - オブジェクトの直径。 - 构件的直径。栏杆扶手的直径。 -该属性所提供的形状信息是对内部形状描述和几何参数的补充。如果几何参数与该属性所提供的形状属性不符,应以几何参数为准。 -此处为栏杆内侧扶手或护栏的直径。 - - - - IsExternal - Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building. - - - - - - - Außenbauteil - Is External - EstExterieur - 外部区分 - 是否外部构件 - - - Angabe, ob dieses Bauteil ein Aussenbauteil ist (JA) oder ein Innenbauteil (NEIN). Als Aussenbauteil grenzt es an den Aussenraum (oder Erdreich, oder Wasser). - - Indique si l'élément est conçu pour être utilisé à l'extérieur (VRAI) ou non (FAUX). Si VRAI, c'est un élément extérieur qui donne sur l'extérieur du bâtiment. - 外部の部材かどうかを示すブーリアン値。もしTRUEの場合、外部の部材で建物の外側に面している。 - 表示该构件是否设计为外部构件。若是,则该构件为外部构件,朝向建筑物的外侧。 - - - - - - Définition de l'IAI : propriétés communes à la définition de toutes les instances de la classe IfcRailing - IfcRaling(手すり)オブジェクトに関する共通プロパティセット定義。 - 所有IfcRailing实例的定义中通用的属性。 - - - - - Pset_RampCommon - Properties common to the definition of all occurrences of IfcRamp. - - - IfcRamp - - IfcRamp - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as "construction type". It should be provided as an alternative to the name of the "object type", if the software does not support object types. - - - - - - - Bauteiltyp - Reference - Reference - 参照記号 - 参考号 - - - Bezeichnung zur Zusammenfassung gleichartiger Bauteile zu einem Bauteiltyp (auch Konstruktionstyp genannt). Alternativ zum Namen des "Typobjekts", insbesondere wenn die Software keine Typen unterstützt. - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1") pour désigner un "type de construction". Une alternative au nom d'un objet type lorsque les objets types ne sont pas gérés par le logiciel. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 若未采用已知的分类系统,则该属性为该项目中该类型构件的参考编号(例如,类型A-1)。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Status - Statut - 状態 - - - Status bzw. Phase des Bauteils insbesondere beim Bauen im Bestand. "Neu" (new) neues Bauteil als Ergänzung, "Bestand" (existing) bestehendes Bauteil, dass erhalten bleibt, "Abbruch" (demolish) Bauteil, das abgebrochen wird, "Temporär" (temporary) Bauteil und andere Bauelemente, die vorübergehend eingebaut werden (wie Abstützungen, etc.) - - Statut de l'élément, principalement utilisé dans les projets de rénovation et de réhabilitation. Le statut a pour valeur NOUVEAU pour un nouvel élément, EXISTANT pour un élément existant qui est conservé, DEMOLI pour un élément existant à démolir et TEMPORAIRE pour un élément temporaire (comme une structure support provisoire). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - RequiredHeadroom - Required headroom clearance for the passageway according to the applicable building code or additional requirements. - - - - - - - erforderliche Durchgangshöhe - Required Headroom - HauteurPassageRequise - 要求頭高余裕 - 所需净空 - - - German-description-2 - - Hauteur de passage (échappée) requise selon la réglementation en vigueur ou des spécifications additionnelles. - 要求される頭高余裕。関連する建築基準法を参照。 - 建筑规范或其他规定要求的通道净空高度。 - - - - RequiredSlope - Required sloping angle of the object - relative to horizontal (0.0 degrees). -Required maximum slope for the passageway according to the applicable building code or additional requirements. - - - - - - - erforderliche Neigung - Required Slope - InclinaisonRequise - 要求傾斜 - 所需坡度 - - - German-description-3 - - Inclinaison de la rampe par rapport à l'horizontal (0 degrés). Valeur maximale de l'inclinaison du passage selon le code applicable ou pour respecter des contraintes additionnelles. - 要求される傾斜角度。水平を0度とする。 - 构件所需的相对于水平(0.0度)方向的坡度角。 -建筑规范或其他规定要求的通道的最大坡度。 - - - - HandicapAccessible - Indication that this object is designed to be accessible by the handicapped. -Set to (TRUE) if this ramp is rated as handicap accessible according the local building codes, otherwise (FALSE). - - - - - - - Behindertengerecht - Handicap Accessible - AccessibleHandicapes - ハンディキャップアクセス可能性 - 是否为无障碍设施 - - - German-description-7 - - Indique que cet objet est conçu pour être accessible aux handicapés. Indication donnée selon le Code National. - この空間がハンディキャップ者向けの空間かどうかを示すブーリアン値。 - 表示该构件是否设计为可供残疾人使用的无障碍设施。 -该属性的根据为国家建筑规范。 - - - - HasNonSkidSurface - Indication whether the surface finish is designed to prevent slippery (TRUE) or not (FALSE). - - - - - - - Nichtrutschende Oberfläche - Has Non Skid Surface - AntiDerapant - 滑り止め表面加工区分 - 表面是否防滑 - - - German-description-8 - - Indique si le revêtement de surface est anti dérapant (VRAI) ou non (FAUX) - スリップ防止のための表面仕上げをしているかどうかのブーリアン値。 - 表示表面处理是否设计为防滑的。 - - - - FireExit - Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE). -Here it defines an exit ramp in accordance to the national building code. - - - - - - - Fluchtweg - Fire Exit - SortieSecours - 非常口区分 - 是否为紧急出口 - - - German-description-6 - - Indique si cet objet est conçu pour servir de sortie en cas d'incendie (VRAI) ou non (FAUX). Définition de la sortie de secours selon le Code National. - このオブジェクトが火災時の非常口として設計されているかどうかを示すブーリアン値。ここでは関連する建築基準法における出口ドアとして定義している。 - 表示该构件是否设计为火灾时的紧急出口。 -该属性的依据为国家建筑规范。 - - - - IsExternal - Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building. - - - - - - - Außenbauteil - Is External - EstExterieur - 外部区分 - 是否外部构件 - - - Angabe, ob dieses Bauteil ein Aussenbauteil ist (JA) oder ein Innenbauteil (NEIN). Als Aussenbauteil grenzt es an den Aussenraum (oder Erdreich, oder Wasser). - - Indique si l'élément est conçu pour être utilisé à l'extérieur (VRAI) ou non (FAUX). Si VRAI, c'est un élément extérieur qui donne sur l'extérieur du bâtiment. - 外部の部材かどうかを示すブーリアン値。もしTRUEの場合、外部の部材で建物の外側に面している。 - 表示该构件是否设计为外部构件。若是,则该构件为外部构件,朝向建筑物的外侧。 - - - - ThermalTransmittance - - - - - - - - - - LoadBearing - - - - - - - - - - FireRating - Fire rating for this object. -It is given according to the national fire safety classification. - - - - - - - Feuerwiderstandsklasse - Fire Rating - ResistanceAuFeu - 耐火等級 - 防火等级 - - - Feuerwiderstandasklasse gemäß der nationalen oder regionalen Brandschutzverordnung. - - Classement au feu de l'élément donné selon la classification nationale de sécurité incendie. - 主要な耐火等級。関連する建築基準法、消防法などの国家基準を参照。 - 该构件的防火等级。 -该属性的依据为国家防火安全分级。 - - - - - - Définition de l'IAI : propriétés communes à la définition de toutes les instances de la classe IfcRamp - IfcRamp(ランプ)オブジェクトに関する共通プロパティセット定義。 - 所有IfcRamp实例的定义中通用的属性。 - - - - - Pset_RampFlightCommon - Properties common to the definition of all occurrences of IfcRampFlight. - - - IfcRampFlight - - IfcRampFlight - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as "construction type". It should be provided as an alternative to the name of the "object type", if the software does not support object types. - - - - - - - Bauteiltyp - Reference - Reference - 参照記号 - 参考号 - - - Bezeichnung zur Zusammenfassung gleichartiger Bauteile zu einem Bauteiltyp (auch Konstruktionstyp genannt). Alternativ zum Namen des "Typobjekts", insbesondere wenn die Software keine Typen unterstützt. - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1") pour désigner un "type de construction". Une alternative au nom d'un objet type lorsque les objets types ne sont pas gérés par le logiciel. - 参照記号でプロジェクトでのタイプとして使用されるもの。 - 若未采用已知的分类系统,则该属性为该项目中该类型构件的参考编号(例如,类型A-1)。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Status - Statut - 状態 - - - Status bzw. Phase des Bauteils insbesondere beim Bauen im Bestand. "Neu" (new) neues Bauteil als Ergänzung, "Bestand" (existing) bestehendes Bauteil, dass erhalten bleibt, "Abbruch" (demolish) Bauteil, das abgebrochen wird, "Temporär" (temporary) Bauteil und andere Bauelemente, die vorübergehend eingebaut werden (wie Abstützungen, etc.) - - Statut de l'élément, principalement utilisé dans les projets de rénovation et de réhabilitation. Le statut a pour valeur NOUVEAU pour un nouvel élément, EXISTANT pour un élément existant qui est conservé, DEMOLI pour un élément existant à démolir et TEMPORAIRE pour un élément temporaire (comme une structure support provisoire). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - Headroom - Actual headroom clearance for the passageway according to the current design. -The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. - - - - - - - Durchgangshöhe - Headroom - HauteurPassage - 頭上スペース - 净空 - - - German-description-2 - - Hauteur de passage (échappée) actuellement projetée. Cette propriété est donnée en complément de la représentation de la forme de l'élément et des paramètres géométriques qui la déterminent. En cas d'incohérence entre ces paramètres géométriques et cette propriété, ce sont les paramètres géométriques qui priment. - 現状の設計に一致した斜路の実際の頭上スペース高 -形状の情報は、内側は使用される形表現および幾何パラメータ学的媒介変数に加えて提供されます。 -幾何パラメータと形状プロパティが矛盾する場合は、付属のプロパティで提供されている、幾何パラメータを優先する。 - 当前设计方案确定的通道实际净空高度。 -该属性所提供的形状信息是对内部形状描述和几何参数的补充。如果几何参数与该属性所提供的形状属性不符,应以几何参数为准。 - - - - ClearWidth - Actual clear width measured as the clear space for accessibility and egress; it is a measured distance betwen the two handrails or the wall and a handrail on a ramp. -The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. - - - - - - - Lichte Breite - Clear Width - LargeurPassage - 通路有効寸法 - 净宽 - - - German-description-3 - - Largeur du passage. Mesure de la distance entre les deux rampes ou entre le mur et la rampe. Cette propriété est donnée en complément de la représentation de la forme de l'élément et des paramètres géométriques qui la déterminent. En cas d'incohérence entre ces paramètres géométriques et cette propriété, ce sont les paramètres géométriques qui priment. - 実際の通路の有効幅 -形情報は、内側は使用される形表現および幾何学的媒介変数に加えて提供されます。幾何学的媒介変数と形特性の間の矛盾の場合では、付属の特性の中で提供されて、幾何学的媒介変数は先行をとります。" - 通道入口和出口实际测量的净宽度,以两侧扶手之间或墙与坡道扶手之间的距离为准。 -该属性所提供的形状信息是对内部形状描述和几何参数的补充。如果几何参数与该属性所提供的形状属性不符,应以几何参数为准。 - - - - Slope - Sloping angle of the object - relative to horizontal (0.0 degrees). -Actual maximum slope for the passageway according to the current design. -The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. - - - - - - - Neigung - Slope - Pente - 通路の傾斜角度(水平からの角度) - 坡度 - - - German-description-4 - - Angle d'inclinaison relativement à l'horizontale correspondant à la valeur 0 degrés. Valeur maximale de l'inclinaison actuellement projetée. Cette propriété est donnée en complément de la représentation de la forme de l'élément et des paramètres géométriques qui la déterminent. En cas d'incohérence entre ces paramètres géométriques et cette propriété, ce sont les paramètres géométriques qui priment. - オブジェクト傾斜角度(水平が0.0度) -現在の設計による通路のための実際の最大の傾斜。形情報は、内側は使用される形表現および幾何学的媒介変数に加えて提供されます。幾何学的媒介変数と形特性の間の矛盾の場合では、付属の特性の中で提供されて、幾何学的媒介変数は先行をとります。" - 构件相对于水平(0.0度)方向的实际坡度角。 -当前设计方案确定的通道的最大坡度。 -该属性所提供的形状信息是对内部形状描述和几何参数的补充。如果几何参数与该属性所提供的形状属性不符,应以几何参数为准。 - - - - CounterSlope - Sloping angle of the object, measured perpendicular to the slope - relative to horizontal (0.0 degrees). -Actual maximum slope for the passageway measured perpendicular to the direction of travel according to the current design. The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. -Note: new property in IFC4. - - - - - - - Gegenneigung - Counter Slope - ContrePente - 通路の傾斜角度(垂直との角度) - 反向坡度 - - - German-description-5 - - Angle d'inclinaison de l'objet, mesuré perpendiculairement à la pente. L'horizontale correspond à la valeur 0 degrés. Valeur maximale de la pente de la rampe actuellement projetée, mesurée perpendiculairement à la direction du passage. Cette propriété est donnée en complément de la représentation de la forme de l'élément et des paramètres géométriques qui la déterminent. En cas d'incohérence entre ces paramètres géométriques et cette propriété, ce sont les paramètres géométriques qui priment. Note : nouvelle propriété de la version IFC2x4. - オブジェクトの傾斜角度(垂直との角度) -通路のための実際の最大の傾斜は、現在の設計による旅行の方向への垂直を測定しました。形情報は、内側は使用される形表現および幾何学的媒介変数に加えて提供されます。幾何学的媒介変数と形特性の間の矛盾の場合では、付属の特性の中で提供されて、幾何学的媒介変数は先行をとります。 -注:IFC2x4の中の新しいプロパティ - 构件的垂线相对于水平(0.0度)方向的坡度角。 -当前设计方案确定的通道行走方向的垂线方向的最大坡度。 -该属性所提供的形状信息是对内部形状描述和几何参数的补充。如果几何参数与该属性所提供的形状属性不符,应以几何参数为准。 - - - - - - Définition de l'IAI : propriétés communes à la définition de toutes les instances de la classe IfcRampFlight - IfcRampFlight(斜路)オブジェクトに関する共通プロパティセット定義。 - 所有IfcRampFlight实例的定义中通用的属性。 - - - - - Pset_ReinforcementBarCountOfIndependentFooting - Reinforcement Concrete parameter [ST-2]: The amount number information of reinforcement bar with the independent footing. The X and Y direction are based on the local coordinate system of building storey. The X and Y direction of the reinforcement bar are parallel to the X and Y axis of the IfcBuildingStorey's local coordinate system, respectively. - - - IfcFooting - - IfcFooting - - - Description - Description of the reinforcement. - - - - - - - Description - 説明 - - - - 鉄筋の説明。 - - - - Reference - A descriptive label for the general reinforcement type. - - - - - - - Reference - 参照記号 - - - - 一般的な鉄筋タイプの説明ラベル。 - - - - XDirectionLowerBarCount - The number of bars with X direction lower bar. - - - - - - - XDirection Lower Bar Count - X方向下端筋本数 - - - - X方向の下端筋本数。 - - - - YDirectionLowerBarCount - The number of bars with Y direction lower bar. - - - - - - - YDirection Lower Bar Count - Y方向下端筋本数 - - - - Y方向の下端筋本数。 - - - - XDirectionUpperBarCount - The number of bars with X direction upper bar. - - - - - - - XDirection Upper Bar Count - X方向上端筋本数 - - - - X方向の上端筋本数。 - - - - YDirectionUpperBarCount - The number of bars with Y direction upper bar. - - - - - - - YDirection Upper Bar Count - Y方向上端筋本数 - - - - Y方向の上端筋本数。 - - - - - - 鉄筋コンクリートパラメータ[ST-2]:独立基礎の鉄筋本数情報。 -X方向とY方向は建物のローカル座標系に基づいている。X方向とY方向の鉄筋はIfcBuildingStoreyのローカル座標系のX軸、Y軸にそれぞれ平行である。 - - - - - Pset_ReinforcementBarPitchOfBeam - The pitch length information of reinforcement bar with the beam. - - - IfcBeam - - IfcBeam - - - Description - Description of the reinforcement. - - - - - - - Description - 説明 - - - - 鉄筋の説明。 - - - - Reference - A descriptive label for the general reinforcement type. - - - - - - - Reference - 参照記号 - - - - 一般的な鉄筋タイプの説明ラベル。 -(例えば、梁の両端・中央で肋筋や巾止筋の間隔が異なる場合に、"Start","Center","End"を記述する) - - - - StirrupBarPitch - The pitch length of the stirrup bar. - - - - - - - Stirrup Bar Pitch - 肋筋間隔 - - - - 肋筋の間隔。 - - - - SpacingBarPitch - The pitch length of the spacing bar. - - - - - - - Spacing Bar Pitch - 幅止筋間隔 - - - - 巾止筋の間隔。 - - - - - - 梁補強筋の間隔情報。 - - - - - Pset_ReinforcementBarPitchOfColumn - The pitch length information of reinforcement bar with the column. The X and Y direction are based on the local coordinate system of building storey. The X and Y direction of the reinforcement bar are parallel to the X and Y axis of the IfcBuildingStorey's local coordinate system, respectively. - - - IfcColumn - - IfcColumn - - - Description - Description of the reinforcement. - - - - - - - Description - 説明 - - - - 鉄筋の説明。 - - - - Reference - A descriptive label for the general reinforcement type. - - - - - - - Reference - 参照記号 - - - - 一般的な鉄筋タイプの説明ラベル。 -(例えば、柱の柱頭・柱脚で帯筋や巾止筋の間隔・本数が異なる場合に、"Top","Bottom"を記述する) - - - - ReinforcementBarType - Defines the type of the reinforcement bar. - - - - RING - SPIRAL - OTHER - USERDEFINED - NOTDEFINED - - - - RING - - Ring - - - - - - - SPIRAL - - Spiral - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - USERDEFINED - - Userdefined - - - - - - - NOTDEFINED - - Notdefined - - - - - - - - - - Reinforcement Bar Type - 補強筋タイプ - - - - 補強筋タイプの定義。 - - - - HoopBarPitch - The pitch length of the hoop bar. - - - - - - - Hoop Bar Pitch - 帯筋間隔 - - - - 帯筋の間隔。 - - - - XDirectionTieHoopBarPitch - The X direction pitch length of the tie hoop. - - - - - - - XDirection Tie Hoop Bar Pitch - X方向巾止め筋間隔 - - - - X方向巾止筋の間隔。 - - - - XDirectionTieHoopCount - The number of bars with X direction tie hoop bars. - - - - - - - XDirection Tie Hoop Count - X方向巾止め筋本数 - - - - X方向巾止筋の本数。 - - - - YDirectionTieHoopBarPitch - The Y direction pitch length of the tie hoop. - - - - - - - YDirection Tie Hoop Bar Pitch - Y方向巾止め筋間隔 - - - - Y方向巾止筋の間隔。 - - - - YDirectionTieHoopCount - The number of bars with Y direction tie hoop bars. - - - - - - - YDirection Tie Hoop Count - Y方向巾止め筋本数 - - - - Y方向巾止筋の本数。 - - - - - - 柱補強筋の間隔情報。 -X方向とY方向は建物のローカル座標系に基づいている。X方向とY方向の補強筋はIfcBuildingStoreyのローカル座標系のX軸、Y軸にそれぞれ平行である。 - - - - - Pset_ReinforcementBarPitchOfContinuousFooting - Reinforcement Concrete parameter [ST-2]: The pitch length information of reinforcement bar with the continuous footing. - - - IfcFooting - - IfcFooting - - - Description - Description of the reinforcement. - - - - - - - Description - 説明 - - - - 鉄筋の説明。 - - - - Reference - A descriptive label for the general reinforcement type. - - - - - - - Reference - 参照記号 - - - - 一般的な鉄筋タイプの説明ラベル。 - - - - CrossingUpperBarPitch - The pitch length of the crossing upper bar. - - - - - - - Crossing Upper Bar Pitch - 上端筋間隔 - - - - 交差する上端筋間隔。 - - - - CrossingLowerBarPitch - The pitch length of the crossing lower bar. - - - - - - - Crossing Lower Bar Pitch - 下端筋間隔 - - - - 交差する下端筋間隔。 - - - - - - 鉄筋コンクリートパラメータ[ST-2]:布基礎の補強筋間隔情報。 - - - - - Pset_ReinforcementBarPitchOfSlab - The pitch length information of reinforcement bar with the slab. - - - IfcSlab - - IfcSlab - - - Description - Description of the reinforcement. - - - - - - - Description - 説明 - - - - 鉄筋の説明。 - - - - Reference - A descriptive label for the general reinforcement type. - - - - - - - Reference - 参照記号 - - - - 一般的な鉄筋タイプの説明ラベル。 - - - - LongOutsideTopBarPitch - The pitch length of the long outside top bar. - - - - - - - Long Outside Top Bar Pitch - 長辺・柱列帯・上端ピッチ - - - - 長辺方向・柱列帯・上端の鉄筋間隔。 - - - - LongInsideCenterTopBarPitch - The pitch length of the long inside center top bar. - - - - - - - Long Inside Center Top Bar Pitch - 長辺・柱列帯・上端中央ピッチ - - - - 長辺方向・柱間帯・上端中央の鉄筋間隔。 - - - - LongInsideEndTopBarPitch - The pitch length of the long inside end top bar. - - - - - - - Long Inside End Top Bar Pitch - 長辺・柱列帯・上端端部ピッチ - - - - 長辺方向・柱間帯・上端端部の鉄筋間隔。 - - - - ShortOutsideTopBarPitch - The pitch length of the short outside top bar. - - - - - - - Short Outside Top Bar Pitch - 短辺・柱列帯・上端ピッチ - - - - 短辺方向・柱列帯・上端の鉄筋間隔。 - - - - ShortInsideCenterTopBarPitch - The pitch length of the short inside center top bar. - - - - - - - Short Inside Center Top Bar Pitch - 短辺・柱列帯・上端中央ピッチ - - - - 短辺方向・柱間帯・上端中央の鉄筋間隔。 - - - - ShortInsideEndTopBarPitch - The pitch length of the short inside end top bar. - - - - - - - Short Inside End Top Bar Pitch - 短辺・柱列帯・上端端部ピッチ - - - - 短辺方向・柱間帯・上端端部の鉄筋間隔。 - - - - LongOutsideLowerBarPitch - The pitch length of the long outside lower bar. - - - - - - - Long Outside Lower Bar Pitch - 長辺・柱列帯・下端ピッチ - - - - 長辺方向・柱列帯・下端の鉄筋間隔。 - - - - LongInsideCenterLowerBarPitch - The pitch length of the long inside center lower bar. - - - - - - - Long Inside Center Lower Bar Pitch - 長辺・柱列帯・下端中央ピッチ - - - - 長辺方向・柱間帯・下端中央の鉄筋間隔。 - - - - LongInsideEndLowerBarPitch - The pitch length of the long inside end lower bar. - - - - - - - Long Inside End Lower Bar Pitch - 長辺・柱列帯・下端端部ピッチ - - - - 長辺方向・柱間帯・下端端部の鉄筋間隔。 - - - - ShortOutsideLowerBarPitch - The pitch length of the short outside lower bar. - - - - - - - Short Outside Lower Bar Pitch - 短辺・柱列帯・下端ピッチ - - - - 短辺方向・柱列帯・下端の鉄筋間隔。 - - - - ShortInsideCenterLowerBarPitch - The pitch length of the short inside center lower bar. - - - - - - - Short Inside Center Lower Bar Pitch - 短辺・柱列帯・下端中央ピッチ - - - - 短辺方向・柱間帯・下端中央の鉄筋間隔。 - - - - ShortInsideEndLowerBarPitch - The pitch length of the short inside end lower bar. - - - - - - - Short Inside End Lower Bar Pitch - 短辺・柱列帯・下端端部ピッチ - - - - 短辺方向・柱間帯・下端端部の鉄筋間隔。 - - - - - - スラブの鉄筋間隔に関する情報。 - - - - - Pset_ReinforcementBarPitchOfWall - The pitch length information of reinforcement bar with the wall. - - - IfcWall - - IfcWall - - - Description - Description of the reinforcement. - - - - - - - Description - 説明 - - - - 鉄筋の説明。 - - - - Reference - A descriptive label for the general reinforcement type. - - - - - - - Reference - 参照記号 - - - - 一般的な鉄筋タイプの説明ラベル。 -(例えば、壁の外側・内側で鉄筋間隔が異なる場合に、"Outside","Inside"を記述する) - - - - BarAllocationType - Defines the type of the reinforcement bar allocation. - - - - SINGLE - DOUBLE - ALTERNATE - OTHER - USERDEFINED - NOTDEFINED - - - - SINGLE - - Single - - - - - - - DOUBLE - - Double - - - - - - - ALTERNATE - - Alternate - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - USERDEFINED - - Userdefined - - - - - - - NOTDEFINED - - Notdefined - - - - - - - - - - Bar Allocation Type - 配筋タイプ - - - - 配筋タイプの定義。 - - - - VerticalBarPitch - The pitch length of the vertical bar. - - - - - - - Vertical Bar Pitch - 縦筋ピッチ - - - - 鉛直方向の補強筋の間隔。 - - - - HorizontalBarPitch - The pitch length of the horizontal bar. - - - - - - - Horizontal Bar Pitch - 横筋ピッチ - - - - 水平方向の補強筋の間隔。 - - - - SpacingBarPitch - The pitch length of the spacing bar. - - - - - - - Spacing Bar Pitch - 巾止筋ピッチ - - - - 巾止筋の間隔。 - - - - - - 壁における補強筋のピッチ長さ情報。 - - - - - Pset_Risk - An indication of exposure to mischance, peril, menace, hazard or loss. - -HISTORY: Extended in IFC2x3 - -There are various types of risk that may be encountered and there may be several instances of Pset_Risk associated in an instance of an IfcProcess. -Specification of this property set incorporates the values of the Incom risk analysis matrix (satisfying AS/NZS 4360) together with additional identified requirements. - - - IfcProcess - - IfcProcess - - - RiskType - Identifies the predefined types of risk from which the type required may be set. - - - - BUSINESS - HAZARD - HEALTHANDSAFETY - INSURANCE - OTHER - NOTKNOWN - UNSET - - - - BUSINESS - - Business - - - - - - - HAZARD - - Hazard - - - - - - - HEALTHANDSAFETY - - Health and Safety - - - - - - - INSURANCE - - Insurance - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Risk Type - - - - - - - NatureOfRisk - An indication of the generic nature of the risk that might be encountered. - -NOTE: It is anticipated that there will be a local agreement that constrains the values that might be assigned to this property. An example might be 'Fall' or 'Fall of grille unit' causing injury and damage to person and property. - - - - - - - Nature Of Risk - - - - - - - SubNatureOfRisk1 - A first subsidiary value that might be assigned to designate a more specific type of risk. - -NOTE: Nature of risk may be identified in various ways depending upon the place where risk assessment takes place and according to local agreement. This property set allows for a generic nature of risk and up to two subsidiary natures. An example might be 'causing injury and damage'. - - - - - - - Sub Nature Of Risk1 - - - - - - - SubNatureOfRisk2 - A second subsidiary value that might be assigned to designate a more specific type of risk. An example might be 'o person and property'. - - - - - - - Sub Nature Of Risk2 - - - - - - - RiskCause - A value that may be assigned to capture the cause or trigger for the risk. An example might be 'poor fixing'. - - - - - - - Risk Cause - - - - - - - AssessmentOfRisk - Likelihood of risk event occurring. - -Note that assessment of risk may frequently be associated with the physical location of the object for which the risk is assessed. - - - - ALMOSTCERTAIN - VERYLIKELY - LIKELY - VERYPOSSIBLE - POSSIBLE - SOMEWHATPOSSIBLE - UNLIKELY - VERYUNLIKELY - RARE - OTHER - NOTKNOWN - UNSET - - - - ALMOSTCERTAIN - - Almost Certain - - - - - - - VERYLIKELY - - Very Likely - - - - - - - LIKELY - - Likely - - - - - - - VERYPOSSIBLE - - Very Possible - - - - - - - POSSIBLE - - Possible - - - - - - - SOMEWHATPOSSIBLE - - Somewhat Possible - - - - - - - UNLIKELY - - Unlikely - - - - - - - VERYUNLIKELY - - Very Unlikely - - - - - - - RARE - - Rare - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Assessment Of Risk - - - - - - - RiskConsequence - Indicates the level of severity of the consequences that the risk would have in case it happens. - - - - CATASTROPHIC - SEVERE - MAJOR - CONSIDERABLE - MODERATE - SOME - MINOR - VERYLOW - INSIGNIFICANT - OTHER - NOTKNOWN - UNSET - - - - CATASTROPHIC - - Catastrophic - - - - - - - SEVERE - - Severe - - - - - - - MAJOR - - Major - - - - - - - CONSIDERABLE - - Considerable - - - - - - - MODERATE - - Moderate - - - - - - - SOME - - Some - - - - - - - MINOR - - Minor - - - - - - - VERYLOW - - Very Low - - - - - - - INSIGNIFICANT - - Insignificant - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Risk Consequence - - - - - - - RiskRating - A general rating of the risk that may be determined from a combination of the risk assessment and risk consequence. - - - - CRITICAL - VERYHIGH - HIGH - CONSIDERABLE - MODERATE - SOME - LOW - VERYLOW - INSIGNIFICANT - OTHER - NOTKNOWN - UNSET - - - - CRITICAL - - Critical - - - - - - - VERYHIGH - - Veryhigh - - - - - - - HIGH - - High - - - - - - - CONSIDERABLE - - Considerable - - - - - - - MODERATE - - Moderate - - - - - - - SOME - - Some - - - - - - - LOW - - Low - - - - - - - VERYLOW - - Verylow - - - - - - - INSIGNIFICANT - - Insignificant - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Risk Rating - - - - - - - RiskOwner - A determination of who is the owner of the risk by reference to principal roles of organizations within a project. Determination of the specific organization should be by reference to instances of IfcActorRole assigned to instances of IfcOrganization (if assigned). - - - - DESIGNER - SPECIFIER - CONSTRUCTOR - INSTALLER - MAINTAINER - OTHER - NOTKNOWN - UNSET - - - - DESIGNER - - Designer - - - - - - - SPECIFIER - - Specifier - - - - - - - CONSTRUCTOR - - Constructor - - - - - - - INSTALLER - - Installer - - - - - - - MAINTAINER - - Maintainer - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Risk Owner - - - - - - - AffectsSurroundings - Indicates wether the risk affects only to the person assigned to that task (FALSE) or if it can also affect to the people in the surroundings (TRUE). - -For example, the process of painting would affect all the people in the vicinity of the process. - - - - - - - Affects Surroundings - - - - - - - PreventiveMeassures - Identifies preventive measures to be taken to mitigate risk. - - - - - - - - - Preventive Meassures - - - - - - - - - - - - - Pset_RoofCommon - Properties common to the definition of all occurrences of IfcRoof. Note: Properties for ProjectedArea and TotalArea added in IFC 2x3 - - - IfcRoof - - IfcRoof - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as "construction type". It should be provided as an alternative to the name of the "object type", if the software does not support object types. - - - - - - - Bauteiltyp - Reference - Reference - 参照記号 - 参考号 - - - Bezeichnung zur Zusammenfassung gleichartiger Bauteile zu einem Bauteiltyp (auch Konstruktionstyp genannt). Alternativ zum Namen des "Typobjekts", insbesondere wenn die Software keine Typen unterstützt. - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1") pour désigner un "type de construction". Une alternative au nom d'un objet type lorsque les objets types ne sont pas gérés par le logiciel. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 若未采用已知的分类系统,则该属性为该项目中该类型构件的参考编号(例如,类型A-1)。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Status - Statut - 状態 - - - Status bzw. Phase des Bauteils insbesondere beim Bauen im Bestand. "Neu" (new) neues Bauteil als Ergänzung, "Bestand" (existing) bestehendes Bauteil, dass erhalten bleibt, "Abbruch" (demolish) Bauteil, das abgebrochen wird, "Temporär" (temporary) Bauteil und andere Bauelemente, die vorübergehend eingebaut werden (wie Abstützungen, etc.) - - Statut de l'élément, principalement utilisé dans les projets de rénovation et de réhabilitation. Le statut a pour valeur NOUVEAU pour un nouvel élément, EXISTANT pour un élément existant qui est conservé, DEMOLI pour un élément existant à démolir et TEMPORAIRE pour un élément temporaire (comme une structure support provisoire). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - AcousticRating - Acoustic rating for this object. -It is provided according to the national building code. It indicates the sound transmission resistance of this object by an index ratio (instead of providing full sound absorbtion values). - - - - - - - Schallschutzklasse - Acoustic Rating - Isolation acoustique - 遮音等級 - - - Schallschutzklasse gemäß der nationalen oder regionalen Schallschutzverordnung. - - Classement acoustique de cet objet. Donné selon le Code National du Bâtiment. Il indique la résistance à la transmission du son de cet objet par une valeur de référence (au lieu de fournir les valeurs totales d'absorption du son). - 遮音等級情報。関連する建築基準法を参照。 - - - - IsExternal - Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building. - - - - - - - Außenbauteil - Is External - EstExterieur - 外部区分 - 是否外部构件 - - - Angabe, ob dieses Bauteil ein Aussenbauteil ist (JA) oder ein Innenbauteil (NEIN). Als Aussenbauteil grenzt es an den Aussenraum (oder Erdreich, oder Wasser). - - Indique si l'élément est conçu pour être utilisé à l'extérieur (VRAI) ou non (FAUX). Si VRAI, c'est un élément extérieur qui donne sur l'extérieur du bâtiment. - 外部の部材かどうかを示すブーリアン値。もしTRUEの場合、外部の部材で建物の外側に面している。 - 表示该构件是否设计为外部构件。若是,则该构件为外部构件,朝向建筑物的外侧。 - - - - ThermalTransmittance - Thermal transmittance coefficient (U-Value) of a material. -Here the total thermal transmittance coefficient through the roof surface (including all materials). - - - - - - - U-Wert - Thermal Transmittance - TransmissionThermique - 熱貫流率 - 导热系数 - - - Wärmedurchgangskoeffizient (U-Wert) der Materialschichten. -Hier der Gesamtwärmedurchgangskoeffizient der Dachkonstruktion (für alle Schichten). - - Coefficient de transmission thermique surfacique (U). C'est le coefficient global de transmission thermique à travers la surface de la couverture (tous matériaux inclus). - 熱貫流率(U値)。 -ここでは(すべての材料を含む)屋根面を通した全体の熱還流率を示す。 - 材料的导热系数(U值)。 -表示穿过该屋顶表面的整体导热系数(包括所有材料) - - - - LoadBearing - - - - - - - - - - FireRating - Fire rating for this object. It is given according to the national fire safety classification. - - - - - - - Feuerwiderstandsklasse - Fire Rating - ResistanceAuFeu - 耐火等級 - 防火等级 - - - Feuerwiderstandasklasse gemäß der nationalen oder regionalen Brandschutzverordnung. - - Classement au feu de l'élément donné selon la classification nationale de sécurité incendie. - 主要な耐火等級。関連する建築基準法、消防法などの国家基準によって指定される。 - 该构件的防火等级。 -该属性的依据为国家防火安全分级。 - - - - - - Définition de l'IAI : propriétés communes à la définition de toutes les instances de la classe IfcRoof. Nota : les propriétés SurfaceProjection et SurfaceTotale ont été introduites depuis la version 2x3. - IfcRoof(屋根)オブジェクトに関する共通プロパティセット定義。 -注:建築面積と延床面積のプロパティは、IFC2x3から追加された。 - 所有IfcRoof实例的定义中通用的属性。 - - - - - Pset_SanitaryTerminalTypeBath - Sanitary appliance for immersion of the human body or parts of it (BS6100). HISTORY: In IFC4, Material and MaterialThickness properties removed. Use materials capabilities from IfcMaterialsResource schema. Datatype of color changed to IfcLabel (still a string value) - - - IfcSanitaryTerminal/BATH - - IfcSanitaryTerminal/BATH - - - BathType - The property enumeration defines the types of bath that may be specified within the property set. - - - - DOMESTIC - DOMESTICCORNER - FOOT - JACUZZI - PLUNGE - SITZ - TREATMENT - WHIRLPOOL - OTHER - NOTKNOWN - UNSET - - - - DOMESTIC - Bath, for one person at a time, into which the whole body can be easily immersed. - - - Domestic - - - - - - - FOOT - Shallow bath for washing the feet. - - Foot - - - - - - - POOL - Indoor or outdoor pool. - - - - - PLUNGE - Bath, usually for more than one person at a time, into which the whole body can be easily immersed. - - Plunge - - - - - - - SITZ - Bath in which a bather sits as in a chair. - - Sitz - - - - - - - SPA - Indoor or outdoor pool designed for multiple people in which an integrated device agitates the water by pumped circulation or induction of water and/or air. - - Whirlpool - - - - - - - TREATMENT - Bath used for hydrotherapy purposes. - - Treatment - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Bath Type - バスタイプ - - - - 列挙するプロパティは、プロパティセット内で指定することができるバスの種類の定義: - -家庭用:全身を簡単に浸漬することができる一度に1人の人間が入るバス。 - -家庭用Corner:浸漬トラフが傾いていて、全身を簡単に浸漬することができる一度に1人の人間が入るバス。 - -フットバス:足を洗う浅いバス。 - -ジャグジー:複数の人のための渦のバス - -プランジバス:通常は全身を簡単に浸漬することができまる一度に複数の人の入るバス。 - -座バス:水浴を椅子のように座って行うバス。 - -治療バス:水浴セラピーの目的に使用されるバス。 - -渦バス:ポンプによる水の循環や、水や空気の誘引により水を攪拌する統合された装置としてのバス。 - - - - DrainSize - The size of the drain outlet connection from the object. - - - - - - - Drain Size - ドレインサイズ - - - - 排水口の接続のサイズ。 - - - - HasGrabHandles - Indicates whether the bath is fitted with handles that provide assistance to a bather in entering or leaving the bath. - - - - - - - Has Grab Handles - 手すりの有無 - - - - 風呂の出入りを補助する手すりが取り付けられているかどうかを示す。 - - - - - - 人体の全体かその一部を浸す衛生器具(BS6100)。履歴:IFC4では材料および材料厚さ属性削除。使用材料の機能は IfcMaterialsResourceスキーマを使用。色のデータ型は、(まだ文字列値)IfcLabelに変更。 - - - - - Pset_SanitaryTerminalTypeBidet - Waste water appliance for washing the excretory organs while sitting astride the bowl (BS6100). HISTORY: In IFC4, Material property removed. Use materials capabilities from IfcMaterialsResource schema. Datatype of color changed to IfcLabel (still a string value). BidetMounting changed to Mounting. - - - IfcSanitaryTerminal/BIDET - - IfcSanitaryTerminal/BIDET - - - Mounting - The property enumeration Pset_SanitaryMountingEnum defines the forms of mounting or fixing of the sanitary terminal that may be specified within property sets used to define sanitary terminals (WC’s, basins, sinks, etc.) where:- - -BackToWall: A pedestal mounted sanitary terminal that fits flush to the wall at the rear to cover its service connections -. -Pedestal: A floor mounted sanitary terminal that has an integral base -. -CounterTop: A sanitary terminal that is installed into a horizontal surface that is installed into a horizontal surface. Note: When applied to a wash hand basin, the term more normally used is ‘vanity’. See also Wash Hand Basin Type specification. -WallHung: A sanitary terminal cantilevered clear of the floor. - -Note that BackToWall, Pedestal and WallHung are allowable values for a bidet. - - - - BACKTOWALL - PEDESTAL - COUNTERTOP - WALLHUNG - OTHER - NOTKNOWN - UNSET - - - - BACKTOWALL - - Back To Wall - - - - - - - PEDESTAL - - Pedestal - - - - - - - COUNTERTOP - - Countertop - - - - - - - WALLHUNG - - Wall Hung - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Mounting - 装着 - - - - 列挙するプロパティはPset_SanitaryMountingEnumでは(トイレの、洗面台、シンクなど)、衛生配管への装着法で定義される: - -床置き壁排水:台座は、カバーの背面の壁にあるフラッシュバルブに接続される。 - -床置き:床の衛生配管に装着される。 - -カウンター:水平面に設置された衛生配管に接続します。注:手洗器があると、通常は'化粧'が使用される。手洗器を参照。 - -壁掛け:衛生配管は壁から出され床には何もなくなる。。 - -床置き壁排水、床置き、壁掛けは、ビデの許容値であることに注意。 - - - - SpilloverLevel - The level at which water spills out of the object. - - - - - - - Spillover Level - 流出レベル - - - - 水がこぼれるレベル。 - - - - DrainSize - The size of the drain outlet connection from the object. - - - - - - - Drain Size - ドレインサイズ - - - - 排水口の接続のサイズ。 - - - - - - ボウル(BS6100)にまたがって座って排泄器官を洗浄するための排水器具を設定します。履歴:IFC4では、材料のプロパティが削除されます。 -使用材料の機能は IfcMaterialsResourceスキーマを使用。 -色のデータ型は、IfcLabel(まだ文字列値)に変更。BidetMountingをMountingに変更。 - - - - - Pset_SanitaryTerminalTypeCistern - A water storage unit attached to a sanitary terminal that is fitted with a device, operated automatically or by the user, that discharges water to cleanse a water closet (toilet) pan, urinal or slop hopper. (BS6100 330 5008) - - - IfcSanitaryTerminal/CISTERN - - IfcSanitaryTerminal/CISTERN - - - CisternHeight - Enumeration that identifies the height of the cistern or, if set to 'None' if the urinal has no cistern and is flushed using mains or high pressure water through a flushing valve. - - - - HIGHLEVEL - LOWLEVEL - NONE - OTHER - NOTKNOWN - UNSET - - - - HIGHLEVEL - - High-level - - - - - - - LOWLEVEL - - Low-level - - - - - - - NONE - - None - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Cistern Height - 貯水タンクの高さ - - - - 貯水タンクの高さを示す。小便器がフラッシュバルブを使い貯水タンクを持っていない場合は'None'に設定される。 - - - - CisternCapacity - Volumetric capacity of the cistern - - - - - - - Cistern Capacity - 貯水タンク容量 - - - - 貯水タンクの体積容量。 - - - - IsSingleFlush - Indicates whether the cistern is single flush = TRUE (i.e. the same amount of water is used for each and every flush) or dual flush = FALSE (i.e. the amount of water used for a flush may be selected by the user to be high or low depending on the waste material to be removed). - - - - - - - Is Single Flush - 単一のフラッシュ - - - - 単一フラッシュ= TRUE(各洗浄に同量の水が使用される)、デュアルフラッシュ= FALSE(洗浄する汚物に応じてハイまたはローをユーザが選択することができるフラッシュ使用)の指標を設定する。 - - - - FlushType - The property enumeration Pset_FlushTypeEnum defines the types of flushing mechanism that may be specified for cisterns and sanitary terminals where:- - -Lever: Flushing is achieved by twisting a lever that causes a predetermined flow of water to be passed from a cistern to the sanitary terminal. -Pull: Flushing is achieved by pulling a handle or knob vertically upwards that causes a predetermined flow of water to be passed from a cistern to the sanitary terminal. -Push: Flushing is achieved by pushing a button or plate that causes a predetermined flow of water to be passed from a cistern to the sanitary terminal. -Sensor: Flush is activated through an automatic sensing mechanism. - - - - LEVER - PULL - PUSH - SENSOR - OTHER - NOTKNOWN - UNSET - - - - LEVER - - Lever - - - - - - - PULL - - Pull - - - - - - - PUSH - - Push - - - - - - - SENSOR - - Sensor - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Flush Type - タイプフラッシュ - - - - 列挙するプロパティはPset_FlushTypeEnumでは貯水槽や衛生配管の配置による、フラッシュメカニズムのタイプを定義する: - -レバー式:洗浄水は、レバーをねじることによって貯水タンクから衛生配管にの所定の流量を流す。 - -引っ張り式:洗浄水は、ハンドルまたはノブを垂直方向に引くことによって貯水タンクから衛生配管にの所定の流量を流す。 - -押しボタン式:洗浄水は、ボタンかプレートを押すことによって貯水タンクから衛生配管にの所定の流量を流す。 - -センサー式:洗浄水は、自動検出機構を介して作動する。 - - - - FlushRate - The minimum and maximum volume of water used at each flush. Where a single flush is used, the value of upper bound and lower bound should be equal. For a dual flush toilet, the lower bound should be used for the lesser flush rate and the upper bound for the greater flush rate. Where flush is achieved using mains pressure water through a flush valve, the value of upper and lower bound should be equal and should be the same as the flush rate property of the flush valve (see relevant valve property set). Alternatively, in this case, do not assert the flush rate property; refer to the flush rate of the flush valve. - - - - - - - Flush Rate - フラッシュレート - - - - 各フラッシュで使用される水量の最小値と最大値。単一フラッシュが使用されている場合、上下限値は同じ。デュアルフラッシュトイレについては、下限が低いフラッシュレート、上限に大きいフラッシュ率を使用する。ここで、洗浄はフラッシュバルブを通した水の水圧を用いて達成されるので、フラッシュレートとフラッシュバルブの上下限値と等しくなければなりません(関連バルブプロパティセットを参照してください)。また、この場合には、フラッシュレートのプロパティを設定しない。フラッシュバルブのフラッシュレートを参照。 - - - - IsAutomaticFlush - Boolean value that determines if the cistern is flushed automatically either after each use or periodically (TRUE) or whether manual flushing is required (FALSE). - - - - - - - Is Automatic Flush - 自動フラッシュか - - - - 貯水タンクは、使用後に自動的または定期的に洗浄する場合(TRUE)、手動で洗浄する場合(FALSE)をブーリアン値で指定する。 - - - - - - 衛生配管に接続されている貯水装置で、自動または手動により、大便器(トイレ)パン、小便器や汚物ホッパーなどを排水により洗浄する。 (BS61003305008) - - - - - Pset_SanitaryTerminalTypeCommon - Common properties for sanitary terminals. - - - IfcSanitaryTerminal - - IfcSanitaryTerminal - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照記号 - - - - 使用される認識分類システムで分類基準がない場合、プロジェクトで指定された型(タイプ'A-1'など)で提供されるレファレンスID。 - - - - Status - - - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - - - - NominalLength - Nominal or quoted length of the object. - - - - - - - - - - NominalWidth - Nominal or quoted width of the object. - - - - - - - - - - NominalDepth - Nominal or quoted depth of the object. - - - - - - - - - - Color - Color selection for this object. - - - - - - - - - - - - 衛生器具の共通プロパティを設定。 - - - - - Pset_SanitaryTerminalTypeSanitaryFountain - Asanitary terminal that provides a low pressure jet of water for a specific purpose (IAI). HISTORY: In IFC4, Material property removed. Use materials capabilities from IfcMaterialsResource schema. Datatype of color changed to IfcLabel (still a string value). - - - IfcSanitaryTerminal/SANITARYFOUNTAIN - - IfcSanitaryTerminal/SANITARYFOUNTAIN - - - FountainType - Selection of the type of fountain from the enumerated list of types where:- - -DrinkingWater: Sanitary appliance that provides a low pressure jet of drinking water. -Eyewash: Waste water appliance, usually installed in work places where there is a risk of injury to eyes by solid particles or dangerous liquids, with which the user can wash the eyes without touching them. - - - - DRINKINGWATER - EYEWASH - OTHER - NOTKNOWN - UNSET - - - - DRINKINGWATER - - Drinking Water - - - - - - - EYEWASH - - Eyewash - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Fountain Type - 噴水タイプ - - - - 噴水タイプの選択: - -・飲用水:飲用水を低圧で供給するための衛生器具 -・洗眼器:廃水器具で、通常は個体の粒子か危険な液体による眼への障害の危険がある作業場所に設置され、使用者はそれらに触れずに目を洗うことができる。 - - - - Mounting - Selection of the form of mounting of the fountain from the enumerated list of mountings where:- - -BackToWall: A pedestal mounted sanitary terminal that fits flush to the wall at the rear to cover its service connections. -Pedestal: A floor mounted sanitary terminal that has an integral base -. -CounterTop: A sanitary terminal that is installed into a horizontal surface that is installed into a horizontal surface. Note: When applied to a wash hand basin, the term more normally used is ‘vanity’. See also Wash Hand Basin Type specification. -WallHung: A sanitary terminal cantilevered clear of the floor. - - - - BACKTOWALL - PEDESTAL - COUNTERTOP - WALLHUNG - OTHER - NOTKNOWN - UNSET - - - - BACKTOWALL - - Back To Wall - - - - - - - PEDESTAL - - Pedestal - - - - - - - COUNTERTOP - - Countertop - - - - - - - WALLHUNG - - Wall Hung - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Mounting - 設置 - - - - 設置場所の選択: - -・床置き壁排出:接続口の後部に出水口を合わせること。 -・台:床置きの衛生器具には基礎があること。 -・調理台:衛生器具の表層が水平に設置されていること。※手洗い台として設置された場合「化粧台」として扱うこと。また、洗面台種類の規格表を参照のこと。 -・壁掛け型:衛生器具は片側固定がされ床から離れていること。 - - - - DrainSize - The size of the drain outlet connection from the object. - - - - - - - Drain Size - 下水管サイズ - - - - 要素から排水溝への下水管サイズ。 - - - - - - 特定の使用用途の水を低圧で供給する衛生機器 -背景:IFC4で、要素のプロパティーは排除されています。IfcMaterialsResourceのタイプを使ってください。 -色のデータ形式は文字列としてIfcLabelに変更されています。 - - - - - Pset_SanitaryTerminalTypeShower - Installation or waste water appliance that emits a spray of water to wash the human body (BS6100). HISTORY: In IFC4, Material and MaterialThickness properties removed. Use materials capabilities from IfcMaterialsResource schema. Datatype of color changed to IfcLabel (still a string value) - - - IfcSanitaryTerminal/SHOWER - - IfcSanitaryTerminal/SHOWER - - - ShowerType - Selection of the type of shower from the enumerated list of types where:- - -Drench: Shower that rapidly gives a thorough soaking in an emergency. -Individual: Shower unit that is typically enclosed and is for the use of one person at a time. -Tunnel: Shower that has a succession of shower heads or spreaders that operate simultaneously along its length. - - - - DRENCH - INDIVIDUAL - TUNNEL - OTHER - NOTKNOWN - UNSET - - - - DRENCH - - Drench - - - - - - - INDIVIDUAL - - Individual - - - - - - - TUNNEL - - Tunnel - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Shower Type - シャワータイプ - - - - 場所からのシャワータイプの選択: - -・水浸性:緊急時には素早く水に浸れるシャワー -・独立性:一度に一人が使え、区切られているシャワーユニット -・トンネル:シャワーヘッドの連続で設置されているか長さ方向に同時操作となる水散布機型のシャワー - - - - HasTray - Indicates whether the shower has a separate receptacle that catches the water in a shower and directs it to a waste outlet. - - - - - - - Has Tray - - - - - - - ShowerHeadDescription - A description of the shower head(s) that emit the spray of water. - - - - - - - Shower Head Description - シャワーヘッド表現 - - - - シャワーヘッドが排出する水の放射の表現。 - - - - DrainSize - The size of the drain outlet connection from the object. - - - - - - - Drain Size - 管口径 - - - - 要素の排水口接続口サイズ。 - - - - - - 人体を洗うために水をスプレー状に放射する廃水器具(BS6100) -背景: IFC4において、要素と要素厚さのプロパティーは排除されています 。IfcMaterialsResourceのタイプを使ってください。 色のデータ形式は文字列としてIfcLabelに変更されています。 - - - - - Pset_SanitaryTerminalTypeSink - Waste water appliance for receiving, retaining or disposing of domestic, culinary, laboratory or industrial process liquids. HISTORY: In IFC4, Material property removed. Use materials capabilities from IfcMaterialsResource schema. Datatype of color changed to IfcLabel (still a string value). SinkMounting changed to Mounting. - - - IfcSanitaryTerminal/SINK - - IfcSanitaryTerminal/SINK - - - SinkType - Selection of the type of sink from the enumerated list of types where:- - -Belfast: Deep sink that has a plain edge and a weir overflow -. -Bucket: Sink at low level, with protected front edge, that facilitates filling and emptying buckets, usually with a hinged grid on which to stand them. -Cleaners: Sink, usually fixed at normal height (900mm), with protected front edge. -Combination_Left: Sink with integral drainer on left hand side -. -Combination_Right: Sink with integral drainer on right hand side -. -Combination_Double: Sink with integral drainer on both sides -. -Drip: Small sink that catches drips or flow from a faucet -. -Laboratory: Sink, of acid resisting material, with a top edge shaped to facilitate fixing to the underside of a desktop -. -London: Deep sink that has a plain edge and no overflow -. -Plaster: Sink with sediment receiver to prevent waste plaster passing into drains -. -Pot: Large metal sink, with a standing waste, for washing cooking utensils -. -Rinsing: Metal sink in which water can be heated and culinary utensils and tableware immersed at high temperature that destroys most harmful bacteria and allows subsequent self drying. -. -Shelf: Ceramic sink with an integral back shelf through which water fittings are mounted -. -VegetablePreparation: Large metal sink, with a standing waste, for washing and preparing vegetables -. - - - - BELFAST - BUCKET - CLEANERS - COMBINATION_LEFT - COMBINATION_RIGHT - COMBINATION_DOUBLE - DRIP - LABORATORY - LONDON - PLASTER - POT - RINSING - SHELF - VEGETABLEPREPARATION - OTHER - NOTKNOWN - UNSET - - - - BELFAST - - Belfast - - - - - - - BUCKET - - Bucket - - - - - - - CLEANERS - - Cleaners - - - - - - - COMBINATION_LEFT - - Combination Left - - - - - - - COMBINATION_RIGHT - - Combination Right - - - - - - - COMBINATION_DOUBLE - - Combination Double - - - - - - - DRIP - - Drip - - - - - - - LABORATORY - - Laboratory - - - - - - - LONDON - - London - - - - - - - PLASTER - - Plaster - - - - - - - POT - - Pot - - - - - - - RINSING - - Rinsing - - - - - - - SHELF - - Shelf - - - - - - - VEGETABLEPREPARATION - - Vegetable Preparation - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Sink Type - シンクの種類 - - - - シンクタイプの選択 - -・深流し:エッジが平らであふれにくい深いシンク -• 下流し:先端が保護され、低水位用のシンク -・掃除流し:先端が保護されたシンク(通常は900mm高さに調整されたもの) -・左水切り:左側に水切りが付いているシンク -・右水切り流し:右側に水切りが付いているシンク -・両水切り流し:両側に水切りが付いているタイプ -・点滴:蛇口からの流れや滴を捕まえる小さめのシンク -・実験流し:デスク天板下が簡易的に固定された他耐酸性の材料を使ったシンク -・ロンドン:オーバーフローなしのエッジが平らの深いシンク -・石膏流し:廃石膏が排水管中に入ってしまうのをを防ぐため、沈殿物レシーバーが付いているシンク。 -・料理流し:ゴミの廃棄もできる調理用具を洗うためのシンク -・すすぎ用の流し:高温滅菌ができる乾いた状態を保持できる鉄製のシンク -・棚付き流し:金具の接続や設置ができる棚を後ろに持つセラミック製のシンク -・野菜流し:ゴミの廃棄もできる、洗浄や調理の準備をする大きめの鉄製のシンク - - - - Mounting - Selection of the form of mounting of the sink from the enumerated list of mountings where:- - -BackToWall: A pedestal mounted sanitary terminal that fits flush to the wall at the rear to cover its service connections. -Pedestal: A floor mounted sanitary terminal that has an integral base. -CounterTop: A sanitary terminal that is installed into a horizontal surface that is installed into a horizontal surface. Note: When applied to a wash hand basin, the term more normally used is ‘vanity’. See also Wash Hand Basin Type specification. -WallHung: A sanitary terminal cantilevered clear of the floor. - - - - BACKTOWALL - PEDESTAL - COUNTERTOP - WALLHUNG - OTHER - NOTKNOWN - UNSET - - - - BACKTOWALL - - Back To Wall - - - - - - - PEDESTAL - - Pedestal - - - - - - - COUNTERTOP - - Countertop - - - - - - - WALLHUNG - - Wall Hung - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Mounting - 設置 - - - - 設置場所の選択 - -・床置き壁排出:接続口の後部に出水口を合わせること。 -・台:床置きの衛生器具には基礎があること。 -・調理台:衛生器具の表層が水平に設置されていること。※手洗い台として設置された場合「化粧台」として扱うこと。また、洗面台種類の規格表を参照のこと。 -・壁掛け型:衛生器具は片側固定がされ床から離れていること。 - - - - Color - Color selection for this object. - - - - - - - Color - - - - - 要素の色。 - - - - DrainSize - The size of the drain outlet connection from the object. - - - - - - - Drain Size - 管径 - - - - 要素への接続口径。 - - - - MountingOffset - For cunter top maounted sinks, the vertical offset between the top of the sink and the counter top. - - - - - - - Mounting Offset - 据付補正 - - - - 調理台に設置されたシンクに、上端と調理台間で垂直に補正されること。 - - - - - - 受信側の廃水機器。 -家庭内の処理や保持、台所や便所もしくは工業用途の液体処理を行います。 -背景:IFC4において、要素のプロパティーは排除されています 。IfcMaterialsResourceのタイプを使ってください。 色のデータ形式は文字列としてIfcLabelに変更されています。「SinkMounting」は「Mounting」に変更されています。 - - - - - Pset_SanitaryTerminalTypeToiletPan - Soil appliance for the disposal of excrement. HISTORY: In IFC4, Material property removed. Use materials capabilities from IfcMaterialsResource schema. Prefix for color property removed. Datatype of color changed to IfcLabel (still a string value). - - - IfcSanitaryTerminal/TOILETPAN - - IfcSanitaryTerminal/TOILETPAN - - - ToiletType - Enumeration that defines the types of toilet (water closet) arrangements that may be specified where:- - -BedPanWasher: Enclosed soil appliance in which bedpans and urinal bottles are emptied and cleansed. -Chemical: Portable receptacle or soil appliance that receives and retains excrement in either an integral or a separate container, in which it is chemically treated and from which it has to be emptied periodically. -CloseCoupled: Toilet suite in which a flushing cistern is connected directly to the water closet pan. -LooseCoupled: Toilet arrangement in which a flushing cistern is connected to the water closet pan through a flushing pipe. -SlopHopper: Hopper shaped soil appliance with a flushing rim and outlet similar to those of a toilet pan, into which human excrement is emptied for disposal. - - - - BEDPANWASHER - CHEMICAL - CLOSECOUPLED - LOOSECOUPLED - SLOPHOPPER - OTHER - NOTKNOWN - UNSET - - - - BEDPANWASHER - - Bed Pan Washer - - - - - - - CHEMICAL - - Chemical - - - - - - - CLOSECOUPLED - - Close Coupled - - - - - - - LOOSECOUPLED - - Loose Coupled - - - - - - - SLOPHOPPER - - Slop Hopper - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Toilet Type - トイレ種類 - - - - トイレ配置は下記に列挙された仕様となります。 - -便器洗浄機:便器と小便器が空にされ洗浄される周囲が囲まれた電気機器。 -ケミカル:別々の容器で排泄物を受けて、保持し、化学的に扱われる、定期的に空にされる携帯用の容器または土機器。 -シスターン直結型:シスターンがが便器に直接密着して設置されたタイプ -シスターン分離型:シスターンがパイプを介して便器につながっているタイプ -汚物流し:ホッパーは土壌器具にデザイされており、汚物が流され空になります。 - - - - ToiletPanType - The property enumeration Pset_ToiletPanTypeEnum defines the types of toilet pan that may be specified within the property set Pset_Toilet:- - -Siphonic: Toilet pan in which excrement is removed by siphonage induced by the flushing water. -Squat: Toilet pan with an elongated bowl installed with its top edge at or near floor level, so that the user has to squat. -WashDown: Toilet pan in which excrement is removed by the momentum of the flushing water. -WashOut: A washdown toilet pan in which excrement falls first into a shallow water filled bowl. - - - - SIPHONIC - SQUAT - WASHDOWN - WASHOUT - OTHER - NOTKNOWN - UNSET - - - - SIPHONIC - - Siphonic - - - - - - - SQUAT - - Squat - - - - - - - WASHDOWN - - Washdown - - - - - - - WASHOUT - - Washout - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Toilet Pan Type - 便器タイプ - - - - Pset_SanitaryMountingEnumは下記に列挙された便器タイプとして定義されます。 - -サイホン式:流水を含むサイホンにより汚物が廃棄される便器 -和式:便器が床面か淵の高さと同じに配置された便器。使用者はしゃがまなければならない。 -ウォッシュダウン式:勢いよく洗い流すことにより便器をきれいにします -洗浄式便器:まず汚物が落ちその後、便器に水が流れます - - - - PanMounting - The property enumeration Pset_SanitaryMountingEnum defines the forms of mounting or fixing of the sanitary terminal that may be specified within property sets used to define sanitary terminals (WC’s, basins, sinks, etc.) where:- - -BackToWall: A pedestal mounted sanitary terminal that fits flush to the wall at the rear to cover its service connections. -Pedestal: A floor mounted sanitary terminal that has an integral base. -CounterTop: A sanitary terminal that is installed into a horizontal surface that is installed into a horizontal surface. Note: When applied to a wash hand basin, the term more normally used is ‘vanity’. See also Wash Hand Basin Type specification. -WallHung: A sanitary terminal cantilevered clear of the floor. - - - - BACKTOWALL - PEDESTAL - COUNTERTOP - WALLHUNG - OTHER - NOTKNOWN - UNSET - - - - BACKTOWALL - - Back To Wall - - - - - - - PEDESTAL - - Pedestal - - - - - - - COUNTERTOP - - Countertop - - - - - - - WALLHUNG - - Wall Hung - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Pan Mounting - 取付方法 - - - - Pset_SanitaryMountingEnumは固定された衛生器具の接続点(トイレや洗面器、シンクなど)に取り付けられます。 - -・床置き壁排出:背面の壁に接続口を合わせること。 -・台:床置きの衛生器具には基礎があること。 -・カウンター:衛生器具の表層が水平に設置されていること。※手洗い台として設置された場合「化粧台」として扱うこと。また、洗面台種類の規格表を参照のこと。 -・壁掛け型:衛生器具は片側固定がされ床から離れていること。 - - - - SpilloverLevel - The level at which water spills out of the terminal. - - - - - - - Spillover Level - 水位 - - - - 継手からの水位。 - - - - - - 排泄物排気用の機器。 -背景:IFC4において、要素のプロパティーは排除されています 。IfcMaterialsResourceのタイプを使ってください。 色の設定は取り除かれています。色のデータ形式は文字列としてIfcLabelに変更されています。 - - - - - Pset_SanitaryTerminalTypeUrinal - Soil appliance that receives urine and directs it to a waste outlet (BS6100). HISTORY: In IFC4, Material property removed. Use materials capabilities from IfcMaterialsResource schema. Prefix for color property removed. Datatype of color changed to IfcLabel (still a string value). Mounting property added. - - - IfcSanitaryTerminal/URINAL - - IfcSanitaryTerminal/URINAL - - - UrinalType - Selection of the type of urinal from the enumerated list of types where:- - -Bowl: Individual wall mounted urinal. -Slab: Urinal that consists of a slab or sheet fixed to a wall and down which urinal flows into a floor channel. -Stall: Floor mounted urinal that consists of an elliptically shaped sanitary stall fixed to a wall and down which urine flows into a floor channel. -Trough: Wall mounted urinal of elongated rectangular shape on plan, that can be used by more than one person at a time. - - - - BOWL - SLAB - STALL - TROUGH - OTHER - NOTKNOWN - UNSET - - - - BOWL - - Bowl - - - - - - - SLAB - - Slab - - - - - - - STALL - - Stall - - - - - - - TROUGH - - Trough - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Urinal Type - 小便器タイプ - - - - 下記のリストより小便器タイプを選択 - -便器:壁に設置された独立した小便器 -床:壁や床の溝へ流れるように固定されている -個室:衛生個室の床や壁に楕円形に設置されたフロア -溝:一人以上の人数が同時に使用できるよう、壁に直角に長く引き伸ばした形 - - - - Mounting - Selection of the form of mounting from the enumerated list of mountings where:- - -BackToWall = A pedestal mounted sanitary terminal that fits flush to the wall at the rear to cover its service connections -Pedestal = A floor mounted sanitary terminal that has an integral base -CounterTop = A sanitary terminal that is installed into a horizontal surface that is installed into a horizontal surface. Note: When applied to a wash hand basin, the term more normally used is ‘vanity’. See also Wash Hand Basin Type specification. -WallHung = A sanitary terminal cantilevered clear of the floor -. - -Note that BackToWall, Pedestal and WallHung are allowable values for a urinal. - - - - BACKTOWALL - PEDESTAL - COUNTERTOP - WALLHUNG - OTHER - NOTKNOWN - UNSET - - - - BACKTOWALL - - Back To Wall - - - - - - - PEDESTAL - - Pedestal - - - - - - - COUNTERTOP - - Countertop - - - - - - - WALLHUNG - - Wall Hung - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Mounting - 設置 - - - - 下記の設置方法より選択 - - -・床置き壁排出:接続口の後部に出水口を合わせること。 -・台:床置きの衛生器具には基礎があること。 -・カウンター:衛生器具の表層が水平に設置されていること。※手洗い台として設置された場合「化粧台」として扱うこと。また、洗面台種類の規格表を参照のこと。 -・壁掛け型:衛生器具は片側固定がされ床から離れていること。 - -床置き壁排出型・台座と壁掛け型は便器と同等とされます。 - - - - SpilloverLevel - The level at which water spills out of the object. - - - - - - - Spillover Level - 水位 - - - - 継手からの水位。 - - - - - - 小便を受けたり直接排水溝に流すための機器(BS6100)。 -背景:IFC4において、要素のプロパティーは排除されています 。IfcMaterialsResourceのタイプを使ってください。 色の設定は取り除かれています。色のデータ形式は文字列としてIfcLabelに変更されています。また、「設置」のプロパティーが加えられました。 - - - - - Pset_SanitaryTerminalTypeWashHandBasin - Waste water appliance for washing the upper parts of the body. HISTORY: In IFC4, Material property removed. Use materials capabilities from IfcMaterialsResource schema. Datatype of color changed to IfcLabel (still a string value). - - - IfcSanitaryTerminal/WASHHANDBASIN - - IfcSanitaryTerminal/WASHHANDBASIN - - - WashHandBasinType - Defines the types of wash hand basin that may be specified where: - - -DentalCuspidor: Waste water appliance that receives and flushes away mouth washings -. -HandRinse: Wall mounted wash hand basin that has an overall width of 500mm or less -. -Hospital: Wash hand basin that has a smooth easy clean surface without tapholes or overflow slot for use where hygiene is of prime importance. - -Tipup: Wash hand basin mounted on pivots so that it can be emptied by tilting. - -Vanity: Wash hand basin for installation into a horizontal surface. - -Washfountain: Wash hand basin that is circular, semi-circular or polygonal on plan, at which more than one person can wash at the same time. -WashingTrough: Wash hand basin of elongated rectangular shape in plan, at which more than one person can wash at the same time. - - - - DENTALCUSPIDOR - HANDRINSE - HOSPITAL - TIPUP - WASHFOUNTAIN - WASHINGTROUGH - OTHER - NOTKNOWN - UNSET - - - - DENTALCUSPIDOR - - Dental Cuspidor - - - - - - - HANDRINSE - - Hand Rinse - - - - - - - HOSPITAL - - Hospital - - - - - - - TIPUP - - Tipup - - - - - - - WASHFOUNTAIN - - Wash Fountain - - - - - - - WASHINGTROUGH - - Washing Trough - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Wash Hand Basin Type - 手洗い種類 - - - - 手洗いの種類は設置される場所で定義されます。 - -歯科用痰壷:口をゆすぐ際に受けて流す廃水機器 -手洗い:500mm以下の幅の壁掛け型手洗い -病院用:サイフォンか氾濫防止弁が付いた衛生が最優先とされる場所で使用される手洗い洗面器 -上げ起こし型:角度調整によって空にできる軸上に設置された手洗い -化粧台:地平面に設置された手洗い台 -洗浄噴水型:一人以上の人間が同時に使用できる円・半円・多角形の洗面台 -洗浄ボウル:一人以上の人間が同時に使用できる多角形の洗面台 - - - - Mounting - Selection of the form of mounting from the enumerated list of mountings where:- - -BackToWall: A pedestal mounted sanitary terminal that fits flush to the wall at the rear to cover its service connections. -Pedestal: A floor mounted sanitary terminal that has an integral base -CounterTop: A sanitary terminal that is installed into a horizontal surface that is installed into a horizontal surface. Note: When applied to a wash hand basin, the term more normally used is ‘vanity’. See also Wash Hand Basin Type specification. -WallHung: A sanitary terminal cantilevered clear of the floor. - - - - BACKTOWALL - PEDESTAL - COUNTERTOP - WALLHUNG - OTHER - NOTKNOWN - UNSET - - - - BACKTOWALL - - Back To Wall - - - - - - - PEDESTAL - - Pedestal - - - - - - - COUNTERTOP - - Countertop - - - - - - - WALLHUNG - - Wall Hung - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Mounting - 設置 - - - - 以下のリストから設置方法を選択 - - -・床置き壁排出:接続口の後部に出水口を合わせること。 -・台:床置きの衛生器具には基礎があること。 -・カウンター:衛生器具の表層が水平に設置されていること。※手洗い台として設置された場合「化粧台」として扱うこと。また、洗面台種類の規格表を参照のこと。 -・壁掛け型:衛生器具は片側固定がされ床から離れていること。 - - - - DrainSize - The size of the drain outlet connection from the object. - - - - - - - Drain Size - 管径 - - - - 要素への接続口径。 - - - - MountingOffset - For counter top mounted basins the vertical offset between the top of the sink and the counter top. - - - - - - - Mounting Offset - 据付補正 - - - - カウンター用途として、カウンターとシンクの間に垂直洗浄に据付される廃水機器。 - - - - - - 体の上部分を洗浄するための廃水機器。 -背景:IFC4において、要素のプロパティーは排除されています 。IfcMaterialsResourceのタイプを使ってください。 色のデータ形式は文字列としてIfcLabelに変更されています。また、「設置」のプロパティーが加えられました。 - - - - - Pset_SensorPHistory - Properties for history of controller values. HISTORY: Added in IFC4. - - - IfcSensor - - IfcSensor - - - Value - Indicates sensed values over time which may be recorded continuously or only when changed beyond a particular deadband. The range of possible values is defined by the SetPoint property of the corresponding sensor type property set. - - - - - Value - - - - - - - Direction - Indicates sensed direction for sensors capturing magnitude and direction measured from True North (0 degrees) in a clockwise direction. - - - - - Direction - - - - - - - Quality - Indicates the quality of measurement or failure condition, which may be further qualified by the Status. True: measured values are considered reliable; False: measured values are considered not reliable (i.e. a fault has been detected); Unknown: reliability of values is uncertain. - - - - - Quality - - - - - - - Status - Indicates an error code or identifier, whose meaning is specific to the particular automation system. Example values include: 'ConfigurationError', 'NotConnected', 'DeviceFailure', 'SensorFailure', 'LastKnown, 'CommunicationsFailure', 'OutOfService'. - - - - - Status - - - - - - - - - - - - - Pset_SensorTypeCO2Sensor - A device that senses or detects carbon dioxide. - - - IfcSensor/CO2SENSOR - - IfcSensor/CO2SENSOR - - - SetPointConcentration - The carbon dioxide concentration to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value. - - - - - - - Set Point Concentration - - - - - - - - - - - - - Pset_SensorTypeCommon - Sensor type common attributes. HISTORY: Added in IFC4. - - - IfcSensor - - IfcSensor - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照記号 - 참조ID - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 해당 프로젝트에서 사용이 유형에 대한 참조 ID (예 : 'A-1') ※ 기본이있는 경우 그 기호를 사용 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - - - センサータイプの共通属性。 - - - - - Pset_SensorTypeConductanceSensor - A device that senses or detects electrical conductance. HISTORY: Added in IFC4. - - - IfcSensor/CONDUCTANCESENSOR - - IfcSensor/CONDUCTANCESENSOR - - - SetPointConductance - The fill level value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value. - - - - - - - Set Point Conductance - 電気伝導率設定値 - 전기 전도율 설정 - - - - 感知される電気伝導率。 -セットポイント値を置くために、IfcPropertyBoundedValue.SetPointValueを使用する。 - 감지되는 전기 전도율. 세트 포인트 값을 넣으려면, IfcPropertyBoundedValue.SetPointValue를 사용하십시오. - - - - - - 電気伝導性を感知または検出するデバイス。 - - - - - Pset_SensorTypeContactSensor - A device that senses or detects contact. HISTORY: Added in IFC4. - - - IfcSensor/CONTACTSENSOR - - IfcSensor/CONTACTSENSOR - - - SetPointContact - The contact value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value. - - - - - - - Set Point Contact - 接触状態設定値 - 접촉 상태 설정 - - - - 感知される接触状態。 -セットポイント値を置くために、IfcPropertyBoundedValue.SetPointValueを使用する。 - 감지되는 접촉 상태. 세트 포인트 값을 넣으려면, IfcPropertyBoundedValue.SetPointValue를 사용하십시오. - - - - - - 接触を感知または検出するデバイス - - - - - Pset_SensorTypeFireSensor - A device that senses or detects the presence of fire. - - - IfcSensor/FIRESENSOR - - IfcSensor/FIRESENSOR - - - FireSensorSetPoint - The temperature value to be sensed to indicate the presence of fire. - - - - - - - Fire Sensor Set Point - 感知温度 - 감지 온도 - - - - 炎の存在を示すために感知される温度値。 - 불꽃의 존재를 보여주기 위하여 감지되는 온도 값. - - - - AccuracyOfFireSensor - The accuracy of the sensor. - - - - - - - Accuracy Of Fire Sensor - 精度 - 정확도 - - - - センサの精度。 - 센서의 정밀도. - - - - TimeConstant - The time constant of the sensor. - - - - - - - Time Constant - 時定数 - 시정 - - - - センサの時定数。 - 센서의 시정. - - - - - - 炎の存在を感知または検出するデバイス - - - - - Pset_SensorTypeFlowSensor - A device that senses or detects flow. HISTORY: Added in IFC4. - - - IfcSensor/FLOWSENSOR - - IfcSensor/FLOWSENSOR - - - SetPointFlow - The volumetric flow value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value. - - - - - - - Set Point Flow - 流量設定値 - 유량 설정 - - - - 感知される流量。 -セットポイント値を置くために、IfcPropertyBoundedValue.SetPointValueを使用する。 - 감지되는 유량. 세트 포인트 값을 넣으려면, IfcPropertyBoundedValue.SetPointValue를 사용하십시오. - - - - - - 流れを感知または検出するデバイス。 - - - - - Pset_SensorTypeFrostSensor - A device that senses or detects the presense of frost. - - - IfcSensor/FROSTSENSOR - - IfcSensor/FROSTSENSOR - - - SetPointFrost - The detection of frost. - - - - - - - Set Point Frost - - - - - - - - - - - - - Pset_SensorTypeGasSensor - A device that senses or detects gas. HISTORY: Changed in IFC4. Gas detected made into enumeration, set point concentration and coverage area added. Range, accuracy and time constant deleted. - - - IfcSensor/GASSENSOR - - IfcSensor/GASSENSOR - - - GasDetected - Identification of the gas that is being detected, according to chemical formula. For example, carbon monoxide is 'CO', carbon dioxide is 'CO2', oxygen is 'O2'. - - - - - - - Gas Detected - 対象ガス - - - - 検出されているガスの識別。 - - - - SetPointConcentration - The gas concentration value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value. - - - - - - - Set Point Concentration - ガス濃度設定値 - - - - 感知されるガス濃度。 -セットポイント値を置くために、IfcPropertyBoundedValue.SetPointValueを使用する。 - - - - CoverageArea - The floor area that is covered by the sensor (typically measured as a circle whose center is at the location of the sensor). - - - - - - - Coverage Area - 測定範囲 - - - - センサでカバーされている床面積。(通常、センターがセンサの位置にある円として測定される) - - - - - - ガスを感知または検出するデバイス。 - - - - - Pset_SensorTypeHeatSensor - A device that senses or detects heat. HISTORY: In IFC4, incorporates Fire Sensor. HeatSensorSetPoint changed to SetPointTemperature - - - IfcSensor/HEATSENSOR - - IfcSensor/HEATSENSOR - - - CoverageArea - The area that is covered by the sensor (typically measured as a circle whose center is at the location of the sensor). - - - - - - - Coverage Area - 測定範囲 - 측정 범위 - - - - センサでカバーされている範囲。(通常、センターがセンサの位置にある円として測定される) - 센서 커버하는 범위. (일반적으로 센터 센서의 위치에있는 원형으로 측정되는) - - - - SetPointTemperature - The temperature value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value. - - - - - - - Set Point Temperature - 温度設定値 - 온도 설정 - - - - 感知される温度。 -セットポイント値を置くために、IfcPropertyBoundedValue.SetPointValueを使用する。 - 감지되는 온도. 세트 포인트 값을 넣으려면, IfcPropertyBoundedValue.SetPointValue를 사용하십시오. - - - - RateOfTemperatureRise - The rate of temperature rise that is to be sensed as being hazardous. - - - - - - - Rate Of Temperature Rise - 温度上昇率 - 온도 상승률 - - - - 危険であるとして感じられることになっている温度上昇率。 - 위험 것으로 느껴지게하는 온도 상승률. - - - - - - 熱を感知または検出するデバイス。 - - - - - Pset_SensorTypeHumiditySensor - A device that senses or detects humidity. HISTORY: HumiditySensorSetPoint changed to SetPointHumidity. Range, accuracy and time constant deleted. - - - IfcSensor/HUMIDITYSENSOR - - IfcSensor/HUMIDITYSENSOR - - - SetPointHumidity - The humidity value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value. - - - - - - - Set Point Humidity - 湿度設定値 - 습도 설정 - - - - 感知される湿度。 -セットポイント値を置くために、IfcPropertyBoundedValue.SetPointValueを使用する。 - 감지되는 습도. 세트 포인트 값을 넣으려면, IfcPropertyBoundedValue.SetPointValue를 사용하십시오. - - - - - - 湿度を感知または検出するデバイス。 - - - - - Pset_SensorTypeIdentifierSensor - A device that senses identification tags. - - - IfcSensor/IDENTIFIERSENSOR - - IfcSensor/IDENTIFIERSENSOR - - - SetPointIdentifier - The detected tag value. - - - - - - - Set Point Identifier - - - - - - - - - - - - - Pset_SensorTypeIonConcentrationSensor - A device that senses or detects ion concentration such as water hardness. HISTORY: Added in IFC4. - - - IfcSensor/IONCONCENTRATIONSENSOR - - IfcSensor/IONCONCENTRATIONSENSOR - - - SubstanceDetected - Identification of the substance that is being detected according to chemical formula. For example, calcium carbonate is 'CaCO3' - - - - - - - Substance Detected - 対象物質 - 대상 물질 - - - - 検出されている物質の識別。 - 검출되는 물질의 식별. - - - - SetPointConcentration - The ion concentration value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value. - - - - - - - Set Point Concentration - イオン濃度設定値 - 이온 농도 설정 - - - - 感知されるイオン濃度。 -セットポイント値を置くために、IfcPropertyBoundedValue.SetPointValueを使用する。 - 감지되는 이온 농도. 세트 포인트 값을 넣으려면, IfcPropertyBoundedValue.SetPointValue를 사용하십시오. - - - - - - 水の硬度などのイオン濃度を感知または検出する装置 - - - - - Pset_SensorTypeLevelSensor - A device that senses or detects fill level. HISTORY: Added in IFC4. - - - IfcSensor/LEVEL - - IfcSensor/LEVEL - - - SetPointLevel - The fill level value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value. - - - - - - - Set Point Level - レベル設定値 - 레벨 설정 - - - - 感知されるレベル。 -セットポイント値を置くために、IfcPropertyBoundedValue.SetPointValueを使用する。 - 감지되는 수준. 세트 포인트 값을 넣으려면, IfcPropertyBoundedValue.SetPointValue를 사용하십시오. - - - - - - レベルを感知または検出するデバイス。 - - - - - Pset_SensorTypeLightSensor - A device that senses or detects light. HISTORY: LightSensorSensorSetPoint changed to SetPointIlluminance. Range, accuracy and time constant deleted. - - - IfcSensor/LIGHTSENSOR - - IfcSensor/LIGHTSENSOR - - - SetPointIlluminance - The illuminance value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value. - - - - - - - Set Point Illuminance - 照度設定値 - 조도 설정 - - - - 感知される照度。 -セットポイント値を置くために、IfcPropertyBoundedValue.SetPointValueを使用する。 - 감지하는 조도. 세트 포인트 값을 넣으려면, IfcPropertyBoundedValue.SetPointValue를 사용하십시오. - - - - - - 光を感知または検出するデバイス。 - - - - - Pset_SensorTypeMoistureSensor - A device that senses or detects moisture. HISTORY: Added in IFC4. - - - IfcSensor/MOISTURESENSOR - - IfcSensor/MOISTURESENSOR - - - SetPointMoisture - The moisture value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value. - - - - - - - Set Point Moisture - 水分設定値 - 수분 설정 - - - - 感知される水分。 -セットポイント値を置くために、IfcPropertyBoundedValue.SetPointValueを使用する。 - 감지되는 수분. 세트 포인트 값을 넣으려면, IfcPropertyBoundedValue.SetPointValue를 사용하십시오. - - - - - - 水分を感知または検出するデバイス。 - - - - - Pset_SensorTypeMovementSensor - A device that senses or detects movement. HISTORY: In IFC4, time constant deleted. - - - IfcSensor/MOVEMENTSENSOR - - IfcSensor/MOVEMENTSENSOR - - - MovementSensingType - Enumeration that identifies the type of movement sensing mechanism. - - - - PHOTOELECTRICCELL - PRESSUREPAD - OTHER - NOTKNOWN - UNSET - - - - PHOTOELECTRICCELL - - Photo Electric Cell - - - - - - - PRESSUREPAD - - Pressure Pad - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Movement Sensing Type - - - - - - - SetPointMovement - The movement to be sensed. - - - - - - - Set Point Movement - - - - - - - - - - - - - Pset_SensorTypePHSensor - A device that senses or detects acidity. HISTORY: Added in IFC4. - - - IfcSensor/PHSENSOR - - IfcSensor/PHSENSOR - - - SetPointPH - The fill level value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value. - - - - - - - Set Point PH - 酸性度設定値 - 산성도 설정 - - - - 感知される酸性度。 -セットポイント値を置くために、IfcPropertyBoundedValue.SetPointValueを使用する。 - 감지되는 산도. 세트 포인트 값을 넣으려면, IfcPropertyBoundedValue.SetPointValue를 사용하십시오. - - - - - - 酸性度を感知または検出するデバイス。 - - - - - Pset_SensorTypePressureSensor - A device that senses or detects pressure. HISTORY: PressureSensorSensorSetPoint changed to SetPointPressure. Range, accuracy and time constant deleted. - - - IfcSensor/PRESSURESENSOR - - IfcSensor/PRESSURESENSOR - - - SetPointPressure - The pressure value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value. - - - - - - - Set Point Pressure - 圧力設定値 - 압력 설정 - - - - 感知される圧力。 -セットポイント値を置くために、IfcPropertyBoundedValue.SetPointValueを使用する。 - 감지되는 압력. 세트 포인트 값을 넣으려면, IfcPropertyBoundedValue.SetPointValue를 사용하십시오. - - - - IsSwitch - Identifies if the sensor also functions as a switch at the set point (=TRUE) or not (= FALSE). - - - - - - - Is Switch - スイッチ機能の有無 - 스위치 기능의 유무 - - - - センサーが設定値でスイッチとして機能する(TRUE)か、否か(FALSE)を識別する。 - 센서 설정에서 스위치 역할 (TRUE) 또는 여부 (FALSE)를 확인한다. - - - - - - 圧力を感知または検出するデバイス。 - - - - - Pset_SensorTypeRadiationSensor - A device that senses or detects radiation. HISTORY: Added in IFC4. - - - IfcSensor/RADIATIONSENSOR - - IfcSensor/RADIATIONSENSOR - - - SetPointRadiation - The radiation power value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value. - - - - - - - Set Point Radiation - 放射線設定値 - 방사선 설정 - - - - 感知される放射線量。 -セットポイント値を置くために、IfcPropertyBoundedValue.SetPointValueを使用する。 - 감지되는 방사선. 세트 포인트 값을 넣으려면, IfcPropertyBoundedValue.SetPointValue를 사용하십시오. - - - - - - 放射線を感知または検出するデバイス。 - - - - - Pset_SensorTypeRadioactivitySensor - A device that senses or detects atomic decay. HISTORY: Added in IFC4. - - - IfcSensor/RADIOACTIVITYSENSOR - - IfcSensor/RADIOACTIVITYSENSOR - - - SetPointRadioactivity - The radioactivity value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value. - - - - - - - Set Point Radioactivity - 放射能設定値 - 방사능 설정 - - - - 感知される放射能。 -セットポイント値を置くために、IfcPropertyBoundedValue.SetPointValueを使用する。 - 감지되는 방사능. 세트 포인트 값을 넣으려면, IfcPropertyBoundedValue.SetPointValue를 사용하십시오. - - - - - - 原子核の崩壊を感知または検出するデバイス。 - - - - - Pset_SensorTypeSmokeSensor - A device that senses or detects smoke. HISTORY: PressureSensorSensorSetPoint (error in previous release) changed to SetPointConcentration. Range, accuracy and time constant deleted. - - - IfcSensor/SMOKESENSOR - - IfcSensor/SMOKESENSOR - - - CoverageArea - The floor area that is covered by the sensor (typically measured as a circle whose center is at the location of the sensor). - - - - - - - Coverage Area - 測定範囲 - 측정 범위 - - - - センサでカバーされている床面積。(通常、センターがセンサの位置にある円として測定される) - 센서 커버되는 바닥 면적. (일반적으로 센터 센서의 위치에있는 원형으로 측정되는) - - - - SetPointConcentration - The smoke concentration value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value. - - - - - - - Set Point Concentration - 煙濃度設定値 - 연기 농도 설정 - - - - 感知される煙濃度。 -セットポイント値を置くために、IfcPropertyBoundedValue.SetPointValueを使用する。 - 감지되는 연기 농도. 세트 포인트 값을 넣으려면, IfcPropertyBoundedValue.SetPointValue를 사용하십시오. - - - - HasBuiltInAlarm - Indicates whether the smoke sensor is included as an element within a smoke alarm/sensor unit (TRUE) or not (FALSE). - - - - - - - Has Built In Alarm - 煙警報器に含まれているか - 연기 경보기에 포함여부 - - - - 煙センサーが煙警報センサユニットの中に要素として含まれているか(TRUE)、否か(FALSE)を識別する。 - 연기 센서가 화재 경보 센서 유닛의 요소로 포함되어 있는지 (TRUE) 여부 (FALSE)를 확인한다. - - - - - - 煙を感知または検出するデバイス。 - - - - - Pset_SensorTypeSoundSensor - A device that senses or detects sound. HISTORY: SoundSensorSensorSetPoint changed to SetPointSound. Range, accuracy and time constant deleted. - - - IfcSensor/SOUNDSENSOR - - IfcSensor/SOUNDSENSOR - - - SetPointSound - The sound pressure value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value. - - - - - - - Set Point Sound - 音圧設定値 - 읍압 설정치 - - - - 感知される音圧。 -セットポイント値を置くために、IfcPropertyBoundedValue.SetPointValueを使用する。 - 감지되는 음압. 세트 포인트 값을 넣으려면, IfcPropertyBoundedValue.SetPointValue를 사용하십시오. - - - - - - 音を感知または検出するデバイス。 - - - - - Pset_SensorTypeTemperatureSensor - A device that senses or detects temperature. HISTORY: TemperatureSensorSensorSetPoint changed to SetPointTemperature. Range, accuracy and time constant deleted. - - - IfcSensor/TEMPERATURESENSOR - - IfcSensor/TEMPERATURESENSOR - - - TemperatureSensorType - Enumeration that Identifies the types of temperature sensor that can be specified. - - - - HIGHLIMIT - LOWLIMIT - OUTSIDETEMPERATURE - OPERATINGTEMPERATURE - ROOMTEMPERATURE - OTHER - NOTKNOWN - UNSET - - - - HIGHLIMIT - - Highlimit - - - - - - - LOWLIMIT - - Lowlimit - - - - - - - OUTSIDETEMPERATURE - - Outside Temperature - - - - - - - OPERATINGTEMPERATURE - - Operating Temperature - - - - - - - ROOMTEMPERATURE - - Room Temperature - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Temperature Sensor Type - 温度センサータイプ - 온도 센서 타입 - - - - 明示された温度センサーのタイプを識別する一覧。 - 명시된 온도 센서 유형을 식별하는 목록. - - - - SetPointTemperature - The temperature value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value. - - - - - - - Set Point Temperature - 温度設定値 - 온도 성정 - - - - 感知される温度。 -セットポイント値を置くために、IfcPropertyBoundedValue.SetPointValueを使用する。 - 감지되는 온도. 세트 포인트 값을 넣으려면, IfcPropertyBoundedValue.SetPointValue를 사용하십시오. - - - - - - 温度を感知または検出するデバイス。 - - - - - Pset_SensorTypeWindSensor - A device that senses or detects wind speed and direction. HISTORY: Added in IFC4. - - - IfcSensor/WINDSENSOR - - IfcSensor/WINDSENSOR - - - WindSensorType - Enumeration that Identifies the types of wind sensors that can be specified. - - - - CUP - WINDMILL - HOTWIRE - LASERDOPPLER - SONIC - PLATE - TUBE - OTHER - NOTKNOWN - UNSET - - - - CUP - - Cup - - - - - - - WINDMILL - - Windmill - - - - - - - HOTWIRE - - Hotwire - - - - - - - LASERDOPPLER - - Laser Doppler - - - - - - - SONIC - - Sonic - - - - - - - PLATE - - Plate - - - - - - - TUBE - - Tube - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Wind Sensor Type - 風センサータイプ - 바람 센서 타입 - - - - 明示された風センサーのタイプを識別する一覧。 - 명시된 바람 센서 유형을 식별하는 목록. - - - - SetPointSpeed - The wind speed value to be sensed. Use IfcPropertyBoundedValue.SetPointValue to set the set point value. - - - - - - - Set Point Speed - 風速設定値 - 풍속 설정 - - - - 感知される風速。 -セットポイント値を置くために、IfcPropertyBoundedValue.SetPointValueを使用する。 - 감지되는 바람. 세트 포인트 값을 넣으려면, IfcPropertyBoundedValue.SetPointValue를 사용하십시오. - - - - - - 風速を感知または検出するデバイス。 - - - - - Pset_ServiceLife - Captures the period of time that an artifact will last. HISTORY: Introduced in IFC2X4 as replacement for IfcServiceLife. - - - IfcElement - - IfcElement - - - ServiceLifeDuration - The length or duration of a service life. - -The lower bound indicates pessimistic service life, the upper bound indicates optimistic service life, and the setpoint indicates the typical service life. - - - - - - - Service Life Duration - - - - - - - MeanTimeBetweenFailure - The average time duration between instances of failure of a product. - - - - - - - Mean Time Between Failure - - - - - - - - - - - - - Pset_ServiceLifeFactors - Captures various factors that impact the expected service life of elements within the system or zone. - - - IfcSystem - - IfcSystem - - - QualityOfComponents - Adjustment of the service life resulting from the effect of the quality of components used. - - - - - - - Quality Of Components - - - - - - - DesignLevel - Adjustment of the service life resulting from the effect of design level employed. - - - - - - - Design Level - - - - - - - WorkExecutionLevel - Adjustment of the service life resulting from the effect of the quality of work executed. - - - - - - - Work Execution Level - - - - - - - IndoorEnvironment - Adjustment of the service life resulting from the effect of the indoor environment (where appropriate). - - - - - - - Indoor Environment - - - - - - - OutdoorEnvironment - Adjustment of the service life resulting from the effect of the outdoor environment (where appropriate) - - - - - - - Outdoor Environment - - - - - - - InUseConditions - Adjustment of the service life resulting from the effect of the conditions in which components are operating. - - - - - - - In Use Conditions - - - - - - - MaintenanceLevel - Adjustment of the service life resulting from the effect of the level or degree of maintenance applied to dcomponents. - - - - - - - Maintenance Level - - - - - - - - - - - - - Pset_ShadingDeviceCommon - Shading device properties associated with an element that represents a shading device - - - IfcShadingDevice - - IfcShadingDevice - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Bemusterungstyp - Reference - Référence - 参照記号 - - - Bemusterungstyp, wird als Attribute angegeben, wenn keine allgemein anerkanntes Klassifizierungssystem angewandt wird. - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1"). A fournir s'il n'y a pas de référence à une classification en usage. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Status - Statut - 状態 - - - Status bzw. Phase des Bauteils insbesondere beim Bauen im Bestand. "Neu" (new) neues Bauteil als Ergänzung, "Bestand" (existing) bestehendes Bauteil, dass erhalten bleibt, "Abbruch" (demolish) Bauteil, das abgebrochen wird, "Temporär" (temporary) Bauteil und andere Bauelemente, die vorübergehend eingebaut werden (wie Abstützungen, etc.) - - Statut de l'élément, principalement utilisé dans les projets de rénovation et de réhabilitation. Le statut a pour valeur NOUVEAU pour un nouvel élément, EXISTANT pour un élément existant qui est conservé, DEMOLI pour un élément existant à démolir et TEMPORAIRE pour un élément temporaire (comme une structure support provisoire). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - ShadingDeviceType - Specifies the type of shading device. - - - - FIXED - MOVABLE - OVERHANG - SIDEFIN - USERDEFINED - NOTDEFINED - - - - FIXED - - Fixed - - - - - - - MOVABLE - - Movable - - - - - - - OVERHANG - - Overhang - - - - - - - SIDEFIN - - Sidefin - - - - - - - OTHER - - - - - NOTKNOWN - - - - - UNSET - - - - - - - - Sonnenschutztyp - Shading Device Type - Type de protection solaire - 日除け装置種別 - - - - - Spécifies le type de protection solaire. - 日除け装置の種別を設定する。 - - - - MechanicalOperated - Indication whether the element is operated machanically (TRUE) or not, i.e. manually (FALSE). - - - - - - - Mechanisch - Mechanical Operated - Actionné mécaniquement - 機械的操作 - - - Angabe, ob dieses Bauteil mechanisch bewegt oder angetrieben wird (JA) oder manuell (NEIN). Diese Eigenschaft wird nur für beweglichen Sonnenschutz angegeben. - - Indique si l'élément est actionné mécaniquement (VRAI) ou manuellement (FAUX). - 機械的操作が可能かどうかを示すブーリアン値。可能な場合TRUE、手動の場合FALSE。 - - - - SolarTransmittance - (Tsol): The ratio of incident solar radiation that directly passes through a shading system (also named τe). Note the following equation Asol + Rsol + Tsol = 1 - - - - - - - Strahlungstransmissionsgrad - Solar Transmittance - Transmission du rayonnement solaire - 日射透過率 - - - - - (Tsol). Ratio du rayonnement solaire incident qui est transmis directement par la protection solaire. Noter l'équation suivante : Asol + Rsol + Tsol = 1. - (Tsol):日除けシステムを直接透過する日射の率。注: Asol + Rsol + Tsol = 1 という方程式が成り立つ。 - - - - SolarReflectance - (Rsol): The ratio of incident solar radiation that is reflected by a shading system (also named ρe). Note the following equation Asol + Rsol + Tsol = 1 - - - - - - - Strahlungsreflectionsgrad - Solar Reflectance - Reflexion du rayonnement solaire - 日射反射率 - - - - - (Rsol). Ratio du rayonnement solaire incident qui est réfléchi par la protection solaire. Noter l'équation suivante : Asol + Rsol + Tsol = 1. - (Rsol):日除けシステムにより反射される日射の率。注: Asol + Rsol + Tsol = 1 という方程式が成り立つ。 - - - - VisibleLightTransmittance - Fraction of the visible light that passes the shading system at normal incidence. It is a value without unit. - - - - - - - Transmissionsgrad für sichtbares Licht - Visible Light Transmittance - Transmittance du rayonnement visible - 可視光透過率 - - - - - Fraction du rayonnement visible qui est transmise par la protection solaire sous incidence normale. Valeur sans unité. - 通常の入射における日除け装置を通過する可視光の比率。単位の無い数値。 - - - - VisibleLightReflectance - Fraction of the visible light that is reflected by the glazing at normal incidence. It is a value without unit. - - - - - - - Reflektionsgrad für sichtbares Licht - Visible Light Reflectance - Reflexion du rayonnement visible - 可視光反射率 - - - - - Fraction du rayonnement visible qui est réfléchi par la protection solaire sous incidence normale. Valeur sans unité. - 通常の入射における日除け装置により反射される可視光の比率。単位の無い数値。 - - - - ThermalTransmittance - Thermal transmittance coefficient (U-Value) of a material of a certain thickness for this element. - - - - - - - U-Wert - Thermal Transmittance - Transmission thermique surfacique - 熱貫流率 - - - Wärmedurchgangskoeffizient (U-Wert) der Materialschichten. -Hier der Gesamtwärmedurchgangskoeffizient der Tür. - - Coefficient de transmission thermique surfacique (U) d'un métériau d'une certaine épaisseur pour cet élément - 熱貫流率U値。 -ここでは(すべての材料を含む)梁を通した熱移動の方向における全体の熱還流率を示す。 -注:IFC2x4の新しいプロパティ - - - - IsExternal - Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building. - - - - - - - Außenbauteil - Is External - Est extérieur - 外部区分 - - - Angabe, ob dieses Bauteil ein Aussenbauteil ist (JA) oder ein Innenbauteil (NEIN). Als Aussenbauteil grenzt es an den Aussenraum (oder Erdreich, oder Wasser). - - Indique si l'élément est conçu pour être utilisé à l'extérieur (VRAI) ou non (FAUX). Si VRAI, c'est un élément extérieur qui donne sur l'extérieur du bâtiment. - 外部の部材かどうかを示すブーリアン値。もしTRUEの場合、外部の部材で建物の外側に面している。 - - - - Roughness - A measure of the vertical deviations of the surface. - - - - - - - Rauheit der Oberfläche - Roughness - Rugosité - 表面粗さ - - - - - Une mesure des déviations verticales de la surface. - 表面の垂直方向の偏差。 - - - - SurfaceColor - The color of the surface. - - - - - - - Oberflächenfarbe - Surface Color - Couleur surface - 表面色 - - - - - La couleur de la surface - 表面の色を示す文字列情報。 - - - - - - 日除け装置(IfcShadingDeviceオブジェクト)に関する共通プロパティセット定義。 - - - - - Pset_ShadingDevicePHistory - Shading device performance history attributes. - - - IfcShadingDevice - - IfcShadingDevice - - - TiltAngle - The angle of tilt defined in the plane perpendicular to the extrusion axis (X-Axis of the local placement). The angle shall be measured from the orientation of the Z-Axis in the local placement. - - - - - Tilt Angle - - - - - - - Azimuth - The azimuth of the outward normal for the outward or upward facing surface. - - - - - Azimuth - - - - - - - - - - - - - Pset_SiteCommon - Properties common to the definition of all occurrences of IfcSite. Please note that several site attributes are handled directly at the IfcSite instance, the site number (or short name) by IfcSite.Name, the site name (or long name) by IfcSite.LongName, and the description (or comments) by IfcSite.Description. The land title number is also given as an explicit attribute IfcSite.LandTitleNumber. Actual site quantities, like site perimeter, site area and site volume are provided by IfcElementQuantity, and site classification according to national building code by IfcClassificationReference. The global positioning of the site in terms of Northing and Easting and height above sea level datum is given by IfcSite.RefLongitude, IfcSite.RefLatitude, IfcSite.RefElevation and the postal address by IfcSite.SiteAddress. - - - IfcSite - - IfcSite - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). Used to store the non-classification driven internal project type. - - - - - - - Referenz ID - Reference - Reference - 参照記号 - 참조 ID - - - Identifikator der projektinternen Referenz für dieses Grundstück, z.B. nach der Grundstückklassifizierung des Bauherrn. Wird verwendet, wenn keine allgemein anerkanntes Klassifizierungssystem angewandt wird. - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1"). Utilisé pour enregistrer un type sans recourir à une classification. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 이 프로젝트의 참조 ID (예 : A-1). 분류 코드가 아닌 내부에서 사용되는 프로젝트 형식으로 사용됩니다. - - - - BuildableArea - The area of site utilization expressed as a maximum value according to local building codes. - - - - - - - bebaubare Fläche - Buildable Area - ValeurSurfaceConstructible - 建築可能面積 - 건축 가능 면적 - - - bebaubare Fläche als maximale überbaubare Fläche des Grundstücks. - - Surface constructible maximale en fonction des contraintes d'urbanisme. - 建築基準により建築可能な最大の面積。 - 속성정의 - - - - SiteCoverageRatio - The ratio of the utilization, TotalArea / BuildableArea, expressed as a maximum value. The ratio value may be used to derive BuildableArea. - - - - - - - Grundflächenzahl - Site Coverage Ratio - RatioSurfaceConstructible - 建蔽率 - 건폐율 - - - Grundflächenzahl als Verhältnis der bebaubaren Fläche zur Bruttogrundstücksfläche. - - Valeur maximale de la surface constructible exprimée en ratio. La valeur du ratio peut être utilisée pour déterminer la surface constructible. - 建築基準により最大となる、敷地面積(IfcElementQuantity)と建築面積(IfcBuildingのIfcElementQuantity)の比率。 - TotalArea / BuildableArea로 표시되는 이용 가능한 비율의 최대값입니다. - - - - FloorAreaRatio - The ratio of all floor areas to the buildable area as the maximum floor area utilization of the site as a maximum value according to local building codes. - - - - - - - Geschossflächenzahl - Floor Area Ratio - ratio de surface de planchers - 容積率 - - - Geschossflächenzahl als Verhältnis der gesamten Geschossfläche aller Vollgeschosse der baulichen Anlagen auf einem Baugrundstück zu der Fläche des Baugrundstücks. - - Ratio de la surface totale de planchers à la surface constructible, indication de la valeur maximale de la surface de planchers selon la règlementation locale (coefficient d'occupation des sols, N.d.T.) - 建築基準により最大となる床面積と敷地面積(IfcElementQuantities)の比率。 - - - - BuildingHeightLimit - Allowed maximum height of buildings on this site - according to local building codes. - - - - - - - maximale Bebauungshöhe - Building Height Limit - HauteurMaximale - 建物高さ制限 - 건물 높이 제한 - - - Maximale Bebauungshöhe die auf diesem Grundstück zulässig ist. - - Hauteur maximale des bâtiments autorisée sur ce site. - 各地域の建築基準により許可される建物の高さの最大値。 - TotalArea / BuildableArea로 표시되는 이용 가능한 비율의 최대값입니다. - - - - TotalArea - Total planned area for the site. Used for programming the site space. - - - - - - - Bruttogrundstücksfläche - Total Area - SurfaceBruteProgrammee - 延べ面積 - 연면적 - - - Gesamte Grundstücksfläche für diese Bauaufgabe. - - Surface totale brute. Définie en phase de programmation. - 敷地にたいする延べ計画面積。敷地空間の計画に使用。 - 부지에 대한 총 계획 면적. 호텔 공간 계획에 사용됩니다. - - - - - Property Set Definition in German - - Définition de l'IAI : propriétés communes à la définition de toutes les instances de IfcSite. Veuillez noter que plusieurs attributs sont portés par l'instance IfcSite : le numéro du site ou nom court (IfcSite.Name), le nom ou nom long (IfcSite.LongName), et la description ou des commentaires (IfcSite.Description). Le numéro de référence du foncier est donné par l'attribut IfcSite.LandTitleNumber. Les quantités du site comme le périmètre et la superficie sont fournis par des instances de IfcElementQuantity et la référence à une classification nationale par IfcClassificationReference. La position du site en termes de longitude, latitude et altitude est donnée par IfcSite.RefLongitude, IfcSite.RefLatitude, IfcSite.RefElevation et l'adresse postale par IfcSite.SiteAddress. - IfcSiteに関する共通プロパティセット定義。以下の属性値に関しては、IfcSiteオブジェクトの属性に設定する。敷地番号はIfcSite.Name、敷地名称はIfcSite.LongName、敷地に関する記述はIfcSite.Description。敷地に関する周囲長、面積、体積などの数量値は、IfcElementQuantityによって設定する。地理情報に関する緯度・経度・標高値はIfcSite.RefLongitude, IfcSite.RefLatitude, IfcSite.RefElevationによって設定し、郵便住所はIfcSite.SiteAddressによって設定する。 - - - - - Pset_SlabCommon - Properties common to the definition of all occurrences of IfcSlab. Note: Properties for PitchAngle added in IFC 2x3 - - - IfcSlab - - IfcSlab - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as "construction type". It should be provided as an alternative to the name of the "object type", if the software does not support object types. - - - - - - - Bauteiltyp - Reference - Reference - 参照記号 - 参考号 - - - Bezeichnung zur Zusammenfassung gleichartiger Bauteile zu einem Bauteiltyp (auch Konstruktionstyp genannt). Alternativ zum Namen des "Typobjekts", insbesondere wenn die Software keine Typen unterstützt. - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1") pour désigner un "type de construction". Une alternative au nom d'un objet type lorsque les objets types ne sont pas gérés par le logiciel. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 若未采用已知的分类系统,则该属性为该项目中该类型构件的参考编号(例如,类型A-1)。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Status - Statut - 状態 - - - Status bzw. Phase des Bauteils insbesondere beim Bauen im Bestand. "Neu" (new) neues Bauteil als Ergänzung, "Bestand" (existing) bestehendes Bauteil, dass erhalten bleibt, "Abbruch" (demolish) Bauteil, das abgebrochen wird, "Temporär" (temporary) Bauteil und andere Bauelemente, die vorübergehend eingebaut werden (wie Abstützungen, etc.) - - Statut de l'élément, principalement utilisé dans les projets de rénovation et de réhabilitation. Le statut a pour valeur NOUVEAU pour un nouvel élément, EXISTANT pour un élément existant qui est conservé, DEMOLI pour un élément existant à démolir et TEMPORAIRE pour un élément temporaire (comme une structure support provisoire). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - AcousticRating - Acoustic rating for this object. -It is provided according to the national building code. It indicates the sound transmission resistance of this object by an index ratio (instead of providing full sound absorbtion values). - - - - - - - Schallschutzklasse - Acoustic Rating - IsolationAcoustique - 遮音等級 - 隔音等级 - - - Schallschutzklasse gemäß der nationalen oder regionalen Schallschutzverordnung. - - Classement acoustique de cet objet. Donné selon le Code National du Bâtiment. Il indique la résistance à la transmission du son de cet objet par une valeur de référence (au lieu de fournir les valeurs totales d'absorption du son). - 遮音等級情報。関連する建築基準法を参照。 - 该构件的隔音等级。 -该属性的依据为国家建筑规范。为表示该构件隔音效果的比率(而不是完全吸收声音的值)。 - - - - FireRating - Fire rating for this object. It is given according to the national fire safety classification. - - - - - - - Feuerwiderstandsklasse - Fire Rating - ResistanceAuFeu - 耐火等級 - 防火等级 - - - Feuerwiderstandasklasse gemäß der nationalen oder regionalen Brandschutzverordnung. - - Classement au feu de l'élément donné selon la classification nationale de sécurité incendie. - 主要な耐火等級。関連する建築基準法、消防法などの国家基準を参照。 - 该构件的防火等级。 -该属性的依据为国家防火安全分级。 - - - - PitchAngle - Angle of the slab to the horizontal when used as a component for the roof (specified as 0 degrees or not asserted for cases where the slab is not used as a roof component). - -The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. For geometry editing applications, like CAD: this value should be write-only. - - - - - - - Dachflächenneigung - Pitch Angle - AngleInclinaison - 勾配角度 - - - Neigungswinkel der Decke gegenüber der Horizontalen wenn es sich um eine Dachfläche handelt. Angabe 0 Grad definiert eine horizontale Fläche. - -Dieser Parameter wird zusätzlich zur geometrischen Repräsentation bereitgestellt. Im Fall der Inkonsistenz zwischen dem Parameter und der Geometrie hat die geometrische Repräsention Priorität. Dieser Parameter ist für CAD Software write-only. - - Angle de la dalle avec l'horizontale quand elle est utilisée comme un élément de la couverture (valeur 0 ou non définie lorsque la dalle ne participe pas à la couverture). Cette propriété est donnée en complément de la représentation de la forme et des paramètres géométriques qui la déterminent. En cas d'incohérence entre ces paramètres géométriques et cette propriété, ce sont les paramètres géométriques qui priment. Les applications qui déterminent la géométrie comme les logiciels de CAO ne doivent pas autoriser la modification de cette propriété. - コンポーネントが屋根として使用される場合の、水平に対するスラブの角度(スラブが屋根として使用されない場合は、0度と指定されるか、定義されない)。 - -形状情報は形状の表現として追加され、幾何学的なパラメータが使用される。幾何学的なパラメータと追加された形状プロパティが矛盾する場合、幾何学的なパラメータが優先される。CADのような、幾何学操作アプリケーションにとって、この値は、書き込み専用であるべきだ。 - - - - Combustible - Indication whether the object is made from combustible material (TRUE) or not (FALSE). - - - - - - - Brennbares Material - Combustible - Combustible - 可燃性区分 - 是否可燃 - - - Angabe ob das Bauteil brennbares Material enthält (WAHR) oder nicht (FALSCH). - - Indique si l'objet est fait de matière combustible (VRAI) ou non (FAUX). - この部材が可燃性物質で作られているかどうかを示すブーリアン値。 - 表示该构件是否由可燃材料制成。 - - - - SurfaceSpreadOfFlame - Indication on how the flames spread around the surface, It is given according to the national building code that governs the fire behaviour for materials. - - - - - - - Brandverhalten - Surface Spread Of Flame - SurfacePropagationFlamme - 火炎伝播性 - - - Beschreibung des Brandverhaltens des Bauteils gemäß der nationalen oder regionalen Brandschutzverordnung. - - Indique comment les flammes se propagent sur une surface. Indication donnée selon le Code National du Bâtiment régissant le comportement au feu des matériaux. - 炎がどのように材料の表面を広がるかという指標。材料の炎に対する振る舞いについての国家建築規則に従って提供される。 - - - - Compartmentation - Indication whether the object is designed to serve as a fire compartmentation (TRUE) or not (FALSE). - - - - - - - Brandabschnittsdefinierendes Bauteil - Compartmentation - Compartimentage - 防火区画 - - - Angabe, ob dieses Bauteil einen Brandabschnitt begrenzt (WAHR), oder nicht (FALSCH). - - Indique si l'objet est conçu pour assurer un compartimentage contre l'incendie (VRAI) ou non (FAUX). - 部材が防火区画として用いられるかどうかを示すブーリアン値(TRUE or False)。 - - - - IsExternal - Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building. - - - - - - - Außenbauteil - Is External - EstExterieur - 外部区分 - 是否外部构件 - - - Angabe, ob dieses Bauteil ein Aussenbauteil ist (JA) oder ein Innenbauteil (NEIN). Als Aussenbauteil grenzt es an den Aussenraum (oder Erdreich, oder Wasser). - - Indique si l'élément est conçu pour être utilisé à l'extérieur (VRAI) ou non (FAUX). Si VRAI, c'est un élément extérieur qui donne sur l'extérieur du bâtiment. - 外部の部材かどうかを示すブーリアン値。もしTRUEの場合、外部の部材で建物の外側に面している。 - 表示该构件是否设计为外部构件。若是,则该构件为外部构件,朝向建筑物的外侧。 - - - - ThermalTransmittance - Thermal transmittance coefficient (U-Value) of a material. Here the total thermal transmittance coefficient through the slab (including all materials). - - - - - - - U-Wert - Thermal Transmittance - TransmissionThermique - 熱貫流率 - 导热系数 - - - Wärmedurchgangskoeffizient (U-Wert) der Materialschichten. -Hier der Gesamtwärmedurchgangskoeffizient der Decke (für alle Schichten). - - Coefficient de transmission thermique surfacique (U). C'est le coefficient global de transmission thermique à travers la dalle (tous matériaux inclus). - 熱貫流率U値。ここではスラブを通した熱移動の方向における全体の熱還流率を示す。 - 材料的导热系数(U值)。 -表示穿过该板的整体导热系数(包括所有材料)。 - - - - LoadBearing - Indicates whether the object is intended to carry loads (TRUE) or not (FALSE). - - - - - - - Tragendes Bauteil - Load Bearing - Porteur - 耐力部材 - 是否承重 - - - Angabe, ob dieses Bauteil tragend ist (JA) oder nichttragend (NEIN) - - Indique si l'objet est censé porter des charges (VRAI) ou non (FAUX). - 荷重に関係している部材かどうかを示すブーリアン値。 - 表示该对象是否需要承重。 - - - - - - Définition de l'IAI : propriétés communes à la définition de toutes les instances de la classe IfcSlab. Nota : la propriété AngleInclinaison a été introduite depuis la version 2x3. - IfcSlab(スラブ)オブジェクトに関する共通プロパティセット定義。 - 所有IfcSlab实例的定义中通用的属性。 -注:PitchAngle属性为IFC 2x3 新添。 - - - - - Pset_SolarDeviceTypeCommon - Common properties for solar device types. - - - IfcSolarDevice - - IfcSolarDevice - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照 - 참조 - - - - このプロジェクト (例. 'A-1' タイプなど)で指定された参照ID。認められた分類体系の分類参照が存在しない場合に適用される。 - 프로젝트 (예 : 'A-1'유형 등) 지정된 참조 ID. 인정 분류 체계의 분류 참조가없는 경우에 적용된다. - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - - - 太陽の装置タイプのための共通属性。 - - - - - Pset_SoundAttenuation - Common definition to capture sound pressure at a point on behalf of a device typically used within the context of building services and flow distribution systems. To indicate sound values from an instance of IfcDistributionFlowElement at a particular location, IfcAnnotation instance(s) should be assigned to the IfcDistributionFlowElement through the IfcRelAssignsToProduct relationship. The IfcAnnotation should specify ObjectType of 'Sound' and geometric representation of 'Annotation Point' consisting of a single IfcPoint subtype as described at IfcAnnotation. This property set is instantiated multiple times on an object for each frequency band. HISTORY: New property set in IFC Release 2x4. - - - IfcAnnotation/SOUND - - IfcAnnotation/SOUND - - - SoundScale - The reference sound scale. - -DBA: Decibels in an A-weighted scale -DBB: Decibels in an B-weighted scale -DBC: Decibels in an C-weighted scale -NC: Noise criteria -NR: Noise rating - - - - DBA - DBB - DBC - NC - NR - - - - DBA - - dB-A - - - Decibels in an A-weighted scale - - - - DBB - - dB-B - - - Decibels in an B-weighted scale - - - - DBC - - dB-C - - - Decibels in an C-weighted scale - - - - NC - - Nc - - - Noise criteria - - - - NR - - Nr - - - Noise rating - - - - - - - Sound Scale - 騒音の単位 - 소음단위 - - - - 騒音の単位: - -- DBA: dB(A) -- DBB: dB(B) -- DBC:dB(C) -- NC:騒音基準 -- NR:騒音評価 - 소음 단위. DBA : dB (A) DBB : dB (B) DBC : dB (C) NC : 소음 기준 NR : 소음 평가 - - - - SoundFrequency - List of nominal sound frequencies, correlated to the SoundPressure time series values (IfcTimeSeries.ListValues) - - - - - - - - - Sound Frequency - 音の周波数 - 소리의 주파수 - - - - 代表的な周波数リスト、時系列音圧値と関連する。(IfcTimeSeriesにリストされた値) - 대표적인 주파수 목록 시계열 소리 圧値과 관련된다. (IfcTimeSeries에 나열된 값) - - - - SoundPressure - A time series of sound pressure values measured in decibels at a reference pressure of 20 microPascals for the referenced octave band frequency. Each value in IfcTimeSeries.ListValues is correlated to the sound frequency at the same position within SoundFrequencies. - - - - - Sound Pressure - 音圧 - 음압 - - - - 時系列の音圧、単位はデシベル。オクターブバンドの音の強さ20mPaを基準する。IfcTimeSeriesにリストされた各値は同じ場所で、同じ周波数バントでの温の周波数と関連する。 - 시계열의 음압 단위는 dB. 옥타브 밴드 소리의 강도 20mPa을 기준한다. IfcTimeSeries에 나열된 각 값은 같은 장소에서 같은 주파수 번트에서 온도의 주파수와 관련. - - - - - - 建物管理・空気の搬送システムに関連する設備の音圧の性能指標。特定位置からあるIfcDistributionFlowElement設備の音性能値を表すために、IfcRelAssignsToProduct を通してIfcDistributionFlowElementに IfcAnnotation注釈属性値を付ける。 IfcAnnotation属性値は音の種別(ObjectType) と幾何的な代表位置注釈ポイントで構成され、注釈ポイントは IfcAnnotation注釈を入れたIfcPoint一点とする。このPsetは周波数バンド(帯域幅)1HZにおけるある音の強さの倍数で表示する。履歴:IFC2x4に新たに定義された。 - - - - - Pset_SoundGeneration - Common definition to capture the properties of sound typically used within the context of building services and flow distribution systems. This property set is instantiated multiple times on an object for each frequency band. HISTORY: New property set in IFC Release 2x4. - - - IfcDistributionFlowElement - - IfcDistributionFlowElement - - - SoundCurve - Table of sound frequencies and sound power measured in decibels at a reference power of 1 picowatt(10^(-12) watt) for the referenced octave band frequency. - - - - - - - - - - - - - Sound Curve - 音響(騒音?)曲線 - 음향곡성 - - - - オクターブバンド1pW(10^(-12)の音の強さを基準とする音の周波数とデシベル単位で計測した音のエネルギーの一覧表。 - 옥타브 밴드 1pW (10 ^ (-12) 소리의 강도를 기준으로하는 소리의 주파수와 데시벨 단위로 측정하는 소리 에너지의 목록. - - - - - - 建物管理・空気の搬送システムに関連する設備の騒音性能指標。周波数バンド(帯域幅)1HZにおけるある音の強さの倍数で表示する。履歴:IFC4に新たに定義された。 - - - - - Pset_SpaceCommon - Properties common to the definition of all occurrences of IfcSpace. Please note that several space attributes are handled directly at the IfcSpace instance, the space number (or short name) by IfcSpace.Name, the space name (or long name) by IfcSpace:LongName, and the description (or comments) by IfcSpace.Description. Actual space quantities, like space perimeter, space area and space volume are provided by IfcElementQuantity, and space classification according to national building code by IfcClassificationReference. The level above zero (relative to the building) for the slab row construction is provided by the IfcBuildingStorey.Elevation, the level above zero (relative to the building) for the floor finish is provided by the IfcSpace.ElevationWithFlooring. - - - IfcSpace - - IfcSpace - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). Used to store the non-classification driven internal project type. - - - - - - - Raumtyp - Reference - Reference - 参照記号 - 참조 ID - - - Bezeichnung zur Zusammenfassung gleichartiger Räume zu einem Raumtyp (auch Funktionstyp genannt). Alternativ zum Namen des "Typobjekts", insbesondere wenn die Software keine Raumtypen als Typobjekte unterstützt. - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1"). Utilisé pour enregistrer un type sans recourir à une classification. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 이 프로젝트의 참조 ID (예 : A-1). 분류 코드가 아닌 내부에서 사용되는 프로젝트 형식으로 사용됩니다. - - - - IsExternal - Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building. - - - - - - - IstAußenraum - Is External - Est extérieur - 外部区分 - - - Angabe, ob dieser Raum ein Aussenaum ist (JA) oder ein Innenraum (NEIN). - - Indique si l'élément est conçu pour être utilisé à l'extérieur (VRAI) ou non (FAUX). Si VRAI, c'est un élément extérieur qui donne sur l'extérieur du bâtiment. - 外部の部材かどうかを示すブーリアン値。もしTRUEの場合、外部の部材で建物の外側に面している。 - - - - GrossPlannedArea - Total planned gross area for the space. Used for programming the space. - - - - - - - Gross Planned Area - Surface programmée brute - 計画グロス面積 - 계획 그로스 면적 - - - - Surface programmée brute totale de la pièce. Telle que définie lors de la programmation. - 計画されたグロス面積。建物計画に際に使用。 - 객실의 총 계획 면적 글로스. 공간 계획시 사용된다. - - - - NetPlannedArea - Total planned net area for the space. Used for programming the space. - - - - - - - Net Planned Area - Surface programmée nette - 計画ネット面積 - 계획 인터넷 면적 - - - - Surface programmée nette totale de la pièce. Telle que définie lors de la programmation. - 計画されたネット面積。建物計画に際に使用。(通常は、柱型等を抜いた面積となる) - 객실의 총 계획 인터넷 공간이 있습니다. 공간 계획시 사용된다. - - - - PubliclyAccessible - Indication whether this space (in case of e.g., a toilet) is designed to serve as a publicly accessible space, e.g., for a public toilet (TRUE) or not (FALSE). - - - - - - - öffentlich zugänglich - Publicly Accessible - AccessibleAuPublic - 公共アクセス可能性 - 공공 액세스 가능성 - - - Angabe, ob dieser Raum (wie z.B. eine Toilette) öffentlich zugänglich sein soll (JA) oder nicht (NEIN). - - Indique si l'espace (par exemple des toilettes) est conçu pour être un espace accessible au public (TRUE) ou non (FALSE). - この部屋(空間)が公共アクセス空間かどうかを示すブーリアン値。例:公共トイレの場合TRUE。 - 이 방 (공간)이 공공 액세스 공간 여부를 나타내는 부울 값입니다. 예 : 공공 화장실의 경우 TRUE. - - - - HandicapAccessible - Indication whether this space (in case of e.g., a toilet) is designed to serve as an accessible space for handicapped people, e.g., for a public toilet (TRUE) or not (FALSE). This information is often used to declare the need for access for the disabled and for special design requirements of this space. - - - - - - - behindertengerecht zugänglich - Handicap Accessible - AccessibleHandicapes - ハンディキャップアクセス可能性 - 핸디캡 액세스 가능성 - - - Angabe, ob dieser Raum (wie z.B. eine Toilette) behindertengerecht zugänglich sein soll (JA) oder nicht (NEIN). - - Indique si l'élément est conçu pour être accessible aux handicapés (VRAI) ou non (FAUX). Cette information est souvent utilisée pour déclarer la nécessité d'un accès pour handicapés ou pour des contraintes spéciales de conception. - この部屋(空間)がハンディキャップ者向けの空間かどうかを示すブーリアン値。例:公共トイレの場合TRUE。この情報は、障害者向け利用の必要性や特別なデザインの必要性を示すために利用される。 - 이 방 (공간)이 핸디캡을위한 공간 여부를 나타내는 부울 값입니다. 예 : 공공 화장실의 경우 TRUE. 이 정보는 장애인을위한 이용의 필요성과 특별한 디자인의 필요성을 나타내기 위해 사용된다. - - - - - - Définition de l'IAI : propriétés communes à la définition de toutes les instances de la classe IfcSpace. Veuillez noter que plusieurs attributs sont portés par l'instance IfcSpace : le numéro de la pièce ou le nom court (IfcSpace.Name), le nom ou nom long (IfcSpace:LongName) et la description ou des commentaires (IfcSpace.Description). Les quantités comme le périmètre, la surface et le volume de la pièce sont fournis par des instances de IfcElementQuantity, et la référence à une classification nationale par IfcClassificationReference. L'élévation de la dalle relativement au niveau de référence du bâtiment est fourni par IfcBuildingStorey.Elevation. L'élévation du plancher relativement au niveau de référence du bâtiment est fourni par IfcSpace.ElevationWithFlooring. - IfcSpaceに関する共通プロパティセット定義。以下の属性値に関しては、IfcSpaceオブジェクトの属性に設定する。部屋番号はIfcSite.Name、部屋名称はIfcSite.LongName、部屋に関する記述はIfcSite.Description。部屋(空間)に関する周囲長、面積、体積などの数量値は、IfcElementQuantitiesによって設定する。部屋(空間)に関する分類コードはIfcClassificationReferenceによって設定する。スラブに対するレベルはIfcBuildingStorey.Elevationによって与えられる。床仕上げに対するレベルはIfcSpace.ElevationWithFlooringによって与えられる。 - - - - - Pset_SpaceCoveringRequirements - Properties common to the definition of covering requirements of IfcSpace. Those properties define the requirements coming from a space program in early project phases and can later be used to define the room book information, if such coverings are not modeled explicitly as covering elements. - - - IfcSpace - - IfcSpace - - - FloorCovering - Label to indicate the material or finish of the space flooring. The label is used for room book information and often displayed in room stamp. - -The material information is provided in absence of an IfcCovering (type=FLOORING) object with own shape representation and material assignment. In case of inconsistency the material assigned to IfcCovering elements takes precedence. - - - - - - - Bodenbelag - Floor Covering - RevetementSol - 床仕上げ - - - Angabe des Materials für den Bodenbelag. Diese Angabe wird im Raumbuch verwendet und oft im Raumstempel angezeigt. - -Die Materialangabe wird übernommen, wenn kein eigenes Bekleidungsobjekt (IfcCovering mit PredefinedType = FLOORING) für den Bodenbelag dem Raum zugeordnet ist. Bei Inkonsistenzen (wenn beides gegeben ist), hat die Materialangabe des zugeordneten Bekleidungsobjekts Priorität. - - Indication sur la nature du revêtement de sol […]. L'information sur le matériau est fournie en l'absence d'un objet de la classe IfcCovering (Type=FLOORING) avec sa propre représentation de forme et une assignation à un matériau. En cas d'incohérence, c'est le matériau assigné à l'instance de IfcCovering qui prime. - 部屋の床材質または仕上げに関するラベル(識別情報)。このラベル名は部屋リスト情報や部屋情報表示の際に利用される。 - - - - FloorCoveringThickness - Thickness of the material layer(s) for the space flooring. - -The thickness information is provided in absence of an IfcCovering (type=FLOORING) object with own shape representation. In cases of inconsistency between the geometric parameters of an assigned IfcCovering and this attached property, the geometric parameters take precedence. - - - - - - - Dicke des Bodenbelags - Floor Covering Thickness - Epaisseur du revêtement de sol - 床仕上げ材厚 - - - Angabe der Dicke der Materialschichten für den Bodenbelag. - -Der Dickenparameter wird übernommen, wenn kein eigenes Bekleidungsobjekt (IfcCovering mit PredefinedType = FLOORING) für den Bodenbelag dem Raum zugeordnet ist. Bei Inkonsistenzen (wenn beides gegeben ist), hat die Materialdicke des zugeordneten Bekleidungsobjekts Priorität. - - Epaisseur de la couche de matériau constituant le revêtement de sol. Cette information sur le matériau est fournie en l'absence d'un objet de la classe IfcCovering (Type=FLOORING) avec sa propre représentation de forme. En cas d'incohérence entre les paramètres géométriques de l'instance de IfcCovering et cette propriété, ce sont les paramètres géométriques qui priment. - 部屋の床に関する材質層の厚さ。 - -形状表現を持つIfcCovering(type=FLOORING)オブジェクトが存在しない場合に与えられる厚さ情報。IfcCoveringの幾何形状パラメータとこのプロパティ値が一致しない場合、幾何形状パラメータの値を優先する。 - - - - WallCovering - Label to indicate the material or finish of the space flooring. The label is used for room book information and often displayed in room stamp. - -The material information is provided in absence of an IfcCovering (type=CLADDING) object with own shape representation and material assignment. In case of inconsistency the material assigned to IfcCovering elements takes precedence. - - - - - - - Wandbekleidung - Wall Covering - RevetementMur - 壁仕上げ - - - Angabe des Materials für die Wandbekleidung, oder den Wandbelag Diese Angabe wird im Raumbuch verwendet und oft im Raumstempel angezeigt. - -Die Materialangabe wird übernommen, wenn kein eigenes Bekleidungsobjekt (IfcCovering mit PredefinedType = CLADDING) für die Wandbekleidung dem Raum zugeordnet ist. Bei Inkonsistenzen (wenn beides gegeben ist), hat die Materialangabe des zugeordneten Bekleidungsobjekts Priorität. - - Indication sur la nature du revêtement de mur […]. L'information sur le matériau est fournie en l'absence d'un objet de la classe IfcCovering (Type=CLADDING) avec sa propre représentation de forme et une assignation à un matériau. En cas d'incohérence, c'est le matériau assigné à l'instance de IfcCovering qui prime. - 部屋の壁材質または仕上げに関するラベル(識別情報)。このラベル名は部屋リスト情報や部屋情報表示の際に利用される。 - - - - WallCoveringThickness - Thickness of the material layer(s) for the space cladding. - -The thickness information is provided in absence of an IfcCovering (type=CLADDING) object with own shape representation. In cases of inconsistency between the geometric parameters of an assigned IfcCovering and this attached property, the geometric parameters take precedence. - - - - - - - Dicke der Wandbekleidung - Wall Covering Thickness - Epaisseur du revêtement de mur - 壁仕上げ厚 - - - Angabe der Dicke der Materialschichten für die Wandbekleidung. - -Der Dickenparameter wird übernommen, wenn kein eigenes Bekleidungsobjekt (IfcCovering mit PredefinedType = CLADDING) für die Wandbekleidung dem Raum zugeordnet ist. Bei Inkonsistenzen (wenn beides gegeben ist), hat die Materialdicke des zugeordneten Bekleidungsobjekts Priorität. - - Epaisseur de la couche de matériau constituant le revêtement de mur. Cette information sur le matériau est fournie en l'absence d'un objet de la classe IfcCovering (Type=CLADDING) avec sa propre représentation de forme. En cas d'incohérence entre les paramètres géométriques de l'instance de IfcCovering et cette propriété, ce sont les paramètres géométriques qui priment. - 部屋の壁に関する材質層の厚さ。 - -形状表現を持つIfcCovering(type=CLADDING)オブジェクトが存在しない場合に与えられる厚さ情報。IfcCoveringの幾何形状パラメータとこのプロパティ値が一致しない場合、幾何形状パラメータの値を優先する。 - - - - CeilingCovering - Label to indicate the material or finish of the space flooring. The label is used for room book information and often displayed in room stamp. - -The material information is provided in absence of an IfcCovering (type=CEILING) object with own shape representation and material assignment. In case of inconsistency the material assigned to IfcCovering elements takes precedence. - - - - - - - Deckenbekleidung - Ceiling Covering - RevetementPlafond - 天井仕上げ - - - Angabe des Materials für die Deckenbekleidung oder den Deckenbelag (bzw. der Unterdecke). Diese Angabe wird im Raumbuch verwendet und oft im Raumstempel angezeigt. - -Die Materialangabe wird übernommen, wenn kein eigenes Bekleidungsobjekt (IfcCovering mit PredefinedType = CEILING) für die Deckenbekleidung dem Raum zugeordnet ist. Bei Inkonsistenzen (wenn beides gegeben ist), hat die Materialangabe des zugeordneten Bekleidungsobjekts Priorität. - - Indication sur la nature du revêtement de plafond […]. L'information sur le matériau est fournie en l'absence d'un objet de la classe IfcCovering (Type=CEILING) avec sa propre représentation de forme et une assignation à un matériau. En cas d'incohérence, c'est le matériau assigné à l'instance de IfcCovering qui prime. - 部屋の天井材質または仕上げに関するラベル(識別情報)。このラベル名は部屋リスト情報や部屋情報表示の際に利用される。 - - - - CeilingCoveringThickness - Thickness of the material layer(s) for the space ceiling. - -The thickness information is provided in absence of an IfcCovering (type=CEILING) object with own shape representation. In cases of inconsistency between the geometric parameters of an assigned IfcCovering and this attached property, the geometric parameters take precedence. - - - - - - - Dicke der Deckenbekleidung - Ceiling Covering Thickness - Epaisseur du revêtement de plafond - 天井仕上げ厚 - - - Angabe der Dicke der Materialschichten für die Deckenbekleidung. - -Der Dickenparameter wird übernommen, wenn kein eigenes Bekleidungsobjekt (IfcCovering mit PredefinedType = CEILING) für die Deckenbekleidung dem Raum zugeordnet ist. Bei Inkonsistenzen (wenn beides gegeben ist), hat die Materialdicke des zugeordneten Bekleidungsobjekts Priorität. - - Epaisseur de la couche de matériau constituant le revêtement de sol. Cette information sur le matériau est fournie en l'absence d'un objet de la classe IfcCovering (Type=CEILING) avec sa propre représentation de forme. En cas d'incohérence entre les paramètres géométriques de l'instance de IfcCovering et cette propriété, ce sont les paramètres géométriques qui priment. - 部屋の天井に関する材質層の厚さ。 - -形状表現を持つIfcCovering(type=CEILING)オブジェクトが存在しない場合に与えられる厚さ情報。IfcCoveringの幾何形状パラメータとこのプロパティ値が一致しない場合、幾何形状パラメータの値を優先する。 - - - - SkirtingBoard - Label to indicate the material or construction of the skirting board around the space flooring. The label is used for room book information. - -The material information is provided in absence of an IfcCovering (type=SKIRTINGBOARD) object with own shape representation and material assignment. In case of inconsistency the material assigned to IfcCovering elements takes precedence. - - - - - - - Sockelleiste - Skirting Board - Matériau de la plinthe - 幅木材 - - - Angabe des Materials für die Sockelleiste. Diese Angabe wird im Raumbuch verwendet. - -Die Materialangabe wird übernommen, wenn kein eigenes Bekleidungsobjekt (IfcCovering mit PredefinedType = SKIRTINGBOARD) für die Sockelleiste dem Raum zugeordnet ist. Bei Inkonsistenzen (wenn beides gegeben ist), hat die Materialangabe des zugeordneten Bekleidungsobjekts Priorität. - - - 部屋の床の周りにある幅木の材質または施工に関するラベル(識別情報)。ラベル名は部屋リスト情報に使用される。 - -形状表現を持つIfcCovering (type=SKIRTINGBOARD)オブジェクトが存在しない場合に与えられる材質情報。IfcCoveringの材質情報とこのプロパティ値が一致しない場合、IfcCoveringに与えられている材質情報を優先する。 - - - - SkirtingBoardHeight - Height of the skirting board. - -The height information is provided in absence of an IfcCovering (type=SKIRTINGBOARD) object with own shape representation and material assignment. In case of inconsistency the height assigned to IfcCovering elements takes precedence. - - - - - - - Höhe der Sockelleite - Skirting Board Height - Hauteur de la plinthe - 幅木材高 - - - Angabe der Höhe der umlaufenden Sockelleiste. - -Der Höhenparameter wird übernommen, wenn kein eigenes Bekleidungsobjekt (IfcCovering mit PredefinedType = SKIRTINGBOARD) für die Sockelleiste dem Raum zugeordnet ist. Bei Inkonsistenzen (wenn beides gegeben ist), hat die Höhe des zugeordneten Bekleidungsobjekts Priorität. - - - 部屋の幅木の高さ。 - -形状表現を持つIfcCovering(type=SKIRTINGBOARD)オブジェクトが存在しない場合に与えられる厚さ情報。IfcCoveringの幾何形状パラメータとこのプロパティ値が一致しない場合、幾何形状パラメータの値を優先する。 - - - - Molding - Label to indicate the material or construction of the molding around the space ceiling. The label is used for room book information. - -The material information is provided in absence of an IfcCovering (type=MOLDING) object with own shape representation and material assignment. In case of inconsistency the material assigned to IfcCovering elements takes precedence. - - - - - - - Gesims - Molding - Matériau de la moulure - 廻縁 - - - Angabe des Materials für das Gesims (Deckenkante). Diese Angabe wird im Raumbuch verwendet. - -Die Materialangabe wird übernommen, wenn kein eigenes Bekleidungsobjekt (IfcCovering mit PredefinedType = MOLDING) für das Gesims dem Raum zugeordnet ist. Bei Inkonsistenzen (wenn beides gegeben ist), hat die Materialangabe des zugeordneten Bekleidungsobjekts Priorität. - - - 部屋の廻縁の材質または施工に関するラベル(識別情報)。ラベル名は部屋リスト情報に使用される。 - -形状表現を持つIfcCovering (type=MOLDING)オブジェクトが存在しない場合に与えられる材質情報。IfcCoveringの材質情報とこのプロパティ値が一致しない場合、IfcCoveringに与えられている材質情報を優先する。 - - - - MoldingHeight - Height of the molding. - -The height information is provided in absence of an IfcCovering (type=MOLDING) object with own shape representation and material assignment. In case of inconsistency the height assigned to IfcCovering elements takes precedence. - - - - - - - Höhe des Gesims - Molding Height - Hauteur de la moulure - 廻縁高 - - - Angabe der Höhe des umlaufenden Gesims (Deckenkante). - -Der Höhenparameter wird übernommen, wenn kein eigenes Bekleidungsobjekt (IfcCovering mit PredefinedType = MOLDING) für das Gesims dem Raum zugeordnet ist. Bei Inkonsistenzen (wenn beides gegeben ist), hat die Höhe des zugeordneten Bekleidungsobjekts Priorität. - - - 部屋の廻縁の高さ。 - -形状表現を持つIfcCovering(type=MOLDING)オブジェクトが存在しない場合に与えられる厚さ情報。IfcCoveringの幾何形状パラメータとこのプロパティ値が一致しない場合、幾何形状パラメータの値を優先する。 - - - - ConcealedFlooring - Indication whether this space is designed to have a concealed flooring space (TRUE) or not (FALSE). A concealed flooring space is normally meant to be the space beneath a raised floor. - - - - - - - Installationsboden - Concealed Flooring - FauxPlancher - 隠蔽床 - - - Angabe, ob dieser Raum mit einem aufgeständerten Fußboden ausgestattet ist (JA), oder nicht (NEIN). - - Indique si la pièce comprend un faux plancher (VRAI) ou non (FAUX) - この部屋(空間)が隠蔽された床空間を持つように設計されているかどうかを示すブーリアン値。隠蔽された床空間とは、上げ床の下の空間。 - - - - ConcealedFlooringOffset - Distance between the floor slab and the floor covering, often used for cables and other installations. Often referred to as raised flooring. - - - - - - - - - - ConcealedCeiling - Indication whether this space is designed to have a concealed flooring space (TRUE) or not (FALSE). A concealed ceiling space is normally meant to be the space between a slab and a ceiling. - - - - - - - Installationsdecke - Concealed Ceiling - FauxPlafond - 隠蔽天井 - - - Angabe, ob dieser Raum mit einer Installationsdecke (abgehängten Decke) ausgestattet ist (JA), oder nicht (NEIN). - - Indique si la pièce comprend un faux plafond (VRAI) ou non (FAUX) - この部屋(空間)が隠蔽された天井空間を持つように設計されているかどうかを示すブーリアン値。隠蔽された天井空間とは、スラブと天井の間の空間。 - - - - ConcealedCeilingOffset - Distance between the upper floor slab and the suspended ceiling, often used for distribution systems. Often referred to as plenum. - - - - - - - - - - - Eigenschaften der Bekleidungen des Raumes. - -Diese Eigenschaften werden als Anforderungen in frühen Phasen im Raumprogramm geführt und können für spätere Phasen als Informationen für das Raumbuch dienen, falls die Bekleidungen nicht als eigenständige Elemente angelegt werden. - - IfcSpace(部屋)の仕上げ(Covering)の共通属性。プロジェクト初期の空間計画からの仕上げ要求仕様情報を設定する。もし。Coveringオブジェクトが生成されていない場合は、このプロパティセットの情報は仕上げ表作成に使用することができる。 - - - - - Pset_SpaceFireSafetyRequirements - Properties related to fire protection of spaces that apply to the occurrences of IfcSpace or IfcZone. - - - IfcSpace - IfcSpatialZone - IfcZone - - IfcSpace, IfcSpatialZone, IfcZone - - - FireRiskFactor - Fire Risk factor assigned to the space according to local building regulations. It defines the fire risk of the space at several levels of fire hazard. - - - - - - - Brandgefahrenklasse - Fire Risk Factor - FacteurRisqueIncendie - 火災危険度要因 - 화재 위험 요인 - - - Brandgefahrenklasse des Raums, angegeben nach der nationalen oder regionalen Brandschutzverordnung. - - Facteur de risque incendie attribué à l'espace, selon la réglementation locale en matière de construction. - 地域の建築規則に従って空間に割り当てられた火災危険要因 -火災のいくつかのレベルにおける空間の火災危険度を定義する。 - 지역 건축 규칙에 따라 공간에 할당된 화재 위험 요인 화재 어느 정도의 공간의 화재 위험도를 정의한다. " - - - - FlammableStorage - Indication whether the space is intended to serve as a storage of flammable material (which is regarded as such by the presiding building code. (TRUE) indicates yes, (FALSE) otherwise. - - - - - - - Lagerung brennbarer Stoffe - Flammable Storage - StockageCombustible - 可燃物保管区分 - 가연성 물질 창고 - - - Angabe, ob der Raum zur Lagerung der Produktion von brennbaren Stoffen genutzt wird (WHAHR) oder nicht (FALSCH). Die Angabe erfolgt nach der nationalen oder regionalen Brandschutzverordnung. - - Indique si l'espace est destiné au stockage de matières inflammables (considérées comme telles par le Code de la Construction en vigueur). (VRAI) signifie oui, (FAUX) sinon. - 空間が可燃物(建築基準を管理することによりそのように考慮される)の倉庫として使われることを意図されているかどうかを示すブーリアン値。(TRUE)はい、(FALSE)いいえ。 - 공간이 가연물 (건축 기준을 관리함으로써 그렇게 여겨지는)의 창고로 사용되는 것을 의도하고 있는지 여부를 나타내는 부울 값입니다. (TRUE) 예 (FALSE) 아니오. "이 물체가 화재의 경우 출구로 사용되도록 설계되었는지 여부를 나타내는 (TRUE) 예 (FALSE) 아니오 값 - - - - FireExit - Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE). -Here whether the space (in case of e.g., a corridor) is designed to serve as an exit space, e.g., for fire escape purposes. - - - - - - - Notausgang - Fire Exit - SortieSecours - 非常口区分 - 화재 출구 (피난 출구) - - - Angabe, ob der Raum einen Notausgang für den Brandfall hat und als ein Notausgangs(sammel)raum im Sinne der Brandschutzverordnung gilt (WAHR), oder nicht (FALSCH). - - Indique si cet objet est conçu pour servir de sortie en cas d'incendie (VRAI) ou non (FAUX). Cas d'un espace comme un couloir conçu pour servir d'espace de sortie, par exemple pour l'évacuation en cas d'incendie. - このオブジェクトが火災の場合に出口として使われるように設計されているかどうかを示すブーリアン値。(TRUE)はい、(FALSE)いいえ。 -ここに、空間(例えば廊下)は、例えば火災避難目的のために出口空間として使われるよう設計されているかどうか。 - 여기에 공간 (예 복도), 예를 들면 화재 피난 목적을 위해 출구 공간으로 사용하도록 설계되었는지 여부 - - - - SprinklerProtection - Indication whether the space is sprinkler protected (TRUE) or not (FALSE). - - - - - - - Sprinklerschutz - Sprinkler Protection - ProtectionParSprinkler - スプリンクラー防御 - 스프링 클러 방어 - - - Angabe, ob der Raum durch eine Sprinkleranlage geschützt wird (WAHR) oder nicht (FALSCH). - - Indication selon laquelle ce bâtiment bénéficie d'une protection par sprinkler (VRAI) ou non (FAUX). - スプリンクラー設備の有無を示すブーリアン値。(TRUE)有、(FALSE)なし。 - 스프링 클러 설비의 유무를 나타내는 부울 값입니다. (TRUE) 유 (FALSE) 없음. - - - - SprinklerProtectionAutomatic - Indication whether the space has an automatic sprinkler protection (TRUE) or not (FALSE). -It should only be given, if the property "SprinklerProtection" is set to TRUE. - - - - - - - Sprinklerschutz automatisch - Sprinkler Protection Automatic - ProtectionAutomatiqueParSprinkler - 自動スプリンクラー防御 - 스프링 클러 방어 자동 구분 - - - Angabe, ob der Raum durch eine automatische Sprinkleranlage geschützt wird (WAHR) oder nicht (FALSCH). Dieser Wert soll nur angegeben werden, wenn das Attribut SprinklerProtection auf (WAHR) gesetzt ist. - - Indication selon laquelle ce bâtiment bénéficie d'une protection automatique par sprinkler (VRAI) ou non (FAUX). - スプリンクラー設備が自動かどうか示すブーリアン値。(TRUE)自動、(FALSE)非自動。「スプリンクラー防御」プロパティがTRUEに設定された場合のみ、与えられる。 - 스프링 클러 설비가 자동 여부를 나타내는 부울 값입니다. (TRUE) 자동 (FALSE) 비자동. "스프링 클러 방어"속성이 TRUE로 설정된 경우에만 주어진다. - - - - AirPressurization - Indication whether the space is required to have pressurized air (TRUE) or not (FALSE). - - - - - - - Luftdruckausgleich - Air Pressurization - AirComprimeDisponible - 空気加圧 - 공기 가압 - - - Angabe, ob der Raum einen Luftdruckausgleich erfordert (WAHR) oder nicht (FALSCH). - - Indique si l'espace nécessite d'être alimenté en air comprimé (VRAI) ou non (FAUX) - 空間が加圧することを要求されているかどうかを示すブーリアン値。(TRUE)加圧、(FALSE)非加圧。 - 공간이 가압 요구되고 있는지 여부를 나타내는 부울 값입니다. (TRUE) 가압 (FALSE) 비 가압. - - - - - Property Set Definition in German - - Définition de l'IAI : propriétés relatives à la protection incendie, qui s'appliquent à toutes les occurrences des classes IfcSpace et IfcZone. - IfcSpaceまたはIfcZoneの存在に適用される、空間の火災防御(防火)に関連したプロパティ。 - - - - - Pset_SpaceHeaterPHistory - Space heater performance history common attributes. - - - IfcSpaceHeater - - IfcSpaceHeater - - - FractionRadiantHeatTransfer - Fraction of the total heat transfer rate as the radiant heat transfer. - - - - - Fraction Radiant Heat Transfer - 放射熱移動フラクション - - - - 総合熱移動の内放射熱移動とみなされる部分 - - - - FractionConvectiveHeatTransfer - Fraction of the total heat transfer rate as the convective heat transfer. - - - - - Fraction Convective Heat Transfer - 対流熱移動フラクション - - - - 総合熱移動の内対流射熱移動とみなされる部分 - - - - Effectiveness - Ratio of the real heat transfer rate to the maximum possible heat transfer rate. - - - - - Effectiveness - 効率 - - - - 最大可能熱移動量に対する実熱移動量の割合 - - - - SurfaceTemperature - Average surface temperature of the component. - - - - - Surface Temperature - 表面温度 - - - - 構成要素の平均表面温度 - - - - SpaceAirTemperature - Dry bulb temperature in the space. - - - - - Space Air Temperature - 室温 - - - - 部屋の乾球温度 - - - - SpaceMeanRadiantTemperature - Mean radiant temperature in the space. - - - - - Space Mean Radiant Temperature - 室平均放射温度 - - - - 部屋の平均放射温度 - - - - AuxiliaryEnergySourceConsumption - Auxiliary energy source consumption. - - - - - Auxiliary Energy Source Consumption - 補助エネルギー源使用量 - - - - 補助エネルギー源使用量 - - - - UACurve - UA curve as function of ambient temperature and surface temperature; UA = f (Tambient, Tsurface) - - - - - UACurve - UA曲線 - - - - 周囲温度と表面温度との関数のUA曲線 - - - - OutputCapacityCurve - Partial output capacity curve (as a function of water temperature); Q = f (Twater). - - - - - Output Capacity Curve - 部分的アウトプット能力曲線 - - - - 部分的アウトプット能力曲線(水温の関数として) - - - - AirResistanceCurve - Air resistance curve (w/ fan only); Pressure = f ( flow rate). - - - - - Air Resistance Curve - 空気抵抗曲線 - - - - 空気抵抗曲線(送風機のみ)圧力=f(流速) - - - - Exponent - Characteristic exponent, slope of log(heat output) vs log (surface temperature minus environmental temperature). - - - - - Exponent - 指数 - - - - 特徴的な指数、log(熱出力)log(表面温度マイナス周囲温度)の勾配 - - - - HeatOutputRate - Overall heat transfer rate. - - - - - Heat Output Rate - 熱出力比 - - - - 総合熱移動率 - - - - - - 暖房用ヒーター性能履歴共通属性 - - - - - Pset_SpaceHeaterTypeCommon - Space heater type common attributes. -SoundLevel attribute deleted in IFC2x2 Pset Addendum: Use IfcSoundProperties instead. Properties added in IFC4. - - - IfcSpaceHeater - - IfcSpaceHeater - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - PlacementType - Indicates how the space heater is designed to be placed. - - - - BASEBOARD - TOWELWARMER - SUSPENDED - WALL - OTHER - NOTKNOWN - UNSET - - - - BASEBOARD - - Baseboard - - - - - - - TOWELWARMER - - Towel Warmer - - - - - - - SUSPENDED - - Suspended - - - - - - - WALL - - Wall - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Placement Type - プレースメントタイプ - - - - 暖房用ヒーターが置かれるようにどう設計されているかを示します。 - - - - TemperatureClassification - Enumeration defining the temperature classification of the space heater surface temperature. -low temperature - surface temperature is relatively low, usually heated by hot water or electricity. -high temperature - surface temperature is relatively high, usually heated by gas or steam. - - - - LOWTEMPERATURE - HIGHTEMPERATURE - OTHER - NOTKNOWN - UNSET - - - - LOWTEMPERATURE - - Low Temperature - - - - - - - HIGHTEMPERATURE - - High Temperature - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Temperature Classification - 温度分類 - - - - 暖房用ヒーター表面温度の温度分類を定義。低温タイプ-お湯またh電気によるものの表面温度は相対的に低い。高温タイプ-ガスまたは蒸気によって熱するタイプの表面温度は比較的高い。 - - - - HeatTransferDimension - Indicates how heat is transmitted according to the shape of the space heater. - - - - POINT - PATH - SURFACE - OTHER - NOTKNOWN - UNSET - - - - POINT - - Point - - - - - - - PATH - - Path - - - - - - - SURFACE - - Surface - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Heat Transfer Dimension - 熱伝達値 - - - - 室内暖房機の形に従って熱がどう伝えられるかを示します。 - - - - HeatTransferMedium - Enumeration defining the heat transfer medium if applicable. - - - - WATER - STEAM - OTHER - NOTKNOWN - UNSET - - - - WATER - - Water - - - - - - - STEAM - - Steam - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Heat Transfer Medium - 熱媒体 - - - - 列挙体は熱媒体を必要に応じて定義します。 - - - - EnergySource - Enumeration defining the energy source or fuel combusted to generate heat if applicable. Note: hydronic heaters shall use UNSET; dual-use hydronic/electric heaters shall use ELECTRICITY. - - - - COAL - COAL_PULVERIZED - ELECTRICITY - GAS - OIL - PROPANE - WOOD - WOOD_CHIP - WOOD_PELLET - WOOD_PULVERIZED - OTHER - NOTKNOWN - UNSET - - - - COAL - - Coal - - - - - - - COAL_PULVERIZED - - Coal Pulverized - - - - - - - ELECTRICITY - - Electricity - - - - - - - GAS - - Gas - - - - - - - OIL - - Oil - - - - - - - PROPANE - - Propane - - - - - - - WOOD - - Wood - - - - - - - WOOD_CHIP - - Wood Chip - - - - - - - WOOD_PELLET - - Wood Pellet - - - - - - - WOOD_PULVERIZED - - Wood Pulverized - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Energy Source - エネルギー源 - - - - 列挙型はエネルギー源や燃料該当する場合は熱を発生させる燃焼定義します。注:温水循環式のヒーターはunsetを使用してはならない。デュアル使用すると、温水循環式の電気ヒーターは電気を使用しなければならない。 - - - - BodyMass - Overall body mass of the heater. - - - - - - - Body Mass - 本体重量 - - - - ヒーターの全体的な質量 - - - - ThermalMassHeatCapacity - Product of component mass and specific heat. - - - - - - - Thermal Mass Heat Capacity - 保有熱容量 - - - - 質量あたりの熱容量 - - - - OutputCapacity - Total nominal heat output as listed by the manufacturer. - - - - - - - Output Capacity - 出力 - - - - メーカーによりリストアップされた公称熱出力 - - - - ThermalEfficiency - Overall Thermal Efficiency is defined as gross energy output of the heat transfer device divided by the energy input. - - - - - - - Thermal Efficiency - 熱効率 - - - - 熱効率:熱伝導装置の総エネルギー出力/エネルギー入力として総合的な熱効率は定義される。 - - - - NumberOfPanels - Number of panels. - - - - - - - Number Of Panels - パネルの数 - - - - パネルの数 - - - - NumberOfSections - Number of vertical sections, measured in the direction of flow. - - - - - - - Number Of Sections - セクションの数 - - - - 流れ方向で測定した垂直方向のセクションの数 - - - - - - 暖房用ヒーター共通属性                       SoundLevel属性はIFC2x2付録で削除された。: IfcSoundPropertiesを代わりに使う 特性はIFC4を加えました - - - - - Pset_SpaceHeaterTypeConvector - Space heater type convector attributes. - - - IfcSpaceHeater/CONVECTOR - - IfcSpaceHeater/CONVECTOR - - - ConvectorType - Indicates the type of convector, whether forced air (mechanically driven) or natural (gravity). - - - - FORCED - NATURAL - OTHER - NOTKNOWN - UNSET - - - - FORCED - - Forced - - - - - - - NATURAL - - Natural - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Convector Type - 対流タイプ - - - - 強制空気(機械的に運転される)か自然な(重力)であることにかかわらず対流式暖房器のタイプを示します。 - - - - - - 暖房用ヒーター対流式属性 - - - - - Pset_SpaceHeaterTypeRadiator - Space heater type radiator attributes. - - - IfcSpaceHeater/RADIATOR - - IfcSpaceHeater/RADIATOR - - - RadiatorType - Indicates the type of radiator. - - - - FINNEDTUBE - PANEL - SECTIONAL - TUBULAR - OTHER - NOTKNOWN - UNSET - - - - FINNEDTUBE - - Finned Tube - - - - - - - PANEL - - Panel - - - - - - - SECTIONAL - - Sectional - - - - - - - TUBULAR - - Tubular - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Radiator Type - ラジエータータイプ - - - - ラジエーターの種類 - - - - TubingLength - Water tube length inside the component. - - - - - - - Tubing Length - チューブの長さ - - - - 構成要素における水管の長さ - - - - WaterContent - Weight of water content within the heater. - - - - - - - Water Content - 水含量 - - - - ヒーター内部の水分の重み - - - - - - 暖房用ヒーターラジエーター属性 - - - - - Pset_SpaceLightingRequirements - Properties related to the lighting requirements that apply to the occurrences of IfcSpace or IfcZone. This includes the required artificial lighting, illuminance, etc. - - - IfcSpace - IfcSpatialZone - IfcZone - - IfcSpace, IfcSpatialZone, IfcZone - - - ArtificialLighting - Indication whether this space requires artificial lighting (as natural lighting would be not sufficient). (TRUE) indicates yes (FALSE) otherwise. - - - - - - - künstliche Beleuchtung - Artificial Lighting - EclairageArtificiel - 人工照明 - 인공 조명 - - - Angabe, ob dieser Raum eine künstliche Beleuchtung erfordert (WAHR) oder nicht (FALSCH) - - Indication si cette pièce a des besoins d'éclairage artificiel (dans la mesure où l'éclairage naturel ne serait pas suffisant). (VRAI) signifie oui, (FAUX) sinon. - 領域が人工照明を必要とするかどうかの表示(自然光が十分でないとして) (TRUE)の場合、必要。(FALSE)の場合、不必要。 - 이 공간이 인공 조명을 필요로하는지 여부 (자연 조명이 충분하지 않기 위하여)를 나타내는 부울 값입니다. (TRUE) 필요 (FALSE) 아니오 값. - - - - Illuminance - Required average illuminance value for this space. - - - - - - - Beleuchtungsstärke - Illuminance - EclairementAttendu - 照度 - 조도 - - - Geforderte durchschnittliche Beleuchtungsstärke in diesem Raum. - - Valeur de l'éclairement attendu pour la pièce. - 領域に対しての必要とされる照度の値の平均値。 - 이 공간을 위해 필요한 평균 조도 - - - - - Property Set Definition in German - - Définition de l'IAI : propriétés relatives aux exigences en matière d'éclairement, applicables à toutes les instances des classes IfcSpace et IfcZone. Comprend l'éclairage artificiel, le niveau d'éclairement,… - IfcSpaceまたはIfcZoneオブジェクトに適用される照明の条件に関するプロパティ。必要とされる人工照明及び照度などを含む。 - - - - - Pset_SpaceOccupancyRequirements - Properties concerning work activities occurring or expected to occur within one or a set of similar spatial structure elements. - - - IfcSpace - IfcSpatialZone - IfcZone - - IfcSpace, IfcSpatialZone, IfcZone - - - OccupancyType - Occupancy type for this object. It is defined according to the presiding national building code. - - - - - - - Nutzungsart - Occupancy Type - TypeOccupation - 用途 - - - Nutzungsart des Raums gemäß der gültigen Raumnutzungstabelle des Raumprogramms. - - Usage type de cet espace. Est défini selon le Code national en vigueur. - このオブジェクトの用途。統括する国の建築法規により定義される。 - - - - OccupancyNumber - Number of people required for the activity assigned to this space. - - - - - - - Belegung - Occupancy Number - NombreOccupants - 利用人数 - - - Durchschnittliche Anzahl der Personen für deren Aktivitäten der Raum vorgesehen ist. - - Nombre d'occupants concernés par l'activité dans cet espace. - この空間に割り当てられた活動を遂行するために必要な人数。 - - - - OccupancyNumberPeak - Maximal number of people required for the activity assigned to this space in peak time. - - - - - - - Maximale Belegung - Occupancy Number Peak - NombreOccupantsMax - 利用人数ピーク - - - Maximale Anzahl der Personen für deren Aktivitäten der Raum vorgesehen ist. - - Nombre maximum d'occupants simultanés concernés par l'activité dans cet espace à l'heure de pointe. - この空間に割り当てられた活動を遂行するために必要な最大人数。 - - - - OccupancyTimePerDay - The amount of time during the day that the activity is required within this space. - - - - - - - Belegungszeit pro Tag - Occupancy Time Per Day - DureeOccupationJour - 日毎利用時間 - - - Durchschnittliche Belegungszeit des Raums pro Tag. - - Durée journalière de l'activité dans cet espace - この空間での活動をするために必要な日中の時間。 - - - - AreaPerOccupant - Design occupancy loading for this type of usage assigned to this space. - - - - - - - Fläche pro Nutzer - Area Per Occupant - SurfaceParOccupant - 利用者毎面積 - - - Anteil der Raumfläche pro Benutzer für Nutzung des Raums. - - Taux de remplissage de l'espace pour l'usage type - この空間に割り当てられた用途に対する想定利用負荷。 - - - - MinimumHeadroom - Headroom required for the activity assigned to this space. - - - - - - - Lichte Höhe - Minimum Headroom - HauteurPassageMinimale - 最小頭上あき高 - - - Minumal geforderte lichte Höhe für diesen Raum. - - Hauteur de passage requise pour l'usage assigné à l'espace - この空間に割り当てられた用途に必要な頭上あき高。 - - - - IsOutlookDesirable - An indication of whether the outlook is desirable (set TRUE) or not (set FALSE) - - - - - - - Ausblick erwünscht - Is Outlook Desirable - VueExterieurSouhaitable - 眺望の善し悪し - - - Angabe, ob dieser Raum einen natürlichen Ausblick nach draussen gewähren soll (WAHR) oder dies nicht gefordert ist (FALSCH). - - Indique si la vue sur l'extérieur est souhaitable (VRAI) ou non (FAUX). - 外の眺望が望ましいかどうか。 - - - - - Property Set Definition in German - - Définition de l'IAI : propriétés relatives à l'usage attendu ou effectif d'un élément de structure spatial ou d'un ensemble d'éléments de struture spatiale similaires. - 一つの、あるいは複数の類似した空間構成要素で起きる、あるいは起こるであろう業務活動に関する属性。 - - - - - Pset_SpaceParking - Properties common to the definition of all occurrences of IfcSpace which have an attribute value for ObjectType = 'Parking'. NOTE: Modified in IFC 2x3, properties ParkingUse and ParkingUnits added. - - - IfcSpace/PARKING - - IfcSpace/PARKING - - - ParkingUse - Identifies the type of transporation for which the parking space is designed. Values are not predefined but might include car, compact car, motorcycle, bicycle, truck, bus etc. - - - - - - - Parking Use - AccessibleHandicape - 駐車場の用途 - - - - Identifie le type de véhicule pour lequel le parking a été conçu. Les valeurs possibles (voiture, bus, motos, vélos,…) ne sont pas prédéfinies. - どの車両種別の駐車場なのかを識別します。値はあらかじめ定められないが、自動車、小型車、オートバイ、自転車、トラック、バスなどを含んでいるかもしれません。 - - - - ParkingUnits - Indicates the number of transporation units of the type specified by the property ParkingUse that may be accommodated within the space. Generally, this value should default to 1 unit. However, where the parking space is for motorcycles or bicycles, provision may be made for more than one unit in the space. - - - - - - - Parking Units - TypeVehicule - 一区画当たりの駐車台数 - - - - Nombre d'unités du type de véhicule spécifié dans la propriété TypeVehicule que peut contenir l'espace alloué au parking. Généralement, la valeur par défaut est 1. Elle peut être supérieure pour les deux roues. - 車両種別ごとの駐車台数のユニットごとの指定台数。一般に、この値は1台/1ユニットになるべきです。しかしながら、オートバイまたは自転車向けである場合、数台/1ユニット以上なるかもしれません。 - - - - IsAisle - Indicates that this parking zone is for accessing the parking units, i.e. an aisle (TRUE) and not a parking unit itself (FALSE) - - - - - - - Is Aisle - NombreUnites - 通路か駐車スペースの判別 - - - - Indique si cette zone du parking, comme une allée, est réservée à l'accès (VRAI) ou non (FAUX). - 駐車場の通路部分(TRUE)か駐車部部分(FALSE)かを示すフラグ。 - - - - IsOneWay - Indicates whether the parking aisle is designed for oneway traffic (TRUE) or twoway traffic (FALSE). Should only be provided if the property IsAisle is set to TRUE. - - - - - - - Is One Way - Sens unique - 一方通行 - - - - Indique si cette allée du parking est prévue pour être à sens unique (VRAI) ou à double sens (FAUX). A fournir seulement si la propriété "Est un accès" est égale à VRAI. - 駐車場通路が一方通行(TRUE)か双方向(FALSE)かを示すフラグ。 - - - - - - Définition de l'IAI : propriétés communes à la définition des instances de la classe IfcSpace lorsque la valeur de l'attribut ObjetType est "Parking". Nota : les propriétés TypeVehicule et NombreUnites ont été introduites depuis la révision 2x3. - IfcObjectのObjectType属性の値が"Parking"の場合に設定される共通プロパティ情報。 - - - - - Pset_SpaceThermalDesign - Space or zone HVAC design requirements. HISTORY: New property set in IFC Release 1.0 (Pset_SpaceHvacInformation); renamed to Pset_SpaceThermalDesign and revised in IFC2x2. - - - IfcSpace - - IfcSpace - - - CoolingDesignAirflow - The air flowrate required during the peak cooling conditions. - - - - - - - Cooling Design Airflow - 冷房設計吸気量 - - - - ピーク時の冷房条件で要求される給気量。 - - - - HeatingDesignAirflow - The air flowrate required during the peak heating conditions, but could also be determined by minimum ventilation requirement or minimum air change requirements. - - - - - - - Heating Design Airflow - - - - - - - TotalSensibleHeatGain - The total sensible heat or energy gained by the space during the peak cooling conditions. - - - - - - - Total Sensible Heat Gain - 顕熱負荷の合計 - 현열 부하의 합계 - - - - ピーク時の冷房条件で取得した顕熱或いはエネルギー。 - 피크 냉방 조건에서 얻은 현열 또는 에너지. - - - - TotalHeatGain - The total amount of heat or energy gained by the space at the time of the space's peak cooling conditions. - - - - - - - Total Heat Gain - 熱取得の合計 - 연 인수 금액 - - - - ピーク時の室内最大冷房負荷時に取得した顕熱或いはエネルギー。 - 최대의 실내 최대 냉방 부하 취득한 현열 또는 에너지. - - - - TotalHeatLoss - The total amount of heat or energy lost by the space at the time of the space's peak heating conditions. - - - - - - - Total Heat Loss - 熱ロスの合計 - 열 손실 합계 - - - - ピーク時の室内最大暖房負荷時に取得・損失した熱或いはエネルギー。 - 최대의 실내 최대 난방 부하에 취득 · 손실 열 또는 에너지. - - - - CoolingDryBulb - Inside dry bulb temperature for cooling design. - - - - - - - Cooling Dry Bulb - 冷房設計温度 - 냉방 설계온도 - - - - 冷房設計における室内設計乾球温度。 - 냉방 설계의 실내 디자인 건구 온도 - - - - CoolingRelativeHumidity - Inside relative humidity for cooling design. - - - - - - - Cooling Relative Humidity - 冷房設計相対湿度 - 냉방 설계 상대습도 - - - - 冷房設計における室内設計相対湿度。 - 냉방 설계의 실내 디자인 상대 습도. - - - - HeatingDryBulb - Inside dry bulb temperature for heating design. - - - - - - - Heating Dry Bulb - 暖房設計温度 - 난방 설계온도 - - - - 暖房設計における室内設計乾球温度。 - 난방 설계의 실내 디자인 건구 온도 - - - - HeatingRelativeHumidity - Inside relative humidity for heating design. - - - - - - - Heating Relative Humidity - 暖房設計相対湿度 - 난방 설계 상대습도 - - - - 暖房設計における室内設計相対湿度。 - 난방 설계의 실내 디자인 상대 습도. - - - - VentilationAirFlowrate - Ventilation outside air requirement for the space. - - - - - - - Ventilation Air Flowrate - 外気量 - 외기량 - - - - 必要外気量。 - 필요 외기 량. - - - - ExhaustAirFlowrate - Design exhaust air flow rate for the space. - - - - - - - Exhaust Air Flowrate - 排気量 - 배기량 - - - - 設計排気量。 - 설계 배기량. - - - - CeilingRAPlenum - Ceiling plenum used for return air or not. TRUE = Yes, FALSE = No. - - - - - - - Ceiling RAPlenum - 天井裏還気 - 천장환원주의 - - - - 天井裏還気(リタンあり・なし) TRUE=あり、FALSE=なし。 - 천장 환 기 (리탄있어 · 없음) TRUE = 있고 FALSE = 없음. - - - - BoundaryAreaHeatLoss - Heat loss per unit area for the boundary object. This is a design input value for use in the absence of calculated load data. - - - - - - - Boundary Area Heat Loss - 周辺関連設備の熱ロス - 주변 관련 설비의 열 손실 - - - - 単位面積ありた周辺関連設備の熱ロス。空調負荷計算値以外の設計設定値。 - 단위 면적이 주변 관련 설비의 열 손실. 공조 부하 계산 이외의 디자인 설정. - - - - - - 室内或いはゾーンの空調設計要求。履歴:IFC1.0の新PropertySet(Pset_SpaceHvacInformation)、:IFC2x2にPset_SpaceThermalDesignと再定義された。 - - - - - Pset_SpaceThermalLoad - The space thermal load defines all thermal losses and gains occurring within a space or zone. The thermal load source attribute defines an enumeration of possible sources of the thermal load. The maximum, minimum, time series and app - - - IfcSpace - - IfcSpace - - - People - Heat gains and losses from people. - - - - - - - People - 人員 - 인원 - - - - 人員からの熱取得。 - 사람의 열 - - - - Lighting - Lighting loads. - - - - - - - Lighting - 照明 - 조명 - - - - 照明負荷。 - 조명 부하 - - - - EquipmentSensible - Heat gains and losses from equipment. - - - - - - - Equipment Sensible - 事務機器の顕熱 - 사무기기의 현열 - - - - 事務機器からの熱取得と熱ロス。 - 사무기기에서 열 취득 및 손실 - - - - VentilationIndoorAir - Ventilation loads from indoor air. - - - - - - - Ventilation Indoor Air - 室内の換気量 - 실내 환기량 - - - - 室内の換気による熱負荷。 - 실내 환기에 의한 열 부하 - - - - VentilationOutdoorAir - Ventilation loads from outdoor air. - - - - - - - Ventilation Outdoor Air - 外気量 - 외기량 - - - - 外気による熱負荷。 - 외기에한 열부하 - - - - RecirculatedAir - Loads from recirculated air. - - - - - - - Recirculated Air - 循環空気 - 순환공기 - - - - 循環空気による熱負荷。 - 순환공기에 의한 열부하 - - - - ExhaustAir - Loads from exhaust air. - - - - - - - Exhaust Air - 排気 - 배기 - - - - 排気による熱負荷。 - 배기에 의한 열부하 - - - - AirExchangeRate - Loads from the air exchange rate. - - - - - - - Air Exchange Rate - 換気回数 - 환기회수 - - - - 換気による熱負荷。 - 환기에 의한 열부하 - - - - DryBulbTemperature - Loads from the dry bulb temperature. - - - - - - - Dry Bulb Temperature - 乾球温度 - 건구온도 - - - - 乾球温度による熱負荷。 - 건구온도에의한 열부하 - - - - RelativeHumidity - Loads from the relative humidity. - - - - - - - Relative Humidity - 相対湿度 - 상대습도 - - - - 相対湿度による熱負荷。 - 상대습도에 의한 열부하 - - - - InfiltrationSensible - Heat gains and losses from infiltration. - - - - - - - Infiltration Sensible - すき間風の顕熱 - 열취득 및 손실 - - - - すき間風からの熱負荷と熱ロス。 - 열 부하및 열손실 - - - - TotalSensibleLoad - Total energy added or removed from air that affects its temperature. If a value is less than zero (negative), then the thermal load is lost from the space. If a value is greater than zero (positive), then the thermal load is a gain to the space. - - - - - - - Total Sensible Load - 顕熱負荷の合計 - 현열부하의 합계 - - - - 空気温度を上昇・下降させる取得・損失の熱量の合計。ゼロより小さい(-)場合、室内が熱損失となる。ゼロより大きい(+)場合、室内が熱取得となる。 - 공기 온도를 상승 · 하강하는 취득 · 손실 열량의 총. 제로보다 작은 (-) 경우 실내가 열 손실이된다. 제로보다 큰 (+) 경우 실내가 열을 검색된다. - - - - TotalLatentLoad - Total energy added or removed from air that affects its humidity or concentration of water vapor. If a value is less than zero (negative), then the thermal load is lost from the space. If a value is greater than zero (positive), then the thermal load is a gain to the space. - - - - - - - Total Latent Load - 潜熱負荷の合計 - 잠열부하의 합계 - - - - 空気湿度(水蒸気量)を上昇・下降させる取得・損失の熱量の合計。ゼロより小さい(-)場合、室内の水蒸気が減少となる。ゼロより大きい(+)場合、室内の水蒸気が増大となる。 - 습도 (수증기량)을 상승 · 하강하는 취득 · 손실 열량의 총. 제로보다 작은 (-) 경우 실내의 수증기가 감소된다. 제로보다 큰 (+) 경우 실내의 수증기가 증가된다. - - - - TotalRadiantLoad - Total electromagnetic energy added or removed by emission or absorption. If a value is less than zero (negative), then the thermal load is lost from the space. If a value is greater than zero (positive), then the thermal load is a gain to the space. - - - - - - - Total Radiant Load - 放射熱負荷の合計 - 복사열로드 합계 - - - - 放射や吸収による放射エネルギーの増加、或いは減少の合計。ゼロより小さい(-)場合、放射エネルギーが減少となる。ゼロより大きい(+)場合、放射エネルギーが増大となる。 - 방사선 및 흡수에 의한 방사 에너지 증가 또는 감소의 총. 제로보다 작은 (-) 경우 방사 에너지가 감소된다. 제로보다 큰 (+) 경우 방사 에너지가 증대된다. - - - - - - 室内熱負荷は居室或いはゾーンの全ての熱ロスと熱取得を定義する。熱取得の要因属性は熱負荷の各因子を示している。最大値、最小値、時間変動など。 - - - - - Pset_SpaceThermalLoadPHistory - The space thermal load IfcSpaceThermalLoadProperties defines actual measured thermal losses and gains occurring within a space or zone. The thermal load source attribute defines an enumeration of possible sources of the thermal load. - - - IfcSpace - - IfcSpace - - - People - Heat gains and losses from people. - - - - - People - 人員 - 인원 - - - - 人員からの熱取得。 - 사람의 열 - - - - Lighting - Lighting loads. - - - - - Lighting - 照明 - 조명 - - - - 照明負荷。 - 조명 부하 - - - - EquipmentSensible - Heat gains and losses from equipment. - - - - - Equipment Sensible - 事務機器の顕熱 - 사무기기의 현열 - - - - 事務機器からの熱取得と熱ロス。 - 사무기기에서 열 취득 및 손실 - - - - VentilationIndoorAir - Ventilation loads from indoor air. - - - - - Ventilation Indoor Air - 室内の換気量 - 실내 환기량 - - - - 室内の換気による熱負荷。 - 실내 환기에 의한 열 부하 - - - - VentilationOutdoorAir - Ventilation loads from outdoor air. - - - - - Ventilation Outdoor Air - 外気量 - 외기량 - - - - 外気による熱負荷。 - 외기에한 열부하 - - - - RecirculatedAir - Loads from recirculated air. - - - - - Recirculated Air - 循環空気 - 순환공기 - - - - 循環空気による熱負荷。 - 순환공기에 의한 열부하 - - - - ExhaustAir - Loads from exhaust air. - - - - - Exhaust Air - 排気 - 배기 - - - - 排気による熱負荷。 - 배기에 의한 열부하 - - - - AirExchangeRate - Loads from the air exchange rate. - - - - - Air Exchange Rate - 換気回数 - 환기회수 - - - - 換気による熱負荷。 - 환기에 의한 열부하 - - - - DryBulbTemperature - Loads from the dry bulb temperature. - - - - - Dry Bulb Temperature - 乾球温度 - 건구온도 - - - - 乾球温度による熱負荷。 - 건구온도에의한 열부하 - - - - RelativeHumidity - Loads from the relative humidity. - - - - - Relative Humidity - 相対湿度 - 상대습도 - - - - 相対湿度による熱負荷。 - 상대습도에 의한 열부하 - - - - InfiltrationSensible - Heat gains and losses from infiltration. - - - - - Infiltration Sensible - すき間風の顕熱 - 열취득 및 손실 - - - - すき間風からの熱負荷と熱ロス。 - 열 부하및 열손실 - - - - TotalSensibleLoad - Total energy added or removed from air that affects its temperature. If a value is less than zero (negative), then the thermal load is lost from the space. If a value is greater than zero (positive), then the thermal load is a gain to the space. - - - - - Total Sensible Load - 顕熱負荷の合計 - 현열부하의 합계 - - - - 空気温度を上昇・下降させる取得・損失の熱量の合計。ゼロより小さい(-)場合、室内が熱損失となる。ゼロより大きい(+)場合、室内が熱取得となる。 - 공기 온도를 상승 · 하강하는 취득 · 손실 열량의 총. 제로보다 작은 (-) 경우 실내가 열 손실이된다. 제로보다 큰 (+) 경우 실내가 열을 검색된다. - - - - TotalLatentLoad - Total energy added or removed from air that affects its humidity or concentration of water vapor. If a value is less than zero (negative), then the thermal load is lost from the space. If a value is greater than zero (positive), then the thermal load is a gain to the space. - - - - - Total Latent Load - 潜熱負荷の合計 - 잠열부하의 합계 - - - - 空気湿度(水蒸気量)を上昇・下降させる取得・損失の熱量の合計。ゼロより小さい(-)場合、室内の水蒸気が減少となる。ゼロより大きい(+)場合、室内の水蒸気が増大となる。 - 습도 (수증기량)을 상승 · 하강하는 취득 · 손실 열량의 총. 제로보다 작은 (-) 경우 실내의 수증기가 감소된다. 제로보다 큰 (+) 경우 실내의 수증기가 증가된다. - - - - TotalRadiantLoad - Total electromagnetic energy added or removed by emission or absorption. If a value is less than zero (negative), then the thermal load is lost from the space. If a value is greater than zero (positive), then the thermal load is a gain to the space. - - - - - Total Radiant Load - 放射熱負荷の合計 - 복사열로드 합계 - - - - 放射や吸収による放射エネルギーの増加、或いは減少の合計。ゼロより小さい(-)場合、放射エネルギーが減少となる。ゼロより大きい(+)場合、放射エネルギーが増大となる。 - 방사선 및 흡수에 의한 방사 에너지 증가 또는 감소의 총. 제로보다 작은 (-) 경우 방사 에너지가 감소된다. 제로보다 큰 (+) 경우 방사 에너지가 증대된다. - - - - - - 室内熱負荷属性IfcSpaceThermalLoadProperties はある居室或いはゾーンの実際の熱ロスと熱取得を定義する。熱取得の要因属性は熱負荷の各因子を示している。 - - - - - Pset_SpaceThermalPHistory - Thermal and air flow conditions of a space or zone. HISTORY: New property set in IFC 2x2. - - - IfcSpace - - IfcSpace - - - CoolingAirFlowRate - Cooling air flow rate in the space. - - - - - Cooling Air Flow Rate - 冷却空気流量 - - - - 室内の冷却空気流量 - - - - HeatingAirFlowRate - Heating air flow rate in the space. - - - - - Heating Air Flow Rate - 暖房空気流量 - - - - 室内の暖房空気流量 - - - - VentilationAirFlowRate - Ventilation air flow rate in the space. - - - - - Ventilation Air Flow Rate - 換気気流速度 - - - - 室内の換気空気流量 - - - - ExhaustAirFlowRate - Exhaust air flow rate in the space. - - - - - Exhaust Air Flow Rate - 排気空気流量 - - - - 室内の排気流量 - - - - SpaceTemperature - Temperature of the space. - - - - - Space Temperature - 室内温度 - - - - 室内の温度 - - - - SpaceRelativeHumidity - The relative humidity of the space. - - - - - Space Relative Humidity - 室内相対湿度 - - - - 室内の相対湿度 - - - - - - スペースまたはゾーンの熱空気流条件   履歴:IFC2x2で設定された新しいプロパティ - - - - - Pset_SpaceThermalRequirements - Properties related to the comfort requirements for thermal and other thermal related performance properties of spaces that apply to the occurrences of IfcSpace, IfcSpatialZone or IfcZone. It can also be used to capture requirements for IfcSpaceType's. This includes the required design temperature, humidity, ventilation, and air conditioning. - - - IfcSpace - IfcSpatialZone - IfcZone - - IfcSpace, IfcSpatialZone, IfcZone - - - SpaceTemperature - Temperature of the space or zone, that is required from user/designer view point. If no summer or winter space temperature requirements are given, it applies all year, otherwise for the intermediate period. Provide this value, if no temperatur range (Min-Max) is available. - - - - - - - Raumtemperatur - Space Temperature - Température - 最高室内温度 - - - Geforderte Raumtemperatur, die nicht überschritten werden darf, gilt als ganzjährige Anforderung unabhängig vom Heizungs-, oder Kühlungsfall. Diese wird angegeben, wenn kein geforderter Temperaturbereich (Min - Max) vorhanden ist. - - Température de l'espace ou de la zone spécifiée par l'usager ou le concepteur. Si les valeurs pour l'été et l'hiver ne sont pas connues, cette température s'applique toute l'année, sinon seulement en demi-saison. A fournir si les valeurs maximale et minimale ne sont pas connues. - 空間またはゾーンの温度。利用者/設計者の視点から要求される。もし夏季または冬季の室内温度要求が与えられないと、それは通年に、さもなければ中間季に適用される。 - - - - SpaceTemperatureMax - Maximal temperature of the space or zone, that is required from user/designer view point. If no summer or winter space temperature requirements are given, it applies all year, otherwise for the intermediate period. - - - - - - - Raumtemperatur Maximal - Space Temperature Max - Température maximale - 最高室内温度 - 최고 온도 - - - Maximale geforderte Raumtemperatur, die nicht überschritten werden darf, gilt als ganzjährige Anforderung unabhängig vom Heizungs-, oder Kühlungsfall. - - Température maximale de l'espace ou de la zone spécifiée par l'usager ou le concepteur. Si les valeurs pour l'été et l'hiver ne sont pas connues, cette température s'applique toute l'année, sinon seulement en demi-saison. - 空間またはゾーンの最高温度。利用者/設計者の視点から要求される。もし夏季または冬季の室内温度要求が与えられないと、それは通年に、さもなければ中間季に適用される。 - 공간 또는 영역의 최고 온도. 이용자 / 설계자의 관점에서 요구된다. 만약 여름철 또는 겨울철 실내 온도 요구가 주어지지 않는, 그것은 연중에, 그렇지 않으면 중간 분기별로 적용된다. - - - - SpaceTemperatureMin - Minimal temperature of the space or zone, that is required from user/designer view point. If no summer or winter space temperature requirements are given, it applies all year, otherwise for the intermediate period. - - - - - - - Raumtemperatur Minimal - Space Temperature Min - Température minimale - 最低室内温度 - 최저온도 - - - Minimale geforderte Raumtemperatur, die nicht unterschritten werden darf, gilt als ganzjährige Anforderung unabhängig vom Heizungs-, oder Kühlungsfall. - - Température minimale de l'espace ou de la zone spécifiée par l'usager ou le concepteur. Si les valeurs pour l'été et l'hiver ne sont pas connues, cette température s'applique toute l'année, sinon seulement en demi-saison. - 空間またはゾーンの最低温度。利用者/設計者の視点から要求される。もし夏季または冬季の室内温度要求が与えられないと、それは通年に、さもなければ中間季に適用される。 - 공간 또는 영역의 최저 온도 이용자 / 설계자의 관점에서 요구된다. 만약 여름철 또는 겨울철 실내 온도 요구가 주어지지 않는, 그것은 연중에, 그렇지 않으면 중간 분기별로 적용된다. - - - - SpaceTemperatureSummerMax - Maximal temperature of the space or zone for the hot (summer) period, that is required from user/designer view point and provided as requirement for cooling. - - - - - - - Raumtemperatur Kühlung Maximal - Space Temperature Summer Max - Température maximale en été - 夏季最高室内温度 - 여름최고온도 - - - Maximal geforderte Raumtemperatur aus dem Raumprogramm für die Auslegung der Raumkühlung. - - Température maximale de l'espace ou de la zone en été. Spécifiée par l'usager ou le concepteur et utilisée comme consigne pour le refroidissement. - 空間またはゾーンの暑熱季(夏季)の最高温度。利用者/設計者の視点から要求される。 - 공간이나 영역 혹서 계절 (여름)의 최고 온도 이용자 / 설계자의 관점에서 요구된다. - - - - SpaceTemperatureSummerMin - Minimal temperature of the space or zone for the hot (summer) period, that is required from user/designer view point and provided as requirement for cooling. - - - - - - - Raumtemperatur Kühlung Minimal - Space Temperature Summer Min - Température minimale en été - 夏季最低室内温度 - 여름최저온도 - - - Minimal geforderte Raumtemperatur aus dem Raumprogramm für die Auslegung der Raumkühlung. - - Température minimale de l'espace ou de la zone en été. Spécifiée par l'usager ou le concepteur et utilisée comme consigne pour le refroidissement. - 空間またはゾーンの暑熱季(夏季)の最低温度。利用者/設計者の視点から要求される。 - 공간이나 영역 혹서 계절 (여름)의 최저 온도. 이용자 / 설계자의 관점에서 요구된다. - - - - SpaceTemperatureWinterMax - Maximal temperature of the space or zone for the cold (winter) period, that is required from user/designer view point and provided as requirement for heating. - - - - - - - Raumtemperatur Heizung Maximal - Space Temperature Winter Max - Température maximale en hiver - 冬季最高室内温度 - 겨울최고온도 - - - Maximal geforderte Raumtemperatur für die Auslegung der Raumheizung. - - Température maximale de l'espace ou de la zone en hiver. Spécifiée par l'usager ou le concepteur et utilisée comme consigne pour le chauffage. - 空間またはゾーンの寒冷季(冬季)の最高温度。利用者/設計者の視点から要求される。 - 공간이나 영역 추운 계절 (겨울) 최고 온도 이용자 / 설계자의 관점에서 요구된다. - - - - SpaceTemperatureWinterMin - Minimal temperature of the space or zone for the cold (winter) period, that is required from user/designer view point and provided as requirement for heating. - - - - - - - Raumtemperatur Heizung Minimal - Space Temperature Winter Min - Température minimale en hiver - 冬季最低室内温度 - 겨울철 최저온도 - - - Minimal geforderte Raumtemperatur für die Auslegung der Raumheizung. - - Température minimale de l'espace ou de la zone en hiver. Spécifiée par l'usager ou le concepteur et utilisée comme consigne pour le chauffage. - 空間またはゾーンの寒冷季(冬季)の最低温度。利用者/設計者の視点から要求される。 - 공간이나 영역 추운 계절 (겨울)의 최저 온도. 이용자 / 설계자의 관점에서 요구된다. - - - - SpaceHumidity - Humidity of the space or zone that is required from user/designer view point. If no summer or winter space humidity requirements are given, it applies all year, otherwise for the intermediate period. Provide this property, if no humidity range (Min-Max) is available. - - - - - - - Luftfeuchtigkeit - Space Humidity - Humidité relative - 室内湿度 - - - Geforderte Luftfeuchtigkeit für diesen Raum, gilt als ganzjährige Anforderung unabhängig vom Heizungs-, oder Kühlungsfall. Es wird angegeben, wenn kein geforderter Luftfeuchtigkeitsbereich (Min - Max) vorhanden ist. - - Humidité relative de l'espace ou de la zone spécifiée par l'usager ou le concepteur. Si les valeurs pour l'été et l'hiver ne sont pas connues, cette température s'applique toute l'année, sinon seulement en demi-saison. A fournir si les valeurs maximale et minimale ne sont pas connues. - 空間またはゾーンの湿度。利用者/設計者の視点から要求される。もし夏季または冬季の室内湿度要求が与えられないと、それは通年に、さもなければ中間季に適用される。 - - - - SpaceHumidityMax - Maximal permitted humidity of the space or zone that is required from user/designer view point. If no summer or winter space humidity requirements are given, it applies all year, otherwise for the intermediate period. - - - - - - - Luftfeuchtigkeit Maximal - Space Humidity Max - Humidité relative maximale - 最高室内湿度 - 실내습도 - - - Maximal geforderte Luftfeuchtigkeit für diesen Raum, gilt als ganzjährige Anforderung unabhängig vom Heizungs-, oder Kühlungsfall. - - Humidité relative maximale de l'espace ou de la zone spécifiée par l'usager ou le concepteur. Si les valeurs pour l'été et l'hiver ne sont pas connues, cette température s'applique toute l'année, sinon seulement en demi-saison. - 空間またはゾーンの最高湿度。利用者/設計者の視点から要求される。もし夏季または冬季の室内湿度要求が与えられないと、それは通年に、さもなければ中間季に適用される。 - 공간 또는 영역의 습도. 이용자 / 설계자의 관점에서 요구된다. 만약 여름철 또는 겨울철 실내 습도 요구가 주어지지 않는, 그것은 연중에, 그렇지 않으면 중간 분기별로 적용된다. - - - - SpaceHumidityMin - Minimal permitted humidity of the space or zone that is required from user/designer view point. If no summer or winter space humidity requirements are given, it applies all year, otherwise for the intermediate period. - - - - - - - Luftfeuchtigkeit Minimal - Space Humidity Min - Humidité relative minimale - 最低室内湿度 - - - Minimal geforderte Luftfeuchtigkeit für diesen Raum, gilt als ganzjährige Anforderung unabhängig vom Heizungs-, oder Kühlungsfall. - - Humidité relative minimale de l'espace ou de la zone spécifiée par l'usager ou le concepteur. Si les valeurs pour l'été et l'hiver ne sont pas connues, cette température s'applique toute l'année, sinon seulement en demi-saison. - 空間またはゾーンの最低湿度。利用者/設計者の視点から要求される。もし夏季または冬季の室内湿度要求が与えられないと、それは通年に、さもなければ中間季に適用される。 - - - - SpaceHumiditySummer - Humidity of the space or zone for the hot (summer) period, that is required from user/designer view point and provided as requirement for cooling. - - - - - - - Luftfeuchtigkeit Kühlung - Space Humidity Summer - Humidité relative maximale en été - 夏季室内湿度 - 여름철실내 습도 - - - Geforderte Luftfeuchtigkeit für diesen Raum für die Auslegung der Kühlung. - - Humidité relative maximale de l'espace ou de la zone en été. Spécifiée par l'usager ou le concepteur et utilisée comme consigne pour le refroidissement. - 空間またはゾーンの暑熱季(夏季)の室内湿度。利用者/設計者の視点から要求される。 - 공간이나 영역 혹서 계절 (여름) 실내 습도. 이용자 / 설계자의 관점에서 요구된다. - - - - SpaceHumidityWinter - Humidity of the space or zone for the cold (winter) period that is required from user/designer view point and provided as requirement for heating. - - - - - - - Luftfeuchtigkeit Heizung - Space Humidity Winter - Humidité relative minimale en été - 冬季室内湿度 - 겨울철실내 습도 - - - Geforderte Luftfeuchtigkeit für diesen Raum für die Auslegung der Heizung. - - Humidité relative minimale de l'espace ou de la zone en été. Spécifiée par l'usager ou le concepteur et utilisée comme consigne pour le refroidissement. - 空間またはゾーンの寒冷季(冬季)の室内湿度。利用者/設計者の視点から要求される。 - 공간이나 영역 추운 계절 (동절기) 실내 습도. 이용자 / 설계자의 관점에서 요구된다. - - - - DiscontinuedHeating - Indication whether discontinued heating is required/desirable from user/designer view point. (TRUE) if yes, (FALSE) otherwise. - - - - - - - Diskontinuierliche Heizung - Discontinued Heating - Chauffage intermittent - 不連続暖房 - 불연속 난방 - - - Anfoderung, ob der Raum durch eine diskontinuierliche Heizung versorgt werden soll (WAHR) oder nicht (FALSCH). - - Indique si un chauffage intermittent est requis ou souhaité par l'usager ou le concepteur (VRAI) ou non (FAUX). - 不連続暖房が利用者/設計者の視点から要求/要望されるかどうかを示すブーリアン値。(TRUE)要、(FALSE)不要。 - 불연속 난방이 이용자 / 설계자의 관점에서 요청 / 요구되는지 여부를 나타내는 부울 값입니다. (TRUE) 필요 (FALSE) 불필요. - - - - NaturalVentilation - Indication whether the space is required to have natural ventilation (TRUE) or mechanical ventilation (FALSE). - - - - - - - Natürliche Lüftung - Natural Ventilation - Ventilation naturelle - 自然換気 - 자연환기 - - - Anforderung, ob der Raum eine natürliche Lüftung haben soll (WAHR), oder eine künstliche Lüftung (Falsch). - - Indique si la ventilation de l'espace doit être naturelle (VRAI) ou mécanique (FAUX). - 空間が自然換気を持つか機械換気を持つかを示すブーリアン値。(TRUE)有、(FALSE)なし。 - 공간이 자연 환기가 있는지 환기있는 여부를 나타내는 값 - - - - NaturalVentilationRate - Indication of the requirement of a particular natural air ventilation rate, given in air changes per hour. - - - - - - - Natürliche Luftwechselzahl - Natural Ventilation Rate - Taux ventilation naturelle - 自然換気率 - 자연환기 비율 - - - Geforderte Luftwechselzahl (in Wechsel per Stunde) im Fall der natürlichen Lüftung. - - Taux de ventilation naturelle exprimé en volumes par heure. - 特定の自然換気率の要求指標。1時間あたりの換気回数で与えられる。 - 특정 자연 환기 율의 요구 지표. 시간 당 환기 회수로 주어진다. - - - - MechanicalVentilationRate - Indication of the requirement of a particular mechanical air ventilation rate, given in air changes per hour. - - - - - - - Künstliche Luftwechselzahl - Mechanical Ventilation Rate - Taux ventilation mécanique - 機械換気率 - 기계환기 비율 - - - Geforderte Luftwechselzahl (in Wechsel per Stunde) im Fall der künstlichen Lüftung. - - Spécification du taux de ventilation mécanique exprimé en volumes par heure. - 特定の機械換気率の要求指標。1時間あたりの換気回数で与えられる。 - 특정 기계 환기 비율 요구 지표. 시간 당 환기 회수로 주어진다. - - - - AirConditioning - Indication whether this space requires air conditioning provided (TRUE) or not (FALSE). - - - - - - - Klimaanlage - Air Conditioning - Conditionnement d'air - 空調 - 공조 - - - Anforderung, ob der Raum mit einer Klimaanlage ausgestattet werden soll (WAHR), oder nicht (Falsch). - - Indique si l'espace requiert un conditionnement d'air (VRAI) ou non (FAUX). - この空間が空調を要求するかどうかを示すブーリアン値。(TRUE)要、(FALSE)不要。 - 이 공간이 공조를 요청할지 여부를 나타내는 부울 값입니다. (TRUE) 필요 (FALSE) 불필요. - - - - AirConditioningCentral - Indication whether the space requires a central air conditioning provided (TRUE) or not (FALSE). -It should only be given, if the property "AirConditioning" is set to TRUE. - - - - - - - Klimaanlage zentral - Air Conditioning Central - Conditionnement d'air centralisé - 中央式空調 - 중앙식 에어컨 - - - Anforderung, ob die Klimaanlage zentral gesteuert werden soll (WAHR), oder nicht (FALSCH). Soll nur angegeben werden, wenn die Eigenschaft "Klimaanlage" mit WAHR gegeben ist. - - Indique si l'espace requiert un conditionnement d'air centralisé (VRAI) ou non (FAUX). A fournir si la propriété "Conditionnement d'air" est VRAI. - 空間が中央式空調を要求するかどうかを示すブーリアン値。「空調」プロパティがTRUEに設定された場合のみ、与えられる。 - 공간이 중앙 식 공조를 요청할지 여부를 나타내는 부울 값입니다. "공조"속성이 TRUE로 설정된 경우에만 주어진다. - - - - - Property Set Definition in German - - 室の快適な温熱環境に関連する要求性能。IfcSpace, IfcZoneに適用される。 -温度、湿度、空調についての設計上の設定を含む。 - - - - - Pset_SpatialZoneCommon - - - - - Reference - - - - - - - - - - IsExternal - Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external zone at the outside of the building. - - - - - - - - - - - - - - Pset_StackTerminalTypeCommon - Common properties for stack terminals. - - - IfcStackTerminal - - IfcStackTerminal - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照記号 - - - - この規格(例、A-1)で特定のタイプの参照IDが割り当てられ、等級がなければ等級システムを使って割り当てられます。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - - - 排気筒への接続口の共通プロパティー。 - - - - - Pset_StairCommon - Properties common to the definition of all occurrences of IfcStair. - - - IfcStair - - IfcStair - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as "construction type". It should be provided as an alternative to the name of the "object type", if the software does not support object types. - - - - - - - Bauteiltyp - Reference - Reference - 参照記号 - 参考号 - - - Bezeichnung zur Zusammenfassung gleichartiger Bauteile zu einem Bauteiltyp (auch Konstruktionstyp genannt). Alternativ zum Namen des "Typobjekts", insbesondere wenn die Software keine Typen unterstützt. - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1") pour désigner un "type de construction". Une alternative au nom d'un objet type lorsque les objets types ne sont pas gérés par le logiciel. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 若未采用已知的分类系统,则该属性为该项目中该类型构件的参考编号(例如,类型A-1)。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Status - Statut - 状態 - - - Status bzw. Phase des Bauteils insbesondere beim Bauen im Bestand. "Neu" (new) neues Bauteil als Ergänzung, "Bestand" (existing) bestehendes Bauteil, dass erhalten bleibt, "Abbruch" (demolish) Bauteil, das abgebrochen wird, "Temporär" (temporary) Bauteil und andere Bauelemente, die vorübergehend eingebaut werden (wie Abstützungen, etc.) - - Statut de l'élément, principalement utilisé dans les projets de rénovation et de réhabilitation. Le statut a pour valeur NOUVEAU pour un nouvel élément, EXISTANT pour un élément existant qui est conservé, DEMOLI pour un élément existant à démolir et TEMPORAIRE pour un élément temporaire (comme une structure support provisoire). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - NumberOfRiser - Total number of the risers included in the stair. - - - - - - - Anzahl der Steigungen - Number Of Riser - NombreContreMarches - 蹴上げ数 - 踢板数 - - - German-description-2 - - Nombre total de contremarches de l'escalier - 階段の蹴上げ数。 - 该楼梯所包含的踢板总数。 - - - - NumberOfTreads - Total number of treads included in the stair. - - - - - - - Anzahl der Auftritte - Number Of Treads - NombreGirons - 踏面数 - 踏板数 - - - German-description-3 - - Nombre total de girons de l'escalier - 階段の踏面数。 - 该楼梯所包含的踏板总数。 - - - - RiserHeight - Vertical distance from tread to tread. -The riser height is supposed to be equal for all steps of a stair or stair flight. - - - - - - - Steigung - Riser Height - HauteurContreMarche - 蹴上げ高さ - 踢板高度 - - - German-description-4 - - Hauteur de la contremarche, supposée homogène pour toutes les marches de l'escalier ou de la volée de marches. - 踏面と踏面の垂直方向の距離。この蹴上げ高さ値は、一連の階段において同じ値と仮定する。 - 踏板之间的垂直高度。 -楼梯或梯段所有梯级的踢板高度应当一致。 - - - - TreadLength - Horizontal distance from the front of the thread to the front of the next tread. -The tread length is supposed to be equal for all steps of the stair or stair flight at the walking line. - - - - - - - Auftritt - Tread Length - LongueurGiron - 踏面長 - 踏板长度 - - - German-description-5 - - Longueur de giron (largeur de marche), supposée égale pour toutes les marches de l'escalier ou de la volée de marchesle long de la ligne de foulée - 踏面の前面部分から次の踏面までの水平方向の距離。この踏面長の値は、一連の階段において同じ値と仮定する。 - 踏板前缘到下一级踏板前缘的水平距离。 -走线方向上楼梯或梯段所有梯级的踏板宽度应当一致。 - - - - NosingLength - Horizontal distance from the front of the tread to the riser underneath. It is the overhang of the tread. - - - - - - - Überstand - Nosing Length - Hauteur de passage requise - - - - - Hauteur de passage (échappée) requise selon le Code en vigueur ou des spécifications additionnelles. - - - - WalkingLineOffset - Offset of the walking line from the inner side of the flight. -Note: the walking line may have a own shape representation (in case of inconsistencies, the value derived from the shape representation shall take precedence). - - - - - - - Abstand der Lauflinie - Walking Line Offset - - - - - - - - TreadLengthAtOffset - Length of treads at a given offset. -Walking line position is given by the 'WalkingLineOffset'. The resulting value should normally be identical with TreadLength, it may be given in addition, if the walking line offset for building code calculations is different from that used in design. - - - - - - - Auftritt an der Lauflinie - Tread Length At Offset - - - - - - - - TreadLengthAtInnerSide - Minimum length of treads at the inner side of the winder. -Only relevant in case of winding flights, for straight flights it is identical with IfcStairFlight.TreadLength. It is a pre-calculated value, in case of inconsistencies, the value derived from the shape representation shall take precedence. - - - - - - - minimaler Auftritt an der Innenseite - Tread Length At Inner Side - - - - - - - - WaistThickness - Minimum thickness of the stair flight, measured perpendicular to the slope of the flight to the inner corner of riser and tread. It is a pre-calculated value, in case of inconsistencies, the value derived from the shape representation shall take precedence. - - - - - - - minimale Dicke des Treppenplatte - Waist Thickness - - - - - - - - RequiredHeadroom - Required headroom clearance for the passageway according to the applicable building code or additional requirements. - - - - - - - erforderliche Durchgangshöhe - Required Headroom - HauteurPassageRequise - 要求頭高余裕 - 所需净空 - - - German-description-6 - - Hauteur de passage (échappée) requise selon le Code en vigueur ou des spécifications additionnelles. - 要求される頭高余裕。関連する建築基準法を参照。 - 建筑规范或其他规定要求的通道净空高度。 - - - - HandicapAccessible - Indication that this object is designed to be accessible by the handicapped. -Set to (TRUE) if this stair is rated as handicap accessible according the local building codes, otherwise (FALSE). Accessibility maybe provided by additional means. - - - - - - - Behindertengerecht - Handicap Accessible - AccessibleHandicapes - ハンディキャップアクセス可能性 - 是否为无障碍设施 - - - German-description-7 - - Indique que cet objet est conçu pour être accessible aux handicapés. Indication donnée selon le Code National. - この空間がハンディキャップ者向けの空間かどうかを示すブーリアン値。 - 表示该构件是否设计为可供残疾人使用的无障碍设施。 -该属性的根据为国家建筑规范。 - - - - HasNonSkidSurface - Indication whether the surface finish is designed to prevent slippery (TRUE) or not (FALSE). - - - - - - - Nichtrutschende Oberfläche - Has Non Skid Surface - AntiDerapant - 滑り止め表面加工区分 - 表面是否防滑 - - - German-description-11 - - Indique si le revêtement de surface est anti dérapant (VRAI) ou non (FALSE) - スリップ防止のための表面仕上げをしているかどうかのブーリアン値。 - 表示表面处理是否设计为防滑的。 - - - - IsExternal - Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building. - - - - - - - Außenbauteil - Is External - EstExterieur - 外部区分 - 是否外部构件 - - - Angabe, ob dieses Bauteil ein Aussenbauteil ist (JA) oder ein Innenbauteil (NEIN). Als Aussenbauteil grenzt es an den Aussenraum (oder Erdreich, oder Wasser). - - Indique si l'élément est conçu pour être utilisé à l'extérieur (VRAI) ou non (FAUX). Si VRAI, c'est un élément extérieur qui donne sur l'extérieur du bâtiment. - 外部の部材かどうかを示すブーリアン値。もしTRUEの場合、外部の部材で建物の外側に面している。 - 表示该构件是否设计为外部构件。若是,则该构件为外部构件,朝向建筑物的外侧。 - - - - ThermalTransmittance - - - - - - - - - - LoadBearing - - - - - - - - - - FireRating - Fire rating for this object. -It is given according to the national fire safety classification. - - - - - - - Feuerwiderstandsklasse - Fire Rating - ResistanceAuFeu - 耐火等級 - 防火等级 - - - Feuerwiderstandasklasse gemäß der nationalen oder regionalen Brandschutzverordnung. - - Classement au feu de l'élément donné selon la classification nationale de sécurité incendie. - 主要な耐火等級。関連する建築基準法、消防法などの国家基準を参照。 - 该构件的防火等级。 -该属性的依据为国家防火安全分级。 - - - - FireExit - Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE). -Here it defines an exit stair in accordance to the national building code. - - - - - - - Fluchttreppe - Fire Exit - Sortie Secours - 非常口区分 - 是否为紧急出口 - - - Angabe, ob die Tür ein Notausgang oder Fluchttür gemäß der nationalen oder regionalen Brandschutzverordnung ist (JA), oder nicht (NEIN). - Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE). Here it defines an exit stair in accordance to the national building code. - Indique si cet objet est conçu pour servir de sortie en cas d'incendie (VRAI) ou non (FAUX). Définition de la sortie de secours selon le Code National. - このオブジェクトが火災時の非常口として設計されているかどうかを示すブーリアン値。ここでは関連する建築基準法における出口ドアとして定義している。 - 表示该构件是否设计为火灾时的紧急出口。 -该属性的依据为国家建筑规范。 - - - - - - Définition de l'IAI : propriétés communes à la définition de toutes les instances de la classe IfcStair - IfcStair(階段)オブジェクトに関する共通プロパティセット定義。 - 所有IfcStair实例的定义中通用的属性。 - - - - - Pset_StairFlightCommon - Properties common to the definition of all occurrences of IfcStairFlight. - - - IfcStairFlight - - IfcStairFlight - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as "construction type". It should be provided as an alternative to the name of the "object type", if the software does not support object types. - - - - - - - Bauteiltyp - Reference - Reference - 参照記号 - 参考号 - - - Bezeichnung zur Zusammenfassung gleichartiger Bauteile zu einem Bauteiltyp (auch Konstruktionstyp genannt). Alternativ zum Namen des "Typobjekts", insbesondere wenn die Software keine Typen unterstützt. - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1") pour désigner un "type de construction". Une alternative au nom d'un objet type lorsque les objets types ne sont pas gérés par le logiciel. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 若未采用已知的分类系统,则该属性为该项目中该类型构件的参考编号(例如,类型A-1)。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Status - Statut - 状態 - - - Status bzw. Phase des Bauteils insbesondere beim Bauen im Bestand. "Neu" (new) neues Bauteil als Ergänzung, "Bestand" (existing) bestehendes Bauteil, dass erhalten bleibt, "Abbruch" (demolish) Bauteil, das abgebrochen wird, "Temporär" (temporary) Bauteil und andere Bauelemente, die vorübergehend eingebaut werden (wie Abstützungen, etc.) - - Statut de l'élément, principalement utilisé dans les projets de rénovation et de réhabilitation. Le statut a pour valeur NOUVEAU pour un nouvel élément, EXISTANT pour un élément existant qui est conservé, DEMOLI pour un élément existant à démolir et TEMPORAIRE pour un élément temporaire (comme une structure support provisoire). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - NumberOfRiser - Total number of the risers included in the stair flight. - - - - - - - Anzahl der Steigungen - Number Of Riser - NombreContreMarches - 蹴上げ数 - 踢板数 - - - German-description-2 - - Nombre total de contremarches de l'escalier - 階段の蹴上げ数。 - 该梯段所包含的踢板总数。 - - - - NumberOfTreads - Total number of treads included in the stair flight. - - - - - - - Anzahl der Auftritte - Number Of Treads - NombreGirons - 踏面数 - 踏板数 - - - German-description-3 - - Nombre total de girons de l'escalier - 階段の踏面数。 - 该梯段所包含的踏板总数。 - - - - RiserHeight - Vertical distance from tread to tread. -The riser height is supposed to be equal for all steps of a stair or stair flight. - - - - - - - Steigung - Riser Height - HauteurContreMarche - 蹴上げ高さ - 踢板高度 - - - German-description-4 - - Hauteur de la contremarche, supposée homogène pour toutes les marches de l'escalier ou de la volée de marches. - 踏面と踏面の垂直方向の距離。この蹴上げ高さ値は、一連の階段において同じ値と仮定する。 - 踏板之间的垂直高度。 -楼梯或梯段所有梯级的踢板高度应当一致。 - - - - TreadLength - Horizontal distance from the front of the thread to the front of the next tread. -The tread length is supposed to be equal for all steps of the stair or stair flight at the walking line. - - - - - - - Auftritt - Tread Length - LongueurGiron - 踏面長 - 踏板长度 - - - German-description-5 - - Longueur de giron (largeur de marche), supposée égale pour toutes les marches de l'escalier ou de la volée de marchesle long de la ligne de foulée - 踏面の前面部分から次の踏面までの水平方向の距離。この踏面長の値は、一連の階段において同じ値と仮定する。 - 踏板前缘到下一级踏板前缘的水平距离。 -走线方向上楼梯或梯段所有梯级的踏板宽度应当一致。 - - - - NosingLength - Horizontal distance from the front of the tread to the riser underneath. It is the overhang of the tread. - - - - - - - Überstand - Nosing Length - LongueurNez - 踏板前缘长度 - - - German-description-6 - - Longueur du nez de marche. - 踏板前边沿到下级踢板的水平距离,即踏板悬挑部分的长度。 - - - - WalkingLineOffset - Offset of the walking line from the inner side of the flight. -Note: the walking line may have a own shape representation (in case of inconsistencies, the value derived from the shape representation shall take precedence). - - - - - - - Abstand der Lauflinie - Walking Line Offset - PositionLigneFoulee - 走线偏移 - - - German-description-7 - - Décalage de la ligne de foulée par rapport au côté intérieur de la volée. Nota : la ligne de foulée peut avoir sa propre représentation. En cas d'incohérences, c'est la valeur déduite de la représentation de la forme qui prime. - 走线到梯段内侧的偏移量。 -注:走线可能有单独的形状描述(如果不一致,应以从形状描述得到的值为准)。 - - - - TreadLengthAtOffset - Length of treads at a given offset. -Walking line position is given by the 'WalkingLineOffset'. The resulting value should normally be identical with TreadLength, it may be given in addition, if the walking line offset for building code calculations is different from that used in design. - - - - - - - Auftritt an der Lauflinie - Tread Length At Offset - LongueurGironSurLigneFoulee - 偏移踏板长度 - - - German-description-8 - - Longueur du giron le long de la ligne de foulée. La valeur relativement à cette position doit normalement être identique à la propriété "Longueur du giron" ; elle peut être indiquée si la valeur de la propriété "Décalage de la ligne de foulée" donnée par une règle de calcul est différente de celle utilisée en conception. - 在指定偏移量处踏板的长度。 -走线位置由“走线偏移”指定。该属性一般应与踏板长度一致,但如果根据建筑规范计算得到的走线偏移量和设计中使用的走线偏移量不同时,应使用该属性。 - - - - TreadLengthAtInnerSide - Minimum length of treads at the inner side of the winder. -Only relevant in case of winding flights, for straight flights it is identical with IfcStairFlight.TreadLength. It is a pre-calculated value, in case of inconsistencies, the value derived from the shape representation shall take precedence. - - - - - - - minimaler Auftritt an der Innenseite - Tread Length At Inner Side - LongueurGironCoteInterieur - 内侧踏板长度 - - - German-description-9 - - Longueur minimum des girons du côté intérieur de l'enroulement. Pertinent seulement pour les escaliers tournants car pour une volée droite, la valeur est donnée par la propriété "Longueur du giron". C'est une valeur précalculée. En cas d'incohérence, c'est la valeur dérivée de la représentation de la forme qui prime. - 螺旋楼梯踏板内侧的最小长度。 -该属性仅适用于螺旋楼梯。对直跑楼梯,该属性与IfcStairFlight.TreadLength一致。该属性为预设值,若有冲突,应以从形状描述得到的值为准。 - - - - Headroom - Actual headroom clearance for the passageway according to the current design. -The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. - - - - - - - Durchgangshöhe - Headroom - HauteurPassage - 净空 - - - German-description-10 - - Hauteur de passage (échappée) actuellement projetée. Cette propriété est donnée en complément de la représentation de la forme de l'élément et des paramètres géométriques qui la déterminent. En cas d'incohérence entre ces paramètres géométriques et cette propriété, ce sont les paramètres géométriques qui priment. - 当前设计方案确定的通道实际净空高度。 -该属性所提供的形状信息是对内部形状描述和几何参数的补充。如果几何参数与该属性所提供的形状属性不符,应以几何参数为准。 - - - - WaistThickness - Minimum thickness of the stair flight, measured perpendicular to the slope of the flight to the inner corner of riser and tread. It is a pre-calculated value, in case of inconsistencies, the value derived from the shape representation shall take precedence. - - - - - - - minimale Dicke des Treppenplatte - Waist Thickness - Epaisseur - 腰部厚度 - - - German-description-11 - - Epaisseur minimum de la volée mesurée perpendiculairement à la pente de la volée jusqu'au coin intérieur formé par la marche et la contremarche. C'est une valeur précalculée. En cas d'incohérence, c'est la valeur dérivée de la représentation de la forme qui prime. - 楼梯梯段的最小厚度,即踢板和踏板所成的内角到梯段斜面的垂线长度。该属性为预设值,若有冲突,应以从形状描述得到的值为准。 - - - - - - Définition de l'IAI : propriétés communes à la définition de toutes les instances de la classe IfcStairFlight - IfcStairFlightオブジェクトに関する共通プロパティセット定義。 - 所有IfcStairFlight实例的定义中通用的属性。 - - - - - Pset_StructuralSurfaceMemberVaryingThickness - Thickness parameters of a surface member (structural analysis item) with varying thickness, particularly with linearly varying thickness. The thickness is interpolated/ extrapolated from three points. The locations of these points are given either in local x,y coordinates of the surface member or in global X,Y,Z coordinates. Either way, these points are required to be located within the face or at the bounds of the face of the surface member, and they must not be located on a common line. Local and global coordinates shall not be mixed within the same property set instance. - - - IfcStructuralSurfaceMemberVarying - - IfcStructuralSurfaceMemberVarying - - - Thickness1 - First thickness parameter of a surface member with varying thickness - - - - - - - Thickness1 - - - - - - - Location1Local - Local x,y coordinates of the point in which Thickness1 is given - - - - - - - - - Location1 Local - - - - - - - Location1Global - Global X,Y,Z coordinates of the point in which Thickness1 is given - - - - - - - - - Location1 Global - - - - - - - Thickness2 - Second thickness parameter of a surface member with varying thickness - - - - - - - Thickness2 - - - - - - - Location2Local - Local x,y coordinates of the point in which Thickness2 is given - - - - - - - - - Location2 Local - - - - - - - Location2Global - Global X,Y,Z coordinates of the point in which Thickness2 is given - - - - - - - - - Location2 Global - - - - - - - Thickness3 - Third thickness parameter of a surface member with varying thickness - - - - - - - Thickness3 - - - - - - - Location3Local - Local x,y coordinates of the point in which Thickness3 is given - - - - - - - - - Location3 Local - - - - - - - Location3Global - Global X,Y,Z coordinates of the point in which Thickness3 is given - - - - - - - - - Location3 Global - - - - - - - - - - - - - Pset_SwitchingDeviceTypeCommon - A switching device is a device designed to make or break the current in one or more electric circuits. - - - IfcSwitchingDevice - - IfcSwitchingDevice - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照 - 참조 - - - - このプロジェクト (例. 'A-1' タイプなど)で指定された参照ID。認められた分類体系の分類参照が存在しない場合に適用される。 - 이 프로젝트 (예 : 'A-1'유형 등) 지정된 참조 ID. 인정 분류 체계의 분류 참조가없는 경우에 적용된다. - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - NumberOfGangs - Number of gangs/buttons on this switch. - - - - - - - Number Of Gangs - ボタン数 - 버튼 수 - - - - スイッチのボタン数 - 스위치 버튼 수 - - - - SwitchFunction - Indicates types of switches which differs in functionality. - - - - ONOFFSWITCH - INTERMEDIATESWITCH - DOUBLETHROWSWITCH - OTHER - NOTKNOWN - UNSET - - - - ONOFFSWITCH - - On/off Switch - - - - - - - INTERMEDIATESWITCH - - Intermediate Switch - - - - - - - DOUBLETHROWSWITCH - - Double Throw Switch - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Switch Function - スイッチタイプ - 스위치 유형 - - - - 機能ごとに異なるスイッチのタイプを示す - 기능마다 다른 스위치 타입을 나타낸다. - - - - HasLock - Indication of whether a switching device has a key operated lock (=TRUE) or not (= FALSE). - - - - - - - Has Lock - ロックの可否 - 잠금여부 - - - - スイッチ装置がキー操作でロックする場合は(TRUE)、そうでない場合は(FALSE)を表す。 - 스위치 장치가 키 조작으로 잠글 경우 (TRUE), 그렇지 않은 경우 (FALSE)을 나타낸다. - - - - IsIlluminated - An indication of whether there is an illuminated indicator to show that the switch is on (=TRUE) or not (= FALSE). - - - - - - - Is Illuminated - 自照型 - 스위치 조명표시기 - - - - イルミネーション型(自照型)表示機でスイッチのオン(TRUE)やオフ(FALSE)を示す。 - 일루미 네이션 형 (자조 형) 표시기 스위치를 켜거나 (TRUE) 또는 오프 (FALSE)를 나타낸다. - - - - Legend - A text inscribed or applied to the switch as a legend to indicate purpose or function. - - - - - - - Legend - 凡例 - 범례 - - - - 目的または機能を示す凡例など、スイッチに適用されるテキスト。 - 목적이나 기능을 나타내는 범례와 같은 스위치에 적용되는 텍스트입니다. - - - - SetPoint - Indicates the setpoint and label. For toggle switches, there are two positions, 0 for off and 1 for on. For dimmer switches, the values may indicate the fully-off and full-on positions, where missing integer values in between are interpolated. For selector switches, the range indicates the available positions. -An IfcTable may be attached (using IfcMetric and IfcPropertyConstraintRelationship) containing columns of the specified header names and types: -'Position' (IfcInteger): The discrete setpoint level. -'Sink' (IfcLabel): The Name of the switched input port (IfcDistributionPort with FlowDirection=SINK). -'Source' (IfcLabel): The Name of the switched output port (IfcDistributionPort with FlowDirection=SOURCE). -'Ratio' (IfcNormalizedRatioMeasure): The ratio of power at the setpoint where 0.0 is off and 1.0 is fully on. - - - - - - - - - - - - - Set Point - 設定ポイント - 스위치 포트 싱크 - - - - 設定ポイントと範囲を示す。トグルスイッチは2つのポジションがある:0 は オフ(OFF)、1 は オン(ON)。ディマースイッチは、全閉(fully-off) または 全開(fully-on) の他に、その間で取得可能な値をオプションで示す。選択型スイッチは選択可能なポジションの範囲を示す。 - 입력 포트 이름 (IfcDistributionPort 및 FlowDirection = SINK), Maps SetPoint 위치. 회로가 어떤 경로를 추적할지를 나타낸다. - - - - - - IEC 441-14-01の定義: -切換装置は、1つ以上の電気回路で電流を遮断するように設計された装置です。 - - - - - Pset_SwitchingDeviceTypeContactor - An electrical device used to control the flow of power in a circuit on or off. - - - IfcSwitchingDevice/CONTACTOR - - IfcSwitchingDevice/CONTACTOR - - - ContactorType - A list of the available types of contactor from which that required may be selected where: - -CapacitorSwitching: for switching 3 phase single or multi-step capacitor banks. -LowCurrent: requires the use of low resistance contacts. -MagneticLatching: enables the contactor to remain in the on position when the coil is no longer energized. -MechanicalLatching: requires that the contactor is mechanically retained in the on position. -Modular: are totally enclosed and self contained. -Reversing: has a double set of contactors that are prewired. -Standard: is a generic device that controls the flow of power in a circuit on or off. - - - - CAPACITORSWITCHING - LOWCURRENT - MAGNETICLATCHING - MECHANICALLATCHING - MODULAR - REVERSING - STANDARD - OTHER - NOTKNOWN - UNSET - - - - CAPACITORSWITCHING - - Capacitor Switching - - - - - - - LOWCURRENT - - Low Current - - - - - - - MAGNETICLATCHING - - Magnetic Latching - - - - - - - MECHANICALLATCHING - - Mechanical Latching - - - - - - - MODULAR - - Modular - - - - - - - REVERSING - - Reversing - - - - - - - STANDARD - - Standard - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Contactor Type - 接触器タイプ - 접촉기 유형 - - - - 以下より選択が必要となる、接触器の一覧リスト: - -コンデンサスイッチ:3つのシングルフェーズまたは複数のコンデンサバンクで切り替える。 -低流:低い抵抗接触の使用が必要 -マグネット式:コイルのエネルギーが無くなった時に切替をONポジションにして有効にする -MechanicalLatching:切替器がONポジションを維持するために機械的な仕組みが必要。 -モジュール式:閉鎖されている自働型切替器。 -リバース:2つの切替器をワイヤーで接続したもの。 -標準:回路で電力潮流をオンまたはオフでコントロールする一般的な装置。 - 다음에서 선택이 필요하다, 접촉기 목록 : 콘덴서 스위치 : 3 개의 단일 위상 이상의 커패시터 뱅크를 전환합니다. 낮은여 : 낮은 저항 접촉 사용해야 마그네틱 : 코일의 에너지가 분실된 때 전환을 ON 위치로하여 사용 MechanicalLatching : 판을 ON 위치를 유지하기 위해 기계적인 구조가 필요합니다. 모듈형 : 폐쇄되어있는 자신 동형 판. 리버스 : 두 판을 와이어로 연결한 것. 표준 : 회로에서 전력 조류를 켜지거나 꺼지지 컨트롤하는 일반적인 장치 - - - - - - 電力機器の起動・停止のために、電力回路を開閉する電力機器。 - - - - - Pset_SwitchingDeviceTypeDimmerSwitch - A dimmer switch is a switch that adjusts electrical power through a variable position level action. HISTORY: Added in IFC4. - - - IfcSwitchingDevice/DIMMERSWITCH - - IfcSwitchingDevice/DIMMERSWITCH - - - DimmerType - A list of the available types of dimmer switch from which that required may be selected. - - - - ROCKER - SELECTOR - TWIST - OTHER - NOTKNOWN - UNSET - - - - ROCKER - - Rocker - - - - - - - SELECTOR - - Selector - - - - - - - TWIST - - Twist - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Dimmer Type - ディマータイプ - 조광기 유형 - - - - 選択が必要となる、ディマースイッチの一覧リスト。 - 선택이 필요한 조광기 스위치 목록 - - - - - - 各レベルの動作で電力を調整するディマースイッチ。 -履歴:IFC2x4へ追加。 - - - - - Pset_SwitchingDeviceTypeEmergencyStop - An emergency stop device acts to remove as quickly as possible any danger that may have arisen unexpectedly. - - - IfcSwitchingDevice/EMERGENCYSTOP - - IfcSwitchingDevice/EMERGENCYSTOP - - - SwitchOperation - Indicates operation of emergency stop switch. - - - - MUSHROOM - OTHER - NOTKNOWN - UNSET - - - - MUSHROOM - - Mushroom - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Switch Operation - スイッチ操作 - 스위치 조작 - - - - 緊急停止スイッチの操作を示す。 - 비상 정지 스위치의 조작을 보여준다. - - - - - - IEC 826-08-03の定義: -緊急停止スイッチは予期せずして起こるさまざまな危険を可能な限り迅速に取り除くように動作する装置である。 - - - - - Pset_SwitchingDeviceTypeKeypad - A keypad is a switch supporting multiple functions. HISTORY: Added in IFC4. - - - IfcSwitchingDevice/KEYPAD - - IfcSwitchingDevice/KEYPAD - - - KeypadType - A list of the available types of keypad switch from which that required may be selected. - - - - BUTTONS - TOUCHSCREEN - OTHER - NOTKNOWN - UNSET - - - - BUTTONS - - Buttons - - - - - - - TOUCHSCREEN - - Touchscreen - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Keypad Type - キーパッドタイプ - 키패드 유형 - - - - 選択が必要となる、キーパッドスイッチの一覧リスト。 - 선택이 필요한 키패드 스위치 목록 - - - - - - キーパッドは複数の機能をサポートするスイッチ。 -履歴: IFC4に追加。 - - - - - Pset_SwitchingDeviceTypeMomentarySwitch - A momentary switch is a switch that does not hold state. HISTORY: Added in IFC4. - - - IfcSwitchingDevice/MOMENTARYSWITCH - - IfcSwitchingDevice/MOMENTARYSWITCH - - - MomentaryType - A list of the available types of momentary switch from which that required may be selected. - - - - BUTTON - OTHER - NOTKNOWN - UNSET - - - - BUTTON - - Button - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Momentary Type - 瞬時スイッチタイプ - 순간스위치 유형 - - - - 選択が必要となる、自動復帰スイッチの一覧リスト。 - 선택이 필요한 자동 복귀 스위치 목록 - - - - - - 瞬時スイッチ(モーメンタリスイッチ)は状態を保持しないタイプのスイッチ。 -履歴: IFC4に追加。 - - - - - Pset_SwitchingDeviceTypePHistory - Indicates switch positions or levels over time, such as for energy management or surveillance. - - - IfcSwitchingDevice - - IfcSwitchingDevice - - - SetPoint - Indicates the switch position over time according to Pset_SwitchingDeviceTypeCommon.SetPoint. - - - - - Set Point - - - - - - - - - - - - - Pset_SwitchingDeviceTypeSelectorSwitch - A selector switch is a switch that adjusts electrical power through a multi-position action. HISTORY: Added in IFC4. - - - IfcSwitchingDevice/SELECTORSWITCH - - IfcSwitchingDevice/SELECTORSWITCH - - - SelectorType - A list of the available types of selector switch from which that required may be selected. - - - - BUTTONS - SLIDE - TWIST - OTHER - NOTKNOWN - UNSET - - - - ROCKER - - Rocker - - - - - - - SELECTOR - - Selector - - - - - - - TWIST - - Twist - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Selector Type - セレクター(スイッチ)タイプ - 스위치 타입 - - - - 選択が必要となる、切替えスイッチの一覧リスト。 - 전환스위치 목록 - - - - SwitchUsage - A list of the available usages for selector switches from which that required may be selected. - - - - EMERGENCY - GUARD - LIMIT - START - STOP - OTHER - NOTKNOWN - UNSET - - - - EMERGENCY - - Emergency - - - - - - - GUARD - - Guard - - - - - - - LIMIT - - Limit - - - - - - - START - - Start - - - - - - - STOP - - Stop - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Switch Usage - スイッチの使用法 - 스위치 사용 - - - - 選択が必要となる、切替えスイッチの使用法の一覧リスト。 - 전환스위치 사용 목록 - - - - SwitchActivation - A list of the available activations for selector switches from which that required may be selected. - - - - ACTUATOR - FOOT - HAND - PROXIMITY - SOUND - TWOHAND - WIRE - OTHER - NOTKNOWN - UNSET - - - - ACTUATOR - - Actuator - - - - - - - FOOT - - Foot - - - - - - - HAND - - Hand - - - - - - - PROXIMITY - - Proximity - - - - - - - SOUND - - Sound - - - - - - - TWOHAND - - Two Hand - - - - - - - WIRE - - Wire - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Switch Activation - 起動方式 - 기동 방식 - - - - 選択が必要となる、切替えスイッチの起動方式の一覧リスト。 - 스위치 부팅방식의 목록 - - - - - - 切替えスイッチは複数のポジションに合わせることで電力を調整するスイッチである。 -履歴: IFC4に追加。 - - - - - Pset_SwitchingDeviceTypeStarter - A starter is a switch which in the closed position controls the application of power to an electrical device. - - - IfcSwitchingDevice/STARTER - - IfcSwitchingDevice/STARTER - - - StarterType - A list of the available types of starter from which that required may be selected where: - -AutoTransformer: A starter for an induction motor which uses for starting one or more reduced voltages derived from an auto transformer. (IEC 441-14-45) -Manual: A starter in which the force for closing the main contacts is provided exclusively by manual energy. (IEC 441-14-39) -DirectOnLine: A starter which connects the line voltage across the motor terminals in one step. (IEC 441-14-40) -Frequency: A starter in which the frequency of the power supply is progressively increased until the normal operation frequency is attained. -nStep: A starter in which there are (n-1) intermediate accelerating positions between the off and full on positions. (IEC 441-14-41) -Rheostatic: A starter using one or several resistors for obtaining, during starting, stated motor torque characteristics and for limiting the current. (IEC 441-14-425) -StarDelta: A starter for a 3 phase induction motor such that in the starting position the stator windings are connected in star and in the final running position they are connected in delta. (IEC 441-14-44) - - - - AUTOTRANSFORMER - MANUAL - DIRECTONLINE - FREQUENCY - NSTEP - RHEOSTATIC - STARDELTA - OTHER - NOTKNOWN - UNSET - - - - AUTOTRANSFORMER - - Auto Transformer - - - - - - - MANUAL - - Manual - - - - - - - DIRECTONLINE - - Direct Online - - - - - - - FREQUENCY - - Frequency - - - - - - - NSTEP - - Nstep - - - - - - - RHEOSTATIC - - Rheostatic - - - - - - - STARDELTA - - Star Delta - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Starter Type - 始動タイプ - 시작 유형 - - - - 以下より選択が必要となる、始動の一覧リスト: - -自動: 自動トランスから引き出された1つ以上の低下した電圧でスタートするために使用する誘導電動機用のスターター (IEC 441-14-45) -手動: メインのコンタクトから強制的に分離されたところにあり、手動によりエネルギーが供給される (IEC 441-14-39) -じか入れ: ワンステップでモーター・ターミナル間の線間電圧をつなぐスターター (IEC 441-14-40) -振動:電源の振動数が通常の操作振動まで次第に増大して行くスターター -nStep: オフ(OFF)とオン(ON)の間で、(n-1)の中間の加速度的な位置であるスターター。 (IEC 441-14-41) -抵抗:モータのトルク特性の取得、開始、そして安定する間に、電流を制限するために 1 つまたはいくつかの抵抗を利用したスターター (IEC 441-14-425) -スターデルタ:開始位置では固定小巻線(スターターワインディング)が星状で接続され、その後、最終の実行状態ではデルタ状に接続されるという3相誘導モーター用のスターター。(IEC 441-14-44) - 아래에서 선택이 필요한 시동 목록 목록 : 자동 : 자동 트랜스에서 가져온 하나 이상의 저하 전압으로 시작하는 데 사용하는 유도 전동기의 스타터 (IEC 441-14-45) 수동 : 기본 연락처에서 강제로 격리된 거리에 있으며, 수동으로 에너지가 공급되는 (IEC 441-14-39) 글자 하나 입력 : 한 번에 모터 터미널 사이의 선간 전압을 연결 스타터 (IEC 441-14-40) 진동 : 전원의 진동수가 정상 작동 진동까지 점차 증대 해가는 스타터 nStep : 꺼짐 (OFF)과 켜짐 (ON) 사이에서 (n-1) 사이의 가속도적인 위치이다 스타터. (IEC 441-14-41) 저항 : 모터의 토크 특성 가져오기 시작, 그리고 안정 사이에 전류를 제한하기 위해 하나 또는 몇 가지 저항을 이용한 스타터 (IEC 441-14-425) 스타 델타 : 시작 위치는 고정 小巻 선 (초보 와인)이 소행성에 연결된 후, 최종 상태에서는 델타 모양으로 연결된다 3 상 유도 모터의 스타터. (IEC 441-14-44) - - - - - - スタータースイッチは閉じた状態の位置から、電気装置に対し電力の利用を制御する装置。 - - - - - Pset_SwitchingDeviceTypeSwitchDisconnector - A switch disconnector is a switch which in the open position satisfies the isolating requirements specified for a disconnector. - -History: Property 'HasVisualIndication' changed to 'IsIlluminated' to conform with property name for toggle switch - - - IfcSwitchingDevice/SWITCHDISCONNECTOR - - IfcSwitchingDevice/SWITCHDISCONNECTOR - - - SwitchDisconnectorType - A list of the available types of switch disconnector from which that required may be selected where: - -CenterBreak: A disconnector in which both contacts of each pole are movable and engage at a point substantially midway between their supports. (IEC 441-14-08) -DividedSupport: A disconnector in which the fixed and moving contacts of each pole are not supported by a common base or frame. (IEC 441-14-06) -DoubleBreak: A disconnector that opens a circuit at two points. (IEC 441-14-09) -EarthingSwitch: A disconnector in which the fixed and moving contacts of each pole are not supported by a common base or frame. (IEC 441-14-07) -Isolator: A disconnector which in the open position satisfies isolating requirements. (IEC 441-14-12) - - - - CENTERBREAK - DIVIDEDSUPPORT - DOUBLEBREAK - EARTHINGSWITCH - ISOLATOR - OTHER - NOTKNOWN - UNSET - - - - CENTERBREAK - - Center Break - - - - - - - DIVIDEDSUPPORT - - Divided Support - - - - - - - DOUBLEBREAK - - Double Break - - - - - - - EARTHINGSWITCH - - Earthing Switch - - - - - - - ISOLATOR - - Isolator - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Switch Disconnector Type - 高圧遮断機タイプ - 고압차단기 유형 - - - - 以下より選択が必要となる、スイッチ断路機の一覧リスト: - -センターブレイク: 各極の両方の接点は可動式で、実質的に中間付近を保持する断路器。 (IEC 441-14-08) -DividedSupport: 各極の固定側と移動側接点が、共通のベースまたはフレームではサポートされない断路器。(IEC 441-14-06) -二点切り断路器: 2点で回路を開く断路器 (IEC 441-14-09) -接地開閉器 : 各極の固定側と移動側接点が、共通のベースまたはフレームではサポートされない断路器。(IEC 441-14-07) -断路器: 解放位置の分離要件を満たす、断路器。(IEC 441-14-12) - 아래에서 선택이 필요한 스위치 단로 기의 목록 목록 : 센터 브레이크 : 각 국의 두 접점은 가동 식에서 실질적으로 중간 부근을 유지 단로기. (IEC 441-14-08) DividedSupport : 각 국의 고정 측과 ​​이동 측의 접점이 공통 기반 또는 프레임이 지원되지 않는 단로기. (IEC 441-14-06) 두가지 끄고 단로기 : 2 점 회로를 열 단로기 (IEC 441-14-09) 접지 개폐기 : 각 국의 고정 측과 ​​이동 측의 접점이 공통 기반 또는 프레임이 지원되지 않는 단로기. (IEC 441-14-07) 단로기 : 해제 위치 격리 요구 사항을 충족 단로기. (IEC 441-14-12) - - - - LoadDisconnectionType - A list of the available types of load disconnection from which that required may be selected. - - - - OFFLOAD - ONLOAD - OTHER - NOTKNOWN - UNSET - - - - OFFLOAD - - Offload - - - - - - - ONLOAD - - Onload - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Load Disconnection Type - 切断タイプ - - - - 選択が必要となる、負荷開閉器タイプの一覧リスト。 - - - - - - IEC 441-14-12の定義: -高圧開閉器は開閉器のために孤立した状態である必要条件を満たす、開いた位置にあるスイッチ。 - -履歴: -属性 'HasVisualIndication' を トグルスイッチのプロパティ名に対応するよう、'IsIlluminated' へ変更。 - - - - - Pset_SwitchingDeviceTypeToggleSwitch - A toggle switch is a switch that enables or isolates electrical power through a two position on/off action. HISTORY: SetPoint added in IFC4. - - - IfcSwitchingDevice/TOGGLESWITCH - - IfcSwitchingDevice/TOGGLESWITCH - - - ToggleSwitchType - A list of the available types of toggle switch from which that required may be selected. - - - - BREAKGLASS - CHANGEOVER - KEYOPERATED - MANUALPULL - PUSHBUTTON - PULLCORD - ROCKER - SELECTOR - TWIST - OTHER - NOTKNOWN - UNSET - - - - BREAKGLASS - - Break Glass - - - - - - - CHANGEOVER - - Changeover - - - - - - - KEYOPERATED - - Key Operated - - - - - - - MANUALPULL - - Manual Pull - - - - - - - PUSHBUTTON - - Push Button - - - - - - - PULLCORD - - Pull Cord - - - - - - - ROCKER - - Rocker - - - - - - - SELECTOR - - Selector - - - - - - - TWIST - - Twist - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Toggle Switch Type - レバースイッチタイプ - 레버스위치 유형 - - - - 選択が必要となる、トグルスイッチの一覧リスト。 - 선택이 필요한 토글 스위치 목록 - - - - SwitchUsage - A list of the available usages for toggle switches from which that required may be selected. - - - - EMERGENCY - GUARD - LIMIT - START - STOP - OTHER - NOTKNOWN - UNSET - - - - EMERGENCY - - Emergency - - - - - - - GUARD - - Guard - - - - - - - LIMIT - - Limit - - - - - - - START - - Start - - - - - - - STOP - - Stop - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Switch Usage - スイッチの使用法 - 스위치 사용 - - - - 選択が必要となる、トグルスイッチの使用法の一覧リスト。 - 선택이 필요한 토글 스위치 사용목록 - - - - SwitchActivation - A list of the available activations for toggle switches from which that required may be selected. - - - - ACTUATOR - FOOT - HAND - PROXIMITY - SOUND - TWOHAND - WIRE - OTHER - NOTKNOWN - UNSET - - - - ACTUATOR - - Actuator - - - - - - - FOOT - - Foot - - - - - - - HAND - - Hand - - - - - - - PROXIMITY - - Proximity - - - - - - - SOUND - - Sound - - - - - - - TWOHAND - - Two Hand - - - - - - - WIRE - - Wire - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Switch Activation - 起動方式 - 기동 방식 - - - - 選択が必要となる、トグルスイッチの起動方式の一覧リスト。 - 선택이 필요한 토글 스위치 부팅 방식의 목록 - - - - - - トグルスイッチとはON、OFFの2つのポジションの動作で、電力を接続したり遮断したりするスイッチである。 -履歴: IFC4 に SetPoint を追加。 - - - - - Pset_SystemFurnitureElementTypeCommon - Common properties for all systems furniture (I.e. modular furniture) element types (e.g. vertical panels, work surfaces, and storage). HISTORY: First issued in IFC Release R1.5. Renamed from Pset_FurnitureElementCommon - - - IfcSystemFurnitureElement - - IfcSystemFurnitureElement - - - IsUsed - Indicates whether the element is being used in a workstation (= TRUE) or not.(= FALSE). - - - - - - - Is Used - - - - - - - GroupCode - e.g. panels, worksurfaces, storage, etc. - - - - - - - Group Code - - - - - - - NominalWidth - The nominal width of the system furniture elements of this type. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence. - - - - - - - Nominal Width - - - - - - - NominalHeight - The nominal height of the system furniture elements of this type. The size information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the size properties, provided in the attached property set, the geometric parameters take precedence. - - - - - - - Nominal Height - - - - - - - Finishing - The finishing applied to system furniture elements of this type e.g. walnut, fabric. - - - - - - - Finishing - - - - - - - - - - - - - Pset_SystemFurnitureElementTypePanel - A set of specific properties for vertical panels that assembly workstations.. HISTORY: First issued in IFC Release R1.5. Renamed from Pset_Panel - - - IfcSystemFurnitureElement/PANEL - - IfcSystemFurnitureElement/PANEL - - - HasOpening - indicates whether the panel has an opening (= TRUE) or not (= FALSE). - - - - - - - Has Opening - - - - - - - FurniturePanelType - Available panel types from which that required may be selected. - - - - ACOUSTICAL - GLAZED - HORZ_SEG - MONOLITHIC - OPEN - ENDS - DOOR - SCREEN - OTHER - NOTKNOWN - UNSET - - - - ACOUSTICAL - - Acoustical - - - - - - - GLAZED - - Glazed - - - - - - - HORZ_SEG - - Horz Seg - - - - - - - MONOLITHIC - - Monolithic - - - - - - - OPEN - - Open - - - - - - - ENDS - - Ends - - - - - - - DOOR - - Door - - - - - - - SCREEN - - Screen - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Furniture Panel Type - - - - - - - NominalThickness - The nominal thickness of the panel. - - - - - - - Nominal Thickness - - - - - - - - - - - - - Pset_SystemFurnitureElementTypeWorkSurface - A set of specific properties for work surfaces used in workstations. HISTORY: First issued in IFC Release R1.5. Renamed from Pset_Worksurface - - - IfcSystemFurnitureElement/WORKSURFACE - - IfcSystemFurnitureElement/WORKSURFACE - - - UsePurpose - The principal purpose for which the work surface is intended to be used e.g. writing/reading, computer, meeting, printer, reference files, etc. - - - - - - - Use Purpose - - - - - - - SupportType - Available support types from which that required may be selected. - - - - FREESTANDING - SUPPORTED - OTHER - NOTKNOWN - UNSET - - - - ACOUSTICAL - - Acoustical - - - - - - - GLAZED - - Glazed - - - - - - - HORZ_SEG - - Horz Seg - - - - - - - MONOLITHIC - - Monolithic - - - - - - - OPEN - - Open - - - - - - - ENDS - - Ends - - - - - - - DOOR - - Door - - - - - - - SCREEN - - Screen - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Support Type - - - - - - - HangingHeight - The hanging height of the worksurface. - - - - - - - Hanging Height - - - - - - - NominalThickness - The nominal thickness of the work surface. - - - - - - - Nominal Thickness - - - - - - - ShapeDescription - A description of the shape of the work surface e.g. corner square, rectangle, etc. - - - - - - - Shape Description - - - - - - - - - - - - - Pset_TankOccurrence - Properties that relate to a tank. Note that a partial tank may be considered as a compartment within a compartmentalized tank. - - - IfcTank - - IfcTank - - - TankComposition - Defines the level of element composition where. - -COMPLEX: A set of elementary units aggregated together to fulfill the overall required purpose. -ELEMENT: A single elementary unit that may exist of itself or as an aggregation of partial units.. -PARTIAL: A partial elementary unit. - - - - COMPLEX - ELEMENT - PARTIAL - NOTKNOWN - UNSET - - - - COMPLEX - - Complex - - - A set of elementary units aggregated together to fulfill the overall required purpose - - - - ELEMENT - - Element - - - A single elementary unit that may exist of itself or as an aggregation of partial units - - - - PARTIAL - - Partial - - - A partial elementary unit - - - - OTHER - - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Tank Composition - 水槽構成 - - - - 定義 構成要素のレベル                       複合:A 全般的に要求された目的を達成するために集められた基本ユニットのセット                              要素:A それ自身あるいは部分的ユニットの集まりとしてある単一基本ユニット                                部分的:A 部分的な基本単位 - - - - HasLadder - Indication of whether the tank is provided with a ladder (set TRUE) for access to the top. If no ladder is provided then value is set FALSE. - -Note: No indication is given of the type of ladder (gooseneck etc.) - - - - - - - Has Ladder - 梯子有り - - - - 上部を点検するための梯子(TRUEに設定)をタンクに備えているかどうかの表示 もし、梯子が備え付けられていなければ値はFALSEと設定される。  注:表示がない場合は梯子のタイプが与えられる(グースネック他) - - - - HasVisualIndicator - Indication of whether the tank is provided with a visual indicator (set TRUE) that shows the water level in the tank. If no visual indicator is provided then value is set FALSE. - - - - - - - Has Visual Indicator - 目視型表示器有り - - - - タンクの水位を示す目視型表示器(TRUEに設定)が備えつけられているかどうかの表示。もし目視型表示器が備えつけられていなければ、値はFALSEと設定される。 - - - - - - 水槽関連のプロパティ  部分的な水槽は仕切られた水槽内の区分として考慮されることに注意 - - - - - Pset_TankTypeCommon - Common attributes of a tank type. - - - IfcTank - - IfcTank - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - AccessType - Defines the types of access (or cover) to a tank that may be specified. - -Note that covers are generally specified for rectangular tanks. For cylindrical tanks, access will normally be via a manhole. - - - - NONE - LOOSECOVER - MANHOLE - SECUREDCOVER - SECUREDCOVERWITHMANHOLE - OTHER - NOTKNOWN - UNSET - - - - NONE - - None - - - - - - - LOOSECOVER - - Loose Cover - - - - - - - MANHOLE - - Manhole - - - - - - - SECUREDCOVER - - Secured Cover - - - - - - - SECUREDCOVERWITHMANHOLE - - Secured Cover with Manhole - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Access Type - 点検タイプ - - - - タンクの点検口(又はカバー)のタイプの定義は明示される。カバーは一般的に矩形タンクについて明示されていることに注意。円筒形タンクの点検は通常のマンホールを通る - - - - StorageType - Defines the general material category intended to be stored. - - - - ICE - WATER - RAINWATER - WASTEWATER - POTABLEWATER - FUEL - OIL - OTHER - NOTKNOWN - UNSET - - - - ICE - - Ice - - - - - - - WATER - - Water - - - - - - - RAINWATER - - Rain Water - - - - - - - WASTEWATER - - Waste Water - - - - - - - POTABLEWATER - - Potable Water - - - - - - - FUEL - - Fuel - - - - - - - OIL - - Oil - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Storage Type - 貯蔵タイプ - - - - 一般的な材料種別が格納される - - - - NominalLengthOrDiameter - The nominal length or, in the case of a vertical cylindrical tank, the nominal diameter of the tank. - - - - - - - Nominal Length Or Diameter - 公称長さ又は直径 - - - - 公称長さ又は垂直円筒形タンクの場合、タンクの公称直径 - - - - NominalWidthOrDiameter - The nominal width or, in the case of a horizontal cylindrical tank, the nominal diameter of the tank. - -Note: Not required for a vertical cylindrical tank. - - - - - - - Nominal Width Or Diameter - 公称幅又は直径 - - - - 公称幅又は水平円筒形タンクの場合、タンクの公称直径     注:垂直円筒形タンクに対しては必須ではない - - - - NominalDepth - The nominal depth of the tank. - -Note: Not required for a horizontal cylindrical tank. - - - - - - - Nominal Depth - 公称深さ - - - - タンクの公称深さ  注:水平円筒形タンクに対しては必須ではない - - - - NominalCapacity - The total nominal or design volumetric capacity of the tank. - - - - - - - Nominal Capacity - 公称容量 - - - - タンクの総公称又は設計容量 - - - - EffectiveCapacity - The total effective or actual volumetric capacity of the tank. - - - - - - - Effective Capacity - 有効容量 - - - - タンクの総有効又は実容量 - - - - OperatingWeight - Operating weight of the tank including all of its contents. - - - - - - - Operating Weight - 運転重量 - - - - 中身全部を含んだタンクの運転重量 - - - - PatternType - Defines the types of pattern (or shape of a tank that may be specified. - - - - HORIZONTALCYLINDER - VERTICALCYLINDER - RECTANGULAR - OTHER - NOTKNOWN - UNSET - - - - HORIZONTALCYLINDER - - Horizontal Cylinder - - - - - - - VERTICALCYLINDER - - Vertical Cylinder - - - - - - - RECTANGULAR - - Rectangular - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Pattern Type - パターンタイプ - - - - 定義 パターンのタイプ(又はタンクの形状)が明示される - - - - EndShapeType - Defines the types of end shapes that can be used for preformed tanks. The convention for reading these enumerated values is that for a vertical cylinder, the first value is the base and the second is the top; for a horizontal cylinder, the order of reading should be left to right. For a speherical tank, the value UNSET should be used. - - - - CONCAVECONVEX - FLATCONVEX - CONVEXCONVEX - CONCAVEFLAT - FLATFLAT - OTHER - NOTKNOWN - UNSET - - - - CONCAVECONVEX - - Concave Convex - - - - - - - FLATCONVEX - - Flat Convex - - - - - - - CONVEXCONVEX - - Convex Convex - - - - - - - CONCAVEFLAT - - Concave Flat - - - - - - - FLATFLAT - - Flat Flat - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - End Shape Type - 末端形状タイプ - - - - 定義 予めタンクに使用することができる端形状の種類を示す。これらの列挙された値を読み取るための規則は、垂直円筒に関しては、最初の値はベースです、そして、2番目は先端です。水平円筒に関しては、値は左から右に読む必要があります。球形タンクの場合、値はUNSETを使用する必要があります。 - - - - FirstCurvatureRadius - FirstCurvatureRadius should be defined as the base or left side radius of curvature value. - - - - - - - First Curvature Radius - 最初の曲率半径 - - - - 最初の曲率半径は、基本又は曲率の値の左側の半径として定義する必要があります。 - - - - SecondCurvatureRadius - SecondCurvatureRadius should be defined as the top or right side radius of curvature value. - - - - - - - Second Curvature Radius - 2番目の曲率半径 - - - - 2番目の曲率半径は、曲率の値の先頭又は右側の半径として定義する必要があります。 - - - - NumberOfSections - Number of sections used in the construction of the tank. Default is 1. - -Note: All sections assumed to be the same size. - - - - - - - Number Of Sections - セクションの数 - - - - タンクの製作に使用されているセクションの数 既定は1つ  注:全てのセクションは同サイズと考える - - - - - - 水槽タイプ共通属性 - - - - - Pset_TankTypeExpansion - Common attributes of an expansion type tank. - - - IfcTank/EXPANSION - - IfcTank/EXPANSION - - - ChargePressure - Nominal or design operating pressure of the tank. - - - - - - - Charge Pressure - 加圧力 - - - - タンクの公称又は設計運転圧力 - - - - PressureRegulatorSetting - Pressure that is automatically maintained in the tank. - - - - - - - Pressure Regulator Setting - 圧力調整設定 - - - - タンク内で自動的に維持される圧力 - - - - ReliefValveSetting - Pressure at which the relief valve activates. - - - - - - - Relief Valve Setting - 安全弁設定 - - - - 安全弁が作動する圧力 - - - - - - 膨張タンクの共通属性 - - - - - Pset_TankTypePreformed - Fixed vessel manufactured as a single unit with one or more compartments for storing a liquid. - -Pset renamed from Pset_TankTypePreformedTank to Pset_TankTypePreformed in IFC2x2 Pset Addendum. - - - IfcTank/PREFORMED - - IfcTank/PREFORMED - - - PatternType - Defines the types of pattern (or shape of a tank that may be specified. - - - - HORIZONTALCYLINDER - VERTICALCYLINDER - RECTANGULAR - OTHER - NOTKNOWN - UNSET - - - - HORIZONTALCYLINDER - - Horizontal Cylinder - - - - - - - VERTICALCYLINDER - - Vertical Cylinder - - - - - - - RECTANGULAR - - Rectangular - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Pattern Type - パターンタイプ - - - - 定義 パターンのタイプ(又はタンクの形状)が明示される。 - - - - EndShapeType - Defines the types of end shapes that can be used for preformed tanks. The convention for reading these enumerated values is that for a vertical cylinder, the first value is the base and the second is the top; for a horizontal cylinder, the order of reading should be left to right. For a speherical tank, the value UNSET should be used. - - - - CONCAVECONVEX - FLATCONVEX - CONVEXCONVEX - CONCAVEFLAT - FLATFLAT - OTHER - NOTKNOWN - UNSET - - - - CONCAVECONVEX - - Concave Convex - - - - - - - FLATCONVEX - - Flat Convex - - - - - - - CONVEXCONVEX - - Convex Convex - - - - - - - CONCAVEFLAT - - Concave Flat - - - - - - - FLATFLAT - - Flat Flat - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - End Shape Type - 末端形状タイプ - - - - 定義 予めタンクに使用することができる端形状の種類を示す。これらの列挙された値を読み取るための規則は、垂直円筒に関しては、最初の値はベースです、そして、2番目は先端です。水平円筒に関しては、値は左から右に読む必要があります。球形タンクの場合、値はUNSETを使用する必要があります。 - - - - FirstCurvatureRadius - FirstCurvatureRadius should be defined as the base or left side radius of curvature value. - - - - - - - First Curvature Radius - 最初の曲率半径 - - - - 最初の曲率半径は、基本又は曲率の値の左側の半径として定義する必要があります。 - - - - SecondCurvatureRadius - SecondCurvatureRadius should be defined as the top or right side radius of curvature value. - - - - - - - Second Curvature Radius - 2番目の曲率半径 - - - - 2番目の曲率半径は、曲率の値の先頭又は右側の半径として定義する必要があります。 - - - - - - 液体を貯蔵するために一つ以上の区画を持ち単体として製造された固定された容器                           PsetはIFC2x2 Pset AddendumでPset_TankTypePreformedTankからPsetまで_をTankTypePreformedに改名しました。 - - - - - Pset_TankTypePressureVessel - Common attributes of a pressure vessel. - - - IfcTank/PRESSUREVESSEL - - IfcTank/PRESSUREVESSEL - - - ChargePressure - Nominal or design operating pressure of the tank. - - - - - - - Charge Pressure - 加圧力 - - - - タンクの公称又は設計運転圧力 - - - - PressureRegulatorSetting - Pressure that is automatically maintained in the tank. - - - - - - - Pressure Regulator Setting - 圧力調整設定 - - - - タンク内で自動的に維持される圧力 - - - - ReliefValveSetting - Pressure at which the relief valve activates. - - - - - - - Relief Valve Setting - 安全弁設定 - - - - 安全弁が作動する圧力 - - - - - - 圧力容器の共通属性 - - - - - Pset_TankTypeSectional - Fixed vessel constructed from sectional parts with one or more compartments for storing a liquid. - -Note (1): All sectional construction tanks are considered to be rectangular by default. -Note (2): Generally, it is not expected that sectional construction tanks will be used for the purposes of gas storage. - -Pset renamed from Pset_TankTypeSectionalTank to Pset_TankTypeSectional in IFC2x2 Pset Addendum. - - - IfcTank/SECTIONAL - - IfcTank/SECTIONAL - - - NumberOfSections - Number of sections used in the construction of the tank - -Note: All sections assumed to be the same size. - - - - - - - Number Of Sections - セクションの数 - - - - タンクの製作に使用されているセクションの数 -注:全てのセクションは同サイズと考える - - - - SectionLength - The length of a section used in the construction of the tank. - - - - - - - Section Length - セクションの長さ - - - - タンクの製作に使用されているセクションの長さ - - - - SectionWidth - The width of a section used in the construction of the tank. - - - - - - - Section Width - セクションの幅 - - - - タンクの製作に使用されているセクションの幅 - - - - - - 液体を貯蔵するために一つ以上の区画を持ち組立部品から造られている固定された容器  注(1):全ての組立式タンクは矩形をデフォルトと考えられている。注(2):一般的に、組立式タンクは気体を貯蔵する目的のために使用されることは考えていない。                                      PsetはIFC2x2 Pset AddendumでPset_TankTypeSectionalTankからPsetまで_をTankTypeSectionalに改名しました。 - - - - - Pset_ThermalLoadAggregate - The aggregated thermal loads experienced by one or many spaces, zones, or buildings. This aggregate thermal load information is typically addressed by a system or plant. HISTORY: New property set in IFC Release 1.0 (Pset_AggregateLoadInformation); renamed Pset_ThermalLoadAggregate in IFC2x2. - - - IfcSpatialElement - - IfcSpatialElement - - - TotalCoolingLoad - The peak total cooling load for the building, zone or space. - - - - - - - Total Cooling Load - 冷房負荷 - 냉방부하 - - - - 建物、ゾーン、部屋のピーク時の冷房負荷。 - 건물 영역 방 피크 냉방 부하. - - - - TotalHeatingLoad - The peak total heating load for the building, zone or space. - - - - - - - Total Heating Load - 暖房負荷 - 난방 부하 - - - - 建物、ゾーン、部屋のピーク時の暖房負荷。 - 건물 영역 방 최대 난방 부하. - - - - LightingDiversity - Lighting diversity. - - - - - - - Lighting Diversity - 照明負荷係数 - 조명 부하계수 - - - - 照明負荷係数。 - 조명 부하 계수. - - - - InfiltrationDiversitySummer - Diversity factor for Summer infiltration. - - - - - - - Infiltration Diversity Summer - 夏期すき間換気率 - 여름 틈새 환기 비율 - - - - 夏期すき間換気率。 - 여름 틈새 환기 비율. - - - - InfiltrationDiversityWinter - Diversity factor for Winter infiltration. - - - - - - - Infiltration Diversity Winter - 冬期すき間換気率 - 겨울철 틈새 환기비율 - - - - 冬期すき間換気率。 - 겨울철 틈새 환기 비율. - - - - ApplianceDiversity - Diversity of appliance load. - - - - - - - Appliance Diversity - 機器の負荷率 - 기기의 부하율 - - - - 機器の負荷率。 - 기기의 부하율. - - - - LoadSafetyFactor - Load safety factor. - - - - - - - Load Safety Factor - 負荷の安全率 - 부하의 안전율 - - - - 空調負荷計算用の安全率(割増係数)。 - 공조 부하 계산을위한 안전율 (할증 계수). - - - - - - 戸別或いは複数の部屋、ゾーン、建物の熱負荷の集計。この集計した熱負荷情報は一般にシステムあるいはプラントによって扱われる。履歴:IFC1.0の新PropertySet(Pset_AggregateLoadInformation)、:IFC2x2に新たにPset_ThermalLoadAggregateと定義された。 - - - - - Pset_ThermalLoadDesignCriteria - Building thermal load design data that are used for calculating thermal loads in a space or building. HISTORY: New property set in IFC Release 1.0 (Pset_LoadDesignCriteria); renamed Pset_ThermalLoadDesignCriteria in IFC2x2. - - - IfcSpatialElement - - IfcSpatialElement - - - OccupancyDiversity - Diversity factor that may be applied to the number of people in the space. - - - - - - - Occupancy Diversity - 居住者の在室率 - 거주자의 재실 비율 - - - - 室内居住者の在室率。 - 실내 거주자의 재실 비율. - - - - OutsideAirPerPerson - Design quantity of outside air to be provided per person in the space. - - - - - - - Outside Air Per Person - 1人あたりの外気量 - 당 외기량 - - - - 1人あたりの外気量の設計値。 - 당 외기 량의 설계 값. - - - - ReceptacleLoadIntensity - Average power use intensity of appliances and other non-HVAC equipment in the space per unit area.(PowerMeasure/IfcAreaMeasure). - - - - - - - Receptacle Load Intensity - 単位面積あたり事務機器の平均電力消費量 - 단위면적 당 사무기기 평균 전력 소비량 - - - - 単位面積あたり事務機器など非空調設備の平均電力消費量。 -(PowerMeasure/IfcAreaMeasure) - 단위 면적 당 사무 기기 등 비 공조 설비의 평균 전력 소비. (PowerMeasure / IfcAreaMeasure) - - - - AppliancePercentLoadToRadiant - Percent of sensible load to radiant heat. - - - - - - - Appliance Percent Load To Radiant - 放射熱のうち顕熱分の割合 - 복사열 중 현열 분의 비율 - - - - 放射熱のうち顕熱分負荷の割合。 - 복사열 중 현열 분 부하의 비율. - - - - LightingLoadIntensity - Average lighting load intensity in the space per unit area (PowerMeasure/IfcAreaMeasure). - - - - - - - Lighting Load Intensity - 照明負荷率 - 조명 부하율 - - - - 単位面積あたり照明機器の平均電力消費量。 -(PowerMeasure/IfcAreaMeasure) - 단위 면적 당 조명의 평균 전력 소비. (PowerMeasure / IfcAreaMeasure) - - - - LightingPercentLoadToReturnAir - Percent of lighting load to the return air plenum. - - - - - - - Lighting Percent Load To Return Air - リタン空気への照明機器の放熱率 - 리탄 공기에 조명 기기의 방열 비율 - - - - 照明機器からリタン空気(天井裏)への放熱率。 - 조명 기기에서 폴리탄 공기 (천장)의 방열 속도. - - - - - - 部屋や建物の熱負荷の計算のために使用される建物の熱負荷設計データ。履歴:IFC1.0の新PropertySet(Pset_LoadDesignCriteria)、:IFC2x2に新たにPset_ThermalLoadDesignCriteriaと定義された。 - - - - - Pset_TransformerTypeCommon - An inductive stationary device that transfers electrical energy from one circuit to another. - - - IfcTransformer - - IfcTransformer - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照 - 참조 - - - - このプロジェクト (例. 'A-1' タイプなど)で指定された参照ID。認められた分類体系の分類参照が存在しない場合に適用される。 - 이 프로젝트 (예 : 'A-1'유형 등) 지정된 참조 ID. 인정 분류 체계의 분류 참조가없는 경우에 적용된다. - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - PrimaryVoltage - The voltage that is going to be transformed and that runs into the transformer on the primary side. - - - - - - - Primary Voltage - 第1電圧 - 제 1 전압 - - - - 変圧器の1次側に伝送される電圧。 - 변압기 1 차 측에 전송되는 전압. - - - - SecondaryVoltage - The voltage that has been transformed and is running out of the transformer on the secondary side. - - - - - - - Secondary Voltage - 第2電圧 - 두번째 전압 - - - - 変圧器の2次側へ出力される電圧。 - 변압기 2 차 측에 전송되는 전압. - - - - PrimaryCurrent - The current that is going to be transformed and that runs into the transformer on the primary side. - - - - - - - Primary Current - 第1電流 - 제 1 전류 - - - - 変圧器の1次側に伝送される電流。 - 변압기 1 차 측에 전송되는 전류. - - - - SecondaryCurrent - The current that has been transformed and is running out of the transformer on the secondary side. - - - - - - - Secondary Current - 第2電流 - 제 2 전류 - - - - 変圧器の2次側へ出力される電流。 - 변압기 2 차 측에 전송되는 전류. - - - - PrimaryFrequency - The frequency that is going to be transformed and that runs into the transformer on the primary side. - - - - - - - Primary Frequency - 第1周波数 - 제 1 주파수 - - - - 変圧器の1次側に伝送される周波数。 - 변압기 1 차 측에 전송되는 주파수. - - - - SecondaryFrequency - The frequency that has been transformed and is running out of the transformer on the secondary side. - - - - - - - Secondary Frequency - 第2周波数 - 제 2 주파수 - - - - 変圧器の2次側に出力される周波数。 - 변압기 2 차 측에 전송되는 주파수. - - - - PrimaryApparentPower - The power in VA (volt ampere) that has been transformed and that runs into the transformer on the primary side. - - - - - - - Primary Apparent Power - 第1電力 - 제 1 전력 - - - - 変圧器の1次側に伝送される電力(VA: アンペア)。 - 변압기 1 차 측에 전송되는 전력 (VA : 암페어). - - - - SecondaryApparentPower - The power in VA (volt ampere) that has been transformed and is running out of the transformer on the secondary side. - - - - - - - Secondary Apparent Power - 第2電力 - 제 2 전원 - - - - 変圧器の2次側へ出力される電力(VA: アンペア)。 - 변압기 2 차측으로 출력되는 전력 (VA : 암페어). - - - - MaximumApparentPower - Maximum apparent power/capacity in VA (volt ampere). - - - - - - - Maximum Apparent Power - 最大電力 - 최대 전력 - - - - 皮相電力/容量 の最大値 (VA:アンペア)。 - 피상 전력 / 용량 최대 (VA : 암페어). - - - - SecondaryCurrentType - A list of the secondary current types that can result from transformer output. - - - - AC - DC - NOTKNOWN - UNSET - - - - AC - - Ac - - - - - - - DC - - Dc - - - - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Secondary Current Type - 第2電流タイプ - 제 2 전류 타입 - - - - 変圧器より出力される第2電流の種類の一覧。 - 변압기에서 출력되는 제 2 전류의 종류 목록입니다. - - - - ShortCircuitVoltage - A complex number that specifies the real and imaginary parts of the short-circuit voltage at rated current of a transformer given in %. - - - - - - - Short Circuit Voltage - 短絡電圧 - 단락 전압 - - - - %で与えられる変圧器の定格電流における短絡電圧の実数と虚数を定義する複素数。 - %에서 주어진 변압기 정격 전류의 단락 전압의 실수와 허수를 정의하는 복소수. - - - - RealImpedanceRatio - The ratio between the real part of the zero sequence impedance and the real part of the positive impedance (i.e. real part of the short-circuit voltage) of the transformer. -Used for three-phase transformer which includes a N-conductor. - - - - - - - Real Impedance Ratio - インピーダンス実部比率 - 임피던스 실수 부 비율 - - - - 零相インピーダンスと正相インピーダンス(例.短絡電圧の実部)の間の比率。N-コンダクターを含む三相トランスのために使用。 - 영 상 임피던스와 양의 상 임피던스 (예 : 단락 전압의 실제 부분) 사이의 비율. N-지휘자를 포함 삼상 변압기에 사용됩니다. - - - - ImaginaryImpedanceRatio - The ratio between the imaginary part of the zero sequence impedance and the imaginary part of the positive impedance (i.e. imaginary part of the short-circuit voltage) of the transformer. -Used for three-phase transformer which includes a N-conductor. - - - - - - - Imaginary Impedance Ratio - インピーダンス虚部比率 - 임피던스 허수 부 비율 - - - - 零相インピーダンスと正相インピーダンス(例.短絡電圧の虚部)の間の比率。N-コンダクターを含む三相トランスのために使用。 - 영 상 임피던스와 양의 상 임피던스 (예 : 단락 전압 국소 부) 사이의 비율. N-지휘자를 포함 삼상 변압기에 사용됩니다. - - - - TransformerVectorGroup - List of the possible vector groups for the transformer from which that required may be set. Values in the enumeration list follow a standard international code where the first letter describes how the primary windings are connected, -the second letter describes how the secondary windings are connected, and the numbers describe the rotation of voltages and currents from the primary to the secondary side in multiples of 30 degrees. - -D: means that the windings are delta-connected. -Y: means that the windings are star-connected. -Z: means that the windings are zig-zag connected (a special start-connected providing low reactance of the transformer); -The connectivity is only relevant for three-phase transformers. - - - - DD0 - DD6 - DY5 - DY11 - YD5 - YD11 - DZ0 - DZ6 - YY0 - YY6 - YZ5 - YZ11 - OTHER - NOTKNOWN - UNSET - - - - DD0 - - Dd0 - - - - - - - DD6 - - Dd6 - - - - - - - DY5 - - Dy5 - - - - - - - DY11 - - Dy11 - - - - - - - YD5 - - Yd5 - - - - - - - YD11 - - Yd11 - - - - - - - DZ0 - - Dz0 - - - - - - - DZ6 - - Dz6 - - - - - - - YY0 - - Yy0 - - - - - - - YY6 - - Yy6 - - - - - - - YZ5 - - Yz5 - - - - - - - YZ11 - - Yz11 - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Transformer Vector Group - - - - - - - IsNeutralPrimaryTerminalAvailable - An indication of whether the neutral point of the primary winding is available as a terminal (=TRUE) or not (= FALSE). - - - - - - - Is Neutral Primary Terminal Available - 中性点第1ターミナルがあるかどうか - 중성점 제 1 터미널 여부 - - - - 一次巻線の中性点がターミナルの場合は(=TRUE)、違う場合は(= FALSE)として表示する - 1차 권선의 중성점 터미널의 경우 (= TRUE), 다른 경우는 (= FALSE)로 표시 - - - - IsNeutralSecondaryTerminalAvailable - An indication of whether the neutral point of the secondary winding is available as a terminal (=TRUE) or not (= FALSE). - - - - - - - Is Neutral Secondary Terminal Available - 中性点第2ターミナルがあるかどうか - 중성점 제 2 터미널 여부 - - - - 二次巻線の中性点がターミナルの場合は(=TRUE)、違う場合は(= FALSE)として表示する - 2 차 코일의 중성점 터미널의 경우 (= TRUE), 다른 경우는 (= FALSE)로 표시 - - - - - - 1つの回路からもう一つへ電気エネルギーを移す電磁誘導装置。 - - - - - Pset_TransportElementCommon - Properties common to the definition of all occurrences of IfcTransportElement or IfcTransportElementType - - - IfcTransportElement - - IfcTransportElement - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). Used to store the non-classification driven internal construction type. - - - - - - - Komponententyp - Reference - Reference - 参照記号 - 참조 ID - - - Bezeichnung zur Zusammenfassung gleichartiger Komponenten zu einem Komponententyp (auch Konstruktionstyp genannt). Alternativ zum Namen des "Typobjekts", insbesondere wenn die Software keine Typen unterstützt. - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1"). Utilisé pour enregistrer un type sans recourir à une classification. - 参照するID番号。 - 이 프로젝트의 참조 ID (예 : A-1). 분류 코드가 아닌 내부에서 사용되는 프로젝트 형식으로 사용됩니다. - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Status - Statut - 状態 - - - Status bzw. Phase des Bauteils insbesondere beim Bauen im Bestand. "Neu" (new) neues Bauteil als Ergänzung, "Bestand" (existing) bestehendes Bauteil, dass erhalten bleibt, "Abbruch" (demolish) Bauteil, das abgebrochen wird, "Temporär" (temporary) Bauteil und andere Bauelemente, die vorübergehend eingebaut werden (wie Abstützungen, etc.) - - Statut de l'élément, principalement utilisé dans les projets de rénovation et de réhabilitation. Le statut a pour valeur NOUVEAU pour un nouvel élément, EXISTANT pour un élément existant qui est conservé, DEMOLI pour un élément existant à démolir et TEMPORAIRE pour un élément temporaire (comme une structure support provisoire). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - CapacityPeople - Capacity of the transportation element measured in numbers of person. - - - - - - - Personenkapazität - Capacity People - Capacité en nombre de personnes - 搭乗人数定員 - - - Kapazität nach Anzahl der Personen, die maximal befördert werden können. - - Capacité de transport de l'élément mesurée en nombre de personnes. - 搬送要素の人数に関する容量。 - - - - CapacityWeight - Capacity of the transport element measured by weight. - - - - - - - Lastkapazität - Capacity Weight - Capacité en poids - 搭載重量 - - - Kapazität nach Gewicht, das maximal befördert werden kann. - - Capacité de transport de l'élément mesurée par le poids. - 搬送要素の重さに関する容量。 - - - - FireExit - Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE). -Here whether the transport element (in case of e.g., a lift) is designed to serve as a fire exit, e.g., for fire escape purposes. - - - - - - - Rettungsweg - Fire Exit - SortieSecours - 避難出口 - 화재 출구 (피난 출구) - - - Angabe ob dieses Transportelement als Rettungsweg im Brandfall zulässig ist (WAHR) oder nicht (FALSCH). - - Indication si l'objet est conçu pour servir de sortie en cas d'incendie (VRAI) ou non (FAUX). Cas d'un élément de transport comme un ascenseur conçu pour l'évacuation en cas d'incendie. - 避難出口(TRUE)か、通常の出口(FALSE)かを示すフラグ。 - 이 물체가 화재의 경우 출구로 사용되도록 설계되었는지 여부를 나타내는 부울 값입니다. 여기에 공간 (예 복도), 예를 들면 화재 피난 목적을 위해 출구 공간으로 사용하도록 설계되었는지 여부 - - - - - Property Set Definition in German - - Définition de l'IAI : propriétés communes à la définition de toutes les instances de la classe IfcTransportElement - 交通要素共通事項。 - - - - - Pset_TransportElementElevator - Properties common to the definition of all occurrences of IfcTransportElement with the predefined type ="ELEVATOR" - - - IfcTransportElement/ELEVATOR - - IfcTransportElement/ELEVATOR - - - FireFightingLift - Indication whether the elevator is designed to serve as a fire fighting lift the case of fire (TRUE) or not (FALSE). A fire fighting lift is used by fire fighters to access the location of fire and to evacuate people. - - - - - - - Feuerwehraufzug - Fire Fighting Lift - LargeurPassage - 消防エレベーター - - - Angabe, ob der Aufzug als ein Feuerwerksaufzug vorgesehen ist (WAHR) oder nicht (FALSCH). Ein Feuerwehraufzug ist ein besonders abgesicherter Aufzug der der Feuerwehr im Branfall ein Erreichen der Branetage ermöglicht. - - Indique si l'ascenseur est conçu pour servir d'ascenseur pompier (VRAI) ou non (FAUX). Un ascenseur pompier est utilisé par les pompiers pour accéder à l'endroit du feu et évacuer les personnes. - 火災時に消防エレベーターとしての利用を想定して設計されているかどうかを示す。消防エレベーターは火災現場へ消防士を運んだり人を避難させるために使われる。 - - - - ClearWidth - Clear width of the object (elevator). It indicates the distance from the inner surfaces of the elevator car left and right from the elevator door. -The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. - - - - - - - Clear Width - Largeur du passage - 幅員 - - - - Largeur du passage de l'ascenseur. Elle indique la distance entre les surfaces intérieures gauche et droite de la cabine depuis la porte de l'ascenseur. Cette propriété est donnée en complément de la représentation de la forme de l'élément et des paramètres géométriques qui la déterminent. En cas d'incohérence entre ces paramètres géométriques et cette propriété, ce sont les paramètres géométriques qui priment. - オブジェクト(エレベータ)の幅。エレベータ昇降機内部表面の左から右の距離を示す。 -形状表現は、Shape representation(IFCの幾何形状表現)およびそこで設定されている幾何形状パラメータにより与えられる。もし、幾何形状パラメータと形状プロパティ情報が一致しない場合は、形状パラメータの値を優先する。 - - - - ClearDepth - Clear depth of the object (elevator). It indicates the distance from the inner surface of the elevator door to the opposite surface of the elevator car. -The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. - - - - - - - Clear Depth - Profondeur de passage - 奥行き - - - - Profondeur de l'ascenseur. Elle indique la distance entre la face intérieure de la porte et la face opposée de la cabine de l'ascenseur. Cette propriété est donnée en complément de la représentation de la forme de l'élément et des paramètres géométriques qui la déterminent. En cas d'incohérence entre ces paramètres géométriques et cette propriété, ce sont les paramètres géométriques qui priment. - オブジェクト(エレベータ)の奥行き。エレベータドアの内部表面から、反対側の表面までの距離を示す。 -形状表現は、Shape representation(IFCの幾何形状表現)およびそこで設定されている幾何形状パラメータにより与えられる。もし、幾何形状パラメータと形状プロパティ情報が一致しない場合は、形状パラメータの値を優先する。 - - - - ClearHeight - Clear height of the object (elevator). -The shape information is provided in addition to the shape representation and the geometric parameters used within. In cases of inconsistency between the geometric parameters and the shape properties, provided in the attached property, the geometric parameters take precedence. - - - - - - - Clear Height - Hauteur de passage - 高さ - - - - Hauteur du passage de l'ascenseur. Cette propriété est donnée en complément de la représentation de la forme de l'élément et des paramètres géométriques qui la déterminent. En cas d'incohérence entre ces paramètres géométriques et cette propriété, ce sont les paramètres géométriques qui priment. - オブジェクト(エレベータ)の高さ。エレベータドアの内部の床面から天井までの距離を示す。 -形状表現は、Shape representation(IFCの幾何形状表現)およびそこで設定されている幾何形状パラメータにより与えられる。もし、幾何形状パラメータと形状プロパティ情報が一致しない場合は、形状パラメータの値を優先する。 - - - - - Property Set Definition in German - - Définition de l'IAI : propriétés communes à la définition de toutes les instances de la classe IfcTransportElement de type ELEVATOR. - タイプが既定義の"ELEVATOR"であるIfcTransportElementすべてに共通な属性の定義。 - - - - - Pset_TubeBundleTypeCommon - Tube bundle type common attributes. - - - IfcTubeBundle - - IfcTubeBundle - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - NumberOfRows - Number of tube rows in the tube bundle assembly. - - - - - - - Number Of Rows - 列数 - - - - チューブの集合の組立におけるチューブ列数 - - - - StaggeredRowSpacing - Staggered tube row spacing. - - - - - - - Staggered Row Spacing - 互い違いの列間隔 - - - - 互い違いのチューブ列間隔 - - - - InLineRowSpacing - In-line tube row spacing. - - - - - - - In Line Row Spacing - インライン列間隔 - - - - インラインチューブ列間隔 - - - - NumberOfCircuits - Number of parallel fluid tube circuits. - - - - - - - Number Of Circuits - 平行流回路数 - - - - 平行流チューブ回路数 - - - - FoulingFactor - Fouling factor of the tubes in the tube bundle. - - - - - - - Fouling Factor - 汚れ係数 - - - - チューブ束のチューブ汚れ係数 - - - - ThermalConductivity - The thermal conductivity of the tube. - - - - - - - Thermal Conductivity - 熱伝導率 - - - - チューブの熱伝導率 - - - - Length - Length of the tubes in the tube bundle. - - - - - - - Length - 長さ - - - - チューブ束のチューブ長さ - - - - Volume - Total volume of fluid in the tubes and their headers. - - - - - - - Volume - 流量 - - - - チューブとヘッダー内の総流量 - - - - NominalDiameter - Nominal diameter or width of the tubes in the tube bundle. - - - - - - - Nominal Diameter - 公称直径 - - - - チューブ束内のチューブ公称直径又は幅 - - - - OutsideDiameter - Actual outside diameter of the tube in the tube bundle. - - - - - - - Outside Diameter - 外径 - - - - チューブ束内のチューブ実外径 - - - - InsideDiameter - Actual inner diameter of the tube in the tube bundle. - - - - - - - Inside Diameter - 内径 - - - - チューブ束内のチューブ実内径 - - - - HorizontalSpacing - Horizontal spacing between tubes in the tube bundle. - - - - - - - Horizontal Spacing - 水平間隔 - - - - チューブ束内のチューブ間水平間隔 - - - - VerticalSpacing - Vertical spacing between tubes in the tube bundle. - - - - - - - Vertical Spacing - 垂直間隔 - - - - チューブ束内のチューブ間垂直間隔 - - - - HasTurbulator - TRUE if the tube has a turbulator, FALSE if it does not. - - - - - - - Has Turbulator - かくはん器有り - - - - かくはん器有りの時 TRUE、無しの時 FALSE - - - - - - チューブ束タイプ共通プロパティ属性設定。 - - - - - Pset_TubeBundleTypeFinned - Finned tube bundle type attributes. -Contains the attributes related to the fins attached to a tube in a finned tube bundle such as is commonly found in coils. - - - IfcTubeBundle/FINNED - - IfcTubeBundle/FINNED - - - Spacing - Distance between fins on a tube in the tube bundle. - - - - - - - Spacing - 間隔 - - - - チューブ束内のフィン間の距離 - - - - Thickness - Thickness of the fin. - - - - - - - Thickness - 厚さ - - - - フィンの厚さ - - - - ThermalConductivity - The thermal conductivity of the fin. - - - - - - - Thermal Conductivity - 熱伝導率 - - - - フィンの熱伝導率 - - - - Length - Length of the fin as measured parallel to the direction of airflow. - - - - - - - Length - 長さ - - - - 気流方向に平行に計られたフィンの長さ - - - - Height - Length of the fin as measured perpendicular to the direction of airflow. - - - - - - - Height - 高さ - - - - 気流方向に垂直に計られたフィンの長さ - - - - Diameter - Actual diameter of a fin for circular fins only. - - - - - - - Diameter - 直径 - - - - 円形フィンのみ、フィンの実直径 - - - - FinCorrugatedType - Description of a fin corrugated type. - - - - - - - Fin Corrugated Type - コルゲートタイプフィン - - - - コルゲートタイプフィンの実直径 - - - - HasCoating - TRUE if the fin has a coating, FALSE if it does not. - - - - - - - Has Coating - コーティング有り - - - - フィンがコーティング有りの場合 TRUE、無しの場合FALSE - - - - - - フィンタイプチューブ束属性.一般にコイルに見られるように、フィンチューブ束内のチューブに付いているフィンに関する属性を含む - - - - - Pset_UnitaryControlElementPHistory - Properties for history and operating schedules of thermostats. HISTORY: Added in IFC4. - - - IfcUnitaryControlElement - - IfcUnitaryControlElement - - - Temperature - Indicates the current measured temperature. - - - - - Temperature - - - - - - - Mode - Indicates operation mode corresponding to Pset_UnitaryControlTypeCommon.Mode. For example, 'HEAT', 'COOL', 'AUTO'. - - - - - Mode - - - - - - - Fan - Indicates fan operation where True is on, False is off, and Unknown is automatic. - - - - - Fan - - - - - - - SetPoint - Indicates the temperature setpoint. For thermostats with setbacks or separate high and low setpoints, then the time series may contain a pair of values at each entry where the first value is the heating setpoint (low) and the second value is the cooling setpoint (high). - - - - - Set Point - - - - - - - - - - - - - Pset_UnitaryControlElementTypeCommon - Unitary control element type common attributes. HISTORY: Added in IFC4. - - - IfcUnitaryControlElement - - IfcUnitaryControlElement - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照記号 - 참조 ID - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 해당 프로젝트에서 사용이 유형에 대한 참조 ID (예 : 'A-1') ※ 기본이있는 경우 그 기호를 사용 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - Mode - Table mapping operation mode identifiers to descriptive labels, which may be used for interpreting Pset_UnitaryControlElementPHistory.Mode. - - - - - - - - - - - - - Mode - - - - - - - - - 単一のコントロール要素の共通属性。 - - - - - Pset_UnitaryControlElementTypeIndicatorPanel - Unitary control element type indicator panel attributes. HISTORY: Added in IFC4. - - - IfcUnitaryControlElement/INDICATORPANEL - - IfcUnitaryControlElement/INDICATORPANEL - - - Application - The application of the unitary control element. - - - - LiftPositionIndicator - LiftHallLantern - LiftArrivalGong - LiftCarDirectionLantern - LiftFireSystemsPort - LiftVoiceAnnouncer - OTHER - NOTKNOWN - UNSET - - - - LIFTPOSITIONINDICATOR - - Lift Position Indicator - - - - - - - LIFTHALLLANTERN - - Lift Hall Lantern - - - - - - - LIFTARRIVALGONG - - Lift Arrival Gong - - - - - - - LIFTCARDIRECTIONLANTERN - - Lift Car Direction Lantern - - - - - - - LIFTFIRESYSTEMSPORT - - Lift Fire Systems Port - - - - - - - LIFTVOICEANNOUNCER - - Lift Voice Announcer - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Application - - - - - - - - - - - - - Pset_UnitaryControlElementTypeThermostat - Unitary control element type thermostat attributes. HISTORY: Added in IFC4. - - - IfcUnitaryControlElement/THERMOSTAT - - IfcUnitaryControlElement/THERMOSTAT - - - TemperatureSetPoint - The temperature setpoint range and default setpoint. - - - - - - - Temperature Set Point - - - - - - - - - - - - - Pset_UnitaryEquipmentTypeAirConditioningUnit - Air conditioning unit equipment type attributes. -Note that these attributes were formely Pset_PackagedACUnit prior to IFC2x2. -HeatingEnergySource attribute deleted in IFC2x2 Pset Addendum: Use IfcEnergyProperties, IfcFuelProperties, etc. instead. - - - IfcUnitaryEquipment/AIRCONDITIONINGUNIT - - IfcUnitaryEquipment/AIRCONDITIONINGUNIT - - - SensibleCoolingCapacity - Sensible cooling capacity. - - - - - - - Sensible Cooling Capacity - 顕熱冷却能力 - - - - 顕熱冷却能力 - - - - LatentCoolingCapacity - Latent cooling capacity. - - - - - - - Latent Cooling Capacity - 潜熱冷却能力 - - - - 潜熱冷却能力 - - - - CoolingEfficiency - Coefficient of Performance: Ratio of cooling energy output to energy input under full load operating conditions. - - - - - - - Cooling Efficiency - 冷却効率 - - - - 性能係数全負荷運転状態でのエネルギー入力に対する冷却エネルギー出力の割合 - - - - HeatingCapacity - Heating capacity. - - - - - - - Heating Capacity - 加熱容量 - - - - 加熱容量 - - - - HeatingEfficiency - Heating efficiency under full load heating conditions. - - - - - - - Heating Efficiency - 加熱効率 - - - - 全負荷加熱状態での熱効率 - - - - CondenserFlowrate - Flow rate of fluid through the condenser. - - - - - - - Condenser Flowrate - 凝縮器流量 - - - - 凝縮器を通る流体の流量 - - - - CondenserEnteringTemperature - Temperature of fluid entering condenser. - - - - - - - Condenser Entering Temperature - 凝縮器入口温度 - - - - 凝縮器入口流体温度 - - - - CondenserLeavingTemperature - Termperature of fluid leaving condenser. - - - - - - - Condenser Leaving Temperature - 凝縮器出口温度 - - - - 凝縮器出口流体温度 - - - - OutsideAirFlowrate - Flow rate of outside air entering the unit. - - - - - - - Outside Air Flowrate - 外気流量 - - - - ユニットに入る外気流量 - - - - - - エアコンユニット - - - - - Pset_UnitaryEquipmentTypeAirHandler - Air handler unitary equipment type attributes. -Note that these attributes were formerly Pset_AirHandler prior to IFC2x2. - - - IfcUnitaryEquipment/AIRHANDLER - - IfcUnitaryEquipment/AIRHANDLER - - - AirHandlerConstruction - Enumeration defining how the air handler might be fabricated. - - - - MANUFACTUREDITEM - CONSTRUCTEDONSITE - OTHER - NOTKNOWN - UNSET - - - - MANUFACTUREDITEM - - Manufactured Item - - - - - - - CONSTRUCTEDONSITE - - Constructed On Site - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Air Handler Construction - 空調機製造 - - - - 空調機の組立方法の定義の列挙 - - - - AirHandlerFanCoilArrangement - Enumeration defining the arrangement of the supply air fan and the cooling coil. - - - - BLOWTHROUGH - DRAWTHROUGH - OTHER - NOTKNOWN - UNSET - - - - BLOWTHROUGH - - Blow Through - - - - - - - DRAWTHROUGH - - Draw Through - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Air Handler Fan Coil Arrangement - 空調機ファン・コイル配列 - - - - 給気ファンと冷却コイルの配置の定義列挙 - - - - DualDeck - Does the AirHandler have a dual deck? TRUE = Yes, FALSE = No. - - - - - - - Dual Deck - 2層 - - - - 空調機は2層になっているか -TRUE=はい、FALSE=Iいいえ - - - - - - エアハンドリングユニットのプロパティ属性設定。 - - - - - Pset_UnitaryEquipmentTypeCommon - Unitary equipment type common attributes. - - - IfcUnitaryEquipment - - IfcUnitaryEquipment - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - - - 機器共通 - - - - - Pset_UtilityConsumptionPHistory - Consumption of utility resources, typically applied to the IfcBuilding instance, used to identify how much was consumed on I.e., a monthly basis. - - - IfcBuilding - - IfcBuilding - - - Heat - The amount of heat energy consumed during the period specified in the time series. - - - - - Heat - 열 소비량 - - - - 특정 기간 동안의 열 소비. - - - - Electricity - The amount of electricity consumed during the period specified in the time series. - - - - - Electricity - 전력 소비량 - - - - 특정 기간 동안의 전력 소비. - - - - Water - The amount of water consumed during the period specified in the time series. - - - - - Water - 물소비 - - - - 특정 기간 동안 물 소비. - - - - Fuel - The amount of fuel consumed during the period specified in the time series. - - - - - Fuel - 연료 소비량 - - - - 특정 기간 동안의 연료 소비. - - - - Steam - The amount of steam consumed during the period specified in the time series. - - - - - Steam - 증기소비량 - - - - 특정 기간 동안 증기 소비. - - - - - - - - - - Pset_ValvePHistory - Valve performance history common attributes of a typical 2 port pattern type valve. - - - IfcValve - - IfcValve - - - PercentageOpen - The ratio between the amount that the valve is open to the full open position of the valve. - - - - - Percentage Open - パーセント開度 - - - - 全開時に対する開度量の比率。 - - - - MeasuredFlowRate - The rate of flow of a fluid measured across the valve. - - - - - Measured Flow Rate - 計測流量 - - - - バルブを通過する流体の計測された流量 - - - - MeasuredPressureDrop - The actual pressure drop in the fluid measured across the valve. - - - - - Measured Pressure Drop - 計測圧力降下 - - - - バルブを通過する際の計測された圧力降下 - - - - - - バルブの履歴 - - - - - Pset_ValveTypeAirRelease - Valve used to release air from a pipe or fitting. -Note that an air release valve is constrained to have a single port pattern - - - IfcValve/AIRRELEASE - - IfcValve/AIRRELEASE - - - IsAutomatic - Indication of whether the valve is automatically operated (TRUE) or manually operated (FALSE). - - - - - - - Is Automatic - 自動 - - - - 弁が自動(TRUE)で操作されるか手動(FALSE)で操作されるかの表示 - - - - - - 弁タイプ空気抜き弁 - - - - - Pset_ValveTypeCommon - Valve type common attributes. - - - IfcValve - - IfcValve - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - - - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - - - - ValvePattern - The configuration of the ports of a valve according to either the linear route taken by a fluid flowing through the valve or by the number of ports where: - -SINGLEPORT: Valve that has a single entry port from the system that it serves, the exit port being to the surrounding environment. -ANGLED_2_PORT: Valve in which the direction of flow is changed through 90 degrees. -STRAIGHT_2_PORT: Valve in which the flow is straight through. -STRAIGHT_3_PORT: Valve with three separate ports. -CROSSOVER_4_PORT: Valve with 4 separate ports. - - - - SINGLEPORT - ANGLED_2_PORT - STRAIGHT_2_PORT - STRAIGHT_3_PORT - CROSSOVER_4_PORT - OTHER - NOTKNOWN - UNSET - - - - SINGLEPORT - - Single Port - - - Valve that has a single entry port from the system that it serves, the exit port being to the surrounding environment - - - - ANGLED_2_PORT - - Angled 2 Port - - - Valve in which the direction of flow is changed through 90 degrees - - - - STRAIGHT_2_PORT - - Straight 2 Port - - - Valve in which the flow is straight through - - - - STRAIGHT_3_PORT - - Straight 3 Port - - - Valve with three separate ports - - - - CROSSOVER_4_PORT - - Crossover 4 Port - - - Valve with 4 separate ports - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Valve Pattern - 弁の形 - - - - 単一ポートSINGLEPORT()=システムで単一入口ポートを持ち、出口ポートは周囲環境である 2ポート直角型(ANGLED_2_PORT)=中で流れ方向が完全に90度変わる弁 2ポート直行型(STRAIGHT_2_PORT)=中で流れが真っ直ぐな弁 3ポート直行型(STRAIGHT_3_PORT)=3つの別々のポートを持つ 4ポート交差型(CROSSOVER_4_PORT)=4つの別々のポートを持つ - - - - ValveOperation - The method of valve operation where: - -DROPWEIGHT: A valve that is closed by the action of a weighted lever being released, the weight normally being prevented from dropping by being held by a wire, the closure normally being made by the action of heat on a fusible link in the wire -FLOAT: A valve that is opened and closed by the action of a float that rises and falls with water level. The float may be a ball attached to a lever or other mechanism -HYDRAULIC: A valve that is opened and closed by hydraulic actuation -LEVER: A valve that is opened and closed by the action of a lever rotating the gate within the valve. -LOCKSHIELD: A valve that requires the use of a special lockshield key for opening and closing, the operating mechanism being protected by a shroud during normal operation. -MOTORIZED: A valve that is opened and closed by the action of an electric motor on an actuator -PNEUMATIC: A valve that is opened and closed by pneumatic actuation -SOLENOID: A valve that is normally held open by a magnetic field in a coil acting on the gate but that is closed immediately if the electrical current generating the magnetic field is removed. -SPRING: A valve that is normally held in position by the pressure of a spring on a plate but that may be caused to open if the pressure of the fluid is sufficient to overcome the spring pressure. -THERMOSTATIC: A valve in which the ports are opened or closed to maintain a required predetermined temperature. -WHEEL: A valve that is opened and closed by the action of a wheel moving the gate within the valve. - - - - - - DROPWEIGHT - - Drop Weight - - - A valve that is closed by the action of a weighted lever being released, the weight normally being prevented from dropping by being held by a wire, the closure normally being made by the action of heat on a fusible link in the wire - - - - FLOAT - - Float - - - A valve that is opened and closed by the action of a float that rises and falls with water level - - - - HYDRAULIC - - Hydraulic - - - A valve that is opened and closed by hydraulic actuation - - - - LEVER - - Lever - - - A valve that is opened and closed by the action of a lever rotating the gate within the valve - - - - LOCKSHIELD - - Lock Shield - - - A valve that requires the use of a special lockshield key for opening and closing, the operating mechanism being protected by a shroud during normal operation - - - - MOTORIZED - - Motorized - - - A valve that is opened and closed by the action of an electric motor on an actuator - - - - PNEUMATIC - - Pneumatic - - - A valve that is opened and closed by pneumatic actuation - - - - SOLENOID - - Solenoid - - - A valve that is normally held open by a magnetic field in a coil acting on the gate but that is closed immediately if the electrical current generating the magnetic field is removed - - - - SPRING - - Spring - - - A valve that is normally held in position by the pressure of a spring on a plate but that may be caused to open if the pressure of the fluid is sufficient to overcome the spring pressure - - - - THERMOSTATIC - - Thermostatic - - - A valve in which the ports are opened or closed to maintain a required predetermined temperature - - - - WHEEL - - Wheel - - - A valve that is opened and closed by the action of a wheel moving the gate within the valve - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Valve Operation - 弁操作 - - - - The method of valve operation where:弁操作方法は以下の通り: -おもり(DROPWEIGHT)=おもりを付けられたレバーが外される動作で閉まる弁 浮き(FLOAT)=水位と共に上下する浮きの動作で開閉する弁。浮きはレバーに付けたボール又は他の機構 水力(HYDRAULIC)=水力アクチュエータで開閉する弁 レバー(LEVER)=弁内のゲートを回転させるレバーの動作で開閉する弁 ロックシールド(LOCKSHIELD)=開閉のために特別のロックシールドキーの使用を要求する弁。操作機構は通常の操作の間は覆いで保護されている 電動化(MOTORIZED)=アクチュエータに付けられた電動モータの動作で開閉する弁 空気圧(PNEUMATIC)=圧縮空気で動くアクチュエータで開閉する弁 筒型コイル(SOLENOID)=ゲートに付けられ作動しているコイルの磁界で通常は開に保たれている弁。しかし、もし磁界を発生している電流が消されたらただちに閉まる ばね(SPRING)=板に付けられたばねの圧力で、通常は位置を保たれている弁。しかし、もし流体の圧力が、ばねの圧力より十分大きければ開いてしまう。 自動温度調節(THERMOSTATIC)=前もって決められた要求温度を維持するために、中のポートが開閉する弁 ハンドル(WHEEL)=弁内のゲートを動かすハンドルの動作で開閉する弁 - - - - ValveMechanism - The mechanism by which the valve function is achieved where: - -BALL: Valve that has a ported ball that can be turned relative to the body seat ports. -BUTTERFLY: Valve in which a streamlined disc pivots about a diametric axis. -CONFIGUREDGATE: Screwdown valve in which the closing gate is shaped in a configured manner to have a more precise control of pressure and flow change across the valve. -GLAND: Valve with a tapered seating, in which a rotatable plug is retained by means of a gland and gland packing. -GLOBE: Screwdown valve that has a spherical body. -LUBRICATEDPLUG: Plug valve in which a lubricant is injected under pressure between the plug face and the body. -NEEDLE: Valve for regulating the flow in or from a pipe, in which a slender cone moves along the axis of flow to close against a fixed conical seat. -PARALLELSLIDE: Screwdown valve that has a machined plate that slides in formed grooves to form a seal. -PLUG: Valve that has a ported plug that can be turned relative to the body seat ports. -WEDGEGATE: Screwdown valve that has a wedge shaped plate fitting into tapered guides to form a seal. - - - - - - BALL - - Ball - - - Valve that has a ported ball that can be turned relative to the body seat ports - - - - BUTTERFLY - - Butterfly - - - Valve in which a streamlined disc pivots about a diametric axis - - - - CONFIGUREDGATE - - Configured Gate - - - Screwdown valve in which the closing gate is shaped in a configured manner to have a more precise control of pressure and flow change across the valve - - - - GLAND - - Gland - - - Valve with a tapered seating, in which a rotatable plug is retained by means of a gland and gland packing - - - - GLOBE - - Globe - - - Screwdown valve that has a spherical body - - - - LUBRICATEDPLUG - - Lubricated Plug - - - Plug valve in which a lubricant is injected under pressure between the plug face and the body - - - - NEEDLE - - Needle - - - Valve for regulating the flow in or from a pipe, in which a slender cone moves along the axis of flow to close against a fixed conical seat - - - - PARALLELSLIDE - - Parallel Slide - - - Screwdown valve that has a machined plate that slides in formed grooves to form a seal - - - - PLUG - - Plug - - - Plug valve in which a lubricant is injected under pressure between the plug face and the body - - - - WEDGEGATE - - Wedge Gate - - - Screwdown valve that has a wedge shaped plate fitting into tapered guides to form a seal - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Valve Mechanism - 弁機構 - - - - 機構により可能な弁機能は以下の通り: -ボール弁(BALL valve)=本体のシートポートに関連して回転できるポートボールを持つ弁 バタフライ弁(BUTTERFLY valve)=直径軸あたりに流線型の円板の旋回軸のある弁 CONFIGUREDスクリュー弁(CONFIGUREDGATE Screwdown valve)=閉鎖ゲートを持つねじ回し式弁。その弁は、弁を通過する時圧力と流量変更をより正確に制御できる方法で形づけられている グランド弁(GLAND Valve)=テーパーのついたシートを持った弁。その中に回転プラグがグランドとグランドパッキンによって保持されている グローブスクリュー弁(GLOBE Screwdown valve)= 球形の本体を持つねじ回し式弁 滑プラグ弁(LUBRICATEDPLUG Plug valve)=プラグ表面と本体との間の圧力を下げるために潤滑油が注入された弁 ニードル弁(NEEDLE Valve)=管内外の流量を調節する弁。その中に固定した円錐形のシートを閉止ために、流れの軸に沿って動く細長いコーンを持っている 平行スライドスクリュー弁(PARALLELSLIDE Screwdown valve)=機械加工されたプレートを持つねじ回し式弁。そのプレートはシールを形成するために溝の中を滑る プラグ弁(PLUG Valve)=本体のシートポートと関連して回転できる、ポートしたプラグを持つ弁 くさびゲートスクリュー弁(WEDGEGATE Screwdown valve)=シールを形成するためにテーパーの付いたガイドの中をくさび状の板部品を持つねじ回し式弁 - - - - Size - The size of the connection to the valve (or to each connection for faucets, mixing valves, etc.). - - - - - - - Size - サイズ - - - - 弁(又は、水栓、混合弁等の接続)接続サイズ - - - - TestPressure - The maximum pressure to which the valve has been subjected under test. - - - - - - - Test Pressure - 試験圧力 - - - - 試験の時、掛けられる最高圧力 - - - - WorkingPressure - The normally expected maximum working pressure of the valve. - - - - - - - Working Pressure - 運転圧力 - - - - バルブの通常予想される最高運転圧力 - - - - FlowCoefficient - Flow coefficient (the quantity of fluid that passes through a fully open valve at unit pressure drop), typically expressed as the Kv or Cv value for the valve. - - - - - - - Flow Coefficient - 流出係数 - - - - 流出係数(全開のバルブを通過する単位圧力損失当たりの流体の量)一般的にバルブのKv又はCv値で表される - - - - CloseOffRating - Close off rating. - - - - - - - Close Off Rating - クローズオフレーティング - - - - クローズオフレーティング - - - - - - 弁タイプ共通プロパティ属性設定。 - - - - - Pset_ValveTypeDrawOffCock - A small diameter valve, used to drain water from a cistern or water filled system. - - - IfcValve/DRAWOFFCOCK - - IfcValve/DRAWOFFCOCK - - - HasHoseUnion - Indicates whether the drawoff cock is fitted with a hose union connection (= TRUE) or not (= FALSE). - - - - - - - Has Hose Union - ホースユニオン付き - - - - 排水コックにホースユニオン継手が付いているかの表示.付き(= TRUE)無し (= FALSE) - - - - - - 弁タイプ排水コック - - - - - Pset_ValveTypeFaucet - A small diameter valve, with a free outlet, from which water is drawn. - - - IfcValve/FAUCET - - IfcValve/FAUCET - - - FaucetType - Defines the range of faucet types that may be specified where: - -Bib: Faucet with a horizontal inlet and a nozzle that discharges downwards. -Globe: Faucet fitted through the end of a bath, with a horizontal inlet, a partially spherical body and a vertical nozzle. -Diverter: Combination faucet assembly with a valve to enable the flow of mixed water to be transferred to a showerhead. -DividedFlowCombination: Combination faucet assembly in which hot and cold water are kept separate until emerging from a common nozzle -. -Pillar: Faucet that has a vertical inlet and a nozzle that discharges downwards -. -SingleOutletCombination = Combination faucet assembly in which hot and cold water mix before emerging from a common nozzle -. -Spray: Faucet with a spray outlet -. -SprayMixing: Spray faucet connected to hot and cold water supplies that delivers water at a temperature determined during use. - - - - BIB - GLOBE - DIVERTER - DIVIDEDFLOWCOMBINATION - PILLAR - SINGLEOUTLETCOMBINATION - SPRAY - SPRAYMIXING - OTHER - NOTKNOWN - UNSET - - - - BIB - - Bib - - - - - - - GLOBE - - Globe - - - - - - - DIVERTER - - Diverter - - - - - - - DIVIDEDFLOWCOMBINATION - - Divided Flow Combination - - - - - - - PILLAR - - Pillar - - - - - - - SINGLEOUTLETCOMBINATION - - Single Outlet Combination - - - - - - - SPRAY - - Spray - - - - - - - SPRAYMIXING - - Spray Mixing - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Faucet Type - 水栓タイプ - - - - 水栓タイプの範囲をここに明確に定義する -Bib = 入口が水平で、下に吐出するノズルの水栓 Globe =浴槽の端に付けられ、入口が水平で、本体が部分的に球形で、ノズルが垂直な水栓 Diverter =シャワーヘッドへの混合水の流れを変えられる弁を持った組合せ水栓 DividedFlowCombination = 共通のノズルから出るまで水と湯が分かれたままになっている組合せ水栓 Pillar =垂直な入口と下へ吐出するノズルを持った水栓 SingleOutletCombination =共通のノズルから出る前に水と湯が混合する組合せ水栓 Spray =スプレー状の吐出口を持った水栓 SprayMixing =使用中決められた温度で供給する給水と給湯に接続されたスプレー水栓 - - - - FaucetOperation - Defines the range of ways in which a faucet can be operated that may be specified where: - -CeramicDisc: Quick action faucet with a ceramic seal to open or close the orifice -. -LeverHandle: Quick action faucet that is operated by a lever handle -. -NonConcussiveSelfClosing: Self closing faucet that does not induce surge pressure -. -QuarterTurn: Quick action faucet that can be fully opened or shut by turning the operating mechanism through 90 degrees. -QuickAction: Faucet that can be opened or closed fully with a single small movement of the operating mechanism -. -ScrewDown: Faucet in which a plate or disc is moved, by the rotation of a screwed spindle, to close or open the orifice. -SelfClosing: Faucet that is opened by pressure of the top of an operating spindle and is closed under the action of a spring or weight when the pressure is released. -TimedSelfClosing: Self closing faucet that discharges for a predetermined period of time -. - - - - CERAMICDISC - LEVERHANDLE - NONCONCUSSIVESELFCLOSING - QUATERTURN - QUICKACTION - SCREWDOWN - SELFCLOSING - TIMEDSELFCLOSING - OTHER - NOTKNOWN - UNSET - - - - CERAMICDISC - - Ceramic Disc - - - - - - - LEVERHANDLE - - Lever Handle - - - - - - - NONCONCUSSIVESELFCLOSING - - Nonconcussive Self Closing - - - - - - - QUARTERTURN - - Quarter Turn - - - - - - - QUICKACTION - - Quick Action - - - - - - - SCREWDOWN - - Screw Down - - - - - - - SELFCLOSING - - Self Closing - - - - - - - TIMEDSELFCLOSING - - Timed Self Closing - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Faucet Operation - 水栓操作 - - - - 水栓の操作方法の範囲をここで明確に定義する: -CeramicDisc = 口を開閉するセラミックシールを持った急操作水栓 LeverHandle = レバーハンドルで操作される急操作水栓 SelfClosing =サージ圧をもたらさない自閉水栓 QuarterTurn =90度、操作機構を回すことで全開又は全閉できる急操作水栓 QuickAction =操作機構の一つの小さな動きで全開又は全閉できる水栓 ScrewDown =口を開閉するためにねじの主軸を回して中の板又は円板を動かす水栓 SelfClosing = 操作主軸の頂部の圧力で開けられ、圧力が開放された時は、ばね又は錘の動作で閉められる水栓 TimedSelfClosing =前もって決められた時間、吐出する自閉水栓 - - - - FaucetFunction - Defines the operating temperature of a faucet that may be specified. - - - - COLD - HOT - MIXED - OTHER - NOTKNOWN - UNSET - - - - COLD - - Cold - - - - - - - HOT - - Hot - - - - - - - MIXED - - Mixed - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Faucet Function - 水栓機能 - - - - 水栓の作動温度を明確に定義する。 - - - - Finish - Description of the finish applied to the faucet. - - - - - - - Finish - 仕上げ - - - - 水栓に適用される仕上げの説明 - - - - FaucetTopDescription - Description of the operating mechanism/top of the faucet. - - - - - - - Faucet Top Description - 水栓の頂部 - - - - 操作機構/水栓の頂部の説明 - - - - - - 弁タイプ水栓 - - - - - Pset_ValveTypeFlushing - Valve that flushes a predetermined quantity of water to cleanse a WC, urinal or slop hopper. -Note that a flushing valve is constrained to have a 2 port pattern. - - - IfcValve/FLUSHING - - IfcValve/FLUSHING - - - FlushingRate - The predetermined quantity of water to be flushed. - - - - - - - Flushing Rate - フラッシュ率 - - - - 予め決められた流される水量 - - - - HasIntegralShutOffDevice - Indication of whether the flushing valve has an integral shut off device fitted (set TRUE) or not (set FALSE). - - - - - - - Has Integral Shut Off Device - 全体閉止装置がついているかどうか - - - - フラッシュ弁に全体閉止装置がついているかどうかの表示(付きTRUE)又は(無しFALSE) - - - - IsHighPressure - Indication of whether the flushing valve is suitable for use on a high pressure water main (set TRUE) or not (set FALSE). - - - - - - - Is High Pressure - 高圧給水の有無 - - - - フラッシュ弁の高圧給水主管への使用が適当かどうかの表示(適 TRUE)又は(不適 FALSE) - - - - - - 弁タイプフラッシュ - - - - - Pset_ValveTypeGasTap - A small diameter valve, used to discharge gas from a system. - - - IfcValve/GASTAP - - IfcValve/GASTAP - - - HasHoseUnion - Indicates whether the gas tap is fitted with a hose union connection (= TRUE) or not (= FALSE). - - - - - - - Has Hose Union - ホースユニオン付き - - - - 排水コックにホースユニオン継手が付いているかの表示.付き -(= TRUE)無し (= FALSE) - - - - - - 弁タイプ排水コック - - - - - Pset_ValveTypeIsolating - Valve that is used to isolate system components. -Note that an isolating valve is constrained to have a 2 port pattern. - - - IfcValve/ISOLATING - - IfcValve/ISOLATING - - - IsNormallyOpen - If TRUE, the valve is normally open. If FALSE is is normally closed. - - - - - - - Is Normally Open - ノーマルオープン - - - - もし、TRUEなら弁はノーマルオープン、もし、FALSEならノーマルクローズ - - - - IsolatingPurpose - Defines the purpose for which the isolating valve is used since the way in which the valve is identified as an isolating valve may be in the context of its use. Note that unless there is a contextual name for the isolating valve (as in the case of a Landing Valve on a rising fire main), then the value assigned shoulkd be UNSET. - - - - LANDING - LANDINGWITHPRESSUREREGULATION - OTHER - NOTKNOWN - UNSET - - - - LANDING - - Landing - - - - - - - LANDINGWITHPRESSUREREGULATION - - Landing with Pressure Regulation - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Isolating Purpose - 遮断目的 - - - - その使用の前後関係から遮断弁として使われる弁があるようであれば、遮断弁が使われている理由を定義します。 -注:燃え上がる火の上のランディング弁のように、遮断弁に前後関係から別な名前がつく場合は別です。このようなとき値は定まらない。 - - - - - - 弁タイプ遮断弁 - - - - - Pset_ValveTypeMixing - A valve where typically the temperature of the outlet is determined by mixing hot and cold water inlet flows. - - - IfcValve/MIXING - - IfcValve/MIXING - - - MixerControl - Defines the form of control of the mixing valve. - - - - MANUAL - PREDEFINED - THERMOSTATIC - OTHER - NOTKNOWN - UNSET - - - - MANUAL - - Manual - - - - - - - PREDEFINED - - Predefined - - - - - - - THERMOSTATIC - - Thermostatic - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Mixer Control - 混合制御 - - - - 混合弁の制御形式の定義 - - - - OutletConnectionSize - The size of the pipework connection from the mixing valve. - - - - - - - Outlet Connection Size - 出力側接続口径 - - - - 混合弁の配管接続サイズ - - - - - - 混合弁 - - - - - Pset_ValveTypePressureReducing - Valve that reduces the pressure of a fluid immediately downstream of its position in a pipeline to a preselected value or by a predetermined ratio. -Note that a pressure reducing valve is constrained to have a 2 port pattern. - - - IfcValve/PRESSUREREDUCING - - IfcValve/PRESSUREREDUCING - - - UpstreamPressure - The operating pressure of the fluid upstream of the pressure reducing valve. - - - - - - - Upstream Pressure - 上流圧力 - - - - 減圧弁の上流の流体運転圧力 - - - - DownstreamPressure - The operating pressure of the fluid downstream of the pressure reducing valve. - - - - - - - Downstream Pressure - 下流圧力 - - - - 減圧弁の下流の流体運転圧力 - - - - - - 減圧弁 - - - - - Pset_ValveTypePressureRelief - Spring or weight loaded valve that automatically discharges to a safe place fluid that has built up to excessive pressure in pipes or fittings. -Note that a pressure relief valve is constrained to have a single port pattern. - - - IfcValve/PRESSURERELIEF - - IfcValve/PRESSURERELIEF - - - ReliefPressure - The pressure at which the spring or weight in the valve is set to discharge fluid. - - - - - - - Relief Pressure - リリーフ圧力 - - - - バルブのバネやおもりが流体を放出する作動するときの圧力。 - - - - - - リリーフ弁(逃がし弁) - - - - - Pset_VibrationIsolatorTypeCommon - Vibration isolator type common attributes. - - - IfcVibrationIsolator - - IfcVibrationIsolator - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). - - - - - - - Reference - 参照記号 - - - - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - - - - Status - - - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - - - - VibrationTransmissibility - The vibration transmissibility percentage. - - - - - - - Vibration Transmissibility - 振動伝達 - - - - 振動伝達割合 - - - - IsolatorStaticDeflection - Static deflection of the vibration isolator. - - - - - - - Isolator Static Deflection - 振動絶縁材静的たわみ - - - - 振動絶縁材の静的たわみ - - - - IsolatorCompressibility - The compressibility of the vibration isolator. - - - - - - - Isolator Compressibility - 振動絶縁材の圧縮率 - - - - 振動絶縁材の圧縮率の圧縮率 - - - - MaximumSupportedWeight - The maximum weight that can be carried by the vibration isolator. - - - - - - - Maximum Supported Weight - 最高支持重量 - - - - 振動絶縁材で支えられる最高重量 - - - - NominalHeight - Height of the vibration isolator before the application of load. - - - - - - - Height - 高さ - - - - 負荷を掛ける前の振動絶縁材の高さ - - - - - - 振動絶縁体の共通属性 - - - - - Pset_WallCommon - Properties common to the definition of all occurrences of IfcWall and IfcWallStandardCase. - - - IfcWall - - IfcWall - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as "construction type". It should be provided as an alternative to the name of the "object type", if the software does not support object types. - - - - - - - Bauteiltyp - Reference - Reference - 参照記号 - 参考号 - - - Bezeichnung zur Zusammenfassung gleichartiger Bauteile zu einem Bauteiltyp (auch Konstruktionstyp genannt). Alternativ zum Namen des "Typobjekts", insbesondere wenn die Software keine Typen unterstützt. - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1") pour désigner un "type de construction". Une alternative au nom d'un objet type lorsque les objets types ne sont pas gérés par le logiciel. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 若未采用已知的分类系统,则该属性为该项目中该类型构件的参考编号(例如,类型A-1)。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Status - Statut - 状態 - - - Status bzw. Phase des Bauteils insbesondere beim Bauen im Bestand. "Neu" (new) neues Bauteil als Ergänzung, "Bestand" (existing) bestehendes Bauteil, dass erhalten bleibt, "Abbruch" (demolish) Bauteil, das abgebrochen wird, "Temporär" (temporary) Bauteil und andere Bauelemente, die vorübergehend eingebaut werden (wie Abstützungen, etc.) - - Statut de l'élément, principalement utilisé dans les projets de rénovation et de réhabilitation. Le statut a pour valeur NOUVEAU pour un nouvel élément, EXISTANT pour un élément existant qui est conservé, DEMOLI pour un élément existant à démolir et TEMPORAIRE pour un élément temporaire (comme une structure support provisoire). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - AcousticRating - Acoustic rating for this object. -It is provided according to the national building code. It indicates the sound transmission resistance of this object by an index ratio (instead of providing full sound absorbtion values). - - - - - - - Schallschutzklasse - Acoustic Rating - IsolationAcoustique - 遮音等級 - 隔音等级 - - - Schallschutzklasse gemäß der nationalen oder regionalen Schallschutzverordnung. - - Classement acoustique de cet objet. Donné selon le Code National du Bâtiment. Il indique la résistance à la transmission du son de cet objet par une valeur de référence (au lieu de fournir les valeurs totales d'absorption du son). - 遮音等級情報。関連する建築基準法を参照。 - 该构件的隔音等级。 -该属性的依据为国家建筑规范。为表示该构件隔音效果的比率(而不是完全吸收声音的值)。 - - - - FireRating - Fire rating given according to the national fire safety classification. - - - - - - - Feuerwiderstandsklasse - Fire Rating - ResistanceAuFeu - 耐火等級 - 防火等级 - - - Feuerwiderstandasklasse gemäß der nationalen oder regionalen Brandschutzverordnung. - - Classement au feu de l'élément donné selon la classification nationale de sécurité incendie. - 主要な耐火等級。関連する建築基準法、消防法などの国家基準を参照。 - 该构件的防火等级。 -该属性的依据为国家防火安全分级。 - - - - Combustible - Indication whether the object is made from combustible material (TRUE) or not (FALSE). - - - - - - - Brennbares Material - Combustible - Combustible - 可燃性区分 - 是否可燃 - - - Angabe ob das Bauteil brennbares Material enthält (WAHR) oder nicht (FALSCH). - - Indique si l'objet est réalisé à partir de matériau combustible (VRAI) ou non (FAUX). - この部材が可燃性物質で作られているかどうかを示すブーリアン値。 - 表示该构件是否由可燃材料制成。 - - - - SurfaceSpreadOfFlame - Indication on how the flames spread around the surface, -It is given according to the national building code that governs the fire behaviour for materials. - - - - - - - Brandverhalten - Surface Spread Of Flame - SurfacePropagationFlamme - - - Beschreibung des Brandverhaltens des Bauteils gemäß der nationalen oder regionalen Brandschutzverordnung. - - Indique comment les flammes se propagent sur une surface. Indication donnée selon le Code National du Bâtiment régissant le comportement au feu des matériaux. - - - - ThermalTransmittance - Thermal transmittance coefficient (U-Value) of a material. -Here the total thermal transmittance coefficient through the wall (including all materials). - - - - - - - U-Wert - Thermal Transmittance - TransmissionThermique - 熱貫流率 - 导热系数 - - - Wärmedurchgangskoeffizient (U-Wert) der Materialschichten. -Hier der Gesamtwärmedurchgangskoeffizient der Wand (für alle Schichten). - - Coefficient de transmission thermique surfacique (U). C'est le coefficient global de transmission thermique à travers le mur (tous matériaux inclus). - 熱貫流率U値。ここでは壁を通した熱移動の方向における全体の熱還流率を示す。 - 材料的导热系数(U值)。 -表示该墙在传热方向上的整体导热系数(包括所有材料)。 - - - - IsExternal - Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building. - - - - - - - Außenbauteil - Is External - EstExterieur - 外部区分 - 是否外部构件 - - - Angabe, ob dieses Bauteil ein Aussenbauteil ist (JA) oder ein Innenbauteil (NEIN). Als Aussenbauteil grenzt es an den Aussenraum (oder Erdreich, oder Wasser). - - Indique si l'élément est conçu pour être utilisé à l'extérieur (VRAI) ou non (FAUX). Si VRAI, c'est un élément extérieur qui donne sur l'extérieur du bâtiment. - 外部の部材かどうかを示すブーリアン値。もしTRUEの場合、外部の部材で建物の外側に面している。 - 表示该构件是否设计为外部构件。若是,则该构件为外部构件,朝向建筑物的外侧。 - - - - LoadBearing - Indicates whether the object is intended to carry loads (TRUE) or not (FALSE). - - - - - - - Tragendes Bauteil - Load Bearing - Porteur - 耐力部材 - 是否承重 - - - Angabe, ob dieses Bauteil tragend ist (JA) oder nichttragend (NEIN) - - Indique si l'objet est supposé porter des charges (VRAI) ou non (FAUX). - 荷重に関係している部材かどうかを示すブーリアン値。 - 表示该对象是否需要承重。 - - - - ExtendToStructure - Indicates whether the object extend to the structure above (TRUE) or not (FALSE). - - - - - - - Raumhohe Wand - Extend To Structure - ExtensionStructure - - - Angabe , ob diese Wand raumhoch ist (WAHR), oder nicht (FALSCH). - - Indique si l'objet s'étend à la structure au-dessus (VRAI) ou non (FAUX). - - - - Compartmentation - Indication whether the object is designed to serve as a fire compartmentation (TRUE) or not (FALSE). - - - - - - - Brandabschnittsdefinierendes Bauteil - Compartmentation - Compartimentage - 防火区画 - - - Angabe, ob dieses Bauteil einen Brandabschnitt begrenzt (WAHR), oder nicht (FALSCH). - - Indique si l'objet est conçu pour assurer un compartimentage contre l'incendie (VRAI) ou non (FAUX). - 防火区画を考慮した部材かどうかを示すブーリアン値 - - - - - - Définition de l'IAI : propriétés communes à la définition de toutes les instances des classes IfcWall et IfcWallStandardCase - IfcWall(壁)オブジェクトに関する共通プロパティセット定義。 - 所有IfcWall和IfcWallStandardCase实例的定义中通用的属性。 - - - - - Pset_Warranty - An assurance given by the seller or provider of an artefact that the artefact is without defects and will operate as described for a defined period of time without failure and that if a defect does arise during that time, that it will be corrected by the seller or provider. - - - IfcElement - - IfcElement - - - WarrantyIdentifier - The identifier assigned to a warranty. - - - - - - - Warranty Identifier - - - - - - - WarrantyStartDate - The date on which the warranty commences. - - - - - - - Warranty Start Date - - - - - - - WarrantyEndDate - The date on which the warranty expires. - - - - - - - Warranty End Date - - - - - - - IsExtendedWarranty - Indication of whether this is an extended warranty whose duration is greater than that normally assigned to an artefact (=TRUE) or not (= FALSE). - - - - - - - Is Extended Warranty - - - - - - - WarrantyPeriod - The time duration during which a manufacturer or supplier guarantees or warrants the performance of an artefact. - - - - - - - Warranty Period - - - - - - - WarrantyContent - The content of the warranty. - - - - - - - Warranty Content - - - - - - - PointOfContact - The organization that should be contacted for action under the terms of the warranty. Note that the role of the organization (manufacturer, supplier, installer etc.) is determined by the IfcActorRole attribute of IfcOrganization. - - - - - - - Point Of Contact - - - - - - - Exclusions - Items, conditions or actions that may be excluded from the warranty or that may cause the warranty to become void. - - - - - - - Exclusions - - - - - - - - - - - - - Pset_WasteTerminalTypeCommon - Common properties for waste terminals. - - - IfcWasteTerminal - - IfcWasteTerminal - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), provided, if there is no classification reference to a recognized classification system used. - - - - - - - Reference - 参照記号 - - - - この規格(例、A-1)で特定のタイプの参照IDが割り当てられ、等級がなければ等級システムを使って割り当てられます。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - 状態 - - - - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - - - 廃棄接続口への共通プロパティー。 - - - - - Pset_WasteTerminalTypeFloorTrap - Pipe fitting, set into the floor, that retains liquid to prevent the passage of foul air. - - - IfcWasteTerminal/FLOORTRAP - - IfcWasteTerminal/FLOORTRAP - - - NominalBodyLength - Nominal or quoted length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the chamber of the trap. - - - - - - - Nominal Body Length - 呼称躯体長 - - - - 防臭弁の区画の半径か局所座標系のX軸に沿って測定された呼称もしくは積算された長さ。 - - - - NominalBodyWidth - Nominal or quoted length measured along the y-axis in the local coordinate system of the chamber of the trap. - - - - - - - Nominal Body Width - 呼称躯体幅 - - - - 防臭弁の区画の半径か局所座標系のY軸に沿って測定された呼称もしくは積算された長さ。 - - - - NominalBodyDepth - Nominal or quoted length measured along the z-axis in the local coordinate system of the chamber of the trap. - - - - - - - Nominal Body Depth - 呼称躯体深さ - - - - 防臭弁の区画の半径か局所座標系のZ軸に沿って測定された呼称もしくは積算された長さ。 - - - - IsForSullageWater - Indicates if the purpose of the floor trap is to receive sullage water, or if that is amongst its purposes (= TRUE), or not (= FALSE). Note that if TRUE, it is expected that an upstand or kerb will be placed around the floor trap to prevent the ingress of surface water runoff; the provision of the upstand or kerb is not dealt with in this property set. - - - - - - - Is For Sullage Water - 汚水用 - - - - 床排水防臭弁の目的が、汚水を受けることの可(=true)否(=false)を示す。 -注意:TRUEの場合、水の流入を防ぐための床防臭弁の周りに直立壁か縁石が配置され、このプロパティセットにおいては直立壁や縁石の提供は処理されない。 - - - - SpilloverLevel - The level at which water spills out of the terminal. - - - - - - - Spillover Level - 水位 - - - - 継手からの水位。 - - - - TrapType - Identifies the predefined types of waste trap used in combination with the floor trap from which the type required may be set. - - - - NONE - P_TRAP - Q_TRAP - S_TRAP - OTHER - NOTKNOWN - UNSET - - - - NONE - - None - - - - - - - P_TRAP - - P Trap - - - - - - - Q_TRAP - - Q Trap - - - - - - - S_TRAP - - S Trap - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Trap Type - 防臭弁の種類 - - - - セットされる予定の床の防臭弁と組み合わせて使われる廃棄物の防臭弁のあらかじめ定義されたタイプの識別情報。 - - - - HasStrainer - Indicates whether the gully trap has a strainer (= TRUE) or not (= FALSE). - - - - - - - Has Strainer - ろ過装置 - - - - 溝の防臭弁がろ過装置を備えているかどうか指示する。 - - - - OutletConnectionSize - Size of the outlet connection from the object. - - - - - - - Outlet Connection Size - 接続口口径 - - - - 要素からの接続口口径。 - - - - InletPatternType - Identifies the pattern of inlet connections to a trap. - -A trap may have 0,1,2,3 or 4 inlet connections and the pattern of their arrangement may vary. The enumeration makes the convention that an outlet is either vertical or is placed at the bottom (south side) of the trap (when viewed in plan). Position 1 is to the left (west), position 2 is to the top (north), position 3 is to the right (east) and position 4 is to the bottom (south). - - - - NONE - 1 - 2 - 3 - 4 - 12 - 13 - 14 - 23 - 24 - 34 - 123 - 124 - 134 - 234 - 1234 - - - - NONE - - None - - - - - - - 1 - - 1 - - - - - - - 2 - - 2 - - - - - - - 3 - - 3 - - - - - - - 4 - - 4 - - - - - - - 12 - - 12 - - - - - - - 13 - - 13 - - - - - - - 14 - - 14 - - - - - - - 23 - - 23 - - - - - - - 24 - - 24 - - - - - - - 34 - - 34 - - - - - - - 123 - - 123 - - - - - - - 124 - - 124 - - - - - - - 134 - - 134 - - - - - - - 234 - - 234 - - - - - - - 1234 - - 1234 - - - - - - - - - - Inlet Pattern Type - 吸気口種類 - - - - 防臭弁の吸気口接続口の識別情報。 - -一つの防臭弁に0.1.2.3.4.の吸気口接続口とパターンがあるときは変化する可能性があります。羅列されるとき、接続口が垂直である様子か、防臭弁の底(南)におかれます。位置1は左(西)に、位置2は上方(北)に、位置3は右(東)に、位置4は下方(南)になる。 - - - - InletConnectionSize - Size of the inlet connection(s), where used, of the inlet connections. - -Note that all inlet connections are assumed to be the same size. - - - - - - - Inlet Connection Size - 吸気口サイズ - - - - 吸気口接続口のサイズ - -注意:同サイズの吸気口接続口がないものとする。 - - - - CoverLength - The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the trap. - - - - - - - Cover Length - カバー長さ - - - - 局所座標系のX軸に沿うか、半径(円状の形の場合)で測定された防臭弁カバーの長さ。 - - - - CoverWidth - The length measured along the y-axis in the local coordinate system of the cover of the trap. - - - - - - - Cover Width - カバー幅 - - - - 局所座標系のY軸で測定された防臭弁カバーの長さ。 - - - - CoverMaterial - Material from which the cover or grating is constructed. - - - - - Cover Material - カバー材質 - - - - カバーか格子の材質。 - - - - - - 液体を溜めて汚れた空気の通過を防ぐために床に据えられる配管。 - - - - - Pset_WasteTerminalTypeFloorWaste - Pipe fitting, set into the floor, that collects waste water and discharges it to a separate trap. - - - IfcWasteTerminal/FLOORWASTE - - IfcWasteTerminal/FLOORWASTE - - - NominalBodyLength - Nominal or quoted length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the waste. - - - - - - - Nominal Body Length - 呼称躯体長 - - - - 廃棄物の区画の半径か局所座標系のX軸に沿って測定された呼称もしくは積算された長さ。 - - - - NominalBodyWidth - Nominal or quoted length measured along the y-axis in the local coordinate system of the waste. - - - - - - - Nominal Body Width - 呼称躯体幅 - - - - 廃棄物の半径か局所座標系のY軸に沿って測定された呼称もしくは積算された長さ。 - - - - NominalBodyDepth - Nominal or quoted length measured along the z-axis in the local coordinate system of the waste. - - - - - - - Nominal Body Depth - 呼称躯体深さ - - - - 廃棄物の半径か局所座標系のZ軸に沿って測定された呼称もしくは積算された長さ。 - - - - OutletConnectionSize - Size of the outlet connection from the object. - - - - - - - Outlet Connection Size - 排気口サイズ - - - - 要素からの排気口サイズ。 - - - - CoverLength - The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the waste. - - - - - - - Cover Length - カバー長さ - - - - 局所座標系のX軸に沿うか、半径(円状の形の場合)で測定された防臭弁カバーの長さ。 - - - - CoverWidth - The length measured along the y-axis in the local coordinate system of the cover of the waste. - - - - - - - Cover Width - カバー幅 - - - - 局所座標系のY軸で測定された防臭弁カバーの長さ。 - - - - - - 廃水や廃水を集めて分離する防臭弁を持つ、床に据え付けられた配管。 - - - - - Pset_WasteTerminalTypeGullySump - Pipe fitting or assembly of fittings to receive surface water or waste water, fitted with a grating or sealed cover. - - - IfcWasteTerminal/GULLYSUMP - - IfcWasteTerminal/GULLYSUMP - - - NominalSumpLength - Nominal or quoted length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the sump. - - - - - - - Nominal Sump Length - 汚水槽長さ - - - - 局所座標系のX軸に沿うか半径(円状の形の場合)で測定された、汚水槽の長さ。 - - - - NominalSumpWidth - Nominal or quoted length measured along the y-axis in the local coordinate system of the sump. - - - - - - - Nominal Sump Width - 汚水槽幅 - - - - 局所座標系のY軸に沿う形で測定され汚水槽の長さ。 - - - - NominalSumpDepth - Nominal or quoted length measured along the z-axis in the local coordinate system of the sump. - - - - - - - Nominal Sump Depth - 汚水槽深さ - - - - 局所座標系のZ軸に沿う形で測定され汚水槽の長さ。 - - - - GullyType - Identifies the predefined types of gully from which the type required may be set. - - - - VERTICAL - BACKINLET - OTHER - NOTKNOWN - UNSET - - - - VERTICAL - - Vertical - - - - - - - BACKINLET - - Backinlet - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Gully Type - 溝種類 - - - - 必要とされるタイプがセットされる溝の定義されたタイプを確認してください。 - - - - TrapType - Identifies the predefined types of trap from which the type required may be set. - - - - NONE - P_TRAP - Q_TRAP - S_TRAP - OTHER - NOTKNOWN - UNSET - - - - NONE - - None - - - - - - - P_TRAP - - P Trap - - - - - - - Q_TRAP - - Q Trap - - - - - - - S_TRAP - - S Trap - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Trap Type - 防臭弁種類 - - - - 必要とされるタイプがセットされる防臭弁の定義されたタイプを確認してください。 - - - - OutletConnectionSize - Size of the outlet connection from the object. - - - - - - - Outlet Connection Size - 排気口接続口 - - - - 要素からの排気口接続口のサイズ。 - - - - BackInletPatternType - Identifies the pattern of inlet connections to a gully trap. - -A gulley trap may have 0,1,2,3 or 4 inlet connections and the pattern of their arrangement may vary. The enumeration makes the convention that an outlet is either vertical or is placed at the bottom (south side) of the gully trap (when viewed in plan). Position 1 is to the left (west), position 2 is to the top (north), position 3 is to the right (east) and position 4 is to the bottom (south). - - 2 - | - ---------------- - ! | -1-| |-3 - ! | - ---------------- - | - 4 - - - - NONE - 1 - 2 - 3 - 4 - 12 - 13 - 14 - 23 - 24 - 34 - 123 - 124 - 134 - 234 - 1234 - - - - NONE - - None - - - - - - - 1 - - 1 - - - - - - - 2 - - 2 - - - - - - - 3 - - 3 - - - - - - - 4 - - 4 - - - - - - - 12 - - 12 - - - - - - - 13 - - 13 - - - - - - - 14 - - 14 - - - - - - - 23 - - 23 - - - - - - - 24 - - 24 - - - - - - - 34 - - 34 - - - - - - - 123 - - 123 - - - - - - - 124 - - 124 - - - - - - - 134 - - 134 - - - - - - - 234 - - 234 - - - - - - - 1234 - - 1234 - - - - - - - - - - Back Inlet Pattern Type - 背部接続口種類 - - - - 溝防臭弁の吸気口パターンを確認してください。 - -一つの溝防臭弁に0.1.2.3.4.の吸気口接続口とパターンがあるときは変化する可能性があります。表記されるときは、接続口が垂直である様子か、防臭弁の底(南)におかれます。位置1は左(西)に、位置2は上方(北)に、位置3は右(東)に、位置4は下方(南)になります。 - - - - InletConnectionSize - Size of the inlet connection(s), where used, of the inlet connections. - -Note that all inlet connections are assumed to be the same size. - - - - - - - Inlet Connection Size - 吸気口接続口サイズ - - - - 吸気口接続口のサイズ。 - -注意:同サイズの吸気口接続口がないものとします。 - - - - CoverLength - The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the gully trap. - - - - - - - Cover Length - カバーの長さ - - - - 局所座標系のX軸に沿うか、半径(円状の形の場合)で測定された溝防臭弁カバーの長さ。 - - - - CoverWidth - The length measured along the y-axis in the local coordinate system of the cover of the gully trap. - - - - - - - Cover Width - カバーの幅 - - - - 局所座標系のY軸で測定された溝防臭弁カバーの長さ。 - - - - - - 地表水や廃水を受けるためのグレーチングシールカバーに取り付けられる、取付器具や配管。 - - - - - Pset_WasteTerminalTypeGullyTrap - Pipe fitting or assembly of fittings to receive surface water or waste water, fitted with a grating or sealed cover and discharging through a trap (BS6100 330 3504 modified) - - - IfcWasteTerminal/GULLYTRAP - - IfcWasteTerminal/GULLYTRAP - - - NominalBodyLength - Nominal or quoted length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the chamber of the gully trap. - - - - - - - Nominal Body Length - 呼称躯体長 - - - - 溝防臭弁の半径か局所座標系のX軸に沿って測定された呼称もしくは積算された長さ。 - - - - NominalBodyWidth - Nominal or quoted length measured along the y-axis in the local coordinate system of the chamber of the gully trap. - - - - - - - Nominal Body Width - 呼称躯体幅 - - - - 溝防臭弁の半径か局所座標系のY軸に沿って測定された呼称もしくは積算された長さ。 - - - - NominalBodyDepth - Nominal or quoted length measured along the z-axis in the local coordinate system of the chamber of the gully trap. - - - - - - - Nominal Body Depth - 呼称躯体深さ - - - - 溝防臭弁の半径か局所座標系のZ軸に沿って測定された呼称もしくは積算された長さ。 - - - - GullyType - Identifies the predefined types of gully from which the type required may be set. - - - - VERTICAL - BACKINLET - OTHER - NOTKNOWN - UNSET - - - - VERTICAL - - Vertical - - - - - - - BACKINLET - - Backinlet - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Gully Type - 防臭弁の種類 - - - - 設置する予定の溝をあらかじめ定義でタイプを確認します。 - - - - HasStrainer - Indicates whether the gully trap has a strainer (= TRUE) or not (= FALSE). - - - - - - - Has Strainer - ろ過装置 - - - - 溝の防臭弁がろ過装置を備えているかどうかの指示。 - - - - TrapType - Identifies the predefined types of trap from which the type required may be set. - - - - NONE - P_TRAP - Q_TRAP - S_TRAP - OTHER - NOTKNOWN - UNSET - - - - NONE - - None - - - - - - - P_TRAP - - P Trap - - - - - - - Q_TRAP - - Q Trap - - - - - - - S_TRAP - - S Trap - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Trap Type - 防臭弁の種類 - - - - セットされる予定の防臭弁のあらかじめ定義されたタイプを確認します。 - - - - OutletConnectionSize - Size of the outlet connection from the object. - - - - - - - Outlet Connection Size - 排気口接続口サイズ - - - - 要素からの接続口サイズ。 - - - - BackInletPatternType - Identifies the pattern of inlet connections to a gully trap. - -A gulley trap may have 0,1,2,3 or 4 inlet connections and the pattern of their arrangement may vary. The enumeration makes the convention that an outlet is either vertical or is placed at the bottom (south side) of the gully trap (when viewed in plan). Position 1 is to the left (west), position 2 is to the top (north), position 3 is to the right (east) and position 4 is to the bottom (south). - - - - NONE - 1 - 2 - 3 - 4 - 12 - 13 - 14 - 23 - 24 - 34 - 123 - 124 - 134 - 234 - 1234 - - - - NONE - - None - - - - - - - 1 - - 1 - - - - - - - 2 - - 2 - - - - - - - 3 - - 3 - - - - - - - 4 - - 4 - - - - - - - 12 - - 12 - - - - - - - 13 - - 13 - - - - - - - 14 - - 14 - - - - - - - 23 - - 23 - - - - - - - 24 - - 24 - - - - - - - 34 - - 34 - - - - - - - 123 - - 123 - - - - - - - 124 - - 124 - - - - - - - 134 - - 134 - - - - - - - 234 - - 234 - - - - - - - 1234 - - 1234 - - - - - - - - - - Back Inlet Pattern Type - - - - - - - InletConnectionSize - Size of the inlet connection(s), where used, of the inlet connections. - -Note that all inlet connections are assumed to be the same size. - - - - - - - Inlet Connection Size - 吸気口接続口サイズ - - - - 吸気口接続口のサイズ。 - -注意:同サイズの吸気接続口がないものとします。 - - - - CoverLength - The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the gully trap. - - - - - - - Cover Length - カバーの長さ - - - - 局所座標系のX軸に沿うか、半径(円状の形の場合)で測定された溝防臭弁カバーの長さ。 - - - - CoverWidth - The length measured along the y-axis in the local coordinate system of the cover of the gully trap. - - - - - - - Cover Width - カバーの幅 - - - - 局所座標系のY軸で測定された溝防臭弁カバーの長さ。 - - - - - - 表面水や廃水を受けるために取り付けられる、取付器具や配管(BS6100 330 3504)グレーチングや防臭弁を通して排出されるよう取り付けられる。 - - - - - Pset_WasteTerminalTypeRoofDrain - Pipe fitting, set into the roof, that collects rainwater for discharge into the rainwater system. - - - IfcWasteTerminal/ROOFDRAIN - - IfcWasteTerminal/ROOFDRAIN - - - NominalBodyLength - Nominal or quoted length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the drain. - - - - - - - Nominal Body Length - 呼称躯体長 - - - - 半径か局所座標系のX軸に沿って測定された呼称もしくは積算された配管の長さ。 - - - - NominalBodyWidth - Nominal or quoted length measured along the y-axis in the local coordinate system of the drain. - - - - - - - Nominal Body Width - 呼称躯体幅 - - - - 半径か局所座標系のY軸に沿って測定された呼称もしくは積算された配管の長さ。 - - - - NominalBodyDepth - Nominal or quoted length measured along the z-axis in the local coordinate system of the drain. - - - - - - - Nominal Body Depth - 呼称躯体深さ - - - - 半径か局所座標系のZ軸に沿って測定された呼称もしくは積算された配管の長さ。 - - - - OutletConnectionSize - Size of the outlet connection from the object. - - - - - - - Outlet Connection Size - 排気口接続口サイズ - - - - 要素からの接続口口径。 - - - - CoverLength - The length measured along the x-axis in the local coordinate system or the radius (in the case of a circular shape in plan) of the cover of the drain. - - - - - - - Cover Length - カバーの長さ - - - - 局所座標系のX軸に沿うか、半径(円状の形の場合)で測定された配管カバーの長さ。 - - - - CoverWidth - The length measured along the y-axis in the local coordinate system of the cover of the drain. - - - - - - - Cover Width - カバーの幅 - - - - 局所座標系のY軸で測定された配管カバーの長さ。 - - - - - - 雨水排出設備に排出されるように雨水を集めるために屋根に設置される配管。 - - - - - Pset_WasteTerminalTypeWasteDisposalUnit - Electrically operated device that reduces kitchen or other waste into fragments small enough to be flushed into a drainage system. - - - IfcWasteTerminal/WASTEDISPOSALUNIT - - IfcWasteTerminal/WASTEDISPOSALUNIT - - - DrainConnectionSize - Size of the drain connection inlet to the waste disposal unit. - - - - - - - Drain Connection Size - 配管接続口サイズ - - - - ゴミ処理装置の吸入口配管接続口サイズ。 - - - - OutletConnectionSize - Size of the outlet connection from the waste disposal unit. - - - - - - - Outlet Connection Size - 排出口接続口サイズ - - - - ゴミ処理装置の排出口接続口サイズ。 - - - - NominalDepth - Nominal or quoted depth of the object measured from the inlet drain connection to the base of the unit. - - - - - - - Nominal Depth - 深さ - - - - 装置の基礎に配管吸入口から測定した深さ。 - - - - - - キッチンや他の廃棄において、破片を排水システムで処理されるのに十分な大きさに粉砕するよう、電気的に動作する機器。 - - - - - Pset_WasteTerminalTypeWasteTrap - Pipe fitting, set adjacent to a sanitary terminal, that retains liquid to prevent the passage of foul air. - - - IfcWasteTerminal/WASTETRAP - - IfcWasteTerminal/WASTETRAP - - - WasteTrapType - Identifies the predefined types of trap from which the type required may be set. - - - - NONE - P_TRAP - Q_TRAP - S_TRAP - OTHER - NOTKNOWN - UNSET - - - - NONE - - None - - - - - - - P_TRAP - - P Trap - - - - - - - Q_TRAP - - Q Trap - - - - - - - S_TRAP - - S Trap - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Waste Trap Type - 廃棄物防臭弁種類 - - - - 必要とされるタイプがセットされる防臭弁の定義されたタイプを確認してください。 - - - - OutletConnectionSize - Size of the outlet connection from the object. - - - - - - - Outlet Connection Size - 排出口接続口サイズ - - - - 要素からの接続口サイズ。 - - - - InletConnectionSize - Size of the inlet connection(s), where used, of the inlet connections. - -Note that all inlet connections are assumed to be the same size. - - - - - - - Inlet Connection Size - 吸気口接続口サイズ - - - - 吸気口接続口のサイズ。 - -注意:同サイズの吸気口接続口がないものとします。 - - - - - - 液体を溜めて汚れた空気の通過を防ぐよう衛生機器に隣接して設置させた配管。 - - - - - Pset_WindowCommon - Properties common to the definition of all occurrences of Window. - - - IfcWindow - - IfcWindow - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'), Also referred to as "construction type". It should be provided as an alternative to the name of the "object type", if the software does not support object types. - - - - - - - Bauteiltyp - Reference - Reference - 参照記号 - 参考号 - - - Bezeichnung zur Zusammenfassung gleichartiger Bauteile zu einem Bauteiltyp (auch Konstruktionstyp genannt). Alternativ zum Namen des "Typobjekts", insbesondere wenn die Software keine Typen unterstützt. - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1") pour désigner un "type de construction". Une alternative au nom d'un objet type lorsque les objets types ne sont pas gérés par le logiciel. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 若未采用已知的分类系统,则该属性为该项目中该类型构件的参考编号(例如,类型A-1)。 - - - - Status - Status of the element, predominately used in renovation or retrofitting projects. The status can be assigned to as "New" - element designed as new addition, "Existing" - element exists and remains, "Demolish" - element existed but is to be demolished, "Temporary" - element will exists only temporary (like a temporary support structure). - - - - NEW - EXISTING - DEMOLISH - TEMPORARY - OTHER - NOTKNOWN - UNSET - - - - NEW - element designed as new addition - - New - - - - - - - EXISTING - element exists and is to remain - - Existing - - - - - - - DEMOLISH - element exists but is to be demolished - - Demolish - - - - - - - TEMPORARY - element will exist only temporarily (such as a temporary support structure) - - Temporary - - - - - - - OTHER - - (other) - - - Value is not listed. - - - - NOTKNOWN - - (unknown) - - - Value is unknown. - - - - UNSET - - (unset) - - - Value has not been specified. - - - - - - - Status - Status - Statut - 状態 - - - Status bzw. Phase des Bauteils insbesondere beim Bauen im Bestand. "Neu" (new) neues Bauteil als Ergänzung, "Bestand" (existing) bestehendes Bauteil, dass erhalten bleibt, "Abbruch" (demolish) Bauteil, das abgebrochen wird, "Temporär" (temporary) Bauteil und andere Bauelemente, die vorübergehend eingebaut werden (wie Abstützungen, etc.) - - Statut de l'élément, principalement utilisé dans les projets de rénovation et de réhabilitation. Le statut a pour valeur NOUVEAU pour un nouvel élément, EXISTANT pour un élément existant qui est conservé, DEMOLI pour un élément existant à démolir et TEMPORAIRE pour un élément temporaire (comme une structure support provisoire). - 要素(主にリノベーションまたは改修プロジェクトにおいて)の状態。 状態は、「新規(New)」-新しく追加される要素。「既存」-要素は存在し、かつ残りもの。「破壊」-要素は存在したが、廃棄されるもの。「一時的」-一時的に存在する要素(一時的にサポートしている構造のようなもの)。 - - - - AcousticRating - Acoustic rating for this object. -It is provided according to the national building code. It indicates the sound transmission resistance of this object by an index ratio (instead of providing full sound absorbtion values). - - - - - - - Schallschutzklasse - Acoustic Rating - IsolationAcoustique - 遮音等級 - 隔音等级 - - - Schallschutzklasse gemäß der nationalen oder regionalen Schallschutzverordnung. - - Classement acoustique de cet objet. Donné selon le Code National du Bâtiment. Il indique la résistance à la transmission du son de cet objet par une valeur de référence (au lieu de fournir les valeurs totales d'absorption du son). - 遮音等級情報。関連する建築基準法を参照。 - 该构件的隔音等级。 -该属性的依据为国家建筑规范。为表示该构件隔音效果的比率(而不是完全吸收声音的值)。 - - - - FireRating - Fire rating for this object. -It is given according to the national fire safety classification. - - - - - - - Feuerwiderstandsklasse - Fire Rating - ResistanceAuFeu - 耐火等級 - 防火等级 - - - Feuerwiderstandasklasse gemäß der nationalen oder regionalen Brandschutzverordnung. - - Classement au feu de l'élément donné selon la classification nationale de sécurité incendie. - 主要な耐火等級。関連する建築基準法、消防法などの国家基準を参照。 - 该构件的防火等级。 -该属性的依据为国家防火安全分级。 - - - - SecurityRating - Index based rating system indicating security level. -It is giving according to the national building code. - - - - - - - Sicherheitsklasse - Security Rating - NiveauSecurite - 防犯等級 - 安全等级 - - - Sicherheitsklasse gemäß der nationalen oder regionalen Gebäudesicherheitsverordnung. - - Système de classification par indices, indiquant le niveau de sécurité. - 防犯等級情報。関連する基準を参照。 - 表示安全程度的参考性等级。 -该属性的依据为国家建筑规范。 - - - - IsExternal - Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external element and faces the outside of the building. - - - - - - - Außenbauteil - Is External - EstExterieur - 外部区分 - 是否外部构件 - - - Angabe, ob dieses Bauteil ein Aussenbauteil ist (JA) oder ein Innenbauteil (NEIN). Als Aussenbauteil grenzt es an den Aussenraum (oder Erdreich, oder Wasser). - - Indique si l'élément est conçu pour être utilisé à l'extérieur (VRAI) ou non (FAUX). Si VRAI, c'est un élément extérieur qui donne sur l'extérieur du bâtiment. - 外部の部材かどうかを示すブーリアン値。もしTRUEの場合、外部の部材で建物の外側に面している。 - 表示该构件是否设计为外部构件。若是,则该构件为外部构件,朝向建筑物的外侧。 - - - - Infiltration - Infiltration flowrate of outside air for the filler object based on the area of the filler object at a pressure level of 50 Pascals. It shall be used, if the length of all joints is unknown. - - - - - - - Luftdurchlässigkeit - Infiltration - TauxInfiltration - 隙間風 - 渗风量 - - - Luftaustausch über die Fugen des geschlossenen Fensters (Q-Wert). Gibt die Luftdurchlässigkeit des gesamten Fensters bei einem Luftdruckniveau von 50 Pascal an. - - Taux d'infiltration de l'air extérieur lorsqu'on soumet la porte à une pression de 50 pascals. Cette valeur sera utilisée si la longueur des joints n'est pas connue. - 隙間風の流量値。 - 在50帕斯卡压强下填充物面积上外部空气对填充物的渗透流速。在部分接缝的长度未知时应使用该属性。 - - - - ThermalTransmittance - Thermal transmittance coefficient (U-Value) of a material. -It applies to the total door construction. - - - - - - - U-Wert - Thermal Transmittance - TransmissionThermique - 熱貫流率 - 导热系数 - - - Wärmedurchgangskoeffizient (U-Wert) der Materialschichten. -Hier der Gesamtwärmedurchgangskoeffizient des Fensters. - - Coefficient de transmission thermique (U) d'un matériau. Il s'applique à l'ensemble de la fenêtre. - 熱貫流率U値。ここでは窓を通した熱移動の方向における全体の熱還流率を示す。 - 材料的导热系数(U值)。 -适用于窗的整体结构。 - - - - GlazingAreaFraction - Fraction of the glazing area relative to the total area of the filling element. -It shall be used, if the glazing area is not given separately for all panels within the filling element. - - - - - - - Glasflächenanteil - Glazing Area Fraction - FractionSurfaceVitree - ガラス率 - - - Anteil der verglasten Fläche an der Gesamtfläche des Fensters. Es ist der Reziprokwert des Rahmenanteils. - - Rapport de la surface de vitrage à la surface totale de l'ouverture. Cette propriété sera utilisée si la surface de vitrage n'est pas donnée séparément pour tous les panneaux occupant l'ouverture. - 外壁の総面積に対するガラスの面積の比率。 -ガラスの面積が外壁に含まれる全てのパネルと分離されていないときに、使用されます。 - - - - HasSillExternal - Indication whether the window opening has an external sill (TRUE) or not (FALSE). - - - - - - - Fensterbank aussen - Has Sill External - Seuil côté extérieur - - - Angabe, ob dieses Fenster mit einer äußeren Fensterbank ausgestattet ist (JA) under nicht (NEIN). - - Indique si l'ouverture est dotée d'un seuil côté extérieur (VRAI) ou non (FAUX). - - - - HasSillInternal - Indication whether the window opening has an internal sill (TRUE) or not (FALSE). - - - - - - - Fensterbank innen - Has Sill Internal - Seuil côté intérieur - - - Angabe, ob dieses Fenster mit einer inneren Fensterbank ausgestattet ist (JA) under nicht (NEIN). - - Indique si l'ouverture est dotée d'un seuil côté intérieur (VRAI) ou non (FAUX). - - - - HasDrive - Indication whether this object has an automatic drive to operate it (TRUE) or no drive (FALSE) - - - - - - - Antrieb - Has Drive - Motorisé - - - Angabe, ob dieses Bauteil einen automatischen Antrieb zum Öffnen und Schließen besitzt (JA) oder nicht (NEIN). - - Indique si cet objet est doté d'une motorisation (VRAI) ou non (FAUX). - - - - SmokeStop - Indication whether the object is designed to provide a smoke stop (TRUE) or not (FALSE). - - - - - - - Rauchschutz - Smoke Stop - CoupeFumee - - - Angabe, ob das Fenster einen Rauchschutz gemäß der nationalen oder regionalen Brandschutzverordnung gewährleistet (JA) oder nicht (NEIN). - - Indique si la porte est conçue pour une fonction coupe-fumée (VRAI) ou non (FAUX) - - - - FireExit - Indication whether this object is designed to serve as an exit in the case of fire (TRUE) or not (FALSE). Here it defines an exit window in accordance to the national building code. - - - - - - - Notausgang - Fire Exit - Sortie de secours - - - Angabe, ob das Fenster ein Notausgang gemäß der nationalen oder regionalen Brandschutzverordnung ist (JA), oder nicht (NEIN). - - Indique si cet objet est conçu pour servir de sortie en cas d'incendie (VRAI) ou non (FAUX). Définition de la sortie de secours selon le Code National. - - - - WaterTightnessRating - Water tightness rating for this object. -It is provided according to the national building code. - - - - - - - - - - MechanicalLoadRating - Mechanical load rating for this object. -It is provided according to the national building code. - - - - - - - - - - WindLoadRating - Wind load resistance rating for this object. -It is provided according to the national building code. - - - - - - - - - - - - Définition de l'IAI : propriétés communes à la définition de toutes les instances de la classe IfcWindow - IfcWindow(窓)オブジェクトに関する共通プロパティセット定義。 - 所有窗实例的定义中通用的属性。 - - - - - Pset_WorkControlCommon - Properties common to the definition of all occurrences of IfcWorkPlan and IfcWorkSchedule (subtypes of IfcWorkControl). - - - IfcWorkControl - - IfcWorkControl - - - WorkStartTime - The default time of day a task is scheduled to start. For presentation purposes, if the start time of a task matches the WorkStartTime, then applications may choose to display the date only. Conversely when entering dates without specifying time, applications may automatically append the WorkStartTime. - - - - - - - Work Start Time - 作業開始時間 - - - - 仕事開始予定のデフォルト時刻。プレゼンテーション目的のために、仕事の開始時間がWorkStartTimeと一致するならば、アプリケーションは日付だけを表示するほうを選ぶことが出来る。逆に、時間を指定することなく日付を入力した際、アプリケーションはWorkStartTimeを自動的に追加することが出来る。 - - - - WorkFinishTime - The default time of day a task is scheduled to finish. For presentation purposes, if the finish time of a task matches the WorkFinishTime, then applications may choose to display the date only. Conversely when entering dates without specifying time, applications may automatically append the WorkFinishTime. - - - - - - - Work Finish Time - 作業終了時間 - - - - 作業が終了するスケジュールのデフォルト時刻。 - - - - WorkDayDuration - The elapsed time within a worktime-based day. For presentation purposes, applications may choose to display IfcTask durations in work days where IfcTaskTime.DurationType=WORKTIME. This value must be less than or equal to 24 hours (an elapsed day); if omitted then 8 hours is assumed. - - - - - - - Work Day Duration - 作業日数 - - - - 作業時間を基にした、経過時間の日数。 - - - - WorkWeekDuration - The elapsed time within a worktime-based week. For presentation purposes, applications may choose to display IfcTask durations in work weeks where IfcTaskTime.DurationType=WORKTIME. This value must be less than or equal to 168 hours (an elapsed week); if omitted then 40 hours is assumed. - - - - - - - Work Week Duration - 作業週数 - - - - 作業時間を基にした経過時間の週数。 - - - - WorkMonthDuration - The elapsed time within a worktime-based month. For presentation purposes, applications may choose to display IfcTask durations in work months where IfcTaskTime.DurationType=WORKTIME. This value must be less than or equal to 744 hours (an elapsed month of 31 days); if omitted then 160 hours is assumed. - - - - - - - Work Month Duration - 作業月数 - - - - 作業時間を基にした経過時間の週数の月数。 - - - - - - IfcWorkPlan およびIfcWorkSchedule オブジェクト(IfcWorkControlオブジェクトのサブクラス)に関する共通プロパティセット定義。 - - - - - Pset_ZoneCommon - Properties common to the definition of all occurrences of IfcZone. - - - IfcZone - - IfcZone - - - Reference - Reference ID for this specified type in this project (e.g. type 'A-1'). Used to store the non-classification driven internal project type. - - - - - - - Reference - Reference - 参照記号 - 참조 ID - - - - Référence à l'identifiant d'un type spécifié dans le contexte du projet (exemple : "type A1"). Utilisé pour enregistrer un type sans recourir à une classification. - このプロジェクトにおける参照記号(例:A-1)。分類コードではなく内部で使用されるプロジェクトタイプとして使用されるもの。 - 이 프로젝트의 참조 ID (예 : A-1). 분류 코드가 아닌 내부에서 사용되는 프로젝트 형식으로 사용됩니다. - - - - IsExternal - Indication whether the element is designed for use in the exterior (TRUE) or not (FALSE). If (TRUE) it is an external zone at the outside of the building. - - - - - - - Is External - Est extérieur - 外部区分 - - - - Indique si l'élément est conçu pour être utilisé à l'extérieur (VRAI) ou non (FAUX). Si VRAI, c'est un élément extérieur qui donne sur l'extérieur du bâtiment. - 外部の部材かどうかを示すブーリアン値。もしTRUEの場合、外部の部材で建物の外側に面している。 - - - - GrossPlannedArea - Total planned gross area for the zone. Used for programming the zone. - - - - - - - Gross Planned Area - Surface programmée brute - 計画グロス面積 - - - - Surface programmée brute totale de la pièce. Telle que définie lors de la programmation. - 計画されたグロス面積。建物計画に際に使用。 - - - - NetPlannedArea - Total planned net area for the zone. Used for programming the zone. - - - - - - - Net Planned Area - Surface programmée nette - 計画ネット面積 - - - - Surface programmée nette totale de la pièce. Telle que définie lors de la programmation. - 計画されたネット面積。建物計画に際に使用。(通常は、柱型等を抜いた面積となる) - - - - PubliclyAccessible - Indication whether this space (in case of e.g., a toilet) is designed to serve as a publicly accessible space, e.g., for a public toilet (TRUE) or not (FALSE). - - - - - - - Publicly Accessible - AccessibleAuPublic - 公共アクセス可能性 - 공공 액세스 가능성 - - - - Indique si l'espace (par exemple des toilettes) est conçu pour être un espace accessible au public (TRUE) ou non (FALSE). - この空間が公共アクセス空間かどうかを示すブーリアン値。例:公共トイレの場合(TRUE)。そうでなければ(FALSE)。 - 가능성이 공간이 공공 액세스 공간 여부를 나타내는 부울 값입니다. 예 : 공공 화장실의 경우 TRUE/ FALSE - - - - HandicapAccessible - Indication whether this space (in case of e.g., a toilet) is designed to serve as an accessible space for handicapped people, e.g., for a public toilet (TRUE) or not (FALSE). This information is often used to declare the need for access for the disabled and for special design requirements of this space. - - - - - - - Handicap Accessible - AccesHandicapes - ハンディキャップアクセス可能性 - 핸디캠 액세스 가능성 - - - - Indique si l'élément est conçu pour être accessible aux handicapés (VRAI) ou non (FAUX). Cette information est souvent utilisée pour déclarer la nécessité d'un accès pour handicapés ou pour des contraintes spéciales de conception. - この空間がハンディキャップ者向けの空間かどうかを示す(TRUE)。例:公共トイレの場合。そうでなければ(FALSE)。この情報は、障害者向け利用の必要性や特別なデザインの必要性を示すために利用される。 - 공간이 핸디캡을위한 공간 여부를 나타내는 부울 값입니다. 예 : 공공 화장실의 경우 TRUE. 이 정보는 장애인을위한 이용의 필요성과 특별한 디자인의 필요성을 나타내기 위해 사용된다. - - - - - - Définition de l'IAI : propriétés communes à la définition de toutes les instances de la classe IfcZone - IfcZoneに関する共通プロパティセット定義。 - - diff --git a/src/Mod/CAM/App/Area.cpp b/src/Mod/CAM/App/Area.cpp index 6d94ea27c41e..bb1969a63fcd 100644 --- a/src/Mod/CAM/App/Area.cpp +++ b/src/Mod/CAM/App/Area.cpp @@ -2420,14 +2420,10 @@ void Area::makeOffset(list>& areas, #endif if (offset < 0) { - stepover = -fabs(stepover); if (count < 0) { if (!last_stepover) { last_stepover = offset * 0.5; } - else { - last_stepover = -fabs(last_stepover); - } } else { last_stepover = 0; diff --git a/src/Mod/CAM/App/PathSegmentWalker.cpp b/src/Mod/CAM/App/PathSegmentWalker.cpp index d0ebe7c5a417..2cd883ef09eb 100644 --- a/src/Mod/CAM/App/PathSegmentWalker.cpp +++ b/src/Mod/CAM/App/PathSegmentWalker.cpp @@ -150,7 +150,7 @@ void PathSegmentWalker::walk(PathSegmentVisitor& cb, const Base::Vector3d& start bool absolutecenter = false; // for mapping the coordinates to XY plane - double Base::Vector3d::*pz = &Base::Vector3d::z; + double Base::Vector3d::* pz = &Base::Vector3d::z; cb.setup(last); diff --git a/src/Mod/CAM/CAMTests/PathTestUtils.py b/src/Mod/CAM/CAMTests/PathTestUtils.py index 3e50ccf1acc2..ee0ce931d8e1 100644 --- a/src/Mod/CAM/CAMTests/PathTestUtils.py +++ b/src/Mod/CAM/CAMTests/PathTestUtils.py @@ -78,7 +78,7 @@ def assertArc(self, edge, pt1, pt2, direction="CW"): self.assertEqual(side, Path.Geom.Side.Right) def assertCircle(self, edge, pt, r): - """Verivy that edge is a circle at given location.""" + """Verify that edge is a circle at given location.""" curve = edge.Curve self.assertIs(type(curve), Part.Circle) self.assertCoincide(curve.Center, Vector(pt.x, pt.y, pt.z)) diff --git a/src/Mod/CAM/CAMTests/TestPathHelix.py b/src/Mod/CAM/CAMTests/TestPathHelix.py index 18d0df432f3c..191b364d6f0e 100644 --- a/src/Mod/CAM/CAMTests/TestPathHelix.py +++ b/src/Mod/CAM/CAMTests/TestPathHelix.py @@ -140,7 +140,7 @@ def test04(self): ) def testPathDirection(self): - """Verify that the generated paths obays the given parameters""" + """Verify that the generated paths obeys the given parameters""" helix = PathHelix.Create("Helix") def check(start_side, cut_mode, expected_direction): diff --git a/src/Mod/CAM/CAMTests/TestRefactoredTestPost.py b/src/Mod/CAM/CAMTests/TestRefactoredTestPost.py index 36b28521c4fc..ccda0a6604ca 100644 --- a/src/Mod/CAM/CAMTests/TestRefactoredTestPost.py +++ b/src/Mod/CAM/CAMTests/TestRefactoredTestPost.py @@ -299,7 +299,7 @@ def test00170(self): self.assertEqual(gcode.splitlines()[1], "G20") self.assertEqual( gcode.splitlines()[2], - "G0 X0.3937 Y0.7874 Z1.1811 A0.3937 B0.7874 C1.1811 U0.3937 V0.7874 W1.1811", + "G0 X0.3937 Y0.7874 Z1.1811 A10.0000 B20.0000 C30.0000 U0.3937 V0.7874 W1.1811", ) ############################################################################# diff --git a/src/Mod/CAM/CAMTests/TestRefactoredTestPostGCodes.py b/src/Mod/CAM/CAMTests/TestRefactoredTestPostGCodes.py index 796db4bec471..ecc499a5d810 100644 --- a/src/Mod/CAM/CAMTests/TestRefactoredTestPostGCodes.py +++ b/src/Mod/CAM/CAMTests/TestRefactoredTestPostGCodes.py @@ -116,7 +116,8 @@ def compare_third_line(self, path_string, expected, args, debug=False): # # 00000 - 00099 tests that don't fit any other category # 00100 - 09999 tests for all of the various arguments/options - # 10000 - 19999 tests for the various G codes at 10000 + 10 * g_code_value + # 10000 - 18999 tests for the various G codes at 10000 + 10 * g_code_value + # 19000 - 19999 tests for the A, B, and C axis outputs # 20000 - 29999 tests for the various M codes at 20000 + 10 * m_code_value # ############################################################################# @@ -166,7 +167,7 @@ def test10010(self): self.compare_third_line( "G1 X10 Y20 Z30 A40 B50 C60 U70 V80 W90 F1.23456", ( - "G1 X0.3937 Y0.7874 Z1.1811 A1.5748 B1.9685 C2.3622 " + "G1 X0.3937 Y0.7874 Z1.1811 A40.0000 B50.0000 C60.0000 " "U2.7559 V3.1496 W3.5433 F2.9163" ), "--inches", @@ -497,7 +498,7 @@ def test10431(self): "G43.1 X1.234567 Y2.345678 Z3.456789 A4.567891 B5.678912 C6.789123 " "U7.891234 V8.912345 W9.123456" ), - ("G43.1 X0.0486 Y0.0923 Z0.1361 A0.1798 B0.2236 C0.2673 " "U0.3107 V0.3509 W0.3592"), + ("G43.1 X0.0486 Y0.0923 Z0.1361 A4.5679 B5.6789 C6.7891 " "U0.3107 V0.3509 W0.3592"), "--inches", ) @@ -546,7 +547,7 @@ def test10520(self): ], """G90 G20 -G52 X0.0486 Y0.0923 Z0.1361 A0.1798 B0.2236 C0.2673 U0.3107 V0.3509 W0.3592 +G52 X0.0486 Y0.0923 Z0.1361 A4.5679 B5.6789 C6.7891 U0.3107 V0.3509 W0.3592 G52 X0.0000 Y0.0000 Z0.0000 A0.0000 B0.0000 C0.0000 U0.0000 V0.0000 W0.0000 """, "--inches", @@ -1408,3 +1409,265 @@ def test10980(self): def test10990(self): """Test G99 command Generation.""" self.compare_third_line("G99", "G99", "") + + ############################################################################# + ############################################################################# + # Testing A, B, & C axes outputs (in a great deal of detail :-) + ############################################################################# + ############################################################################# + + def test19100(self): + """Test the individual A, B, and C axes output for picked values""" + axis_test_values = ( + # between 0 and 90 degrees + ("40", "40.000", "40.0000"), + # 89 degrees + ("89", "89.000", "89.0000"), + # 90 degrees + ("90", "90.000", "90.0000"), + # 91 degrees + ("91", "91.000", "91.0000"), + # between 90 and 180 degrees + ("100", "100.000", "100.0000"), + # between 180 and 360 degrees + ("240", "240.000", "240.0000"), + # over 360 degrees + ("440", "440.000", "440.0000"), + # between 0 and -90 degrees + ("-40", "-40.000", "-40.0000"), + # -89 degrees + ("-89", "-89.000", "-89.0000"), + # -90 degrees + ("-90", "-90.000", "-90.0000"), + # -91 degrees + ("-91", "-91.000", "-91.0000"), + # between -90 and -180 degrees + ("-100", "-100.000", "-100.0000"), + # between -180 and -360 degrees + ("-240", "-240.000", "-240.0000"), + # below -360 degrees + ("-440", "-440.000", "-440.0000"), + ) + for ( + input_value, + metric_output_expected, + inches_output_expected, + ) in axis_test_values: + for axis_name in ("A", "B", "C"): + with self.subTest( + "individual axis test", axis_name=axis_name, input_value=input_value + ): + self.compare_third_line( + f"G1 X10 Y20 Z30 {axis_name}{input_value}", + f"G1 X10.000 Y20.000 Z30.000 {axis_name}{metric_output_expected}", + "", + ) + self.compare_third_line( + f"G1 X10 Y20 Z30 {axis_name}{input_value}", + f"G1 X0.3937 Y0.7874 Z1.1811 {axis_name}{inches_output_expected}", + "--inches", + ) + + ############################################################################# + + def test19110(self): + """Test the combined A, B, and C axes output for picked values""" + axis_test_values = ( + # between 0 and 90 degrees + ( + "40", + "40.000", + "40.0000", + "50", + "50.000", + "50.0000", + "60", + "60.000", + "60.0000", + ), + # 89 degrees + ( + "89", + "89.000", + "89.0000", + "89", + "89.000", + "89.0000", + "89", + "89.000", + "89.0000", + ), + # 90 degrees + ( + "90", + "90.000", + "90.0000", + "90", + "90.000", + "90.0000", + "90", + "90.000", + "90.0000", + ), + # 91 degrees + ( + "91", + "91.000", + "91.0000", + "91", + "91.000", + "91.0000", + "91", + "91.000", + "91.0000", + ), + # between 90 and 180 degrees + ( + "100", + "100.000", + "100.0000", + "110", + "110.000", + "110.0000", + "120", + "120.000", + "120.0000", + ), + # between 180 and 360 degrees + ( + "240", + "240.000", + "240.0000", + "250", + "250.000", + "250.0000", + "260", + "260.000", + "260.0000", + ), + # over 360 degrees + ( + "440", + "440.000", + "440.0000", + "450", + "450.000", + "450.0000", + "460", + "460.000", + "460.0000", + ), + # between 0 and -90 degrees + ( + "-40", + "-40.000", + "-40.0000", + "-50", + "-50.000", + "-50.0000", + "-60", + "-60.000", + "-60.0000", + ), + # -89 degrees + ( + "-89", + "-89.000", + "-89.0000", + "-89", + "-89.000", + "-89.0000", + "-89", + "-89.000", + "-89.0000", + ), + # -90 degrees + ( + "-90", + "-90.000", + "-90.0000", + "-90", + "-90.000", + "-90.0000", + "-90", + "-90.000", + "-90.0000", + ), + # -91 degrees + ( + "-91", + "-91.000", + "-91.0000", + "-91", + "-91.000", + "-91.0000", + "-91", + "-91.000", + "-91.0000", + ), + # between -90 and -180 degrees + ( + "-100", + "-100.000", + "-100.0000", + "-110", + "-110.000", + "-110.0000", + "-120", + "-120.000", + "-120.0000", + ), + # between -180 and -360 degrees + ( + "-240", + "-240.000", + "-240.0000", + "-250", + "-250.000", + "-250.0000", + "-260", + "-260.000", + "-260.0000", + ), + # below -360 degrees + ( + "-440", + "-440.000", + "-440.0000", + "-450", + "-450.000", + "-450.0000", + "-460", + "-460.000", + "-460.0000", + ), + ) + for ( + a_input_value, + a_metric_output_expected, + a_inches_output_expected, + b_input_value, + b_metric_output_expected, + b_inches_output_expected, + c_input_value, + c_metric_output_expected, + c_inches_output_expected, + ) in axis_test_values: + with self.subTest( + "combined axes test", + a_input_value=a_input_value, + b_input_value=b_input_value, + c_input_value=c_input_value, + ): + self.compare_third_line( + f"G1 X10 Y20 Z30 A{a_input_value} B{b_input_value} C{c_input_value}", + f"G1 X10.000 Y20.000 Z30.000 A{a_metric_output_expected} " + f"B{b_metric_output_expected} C{c_metric_output_expected}", + "", + ) + self.compare_third_line( + f"G1 X10 Y20 Z30 A{a_input_value} B{b_input_value} C{c_input_value}", + f"G1 X0.3937 Y0.7874 Z1.1811 A{a_inches_output_expected} " + f"B{b_inches_output_expected} C{c_inches_output_expected}", + "--inches", + ) diff --git a/src/Mod/CAM/Gui/Resources/panels/PageOpProfileFullEdit.ui b/src/Mod/CAM/Gui/Resources/panels/PageOpProfileFullEdit.ui index 4b6ced799d77..8c539a4a51a6 100644 --- a/src/Mod/CAM/Gui/Resources/panels/PageOpProfileFullEdit.ui +++ b/src/Mod/CAM/Gui/Resources/panels/PageOpProfileFullEdit.ui @@ -115,6 +115,43 @@ + + + + Number of Passes + + + + + + + 1 + + + The number of passes to do. If more than one, requires a non-zero value for Pass Stepover. + + + + + + + Pass Stepover + + + + + + + + 0 + 0 + + + + If doing multiple passes, the extra offset of each additional pass. + + + diff --git a/src/Mod/CAM/Gui/ViewProviderPath.cpp b/src/Mod/CAM/Gui/ViewProviderPath.cpp index d380c66d9af3..8723fdbf67f0 100644 --- a/src/Mod/CAM/Gui/ViewProviderPath.cpp +++ b/src/Mod/CAM/Gui/ViewProviderPath.cpp @@ -255,7 +255,7 @@ ViewProviderPath::ViewProviderPath() pArrow->set("zAxis.appearance.drawStyle", "style INVISIBLE"); pArrow->set("zHead.transform", "translation 0 0 0"); pArrowScale->setPart("shape", pArrow); - pArrowScale->scaleFactor = 1.0f; + pArrowScale->scaleFactor = 2.0f; pArrowGroup->addChild(pArrowScale); pcArrowSwitch->addChild(pArrowGroup); diff --git a/src/Mod/CAM/Path/Dressup/Gui/Tags.py b/src/Mod/CAM/Path/Dressup/Gui/Tags.py index 6e3eefc6a2bd..6aaad766d81a 100644 --- a/src/Mod/CAM/Path/Dressup/Gui/Tags.py +++ b/src/Mod/CAM/Path/Dressup/Gui/Tags.py @@ -330,7 +330,7 @@ def __init__(self, point, colors): self.sphere = coin.SoSphere() self.scale = coin.SoType.fromName("SoShapeScale").createInstance() self.scale.setPart("shape", self.sphere) - self.scale.scaleFactor.setValue(7) + self.scale.scaleFactor.setValue(14) self.material = coin.SoMaterial() self.sep.addChild(self.pos) self.sep.addChild(self.material) diff --git a/src/Mod/CAM/Path/Main/Gui/Job.py b/src/Mod/CAM/Path/Main/Gui/Job.py index f9507401b68b..4499d992b65e 100644 --- a/src/Mod/CAM/Path/Main/Gui/Job.py +++ b/src/Mod/CAM/Path/Main/Gui/Job.py @@ -150,7 +150,7 @@ def attach(self, vobj): self.sca = coin.SoType.fromName("SoShapeScale").createInstance() self.sca.setPart("shape", self.axs) - self.sca.scaleFactor.setValue(1) # Keep or adjust if needed + self.sca.scaleFactor.setValue(2) # Keep or adjust if needed self.mat = coin.SoMaterial() # Set sphere color to bright yellow @@ -161,7 +161,7 @@ def attach(self, vobj): self.scs = coin.SoType.fromName("SoShapeScale").createInstance() self.scs.setPart("shape", self.sph) # Increase the scaleFactor to make the sphere larger - self.scs.scaleFactor.setValue(10) # Adjust this value as needed + self.scs.scaleFactor.setValue(20) # Adjust this value as needed self.sep.addChild(self.sca) self.sep.addChild(self.mat) diff --git a/src/Mod/CAM/Path/Op/Gui/Profile.py b/src/Mod/CAM/Path/Op/Gui/Profile.py index a9ce0367875b..f7aa0aff228d 100644 --- a/src/Mod/CAM/Path/Op/Gui/Profile.py +++ b/src/Mod/CAM/Path/Op/Gui/Profile.py @@ -77,6 +77,8 @@ def getFields(self, obj): if obj.Direction != str(self.form.direction.currentData()): obj.Direction = str(self.form.direction.currentData()) PathGuiUtil.updateInputField(obj, "OffsetExtra", self.form.extraOffset) + obj.NumPasses = self.form.numPasses.value() + PathGuiUtil.updateInputField(obj, "Stepover", self.form.stepover) if obj.UseComp != self.form.useCompensation.isChecked(): obj.UseComp = self.form.useCompensation.isChecked() @@ -100,6 +102,10 @@ def setFields(self, obj): self.form.extraOffset.setText( FreeCAD.Units.Quantity(obj.OffsetExtra.Value, FreeCAD.Units.Length).UserString ) + self.form.numPasses.setValue(obj.NumPasses) + self.form.stepover.setText( + FreeCAD.Units.Quantity(obj.Stepover.Value, FreeCAD.Units.Length).UserString + ) self.form.useCompensation.setChecked(obj.UseComp) self.form.useStartPoint.setChecked(obj.UseStartPoint) @@ -117,6 +123,8 @@ def getSignalsForUpdate(self, obj): signals.append(self.form.cutSide.currentIndexChanged) signals.append(self.form.direction.currentIndexChanged) signals.append(self.form.extraOffset.editingFinished) + signals.append(self.form.numPasses.editingFinished) + signals.append(self.form.stepover.editingFinished) signals.append(self.form.useCompensation.stateChanged) signals.append(self.form.useStartPoint.stateChanged) signals.append(self.form.processHoles.stateChanged) @@ -148,8 +156,11 @@ def updateVisibility(self): self.form.processHoles.hide() self.form.processPerimeter.hide() + self.form.stepover.setEnabled(self.obj.NumPasses > 1) + def registerSignalHandlers(self, obj): self.form.useCompensation.stateChanged.connect(self.updateVisibility) + self.form.numPasses.editingFinished.connect(self.updateVisibility) # Eclass diff --git a/src/Mod/CAM/Path/Op/Profile.py b/src/Mod/CAM/Path/Op/Profile.py index b2037e5494bf..e19bdac9c433 100644 --- a/src/Mod/CAM/Path/Op/Profile.py +++ b/src/Mod/CAM/Path/Op/Profile.py @@ -172,6 +172,24 @@ def areaOpProperties(self): "App::Property", "Make True, if using Cutter Radius Compensation" ), ), + ( + "App::PropertyInteger", + "NumPasses", + "Profile", + QT_TRANSLATE_NOOP( + "App::Property", + "The number of passes to do. If more than one, requires a non-zero value for Stepover", + ), + ), + ( + "App::PropertyDistance", + "Stepover", + "Profile", + QT_TRANSLATE_NOOP( + "App::Property", + "If doing multiple passes, the extra offset of each additional pass", + ), + ), ] @classmethod @@ -235,6 +253,8 @@ def areaOpPropertyDefaults(self, obj, job): "processCircles": False, "processHoles": False, "processPerimeter": True, + "Stepover": 0, + "NumPasses": 1, } def areaOpApplyPropertyDefaults(self, obj, job, propList): @@ -295,6 +315,26 @@ def areaOpOnDocumentRestored(self, obj): self.initAreaOpProperties(obj, warn=True) self.areaOpSetDefaultValues(obj, PathUtils.findParentJob(obj)) self.setOpEditorProperties(obj) + if not hasattr(obj, "NumPasses"): + obj.addProperty( + "App::PropertyInteger", + "NumPasses", + "Profile", + QT_TRANSLATE_NOOP( + "App::Property", + "The number of passes to do. Requires a non-zero value for Stepover", + ), + ) + if not hasattr(obj, "Stepover"): + obj.addProperty( + "App::PropertyDistance", + "Stepover", + "Profile", + QT_TRANSLATE_NOOP( + "App::Property", + "If doing multiple passes, the extra offset of each additional pass", + ), + ) def areaOpOnChanged(self, obj, prop): """areaOpOnChanged(obj, prop) ... updates certain property visibilities depending on changed properties.""" @@ -311,13 +351,31 @@ def areaOpAreaParams(self, obj, isHole): params["SectionCount"] = -1 offset = obj.OffsetExtra.Value # 0.0 + num_passes = max(1, obj.NumPasses) + stepover = obj.Stepover.Value + if num_passes > 1 and stepover == 0: + # This check is important because C++ code has a default value for stepover if it's 0 and extra passes are requested + num_passes = 1 + Path.Log.warning( + "Multipass profile requires a non-zero stepover. Reducing to a single pass." + ) + if obj.UseComp: offset = self.radius + obj.OffsetExtra.Value if obj.Side == "Inside": offset = 0 - offset + stepover = -stepover if isHole: offset = 0 - offset + stepover = -stepover + + # Modify offset and stepover to do passes from most-offset to least + offset += stepover * (num_passes - 1) + stepover = -stepover + params["Offset"] = offset + params["ExtraPass"] = num_passes - 1 + params["Stepover"] = stepover jointype = ["Round", "Square", "Miter"] params["JoinType"] = jointype.index(obj.JoinType) @@ -356,6 +414,10 @@ def areaOpPathParams(self, obj, isHole): else: params["orientation"] = 0 + if obj.NumPasses > 1: + # Disable path sorting to ensure that offsets appear in order, from farthest offset to closest, on all layers + params["sort_mode"] = 0 + return params def areaOpUseProjection(self, obj): @@ -590,7 +652,11 @@ def _processEdges(self, obj, remainingObjBaseFeatures): if flattened and zDiff >= self.JOB.GeometryTolerance.Value: cutWireObjs = False openEdges = [] - passOffsets = [self.ofstRadius] + params = self.areaOpAreaParams(obj, False) + passOffsets = [ + self.ofstRadius + i * abs(params["Stepover"]) + for i in range(params["ExtraPass"] + 1) + ][::-1] (origWire, flatWire) = flattened self._addDebugObject("FlatWire", flatWire) diff --git a/src/Mod/CAM/Path/Post/Processor.py b/src/Mod/CAM/Path/Post/Processor.py index 073315ba6c65..a643acfd75cc 100644 --- a/src/Mod/CAM/Path/Post/Processor.py +++ b/src/Mod/CAM/Path/Post/Processor.py @@ -130,12 +130,10 @@ def _buildPostList(self): exportObjectsWith() for final posting.""" def __fixtureSetup(order, fixture, job): - """Convert a Fixure setting to _TempObject instance with a G0 move to a + """Convert a Fixture setting to _TempObject instance with a G0 move to a safe height every time the fixture coordinate system change. Skip the move for first fixture, to avoid moving before tool and tool - height compensation is enabled. - - """ + height compensation is enabled.""" fobj = _TempObject() c1 = Path.Command(fixture) @@ -292,7 +290,7 @@ def __init__(self, job, script_path, *args, **kwargs): self.load_script() def load_script(self): - # Dynamically load the script as a module + """Dynamically load the script as a module.""" try: spec = importlib.util.spec_from_file_location("script_module", self.script_path) self.script_module = importlib.util.module_from_spec(spec) @@ -309,7 +307,7 @@ def load_script(self): self._tooltipargs = getattr(self.script_module, "TOOLTIP_ARGS", []) def export(self): - # Dynamically reload the module for the export to ensure up-to-date usage + """Dynamically reload the module for the export to ensure up-to-date usage.""" postables = self._buildPostList() Path.Log.debug(f"postables count: {len(postables)}") diff --git a/src/Mod/CAM/Path/Post/UtilsParse.py b/src/Mod/CAM/Path/Post/UtilsParse.py index 5a7518ebb181..bcd3963e16fc 100644 --- a/src/Mod/CAM/Path/Post/UtilsParse.py +++ b/src/Mod/CAM/Path/Post/UtilsParse.py @@ -318,6 +318,25 @@ def default_Q_parameter( return "" +def default_rotary_parameter( + values: Values, + command: str, # pylint: disable=unused-argument + param: str, + param_value: PathParameter, + current_location: PathParameters, +) -> str: + """Process a rotarty parameter (such as A, B, and C).""" + if ( + not values["OUTPUT_DOUBLES"] + and param in current_location + and current_location[param] == param_value + ): + return "" + # unlike other axis, rotary axis such as A, B, and C are always in degrees + # and should not be converted when in --inches mode + return str(format(float(param_value), f'.{str(values["AXIS_PRECISION"])}f')) + + def default_S_parameter( values: Values, command: str, # pylint: disable=unused-argument @@ -473,9 +492,9 @@ def init_parameter_functions(parameter_functions: Dict[str, ParameterFunction]) parameter: str default_parameter_functions = { - "A": default_axis_parameter, - "B": default_axis_parameter, - "C": default_axis_parameter, + "A": default_rotary_parameter, + "B": default_rotary_parameter, + "C": default_rotary_parameter, "D": default_D_parameter, "E": default_length_parameter, "F": default_F_parameter, diff --git a/src/Mod/Draft/CMakeLists.txt b/src/Mod/Draft/CMakeLists.txt index 3a70b64b33f6..080a68063d58 100644 --- a/src/Mod/Draft/CMakeLists.txt +++ b/src/Mod/Draft/CMakeLists.txt @@ -48,22 +48,23 @@ SET (Draft_geoutils SET(Draft_tests drafttests/__init__.py + drafttests/README.md drafttests/auxiliary.py + drafttests/draft_test_objects.py + drafttests/test_airfoildat.py + drafttests/test_array.py + drafttests/test_base.py + drafttests/test_creation.py + drafttests/test_draftgeomutils.py + drafttests/test_dwg.py + drafttests/test_dxf.py drafttests/test_import.py drafttests/test_import_gui.py drafttests/test_import_tools.py - drafttests/test_pivy.py - drafttests/test_array.py - drafttests/test_creation.py drafttests/test_modification.py - drafttests/test_svg.py - drafttests/test_dxf.py - drafttests/test_dwg.py drafttests/test_oca.py - drafttests/test_airfoildat.py - drafttests/test_draftgeomutils.py - drafttests/draft_test_objects.py - drafttests/README.md + drafttests/test_pivy.py + drafttests/test_svg.py ) SET(Draft_utilities diff --git a/src/Mod/Draft/Draft.py b/src/Mod/Draft/Draft.py index 31181ca07c48..7e097b01646e 100644 --- a/src/Mod/Draft/Draft.py +++ b/src/Mod/Draft/Draft.py @@ -79,9 +79,7 @@ compareObjects, shapify, filter_objects_for_modifiers, - filterObjectsForModifiers, - is_closed_edge, - isClosedEdge) + is_closed_edge) from draftutils.utils import (string_encode_coin, stringencodecoin, @@ -155,27 +153,21 @@ from draftfunctions.move import (move, move_vertex, - moveVertex, move_edge, - moveEdge, - copy_moved_edges, - copyMovedEdges) + copy_moved_edge, + copy_moved_edges) from draftfunctions.rotate import (rotate, rotate_vertex, - rotateVertex, rotate_edge, - rotateEdge, - copy_rotated_edges, - copyRotatedEdges) + copy_rotated_edge, + copy_rotated_edges) from draftfunctions.scale import (scale, scale_vertex, - scaleVertex, scale_edge, - scaleEdge, - copy_scaled_edges, - copyScaledEdges) + copy_scaled_edge, + copy_scaled_edges) from draftfunctions.join import (join_wires, joinWires, diff --git a/src/Mod/Draft/DraftGui.py b/src/Mod/Draft/DraftGui.py index 369f5a9aa5ba..5bbfe54e978b 100644 --- a/src/Mod/Draft/DraftGui.py +++ b/src/Mod/Draft/DraftGui.py @@ -1719,7 +1719,7 @@ def update(self): def addElement(self): if self.obj: - for sel in FreeCADGui.Selection.getSelectionEx(): + for sel in FreeCADGui.Selection.getSelectionEx("", 0): if sel.HasSubObjects: obj = sel.Object for elt in sel.SubElementNames: diff --git a/src/Mod/Draft/Resources/ui/preferences-draftsnap.ui b/src/Mod/Draft/Resources/ui/preferences-draftsnap.ui index 2393fe6ba712..ea6c9b533c55 100644 --- a/src/Mod/Draft/Resources/ui/preferences-draftsnap.ui +++ b/src/Mod/Draft/Resources/ui/preferences-draftsnap.ui @@ -354,7 +354,7 @@ Major grid lines are thicker than minor grid lines.
255 170 - 255 + 0 diff --git a/src/Mod/Draft/TestDraft.py b/src/Mod/Draft/TestDraft.py index 82bf1915dea1..61b6c33ba479 100644 --- a/src/Mod/Draft/TestDraft.py +++ b/src/Mod/Draft/TestDraft.py @@ -105,9 +105,9 @@ from drafttests.test_draftgeomutils import TestDraftGeomUtils as DraftTest04 # Handling of file formats tests -from drafttests.test_svg import DraftSVG as DraftTest05 -from drafttests.test_dxf import DraftDXF as DraftTest06 -from drafttests.test_dwg import DraftDWG as DraftTest07 +# from drafttests.test_svg import DraftSVG as DraftTest05 +# from drafttests.test_dxf import DraftDXF as DraftTest06 +# from drafttests.test_dwg import DraftDWG as DraftTest07 # from drafttests.test_oca import DraftOCA as DraftTest08 # from drafttests.test_airfoildat import DraftAirfoilDAT as DraftTest09 from drafttests.test_array import DraftArray as DraftTest10 @@ -117,9 +117,9 @@ True if DraftTest02 else False True if DraftTest03 else False True if DraftTest04 else False -True if DraftTest05 else False -True if DraftTest06 else False -True if DraftTest07 else False +# True if DraftTest05 else False +# True if DraftTest06 else False +# True if DraftTest07 else False # True if DraftTest08 else False # True if DraftTest09 else False True if DraftTest10 else False diff --git a/src/Mod/Draft/WorkingPlane.py b/src/Mod/Draft/WorkingPlane.py index 34d6480a6d74..9c1820dc290b 100644 --- a/src/Mod/Draft/WorkingPlane.py +++ b/src/Mod/Draft/WorkingPlane.py @@ -1275,6 +1275,10 @@ def align_to_selection(self, offset=0, _hist_add=True): ret = self.align_to_wp_proxy(obj, offset, place, _hist_add) elif typ == "BuildingPart": ret = self.align_to_wp_proxy(obj, offset, place * obj.Placement, _hist_add) + elif typ == "IfcBuildingStorey": + pl = FreeCAD.Placement(obj.Placement) + pl.move(FreeCAD.Vector(0,0,obj.Elevation.Value)) + ret = self.align_to_wp_proxy(obj, offset, place * pl, _hist_add) elif shape.isNull(): ret = self.align_to_obj_placement(obj, offset, place, _hist_add) elif shape.ShapeType == "Face": diff --git a/src/Mod/Draft/draftfunctions/move.py b/src/Mod/Draft/draftfunctions/move.py index f7e84ef9a1de..6108a492dc15 100644 --- a/src/Mod/Draft/draftfunctions/move.py +++ b/src/Mod/Draft/draftfunctions/move.py @@ -176,24 +176,18 @@ def move_vertex(object, vertex_index, vector): object.Points = points -moveVertex = move_vertex - - def move_edge(object, edge_index, vector): """ Needed for SubObjects modifiers. Implemented by Dion Moult during 0.19 dev cycle (works only with Draft Wire). """ move_vertex(object, edge_index, vector) - if utils.isClosedEdge(edge_index, object): + if utils.is_closed_edge(edge_index, object): move_vertex(object, 0, vector) else: move_vertex(object, edge_index+1, vector) -moveEdge = move_edge - - def copy_moved_edges(arguments): """ Needed for SubObjects modifiers. @@ -205,16 +199,13 @@ def copy_moved_edges(arguments): join.join_wires(copied_edges) -copyMovedEdges = copy_moved_edges - - def copy_moved_edge(object, edge_index, vector): """ Needed for SubObjects modifiers. Implemented by Dion Moult during 0.19 dev cycle (works only with Draft Wire). """ vertex1 = object.getGlobalPlacement().multVec(object.Points[edge_index]).add(vector) - if utils.isClosedEdge(edge_index, object): + if utils.is_closed_edge(edge_index, object): vertex2 = object.getGlobalPlacement().multVec(object.Points[0]).add(vector) else: vertex2 = object.getGlobalPlacement().multVec(object.Points[edge_index+1]).add(vector) diff --git a/src/Mod/Draft/draftfunctions/rotate.py b/src/Mod/Draft/draftfunctions/rotate.py index 1afb9e65e25d..9dc13bfee2c7 100644 --- a/src/Mod/Draft/draftfunctions/rotate.py +++ b/src/Mod/Draft/draftfunctions/rotate.py @@ -182,9 +182,6 @@ def rotate_vertex(object, vertex_index, angle, center, axis): object.Points = points -rotateVertex = rotate_vertex - - def rotate_vector_from_center(vector, angle, axis, center): """ Needed for SubObjects modifiers. @@ -195,24 +192,18 @@ def rotate_vector_from_center(vector, angle, axis, center): return center.add(rv) -rotateVectorFromCenter = rotate_vector_from_center - - def rotate_edge(object, edge_index, angle, center, axis): """ Needed for SubObjects modifiers. Implemented by Dion Moult during 0.19 dev cycle (works only with Draft Wire). """ rotate_vertex(object, edge_index, angle, center, axis) - if utils.isClosedEdge(edge_index, object): + if utils.is_closed_edge(edge_index, object): rotate_vertex(object, 0, angle, center, axis) else: rotate_vertex(object, edge_index+1, angle, center, axis) -rotateEdge = rotate_edge - - def copy_rotated_edges(arguments): """ Needed for SubObjects modifiers. @@ -225,9 +216,6 @@ def copy_rotated_edges(arguments): join.join_wires(copied_edges) -copyRotatedEdges = copy_rotated_edges - - def copy_rotated_edge(object, edge_index, angle, center, axis): """ Needed for SubObjects modifiers. @@ -236,7 +224,7 @@ def copy_rotated_edge(object, edge_index, angle, center, axis): vertex1 = rotate_vector_from_center( object.getGlobalPlacement().multVec(object.Points[edge_index]), angle, axis, center) - if utils.isClosedEdge(edge_index, object): + if utils.is_closed_edge(edge_index, object): vertex2 = rotate_vector_from_center( object.getGlobalPlacement().multVec(object.Points[0]), angle, axis, center) diff --git a/src/Mod/Draft/draftfunctions/scale.py b/src/Mod/Draft/draftfunctions/scale.py index 04fb90423412..f48c688cd9f5 100644 --- a/src/Mod/Draft/draftfunctions/scale.py +++ b/src/Mod/Draft/draftfunctions/scale.py @@ -155,9 +155,6 @@ def scale_vertex(obj, vertex_index, scale, center): obj.Points = points -scaleVertex = scale_vertex - - def scale_vector_from_center(vector, scale, center): """ Needed for SubObjects modifiers. @@ -166,9 +163,6 @@ def scale_vector_from_center(vector, scale, center): return vector.sub(center).scale(scale.x, scale.y, scale.z).add(center) -scaleVectorFromCenter = scale_vector_from_center - - def scale_edge(obj, edge_index, scale, center): """ Needed for SubObjects modifiers. @@ -181,9 +175,6 @@ def scale_edge(obj, edge_index, scale, center): scale_vertex(obj, edge_index+1, scale, center) -scaleEdge = scale_edge - - def copy_scaled_edge(obj, edge_index, scale, center): """ Needed for SubObjects modifiers. @@ -203,9 +194,6 @@ def copy_scaled_edge(obj, edge_index, scale, center): return make_line.make_line(vertex1, vertex2) -copyScaledEdge = copy_scaled_edge - - def copy_scaled_edges(arguments): """ Needed for SubObjects modifiers. @@ -217,7 +205,4 @@ def copy_scaled_edges(arguments): argument[2], argument[3])) join.join_wires(copied_edges) - -copyScaledEdges = copy_scaled_edges - ## @} diff --git a/src/Mod/Draft/draftfunctions/svg.py b/src/Mod/Draft/draftfunctions/svg.py index c2137cf1a34d..7be6ebcceeaa 100644 --- a/src/Mod/Draft/draftfunctions/svg.py +++ b/src/Mod/Draft/draftfunctions/svg.py @@ -427,7 +427,7 @@ def get_svg(obj, # all the SVG strings from the contents of the group if hasattr(obj, "isDerivedFrom"): if (obj.isDerivedFrom("App::DocumentObjectGroup") - or utils.get_type(obj) in ["Layer", "BuildingPart"] + or utils.get_type(obj) in ["Layer", "BuildingPart", "IfcGroup"] or obj.isDerivedFrom("App::LinkGroup") or (obj.isDerivedFrom("App::Link") and obj.LinkedObject.isDerivedFrom("App::DocumentObjectGroup"))): @@ -546,7 +546,8 @@ def get_svg(obj, svg = _svg_shape(svg, obj, plane, fillstyle, pathdata, stroke, linewidth, lstyle) - elif utils.get_type(obj) in ["Dimension", "LinearDimension"]: + elif (utils.get_type(obj) in ["Dimension", "LinearDimension"] + or (utils.get_type(obj) == "IfcAnnotation" and obj.ObjectType == "DIMENSION")): svg = _svg_dimension(obj, plane, scale, linewidth, fontsize, stroke, tstroke, pointratio, techdraw, rotation) @@ -690,7 +691,8 @@ def get_svg(obj, rotation, position, text, linespacing, justification) - elif utils.get_type(obj) in ["Annotation", "DraftText", "Text"]: + elif (utils.get_type(obj) in ["Annotation", "DraftText", "Text"] + or (utils.get_type(obj) == "IfcAnnotation" and obj.ObjectType == "TEXT")): # returns an svg representation of a document annotation if not App.GuiUp: _wrn("Export of texts to SVG is only available in GUI mode") diff --git a/src/Mod/Draft/draftgeoutils/arcs.py b/src/Mod/Draft/draftgeoutils/arcs.py index f99fab623b5f..c27766e767ab 100644 --- a/src/Mod/Draft/draftgeoutils/arcs.py +++ b/src/Mod/Draft/draftgeoutils/arcs.py @@ -43,7 +43,23 @@ def isClockwise(edge, ref=None): - """Return True if a circle-based edge has a clockwise direction.""" + """Return True if a circle-based edge has a clockwise direction. + + Parameters + ---------- + edge : + The edge to be analyzed. + + ref : Vector, optional + The normal around which the direction of the edge is to be determined. + Defaults to the Z normal vector. + + Returns + ------- + bool + Returns True if the edge is clockwise oriented around the ref Vector + or not. + """ if not geomType(edge) == "Circle": return True diff --git a/src/Mod/Draft/draftgeoutils/circles.py b/src/Mod/Draft/draftgeoutils/circles.py index 597e65319c1d..d5dac2aaf423 100644 --- a/src/Mod/Draft/draftgeoutils/circles.py +++ b/src/Mod/Draft/draftgeoutils/circles.py @@ -359,7 +359,7 @@ def findHomotheticCenterOfCircles(circle1, circle2): cenDir = vec(cen1_cen2) cenDir.normalize() - # Get the perpedicular vector. + # Get the perpendicular vector. perpCenDir = cenDir.cross(App.Vector(0, 0, 1)) perpCenDir.normalize() @@ -427,7 +427,7 @@ def findRadicalAxis(circle1, circle2): cenDir = cen1.sub(circle2.Curve.Center) cenDir.normalize() - # Get the perpedicular vector. + # Get the perpendicular vector. perpCenDir = cenDir.cross(App.Vector(0, 0, 1)) perpCenDir.normalize() diff --git a/src/Mod/Draft/draftgeoutils/general.py b/src/Mod/Draft/draftgeoutils/general.py index 90f32795179a..0323c54852c6 100644 --- a/src/Mod/Draft/draftgeoutils/general.py +++ b/src/Mod/Draft/draftgeoutils/general.py @@ -242,7 +242,18 @@ def hasOnlyWires(shape): def geomType(edge): - """Return the type of geometry this edge is based on.""" + """Return the type of geometry this edge is based on. + + Parameters + ---------- + edge: the edge whose `Curve` attribute is to be checked. + + Returns + ------- + str + Return the type of the edge's Curve attribute or "Unknown", + if the parameter is missing. + """ try: if isinstance(edge.Curve, (Part.LineSegment, Part.Line)): return "Line" diff --git a/src/Mod/Draft/draftgeoutils/intersections.py b/src/Mod/Draft/draftgeoutils/intersections.py index d488d6730d44..592ffac572ce 100644 --- a/src/Mod/Draft/draftgeoutils/intersections.py +++ b/src/Mod/Draft/draftgeoutils/intersections.py @@ -49,8 +49,43 @@ def findIntersection(edge1, edge2, You can also feed 4 points instead of `edge1` and `edge2`. If `dts` is used, `Shape.section()` is used. - """ + Parameters + ---------- + edge1 + Part.Edge, Circle, Line -> the first edge. + Base::Vector3 -> the starting point of the first line. In which case + `infinite1` must also be a point. + edge2 + Part.Edge, Circle, Line -> the second edge. + Base::Vector3 -> the ending point of the second line. In which case + `infinite2` must also be a point. + the second edge. In case of a point, `infinite2` must also be a point. + infinite1 + bool, optional -> whether `edge1` should be continued to infinity. + Default to `False`. + Base::Vector3 -> if `edge1` is a point, must also be a point. + infinite2 + bool, optional -> whether `edge2` should be continued to infinity. + Default to `False`. + Base::Vector3 -> if `edge2` is a point, must also be a point. + ex1: bool, optional + In case `edge1` is a point, indicate whether the line should be + continued to infinity. Default to `False` + ex2: bool, optional + In case `edge2` is a point, indicate whether the line should be + continued to infinity. Default to `False` + dts: bool, optional + NOT_DOCUMENTED. Default to `True` + findAll: bool, optional + In case either `edge1` or `edge2` is a circle, indicates whether + to find all intersection points. Default to `False` + + Returns + ------- + list + A list of intersection points + """ def getLineIntersections(pt1, pt2, pt3, pt4, infinite1, infinite2): if pt1: # first check if we don't already have coincident endpoints diff --git a/src/Mod/Draft/draftgeoutils/offsets.py b/src/Mod/Draft/draftgeoutils/offsets.py index 89a65438436e..ec9e64eefe76 100644 --- a/src/Mod/Draft/draftgeoutils/offsets.py +++ b/src/Mod/Draft/draftgeoutils/offsets.py @@ -135,6 +135,21 @@ def offset(edge, vector, trim=False): and a complete circle will be returned. None if there is a problem. + + Parameters + ---------- + edge: Part.Shape + the edge to offset + vector: Base::Vector3 + the vector by which the edge is to be offset + trim: bool, optional + If `edge` is an arc and `trim` is `True`, the resulting + arc will be trimmed to the proper angle + + Returns + ------- + Part.Shape + The offset shape """ if (not isinstance(edge, Part.Shape) or not isinstance(vector, App.Vector)): diff --git a/src/Mod/Draft/draftguitools/gui_subelements.py b/src/Mod/Draft/draftguitools/gui_subelements.py index 33912accc448..b84020637e5c 100644 --- a/src/Mod/Draft/draftguitools/gui_subelements.py +++ b/src/Mod/Draft/draftguitools/gui_subelements.py @@ -37,9 +37,9 @@ from PySide.QtCore import QT_TRANSLATE_NOOP import FreeCADGui as Gui -import draftguitools.gui_base_original as gui_base_original -import draftguitools.gui_tool_utils as gui_tool_utils - +from draftguitools import gui_base_original +from draftguitools import gui_tool_utils +from draftutils import gui_utils from draftutils.messages import _msg from draftutils.translate import translate @@ -124,20 +124,22 @@ def get_editable_objects_from_selection(self): def highlight_editable_objects(self): """Highlight editable Draft objects from the selection.""" for obj in self.editable_objects: + vobj = obj.ViewObject self.original_view_settings[obj.Name] = { - 'Visibility': obj.ViewObject.Visibility, - 'PointSize': obj.ViewObject.PointSize, - 'PointColor': obj.ViewObject.PointColor, - 'LineColor': obj.ViewObject.LineColor} - obj.ViewObject.Visibility = True - obj.ViewObject.PointSize = 10 - obj.ViewObject.PointColor = (1.0, 0.0, 0.0) - obj.ViewObject.LineColor = (1.0, 0.0, 0.0) + 'Visibility': vobj.Visibility, + 'PointSize': vobj.PointSize, + 'PointColor': vobj.PointColor, + 'LineColor': vobj.LineColor} + vobj.Visibility = True + vobj.PointSize = 10 + vobj.PointColor = (1.0, 0.0, 0.0) + vobj.LineColor = (1.0, 0.0, 0.0) xray = coin.SoAnnotation() - if obj.ViewObject.RootNode.getNumChildren() > 2: - xray.addChild(obj.ViewObject.RootNode.getChild(2).getChild(0)) + switch = gui_utils.find_coin_node(vobj.RootNode, coin.SoSwitch) + if switch is not None: + xray.addChild(switch.getChild(0)) xray.setName("xray") - obj.ViewObject.RootNode.addChild(xray) + vobj.RootNode.addChild(xray) def restore_editable_objects_graphics(self): """Restore the editable objects' appearance.""" diff --git a/src/Mod/Draft/draftguitools/gui_trackers.py b/src/Mod/Draft/draftguitools/gui_trackers.py index 588e34d24675..965f418f8e66 100644 --- a/src/Mod/Draft/draftguitools/gui_trackers.py +++ b/src/Mod/Draft/draftguitools/gui_trackers.py @@ -43,6 +43,7 @@ import Draft import DraftVecUtils from FreeCAD import Vector +from draftutils import gui_utils from draftutils import params from draftutils import utils from draftutils.messages import _msg @@ -775,13 +776,12 @@ def getNodeFull(self, obj): try: sep.addChild(obj.ViewObject.RootNode.copy()) # add Part container offset - if hasattr(obj, "getGlobalPlacement"): - if obj.Placement != obj.getGlobalPlacement(): - if sep.getChild(0).getNumChildren() > 0: - if isinstance(sep.getChild(0).getChild(0),coin.SoTransform): - gpl = obj.getGlobalPlacement() - sep.getChild(0).getChild(0).translation.setValue(tuple(gpl.Base)) - sep.getChild(0).getChild(0).rotation.setValue(gpl.Rotation.Q) + if hasattr(obj, "getGlobalPlacement") and obj.Placement != obj.getGlobalPlacement(): + transform = gui_utils.find_coin_node(sep.getChild(0), coin.SoTransform) + if transform is not None: + gpl = obj.getGlobalPlacement() + transform.translation.setValue(tuple(gpl.Base)) + transform.rotation.setValue(gpl.Rotation.Q) except Exception: _msg("ghostTracker: Error retrieving coin node (full)") return sep diff --git a/src/Mod/Draft/draftmake/make_sketch.py b/src/Mod/Draft/draftmake/make_sketch.py index d9fe94c772b7..72789b909366 100644 --- a/src/Mod/Draft/draftmake/make_sketch.py +++ b/src/Mod/Draft/draftmake/make_sketch.py @@ -2,6 +2,7 @@ # * Copyright (c) 2009, 2010 Yorik van Havre * # * Copyright (c) 2009, 2010 Ken Cline * # * Copyright (c) 2020 FreeCAD Developers * +# * Copyright (c) 2024 FreeCAD Project Association * # * * # * This program is free software; you can redistribute it and/or modify * # * it under the terms of the GNU Lesser General Public License (LGPL) * @@ -32,9 +33,8 @@ import FreeCAD as App import DraftVecUtils import DraftGeomUtils -import draftutils.utils as utils -import draftutils.gui_utils as gui_utils - +from draftutils import gui_utils +from draftutils import utils from draftutils.translate import translate @@ -50,21 +50,21 @@ def make_sketch(objects_list, autoconstraints=False, addTo=None, objects_list: can be single or list of objects of Draft type objects, Part::Feature, Part.Shape, or mix of them. - autoconstraints(False): if True, constraints will be automatically added to - wire nodes, rectangles and circles. + autoconstraints(False): if True, coincident, horizontal and vertical + constraints will be added automatically. - addTo(None) : if set to an existing sketch, geometry will be added to it + addTo(None): if set to an existing sketch, geometry will be added to it instead of creating a new one. delete(False): if True, the original object will be deleted. - If set to a string 'all' the object and all its linked object will be + If set to a string "all" the object and all its linked object will be deleted. - name('Sketch'): the name for the new sketch object. + name("Sketch"): the name for the new sketch object. radiusPrecision(-1): If <0, disable radius constraint. If =0, add individual radius constraint. If >0, the radius will be rounded according to this - precision, and 'Equal' constraint will be added to curve with equal + precision, and "Equal" constraint will be added to curve with equal radius within precision. tol(1e-3): Tolerance used to check if the shapes are planar and coplanar. @@ -76,17 +76,11 @@ def make_sketch(objects_list, autoconstraints=False, addTo=None, return import Part - from Sketcher import Constraint - import Sketcher - - start_point = 1 - end_point = 2 - middle_point = 3 if App.GuiUp: v_dir = gui_utils.get_3d_view().getViewDirection() else: - v_dir = App.Base.Vector(0,0,-1) + v_dir = App.Vector(0, 0, -1) # lists to accumulate shapes with defined normal and undefined normal shape_norm_yes = list() @@ -98,16 +92,16 @@ def make_sketch(objects_list, autoconstraints=False, addTo=None, for obj in objects_list: if isinstance(obj,Part.Shape): shape = obj - elif not hasattr(obj,'Shape'): + elif not hasattr(obj, "Shape"): App.Console.PrintError(translate("draft", - "No shape found")+"\n") + "No shape found") + "\n") return None else: shape = obj.Shape if not DraftGeomUtils.is_planar(shape, tol): App.Console.PrintError(translate("draft", - "All Shapes must be planar")+"\n") + "All Shapes must be planar") + "\n") return None if DraftGeomUtils.get_normal(shape, tol): @@ -123,7 +117,7 @@ def make_sketch(objects_list, autoconstraints=False, addTo=None, for shape in shapes_list[1:]: if not DraftGeomUtils.are_coplanar(shapes_list[0], shape, tol): App.Console.PrintError(translate("draft", - "All Shapes must be coplanar")+"\n") + "All Shapes must be coplanar") + "\n") return None # define sketch normal normal = DraftGeomUtils.get_normal(shapes_list[0], tol) @@ -135,7 +129,7 @@ def make_sketch(objects_list, autoconstraints=False, addTo=None, poly = Part.makePolygon(points) if not DraftGeomUtils.is_planar(poly, tol): App.Console.PrintError(translate("draft", - "All Shapes must be coplanar")+"\n") + "All Shapes must be coplanar") + "\n") return None normal = DraftGeomUtils.get_normal(poly, tol) if not normal: @@ -162,15 +156,15 @@ def addRadiusConstraint(edge): if radiusPrecision<0: return if radiusPrecision==0: - constraints.append(Constraint('Radius', + constraints.append(Constraint("Radius", nobj.GeometryCount-1, edge.Curve.Radius)) return r = round(edge.Curve.Radius,radiusPrecision) - constraints.append(Constraint('Equal', - radiuses[r],nobj.GeometryCount-1)) + constraints.append(Constraint("Equal", + radiuses[r], nobj.GeometryCount-1)) except KeyError: radiuses[r] = nobj.GeometryCount-1 - constraints.append(Constraint('Radius',nobj.GeometryCount-1, r)) + constraints.append(Constraint("Radius", nobj.GeometryCount-1, r)) except AttributeError: pass @@ -182,7 +176,13 @@ def convertBezier(edge): axis = App.Vector(0, 0, 1).cross(normal) - angle = DraftVecUtils.angle(normal, App.Vector(0, 0, 1)) * App.Units.Radian + if axis.Length > 1e-6: + axis.normalize() + elif normal.z >= 0: + axis = App.Vector(0, 0, 1) + else: + axis = App.Vector(0, 0, -1) + angle = math.degrees(DraftVecUtils.angle(normal, App.Vector(0, 0, 1))) rotation = App.Rotation(axis, angle) point = shapes_list[0].Vertexes[0].Point @@ -195,139 +195,35 @@ def convertBezier(edge): ok = False tp = utils.get_type(obj) - if tp in ["Circle","Ellipse"]: - if obj.Shape.Edges: - edge = obj.Shape.Edges[0] - if len(edge.Vertexes) == 1: - newedge = DraftGeomUtils.orientEdge(edge, normal) - nobj.addGeometry(newedge) - else: - # make new ArcOfCircle - circle = DraftGeomUtils.orientEdge(edge, normal) - first = math.radians(obj.FirstAngle) - last = math.radians(obj.LastAngle) - arc = Part.ArcOfCircle(circle, first, last) - nobj.addGeometry(arc) - addRadiusConstraint(edge) - ok = True - - elif tp in ["Wire", "Rectangle", "Polygon"] and obj.FilletRadius.Value == 0: - if obj.Shape.Edges: - for edge in obj.Shape.Edges: - nobj.addGeometry(DraftGeomUtils.orientEdge(edge, normal)) - if autoconstraints: - closed = tp in ["Rectangle", "Polygon"] or obj.Closed - last = nobj.GeometryCount - segs = list(range(last - len(obj.Shape.Edges), last)) - nexts = segs[1:] + ([segs[0]] if closed else [None]) - for seg, next in zip(segs, nexts): - if next is not None: - constraints.append(Constraint("Coincident",seg, end_point, next, start_point)) - if DraftGeomUtils.isAligned(nobj.Geometry[seg], "x"): - constraints.append(Constraint("Vertical", seg)) - elif DraftGeomUtils.isAligned(nobj.Geometry[seg], "y"): - constraints.append(Constraint("Horizontal", seg)) - ok = True - - elif tp == "BSpline": - if obj.Shape.Edges: - edge = DraftGeomUtils.orientEdge(obj.Shape.Edges[0], normal) - nobj.addGeometry(edge) - nobj.exposeInternalGeometry(nobj.GeometryCount-1) - ok = True - - elif tp == "BezCurve": - if obj.Shape.Edges: - for piece in obj.Shape.Edges: - bez = piece.Curve - bsp = bez.toBSpline(bez.FirstParameter,bez.LastParameter).toShape() - edge = DraftGeomUtils.orientEdge(bsp.Edges[0], normal) - nobj.addGeometry(edge) - nobj.exposeInternalGeometry(nobj.GeometryCount-1) - ok = True - # TODO: set coincident constraint for vertexes in multi-edge bezier curve - - elif tp == "Point": - shape = obj.Shape.copy() + if tp == "Point": + # obj.Shape.copy() does not work properly for a Draft_Point. + # The coords of the point are multiplied by 2. + # We therefore create a Part Vertex instead. + shape = Part.Vertex(obj.Shape.Point) if angle: - shape.rotate(App.Base.Vector(0,0,0), axis, -1*angle) + shape.rotate(App.Vector(0, 0, 0), axis, -angle) point = Part.Point(shape.Point) nobj.addGeometry(point) ok = True - elif tp == 'Shape' or hasattr(obj,'Shape'): - shape = obj if tp == 'Shape' else obj.Shape - if not shape.Wires: - for e in shape.Edges: - # unconnected edges - newedge = convertBezier(e) - nobj.addGeometry(DraftGeomUtils.orientEdge( - newedge, normal, make_arc=True)) - addRadiusConstraint(newedge) - - if autoconstraints: - for wire in shape.Wires: - last_count = nobj.GeometryCount - edges = wire.OrderedEdges - for edge in edges: - newedge = convertBezier(edge) - nobj.addGeometry(DraftGeomUtils.orientEdge( - newedge, normal, make_arc=True)) - addRadiusConstraint(newedge) - for i,g in enumerate(nobj.Geometry[last_count:]): - if edges[i].Closed: - continue - seg = last_count+i - - if DraftGeomUtils.isAligned(g,"x"): - constraints.append(Constraint("Vertical",seg)) - elif DraftGeomUtils.isAligned(g,"y"): - constraints.append(Constraint("Horizontal",seg)) - - if seg == nobj.GeometryCount-1: - if not wire.isClosed(): - break - g2 = nobj.Geometry[last_count] - seg2 = last_count - else: - seg2 = seg+1 - g2 = nobj.Geometry[seg2] - - end1 = g.value(g.LastParameter) - start2 = g2.value(g2.FirstParameter) - if DraftVecUtils.equals(end1,start2) : - constraints.append(Constraint( - "Coincident",seg,end_point,seg2,start_point)) - continue - end2 = g2.value(g2.LastParameter) - start1 = g.value(g.FirstParameter) - if DraftVecUtils.equals(end2,start1): - constraints.append(Constraint( - "Coincident",seg,start_point,seg2,end_point)) - elif DraftVecUtils.equals(start1,start2): - constraints.append(Constraint( - "Coincident",seg,start_point,seg2,start_point)) - elif DraftVecUtils.equals(end1,end2): - constraints.append(Constraint( - "Coincident",seg,end_point,seg2,end_point)) - else: - for wire in shape.Wires: - for edge in wire.OrderedEdges: - newedge = convertBezier(edge) - nobj.addGeometry(DraftGeomUtils.orientEdge( - newedge, normal, make_arc=True)) + elif tp == "Shape" or hasattr(obj, "Shape"): + shape = obj if tp == "Shape" else obj.Shape + for e in shape.Edges: + newedge = convertBezier(e) + nobj.addGeometry(DraftGeomUtils.orientEdge( + newedge, normal, make_arc=True)) + addRadiusConstraint(newedge) ok = True - gui_utils.format_object(nobj,obj) - if ok and delete and hasattr(obj,'Shape'): - doc = obj.Document + + if ok and delete: def delObj(obj): if obj.InList: App.Console.PrintWarning(translate("draft", - "Cannot delete object {} with dependency".format(obj.Label))+"\n") + "Cannot delete object {} with dependency".format(obj.Label)) + "\n") else: - doc.removeObject(obj.Name) + obj.Document.removeObject(obj.Name) try: - if delete == 'all': + if delete == "all": objs = [obj] while objs: obj = objs[0] @@ -337,10 +233,14 @@ def delObj(obj): delObj(obj) except Exception as ex: App.Console.PrintWarning(translate("draft", - "Failed to delete object {}: {}".format(obj.Label,ex))+"\n") - + "Failed to delete object {}: {}".format(obj.Label, ex)) + "\n") nobj.addConstraint(constraints) + if autoconstraints: + nobj.detectMissingPointOnPointConstraints(utils.tolerance()) + nobj.makeMissingPointOnPointCoincident(True) + nobj.detectMissingVerticalHorizontalConstraints(utils.tolerance()) + nobj.makeMissingVerticalHorizontal(True) return nobj diff --git a/src/Mod/Draft/draftobjects/base.py b/src/Mod/Draft/draftobjects/base.py index f9bb21b86c06..ca3860987d61 100644 --- a/src/Mod/Draft/draftobjects/base.py +++ b/src/Mod/Draft/draftobjects/base.py @@ -183,8 +183,9 @@ def props_changed_clear(self): delattr(self, "props_changed") def props_changed_placement_only(self, obj=None): - """Return `True` if the self.props_changed list, after removing `Shape` - and `_LinkTouched` items, only contains `Placement` items. + """Return `True` if the self.props_changed list, after removing + `_LinkTouched`, `Shape`, `Density`, `Volume` and `Mass` items, + only contains `Placement` items. Parameters ---------- @@ -205,10 +206,9 @@ def props_changed_placement_only(self, obj=None): return False props = set(self.props_changed) - if "Shape" in props: - props.remove("Shape") - if "_LinkTouched" in props: - props.remove("_LinkTouched") + for prop in ("_LinkTouched", "Shape", "Density", "Volume", "Mass"): + if prop in props: + props.remove(prop) return props == {"Placement"} diff --git a/src/Mod/Draft/draftobjects/facebinder.py b/src/Mod/Draft/draftobjects/facebinder.py index 957160d214f4..f3fb93a53325 100644 --- a/src/Mod/Draft/draftobjects/facebinder.py +++ b/src/Mod/Draft/draftobjects/facebinder.py @@ -2,7 +2,7 @@ # * Copyright (c) 2009, 2010 Yorik van Havre * # * Copyright (c) 2009, 2010 Ken Cline * # * Copyright (c) 2020 FreeCAD Developers * -# * Copyright (c) 2023 FreeCAD Project Association * +# * Copyright (c) 2023-2025 FreeCAD Project Association * # * * # * This program is free software; you can redistribute it and/or modify * # * it under the terms of the GNU Lesser General Public License (LGPL) * @@ -31,8 +31,11 @@ from PySide.QtCore import QT_TRANSLATE_NOOP import FreeCAD as App +from draftgeoutils import geometry from draftobjects.base import DraftObject from draftutils import gui_utils +from draftutils.messages import _err, _msg, _wrn +from draftutils.translate import translate class Facebinder(DraftObject): @@ -71,6 +74,7 @@ def execute(self, obj): return if not obj.Faces: + self._report_face_error(obj) return import Part @@ -81,65 +85,122 @@ def execute(self, obj): if "Face" in sub: face = Part.getShape(sel[0], sub, needSubElement=True, retType=0) faces.append(face) - except Exception: - print("Draft: error building facebinder") + except Part.OCCError: + self._report_face_error(obj) return if not faces: + self._report_face_error(obj) return - offset_val = obj.Offset.Value if hasattr(obj, "Offset") else 0 - extrusion_val = obj.Extrusion.Value if hasattr(obj, "Extrusion") else 0 - + obj_sew = getattr(obj, "Sew", True) try: - if offset_val: - offsets = [] - for face in faces: - if face.Surface.isPlanar(): - norm = face.normalAt(0, 0) - dist = norm.multiply(offset_val) - face.translate(dist) - offsets.append(face) - else: - offset = face.makeOffsetShape(offset_val, 1e-7) - offsets.extend(offset.Faces) - faces = offsets - - shp = faces.pop() - if faces: - shp = shp.fuse(faces) - area = shp.Area # take area after offsetting and fusing, but before extruding - - if extrusion_val: - extrusions = [] - for face in shp.Faces: - if face.Surface.isPlanar(): - extrusion = face.extrude(face.normalAt(0, 0).multiply(extrusion_val)) - extrusions.append(extrusion) - else: - extrusion = face.makeOffsetShape(extrusion_val, 1e-7, fill=True) - extrusions.extend(extrusion.Solids) - shp = extrusions.pop() - if extrusions: - shp = shp.fuse(extrusions) - - if len(shp.Faces) > 1: - if getattr(obj, "Sew", True): - shp.sewShape() - if getattr(obj, "RemoveSplitter", True): - shp = shp.removeSplitter() - + shp, area = self._build_shape(obj, faces, sew=obj_sew) except Exception: - print("Draft: error building facebinder") - return - - if shp.__class__.__name__ == "Compound": + if not obj_sew: + self._report_build_error(obj) + return + self._report_sew_error(obj) + try: + shp, area = self._build_shape(obj, faces, sew=False) + except Exception: + self._report_build_error(obj) + return + if not shp.isValid(): + if not obj_sew: + self._report_build_error(obj) + return + self._report_sew_error(obj) + try: + shp, area = self._build_shape(obj, faces, sew=False) + except Exception: + self._report_build_error(obj) + return + + if shp.ShapeType == "Compound": obj.Shape = shp else: obj.Shape = Part.Compound([shp]) # nest in compound to ensure default Placement obj.Area = area self.props_changed_clear() + def _report_build_error(self, obj): + _err(obj.Label + ": " + translate("draft", "Unable to build Facebinder")) + + def _report_face_error(self, obj): + _wrn(obj.Label + ": " + translate("draft", "No valid faces for Facebinder")) + + def _report_sew_error(self, obj): + _wrn(obj.Label + ": " + translate("draft", "Unable to build Facebinder, resuming with Sew disabled")) + + def _build_shape(self, obj, faces, sew=False): + """returns the built shape and the area of the offset faces""" + import Part + offs_val = getattr(obj, "Offset", 0) + extr_val = getattr(obj, "Extrusion", 0) + + shp = Part.Compound(faces) + # Sew before offsetting to ensure corners stay connected: + if sew: + shp.sewShape() + if shp.ShapeType != "Compound": + shp = Part.Compound([shp]) + + if offs_val: + offsets = [] + for sub in shp.SubShapes: + offsets.append(sub.makeOffsetShape(offs_val, 1e-7, join=2)) + shp = Part.Compound(offsets) + + area = shp.Area # take area after offsetting original faces, but before extruding + + if extr_val: + extrudes = [] + for sub in shp.SubShapes: + ext = sub.makeOffsetShape(extr_val, 1e-7, inter=True, join=2, fill=True) + extrudes.append(self._convert_to_planar(obj, ext)) + shp = Part.Compound(extrudes) + + subs = shp.SubShapes + shp = subs.pop() + if subs: + shp = shp.fuse(subs) + + if len(shp.Faces) > 1: + if getattr(obj, "RemoveSplitter", True): + shp = shp.removeSplitter() + + return shp, area + + def _convert_to_planar(self, obj, shp): + """convert flat B-spline faces to planar faces if possible""" + import Part + faces = [] + for face in shp.Faces: + if face.Surface.TypeId == "Part::GeomPlane": + faces.append(face) + elif not geometry.is_planar(face): + faces.append(face) + else: + edges = [] + for edge in face.Edges: + if edge.Curve.TypeId == "Part::GeomLine" or geometry.is_straight_line(edge): + verts = edge.Vertexes + edges.append(Part.makeLine(verts[0].Point, verts[1].Point)) + else: + edges.append(edge) + wires = [Part.Wire(x) for x in Part.sortEdges(edges)] + face = Part.makeFace(wires, "Part::FaceMakerCheese") + face.fix(1e-7, 0, 1) + faces.append(face) + solid = Part.makeSolid(Part.makeShell(faces)) + if solid.isValid(): + return solid + _msg(obj.Label + ": " + translate("draft", + "Converting flat B-spline faces of Facebinder to planar faces failed" + )) + return shp + def onChanged(self, obj, prop): self.props_changed_store(prop) diff --git a/src/Mod/Draft/draftobjects/shape2dview.py b/src/Mod/Draft/draftobjects/shape2dview.py index 6a52fb59ca1b..0e09b2bee879 100644 --- a/src/Mod/Draft/draftobjects/shape2dview.py +++ b/src/Mod/Draft/draftobjects/shape2dview.py @@ -213,11 +213,15 @@ def execute(self, obj): import DraftGeomUtils pl = obj.Placement if obj.Base: - if utils.get_type(obj.Base) in ["BuildingPart","SectionPlane"]: + if utils.get_type(obj.Base) in ["BuildingPart","SectionPlane","IfcAnnotation"]: objs = [] if utils.get_type(obj.Base) == "SectionPlane": objs = self.excludeNames(obj,obj.Base.Objects) cutplane = obj.Base.Shape + elif utils.get_type(obj.Base) == "IfcAnnotation": + # this is a NativeIFC section plane + objs, cutplane = obj.Base.Proxy.get_section_data(obj.Base) + objs = self.excludeNames(obj, objs) else: objs = self.excludeNames(obj,obj.Base.Group) cutplane = Part.makePlane(1000, 1000, App.Vector(-500, -500, 0)) diff --git a/src/Mod/Draft/drafttests/auxiliary.py b/src/Mod/Draft/drafttests/auxiliary.py index 5f6927f6a8d1..e0580078571a 100644 --- a/src/Mod/Draft/drafttests/auxiliary.py +++ b/src/Mod/Draft/drafttests/auxiliary.py @@ -21,13 +21,16 @@ # * USA * # * * # *************************************************************************** + """Auxiliary functions for the unit tests of the Draft Workbench.""" + ## @package auxiliary # \ingroup drafttests # \brief Auxiliary functions for the unit tests of the Draft Workbench. ## \addtogroup drafttests # @{ + import traceback from draftutils.messages import _msg diff --git a/src/Mod/Draft/drafttests/draft_test_objects.py b/src/Mod/Draft/drafttests/draft_test_objects.py index 1526ac9ac9aa..6f9d454cdd16 100644 --- a/src/Mod/Draft/drafttests/draft_test_objects.py +++ b/src/Mod/Draft/drafttests/draft_test_objects.py @@ -21,9 +21,10 @@ # * USA * # * * # *************************************************************************** + """Run this file to create a standard test document for Draft objects. -Use it as input to the program executable. +Use it as input for the program executable. :: @@ -34,20 +35,22 @@ >>> import drafttests.draft_test_objects as dt >>> dt.create_test_file() """ + ## @package draft_test_objects # \ingroup drafttests # \brief Run this file to create a standard test document for Draft objects. ## \addtogroup drafttests # @{ + import datetime import FreeCAD as App import Part import Draft - -from draftutils.messages import _msg, _wrn from FreeCAD import Vector +from draftutils.messages import _msg, _wrn + if App.GuiUp: import FreeCADGui as Gui diff --git a/src/Mod/Draft/drafttests/test_airfoildat.py b/src/Mod/Draft/drafttests/test_airfoildat.py index 34905b724d78..f336b177230f 100644 --- a/src/Mod/Draft/drafttests/test_airfoildat.py +++ b/src/Mod/Draft/drafttests/test_airfoildat.py @@ -1,6 +1,7 @@ # *************************************************************************** # * Copyright (c) 2013 Yorik van Havre * # * Copyright (c) 2019 Eliud Cabrera Castillo * +# * Copyright (c) 2025 FreeCAD Project Association * # * * # * This file is part of the FreeCAD CAx development system. * # * * @@ -21,50 +22,35 @@ # * USA * # * * # *************************************************************************** + """Unit tests for the Draft Workbench, Airfoil DAT import and export tests.""" + ## @package test_airfoildat # \ingroup drafttests # \brief Unit tests for the Draft Workbench, Airfoil DAT tests. ## \addtogroup drafttests # @{ + import os -import unittest import FreeCAD as App import Draft -import drafttests.auxiliary as aux - +from drafttests import auxiliary as aux +from drafttests import test_base from draftutils.messages import _msg -class DraftAirfoilDAT(unittest.TestCase): +class DraftAirfoilDAT(test_base.DraftTestCaseDoc): """Test reading and writing of AirfoilDAT with Draft.""" - def setUp(self): - """Set up a new document to hold the tests. - - This is executed before every test, so we create a document - to hold the objects. - """ - aux.draw_header() - self.doc_name = self.__class__.__name__ - if App.ActiveDocument: - if App.ActiveDocument.Name != self.doc_name: - App.newDocument(self.doc_name) - else: - App.newDocument(self.doc_name) - App.setActiveDocument(self.doc_name) - self.doc = App.ActiveDocument - _msg(" Temporary document '{}'".format(self.doc_name)) - def test_read_airfoildat(self): """Read an airfoil DAT file and import its elements as objects.""" operation = "importAirfoilDAT.import" _msg(" Test '{}'".format(operation)) _msg(" This test requires a DAT file with airfoil data to read.") - file = 'Mod/Draft/drafttest/test.dat' + file = "Mod/Draft/drafttest/test.dat" in_file = os.path.join(App.getResourceDir(), file) _msg(" file={}".format(in_file)) _msg(" exists={}".format(os.path.exists(in_file))) @@ -78,7 +64,7 @@ def test_export_airfoildat(self): operation = "importAirfoilDAT.export" _msg(" Test '{}'".format(operation)) - file = 'Mod/Draft/drafttest/out_test.dat' + file = "Mod/Draft/drafttest/out_test.dat" out_file = os.path.join(App.getResourceDir(), file) _msg(" file={}".format(out_file)) _msg(" exists={}".format(os.path.exists(out_file))) @@ -87,11 +73,4 @@ def test_export_airfoildat(self): obj = Draft.export_airfoildat(out_file) self.assertTrue(obj, "'{}' failed".format(operation)) - def tearDown(self): - """Finish the test. - - This is executed after each test, so we close the document. - """ - App.closeDocument(self.doc_name) - ## @} diff --git a/src/Mod/Draft/drafttests/test_array.py b/src/Mod/Draft/drafttests/test_array.py index 27b548842edb..1e49cb4d66e3 100644 --- a/src/Mod/Draft/drafttests/test_array.py +++ b/src/Mod/Draft/drafttests/test_array.py @@ -1,5 +1,6 @@ # *************************************************************************** # * Copyright (c) 2023 Werner Mayer * +# * Copyright (c) 2025 FreeCAD Project Association * # * * # * This file is part of FreeCAD. * # * * @@ -18,74 +19,49 @@ # * . * # * * # *************************************************************************** + """Unit tests for the Draft Workbench, array tests.""" + ## @package test_array # \ingroup drafttests # \brief Unit tests for the Draft Workbench, array tests. ## \addtogroup drafttests # @{ -import unittest -import math -import FreeCAD as App import Draft - from FreeCAD import Vector -from draftutils.messages import _msg +from drafttests import test_base -class DraftArray(unittest.TestCase): +class DraftArray(test_base.DraftTestCaseDoc): """Test Draft array functions.""" - def setUp(self): - """Set up a new document to hold the tests. - - This is executed before every test, so we create a document - to hold the objects. - """ - doc_name = self.__class__.__name__ - if App.ActiveDocument: - if App.ActiveDocument.Name != doc_name: - App.newDocument(doc_name) - else: - App.newDocument(doc_name) - App.setActiveDocument(doc_name) - self.doc = App.ActiveDocument - _msg(" Temporary document '{}'".format(self.doc.Name)) - def test_link_array(self): """Create a link array.""" - box = self.doc.addObject("Part::Box","Box") + box = self.doc.addObject("Part::Box", "Box") box.Label = "Box" self.doc.recompute() - array = Draft.make_ortho_array(box, v_x=App.Vector(100.0, 0.0, 0.0), - v_y=App.Vector(0.0, 100.0, 0.0), - v_z=App.Vector(0.0, 0.0, 100.0), + array = Draft.make_ortho_array(box, v_x=Vector(100.0, 0.0, 0.0), + v_y=Vector(0.0, 100.0, 0.0), + v_z=Vector(0.0, 0.0, 100.0), n_x=12, n_y=1, n_z=1, use_link=True) Draft.autogroup(array) array.ExpandArray = True array.Fuse = False - self.doc.recompute(None,True,True) + self.doc.recompute(None, True, True) array.NumberX = 6 - self.doc.recompute(None,True,True) + self.doc.recompute(None, True, True) self.assertEqual(array.Count, array.NumberX) array.NumberX = 24 - self.doc.recompute(None,True,True) + self.doc.recompute(None, True, True) self.assertEqual(array.Count, array.NumberX) - self.doc.recompute(None,True,True) + self.doc.recompute(None, True, True) self.assertEqual(array.Count, array.NumberX) - def tearDown(self): - """Finish the test. - - This is executed after each test, so we close the document. - """ - App.closeDocument(self.doc.Name) - ## @} diff --git a/src/Mod/Draft/drafttests/test_base.py b/src/Mod/Draft/drafttests/test_base.py new file mode 100644 index 000000000000..df29f665394f --- /dev/null +++ b/src/Mod/Draft/drafttests/test_base.py @@ -0,0 +1,58 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later +# *************************************************************************** +# * * +# * Copyright (c) 2025 FreeCAD Project Association * +# * * +# * This file is part of FreeCAD. * +# * * +# * FreeCAD is free software: you can redistribute it and/or modify it * +# * under the terms of the GNU Lesser General Public License as * +# * published by the Free Software Foundation, either version 2.1 of the * +# * License, or (at your option) any later version. * +# * * +# * FreeCAD is distributed in the hope that it will be useful, but * +# * WITHOUT ANY WARRANTY; without even the implied warranty of * +# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +# * Lesser General Public License for more details. * +# * * +# * You should have received a copy of the GNU Lesser General Public * +# * License along with FreeCAD. If not, see * +# * . * +# * * +# *************************************************************************** + +"""Unit tests for the Draft Workbench, base classes.""" + +import unittest + +import FreeCAD as App +from drafttests import auxiliary as aux +from draftutils.messages import _msg +from draftutils.todo import ToDo + + +class DraftTestCaseDoc(unittest.TestCase): + """Base class for Draft tests that require a document.""" + + def setUp(self): + """Set up a new document for each test.""" + aux.draw_header() + # name = self.__class__.__name__ + name = "___".join(self.id().split(".")[2:]) # unique name for each test + if not name in App.listDocuments(): + App.newDocument(name) + App.setActiveDocument(name) + self.doc = App.ActiveDocument + _msg(" Temporary document '{}'".format(self.doc.Name)) + + def tearDown(self): + """Close the document after each test.""" + App.closeDocument(self.doc.Name) + + +class DraftTestCaseNoDoc(unittest.TestCase): + """Base class for Draft tests that do not require a document.""" + + def setUp(self): + """Draw the header.""" + aux.draw_header() diff --git a/src/Mod/Draft/drafttests/test_creation.py b/src/Mod/Draft/drafttests/test_creation.py index 2ef1aa072994..0a224a8dd853 100644 --- a/src/Mod/Draft/drafttests/test_creation.py +++ b/src/Mod/Draft/drafttests/test_creation.py @@ -1,6 +1,7 @@ # *************************************************************************** # * Copyright (c) 2013 Yorik van Havre * # * Copyright (c) 2019 Eliud Cabrera Castillo * +# * Copyright (c) 2025 FreeCAD Project Association * # * * # * This file is part of the FreeCAD CAx development system. * # * * @@ -21,44 +22,28 @@ # * USA * # * * # *************************************************************************** + """Unit tests for the Draft Workbench, object creation tests.""" + ## @package test_creation # \ingroup drafttests # \brief Unit tests for the Draft Workbench, object creation tests. ## \addtogroup drafttests # @{ -import unittest + import math import FreeCAD as App import Draft -import drafttests.auxiliary as aux - from FreeCAD import Vector +from drafttests import test_base from draftutils.messages import _msg -class DraftCreation(unittest.TestCase): +class DraftCreation(test_base.DraftTestCaseDoc): """Test Draft creation functions.""" - def setUp(self): - """Set up a new document to hold the tests. - - This is executed before every test, so we create a document - to hold the objects. - """ - aux.draw_header() - doc_name = self.__class__.__name__ - if App.ActiveDocument: - if App.ActiveDocument.Name != doc_name: - App.newDocument(doc_name) - else: - App.newDocument(doc_name) - App.setActiveDocument(doc_name) - self.doc = App.ActiveDocument - _msg(" Temporary document '{}'".format(self.doc.Name)) - def test_line(self): """Create a line.""" operation = "Draft Line" @@ -282,7 +267,7 @@ def test_facebinder(self): _msg(" or an App::PropertyLinkSubList") _msg(" Box") - box = App.ActiveDocument.addObject("Part::Box") + box = self.doc.addObject("Part::Box") self.doc.recompute() # The facebinder function accepts a Gui selection set, # or a 'PropertyLinkSubList' @@ -378,14 +363,14 @@ def test_hatch(self): _msg(" length={0}, width={1}".format(length, width)) rect = Draft.make_rectangle(length, width) rect.MakeFace = True - App.ActiveDocument.recompute() + self.doc.recompute() patfile = App.getResourceDir() + "Mod/TechDraw/PAT/FCPAT.pat" patname = "Horizontal5" _msg(" patfile='{0}'".format(patfile)) _msg(" patname='{0}'".format(patname)) obj = Draft.make_hatch(rect, patfile, patname, scale=1, rotation=45) - App.ActiveDocument.recompute() + self.doc.recompute() box = obj.Shape.BoundBox # A rather high tolerance is required. @@ -394,11 +379,4 @@ def test_hatch(self): and math.isclose(box.YLength, width, rel_tol=0, abs_tol=1e-6)) self.assertTrue(obj_is_ok, "'{}' failed".format(operation)) - def tearDown(self): - """Finish the test. - - This is executed after each test, so we close the document. - """ - App.closeDocument(self.doc.Name) - ## @} diff --git a/src/Mod/Draft/drafttests/test_draftgeomutils.py b/src/Mod/Draft/drafttests/test_draftgeomutils.py index 120584f334b6..3523ba086a26 100644 --- a/src/Mod/Draft/drafttests/test_draftgeomutils.py +++ b/src/Mod/Draft/drafttests/test_draftgeomutils.py @@ -1,5 +1,6 @@ # *************************************************************************** # * Copyright (c) 2020 Antoine Lafr * +# * Copyright (c) 2025 FreeCAD Project Association * # * * # * This file is part of the FreeCAD CAx development system. * # * * @@ -20,21 +21,18 @@ # * USA * # * * # *************************************************************************** -"""Unit test for the DraftGeomUtils module.""" -import unittest -import FreeCAD +"""Unit tests for the Draft Workbench, DraftGeomUtils module tests.""" + import Part import DraftGeomUtils -import drafttests.auxiliary as aux +from FreeCAD import Vector +from drafttests import test_base from draftutils.messages import _msg -class TestDraftGeomUtils(unittest.TestCase): - """Testing the functions in the file DraftGeomUtils.py""" - def setUp(self): - """Prepare the test. Nothing to do here, DraftGeomUtils doesn't need a document.""" - aux.draw_header() +class TestDraftGeomUtils(test_base.DraftTestCaseNoDoc): + """Testing the functions in the file DraftGeomUtils.py""" def check_wire(self, wire): offset_values = (2000.0, 0.0, -1000, -2000, -3000, -5500) @@ -65,10 +63,10 @@ def test_get_extended_wire1(self): _msg(" Test '{}'".format(operation)) # Build wires made with straight edges and various combination of Orientation: the wires 1-4 are all equivalent - points = [FreeCAD.Vector(0.0, 0.0, 0.0), - FreeCAD.Vector(1500.0, 2000.0, 0.0), - FreeCAD.Vector(4500.0, 2000.0, 0.0), - FreeCAD.Vector(4500.0, 2000.0, 2500.0)] + points = [Vector(0.0, 0.0, 0.0), + Vector(1500.0, 2000.0, 0.0), + Vector(4500.0, 2000.0, 0.0), + Vector(4500.0, 2000.0, 2500.0)] edges = [] for start, end in zip(points[:-1], points[1:]): @@ -83,10 +81,10 @@ def test_get_extended_wire2(self): _msg(" Test '{}'".format(operation)) # Build wires made with straight edges and various combination of Orientation: the wires 1-4 are all equivalent - points = [FreeCAD.Vector(0.0, 0.0, 0.0), - FreeCAD.Vector(1500.0, 2000.0, 0.0), - FreeCAD.Vector(4500.0, 2000.0, 0.0), - FreeCAD.Vector(4500.0, 2000.0, 2500.0)] + points = [Vector(0.0, 0.0, 0.0), + Vector(1500.0, 2000.0, 0.0), + Vector(4500.0, 2000.0, 0.0), + Vector(4500.0, 2000.0, 2500.0)] edges = [] for start, end in zip(points[:-1], points[1:]): @@ -102,10 +100,10 @@ def test_get_extended_wire3(self): _msg(" Test '{}'".format(operation)) # Build wires made with straight edges and various combination of Orientation: the wires 1-4 are all equivalent - points = [FreeCAD.Vector(0.0, 0.0, 0.0), - FreeCAD.Vector(1500.0, 2000.0, 0.0), - FreeCAD.Vector(4500.0, 2000.0, 0.0), - FreeCAD.Vector(4500.0, 2000.0, 2500.0)] + points = [Vector(0.0, 0.0, 0.0), + Vector(1500.0, 2000.0, 0.0), + Vector(4500.0, 2000.0, 0.0), + Vector(4500.0, 2000.0, 2500.0)] edges = [] for start, end in zip(points[:-1], points[1:]): @@ -122,10 +120,10 @@ def test_get_extended_wire4(self): _msg(" Test '{}'".format(operation)) # Build wires made with straight edges and various combination of Orientation: the wires 1-4 are all equivalent - points = [FreeCAD.Vector(0.0, 0.0, 0.0), - FreeCAD.Vector(1500.0, 2000.0, 0.0), - FreeCAD.Vector(4500.0, 2000.0, 0.0), - FreeCAD.Vector(4500.0, 2000.0, 2500.0)] + points = [Vector(0.0, 0.0, 0.0), + Vector(1500.0, 2000.0, 0.0), + Vector(4500.0, 2000.0, 0.0), + Vector(4500.0, 2000.0, 2500.0)] edges = [] for start, end in zip(points[:-1], points[1:]): @@ -141,11 +139,11 @@ def test_get_extended_wire5(self): _msg(" Test '{}'".format(operation)) # Build wires made with arcs and various combination of Orientation: the wires 5-8 are all equivalent - points = [FreeCAD.Vector(0.0, 0.0, 0.0), - FreeCAD.Vector(1000.0, 1000.0, 0.0), - FreeCAD.Vector(2000.0, 0.0, 0.0), - FreeCAD.Vector(3000.0, 0.0, 1000.0), - FreeCAD.Vector(4000.0, 0.0, 0.0)] + points = [Vector(0.0, 0.0, 0.0), + Vector(1000.0, 1000.0, 0.0), + Vector(2000.0, 0.0, 0.0), + Vector(3000.0, 0.0, 1000.0), + Vector(4000.0, 0.0, 0.0)] edges = [] for start, mid, end in zip(points[:-2], points[1:-1], points[2:]): @@ -160,11 +158,11 @@ def test_get_extended_wire6(self): _msg(" Test '{}'".format(operation)) # Build wires made with arcs and various combination of Orientation: the wires 5-8 are all equivalent - points = [FreeCAD.Vector(0.0, 0.0, 0.0), - FreeCAD.Vector(1000.0, 1000.0, 0.0), - FreeCAD.Vector(2000.0, 0.0, 0.0), - FreeCAD.Vector(3000.0, 0.0, 1000.0), - FreeCAD.Vector(4000.0, 0.0, 0.0)] + points = [Vector(0.0, 0.0, 0.0), + Vector(1000.0, 1000.0, 0.0), + Vector(2000.0, 0.0, 0.0), + Vector(3000.0, 0.0, 1000.0), + Vector(4000.0, 0.0, 0.0)] edges = [] for start, mid, end in zip(points[:-2], points[1:-1], points[2:]): @@ -180,11 +178,11 @@ def test_get_extended_wire7(self): _msg(" Test '{}'".format(operation)) # Build wires made with arcs and various combination of Orientation: the wires 5-8 are all equivalent - points = [FreeCAD.Vector(0.0, 0.0, 0.0), - FreeCAD.Vector(1000.0, 1000.0, 0.0), - FreeCAD.Vector(2000.0, 0.0, 0.0), - FreeCAD.Vector(3000.0, 0.0, 1000.0), - FreeCAD.Vector(4000.0, 0.0, 0.0)] + points = [Vector(0.0, 0.0, 0.0), + Vector(1000.0, 1000.0, 0.0), + Vector(2000.0, 0.0, 0.0), + Vector(3000.0, 0.0, 1000.0), + Vector(4000.0, 0.0, 0.0)] edges = [] for start, mid, end in zip(points[:-2], points[1:-1], points[2:]): @@ -201,11 +199,11 @@ def test_get_extended_wire8(self): _msg(" Test '{}'".format(operation)) # Build wires made with arcs and various combination of Orientation: the wires 5-8 are all equivalent - points = [FreeCAD.Vector(0.0, 0.0, 0.0), - FreeCAD.Vector(1000.0, 1000.0, 0.0), - FreeCAD.Vector(2000.0, 0.0, 0.0), - FreeCAD.Vector(3000.0, 0.0, 1000.0), - FreeCAD.Vector(4000.0, 0.0, 0.0)] + points = [Vector(0.0, 0.0, 0.0), + Vector(1000.0, 1000.0, 0.0), + Vector(2000.0, 0.0, 0.0), + Vector(3000.0, 0.0, 1000.0), + Vector(4000.0, 0.0, 0.0)] edges = [] for start, mid, end in zip(points[:-2], points[1:-1], points[2:]): @@ -215,9 +213,5 @@ def test_get_extended_wire8(self): wire.Orientation = "Reversed" self.check_wire(wire) - def tearDown(self): - """Finish the test. Nothing to do here, DraftGeomUtils doesn't need a document.""" - pass - # suite = unittest.defaultTestLoader.loadTestsFromTestCase(TestDraftGeomUtils) # unittest.TextTestRunner().run(suite) diff --git a/src/Mod/Draft/drafttests/test_dwg.py b/src/Mod/Draft/drafttests/test_dwg.py index 7e915580b474..5605aa919752 100644 --- a/src/Mod/Draft/drafttests/test_dwg.py +++ b/src/Mod/Draft/drafttests/test_dwg.py @@ -1,6 +1,7 @@ # *************************************************************************** # * Copyright (c) 2013 Yorik van Havre * # * Copyright (c) 2019 Eliud Cabrera Castillo * +# * Copyright (c) 2025 FreeCAD Project Association * # * * # * This file is part of the FreeCAD CAx development system. * # * * @@ -22,49 +23,33 @@ # * * # *************************************************************************** """Unit tests for the Draft Workbench, DWG import and export tests.""" + ## @package test_dwg # \ingroup drafttests # \brief Unit tests for the Draft Workbench, DWG import and export tests. ## \addtogroup drafttests # @{ + import os -import unittest import FreeCAD as App import Draft -import drafttests.auxiliary as aux - +from drafttests import auxiliary as aux +from drafttests import test_base from draftutils.messages import _msg -class DraftDWG(unittest.TestCase): +class DraftDWG(test_base.DraftTestCaseDoc): """Test reading and writing of DWG files with Draft.""" - def setUp(self): - """Set up a new document to hold the tests. - - This is executed before every test, so we create a document - to hold the objects. - """ - aux.draw_header() - self.doc_name = self.__class__.__name__ - if App.ActiveDocument: - if App.ActiveDocument.Name != self.doc_name: - App.newDocument(self.doc_name) - else: - App.newDocument(self.doc_name) - App.setActiveDocument(self.doc_name) - self.doc = App.ActiveDocument - _msg(" Temporary document '{}'".format(self.doc_name)) - def test_read_dwg(self): """Read a DWG file and import its elements as Draft objects.""" operation = "importDWG.import" _msg(" Test '{}'".format(operation)) _msg(" This test requires a DWG file to read.") - file = 'Mod/Draft/drafttest/test.dwg' + file = "Mod/Draft/drafttest/test.dwg" in_file = os.path.join(App.getResourceDir(), file) _msg(" file={}".format(in_file)) _msg(" exists={}".format(os.path.exists(in_file))) @@ -78,7 +63,7 @@ def test_export_dwg(self): operation = "importDWG.export" _msg(" Test '{}'".format(operation)) - file = 'Mod/Draft/drafttest/out_test.dwg' + file = "Mod/Draft/drafttest/out_test.dwg" out_file = os.path.join(App.getResourceDir(), file) _msg(" file={}".format(out_file)) _msg(" exists={}".format(os.path.exists(out_file))) @@ -87,11 +72,4 @@ def test_export_dwg(self): obj = Draft.export_dwg(out_file) self.assertTrue(obj, "'{}' failed".format(operation)) - def tearDown(self): - """Finish the test. - - This is executed after each test, so we close the document. - """ - App.closeDocument(self.doc_name) - ## @} diff --git a/src/Mod/Draft/drafttests/test_dxf.py b/src/Mod/Draft/drafttests/test_dxf.py index 8f6a4defde72..e64486a5303f 100644 --- a/src/Mod/Draft/drafttests/test_dxf.py +++ b/src/Mod/Draft/drafttests/test_dxf.py @@ -1,6 +1,7 @@ # *************************************************************************** # * Copyright (c) 2013 Yorik van Havre * # * Copyright (c) 2019 Eliud Cabrera Castillo * +# * Copyright (c) 2025 FreeCAD Project Association * # * * # * This file is part of the FreeCAD CAx development system. * # * * @@ -21,50 +22,35 @@ # * USA * # * * # *************************************************************************** + """Unit tests for the Draft Workbench, DXF import and export tests.""" + ## @package test_dxf # \ingroup drafttests # \brief Unit tests for the Draft Workbench, DXF import and export tests. ## \addtogroup drafttests # @{ + import os -import unittest import FreeCAD as App import Draft -import drafttests.auxiliary as aux - +from drafttests import auxiliary as aux +from drafttests import test_base from draftutils.messages import _msg -class DraftDXF(unittest.TestCase): +class DraftDXF(test_base.DraftTestCaseDoc): """Test reading and writing of DXF files with Draft.""" - def setUp(self): - """Set up a new document to hold the tests. - - This is executed before every test, so we create a document - to hold the objects. - """ - aux.draw_header() - self.doc_name = self.__class__.__name__ - if App.ActiveDocument: - if App.ActiveDocument.Name != self.doc_name: - App.newDocument(self.doc_name) - else: - App.newDocument(self.doc_name) - App.setActiveDocument(self.doc_name) - self.doc = App.ActiveDocument - _msg(" Temporary document '{}'".format(self.doc_name)) - def test_read_dxf(self): """Read a DXF file and import its elements as Draft objects.""" operation = "importDXF.import" _msg(" Test '{}'".format(operation)) _msg(" This test requires a DXF file to read.") - file = 'Mod/Draft/drafttest/test.dxf' + file = "Mod/Draft/drafttest/test.dxf" in_file = os.path.join(App.getResourceDir(), file) _msg(" file={}".format(in_file)) _msg(" exists={}".format(os.path.exists(in_file))) @@ -78,7 +64,7 @@ def test_export_dxf(self): operation = "importDXF.export" _msg(" Test '{}'".format(operation)) - file = 'Mod/Draft/drafttest/out_test.dxf' + file = "Mod/Draft/drafttest/out_test.dxf" out_file = os.path.join(App.getResourceDir(), file) _msg(" file={}".format(out_file)) _msg(" exists={}".format(os.path.exists(out_file))) @@ -87,11 +73,4 @@ def test_export_dxf(self): obj = Draft.export_dxf(out_file) self.assertTrue(obj, "'{}' failed".format(operation)) - def tearDown(self): - """Finish the test. - - This is executed after each test, so we close the document. - """ - App.closeDocument(self.doc_name) - ## @} diff --git a/src/Mod/Draft/drafttests/test_import.py b/src/Mod/Draft/drafttests/test_import.py index 3d681492788f..9a5007295f9e 100644 --- a/src/Mod/Draft/drafttests/test_import.py +++ b/src/Mod/Draft/drafttests/test_import.py @@ -1,6 +1,7 @@ # *************************************************************************** # * Copyright (c) 2013 Yorik van Havre * # * Copyright (c) 2019 Eliud Cabrera Castillo * +# * Copyright (c) 2025 FreeCAD Project Association * # * * # * This file is part of the FreeCAD CAx development system. * # * * @@ -21,30 +22,23 @@ # * USA * # * * # *************************************************************************** + """Unit tests for the Draft Workbench, import tests.""" + ## @package test_import # \ingroup drafttests # \brief Unit tests for the Draft Workbench, import tests. ## \addtogroup drafttests # @{ -import unittest -import drafttests.auxiliary as aux +from drafttests import auxiliary as aux +from drafttests import test_base -class DraftImport(unittest.TestCase): +class DraftImport(test_base.DraftTestCaseNoDoc): """Import the Draft modules.""" - def setUp(self): - """Draw the header. - - This is executed before every test. - No document is needed to test the import of modules so no document - is created, and `tearDown` isn't defined. - """ - aux.draw_header() - def test_import_draft(self): """Import the Draft module.""" module = "Draft" diff --git a/src/Mod/Draft/drafttests/test_import_gui.py b/src/Mod/Draft/drafttests/test_import_gui.py index 3e9c3102111a..eb686eb702ae 100644 --- a/src/Mod/Draft/drafttests/test_import_gui.py +++ b/src/Mod/Draft/drafttests/test_import_gui.py @@ -1,6 +1,7 @@ # *************************************************************************** # * Copyright (c) 2013 Yorik van Havre * # * Copyright (c) 2019 Eliud Cabrera Castillo * +# * Copyright (c) 2025 FreeCAD Project Association * # * * # * This file is part of the FreeCAD CAx development system. * # * * @@ -21,30 +22,23 @@ # * USA * # * * # *************************************************************************** + """Unit tests for the Draft Workbench, GUI import tests.""" + ## @package test_import_gui # \ingroup drafttests # \brief Unit tests for the Draft Workbench, GUI import tests. ## \addtogroup drafttests # @{ -import unittest -import drafttests.auxiliary as aux +from drafttests import auxiliary as aux +from drafttests import test_base -class DraftGuiImport(unittest.TestCase): +class DraftGuiImport(test_base.DraftTestCaseNoDoc): """Import the Draft graphical modules.""" - def setUp(self): - """Draw the header. - - This is executed before every test. - No document is needed to test the import of modules so no document - is created, and `tearDown` isn't defined. - """ - aux.draw_header() - def test_import_gui_draftgui(self): """Import Draft TaskView GUI tools.""" module = "DraftGui" diff --git a/src/Mod/Draft/drafttests/test_import_tools.py b/src/Mod/Draft/drafttests/test_import_tools.py index 9e970c7c3317..757bacc583cd 100644 --- a/src/Mod/Draft/drafttests/test_import_tools.py +++ b/src/Mod/Draft/drafttests/test_import_tools.py @@ -1,6 +1,7 @@ # *************************************************************************** # * Copyright (c) 2013 Yorik van Havre * # * Copyright (c) 2019 Eliud Cabrera Castillo * +# * Copyright (c) 2025 FreeCAD Project Association * # * * # * This file is part of the FreeCAD CAx development system. * # * * @@ -22,29 +23,21 @@ # * * # *************************************************************************** """Unit tests for the Draft Workbench, tools import tests.""" + ## @package test_import_tools # \ingroup drafttests # \brief Unit tests for the Draft Workbench, tools import tests. ## \addtogroup drafttests # @{ -import unittest -import drafttests.auxiliary as aux +from drafttests import auxiliary as aux +from drafttests import test_base -class DraftImportTools(unittest.TestCase): +class DraftImportTools(test_base.DraftTestCaseNoDoc): """Test for each individual module that defines a tool.""" - def setUp(self): - """Draw the header. - - This is executed before every test. - No document is needed to test the import of modules so no document - is created, and `tearDown` isn't defined. - """ - aux.draw_header() - def test_import_gui_draftedit(self): """Import Draft Edit.""" module = "draftguitools.gui_edit" diff --git a/src/Mod/Draft/drafttests/test_modification.py b/src/Mod/Draft/drafttests/test_modification.py index 166d98031b51..2fb0a57ba7f1 100644 --- a/src/Mod/Draft/drafttests/test_modification.py +++ b/src/Mod/Draft/drafttests/test_modification.py @@ -1,6 +1,7 @@ # *************************************************************************** # * Copyright (c) 2013 Yorik van Havre * # * Copyright (c) 2019 Eliud Cabrera Castillo * +# * Copyright (c) 2025 FreeCAD Project Association * # * * # * This file is part of the FreeCAD CAx development system. * # * * @@ -21,44 +22,28 @@ # * USA * # * * # *************************************************************************** + """Unit tests for the Draft Workbench, object modification tests.""" + ## @package test_modification # \ingroup drafttests # \brief Unit tests for the Draft Workbench, object modification tests. ## \addtogroup drafttests # @{ -import unittest import FreeCAD as App -import Draft -import drafttests.auxiliary as aux import Part - +import Draft from FreeCAD import Vector -from draftutils.messages import _msg, _wrn +from drafttests import auxiliary as aux +from drafttests import test_base +from draftutils.messages import _msg -class DraftModification(unittest.TestCase): +class DraftModification(test_base.DraftTestCaseDoc): """Test Draft modification tools.""" - def setUp(self): - """Set up a new document to hold the tests. - - This is executed before every test, so we create a document - to hold the objects. - """ - aux.draw_header() - self.doc_name = self.__class__.__name__ - if App.ActiveDocument: - if App.ActiveDocument.Name != self.doc_name: - App.newDocument(self.doc_name) - else: - App.newDocument(self.doc_name) - App.setActiveDocument(self.doc_name) - self.doc = App.ActiveDocument - _msg(" Temporary document '{}'".format(self.doc_name)) - def test_move(self): """Create a line and move it.""" operation = "Draft Move" @@ -68,13 +53,13 @@ def test_move(self): _msg(" Line") _msg(" a={0}, b={1}".format(a, b)) obj = Draft.make_line(a, b) - App.ActiveDocument.recompute() + self.doc.recompute() c = Vector(3, 1, 0) _msg(" Translation vector") _msg(" c={}".format(c)) Draft.move(obj, c) - App.ActiveDocument.recompute() + self.doc.recompute() self.assertTrue(obj.Start.isEqual(Vector(3, 3, 0), 1e-6), "'{}' failed".format(operation)) @@ -103,14 +88,14 @@ def test_rotate(self): _msg(" Line") _msg(" a={0}, b={1}".format(a, b)) obj = Draft.make_line(a, b) - App.ActiveDocument.recompute() + self.doc.recompute() c = Vector(-1, 1, 0) rot = 90 _msg(" Rotation") _msg(" angle={} degrees".format(rot)) Draft.rotate(obj, rot) - App.ActiveDocument.recompute() + self.doc.recompute() self.assertTrue(obj.Start.isEqual(c, 1e-6), "'{}' failed".format(operation)) @@ -125,7 +110,7 @@ def test_offset_open(self): _msg(" a={0}, b={1}".format(a, b)) _msg(" c={0}".format(c)) wire = Draft.make_wire([a, b, c]) - App.ActiveDocument.recompute() + self.doc.recompute() offset = Vector(-1, 1, 0) _msg(" Offset") @@ -149,7 +134,7 @@ def test_offset_closed_with_reversed_edge(self): Part.makeLine(c, d), Part.makeLine(a, d)] wire = Part.Wire(edges) - obj = App.ActiveDocument.addObject("Part::Feature") + obj = self.doc.addObject("Part::Feature") obj.Shape = wire offset = Vector(0, -1, 0) @@ -168,13 +153,13 @@ def test_offset_rectangle_with_face(self): _msg(" length={0}, width={1}".format(length, width)) rect = Draft.make_rectangle(length, width) rect.MakeFace = True - App.ActiveDocument.recompute() + self.doc.recompute() offset = Vector(0, -1, 0) _msg(" Offset") _msg(" vector={}".format(offset)) obj = Draft.offset(rect, offset, copy=True) - App.ActiveDocument.recompute() + self.doc.recompute() obj_is_ok = (obj.Shape.CenterOfGravity == Vector(5, 2, 0) and obj.Length == 12 and obj.Height == 6) @@ -196,7 +181,7 @@ def test_trim(self): _msg(" Line 2") _msg(" c={0}, d={1}".format(c, d)) line2 = Draft.make_line(c, d) - App.ActiveDocument.recompute() + self.doc.recompute() Draft.trim_objects = aux.fake_function obj = Draft.trim_objects(line, line2) @@ -217,7 +202,7 @@ def test_extend(self): _msg(" Line 2") _msg(" c={0}, d={1}".format(c, d)) line2 = Draft.make_line(c, d) - App.ActiveDocument.recompute() + self.doc.recompute() Draft.extrude = aux.fake_function obj = Draft.extrude(line, line2) @@ -260,7 +245,7 @@ def test_split(self): obj = Draft.split(wire, b, index) # TODO: split needs to be modified so that it returns True or False. # Then checking for Wire001 is not needed - if App.ActiveDocument.Wire001: + if self.doc.Wire001: obj = True self.assertTrue(obj, "'{}' failed".format(operation)) @@ -277,39 +262,45 @@ def test_upgrade(self): _msg(" b={0}, c={1}".format(b, c)) shape_line_1 = Part.makeLine(a, b) shape_line_2 = Part.makeLine(b, c) - line_1 = App.ActiveDocument.addObject("Part::Feature") - line_2 = App.ActiveDocument.addObject("Part::Feature") + line_1 = self.doc.addObject("Part::Feature") + line_2 = self.doc.addObject("Part::Feature") line_1.Shape = shape_line_1 line_2.Shape = shape_line_2 - App.ActiveDocument.recompute() + self.doc.recompute() + # upgrade to wire obj = Draft.upgrade([line_1, line_2], delete=True) - App.ActiveDocument.recompute() + self.doc.recompute() s = obj[0][0] _msg(" 1: Result '{0}' ({1})".format(s.Shape.ShapeType, s.TypeId)) self.assertTrue(bool(obj[0]), "'{}' failed".format(operation)) + # upgrade to closed wire obj2 = Draft.upgrade(obj[0], delete=True) - App.ActiveDocument.recompute() + self.doc.recompute() s2 = obj2[0][0] _msg(" 2: Result '{0}' ({1})".format(s2.Shape.ShapeType, s2.TypeId)) self.assertTrue(bool(obj2[0]), "'{}' failed".format(operation)) + # upgrade to face obj3 = Draft.upgrade(obj2[0], delete=True) - App.ActiveDocument.recompute() + self.doc.recompute() s3 = obj3[0][0] _msg(" 3: Result '{0}' ({1})".format(s3.Shape.ShapeType, s3.TypeId)) self.assertTrue(bool(obj3[0]), "'{}' failed".format(operation)) - # when draftify, upgrade dont return a new object + # upgrade to Draft_Wire Draft.upgrade(obj3[0], delete=True) - App.ActiveDocument.recompute() - wire = App.ActiveDocument.Wire + # when draftifying, upgrade doesn't return a new object + wire = self.doc.ActiveObject + wire.MakeFace = True # make test independent of fillmode parameter + self.doc.recompute() _msg(" 4: Result '{0}' ({1})".format(wire.Proxy.Type, wire.TypeId)) self.assertTrue(bool(wire), "'{}' failed".format(operation)) + # Draft_Wire with face cannot be upgraded obj4 = Draft.upgrade(wire, delete=True) - App.ActiveDocument.recompute() + self.doc.recompute() _msg(" The last object cannot be upgraded further") self.assertFalse(bool(obj4[0]), "'{}' failed".format(operation)) @@ -324,29 +315,34 @@ def test_downgrade(self): _msg(" a={0}, b={1}".format(a, b)) _msg(" c={0}, a={1}".format(c, a)) wire = Draft.make_wire([a, b, c, a]) - App.ActiveDocument.recompute() + wire.MakeFace = True # make test independent of fillmode parameter + self.doc.recompute() + # downgrade to face obj = Draft.downgrade(wire, delete=True) - App.ActiveDocument.recompute() + self.doc.recompute() s = obj[0][0] _msg(" 1: Result '{0}' ({1})".format(s.Shape.ShapeType, s.TypeId)) self.assertTrue(bool(obj[0]), "'{}' failed".format(operation)) + # downgrade to wire obj2 = Draft.downgrade(obj[0], delete=True) - App.ActiveDocument.recompute() + self.doc.recompute() s2 = obj2[0][0] _msg(" 2: Result '{0}' ({1})".format(s2.Shape.ShapeType, s2.TypeId)) self.assertTrue(bool(obj2[0]), "'{}' failed".format(operation)) + # downgrade to edges obj3 = Draft.downgrade(obj2[0], delete=True) - App.ActiveDocument.recompute() + self.doc.recompute() s3 = obj3[0][0] _msg(" 3: Result 3 x '{0}' ({1})".format(s3.Shape.ShapeType, s3.TypeId)) self.assertTrue(len(obj3[0]) == 3, "'{}' failed".format(operation)) + # edges cannot be downgraded obj4 = Draft.downgrade(obj3[0], delete=True) - App.ActiveDocument.recompute() + self.doc.recompute() s4 = obj4[0] _msg(" 4: Result '{}'".format(s4)) _msg(" The last objects cannot be downgraded further") @@ -365,7 +361,7 @@ def test_wire_to_bspline(self): wire = Draft.make_wire([a, b, c]) obj = Draft.make_bspline(wire.Points) - App.ActiveDocument.recompute() + self.doc.recompute() _msg(" 1: Result '{0}' ({1})".format(obj.Proxy.Type, obj.TypeId)) self.assertTrue(obj, "'{}' failed".format(operation)) @@ -377,7 +373,7 @@ def test_shape_2d_view(self): """Create a prism and then a 2D projection of it.""" operation = "Draft Shape2DView" _msg(" Test '{}'".format(operation)) - prism = App.ActiveDocument.addObject("Part::Prism") + prism = self.doc.addObject("Part::Prism") prism.Polygon = 5 # Rotate the prism 45 degrees around the Y axis prism.Placement.Rotation.Axis = Vector(0, 1, 0) @@ -403,16 +399,16 @@ def test_draft_to_sketch(self): _msg(" a={0}, b={1}".format(a, b)) _msg(" c={}".format(c)) wire = Draft.make_wire([a, b, c]) - App.ActiveDocument.recompute() + self.doc.recompute() obj = Draft.make_sketch(wire, autoconstraints=True) - App.ActiveDocument.recompute() + self.doc.recompute() _msg(" 1: Result '{0}' ({1})".format(obj.Shape.ShapeType, obj.TypeId)) self.assertTrue(obj, "'{}' failed".format(operation)) obj2 = Draft.draftify(obj, delete=False) - App.ActiveDocument.recompute() + self.doc.recompute() _msg(" 2: Result '{0}' ({1})".format(obj2.Proxy.Type, obj2.TypeId)) self.assertTrue(obj2, "'{}' failed".format(operation)) @@ -426,7 +422,7 @@ def test_rectangular_array(self): _msg(" Rectangle") _msg(" length={0}, width={1}".format(length, width)) rect = Draft.make_rectangle(length, width) - App.ActiveDocument.recompute() + self.doc.recompute() dir_x = Vector(5, 0, 0) dir_y = Vector(0, 4, 0) @@ -455,7 +451,7 @@ def test_polar_array(self): _msg(" Rectangle") _msg(" length={0}, width={1}".format(length, width)) rect = Draft.make_rectangle(length, width) - App.ActiveDocument.recompute() + self.doc.recompute() center = Vector(-4, 0, 0) angle = 180 @@ -476,7 +472,7 @@ def test_circular_array(self): _msg(" Rectangle") _msg(" length={0}, width={1}".format(length, width)) rect = Draft.make_rectangle(length, width) - App.ActiveDocument.recompute() + self.doc.recompute() rad_distance = 10 tan_distance = 8 @@ -563,8 +559,8 @@ def test_clone(self): """ operation = "Draft Clone" _msg(" Test '{}'".format(operation)) - box = App.ActiveDocument.addObject("Part::Box") - App.ActiveDocument.recompute() + box = self.doc.addObject("Part::Box") + self.doc.recompute() _msg(" object: '{0}' ({1})".format(box.Shape.ShapeType, box.TypeId)) obj = Draft.make_clone(box) @@ -581,18 +577,18 @@ def test_attached_clone_behavior(self): operation = "Check attached Draft Clone behavior" _msg(" Test '{}'".format(operation)) - box1 = App.ActiveDocument.addObject("Part::Box") + box1 = self.doc.addObject("Part::Box") box1.Length = 10 - box2 = App.ActiveDocument.addObject("Part::Box") - App.ActiveDocument.recompute() + box2 = self.doc.addObject("Part::Box") + self.doc.recompute() obj = Draft.make_clone(box1) obj.MapMode = "ObjectXY" obj.AttachmentSupport = [(box2, ("",))] - App.ActiveDocument.recompute() + self.doc.recompute() box1.Length = 1 - App.ActiveDocument.recompute() + self.doc.recompute() self.assertTrue(obj.Shape.BoundBox.XLength == 1, "'{}' failed".format(operation)) @@ -600,7 +596,7 @@ def test_draft_to_techdraw(self): """Create a solid, and then a DraftView on a TechDraw page.""" operation = "TechDraw DraftView (relies on Draft code)" _msg(" Test '{}'".format(operation)) - prism = App.ActiveDocument.addObject("Part::Prism") + prism = self.doc.addObject("Part::Prism") prism.Polygon = 5 # Rotate the prism 45 degrees around the Y axis prism.Placement.Rotation.Axis = Vector(0, 1, 0) @@ -609,14 +605,14 @@ def test_draft_to_techdraw(self): _msg(" n_sides={}".format(prism.Polygon)) _msg(" placement={}".format(prism.Placement)) - page = App.ActiveDocument.addObject("TechDraw::DrawPage") + page = self.doc.addObject("TechDraw::DrawPage") _msg(" page={}".format(page.TypeId)) - template = App.ActiveDocument.addObject("TechDraw::DrawSVGTemplate") + template = self.doc.addObject("TechDraw::DrawSVGTemplate") template.Template = App.getResourceDir() \ + "Mod/TechDraw/Templates/A3_Landscape_blank.svg" page.Template = template _msg(" template={}".format(template.TypeId)) - view = App.ActiveDocument.addObject("TechDraw::DrawViewDraft") + view = self.doc.addObject("TechDraw::DrawViewDraft") view.Source = prism view.Direction = App.Vector(0, 0, 1) page.addView(view) @@ -633,7 +629,7 @@ def test_mirror(self): _msg(" Rectangle") _msg(" length={0}, width={1}".format(length, width)) rect = Draft.make_rectangle(length, width) - # App.ActiveDocument.recompute() + # self.doc.recompute() p1 = Vector(6, -2, 0) p2 = Vector(6, 2, 0) @@ -680,12 +676,12 @@ def test_scale_part_feature_arcs(self): Part.Arc(ends[1], mids[1], ends[2]), Part.Arc(ends[2], mids[2], ends[3]), Part.Arc(ends[3], mids[3], ends[0])]) - obj = App.ActiveDocument.addObject("Part::Feature") + obj = self.doc.addObject("Part::Feature") obj.Shape = shp obj.Placement.Base = base - App.ActiveDocument.recompute() + self.doc.recompute() Draft.scale([obj], sca, cen, False) - App.ActiveDocument.recompute() + self.doc.recompute() # check endpoints of arcs: newEnds = [Vector( 5.0, 5.5, 0.0), @@ -724,12 +720,12 @@ def test_scale_part_feature_lines(self): Part.LineSegment(pts[1], pts[2]), Part.LineSegment(pts[2], pts[3]), Part.LineSegment(pts[3], pts[0])]) - obj = App.ActiveDocument.addObject("Part::Feature") + obj = self.doc.addObject("Part::Feature") obj.Shape = shp obj.Placement.Base = base - App.ActiveDocument.recompute() + self.doc.recompute() Draft.scale([obj], sca, cen, False) - App.ActiveDocument.recompute() + self.doc.recompute() newPts = [Vector( 5.0, 5.5, 0.0), Vector(13.0, 5.5, 0.0), @@ -753,9 +749,9 @@ def test_scale_rectangle(self): obj = Draft.make_rectangle(len, hgt) obj.Placement.Base = base - App.ActiveDocument.recompute() + self.doc.recompute() Draft.scale([obj], sca, cen, False) - App.ActiveDocument.recompute() + self.doc.recompute() newBase = Vector(5.0, 5.5, 0.0) newLen = 8.0 @@ -785,9 +781,9 @@ def test_scale_spline(self): obj = Draft.make_bspline(pts, False) obj.Placement.Base = base - App.ActiveDocument.recompute() + self.doc.recompute() Draft.scale([obj], sca, cen, False) - App.ActiveDocument.recompute() + self.doc.recompute() newPts = [Vector( 5.0, 5.5, 0.0), Vector( 9.0, 14.5, 0.0), @@ -811,9 +807,9 @@ def test_scale_wire(self): obj = Draft.make_wire(pts, True) obj.Placement.Base = base - App.ActiveDocument.recompute() + self.doc.recompute() Draft.scale([obj], sca, cen, False) - App.ActiveDocument.recompute() + self.doc.recompute() newPts = [Vector( 5.0, 5.5, 0.0), Vector(13.0, 5.5, 0.0), @@ -824,11 +820,4 @@ def test_scale_wire(self): self.assertTrue(vrts[i].Point.isEqual(newPts[i], 1e-6), "'{}' failed".format(operation)) - def tearDown(self): - """Finish the test. - - This is executed after each test, so we close the document. - """ - App.closeDocument(self.doc_name) - ## @} diff --git a/src/Mod/Draft/drafttests/test_oca.py b/src/Mod/Draft/drafttests/test_oca.py index 3119bdc5ab1e..1b2b7b90b898 100644 --- a/src/Mod/Draft/drafttests/test_oca.py +++ b/src/Mod/Draft/drafttests/test_oca.py @@ -1,6 +1,7 @@ # *************************************************************************** # * Copyright (c) 2013 Yorik van Havre * # * Copyright (c) 2019 Eliud Cabrera Castillo * +# * Copyright (c) 2025 FreeCAD Project Association * # * * # * This file is part of the FreeCAD CAx development system. * # * * @@ -21,50 +22,35 @@ # * USA * # * * # *************************************************************************** + """Unit tests for the Draft Workbench, OCA import and export tests.""" + ## @package test_oca # \ingroup drafttests # \brief Unit tests for the Draft Workbench, OCA import and export tests. ## \addtogroup drafttests # @{ + import os -import unittest import FreeCAD as App import Draft -import drafttests.auxiliary as aux - +from drafttests import auxiliary as aux +from drafttests import test_base from draftutils.messages import _msg -class DraftOCA(unittest.TestCase): +class DraftOCA(test_base.DraftTestCaseDoc): """Test reading and writing of OCA files with Draft.""" - def setUp(self): - """Set up a new document to hold the tests. - - This is executed before every test, so we create a document - to hold the objects. - """ - aux.draw_header() - self.doc_name = self.__class__.__name__ - if App.ActiveDocument: - if App.ActiveDocument.Name != self.doc_name: - App.newDocument(self.doc_name) - else: - App.newDocument(self.doc_name) - App.setActiveDocument(self.doc_name) - self.doc = App.ActiveDocument - _msg(" Temporary document '{}'".format(self.doc_name)) - def test_read_oca(self): """Read an OCA file and import its elements as Draft objects.""" operation = "importOCA.import" _msg(" Test '{}'".format(operation)) _msg(" This test requires an OCA file to read.") - file = 'Mod/Draft/drafttest/test.oca' + file = "Mod/Draft/drafttest/test.oca" in_file = os.path.join(App.getResourceDir(), file) _msg(" file={}".format(in_file)) _msg(" exists={}".format(os.path.exists(in_file))) @@ -78,7 +64,7 @@ def test_export_oca(self): operation = "importOCA.export" _msg(" Test '{}'".format(operation)) - file = 'Mod/Draft/drafttest/out_test.oca' + file = "Mod/Draft/drafttest/out_test.oca" out_file = os.path.join(App.getResourceDir(), file) _msg(" file={}".format(out_file)) _msg(" exists={}".format(os.path.exists(out_file))) @@ -87,11 +73,4 @@ def test_export_oca(self): obj = Draft.export_oca(out_file) self.assertTrue(obj, "'{}' failed".format(operation)) - def tearDown(self): - """Finish the test. - - This is executed after each test, so we close the document. - """ - App.closeDocument(self.doc_name) - ## @} diff --git a/src/Mod/Draft/drafttests/test_pivy.py b/src/Mod/Draft/drafttests/test_pivy.py index 2eef150b4f3d..8adcf3bd1037 100644 --- a/src/Mod/Draft/drafttests/test_pivy.py +++ b/src/Mod/Draft/drafttests/test_pivy.py @@ -1,6 +1,7 @@ # *************************************************************************** # * Copyright (c) 2013 Yorik van Havre * # * Copyright (c) 2019 Eliud Cabrera Castillo * +# * Copyright (c) 2025 FreeCAD Project Association * # * * # * This file is part of the FreeCAD CAx development system. * # * * @@ -21,42 +22,25 @@ # * USA * # * * # *************************************************************************** + """Unit tests for the Draft Workbench, Coin (Pivy) tests.""" + ## @package test_pivy # \ingroup drafttests # \brief Unit tests for the Draft Workbench, Coin (Pivy) tests. ## \addtogroup drafttests # @{ -import unittest -import FreeCAD as App import FreeCADGui as Gui -import drafttests.auxiliary as aux - +from drafttests import auxiliary as aux +from drafttests import test_base from draftutils.messages import _msg -class DraftPivy(unittest.TestCase): +class DraftPivy(test_base.DraftTestCaseDoc): """Test for the presence of Pivy and that it works with Coin3D.""" - def setUp(self): - """Set up a new document to hold the tests. - - This is executed before every test, so we create a document - to hold the objects. - """ - aux.draw_header() - self.doc_name = self.__class__.__name__ - if App.ActiveDocument: - if App.ActiveDocument.Name != self.doc_name: - App.newDocument(self.doc_name) - else: - App.newDocument(self.doc_name) - App.setActiveDocument(self.doc_name) - self.doc = App.ActiveDocument - _msg(" Temporary document '{}'".format(self.doc_name)) - def test_pivy_import(self): """Import Coin (Pivy).""" module = "pivy.coin" @@ -68,15 +52,8 @@ def test_pivy_draw(self): import pivy.coin as coin cube = coin.SoCube() _msg(" Draw cube") - Gui.ActiveDocument.ActiveView.getSceneGraph().addChild(cube) + Gui.getDocument(self.doc).ActiveView.getSceneGraph().addChild(cube) _msg(" Adding cube to the active view scene") self.assertTrue(cube, "Pivy is not working properly.") - def tearDown(self): - """Finish the test. - - This is executed after each test, so we close the document. - """ - App.closeDocument(self.doc_name) - ## @} diff --git a/src/Mod/Draft/drafttests/test_svg.py b/src/Mod/Draft/drafttests/test_svg.py index 5ff9709b6780..9619b010253d 100644 --- a/src/Mod/Draft/drafttests/test_svg.py +++ b/src/Mod/Draft/drafttests/test_svg.py @@ -1,6 +1,7 @@ # *************************************************************************** # * Copyright (c) 2013 Yorik van Havre * # * Copyright (c) 2019 Eliud Cabrera Castillo * +# * Copyright (c) 2025 FreeCAD Project Association * # * * # * This file is part of the FreeCAD CAx development system. * # * * @@ -22,19 +23,21 @@ # * * # *************************************************************************** """Unit tests for the Draft Workbench, SVG import and export tests.""" + ## @package test_svg # \ingroup drafttests # \brief Unit tests for the Draft Workbench, SVG import and export tests. ## \addtogroup drafttests # @{ + import os import unittest import FreeCAD as App import Draft -import drafttests.auxiliary as aux - +from drafttests import auxiliary as aux +from drafttests import test_base from draftutils.messages import _msg try: @@ -45,33 +48,16 @@ have_arch = True -class DraftSVG(unittest.TestCase): +class DraftSVG(test_base.DraftTestCaseDoc): """Test reading and writing of SVGs with Draft.""" - def setUp(self): - """Set up a new document to hold the tests. - - This is executed before every test, so we create a document - to hold the objects. - """ - aux.draw_header() - self.doc_name = self.__class__.__name__ - if App.ActiveDocument: - if App.ActiveDocument.Name != self.doc_name: - App.newDocument(self.doc_name) - else: - App.newDocument(self.doc_name) - App.setActiveDocument(self.doc_name) - self.doc = App.ActiveDocument - _msg(" Temporary document '{}'".format(self.doc_name)) - def test_read_svg(self): """Read an SVG file and import its elements as Draft objects.""" operation = "importSVG.import" _msg(" Test '{}'".format(operation)) _msg(" This test requires an SVG file to read.") - file = 'Mod/Draft/drafttest/test.svg' + file = "Mod/Draft/drafttest/test.svg" in_file = os.path.join(App.getResourceDir(), file) _msg(" file={}".format(in_file)) _msg(" exists={}".format(os.path.exists(in_file))) @@ -85,7 +71,7 @@ def test_export_svg(self): operation = "importSVG.export" _msg(" Test '{}'".format(operation)) - file = 'Mod/Draft/drafttest/out_test.svg' + file = "Mod/Draft/drafttest/out_test.svg" out_file = os.path.join(App.getResourceDir(), file) _msg(" file={}".format(out_file)) _msg(" exists={}".format(os.path.exists(out_file))) @@ -100,15 +86,15 @@ def test_get_svg_from_arch_space_with_zero_vector(self): import Part import Draft - sb = Part.makeBox(1,1,1) - b = App.ActiveDocument.addObject('Part::Feature','Box') + sb = Part.makeBox(1, 1, 1) + b = self.doc.addObject("Part::Feature", "Box") b.Shape = sb s = Arch.makeSpace(b) - App.ActiveDocument.recompute() + self.doc.recompute() try: - Draft.get_svg(s, direction=App.Vector(0,0,0)) + Draft.get_svg(s, direction=App.Vector(0, 0, 0)) except AttributeError as err: self.fail("Cryptic exception thrown: {}".format(err)) except ValueError as err: @@ -116,11 +102,4 @@ def test_get_svg_from_arch_space_with_zero_vector(self): else: self.fail("no exception thrown") - def tearDown(self): - """Finish the test. - - This is executed after each test, so we close the document. - """ - App.closeDocument(self.doc_name) - ## @} diff --git a/src/Mod/Draft/draftutils/gui_utils.py b/src/Mod/Draft/draftutils/gui_utils.py index 32c6ae3a953a..16c28fe01040 100644 --- a/src/Mod/Draft/draftutils/gui_utils.py +++ b/src/Mod/Draft/draftutils/gui_utils.py @@ -132,7 +132,7 @@ def autogroup(obj): if Gui.ActiveDocument.ActiveView.getActiveObject("NativeIFC") is not None: # NativeIFC handling try: - import ifc_tools + from nativeifc import ifc_tools parent = Gui.ActiveDocument.ActiveView.getActiveObject("NativeIFC") if parent != active_group: ifc_tools.aggregate(obj, parent) @@ -896,6 +896,14 @@ def get_bbox(obj, debug=False): return App.BoundBox(xmin, ymin, zmin, xmax, ymax, zmax) +# Code by Yorik van Havre. +def find_coin_node(parent, nodetype): + for i in range(parent.getNumChildren()): + if isinstance(parent.getChild(i), nodetype): + return parent.getChild(i) + return None + + # Code by Chris Hennes (chennes). # See https://forum.freecadweb.org/viewtopic.php?p=656362#p656362. # Used to fix https://github.com/FreeCAD/FreeCAD/issues/10469. diff --git a/src/Mod/Draft/draftutils/params.py b/src/Mod/Draft/draftutils/params.py index 5b4814a787b1..69a9ee5c996b 100644 --- a/src/Mod/Draft/draftutils/params.py +++ b/src/Mod/Draft/draftutils/params.py @@ -538,7 +538,8 @@ def _get_param_dictionary(): ":/ui/preferences-archdefaults.ui", ":/ui/preferences-dae.ui", ":/ui/preferences-ifc.ui", - ":/ui/preferences-ifc-export.ui"): + ":/ui/preferences-ifc-export.ui", + ":/ui/preferences-sh3d-import.ui",): # https://stackoverflow.com/questions/14750997/load-txt-file-from-resources-in-python fd = QtCore.QFile(fnm) diff --git a/src/Mod/Draft/draftutils/utils.py b/src/Mod/Draft/draftutils/utils.py index a6af12f4f515..b7aaaa55a2c4 100644 --- a/src/Mod/Draft/draftutils/utils.py +++ b/src/Mod/Draft/draftutils/utils.py @@ -906,16 +906,10 @@ def filter_objects_for_modifiers(objects, isCopied=False): return filteredObjects -filterObjectsForModifiers = filter_objects_for_modifiers - - def is_closed_edge(edge_index, object): return edge_index + 1 >= len(object.Points) -isClosedEdge = is_closed_edge - - def utf8_decode(text): r"""Decode the input string and return a unicode string. diff --git a/src/Mod/Draft/draftviewproviders/view_base.py b/src/Mod/Draft/draftviewproviders/view_base.py index 1337c51829d0..ba8f4b47be46 100644 --- a/src/Mod/Draft/draftviewproviders/view_base.py +++ b/src/Mod/Draft/draftviewproviders/view_base.py @@ -289,11 +289,12 @@ def onChanged(self, vobj, prop): else: path = "None" if path and vobj.RootNode: - if vobj.RootNode.getChildren().getLength() > 2: - if vobj.RootNode.getChild(2).getChildren().getLength() > 0: - innodes = vobj.RootNode.getChild(2).getChild(0).getChildren().getLength() + switch = gui_utils.find_coin_node(vobj.RootNode, coin.SoSwitch) + if switch is not None: + if switch.getChildren().getLength() > 0: + innodes = switch.getChild(0).getChildren().getLength() if innodes > 2: - r = vobj.RootNode.getChild(2).getChild(0).getChild(innodes-1) + r = switch.getChild(0).getChild(innodes-1) i = QtCore.QFileInfo(path) if self.texture: r.removeChild(self.texture) diff --git a/src/Mod/Draft/importDXF.py b/src/Mod/Draft/importDXF.py index 996501bcf903..a8dc76e57daf 100644 --- a/src/Mod/Draft/importDXF.py +++ b/src/Mod/Draft/importDXF.py @@ -4148,7 +4148,7 @@ def readPreferences(): """ # reading parameters if gui and params.get_param("dxfShowDialog"): - FreeCADGui.showPreferences("Import-Export", 3) + FreeCADGui.showPreferencesByName("Import-Export", ":/ui/preferences-dxf.ui") global dxfCreatePart, dxfCreateDraft, dxfCreateSketch global dxfDiscretizeCurves, dxfStarBlocks global dxfMakeBlocks, dxfJoin, dxfRenderPolylineWidth diff --git a/src/Mod/Drawing/App/DrawingExport.cpp b/src/Mod/Drawing/App/DrawingExport.cpp index 5f5a3844f970..1f654caf6005 100644 --- a/src/Mod/Drawing/App/DrawingExport.cpp +++ b/src/Mod/Drawing/App/DrawingExport.cpp @@ -133,7 +133,6 @@ TopoDS_Edge DrawingOutput::asCircle(const BRepAdaptor_Curve& c) const return mkEdge.Edge(); } } - return TopoDS_Edge(); } @@ -172,14 +171,7 @@ std::string SVGOutput::exportEdges(const TopoDS_Shape& input) printEllipse(adapt, i, result); } else if (adapt.GetType() == GeomAbs_BSplineCurve) { - // TopoDS_Edge circle = asCircle(adapt); - // if (circle.IsNull()) { printBSpline(adapt, i, result); - // } - // else { - // BRepAdaptor_Curve adapt_circle(circle); - // printCircle(adapt_circle, result); - // } } else if (adapt.GetType() == GeomAbs_BezierCurve) { printBezier(adapt, i, result); @@ -289,11 +281,9 @@ void SVGOutput::printBezier(const BRepAdaptor_Curve& c, int id, std::ostream& ou else { Standard_Failure::Raise("do it the generic way"); } - return; } - gp_Pnt p1 = bezier->Pole(1); str << p1.X() << "," << p1.Y(); if (bezier->Degree() == 3) { @@ -457,7 +447,6 @@ std::string DXFOutput::exportEdges(const TopoDS_Shape& input) printGeneric(adapt, i, result); } } - return result.str(); } @@ -472,7 +461,6 @@ void DXFOutput::printHeader(std::ostream& out) void DXFOutput::printCircle(const BRepAdaptor_Curve& c, std::ostream& out) { gp_Circ circ = c.Circle(); - // const gp_Ax1& axis = c->Axis(); const gp_Pnt& p = circ.Location(); double r = circ.Radius(); double f = c.FirstParameter(); @@ -488,8 +476,6 @@ void DXFOutput::printCircle(const BRepAdaptor_Curve& c, std::ostream& out) // a full circle if (s.SquareDistance(e) < 0.001) { - // out << ""; out << 0 << endl; out << "CIRCLE" << endl; out << 8 << endl; // Group code for layer name @@ -508,17 +494,9 @@ void DXFOutput::printCircle(const BRepAdaptor_Curve& c, std::ostream& out) out << r << endl; // Radius } - // arc of circle else { - // See also https://developer.mozilla.org/en/SVG/Tutorial/Paths - /*char xar = '0'; // x-axis-rotation - char las = (l-f > D_PI) ? '1' : '0'; // large-arc-flag - char swp = (a < 0) ? '1' : '0'; // sweep-flag, i.e. clockwise (0) or counter-clockwise (1) - out << "";*/ + double ax = s.X() - p.X(); double ay = s.Y() - p.Y(); double bx = e.X() - p.X(); @@ -527,7 +505,6 @@ void DXFOutput::printCircle(const BRepAdaptor_Curve& c, std::ostream& out) double start_angle = atan2(ay, ax) * 180 / D_PI; double end_angle = atan2(by, bx) * 180 / D_PI; - if (a > 0) { double temp = start_angle; start_angle = end_angle; @@ -566,27 +543,8 @@ void DXFOutput::printEllipse(const BRepAdaptor_Curve& c, int /*id*/, std::ostrea double r2 = ellp.MinorRadius(); double dp = ellp.Axis().Direction().Dot(gp_Vec(0, 0, 1)); - // a full ellipse - /* if (s.SquareDistance(e) < 0.001) { - out << ""; - } - // arc of ellipse - else { - // See also https://developer.mozilla.org/en/SVG/Tutorial/Paths - gp_Dir xaxis = ellp.XAxis().Direction(); - Standard_Real angle = xaxis.Angle(gp_Dir(1,0,0)); - angle = Base::toDegrees(angle); - char las = (l-f > D_PI) ? '1' : '0'; // large-arc-flag - char swp = (a < 0) ? '1' : '0'; // sweep-flag, i.e. clockwise (0) or counter-clockwise (1) - out << ""; - }*/ gp_Dir xaxis = ellp.XAxis().Direction(); double angle = xaxis.AngleWithRef(gp_Dir(1, 0, 0), gp_Dir(0, 0, -1)); - // double rotation = Base::toDegrees(angle); double start_angle = c.FirstParameter(); double end_angle = c.LastParameter(); @@ -653,10 +611,6 @@ void DXFOutput::printBSpline(const BRepAdaptor_Curve& c, return; } - // GeomConvert_BSplineCurveToBezierCurve crt(spline); - // GeomConvert_BSplineCurveKnotSplitting crt(spline,0); - // Standard_Integer arcs = crt.NbArcs(); - // Standard_Integer arcs = crt.NbSplits()-1; Standard_Integer m = 0; if (spline->IsPeriodic()) { m = spline->NbPoles() + 2 * spline->Degree() - spline->Multiplicity(1) + 2; @@ -671,7 +625,6 @@ void DXFOutput::printBSpline(const BRepAdaptor_Curve& c, TColgp_Array1OfPnt poles(1, spline->NbPoles()); spline->Poles(poles); - str << 0 << endl << "SPLINE" << endl << 8 << endl // Group code for layer name @@ -707,7 +660,6 @@ void DXFOutput::printBSpline(const BRepAdaptor_Curve& c, } } - // str << "\" />"; out << str.str(); } catch (Standard_Failure&) { diff --git a/src/Mod/Fem/App/AppFem.cpp b/src/Mod/Fem/App/AppFem.cpp index d9566c54fd01..ef2cbfce19ac 100644 --- a/src/Mod/Fem/App/AppFem.cpp +++ b/src/Mod/Fem/App/AppFem.cpp @@ -181,6 +181,8 @@ PyMOD_INIT_FUNC(Fem) Fem::FemSolverObjectPython ::init(); #ifdef FC_USE_VTK + Fem::FemPostSmoothFilterExtension ::init(); + Fem::FemPostObject ::init(); Fem::FemPostPipeline ::init(); Fem::FemPostFilter ::init(); diff --git a/src/Mod/Fem/App/AppFemPy.cpp b/src/Mod/Fem/App/AppFemPy.cpp index b39da210cd0a..8ea2d2e2547e 100644 --- a/src/Mod/Fem/App/AppFemPy.cpp +++ b/src/Mod/Fem/App/AppFemPy.cpp @@ -196,9 +196,12 @@ class Module: public Py::ExtensionModule throw Py::Exception(); } - std::string EncodedName = std::string(Name); + Base::FileInfo file(Name); PyMem_Free(Name); + ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath( + "User parameter:BaseApp/Preferences/Mod/Fem"); + Py::Sequence list(object); Base::Type meshId = Base::Type::fromName("Fem::FemMeshObject"); for (Py::Sequence::iterator it = list.begin(); it != list.end(); ++it) { @@ -207,7 +210,25 @@ class Module: public Py::ExtensionModule App::DocumentObject* obj = static_cast(item)->getDocumentObjectPtr(); if (obj->getTypeId().isDerivedFrom(meshId)) { - static_cast(obj)->FemMesh.getValue().write(EncodedName.c_str()); + auto femMesh = static_cast(obj)->FemMesh.getValue(); + if (file.hasExtension({"vtk", "vtu"})) { + // get VTK prefs + ParameterGrp::handle g = hGrp->GetGroup("InOutVtk"); + std::string level = g->GetASCII("MeshExportLevel", "Highest"); + femMesh.writeVTK(file.filePath().c_str(), + level == "Highest" ? true : false); + } + else if (file.hasExtension("inp")) { + // get Abaqus inp prefs + ParameterGrp::handle g = hGrp->GetGroup("Abaqus"); + int elemParam = g->GetInt("AbaqusElementChoice", 1); + bool groupParam = g->GetBool("AbaqusWriteGroups", false); + // write ABAQUS Output + femMesh.writeABAQUS(file.filePath(), elemParam, groupParam); + } + else { + femMesh.write(file.filePath().c_str()); + } return Py::None(); } } diff --git a/src/Mod/Fem/App/FemMesh.cpp b/src/Mod/Fem/App/FemMesh.cpp index 2f1f8b0cc324..05eed1749fdf 100644 --- a/src/Mod/Fem/App/FemMesh.cpp +++ b/src/Mod/Fem/App/FemMesh.cpp @@ -1647,6 +1647,11 @@ void FemMesh::read(const char* FileName) } } +void FemMesh::writeVTK(const std::string& fileName, bool highest) const +{ + FemVTKTools::writeVTKMesh(fileName.c_str(), this, highest); +} + void FemMesh::writeABAQUS(const std::string& Filename, int elemParam, bool groupParam, @@ -2272,19 +2277,14 @@ void FemMesh::write(const char* FileName) const } else if (File.hasExtension("inp")) { Base::Console().Log("FEM mesh object will be exported to inp format.\n"); - // get Abaqus inp prefs - ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath( - "User parameter:BaseApp/Preferences/Mod/Fem/Abaqus"); - int elemParam = hGrp->GetInt("AbaqusElementChoice", 1); - bool groupParam = hGrp->GetBool("AbaqusWriteGroups", false); // write ABAQUS Output - writeABAQUS(File.filePath(), elemParam, groupParam); + writeABAQUS(File.filePath(), 1, false); } #ifdef FC_USE_VTK else if (File.hasExtension({"vtk", "vtu"})) { Base::Console().Log("FEM mesh object will be exported to either vtk or vtu format.\n"); // write unstructure mesh to VTK format *.vtk and *.vtu - FemVTKTools::writeVTKMesh(File.filePath().c_str(), this); + writeVTK(File.filePath().c_str()); } #endif else if (File.hasExtension("z88")) { diff --git a/src/Mod/Fem/App/FemMesh.h b/src/Mod/Fem/App/FemMesh.h index 5008e25252d0..09b7070fb8bb 100644 --- a/src/Mod/Fem/App/FemMesh.h +++ b/src/Mod/Fem/App/FemMesh.h @@ -210,6 +210,7 @@ class FemExport FemMesh: public Data::ComplexGeoData ABAQUS_VolumeVariant volVariant = ABAQUS_VolumeVariant::Standard, ABAQUS_FaceVariant faceVariant = ABAQUS_FaceVariant::Shell, ABAQUS_EdgeVariant edgeVariant = ABAQUS_EdgeVariant::Beam) const; + void writeVTK(const std::string& FileName, bool highest = true) const; void writeZ88(const std::string& FileName) const; private: diff --git a/src/Mod/Fem/App/FemMeshObject.cpp b/src/Mod/Fem/App/FemMeshObject.cpp index 43b31db040f6..a5a7077171bd 100644 --- a/src/Mod/Fem/App/FemMeshObject.cpp +++ b/src/Mod/Fem/App/FemMeshObject.cpp @@ -41,6 +41,8 @@ FemMeshObject::FemMeshObject() ADD_PROPERTY_TYPE(FemMesh, (), "FEM Mesh", Prop_NoRecompute, "FEM Mesh object"); // in the regard of recomputes see: // https://forum.freecad.org/viewtopic.php?f=18&t=33329#p279203 + + suppressibleExt.initExtension(this); } FemMeshObject::~FemMeshObject() = default; diff --git a/src/Mod/Fem/App/FemMeshObject.h b/src/Mod/Fem/App/FemMeshObject.h index 97d51b44db7f..02ec4d7c3811 100644 --- a/src/Mod/Fem/App/FemMeshObject.h +++ b/src/Mod/Fem/App/FemMeshObject.h @@ -25,6 +25,7 @@ #include #include +#include #include "FemMesh.h" #include "FemMeshProperty.h" @@ -63,6 +64,9 @@ class FemExport FemMeshObject: public App::GeoFeature protected: /// get called by the container when a property has changed void onChanged(const App::Property* prop) override; + +private: + App::SuppressibleExtension suppressibleExt; }; using FemMeshObjectPython = App::FeaturePythonT; diff --git a/src/Mod/Fem/App/FemPostFilter.cpp b/src/Mod/Fem/App/FemPostFilter.cpp index 1e3a1ca27c7a..6522fcb423e3 100644 --- a/src/Mod/Fem/App/FemPostFilter.cpp +++ b/src/Mod/Fem/App/FemPostFilter.cpp @@ -515,6 +515,104 @@ DocumentObjectExecReturn* FemPostClipFilter::execute() return Fem::FemPostFilter::execute(); } +// *************************************************************************** +// smoothing filter extension +const App::PropertyQuantityConstraint::Constraints FemPostSmoothFilterExtension::angleRange = { + 0.0, + 180.0, + 1.0}; +const App::PropertyIntegerConstraint::Constraints FemPostSmoothFilterExtension::iterationRange = { + 0, + VTK_INT_MAX, + 1}; +const App::PropertyFloatConstraint::Constraints FemPostSmoothFilterExtension::relaxationRange = { + 0, + 1.0, + 0.01}; + +EXTENSION_PROPERTY_SOURCE(Fem::FemPostSmoothFilterExtension, App::DocumentObjectExtension) + +FemPostSmoothFilterExtension::FemPostSmoothFilterExtension() +{ + EXTENSION_ADD_PROPERTY_TYPE(BoundarySmoothing, + (true), + "Smoothing", + App::Prop_None, + "Smooth vertices on the boundary"); + EXTENSION_ADD_PROPERTY_TYPE(EdgeAngle, + (15), + "Smoothing", + App::Prop_None, + "Angle to control smoothing along edges"); + EXTENSION_ADD_PROPERTY_TYPE(EnableSmoothing, + (false), + "Smoothing", + App::Prop_None, + "Enable Laplacian smoothing"); + EXTENSION_ADD_PROPERTY_TYPE(FeatureAngle, + (45), + "Smoothing", + App::Prop_None, + "Angle for sharp edge identification"); + EXTENSION_ADD_PROPERTY_TYPE(EdgeSmoothing, + (false), + "Smoothing", + App::Prop_None, + "Smooth align sharp interior edges"); + EXTENSION_ADD_PROPERTY_TYPE(RelaxationFactor, + (0.05), + "Smoothing", + App::Prop_None, + "Factor to control vertex displacement"); + EXTENSION_ADD_PROPERTY_TYPE(Iterations, + (20), + "Smoothing", + App::Prop_None, + "Number of smoothing iterations"); + + EdgeAngle.setConstraints(&angleRange); + FeatureAngle.setConstraints(&angleRange); + Iterations.setConstraints(&iterationRange); + RelaxationFactor.setConstraints(&relaxationRange); + + m_smooth = vtkSmartPointer::New(); + // override default VTK values + m_smooth->SetNumberOfIterations(EnableSmoothing.getValue() ? Iterations.getValue() : 0); + m_smooth->SetBoundarySmoothing(BoundarySmoothing.getValue()); + m_smooth->SetEdgeAngle(EdgeAngle.getValue()); + m_smooth->SetFeatureAngle(FeatureAngle.getValue()); + m_smooth->SetFeatureEdgeSmoothing(EdgeSmoothing.getValue()); + m_smooth->SetRelaxationFactor(RelaxationFactor.getValue()); + + initExtensionType(FemPostSmoothFilterExtension::getExtensionClassTypeId()); +} + +void FemPostSmoothFilterExtension::extensionOnChanged(const App::Property* prop) +{ + if (prop == &EnableSmoothing || prop == &Iterations) { + // if disabled, set iterations to zero to do nothing + m_smooth->SetNumberOfIterations(EnableSmoothing.getValue() ? Iterations.getValue() : 0); + } + else if (prop == &BoundarySmoothing) { + m_smooth->SetBoundarySmoothing(static_cast(prop)->getValue()); + } + else if (prop == &EdgeAngle) { + m_smooth->SetEdgeAngle(static_cast(prop)->getValue()); + } + else if (prop == &FeatureAngle) { + m_smooth->SetFeatureAngle(static_cast(prop)->getValue()); + } + else if (prop == &EdgeSmoothing) { + m_smooth->SetFeatureEdgeSmoothing(static_cast(prop)->getValue()); + } + else if (prop == &RelaxationFactor) { + m_smooth->SetRelaxationFactor(static_cast(prop)->getValue()); + } + else { + DocumentObjectExtension::extensionOnChanged(prop); + } +} + // *************************************************************************** // contours filter PROPERTY_SOURCE(Fem::FemPostContoursFilter, Fem::FemPostFilter) @@ -543,10 +641,13 @@ FemPostContoursFilter::FemPostContoursFilter() FilterPipeline contours; m_contours = vtkSmartPointer::New(); m_contours->ComputeScalarsOn(); + smoothExtension.getFilter()->SetInputConnection(m_contours->GetOutputPort()); contours.source = m_contours; - contours.target = m_contours; + contours.target = smoothExtension.getFilter(); addFilterPipeline(contours, "contours"); setActiveFilterPipeline("contours"); + + smoothExtension.initExtension(this); } FemPostContoursFilter::~FemPostContoursFilter() = default; diff --git a/src/Mod/Fem/App/FemPostFilter.h b/src/Mod/Fem/App/FemPostFilter.h index bdb97daf836e..8c7dd4420c9a 100644 --- a/src/Mod/Fem/App/FemPostFilter.h +++ b/src/Mod/Fem/App/FemPostFilter.h @@ -24,6 +24,7 @@ #define Fem_FemPostFilter_H #include +#include #include #include #include @@ -36,6 +37,7 @@ #include #include +#include #include "FemPostObject.h" @@ -77,6 +79,37 @@ class FemExport FemPostFilter: public Fem::FemPostObject std::string m_activePipeline; }; +class FemExport FemPostSmoothFilterExtension: public App::DocumentObjectExtension +{ + EXTENSION_PROPERTY_HEADER_WITH_OVERRIDE(Fem::FemPostSmoothFilterExtension); + +public: + FemPostSmoothFilterExtension(); + ~FemPostSmoothFilterExtension() override = default; + + App::PropertyBool BoundarySmoothing; + App::PropertyAngle EdgeAngle; + App::PropertyBool EdgeSmoothing; + App::PropertyBool EnableSmoothing; + App::PropertyAngle FeatureAngle; + App::PropertyIntegerConstraint Iterations; + App::PropertyFloatConstraint RelaxationFactor; + + vtkSmartPointer getFilter() const + { + return m_smooth; + } + +protected: + void extensionOnChanged(const App::Property* prop) override; + +private: + vtkSmartPointer m_smooth; + static const App::PropertyQuantityConstraint::Constraints angleRange; + static const App::PropertyIntegerConstraint::Constraints iterationRange; + static const App::PropertyFloatConstraint::Constraints relaxationRange; +}; + // *************************************************************************** // in the following, the different filters sorted alphabetically // *************************************************************************** @@ -210,11 +243,14 @@ class FemExport FemPostContoursFilter: public FemPostFilter protected: App::DocumentObjectExecReturn* execute() override; void onChanged(const App::Property* prop) override; + void recalculateContours(double min, double max); void refreshFields(); void refreshVectors(); bool m_blockPropertyChanges = false; + std::string contourFieldName; + FemPostSmoothFilterExtension smoothExtension; private: vtkSmartPointer m_contours; diff --git a/src/Mod/Fem/App/FemVTKTools.cpp b/src/Mod/Fem/App/FemVTKTools.cpp index 4c952e33e685..1040c2262533 100644 --- a/src/Mod/Fem/App/FemVTKTools.cpp +++ b/src/Mod/Fem/App/FemVTKTools.cpp @@ -339,14 +339,12 @@ FemMesh* FemVTKTools::readVTKMesh(const char* filename, FemMesh* mesh) return mesh; } -void exportFemMeshEdges(vtkSmartPointer grid, +void exportFemMeshEdges(vtkSmartPointer& elemArray, + std::vector& types, const SMDS_EdgeIteratorPtr& aEdgeIter) { Base::Console().Log(" Start: VTK mesh builder edges.\n"); - vtkSmartPointer elemArray = vtkSmartPointer::New(); - std::vector types; - while (aEdgeIter->more()) { const SMDS_MeshEdge* aEdge = aEdgeIter->next(); // edge @@ -362,21 +360,15 @@ void exportFemMeshEdges(vtkSmartPointer grid, } } - if (elemArray->GetNumberOfCells() > 0) { - grid->SetCells(types.data(), elemArray); - } - Base::Console().Log(" End: VTK mesh builder edges.\n"); } -void exportFemMeshFaces(vtkSmartPointer grid, +void exportFemMeshFaces(vtkSmartPointer& elemArray, + std::vector& types, const SMDS_FaceIteratorPtr& aFaceIter) { Base::Console().Log(" Start: VTK mesh builder faces.\n"); - vtkSmartPointer elemArray = vtkSmartPointer::New(); - std::vector types; - while (aFaceIter->more()) { const SMDS_MeshFace* aFace = aFaceIter->next(); // triangle @@ -400,21 +392,15 @@ void exportFemMeshFaces(vtkSmartPointer grid, } } - if (elemArray->GetNumberOfCells() > 0) { - grid->SetCells(types.data(), elemArray); - } - Base::Console().Log(" End: VTK mesh builder faces.\n"); } -void exportFemMeshCells(vtkSmartPointer grid, +void exportFemMeshCells(vtkSmartPointer& elemArray, + std::vector& types, const SMDS_VolumeIteratorPtr& aVolIter) { Base::Console().Log(" Start: VTK mesh builder volumes.\n"); - vtkSmartPointer elemArray = vtkSmartPointer::New(); - std::vector types; - while (aVolIter->more()) { const SMDS_MeshVolume* aVol = aVolIter->next(); @@ -447,15 +433,12 @@ void exportFemMeshCells(vtkSmartPointer grid, } } - if (elemArray->GetNumberOfCells() > 0) { - grid->SetCells(types.data(), elemArray); - } - Base::Console().Log(" End: VTK mesh builder volumes.\n"); } void FemVTKTools::exportVTKMesh(const FemMesh* mesh, vtkSmartPointer grid, + bool highest, float scale) { @@ -489,22 +472,45 @@ void FemVTKTools::exportVTKMesh(const FemMesh* mesh, Base::Console().Log(" Size of nodes in VTK grid: %i.\n", nNodes); Base::Console().Log(" End: VTK mesh builder nodes.\n"); - // edges - SMDS_EdgeIteratorPtr aEdgeIter = meshDS->edgesIterator(); - exportFemMeshEdges(grid, aEdgeIter); + vtkSmartPointer elemArray = vtkSmartPointer::New(); + std::vector types; - // faces - SMDS_FaceIteratorPtr aFaceIter = meshDS->facesIterator(); - exportFemMeshFaces(grid, aFaceIter); + if (highest) { + // try volumes + SMDS_VolumeIteratorPtr aVolIter = meshDS->volumesIterator(); + exportFemMeshCells(elemArray, types, aVolIter); + // try faces + if (elemArray->GetNumberOfCells() == 0) { + SMDS_FaceIteratorPtr aFaceIter = meshDS->facesIterator(); + exportFemMeshFaces(elemArray, types, aFaceIter); + } + // try edges + if (elemArray->GetNumberOfCells() == 0) { + SMDS_EdgeIteratorPtr aEdgeIter = meshDS->edgesIterator(); + exportFemMeshEdges(elemArray, types, aEdgeIter); + } + } + else { + // export all elements + // edges + SMDS_EdgeIteratorPtr aEdgeIter = meshDS->edgesIterator(); + exportFemMeshEdges(elemArray, types, aEdgeIter); + // faces + SMDS_FaceIteratorPtr aFaceIter = meshDS->facesIterator(); + exportFemMeshFaces(elemArray, types, aFaceIter); + // volumes + SMDS_VolumeIteratorPtr aVolIter = meshDS->volumesIterator(); + exportFemMeshCells(elemArray, types, aVolIter); + } - // volumes - SMDS_VolumeIteratorPtr aVolIter = meshDS->volumesIterator(); - exportFemMeshCells(grid, aVolIter); + if (elemArray->GetNumberOfCells() > 0) { + grid->SetCells(types.data(), elemArray); + } Base::Console().Log("End: VTK mesh builder ======================\n"); } -void FemVTKTools::writeVTKMesh(const char* filename, const FemMesh* mesh) +void FemVTKTools::writeVTKMesh(const char* filename, const FemMesh* mesh, bool highest) { Base::TimeElapsed Start; @@ -512,7 +518,7 @@ void FemVTKTools::writeVTKMesh(const char* filename, const FemMesh* mesh) Base::FileInfo f(filename); vtkSmartPointer grid = vtkSmartPointer::New(); - exportVTKMesh(mesh, grid); + exportVTKMesh(mesh, grid, highest); Base::Console().Log("Start: writing mesh data ======================\n"); if (f.hasExtension("vtu")) { writeVTKFile(filename, grid); diff --git a/src/Mod/Fem/App/FemVTKTools.h b/src/Mod/Fem/App/FemVTKTools.h index 19fb2d32b0fe..34a3552e7660 100644 --- a/src/Mod/Fem/App/FemVTKTools.h +++ b/src/Mod/Fem/App/FemVTKTools.h @@ -42,9 +42,11 @@ class FemExport FemVTKTools // data static void importVTKMesh(vtkSmartPointer grid, FemMesh* mesh, float scale = 1.0); - // extract data from FreCAD FEM mesh and fill a vtkUnstructuredGrid instance with that data + // extract data from FreCAD FEM mesh and fill a vtkUnstructuredGrid instance with that data. Set + // `highest` to false to export all elements levels. static void exportVTKMesh(const FemMesh* mesh, vtkSmartPointer grid, + bool highest = true, float scale = 1.0); // extract data from vtkUnstructuredGrid object and fill a FreeCAD FEM result object with that @@ -61,7 +63,7 @@ class FemExport FemVTKTools static FemMesh* readVTKMesh(const char* filename, FemMesh* mesh); // FemMesh write to vtkUnstructuredGrid data file - static void writeVTKMesh(const char* Filename, const FemMesh* mesh); + static void writeVTKMesh(const char* Filename, const FemMesh* mesh, bool highest = true); // FemResult (activeObject or created if res= NULL) read from vtkUnstructuredGrid dataset file static App::DocumentObject* readResult(const char* Filename, diff --git a/src/Mod/Fem/CMakeLists.txt b/src/Mod/Fem/CMakeLists.txt index da61e3e81649..d0847093b661 100755 --- a/src/Mod/Fem/CMakeLists.txt +++ b/src/Mod/Fem/CMakeLists.txt @@ -646,6 +646,11 @@ SET(FemGuiViewProvider_SRCS femviewprovider/view_solver_ccxtools.py ) +SET(FemGuiPreferencePages_SRCS + fempreferencepages/__init__.py + fempreferencepages/dlg_settings_netgen.py +) + SET(FemAllGuiScripts ${FemGuiBaseModules_SRCS} ${FemGuiObjects_SRCS} @@ -653,6 +658,7 @@ SET(FemAllGuiScripts ${FemGuiTests_SRCS} ${FemGuiUtils_SRCS} ${FemGuiViewProvider_SRCS} + ${FemGuiPreferencePages_SRCS} ) if(BUILD_GUI) @@ -669,4 +675,5 @@ if(BUILD_GUI) INSTALL(FILES ${FemGuiTests_SRCS} DESTINATION Mod/Fem/femtest/gui/) INSTALL(FILES ${FemGuiUtils_SRCS} DESTINATION Mod/Fem/femguiutils/) INSTALL(FILES ${FemGuiViewProvider_SRCS} DESTINATION Mod/Fem/femviewprovider/) + INSTALL(FILES ${FemGuiPreferencePages_SRCS} DESTINATION Mod/Fem/fempreferencepages/) endif(BUILD_GUI) diff --git a/src/Mod/Fem/Gui/CMakeLists.txt b/src/Mod/Fem/Gui/CMakeLists.txt index 73939d9c06dc..7ebbebde6e74 100755 --- a/src/Mod/Fem/Gui/CMakeLists.txt +++ b/src/Mod/Fem/Gui/CMakeLists.txt @@ -367,6 +367,7 @@ SET(FemGuiIcon_SVG SET(FemGuiSymbol_IV Resources/symbols/ConstraintContact.iv Resources/symbols/ConstraintDisplacement.iv + Resources/symbols/ConstraintElectrostaticPotential.iv Resources/symbols/ConstraintFixed.iv Resources/symbols/ConstraintForce.iv Resources/symbols/ConstraintHeatFlux.iv diff --git a/src/Mod/Fem/Gui/DlgSettingsFemCcx.ui b/src/Mod/Fem/Gui/DlgSettingsFemCcx.ui index 66084fab866c..bde7af6c61f7 100644 --- a/src/Mod/Fem/Gui/DlgSettingsFemCcx.ui +++ b/src/Mod/Fem/Gui/DlgSettingsFemCcx.ui @@ -300,12 +300,12 @@ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + Number of threads used for analysis + 1 - - 40 - AnalysisNumCPUs diff --git a/src/Mod/Fem/Gui/DlgSettingsFemCcxImp.cpp b/src/Mod/Fem/Gui/DlgSettingsFemCcxImp.cpp index bea9df709fcb..e70b28570281 100644 --- a/src/Mod/Fem/Gui/DlgSettingsFemCcxImp.cpp +++ b/src/Mod/Fem/Gui/DlgSettingsFemCcxImp.cpp @@ -45,9 +45,6 @@ DlgSettingsFemCcxImp::DlgSettingsFemCcxImp(QWidget* parent) // set ranges ui->dsb_ccx_analysis_time->setMaximum(FLOAT_MAX); ui->dsb_ccx_initial_time_step->setMaximum(FLOAT_MAX); - // determine number of CPU cores - int processor_count = QThread::idealThreadCount(); - ui->sb_ccx_numcpu->setMaximum(processor_count); connect(ui->fc_ccx_binary_path, &Gui::PrefFileChooser::fileNameChanged, @@ -117,6 +114,11 @@ void DlgSettingsFemCcxImp::loadSettings() ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath( "User parameter:BaseApp/Preferences/Mod/Fem/Ccx"); + + // determine number of CPU threads + int processor_count = hGrp->GetInt("AnalysisNumCPUs", QThread::idealThreadCount()); + ui->sb_ccx_numcpu->setValue(processor_count); + int index = hGrp->GetInt("Solver", 0); if (index > -1) { ui->cmb_solver->setCurrentIndex(index); diff --git a/src/Mod/Fem/Gui/DlgSettingsFemGmsh.ui b/src/Mod/Fem/Gui/DlgSettingsFemGmsh.ui index e6981dc9f22b..eceddf9a996f 100644 --- a/src/Mod/Fem/Gui/DlgSettingsFemGmsh.ui +++ b/src/Mod/Fem/Gui/DlgSettingsFemGmsh.ui @@ -151,6 +151,32 @@ + + + + Number of threads + + + + + + + Qt::AlignLeft|Qt::AlignTrailing|Qt::AlignVCenter + + + Number of threads used for meshing + + + 1 + + + NumOfThreads + + + Mod/Fem/Gmsh + + + @@ -193,6 +219,11 @@ QComboBox
Gui/PrefWidgets.h
+ + Gui::PrefSpinBox + QSpinBox +
Gui/PrefWidgets.h
+
diff --git a/src/Mod/Fem/Gui/DlgSettingsFemGmshImp.cpp b/src/Mod/Fem/Gui/DlgSettingsFemGmshImp.cpp index 3c0f8b6d918a..c5b789f117a8 100644 --- a/src/Mod/Fem/Gui/DlgSettingsFemGmshImp.cpp +++ b/src/Mod/Fem/Gui/DlgSettingsFemGmshImp.cpp @@ -25,6 +25,7 @@ #include "PreCompiled.h" #ifndef _PreComp_ #include +#include #endif #include @@ -53,6 +54,7 @@ void DlgSettingsFemGmshImp::saveSettings() ui->cb_gmsh_binary_std->onSave(); ui->fc_gmsh_binary_path->onSave(); ui->cb_log_verbosity->onSave(); + ui->sb_threads->onSave(); } void DlgSettingsFemGmshImp::loadSettings() @@ -60,6 +62,11 @@ void DlgSettingsFemGmshImp::loadSettings() ui->cb_gmsh_binary_std->onRestore(); ui->fc_gmsh_binary_path->onRestore(); + ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath( + "User parameter:BaseApp/Preferences/Mod/Fem/Gmsh"); + // determine number of CPU threads + ui->sb_threads->setValue(hGrp->GetInt("NumOfThreads", QThread::idealThreadCount())); + populateLogVerbosity(); ui->cb_log_verbosity->onRestore(); } diff --git a/src/Mod/Fem/Gui/DlgSettingsFemInOutVtk.ui b/src/Mod/Fem/Gui/DlgSettingsFemInOutVtk.ui index 94cf6da1fb97..6d92bf1ec4d8 100644 --- a/src/Mod/Fem/Gui/DlgSettingsFemInOutVtk.ui +++ b/src/Mod/Fem/Gui/DlgSettingsFemInOutVtk.ui @@ -84,6 +84,41 @@ exported from FreeCAD.
+ + + Export + + + + + + Mesh elements to export + + + + + + + Mesh element level to export + + + QComboBox::AdjustToContents + + + MeshExportLevel + + + Mod/Fem/InOutVtk + + + + + + + + + + Qt::Vertical diff --git a/src/Mod/Fem/Gui/DlgSettingsFemInOutVtkImp.cpp b/src/Mod/Fem/Gui/DlgSettingsFemInOutVtkImp.cpp index fb23e50f719d..9d6f21d9343e 100644 --- a/src/Mod/Fem/Gui/DlgSettingsFemInOutVtkImp.cpp +++ b/src/Mod/Fem/Gui/DlgSettingsFemInOutVtkImp.cpp @@ -51,6 +51,7 @@ void DlgSettingsFemInOutVtkImp::saveSettings() hGrp->SetInt("ImportObject", ui->comboBoxVtkImportObject->currentIndex()); ui->comboBoxVtkImportObject->onSave(); + ui->cb_export_level->onSave(); } void DlgSettingsFemInOutVtkImp::loadSettings() @@ -64,6 +65,9 @@ void DlgSettingsFemInOutVtkImp::loadSettings() if (index > -1) { ui->comboBoxVtkImportObject->setCurrentIndex(index); } + + populateExportLevel(); + ui->cb_export_level->onRestore(); } /** @@ -81,4 +85,19 @@ void DlgSettingsFemInOutVtkImp::changeEvent(QEvent* e) } } +void DlgSettingsFemInOutVtkImp::populateExportLevel() const +{ + std::list values = {"All", "Highest"}; + + for (const auto& val : values) { + ui->cb_export_level->addItem(QString::fromStdString(val)); + } + + auto hGrp = App::GetApplication().GetParameterGroupByPath( + "User parameter:BaseApp/Preferences/Mod/Fem/InOutVtk"); + std::string current = hGrp->GetASCII("MeshExportLevel", "Highest"); + int index = ui->cb_export_level->findText(QString::fromStdString(current)); + ui->cb_export_level->setCurrentIndex(index); +} + #include "moc_DlgSettingsFemInOutVtkImp.cpp" diff --git a/src/Mod/Fem/Gui/DlgSettingsFemInOutVtkImp.h b/src/Mod/Fem/Gui/DlgSettingsFemInOutVtkImp.h index 316c68327c9f..d3502efc5690 100644 --- a/src/Mod/Fem/Gui/DlgSettingsFemInOutVtkImp.h +++ b/src/Mod/Fem/Gui/DlgSettingsFemInOutVtkImp.h @@ -48,6 +48,7 @@ class DlgSettingsFemInOutVtkImp: public Gui::Dialog::PreferencePage void changeEvent(QEvent* e) override; private: + void populateExportLevel() const; std::unique_ptr ui; }; diff --git a/src/Mod/Fem/Gui/Resources/symbols/ConstraintElectrostaticPotential.iv b/src/Mod/Fem/Gui/Resources/symbols/ConstraintElectrostaticPotential.iv new file mode 100644 index 000000000000..f3e62a227297 --- /dev/null +++ b/src/Mod/Fem/Gui/Resources/symbols/ConstraintElectrostaticPotential.iv @@ -0,0 +1,73 @@ +#Inventor V2.1 ascii + +# SPDX-License-Identifier: LGPL-2.1-or-later + +#/*************************************************************************** +# * Copyright (c) 2024 Mario Passaglia * +# * * +# * This file is part of FreeCAD. * +# * * +# * FreeCAD is free software: you can redistribute it and/or modify it * +# * under the terms of the GNU Lesser General Public License as * +# * published by the Free Software Foundation, either version 2.1 of the * +# * License, or (at your option) any later version. * +# * * +# * FreeCAD is distributed in the hope that it will be useful, but * +# * WITHOUT ANY WARRANTY; without even the implied warranty of * +# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +# * Lesser General Public License for more details. * +# * * +# * You should have received a copy of the GNU Lesser General Public * +# * License along with FreeCAD. If not, see * +# * . * +# * * +# ************************************************************************** + + +Separator { + + Separator { + + Translation { + translation 0 1.25 0 + + } + Cylinder { + radius 0.25 + height 2.5 + + } + Translation { + translation 0 1.3 0 + + } + Cube { + width 2 + height 0.1 + depth 0.75 + + } + Translation { + translation 0 0.4 0 + + } + BaseColor { + rgb 0.17 0.46 1.0 + + } + Cube { + width 1.5 + height 0.1 + depth 0.75 + + } + Translation { + translation 0 0.3 0 + + } + Cylinder { + radius 0.25 + height 0.5 + } + } +} diff --git a/src/Mod/Fem/Gui/Resources/ui/DlgSettingsNetgen.ui b/src/Mod/Fem/Gui/Resources/ui/DlgSettingsNetgen.ui index d803a33c5dd3..95d00eb5dc6d 100644 --- a/src/Mod/Fem/Gui/Resources/ui/DlgSettingsNetgen.ui +++ b/src/Mod/Fem/Gui/Resources/ui/DlgSettingsNetgen.ui @@ -1,7 +1,7 @@ - Gui::Dialog::DlgSettingsNetgen - + FemGui::DlgSettingsNetgen + 0 @@ -45,6 +45,71 @@ + + + + Options + + + + + + + + Log verbosity + + + + + + + Level of verbosity printed on the task panel + + + QComboBox::AdjustToContents + + + LogVerbosity + + + Mod/Fem/Netgen + + + + + + + + + + Number of threads + + + + + + + Qt::AlignLeft|Qt::AlignTrailing|Qt::AlignVCenter + + + Number of threads used for meshing + + + 1 + + + NumOfThreads + + + Mod/Fem/Netgen + + + + + + + + @@ -60,6 +125,11 @@ QCheckBox
Gui/PrefWidgets.h
+ + Gui::PrefSpinBox + QSpinBox +
Gui/PrefWidgets.h
+
diff --git a/src/Mod/Fem/Gui/TaskFemConstraintContact.cpp b/src/Mod/Fem/Gui/TaskFemConstraintContact.cpp index 0c69819942c5..fe8389c3f7a3 100644 --- a/src/Mod/Fem/Gui/TaskFemConstraintContact.cpp +++ b/src/Mod/Fem/Gui/TaskFemConstraintContact.cpp @@ -473,12 +473,12 @@ const std::string TaskFemConstraintContact::getReferences() const const std::string TaskFemConstraintContact::getSlope() const { - return ui->spbSlope->value().getSafeUserString().toStdString(); + return ui->spbSlope->value().getSafeUserString(); } const std::string TaskFemConstraintContact::getAdjust() const { - return ui->spbAdjust->value().getSafeUserString().toStdString(); + return ui->spbAdjust->value().getSafeUserString(); } bool TaskFemConstraintContact::getFriction() const @@ -493,7 +493,7 @@ double TaskFemConstraintContact::getFrictionCoeff() const const std::string TaskFemConstraintContact::getStickSlope() const { - return ui->spbStickSlope->value().getSafeUserString().toStdString(); + return ui->spbStickSlope->value().getSafeUserString(); } void TaskFemConstraintContact::changeEvent(QEvent*) diff --git a/src/Mod/Fem/Gui/TaskFemConstraintDisplacement.cpp b/src/Mod/Fem/Gui/TaskFemConstraintDisplacement.cpp index b179aa6fc953..1ae029eb7eb8 100644 --- a/src/Mod/Fem/Gui/TaskFemConstraintDisplacement.cpp +++ b/src/Mod/Fem/Gui/TaskFemConstraintDisplacement.cpp @@ -378,32 +378,32 @@ const std::string TaskFemConstraintDisplacement::getReferences() const std::string TaskFemConstraintDisplacement::get_spinxDisplacement() const { - return ui->spinxDisplacement->value().getSafeUserString().toStdString(); + return ui->spinxDisplacement->value().getSafeUserString(); } std::string TaskFemConstraintDisplacement::get_spinyDisplacement() const { - return ui->spinyDisplacement->value().getSafeUserString().toStdString(); + return ui->spinyDisplacement->value().getSafeUserString(); } std::string TaskFemConstraintDisplacement::get_spinzDisplacement() const { - return ui->spinzDisplacement->value().getSafeUserString().toStdString(); + return ui->spinzDisplacement->value().getSafeUserString(); } std::string TaskFemConstraintDisplacement::get_spinxRotation() const { - return ui->spinxRotation->value().getSafeUserString().toStdString(); + return ui->spinxRotation->value().getSafeUserString(); } std::string TaskFemConstraintDisplacement::get_spinyRotation() const { - return ui->spinyRotation->value().getSafeUserString().toStdString(); + return ui->spinyRotation->value().getSafeUserString(); } std::string TaskFemConstraintDisplacement::get_spinzRotation() const { - return ui->spinzRotation->value().getSafeUserString().toStdString(); + return ui->spinzRotation->value().getSafeUserString(); } std::string TaskFemConstraintDisplacement::get_xFormula() const diff --git a/src/Mod/Fem/Gui/TaskFemConstraintForce.cpp b/src/Mod/Fem/Gui/TaskFemConstraintForce.cpp index d111efc2d58f..c9be7ec8c3e4 100644 --- a/src/Mod/Fem/Gui/TaskFemConstraintForce.cpp +++ b/src/Mod/Fem/Gui/TaskFemConstraintForce.cpp @@ -338,7 +338,7 @@ void TaskFemConstraintForce::onCheckReverse(const bool pressed) const std::string TaskFemConstraintForce::getForce() const { - return ui->spinForce->value().getSafeUserString().toStdString(); + return ui->spinForce->value().getSafeUserString(); } const std::string TaskFemConstraintForce::getReferences() const diff --git a/src/Mod/Fem/Gui/TaskFemConstraintHeatflux.cpp b/src/Mod/Fem/Gui/TaskFemConstraintHeatflux.cpp index dc802ec82bc9..e335c878da80 100644 --- a/src/Mod/Fem/Gui/TaskFemConstraintHeatflux.cpp +++ b/src/Mod/Fem/Gui/TaskFemConstraintHeatflux.cpp @@ -401,29 +401,24 @@ const std::string TaskFemConstraintHeatflux::getReferences() const std::string TaskFemConstraintHeatflux::getAmbientTemp() const { - std::string temp; if (ui->rb_convection->isChecked()) { - temp = ui->qsb_ambienttemp_conv->value().getSafeUserString().toStdString(); + return ui->qsb_ambienttemp_conv->value().getSafeUserString(); } - else if (ui->rb_radiation->isChecked()) { - temp = ui->qsb_ambienttemp_rad->value().getSafeUserString().toStdString(); - } - else { - auto obj = ConstraintView->getObject(); - temp = obj->AmbientTemp.getQuantityValue().getSafeUserString().toStdString(); + if (ui->rb_radiation->isChecked()) { + return ui->qsb_ambienttemp_rad->value().getSafeUserString(); } - - return temp; + auto obj = ConstraintView->getObject(); + return obj->AmbientTemp.getQuantityValue().getSafeUserString(); } std::string TaskFemConstraintHeatflux::getFilmCoef() const { - return ui->qsb_film_coef->value().getSafeUserString().toStdString(); + return ui->qsb_film_coef->value().getSafeUserString(); } std::string TaskFemConstraintHeatflux::getDFlux() const { - return ui->qsb_heat_flux->value().getSafeUserString().toStdString(); + return ui->qsb_heat_flux->value().getSafeUserString(); } double TaskFemConstraintHeatflux::getEmissivity() const diff --git a/src/Mod/Fem/Gui/TaskFemConstraintInitialTemperature.cpp b/src/Mod/Fem/Gui/TaskFemConstraintInitialTemperature.cpp index 9f3c6411bd82..09d89ba89d45 100644 --- a/src/Mod/Fem/Gui/TaskFemConstraintInitialTemperature.cpp +++ b/src/Mod/Fem/Gui/TaskFemConstraintInitialTemperature.cpp @@ -70,7 +70,7 @@ TaskFemConstraintInitialTemperature::~TaskFemConstraintInitialTemperature() = de std::string TaskFemConstraintInitialTemperature::get_temperature() const { - return ui->if_temperature->value().getSafeUserString().toStdString(); + return ui->if_temperature->value().getSafeUserString(); } void TaskFemConstraintInitialTemperature::changeEvent(QEvent*) diff --git a/src/Mod/Fem/Gui/TaskFemConstraintPressure.cpp b/src/Mod/Fem/Gui/TaskFemConstraintPressure.cpp index 72a3de2bbe30..cf6d55f54264 100644 --- a/src/Mod/Fem/Gui/TaskFemConstraintPressure.cpp +++ b/src/Mod/Fem/Gui/TaskFemConstraintPressure.cpp @@ -250,7 +250,7 @@ const std::string TaskFemConstraintPressure::getReferences() const std::string TaskFemConstraintPressure::getPressure() const { - return ui->if_pressure->value().getSafeUserString().toStdString(); + return ui->if_pressure->value().getSafeUserString(); } bool TaskFemConstraintPressure::getReverse() const diff --git a/src/Mod/Fem/Gui/TaskFemConstraintRigidBody.cpp b/src/Mod/Fem/Gui/TaskFemConstraintRigidBody.cpp index 1a5e37263f34..9793c3ccf4a0 100644 --- a/src/Mod/Fem/Gui/TaskFemConstraintRigidBody.cpp +++ b/src/Mod/Fem/Gui/TaskFemConstraintRigidBody.cpp @@ -116,7 +116,7 @@ TaskFemConstraintRigidBody::TaskFemConstraintRigidBody( Base::Vector3d rotDir; double rotAngleRad; pcConstraint->Rotation.getValue().getValue(rotDir, rotAngleRad); - Base::Quantity rotAngle(rotAngleRad, QString::fromUtf8("rad")); + Base::Quantity rotAngle(rotAngleRad, "rad"); Base::Quantity forceX = pcConstraint->ForceX.getQuantityValue(); Base::Quantity forceY = pcConstraint->ForceY.getQuantityValue(); Base::Quantity forceZ = pcConstraint->ForceZ.getQuantityValue(); @@ -581,18 +581,18 @@ Base::Rotation TaskFemConstraintRigidBody::getRotation() const std::vector TaskFemConstraintRigidBody::getForce() const { - std::string x = ui->qsb_force_x->value().getSafeUserString().toStdString(); - std::string y = ui->qsb_force_y->value().getSafeUserString().toStdString(); - std::string z = ui->qsb_force_z->value().getSafeUserString().toStdString(); + std::string x = ui->qsb_force_x->value().getSafeUserString(); + std::string y = ui->qsb_force_y->value().getSafeUserString(); + std::string z = ui->qsb_force_z->value().getSafeUserString(); return {x, y, z}; } std::vector TaskFemConstraintRigidBody::getMoment() const { - std::string x = ui->qsb_moment_x->value().getSafeUserString().toStdString(); - std::string y = ui->qsb_moment_y->value().getSafeUserString().toStdString(); - std::string z = ui->qsb_moment_z->value().getSafeUserString().toStdString(); + std::string x = ui->qsb_moment_x->value().getSafeUserString(); + std::string y = ui->qsb_moment_y->value().getSafeUserString(); + std::string z = ui->qsb_moment_z->value().getSafeUserString(); return std::vector({x, y, z}); } diff --git a/src/Mod/Fem/Gui/TaskFemConstraintSpring.cpp b/src/Mod/Fem/Gui/TaskFemConstraintSpring.cpp index d967819a7c4d..eb27666d993e 100644 --- a/src/Mod/Fem/Gui/TaskFemConstraintSpring.cpp +++ b/src/Mod/Fem/Gui/TaskFemConstraintSpring.cpp @@ -248,12 +248,12 @@ const std::string TaskFemConstraintSpring::getReferences() const std::string TaskFemConstraintSpring::getNormalStiffness() const { - return ui->qsb_norm->value().getSafeUserString().toStdString(); + return ui->qsb_norm->value().getSafeUserString(); } std::string TaskFemConstraintSpring::getTangentialStiffness() const { - return ui->qsb_tan->value().getSafeUserString().toStdString(); + return ui->qsb_tan->value().getSafeUserString(); } std::string TaskFemConstraintSpring::getElmerStiffness() const diff --git a/src/Mod/Fem/Gui/TaskFemConstraintTemperature.cpp b/src/Mod/Fem/Gui/TaskFemConstraintTemperature.cpp index 00984ba7b650..a32e3aaef325 100644 --- a/src/Mod/Fem/Gui/TaskFemConstraintTemperature.cpp +++ b/src/Mod/Fem/Gui/TaskFemConstraintTemperature.cpp @@ -306,12 +306,12 @@ const std::string TaskFemConstraintTemperature::getReferences() const std::string TaskFemConstraintTemperature::get_temperature() const { - return ui->qsb_temperature->value().getSafeUserString().toStdString(); + return ui->qsb_temperature->value().getSafeUserString(); } std::string TaskFemConstraintTemperature::get_cflux() const { - return ui->qsb_cflux->value().getSafeUserString().toStdString(); + return ui->qsb_cflux->value().getSafeUserString(); } std::string TaskFemConstraintTemperature::get_constraint_type() const diff --git a/src/Mod/Fem/Gui/TaskFemConstraintTransform.cpp b/src/Mod/Fem/Gui/TaskFemConstraintTransform.cpp index 54f5f456224d..df77b4820549 100644 --- a/src/Mod/Fem/Gui/TaskFemConstraintTransform.cpp +++ b/src/Mod/Fem/Gui/TaskFemConstraintTransform.cpp @@ -118,7 +118,7 @@ TaskFemConstraintTransform::TaskFemConstraintTransform( ui->spb_rot_axis_x->setValue(axis.x); ui->spb_rot_axis_y->setValue(axis.y); ui->spb_rot_axis_z->setValue(axis.z); - Base::Quantity rotAngle(angle, QString::fromUtf8("rad")); + Base::Quantity rotAngle(angle, "rad"); ui->qsb_rot_angle->setValue(rotAngle.getValueAs(Base::Quantity::Degree)); ui->spb_rot_axis_x->bind( @@ -406,7 +406,7 @@ void TaskFemConstraintTransform::addToSelection() ui->spb_rot_axis_x->setValue(axis.x); ui->spb_rot_axis_y->setValue(axis.y); ui->spb_rot_axis_z->setValue(axis.z); - Base::Quantity rotAngle(angle, QString::fromUtf8("rad")); + Base::Quantity rotAngle(angle, "rad"); ui->qsb_rot_angle->setValue(rotAngle.getValueAs(Base::Quantity::Degree)); } } diff --git a/src/Mod/Fem/Gui/TaskPostBoxes.cpp b/src/Mod/Fem/Gui/TaskPostBoxes.cpp index 2cfdbc807183..8fff98bfaf35 100644 --- a/src/Mod/Fem/Gui/TaskPostBoxes.cpp +++ b/src/Mod/Fem/Gui/TaskPostBoxes.cpp @@ -1437,19 +1437,25 @@ TaskPostContours::TaskPostContours(ViewProviderFemPostContours* view, QWidget* p QMetaObject::connectSlotsByName(this); this->groupLayout()->addWidget(proxy); + auto obj = getObject(); + // load filter settings - updateEnumerationList(getTypedObject()->Field, ui->fieldsCB); - updateEnumerationList(getTypedObject()->VectorMode, ui->vectorsCB); + updateEnumerationList(obj->Field, ui->fieldsCB); + updateEnumerationList(obj->VectorMode, ui->vectorsCB); // for a new filter, initialize the coloring - auto colorState = getObject()->NoColor.getValue(); + auto colorState = obj->NoColor.getValue(); if (!colorState && getTypedView()->Field.getValue() == 0) { getTypedView()->Field.setValue(1); } - ui->numberContoursSB->setValue( - getObject()->NumberOfContours.getValue()); + ui->numberContoursSB->setValue(obj->NumberOfContours.getValue()); ui->noColorCB->setChecked(colorState); + auto ext = obj->getExtension(); + ui->ckb_smoothing->setChecked(ext->EnableSmoothing.getValue()); + ui->dsb_relaxation->setValue(ext->RelaxationFactor.getValue()); + ui->dsb_relaxation->setEnabled(ext->EnableSmoothing.getValue()); + // connect connect(ui->fieldsCB, qOverload(&QComboBox::currentIndexChanged), @@ -1464,6 +1470,11 @@ TaskPostContours::TaskPostContours(ViewProviderFemPostContours* view, QWidget* p this, &TaskPostContours::onNumberOfContoursChanged); connect(ui->noColorCB, &QCheckBox::toggled, this, &TaskPostContours::onNoColorChanged); + connect(ui->ckb_smoothing, &QCheckBox::toggled, this, &TaskPostContours::onSmoothingChanged); + connect(ui->dsb_relaxation, + qOverload(&QDoubleSpinBox::valueChanged), + this, + &TaskPostContours::onRelaxationChanged); } TaskPostContours::~TaskPostContours() = default; @@ -1549,6 +1560,22 @@ void TaskPostContours::onNoColorChanged(bool state) recompute(); } +void TaskPostContours::onSmoothingChanged(bool state) +{ + auto ext = static_cast(getObject()) + ->getExtension(); + ext->EnableSmoothing.setValue(state); + ui->dsb_relaxation->setEnabled(state); + recompute(); +} + +void TaskPostContours::onRelaxationChanged(double value) +{ + auto ext = static_cast(getObject()) + ->getExtension(); + ext->RelaxationFactor.setValue(value); + recompute(); +} // *************************************************************************** // cut filter diff --git a/src/Mod/Fem/Gui/TaskPostBoxes.h b/src/Mod/Fem/Gui/TaskPostBoxes.h index 077a2b786953..45f70f3f8115 100644 --- a/src/Mod/Fem/Gui/TaskPostBoxes.h +++ b/src/Mod/Fem/Gui/TaskPostBoxes.h @@ -412,6 +412,8 @@ class TaskPostContours: public TaskPostBox void onVectorModeChanged(int idx); void onNumberOfContoursChanged(int number); void onNoColorChanged(bool state); + void onSmoothingChanged(bool state); + void onRelaxationChanged(double v); private: QWidget* proxy; diff --git a/src/Mod/Fem/Gui/TaskPostContours.ui b/src/Mod/Fem/Gui/TaskPostContours.ui index f342757339c5..eb6bd9df5339 100644 --- a/src/Mod/Fem/Gui/TaskPostContours.ui +++ b/src/Mod/Fem/Gui/TaskPostContours.ui @@ -58,7 +58,7 @@
- Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + Qt::AlignLeft|Qt::AlignTrailing|Qt::AlignVCenter false @@ -71,18 +71,54 @@
+ + + + Enable Laplacian smoothing + + + Smoothing + + + + + + + Relaxation Factor: + + + + + + + Qt::AlignLeft|Qt::AlignTrailing|Qt::AlignVCenter + + + Factor to control vertex displacement + + + 0.00000000000 + + + 1.00000000000 + + + 0.01000000000 + + + + + + + Contour lines will not be colored + + + No Color + + + - - - - Contour lines will not be colored - - - No color - - - diff --git a/src/Mod/Fem/Gui/ViewProviderFemMesh.cpp b/src/Mod/Fem/Gui/ViewProviderFemMesh.cpp index 0c794fb5a9c7..a8f7e7c446cb 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemMesh.cpp +++ b/src/Mod/Fem/Gui/ViewProviderFemMesh.cpp @@ -220,6 +220,8 @@ ViewProviderFemMesh::ViewProviderFemMesh() App::Prop_Hidden, "Node diffuse color array"); + suppressibleExt.initExtension(this); + ColorMode.setEnums(colorModeEnum); onlyEdges = false; diff --git a/src/Mod/Fem/Gui/ViewProviderFemMesh.h b/src/Mod/Fem/Gui/ViewProviderFemMesh.h index 0a3d738b4aad..108afb54180e 100644 --- a/src/Mod/Fem/Gui/ViewProviderFemMesh.h +++ b/src/Mod/Fem/Gui/ViewProviderFemMesh.h @@ -26,6 +26,7 @@ #include #include #include +#include #include class SoCoordinate3; @@ -144,6 +145,7 @@ class FemGuiExport ViewProviderFemMesh: public Gui::ViewProviderGeometryObject private: static App::PropertyFloatConstraint::Constraints floatRange; static const char* colorModeEnum[]; + Gui::ViewProviderSuppressibleExtension suppressibleExt; protected: /// get called by the container whenever a property has been changed diff --git a/src/Mod/Fem/InitGui.py b/src/Mod/Fem/InitGui.py index 0ec9b478bf37..621a278f17f2 100644 --- a/src/Mod/Fem/InitGui.py +++ b/src/Mod/Fem/InitGui.py @@ -71,8 +71,9 @@ def Initialize(self): import Fem import FemGui import femcommands.commands + import fempreferencepages - FreeCADGui.addPreferencePage(":/ui/DlgSettingsNetgen.ui", "FEM") + FreeCADGui.addPreferencePage(fempreferencepages.DlgSettingsNetgen, "FEM") # dummy usage to get flake8 and lgtm quiet False if Fem.__name__ else True diff --git a/src/Mod/Fem/femmesh/gmshtools.py b/src/Mod/Fem/femmesh/gmshtools.py index 33093165b2d0..6c284dc81a92 100644 --- a/src/Mod/Fem/femmesh/gmshtools.py +++ b/src/Mod/Fem/femmesh/gmshtools.py @@ -30,7 +30,7 @@ import os import re import subprocess -from PySide.QtCore import QProcess +from PySide.QtCore import QProcess, QThread import FreeCAD from FreeCAD import Console @@ -400,6 +400,8 @@ def get_group_data(self): else: Console.PrintMessage(" Mesh group objects, we need to get the elements.\n") for mg in self.mesh_obj.MeshGroupList: + if mg.Suppressed: + continue new_group_elements = meshtools.get_mesh_group_elements(mg, self.part_obj) for ge in new_group_elements: if ge not in self.group_elements: @@ -479,6 +481,8 @@ def get_region_data(self): ): self.outputCompoundWarning for mr_obj in self.mesh_obj.MeshRegionList: + if mr_obj.Suppressed: + continue # print(mr_obj.Name) # print(mr_obj.CharacteristicLength) # print(Units.Quantity(mr_obj.CharacteristicLength).Value) @@ -564,6 +568,8 @@ def get_boundary_layer_data(self): # https://forum.freecad.org/viewtopic.php?f=18&t=18780&p=149520#p149520 self.outputCompoundWarning for mr_obj in self.mesh_obj.MeshBoundaryLayerList: + if mr_obj.Suppressed: + continue if mr_obj.MinimumThickness and Units.Quantity(mr_obj.MinimumThickness).Value > 0: if mr_obj.References: belem_list = [] @@ -737,11 +743,12 @@ def write_geo(self): geo.write("// geo file for meshing with Gmsh meshing software created by FreeCAD\n") geo.write("\n") - cpu_count = os.cpu_count() - if cpu_count is not None and cpu_count > 1: - geo.write("// enable multi-core processing\n") - geo.write(f"General.NumThreads = {cpu_count};\n") - geo.write("\n") + cpu_count = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem/Gmsh").GetInt( + "NumOfThreads", QThread.idealThreadCount() + ) + geo.write("// enable multi-core processing\n") + geo.write(f"General.NumThreads = {cpu_count};\n") + geo.write("\n") geo.write("// open brep geometry\n") # explicit use double quotes in geo file diff --git a/src/Mod/Fem/femmesh/netgentools.py b/src/Mod/Fem/femmesh/netgentools.py index f63a3a2f6ebd..5ffed44c66f0 100644 --- a/src/Mod/Fem/femmesh/netgentools.py +++ b/src/Mod/Fem/femmesh/netgentools.py @@ -29,10 +29,11 @@ import shutil import sys import tempfile -from PySide.QtCore import QProcess +from PySide.QtCore import QProcess, QThread import FreeCAD import Fem +from freecad import utils try: from netgen import occ, meshing, config as ng_config @@ -83,6 +84,7 @@ def __init__(self, obj): self.tmpdir = "" self.process = QProcess() self.mesh_params = {} + self.param_grp = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem/Netgen") def write_geom(self): if not self.tmpdir: @@ -95,136 +97,152 @@ def write_geom(self): geom_trans.Placement = global_pla self.brep_file = self.tmpdir + "/shape.brep" self.result_file = self.tmpdir + "/result.npy" + self.script_file = self.tmpdir + "/code.py" geom_trans.exportBrep(self.brep_file) - code = """ -from femmesh.netgentools import NetgenTools - -NetgenTools.run_netgen(**{params}) -""" - def prepare(self): self.write_geom() self.mesh_params = { "brep_file": self.brep_file, - "threads": self.obj.Threads, + "threads": self.param_grp.GetInt("NumOfThreads", QThread.idealThreadCount()), "heal": self.obj.HealShape, "params": self.get_meshing_parameters(), "second_order": self.obj.SecondOrder, "second_order_linear": self.obj.SecondOrderLinear, "result_file": self.result_file, "mesh_region": self.get_mesh_region(), + "verbosity": self.param_grp.GetInt("LogVerbosity", 2), } + with open(self.script_file, "w") as file: + file.write( + self.code.format( + kwds=self.mesh_params, + order_face=NetgenTools.order_face, + order_volume=NetgenTools.order_volume, + ) + ) + def compute(self): - code_str = self.code.format(params=self.mesh_params) - self.process.start(sys.executable, ["-c", code_str]) + self.process.start(utils.get_python_exe(), [self.script_file]) return self.process - @staticmethod - def run_netgen( - brep_file, - threads, - heal, - params, - second_order, - second_order_linear, - result_file, - mesh_region, - ): - geom = occ.OCCGeometry(brep_file) - ngcore.SetNumThreads(threads) - - shape = geom.shape - for items, l in mesh_region: - for t, n in items: - if t == "Vertex": - shape.vertices.vertices[n - 1].maxh = l - elif t == "Edge": - shape.edges.edges[n - 1].maxh = l - elif t == "Face": - shape.faces.faces[n - 1].maxh = l - elif t == "Solid": - shape.solids.solids[n - 1].maxh = l - - with ngcore.TaskManager(): - geom = occ.OCCGeometry(shape) - if heal: - geom.Heal() - mesh = geom.GenerateMesh(mp=meshing.MeshingParameters(**params)) - - result = { - "coords": [], - "Edges": [[], []], - "Faces": [[], []], - "Volumes": [[], []], - } - groups = {"Edges": [], "Faces": [], "Solids": []} + code = """ +from netgen import occ, meshing +import pyngcore as ngcore +import numpy as np + +order_face = {order_face} +order_volume = {order_volume} + +def run_netgen( + brep_file, + threads, + heal, + params, + second_order, + second_order_linear, + result_file, + mesh_region, + verbosity, +): + geom = occ.OCCGeometry(brep_file) + ngcore.SetNumThreads(threads) + + shape = geom.shape + for items, l in mesh_region: + for t, n in items: + if t == "Vertex": + shape.vertices.vertices[n - 1].maxh = l + elif t == "Edge": + shape.edges.edges[n - 1].maxh = l + elif t == "Face": + shape.faces.faces[n - 1].maxh = l + elif t == "Solid": + shape.solids.solids[n - 1].maxh = l + + with ngcore.TaskManager(): + meshing.SetMessageImportance(verbosity) + geom = occ.OCCGeometry(shape) + if heal: + geom.Heal() + mesh = geom.GenerateMesh(mp=meshing.MeshingParameters(**params)) + + result = {{ + "coords": [], + "Edges": [[], []], + "Faces": [[], []], + "Volumes": [[], []], + }} + groups = {{"Edges": [], "Faces": [], "Solids": []}} + + # save empty data if last step is geometry analysis + if params["perfstepsend"] == 1: + np.save(result_file, [result, groups]) + return None - # save empty data if last step is geometry analysis - if params["perfstepsend"] == NetgenTools.meshing_step["AnalyzeGeometry"]: - np.save(result_file, [result, groups]) - return None + if second_order: + if second_order_linear: + mesh.SetGeometry(None) + mesh.SecondOrder() - if second_order: - if second_order_linear: - mesh.SetGeometry(None) - mesh.SecondOrder() + coords = mesh.Coordinates() - coords = mesh.Coordinates() + edges = mesh.Elements1D().NumPy() + faces = mesh.Elements2D().NumPy() + volumes = mesh.Elements3D().NumPy() - edges = mesh.Elements1D().NumPy() - faces = mesh.Elements2D().NumPy() - volumes = mesh.Elements3D().NumPy() + nod_edges = edges["nodes"] + nod_faces = faces["nodes"] + nod_volumes = volumes["nodes"] - nod_edges = edges["nodes"] - nod_faces = faces["nodes"] - nod_volumes = volumes["nodes"] + np_edges = (nod_edges != 0).sum(axis=1).tolist() + np_faces = faces["np"].tolist() + np_volumes = volumes["np"].tolist() - np_edges = (nod_edges != 0).sum(axis=1).tolist() - np_faces = faces["np"].tolist() - np_volumes = volumes["np"].tolist() + # set smesh node order + for i in range(faces.size): + nod_faces[i] = nod_faces[i][order_face[np_faces[i]]] - # set smesh node order - for i in range(faces.size): - nod_faces[i] = nod_faces[i][NetgenTools.order_face[np_faces[i]]] + for i in range(volumes.size): + nod_volumes[i] = nod_volumes[i][order_volume[np_volumes[i]]] - for i in range(volumes.size): - nod_volumes[i] = nod_volumes[i][NetgenTools.order_volume[np_volumes[i]]] + flat_edges = nod_edges[nod_edges != 0].tolist() + flat_faces = nod_faces[nod_faces != 0].tolist() + flat_volumes = nod_volumes[nod_volumes != 0].tolist() - flat_edges = nod_edges[nod_edges != 0].tolist() - flat_faces = nod_faces[nod_faces != 0].tolist() - flat_volumes = nod_volumes[nod_volumes != 0].tolist() + result = {{ + "coords": coords, + "Edges": [flat_edges, np_edges], + "Faces": [flat_faces, np_faces], + "Volumes": [flat_volumes, np_volumes], + }} - result = { - "coords": coords, - "Edges": [flat_edges, np_edges], - "Faces": [flat_faces, np_faces], - "Volumes": [flat_volumes, np_volumes], - } + # create groups + nb_edges = edges.size + nb_faces = faces.size + nb_volumes = volumes.size - # create groups - nb_edges = edges.size - nb_faces = faces.size - nb_volumes = volumes.size + idx_edges = edges["index"] + idx_faces = faces["index"] + idx_volumes = volumes["index"] - idx_edges = edges["index"] - idx_faces = faces["index"] - idx_volumes = volumes["index"] + for i in np.unique(idx_edges): + edge_i = (np.nonzero(idx_edges == i)[0] + 1).tolist() + groups["Edges"].append([i, edge_i]) + for i in np.unique(idx_faces): + face_i = (np.nonzero(idx_faces == i)[0] + nb_edges + 1).tolist() + groups["Faces"].append([i, face_i]) - for i in np.unique(idx_edges): - edge_i = (np.nonzero(idx_edges == i)[0] + 1).tolist() - groups["Edges"].append([i, edge_i]) - for i in np.unique(idx_faces): - face_i = (np.nonzero(idx_faces == i)[0] + nb_edges + 1).tolist() - groups["Faces"].append([i, face_i]) + for i in np.unique(idx_volumes): + volume_i = (np.nonzero(idx_volumes == i)[0] + nb_edges + nb_faces + 1).tolist() + groups["Solids"].append([i, volume_i]) - for i in np.unique(idx_volumes): - volume_i = (np.nonzero(idx_volumes == i)[0] + nb_edges + nb_faces + 1).tolist() - groups["Solids"].append([i, volume_i]) + np.save(result_file, [result, groups]) - np.save(result_file, [result, groups]) +run_netgen(**{kwds}) + """ def fem_mesh_from_result(self): fem_mesh = Fem.FemMesh() @@ -301,7 +319,7 @@ def get_meshing_parameters(self): "inverttrigs": self.obj.InvertTrigs, "autozrefine": self.obj.AutoZRefine, "parallel_meshing": self.obj.ParallelMeshing, - "nthreads": self.obj.Threads, + "nthreads": self.param_grp.GetInt("NumOfThreads", QThread.idealThreadCount()), "closeedgefac": self.obj.CloseEdgeFactor, } @@ -348,6 +366,8 @@ def get_mesh_region(self): result = [] for reg in self.obj.MeshRegionList: + if reg.Suppressed: + continue for s, sub_list in reg.References: if s.isDerivedFrom("App::GeoFeature") and isinstance( s.getPropertyOfGeometry(), PartShape diff --git a/src/Mod/Fem/femobjects/base_femelement.py b/src/Mod/Fem/femobjects/base_femelement.py index 950c1e70a901..a81e906a3603 100644 --- a/src/Mod/Fem/femobjects/base_femelement.py +++ b/src/Mod/Fem/femobjects/base_femelement.py @@ -45,6 +45,8 @@ def __init__(self, obj): for prop in self._get_properties(): prop.add_to_object(obj) + obj.addExtension("App::SuppressibleExtensionPython") + def _get_properties(self): prop = [] @@ -71,3 +73,6 @@ def onDocumentRestored(self, obj): if prop.name == "References": # change References to App::PropertyLinkSubListGlobal prop.handle_change_type(obj, old_type="App::PropertyLinkSubList") + + if not obj.hasExtension("App::SuppressibleExtensionPython"): + obj.addExtension("App::SuppressibleExtensionPython") diff --git a/src/Mod/Fem/femobjects/base_femmeshelement.py b/src/Mod/Fem/femobjects/base_femmeshelement.py index 31fcef9d317d..c3a096090fae 100644 --- a/src/Mod/Fem/femobjects/base_femmeshelement.py +++ b/src/Mod/Fem/femobjects/base_femmeshelement.py @@ -46,6 +46,8 @@ def __init__(self, obj): for prop in self._get_properties(): prop.add_to_object(obj) + obj.addExtension("App::SuppressibleExtensionPython") + def _get_properties(self): prop = [] @@ -72,3 +74,6 @@ def onDocumentRestored(self, obj): if prop.name == "References": # change References to App::PropertyLinkSubListGlobal prop.handle_change_type(obj, old_type="App::PropertyLinkSubList") + + if not obj.hasExtension("App::SuppressibleExtensionPython"): + obj.addExtension("App::SuppressibleExtensionPython") diff --git a/src/Mod/Fem/femobjects/material_common.py b/src/Mod/Fem/femobjects/material_common.py index 10011c797827..c4b1280a5d99 100644 --- a/src/Mod/Fem/femobjects/material_common.py +++ b/src/Mod/Fem/femobjects/material_common.py @@ -49,6 +49,8 @@ def __init__(self, obj): for prop in self._get_properties(): prop.add_to_object(obj) + obj.addExtension("App::SuppressibleExtensionPython") + def _get_properties(self): prop = [] @@ -95,6 +97,9 @@ def onDocumentRestored(self, obj): # change References to App::PropertyLinkSubListGlobal prop.handle_change_type(obj, old_type="App::PropertyLinkSubList") + if not obj.hasExtension("App::SuppressibleExtensionPython"): + obj.addExtension("App::SuppressibleExtensionPython") + """ Some remarks to the category. Not finished, thus to be continued. diff --git a/src/Mod/Fem/femobjects/material_mechanicalnonlinear.py b/src/Mod/Fem/femobjects/material_mechanicalnonlinear.py index 8aa8ca4c942e..6c60437b6308 100644 --- a/src/Mod/Fem/femobjects/material_mechanicalnonlinear.py +++ b/src/Mod/Fem/femobjects/material_mechanicalnonlinear.py @@ -43,6 +43,8 @@ def __init__(self, obj): super().__init__(obj) self.add_properties(obj) + obj.addExtension("App::SuppressibleExtensionPython") + def onDocumentRestored(self, obj): # YieldPoints was (until 0.19) stored as 3 separate variables. Consolidate them if present. @@ -64,6 +66,8 @@ def onDocumentRestored(self, obj): if yield_points: obj.YieldPoints = yield_points + if not obj.hasExtension("App::SuppressibleExtensionPython"): + obj.addExtension("App::SuppressibleExtensionPython") # TODO: If in the future more nonlinear options are added, update choices here. def add_properties(self, obj): diff --git a/src/Mod/Fem/femobjects/mesh_netgen.py b/src/Mod/Fem/femobjects/mesh_netgen.py index a437cdaedd93..9d7048a4d963 100644 --- a/src/Mod/Fem/femobjects/mesh_netgen.py +++ b/src/Mod/Fem/femobjects/mesh_netgen.py @@ -485,15 +485,6 @@ def _get_properties(self): value=True, ) ) - prop.append( - _PropHelper( - type="App::PropertyInteger", - name="Threads", - group="Mesh Parameters", - doc="Number of threads for parallel meshing", - value=4, - ) - ) prop.append( _PropHelper( type="App::PropertyBool", diff --git a/src/Mod/Fem/fempreferencepages/__init__.py b/src/Mod/Fem/fempreferencepages/__init__.py new file mode 100644 index 000000000000..983152cd5c5e --- /dev/null +++ b/src/Mod/Fem/fempreferencepages/__init__.py @@ -0,0 +1 @@ +from .dlg_settings_netgen import DlgSettingsNetgen diff --git a/src/Mod/Fem/fempreferencepages/dlg_settings_netgen.py b/src/Mod/Fem/fempreferencepages/dlg_settings_netgen.py new file mode 100644 index 000000000000..695f7252c2b6 --- /dev/null +++ b/src/Mod/Fem/fempreferencepages/dlg_settings_netgen.py @@ -0,0 +1,65 @@ +# SPDX-License-Identifier: LGPL-2.1-or-later + +# *************************************************************************** +# * Copyright (c) 2024 Mario Passaglia * +# * * +# * This file is part of FreeCAD. * +# * * +# * FreeCAD is free software: you can redistribute it and/or modify it * +# * under the terms of the GNU Lesser General Public License as * +# * published by the Free Software Foundation, either version 2.1 of the * +# * License, or (at your option) any later version. * +# * * +# * FreeCAD is distributed in the hope that it will be useful, but * +# * WITHOUT ANY WARRANTY; without even the implied warranty of * +# * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * +# * Lesser General Public License for more details. * +# * * +# * You should have received a copy of the GNU Lesser General Public * +# * License along with FreeCAD. If not, see * +# * . * +# * * +# *************************************************************************** + +__title__ = "Netgen preference page class" +__author__ = "Mario Passaglia" +__url__ = "https://www.freecad.org" + +from PySide.QtCore import QThread + +import FreeCAD +import FreeCADGui + + +class DlgSettingsNetgen: + + def __init__(self): + self.form = FreeCADGui.PySideUic.loadUi(":ui/DlgSettingsNetgen.ui") + self.grp = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem/Netgen") + + def loadSettings(self): + self.form.ckb_legacy.setChecked(self.grp.GetBool("UseLegacyNetgen", True)) + self.form.sb_threads.setValue(self.grp.GetInt("NumOfThreads", QThread.idealThreadCount())) + self.populate_log_verbosity() + + def saveSettings(self): + self.grp.SetBool("UseLegacyNetgen", self.form.ckb_legacy.isChecked()) + self.grp.SetInt("LogVerbosity", self.form.cb_log_verbosity.currentData()) + self.grp.SetInt("NumOfThreads", self.form.sb_threads.value()) + + def populate_log_verbosity(self): + values = { + "None": 0, + "Least": 1, + "Little": 2, + "Moderate": 3, + "Much": 4, + "Most": 5, + } + + for v in values: + self.form.cb_log_verbosity.addItem(v, values[v]) + + current = self.grp.GetInt("LogVerbosity", 2) + index = self.form.cb_log_verbosity.findData(current) + self.form.cb_log_verbosity.setCurrentIndex(index) diff --git a/src/Mod/Fem/femsolver/calculix/solver.py b/src/Mod/Fem/femsolver/calculix/solver.py index e8a2f22839d5..c982e4553a6b 100644 --- a/src/Mod/Fem/femsolver/calculix/solver.py +++ b/src/Mod/Fem/femsolver/calculix/solver.py @@ -316,6 +316,15 @@ def add_attributes(self, obj): ) obj.ThermoMechType = thermomech_types + if not hasattr(obj, "BucklingAccuracy"): + obj.addProperty( + "App::PropertyFloatConstraint", + "BucklingAccuracy", + "Fem", + "Accuracy for buckling analysis", + ) + obj.BucklingAccuracy = 0.01 + class Proxy(solverbase.Proxy, _BaseSolverCalculix): """The Fem::FemSolver's Proxy python type, add solver specific properties""" diff --git a/src/Mod/Fem/femsolver/calculix/write_step_equation.py b/src/Mod/Fem/femsolver/calculix/write_step_equation.py index 0908aee716d8..1bce3a962365 100644 --- a/src/Mod/Fem/femsolver/calculix/write_step_equation.py +++ b/src/Mod/Fem/femsolver/calculix/write_step_equation.py @@ -154,7 +154,10 @@ def write_step_equation(f, ccxwriter): ccxwriter.solver_obj.TimeMaximumStep, ) elif ccxwriter.analysis_type == "buckling": - analysis_parameter = f"{ccxwriter.solver_obj.BucklingFactors}\n" + analysis_parameter = "{},{}".format( + ccxwriter.solver_obj.BucklingFactors, + ccxwriter.solver_obj.BucklingAccuracy, + ) # write analysis type line, analysis parameter line f.write(analysis_type + "\n") diff --git a/src/Mod/Fem/femsolver/elmer/equations/magnetodynamic_writer.py b/src/Mod/Fem/femsolver/elmer/equations/magnetodynamic_writer.py index c26c9e169978..c67ddf22ba36 100644 --- a/src/Mod/Fem/femsolver/elmer/equations/magnetodynamic_writer.py +++ b/src/Mod/Fem/femsolver/elmer/equations/magnetodynamic_writer.py @@ -347,11 +347,6 @@ def handleMagnetodynamicBndConditions(self, equation): # the potential can either be a body force or a boundary constraint # therefore only output here if a face is referenced potentials = self.write.getMember("Fem::ConstraintElectrostaticPotential") - if len(potentials) == 0: - raise general_writer.WriteError( - "The Magnetodynamic equation needs at least one ElectrostaticPotential" - "constraint." - ) for obj in potentials: if obj.References: firstName = obj.References[0][1][0] @@ -361,7 +356,7 @@ def handleMagnetodynamicBndConditions(self, equation): # output the FreeCAD label as comment if obj.Label: self.write.boundary(name, "! FreeCAD Name", obj.Label) - # output only if potentiual is enabled and needed + # output only if potential is enabled and needed self._outputMagnetodynamicBndConditions(obj, name, equation) self.write.handled(obj) diff --git a/src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py b/src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py index 114289aad1b4..a55c7c9790a6 100644 --- a/src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py +++ b/src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py @@ -381,13 +381,8 @@ def runCalculix(self): # Set up for multi-threading. Note: same functionality as ccx_tools.py/start_ccx() ccx_prefs = FreeCAD.ParamGet(self.PREFS_PATH) env = QtCore.QProcessEnvironment.systemEnvironment() - num_cpu_pref = ccx_prefs.GetInt("AnalysisNumCPUs", 1) - if num_cpu_pref > 1: - env.insert("OMP_NUM_THREADS", str(num_cpu_pref)) - else: - cpu_count = os.cpu_count() - if cpu_count is not None and cpu_count > 1: - env.insert("OMP_NUM_THREADS", str(cpu_count)) + num_cpu_pref = ccx_prefs.GetInt("AnalysisNumCPUs", QtCore.QThread.idealThreadCount()) + env.insert("OMP_NUM_THREADS", str(num_cpu_pref)) self.Calculix.setProcessEnvironment(env) self.cwd = QtCore.QDir.currentPath() diff --git a/src/Mod/Fem/femtools/checksanalysis.py b/src/Mod/Fem/femtools/checksanalysis.py index ee6f5c003130..b6f67f5c1a7b 100644 --- a/src/Mod/Fem/femtools/checksanalysis.py +++ b/src/Mod/Fem/femtools/checksanalysis.py @@ -60,7 +60,7 @@ def check_member_for_solver_calculix(analysis, solver, mesh, member): # mesh if not mesh: - message += "No mesh object defined in the analysis.\n" + message += "A single mesh object must be defined in the analysis.\n" if mesh: if ( mesh.FemMesh.VolumeCount == 0 @@ -69,7 +69,7 @@ def check_member_for_solver_calculix(analysis, solver, mesh, member): ): message += ( "FEM mesh has no volume elements, " - "either define a shell thicknesses or " + "either define shell thicknesses or " "provide a FEM mesh with volume elements.\n" ) if ( @@ -158,7 +158,7 @@ def check_member_for_solver_calculix(analysis, solver, mesh, member): ) if femutils.is_of_type(mat_obj, "Fem::MaterialReinforced"): # additional tests for reinforced materials, - # they are needed for result calculation not for ccx analysis + # they are needed for result calculation, not for ccx analysis mat_map_m = mat_obj.Material if "AngleOfFriction" in mat_map_m: # print(Units.Quantity(mat_map_m["AngleOfFriction"]).Value) diff --git a/src/Mod/Fem/femtools/membertools.py b/src/Mod/Fem/femtools/membertools.py index 4ba30c7f6e13..44fbfd5340e1 100644 --- a/src/Mod/Fem/femtools/membertools.py +++ b/src/Mod/Fem/femtools/membertools.py @@ -141,11 +141,7 @@ def get_mesh_to_solve(analysis): """ mesh_to_solve = None for m in analysis.Group: - if ( - m.isDerivedFrom("Fem::FemMeshObject") - # the next line should not be needed as the result mesh is not a analysis member - and not femutils.is_of_type(m, "Fem::MeshResult") - ): + if m.isDerivedFrom("Fem::FemMeshObject") and not m.Suppressed: if not mesh_to_solve: mesh_to_solve = m else: diff --git a/src/Mod/Fem/femviewprovider/view_base_femelement.py b/src/Mod/Fem/femviewprovider/view_base_femelement.py index 0dc33f9a99ad..6b116ae26460 100644 --- a/src/Mod/Fem/femviewprovider/view_base_femelement.py +++ b/src/Mod/Fem/femviewprovider/view_base_femelement.py @@ -35,5 +35,9 @@ class VPBaseFemElement(view_base_femobject.VPBaseFemObject): """Proxy View Provider for Python base element.""" + def __init__(self, vobj): + super().__init__(vobj) + vobj.addExtension("Gui::ViewProviderSuppressibleExtensionPython") + def isShow(self): return self.ViewObject.Visibility diff --git a/src/Mod/Fem/femviewprovider/view_base_femmaterial.py b/src/Mod/Fem/femviewprovider/view_base_femmaterial.py index 2fb3c75a8de4..7613a9ba5af0 100644 --- a/src/Mod/Fem/femviewprovider/view_base_femmaterial.py +++ b/src/Mod/Fem/femviewprovider/view_base_femmaterial.py @@ -35,5 +35,9 @@ class VPBaseFemMaterial(view_base_femobject.VPBaseFemObject): """Proxy View Provider for Python base material.""" + def __init__(self, vobj): + super().__init__(vobj) + vobj.addExtension("Gui::ViewProviderSuppressibleExtensionPython") + def isShow(self): return self.ViewObject.Visibility diff --git a/src/Mod/Fem/femviewprovider/view_base_femmeshelement.py b/src/Mod/Fem/femviewprovider/view_base_femmeshelement.py index efe6cf2ff086..56b1dc2883f1 100644 --- a/src/Mod/Fem/femviewprovider/view_base_femmeshelement.py +++ b/src/Mod/Fem/femviewprovider/view_base_femmeshelement.py @@ -35,5 +35,9 @@ class VPBaseFemMeshElement(view_base_femobject.VPBaseFemObject): """Proxy View Provider for Python base mesh element.""" + def __init__(self, vobj): + super().__init__(vobj) + vobj.addExtension("Gui::ViewProviderSuppressibleExtensionPython") + def isShow(self): return self.ViewObject.Visibility diff --git a/src/Mod/Fem/femviewprovider/view_constraint_electrostaticpotential.py b/src/Mod/Fem/femviewprovider/view_constraint_electrostaticpotential.py index 75df41f82679..ab93fc69994c 100644 --- a/src/Mod/Fem/femviewprovider/view_constraint_electrostaticpotential.py +++ b/src/Mod/Fem/femviewprovider/view_constraint_electrostaticpotential.py @@ -36,7 +36,17 @@ class VPConstraintElectroStaticPotential(view_base_femconstraint.VPBaseFemConstraint): + def __init__(self, vobj): + super().__init__(vobj) + mat = vobj.ShapeAppearance[0] + mat.DiffuseColor = (1.0, 0.0, 0.2, 0.0) + vobj.ShapeAppearance = mat + def setEdit(self, vobj, mode=0): view_base_femconstraint.VPBaseFemConstraint.setEdit( self, vobj, mode, task_constraint_electrostaticpotential._TaskPanel ) + + def attach(self, vobj): + super().attach(vobj) + vobj.loadSymbol(self.resource_symbol_dir + "ConstraintElectrostaticPotential.iv") diff --git a/src/Mod/Material/App/MaterialLoader.cpp b/src/Mod/Material/App/MaterialLoader.cpp index 9ee6f773535a..59edc5081486 100644 --- a/src/Mod/Material/App/MaterialLoader.cpp +++ b/src/Mod/Material/App/MaterialLoader.cpp @@ -115,8 +115,8 @@ std::shared_ptr MaterialYamlEntry::read2DArray(const YAML::Node auto row = std::make_shared>(); for (std::size_t j = 0; j < yamlRow.size(); j++) { - Base::Quantity qq = - Base::Quantity::parse(QString::fromStdString(yamlRow[j].as())); + Base::Quantity qq = Base::Quantity::parse(yamlRow[j].as()); + qq.setFormat(MaterialValue::getQuantityFormat()); row->push_back(QVariant::fromValue(qq)); } array2d->addRow(row); @@ -141,9 +141,8 @@ std::shared_ptr MaterialYamlEntry::read3DArray(const YAML::Node for (std::size_t depth = 0; depth < yamlArray.size(); depth++) { auto yamlDepth = yamlArray[depth]; for (auto it = yamlDepth.begin(); it != yamlDepth.end(); it++) { - auto depthValue = - Base::Quantity::parse(QString::fromStdString(it->first.as())); - + auto depthValue = Base::Quantity::parse(it->first.as()); + depthValue.setFormat(MaterialValue::getQuantityFormat()); array3d->addDepth(depth, depthValue); auto yamlTable = it->second; @@ -152,8 +151,9 @@ std::shared_ptr MaterialYamlEntry::read3DArray(const YAML::Node auto row = std::make_shared>(); for (std::size_t j = 0; j < yamlRow.size(); j++) { - row->push_back(Base::Quantity::parse( - QString::fromStdString(yamlRow[j].as()))); + auto qq = Base::Quantity::parse(yamlRow[j].as()); + qq.setFormat(MaterialValue::getQuantityFormat()); + row->push_back(qq); } array3d->addRow(depth, row); } diff --git a/src/Mod/Material/App/MaterialValue.cpp b/src/Mod/Material/App/MaterialValue.cpp index f27bfed8381d..00b2d0edeb9f 100644 --- a/src/Mod/Material/App/MaterialValue.cpp +++ b/src/Mod/Material/App/MaterialValue.cpp @@ -288,7 +288,7 @@ QString MaterialValue::getYAMLString() const } if (getType() == MaterialValue::Quantity) { auto quantity = getValue().value(); - yaml += quantity.getUserString(); + yaml += QString::fromStdString(quantity.getUserString()); } else if (getType() == MaterialValue::Float) { auto value = getValue(); @@ -311,6 +311,11 @@ QString MaterialValue::getYAMLString() const return yaml; } +const Base::QuantityFormat MaterialValue::getQuantityFormat() +{ + return Base::QuantityFormat(Base::QuantityFormat::NumberFormat::Default, PRECISION); +} + //=== TYPESYSTEM_SOURCE(Materials::Material2DArray, Materials::MaterialValue) @@ -495,7 +500,7 @@ QString Material2DArray::getYAMLString() const } yaml += QString::fromStdString("\""); auto quantity = column.value(); - yaml += quantity.getUserString(); + yaml += QString::fromStdString(quantity.getUserString()); yaml += QString::fromStdString("\""); } @@ -809,7 +814,7 @@ QString Material3DArray::getYAMLString() const } yaml += QString::fromStdString("\""); - auto value = getDepthValue(depth).getUserString(); + auto value = QString::fromStdString(getDepthValue(depth).getUserString()); yaml += value; yaml += QString::fromStdString("\": ["); @@ -839,7 +844,7 @@ QString Material3DArray::getYAMLString() const } yaml += QString::fromStdString("\""); // Base::Quantity quantity = column.value(); - yaml += column.getUserString(); + yaml += QString::fromStdString(column.getUserString()); yaml += QString::fromStdString("\""); } diff --git a/src/Mod/Material/App/MaterialValue.h b/src/Mod/Material/App/MaterialValue.h index 309966565ab4..7dbebfe7348d 100644 --- a/src/Mod/Material/App/MaterialValue.h +++ b/src/Mod/Material/App/MaterialValue.h @@ -107,6 +107,11 @@ class MaterialsExport MaterialValue: public Base::BaseClass static QString escapeString(const QString& source); static ValueType mapType(const QString& stringType); + static const Base::QuantityFormat getQuantityFormat(); + + // The precision is based on the value from the original materials editor + static const int PRECISION = 6; + protected: MaterialValue(ValueType type, ValueType inherited); diff --git a/src/Mod/Material/App/Materials.cpp b/src/Mod/Material/App/Materials.cpp index 3a5bc13fddb3..0ad893c4a442 100644 --- a/src/Mod/Material/App/Materials.cpp +++ b/src/Mod/Material/App/Materials.cpp @@ -43,8 +43,6 @@ using namespace Materials; TYPESYSTEM_SOURCE(Materials::MaterialProperty, Materials::ModelProperty) -int const MaterialProperty::PRECISION = 6; - MaterialProperty::MaterialProperty() { _valuePtr = std::make_shared(MaterialValue::None); @@ -127,14 +125,14 @@ QString MaterialProperty::getString() const } if (getType() == MaterialValue::Quantity) { auto quantity = getValue().value(); - return quantity.getUserString(); + return QString::fromStdString(quantity.getUserString()); } if (getType() == MaterialValue::Float) { auto value = getValue(); if (value.isNull()) { return {}; } - return QString(QLatin1String("%L1")).arg(value.toFloat(), 0, 'g', PRECISION); + return QString(QLatin1String("%L1")).arg(value.toFloat(), 0, 'g', MaterialValue::PRECISION); } return getValue().toString(); } @@ -180,8 +178,8 @@ QString MaterialProperty::getDictionaryString() const if (getType() == MaterialValue::Quantity) { auto quantity = getValue().value(); auto string = QString(QLatin1String("%1 %2")) - .arg(quantity.getValue(), 0, 'g', PRECISION) - .arg(quantity.getUnit().getString()); + .arg(quantity.getValue(), 0, 'g', MaterialValue::PRECISION) + .arg(QString::fromStdString(quantity.getUnit().getString())); return string; } if (getType() == MaterialValue::Float) { @@ -189,7 +187,7 @@ QString MaterialProperty::getDictionaryString() const if (value.isNull()) { return {}; } - return QString(QLatin1String("%1")).arg(value.toFloat(), 0, 'g', PRECISION); + return QString(QLatin1String("%1")).arg(value.toFloat(), 0, 'g', MaterialValue::PRECISION); } return getValue().toString(); } @@ -268,7 +266,7 @@ QVariant MaterialProperty::getColumnNull(int column) const switch (valueType) { case MaterialValue::Quantity: { - Base::Quantity quant = Base::Quantity(0, getColumnUnits(column)); + Base::Quantity quant = Base::Quantity(0, getColumnUnits(column).toStdString()); return QVariant::fromValue(quant); } @@ -308,7 +306,7 @@ void MaterialProperty::setValue(const QString& value) } else if (_valuePtr->getType() == MaterialValue::Quantity) { try { - setQuantity(Base::Quantity::parse(value)); + setQuantity(Base::Quantity::parse(value.toStdString())); } catch (const Base::ParserError& e) { Base::Console().Log("MaterialProperty::setValue Error '%s' - '%s'\n", @@ -387,17 +385,19 @@ void MaterialProperty::setFloat(const QString& value) void MaterialProperty::setQuantity(const Base::Quantity& value) { - _valuePtr->setValue(QVariant(QVariant::fromValue(value))); + auto quantity = value; + quantity.setFormat(MaterialValue::getQuantityFormat()); + _valuePtr->setValue(QVariant(QVariant::fromValue(quantity))); } void MaterialProperty::setQuantity(double value, const QString& units) { - setQuantity(Base::Quantity(value, units)); + setQuantity(Base::Quantity(value, units.toStdString())); } void MaterialProperty::setQuantity(const QString& value) { - setQuantity(Base::Quantity::parse(value)); + setQuantity(Base::Quantity::parse(value.toStdString())); } void MaterialProperty::setList(const QList& value) @@ -1038,7 +1038,7 @@ Material::getValueString(const std::map().getUserString(); + return QString::fromStdString(value.value().getUserString()); } if (property->getType() == MaterialValue::Float) { auto value = property->getValue(); @@ -1046,7 +1046,7 @@ Material::getValueString(const std::mapgetValue().toString(); } @@ -1701,4 +1701,4 @@ App::Material Material::getMaterialAppearance() const } return material; -} \ No newline at end of file +} diff --git a/src/Mod/Material/App/Materials.h b/src/Mod/Material/App/Materials.h index 52597f1ba079..845c9e831f79 100644 --- a/src/Mod/Material/App/Materials.h +++ b/src/Mod/Material/App/Materials.h @@ -140,11 +140,6 @@ class MaterialsExport MaterialProperty: public ModelProperty return !operator==(other); } - // void save(QTextStream& stream); - - // Define precision for displaying floating point values - static int const PRECISION; - protected: void setType(const QString& type); // void setType(MaterialValue::ValueType type) { _valueType = type; } diff --git a/src/Mod/Material/Gui/ArrayDelegate.cpp b/src/Mod/Material/Gui/ArrayDelegate.cpp index fa06605f1950..925795310c6b 100644 --- a/src/Mod/Material/Gui/ArrayDelegate.cpp +++ b/src/Mod/Material/Gui/ArrayDelegate.cpp @@ -72,16 +72,13 @@ void ArrayDelegate::paint(QPainter* painter, auto* tableModel = dynamic_cast(index.model()); painter->save(); - if (tableModel->newRow(index)) { - painter->drawText(option.rect, 0, QString()); - } - else { + QString text; + if (!tableModel->newRow(index)) { QVariant item = tableModel->data(index); auto quantity = item.value(); - QString text = quantity.getUserString(); - painter->drawText(option.rect, 0, text); + text = QString::fromStdString(quantity.getUserString()); } - + painter->drawText(option.rect, 0, text); painter->restore(); } else { diff --git a/src/Mod/Material/Gui/ArrayModel.cpp b/src/Mod/Material/Gui/ArrayModel.cpp index a6b7bac366fc..13f7bd137599 100644 --- a/src/Mod/Material/Gui/ArrayModel.cpp +++ b/src/Mod/Material/Gui/ArrayModel.cpp @@ -93,7 +93,8 @@ QVariant Array2DModel::data(const QModelIndex& index, int role) const try { auto column = _property->getColumnType(index.column()); if (column == Materials::MaterialValue::Quantity) { - Base::Quantity qq = Base::Quantity(0, _property->getColumnUnits(index.column())); + Base::Quantity qq = Base::Quantity(0, _property->getColumnUnits(index.column()).toStdString()); + qq.setFormat(Materials::MaterialValue::getQuantityFormat()); return QVariant::fromValue(qq); } } @@ -236,7 +237,8 @@ QVariant Array3DDepthModel::data(const QModelIndex& index, int role) const } try { - Base::Quantity qq = Base::Quantity(0, _property->getColumnUnits(0)); + Base::Quantity qq = Base::Quantity(0, _property->getColumnUnits(0).toStdString()); + qq.setFormat(Materials::MaterialValue::getQuantityFormat()); return QVariant::fromValue(qq); } catch (const Materials::InvalidIndex&) { @@ -291,7 +293,9 @@ bool Array3DDepthModel::insertRows(int row, int count, const QModelIndex& parent beginInsertRows(parent, row, row + count - 1); for (int i = 0; i < count; i++) { - _value->addDepth(row, Base::Quantity(0, _property->getColumnUnits(0))); + auto qq = Base::Quantity(0, _property->getColumnUnits(0).toStdString()); + qq.setFormat(Materials::MaterialValue::getQuantityFormat()); + _value->addDepth(row, qq); } endInsertRows(); @@ -391,7 +395,8 @@ QVariant Array3DModel::data(const QModelIndex& index, int role) const } try { - Base::Quantity qq = Base::Quantity(0, _property->getColumnUnits(index.column() + 1)); + Base::Quantity qq = Base::Quantity(0, _property->getColumnUnits(index.column() + 1).toStdString()); + qq.setFormat(Materials::MaterialValue::getQuantityFormat()); return QVariant::fromValue(qq); } catch (const Materials::InvalidIndex&) { diff --git a/src/Mod/Material/Gui/BaseDelegate.cpp b/src/Mod/Material/Gui/BaseDelegate.cpp index 66bc87c52e7a..afdb8c0413da 100644 --- a/src/Mod/Material/Gui/BaseDelegate.cpp +++ b/src/Mod/Material/Gui/BaseDelegate.cpp @@ -103,15 +103,13 @@ void BaseDelegate::paintQuantity(QPainter* painter, painter->drawText(option.rect, 0, QString()); } else { + QString text; QVariant item = getValue(index); auto quantity = item.value(); if (quantity.isValid()) { - QString text = quantity.getUserString(); - painter->drawText(option.rect, 0, text); - } - else { - painter->drawText(option.rect, 0, QString()); + text = QString::fromStdString(quantity.getUserString()); } + painter->drawText(option.rect, 0, text); } painter->restore(); diff --git a/src/Mod/Material/Gui/Command.cpp b/src/Mod/Material/Gui/Command.cpp index d6cee068ef4a..df07b0999e44 100644 --- a/src/Mod/Material/Gui/Command.cpp +++ b/src/Mod/Material/Gui/Command.cpp @@ -86,7 +86,7 @@ StdCmdSetAppearance::StdCmdSetAppearance() : Command("Std_SetAppearance") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Appearance..."); + sMenuText = QT_TR_NOOP("&Appearance..."); sToolTipText = QT_TR_NOOP("Sets the display properties of the selected object"); sWhatsThis = "Std_SetAppearance"; sStatusTip = QT_TR_NOOP("Sets the display properties of the selected object"); @@ -115,7 +115,7 @@ StdCmdSetMaterial::StdCmdSetMaterial() : Command("Std_SetMaterial") { sGroup = "Standard-View"; - sMenuText = QT_TR_NOOP("Material..."); + sMenuText = QT_TR_NOOP("&Material..."); sToolTipText = QT_TR_NOOP("Sets the material of the selected object"); sWhatsThis = "Std_SetMaterial"; sStatusTip = QT_TR_NOOP("Sets the material of the selected object"); diff --git a/src/Mod/Material/Gui/Resources/translations/Material_de.ts b/src/Mod/Material/Gui/Resources/translations/Material_de.ts index d148748a5f76..ecd1f5ab1d46 100644 --- a/src/Mod/Material/Gui/Resources/translations/Material_de.ts +++ b/src/Mod/Material/Gui/Resources/translations/Material_de.ts @@ -1191,7 +1191,7 @@ Wenn deaktiviert, werden sie nach ihrem Namen sortiert. StdCmdSetAppearance - Appearance... + &Appearance... Darstellung... @@ -1205,7 +1205,7 @@ Wenn deaktiviert, werden sie nach ihrem Namen sortiert. StdCmdSetMaterial - Material... + &Material... Material... diff --git a/src/Mod/Material/materialtests/TestMaterialCreation.py b/src/Mod/Material/materialtests/TestMaterialCreation.py index 3b9d4ff48a5c..296f772f219b 100644 --- a/src/Mod/Material/materialtests/TestMaterialCreation.py +++ b/src/Mod/Material/materialtests/TestMaterialCreation.py @@ -67,6 +67,12 @@ def checkNewMaterial(self, material): self.assertEqual(len(material.Parent), 0) self.assertEqual(len(material.Tags), 0) + def getQuantity(self, value): + quantity = parseQuantity(value) + quantity.Format = { "NumberFormat" : "g", + "Precision" : 6 } + return quantity + def testCreateMaterial(self): """ Create a material with properties """ material = Materials.Material() @@ -125,7 +131,8 @@ def testCreateMaterial(self): # Quantity properties require units material.setPhysicalValue("Density", "99.9 kg/m^3") - self.assertEqual(material.getPhysicalValue("Density").UserString, parseQuantity("99.90 kg/m^3").UserString) + self.assertEqual(material.getPhysicalValue("Density").Format["NumberFormat"], "g") + self.assertEqual(material.getPhysicalValue("Density").UserString, self.getQuantity("99.90 kg/m^3").UserString) # MaterialManager is unaware of the material until it is saved # diff --git a/src/Mod/Material/materialtests/TestMaterials.py b/src/Mod/Material/materialtests/TestMaterials.py index c77248ee04ab..66f6db0ed761 100644 --- a/src/Mod/Material/materialtests/TestMaterials.py +++ b/src/Mod/Material/materialtests/TestMaterials.py @@ -46,6 +46,12 @@ def testMaterialManager(self): self.assertIn("MaterialLibraries", dir(self.MaterialManager)) self.assertIn("Materials", dir(self.MaterialManager)) + def getQuantity(self, value): + quantity = parseQuantity(value) + quantity.Format = { "NumberFormat" : "g", + "Precision" : 6 } + return quantity + def testCalculiXSteel(self): """ Test a representative material card for CalculX Steel @@ -175,27 +181,27 @@ def testCalculiXSteel(self): self.assertTrue(len(properties["SpecularColor"]) > 0) self.assertTrue(len(properties["Transparency"]) > 0) - self.assertEqual(parseQuantity(properties["Density"]).UserString, - parseQuantity("7900.00 kg/m^3").UserString) + self.assertEqual(self.getQuantity(properties["Density"]).UserString, + self.getQuantity("7900.00 kg/m^3").UserString) # self.assertEqual(properties["BulkModulus"], "") - self.assertAlmostEqual(parseQuantity(properties["PoissonRatio"]).Value, - parseQuantity("0.3").Value) - self.assertEqual(parseQuantity(properties["YoungsModulus"]).UserString, - parseQuantity("210.00 GPa").UserString) + self.assertAlmostEqual(self.getQuantity(properties["PoissonRatio"]).Value, + self.getQuantity("0.3").Value) + self.assertEqual(self.getQuantity(properties["YoungsModulus"]).UserString, + self.getQuantity("210.00 GPa").UserString) # self.assertEqual(properties["ShearModulus"], "") - self.assertEqual(parseQuantity(properties["SpecificHeat"]).UserString, - parseQuantity("590.00 J/kg/K").UserString) - self.assertEqual(parseQuantity(properties["ThermalConductivity"]).UserString, - parseQuantity("43.00 W/m/K").UserString) - self.assertEqual(parseQuantity(properties["ThermalExpansionCoefficient"]).UserString, - parseQuantity("12.00 µm/m/K").UserString) + self.assertEqual(self.getQuantity(properties["SpecificHeat"]).UserString, + self.getQuantity("590.00 J/kg/K").UserString) + self.assertEqual(self.getQuantity(properties["ThermalConductivity"]).UserString, + self.getQuantity("43.00 W/m/K").UserString) + self.assertEqual(self.getQuantity(properties["ThermalExpansionCoefficient"]).UserString, + self.getQuantity("12.00 µm/m/K").UserString) self.assertEqual(properties["AmbientColor"], "(0.0020, 0.0020, 0.0020, 1.0)") self.assertEqual(properties["DiffuseColor"], "(0.0000, 0.0000, 0.0000, 1.0)") self.assertEqual(properties["EmissiveColor"], "(0.0000, 0.0000, 0.0000, 1.0)") - self.assertAlmostEqual(parseQuantity(properties["Shininess"]).Value, parseQuantity("0.06").Value) + self.assertAlmostEqual(self.getQuantity(properties["Shininess"]).Value, self.getQuantity("0.06").Value) self.assertEqual(properties["SpecularColor"], "(0.9800, 0.9800, 0.9800, 1.0)") - self.assertAlmostEqual(parseQuantity(properties["Transparency"]).Value, - parseQuantity("0").Value) + self.assertAlmostEqual(self.getQuantity(properties["Transparency"]).Value, + self.getQuantity("0").Value) print("Density " + steel.getPhysicalValue("Density").UserString) # print("BulkModulus " + properties["BulkModulus"]) @@ -226,6 +232,12 @@ def testCalculiXSteel(self): self.assertEqual(steel.getAppearanceValue("SpecularColor"), "(0.9800, 0.9800, 0.9800, 1.0)") self.assertAlmostEqual(steel.getAppearanceValue("Transparency"), 0.0) + self.assertEqual(steel.getPhysicalValue("Density").Format["NumberFormat"], "g") + self.assertEqual(steel.getPhysicalValue("YoungsModulus").Format["NumberFormat"], "g") + self.assertEqual(steel.getPhysicalValue("SpecificHeat").Format["NumberFormat"], "g") + self.assertEqual(steel.getPhysicalValue("ThermalConductivity").Format["NumberFormat"], "g") + self.assertEqual(steel.getPhysicalValue("ThermalExpansionCoefficient").Format["NumberFormat"], "g") + def testMaterialsWithModel(self): """ Test functions that return a list of models supporting specific material models @@ -325,12 +337,19 @@ def test2DArray(self): self.assertEqual(len(arrayData[1]), 2) self.assertEqual(len(arrayData[2]), 2) - self.assertEqual(arrayData[0][0].UserString, parseQuantity("10.00 C").UserString) - self.assertEqual(arrayData[0][1].UserString, parseQuantity("10.00 kg/m^3").UserString) - self.assertEqual(arrayData[1][0].UserString, parseQuantity("20.00 C").UserString) - self.assertEqual(arrayData[1][1].UserString, parseQuantity("20.00 kg/m^3").UserString) - self.assertEqual(arrayData[2][0].UserString, parseQuantity("30.00 C").UserString) - self.assertEqual(arrayData[2][1].UserString, parseQuantity("30.00 kg/m^3").UserString) + self.assertEqual(arrayData[0][0].Format["NumberFormat"], "g") + self.assertEqual(arrayData[0][1].Format["NumberFormat"], "g") + self.assertEqual(arrayData[1][0].Format["NumberFormat"], "g") + self.assertEqual(arrayData[1][1].Format["NumberFormat"], "g") + self.assertEqual(arrayData[2][0].Format["NumberFormat"], "g") + self.assertEqual(arrayData[2][1].Format["NumberFormat"], "g") + + self.assertEqual(arrayData[0][0].UserString, self.getQuantity("10.00 C").UserString) + self.assertEqual(arrayData[0][1].UserString, self.getQuantity("10.00 kg/m^3").UserString) + self.assertEqual(arrayData[1][0].UserString, self.getQuantity("20.00 C").UserString) + self.assertEqual(arrayData[1][1].UserString, self.getQuantity("20.00 kg/m^3").UserString) + self.assertEqual(arrayData[2][0].UserString, self.getQuantity("30.00 C").UserString) + self.assertEqual(arrayData[2][1].UserString, self.getQuantity("30.00 kg/m^3").UserString) self.assertAlmostEqual(arrayData[0][0].Value, 10.0) self.assertAlmostEqual(arrayData[0][1].Value, 1e-8) @@ -346,12 +365,19 @@ def test2DArray(self): with self.assertRaises(IndexError): self.assertAlmostEqual(arrayData[0][2].Value, 10.0) - self.assertEqual(array.getValue(0,0).UserString, parseQuantity("10.00 C").UserString) - self.assertEqual(array.getValue(0,1).UserString, parseQuantity("10.00 kg/m^3").UserString) - self.assertEqual(array.getValue(1,0).UserString, parseQuantity("20.00 C").UserString) - self.assertEqual(array.getValue(1,1).UserString, parseQuantity("20.00 kg/m^3").UserString) - self.assertEqual(array.getValue(2,0).UserString, parseQuantity("30.00 C").UserString) - self.assertEqual(array.getValue(2,1).UserString, parseQuantity("30.00 kg/m^3").UserString) + self.assertEqual(array.getValue(0,0).Format["NumberFormat"], "g") + self.assertEqual(array.getValue(0,1).Format["NumberFormat"], "g") + self.assertEqual(array.getValue(1,0).Format["NumberFormat"], "g") + self.assertEqual(array.getValue(1,1).Format["NumberFormat"], "g") + self.assertEqual(array.getValue(2,0).Format["NumberFormat"], "g") + self.assertEqual(array.getValue(2,1).Format["NumberFormat"], "g") + + self.assertEqual(array.getValue(0,0).UserString, self.getQuantity("10.00 C").UserString) + self.assertEqual(array.getValue(0,1).UserString, self.getQuantity("10.00 kg/m^3").UserString) + self.assertEqual(array.getValue(1,0).UserString, self.getQuantity("20.00 C").UserString) + self.assertEqual(array.getValue(1,1).UserString, self.getQuantity("20.00 kg/m^3").UserString) + self.assertEqual(array.getValue(2,0).UserString, self.getQuantity("30.00 C").UserString) + self.assertEqual(array.getValue(2,1).UserString, self.getQuantity("30.00 kg/m^3").UserString) self.assertAlmostEqual(array.getValue(0,0).Value, 10.0) self.assertAlmostEqual(array.getValue(0,1).Value, 1e-8) @@ -410,69 +436,91 @@ def test3DArray(self): self.assertEqual(len(arrayData[1]), 0) self.assertEqual(len(arrayData[2]), 3) - self.assertEqual(arrayData[0][0][0].UserString, parseQuantity("11.00 Pa").UserString) - self.assertEqual(arrayData[0][0][1].UserString, parseQuantity("12.00 Pa").UserString) - self.assertEqual(arrayData[0][1][0].UserString, parseQuantity("21.00 Pa").UserString) - self.assertEqual(arrayData[0][1][1].UserString, parseQuantity("22.00 Pa").UserString) - self.assertEqual(arrayData[2][0][0].UserString, parseQuantity("10.00 Pa").UserString) - self.assertEqual(arrayData[2][0][1].UserString, parseQuantity("11.00 Pa").UserString) - self.assertEqual(arrayData[2][1][0].UserString, parseQuantity("20.00 Pa").UserString) - self.assertEqual(arrayData[2][1][1].UserString, parseQuantity("21.00 Pa").UserString) - self.assertEqual(arrayData[2][2][0].UserString, parseQuantity("30.00 Pa").UserString) - self.assertEqual(arrayData[2][2][1].UserString, parseQuantity("31.00 Pa").UserString) - - self.assertEqual(array.getDepthValue(0).UserString, parseQuantity("10.00 C").UserString) - self.assertEqual(array.getDepthValue(1).UserString, parseQuantity("20.00 C").UserString) - self.assertEqual(array.getDepthValue(2).UserString, parseQuantity("30.00 C").UserString) - - self.assertEqual(arrayData[0][0][-1].UserString, parseQuantity("12.00 Pa").UserString) + self.assertEqual(arrayData[0][0][0].Format["NumberFormat"], "g") + self.assertEqual(arrayData[0][0][1].Format["NumberFormat"], "g") + self.assertEqual(arrayData[0][1][0].Format["NumberFormat"], "g") + self.assertEqual(arrayData[0][1][1].Format["NumberFormat"], "g") + self.assertEqual(arrayData[2][0][0].Format["NumberFormat"], "g") + self.assertEqual(arrayData[2][0][1].Format["NumberFormat"], "g") + self.assertEqual(arrayData[2][1][0].Format["NumberFormat"], "g") + self.assertEqual(arrayData[2][1][1].Format["NumberFormat"], "g") + self.assertEqual(arrayData[2][2][0].Format["NumberFormat"], "g") + self.assertEqual(arrayData[2][2][1].Format["NumberFormat"], "g") + + self.assertEqual(arrayData[0][0][0].UserString, self.getQuantity("11.00 Pa").UserString) + self.assertEqual(arrayData[0][0][1].UserString, self.getQuantity("12.00 Pa").UserString) + self.assertEqual(arrayData[0][1][0].UserString, self.getQuantity("21.00 Pa").UserString) + self.assertEqual(arrayData[0][1][1].UserString, self.getQuantity("22.00 Pa").UserString) + self.assertEqual(arrayData[2][0][0].UserString, self.getQuantity("10.00 Pa").UserString) + self.assertEqual(arrayData[2][0][1].UserString, self.getQuantity("11.00 Pa").UserString) + self.assertEqual(arrayData[2][1][0].UserString, self.getQuantity("20.00 Pa").UserString) + self.assertEqual(arrayData[2][1][1].UserString, self.getQuantity("21.00 Pa").UserString) + self.assertEqual(arrayData[2][2][0].UserString, self.getQuantity("30.00 Pa").UserString) + self.assertEqual(arrayData[2][2][1].UserString, self.getQuantity("31.00 Pa").UserString) + + self.assertEqual(array.getDepthValue(0).UserString, self.getQuantity("10.00 C").UserString) + self.assertEqual(array.getDepthValue(1).UserString, self.getQuantity("20.00 C").UserString) + self.assertEqual(array.getDepthValue(2).UserString, self.getQuantity("30.00 C").UserString) + + self.assertEqual(arrayData[0][0][-1].UserString, self.getQuantity("12.00 Pa").UserString) with self.assertRaises(IndexError): - self.assertEqual(arrayData[0][0][2].UserString, parseQuantity("11.00 Pa").UserString) - self.assertEqual(arrayData[0][-1][0].UserString, parseQuantity("21.00 Pa").UserString) + self.assertEqual(arrayData[0][0][2].UserString, self.getQuantity("11.00 Pa").UserString) + self.assertEqual(arrayData[0][-1][0].UserString, self.getQuantity("21.00 Pa").UserString) with self.assertRaises(IndexError): - self.assertEqual(arrayData[0][2][0].UserString, parseQuantity("11.00 Pa").UserString) + self.assertEqual(arrayData[0][2][0].UserString, self.getQuantity("11.00 Pa").UserString) with self.assertRaises(IndexError): - self.assertEqual(arrayData[1][0][0].UserString, parseQuantity("11.00 Pa").UserString) - self.assertEqual(arrayData[-1][0][0].UserString, parseQuantity("10.00 Pa").UserString) + self.assertEqual(arrayData[1][0][0].UserString, self.getQuantity("11.00 Pa").UserString) + self.assertEqual(arrayData[-1][0][0].UserString, self.getQuantity("10.00 Pa").UserString) with self.assertRaises(IndexError): - self.assertEqual(arrayData[3][0][0].UserString, parseQuantity("11.00 Pa").UserString) + self.assertEqual(arrayData[3][0][0].UserString, self.getQuantity("11.00 Pa").UserString) with self.assertRaises(IndexError): self.assertEqual(array.getDepthValue(-1).UserString, - parseQuantity("10.00 C").UserString) + self.getQuantity("10.00 C").UserString) with self.assertRaises(IndexError): self.assertEqual(array.getDepthValue(3).UserString, - parseQuantity("10.00 C").UserString) - - self.assertEqual(array.getValue(0,0,0).UserString, parseQuantity("11.00 Pa").UserString) - self.assertEqual(array.getValue(0,0,1).UserString, parseQuantity("12.00 Pa").UserString) - self.assertEqual(array.getValue(0,1,0).UserString, parseQuantity("21.00 Pa").UserString) - self.assertEqual(array.getValue(0,1,1).UserString, parseQuantity("22.00 Pa").UserString) - self.assertEqual(array.getValue(2,0,0).UserString, parseQuantity("10.00 Pa").UserString) - self.assertEqual(array.getValue(2,0,1).UserString, parseQuantity("11.00 Pa").UserString) - self.assertEqual(array.getValue(2,1,0).UserString, parseQuantity("20.00 Pa").UserString) - self.assertEqual(array.getValue(2,1,1).UserString, parseQuantity("21.00 Pa").UserString) - self.assertEqual(array.getValue(2,2,0).UserString, parseQuantity("30.00 Pa").UserString) - self.assertEqual(array.getValue(2,2,1).UserString, parseQuantity("31.00 Pa").UserString) + self.getQuantity("10.00 C").UserString) + + self.assertEqual(array.getValue(0,0,0).Format["NumberFormat"], "g") + self.assertEqual(array.getValue(0,0,1).Format["NumberFormat"], "g") + self.assertEqual(array.getValue(0,1,0).Format["NumberFormat"], "g") + self.assertEqual(array.getValue(0,1,1).Format["NumberFormat"], "g") + self.assertEqual(array.getValue(2,0,0).Format["NumberFormat"], "g") + self.assertEqual(array.getValue(2,0,1).Format["NumberFormat"], "g") + self.assertEqual(array.getValue(2,1,0).Format["NumberFormat"], "g") + self.assertEqual(array.getValue(2,1,1).Format["NumberFormat"], "g") + self.assertEqual(array.getValue(2,2,0).Format["NumberFormat"], "g") + self.assertEqual(array.getValue(2,2,1).Format["NumberFormat"], "g") + + self.assertEqual(array.getValue(0,0,0).UserString, self.getQuantity("11.00 Pa").UserString) + self.assertEqual(array.getValue(0,0,1).UserString, self.getQuantity("12.00 Pa").UserString) + self.assertEqual(array.getValue(0,1,0).UserString, self.getQuantity("21.00 Pa").UserString) + self.assertEqual(array.getValue(0,1,1).UserString, self.getQuantity("22.00 Pa").UserString) + self.assertEqual(array.getValue(2,0,0).UserString, self.getQuantity("10.00 Pa").UserString) + self.assertEqual(array.getValue(2,0,1).UserString, self.getQuantity("11.00 Pa").UserString) + self.assertEqual(array.getValue(2,1,0).UserString, self.getQuantity("20.00 Pa").UserString) + self.assertEqual(array.getValue(2,1,1).UserString, self.getQuantity("21.00 Pa").UserString) + self.assertEqual(array.getValue(2,2,0).UserString, self.getQuantity("30.00 Pa").UserString) + self.assertEqual(array.getValue(2,2,1).UserString, self.getQuantity("31.00 Pa").UserString) with self.assertRaises(IndexError): self.assertEqual(array.getValue(0,0,-1).UserString, - parseQuantity("11.00 Pa").UserString) + self.getQuantity("11.00 Pa").UserString) with self.assertRaises(IndexError): self.assertEqual(array.getValue(0,0,2).UserString, - parseQuantity("11.00 Pa").UserString) + self.getQuantity("11.00 Pa").UserString) with self.assertRaises(IndexError): self.assertEqual(array.getValue(0,-1,0).UserString, - parseQuantity("11.00 Pa").UserString) + self.getQuantity("11.00 Pa").UserString) with self.assertRaises(IndexError): self.assertEqual(array.getValue(0,2,0).UserString, - parseQuantity("11.00 Pa").UserString) + self.getQuantity("11.00 Pa").UserString) with self.assertRaises(IndexError): self.assertEqual(array.getValue(1,0,0).UserString, - parseQuantity("11.00 Pa").UserString) + self.getQuantity("11.00 Pa").UserString) with self.assertRaises(IndexError): self.assertEqual(array.getValue(-1,0,0).UserString, - parseQuantity("11.00 Pa").UserString) + self.getQuantity("11.00 Pa").UserString) with self.assertRaises(IndexError): self.assertEqual(array.getValue(3,0,0).UserString, - parseQuantity("11.00 Pa").UserString) + self.getQuantity("11.00 Pa").UserString) diff --git a/src/Mod/Measure/App/AppMeasurePy.cpp b/src/Mod/Measure/App/AppMeasurePy.cpp new file mode 100644 index 000000000000..292b5196ddd3 --- /dev/null +++ b/src/Mod/Measure/App/AppMeasurePy.cpp @@ -0,0 +1,170 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/**************************************************************************** + * * + * Copyright (c) 2024 wandererfan * + * * + * This file is part of FreeCAD. * + * * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * + * * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * + * * + ***************************************************************************/ + + +#include "PreCompiled.h" +#ifndef _PreComp_ + +#endif +#include + +#include // clears "include what you use" lint message, but creates "included header not used" +#include + +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include "Mod/Part/App/OCCError.h" + +#include "ShapeFinder.h" + + +namespace Measure +{ +// module level static C++ functions go here +} + +namespace Measure +{ +/** Copies a Python dictionary of Python strings to a C++ container. + * + * After the function call, the key-value pairs of the Python + * dictionary are copied into the target buffer as C++ pairs + * (pair). + * + * @param sourceRange is a Python dictionary (Py::Dict). Both, the + * keys and the values must be Python strings. + * + * @param targetIt refers to where the data should be inserted. Must + * be of concept output iterator. + */ +template +void copy(Py::Dict sourceRange, OutputIt targetIt) +{ + std::string key; + std::string value; + + for (const auto& keyPy : sourceRange.keys()) { + key = Py::String(keyPy); + value = Py::String(sourceRange[keyPy]); + *targetIt = {key, value}; + ++targetIt; + } +} + + +class Module: public Py::ExtensionModule +{ +public: + Module() + : Py::ExtensionModule("Measure") + { + add_varargs_method( + "getLocatedTopoShape", + &Module::getLocatedTopoShape, + "Part.TopoShape = Measure.getLocatedTopoShape(DocumentObject, longSubElement) Resolves " + "the net placement of DocumentObject and returns the object's shape/subshape with the " + "net placement applied. Link scaling operations along the path are also applied."); + initialize("This is a module for measuring"); // register with Python + } + ~Module() override + {} + +private: + Py::Object invoke_method_varargs(void* method_def, const Py::Tuple& args) override + { + try { + return Py::ExtensionModule::invoke_method_varargs(method_def, args); + } + catch (const Standard_Failure& e) { + std::string str; + Standard_CString msg = e.GetMessageString(); + str += typeid(e).name(); + str += " "; + if (msg) { + str += msg; + } + else { + str += "No OCCT Exception Message"; + } + Base::Console().Error("%s\n", str.c_str()); + throw Py::Exception(Part::PartExceptionOCCError, str); + } + catch (const Base::Exception& e) { + std::string str; + str += "FreeCAD exception thrown ("; + str += e.what(); + str += ")"; + e.ReportException(); + throw Py::RuntimeError(str); + } + catch (const std::exception& e) { + std::string str; + str += "C++ exception thrown ("; + str += e.what(); + str += ")"; + Base::Console().Error("%s\n", str.c_str()); + throw Py::RuntimeError(str); + } + } + + Py::Object getLocatedTopoShape(const Py::Tuple& args) + { + PyObject* pyRootObject {nullptr}; + PyObject* pyLeafSubName {nullptr}; + App::DocumentObject* rootObject {nullptr}; + std::string leafSub; + if (!PyArg_ParseTuple(args.ptr(), "OO", &pyRootObject, &pyLeafSubName)) { + throw Py::TypeError("expected (rootObject, subname"); + } + + if (PyObject_TypeCheck(pyRootObject, &(App::DocumentObjectPy::Type))) { + rootObject = static_cast(pyRootObject)->getDocumentObjectPtr(); + } + + if (PyUnicode_Check(pyLeafSubName)) { + leafSub = PyUnicode_AsUTF8(pyLeafSubName); + } + + if (!rootObject) { + return Py::None(); + } + + // this is on the stack + auto temp = ShapeFinder::getLocatedShape(*rootObject, leafSub); + // need new in here to make the twin object on the heap + auto topoShapePy = new Part::TopoShapePy(new Part::TopoShape(temp)); + return Py::asObject(topoShapePy); + } +}; + +} // namespace Measure diff --git a/src/Mod/Measure/App/CMakeLists.txt b/src/Mod/Measure/App/CMakeLists.txt index d36806f1f63b..fe9d0df3f571 100644 --- a/src/Mod/Measure/App/CMakeLists.txt +++ b/src/Mod/Measure/App/CMakeLists.txt @@ -31,6 +31,7 @@ SET(MeasureModule_SRCS PreCompiled.cpp PreCompiled.h AppMeasure.cpp + AppMeasurePy.cpp # original service routines Measurement.cpp @@ -54,6 +55,11 @@ SET(MeasureModule_SRCS Preferences.cpp Preferences.h + + ShapeFinder.cpp + ShapeFinder.h + SubnameHelper.cpp + SubnameHelper.h ) SOURCE_GROUP("Module" FILES ${MeasureModule_SRCS}) diff --git a/src/Mod/Measure/App/MeasureBase.cpp b/src/Mod/Measure/App/MeasureBase.cpp index e7382d930c4c..ae2bd457cdb5 100644 --- a/src/Mod/Measure/App/MeasureBase.cpp +++ b/src/Mod/Measure/App/MeasureBase.cpp @@ -180,7 +180,8 @@ QString MeasureBase::getResultString() } if (prop->isDerivedFrom(App::PropertyQuantity::getClassTypeId())) { - return static_cast(prop)->getQuantityValue().getUserString(); + return QString::fromStdString( + static_cast(prop)->getQuantityValue().getUserString()); } diff --git a/src/Mod/Measure/App/MeasurePosition.cpp b/src/Mod/Measure/App/MeasurePosition.cpp index 19195dee00df..0364f4db53bb 100644 --- a/src/Mod/Measure/App/MeasurePosition.cpp +++ b/src/Mod/Measure/App/MeasurePosition.cpp @@ -131,7 +131,7 @@ QString MeasurePosition::getResultString() } Base::Vector3d value = Position.getValue(); - QString unit = Position.getUnit().getString(); + QString unit = QString::fromStdString(Position.getUnit().getString()); int precision = 2; QString text; #if QT_VERSION < QT_VERSION_CHECK(5, 14, 0) diff --git a/src/Mod/Measure/App/Measurement.cpp b/src/Mod/Measure/App/Measurement.cpp index 5d4e6b0140c7..7965870851a2 100644 --- a/src/Mod/Measure/App/Measurement.cpp +++ b/src/Mod/Measure/App/Measurement.cpp @@ -48,6 +48,7 @@ #include "Measurement.h" #include "MeasurementPy.h" +#include "ShapeFinder.h" using namespace Measure; @@ -278,43 +279,12 @@ MeasureType Measurement::getType() return measureType; } -TopoDS_Shape Measurement::getShape(App::DocumentObject* rootObj, const char* subName) const +TopoDS_Shape Measurement::getShape(App::DocumentObject* obj, const char* subName) const { - std::vector names = Base::Tools::splitSubName(subName); - - if (names.empty()) { - TopoDS_Shape shape = Part::Feature::getShape(rootObj); - if (shape.IsNull()) { - throw Part::NullShapeException("null shape in measurement"); - } - return shape; - } - - try { - App::DocumentObject* obj = rootObj->getSubObject(subName); - - Part::TopoShape partShape = Part::Feature::getTopoShape(obj); - - partShape.setPlacement(App::GeoFeature::getGlobalPlacement(obj, rootObj, subName)); - - TopoDS_Shape shape = partShape.getSubShape(names.back().c_str()); - if (shape.IsNull()) { - throw Part::NullShapeException("null shape in measurement"); - } - return shape; - } - catch (const Base::Exception&) { - // re-throw original exception - throw; - } - catch (Standard_Failure& e) { - throw Base::CADKernelError(e.GetMessageString()); - } - catch (...) { - throw Base::RuntimeError("Measurement: Unknown error retrieving shape"); - } + return ShapeFinder::getLocatedShape(*obj, subName); } + // TODO:: add lengthX, lengthY (and lengthZ??) support // Methods for distances (edge length, two points, edge and a point double Measurement::length() const diff --git a/src/Mod/Measure/App/ShapeFinder.cpp b/src/Mod/Measure/App/ShapeFinder.cpp new file mode 100644 index 000000000000..3b2a62ec1984 --- /dev/null +++ b/src/Mod/Measure/App/ShapeFinder.cpp @@ -0,0 +1,416 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/**************************************************************************** + * * + * Copyright (c) 2024 wandererfan * + * * + * This file is part of FreeCAD. * + * * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * + * * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * + * * + ***************************************************************************/ + +//! ShapeFinder is a class to obtain the located shape pointed at by a DocumentObject and a +//! "new-style" long subelement name. It hides the complexities of obtaining the correct object +//! and its placement. + + +#include "PreCompiled.h" +#ifndef _PreComp_ +#endif + +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include "ShapeFinder.h" + + +using namespace Measure; + +//! ResolveResult is a class to hold the result of resolving a selection into the actual target +//! object and traditional subElement name (Vertex1). + +ResolveResult::ResolveResult(const App::DocumentObject* realTarget, + const std::string& shortSubName, + const App::DocumentObject* targetParent) + : m_target(App::SubObjectT(realTarget, shortSubName.c_str())) + , m_targetParent(App::DocumentObjectT(targetParent)) +{} + +App::DocumentObject& ResolveResult::getTarget() const +{ + return *(m_target.getObject()); +} + +std::string ResolveResult::getShortSub() const +{ + return m_target.getSubName(); +} + +App::DocumentObject& ResolveResult::getTargetParent() const +{ + return *(m_targetParent.getObject()); +} + + +//! returns the actual target object and subname pointed to by selectObj and selectLongSub (which +//! is likely a result from getSelection or getSelectionEx) +ResolveResult ShapeFinder::resolveSelection(const App::DocumentObject& selectObj, + const std::string& selectLongSub) +{ + App::DocumentObject* targetParent {nullptr}; + std::string childName {}; + const char* subElement {nullptr}; + App::DocumentObject* realTarget = + selectObj.resolve(selectLongSub.c_str(), &targetParent, &childName, &subElement); + auto shortSub = getLastTerm(selectLongSub); + return {realTarget, shortSub, targetParent}; +} + + +//! returns the shape of rootObject+leafSub. Any transforms from objects in the path from rootObject +//! to leafSub are applied to the shape. +//! leafSub is typically obtained from Selection as it provides the appropriate longSubname. The +//! leaf sub string can also be constructed by walking the tree. +// TODO: to truly locate the shape, we need to consider attachments - see +// ShapeExtractor::getShapesFromXRoot() +// and ShapeFinder::getLinkAttachParent() +TopoDS_Shape ShapeFinder::getLocatedShape(const App::DocumentObject& rootObject, + const std::string& leafSub) +{ + auto resolved = resolveSelection(rootObject, leafSub); + auto target = &resolved.getTarget(); + auto shortSub = resolved.getShortSub(); + if (!target) { + return {}; + } + + TopoDS_Shape shape = Part::Feature::getShape(target); + if (isShapeReallyNull(shape)) { + return {}; + } + + auto cleanSub = removeTnpInfo(leafSub); + auto transform = getGlobalTransform(rootObject, cleanSub); + + shape = transformShape(shape, transform.first, transform.second); + Part::TopoShape tShape {shape}; + if (!shortSub.empty()) { + return tShape.getSubTopoShape(shortSub.c_str()).getShape(); + } + + return tShape.getShape(); +} + + +//! convenient version of previous method +Part::TopoShape ShapeFinder::getLocatedTopoShape(const App::DocumentObject& rootObject, + const std::string& leafSub) +{ + return {getLocatedShape(rootObject, leafSub)}; +} + + +//! traverse the tree from leafSub up to rootObject, obtaining placements along the way. Note that +//! the placements will need to be applied in the reverse order (ie top down) of what is delivered +//! in plm stack. leafSub is a dot separated longSubName which DOES NOT include rootObject. the +//! result does not include rootObject's transform. +void ShapeFinder::crawlPlacementChain(std::vector& plmStack, + std::vector& scaleStack, + const App::DocumentObject& rootObject, + const std::string& leafSub) +{ + auto currentSub = leafSub; + std::string previousSub {}; + while (!currentSub.empty() && currentSub != previousSub) { + auto resolved = resolveSelection(rootObject, currentSub); + auto target = &resolved.getTarget(); + if (!target) { + return; + } + auto currentPlacement = getPlacement(target); + auto currentScale = getScale(target); + if (!currentPlacement.isIdentity() || !currentScale.isUnity()) { + plmStack.push_back(currentPlacement); + scaleStack.push_back(currentScale); + } + previousSub = currentSub; + currentSub = pruneLastTerm(currentSub); + } +} + + +//! return inShape with placement and scaler applied. If inShape contains any infinite subshapes +//! (such as Datum planes), the infinite shapes will not be included in the result. +TopoDS_Shape ShapeFinder::transformShape(TopoDS_Shape& inShape, + const Base::Placement& placement, + const Base::Matrix4D& scaler) +{ + if (isShapeReallyNull(inShape)) { + return {}; + } + // we modify the parameter shape here. we don't claim to be const, but may be better to copy + // the shape? + Part::TopoShape tshape {inShape}; + if (tshape.isInfinite()) { + inShape = stripInfiniteShapes(inShape); + } + + // copying the shape prevents "non-orthogonal GTrsf" errors in some versions + // of OCC. Something to do with triangulation of shape?? + // it may be that incremental mesh would work here too. + BRepBuilderAPI_Copy copier(inShape); + tshape = Part::TopoShape(copier.Shape()); + if (tshape.isNull()) { + return {}; + } + + tshape.transformGeometry(scaler); + tshape.setPlacement(placement); + + return tshape.getShape(); +} + + +//! this getter should work for any object, not just links +Base::Placement ShapeFinder::getPlacement(const App::DocumentObject* root) +{ + auto namedProperty = root->getPropertyByName("Placement"); + auto placementProperty = dynamic_cast(namedProperty); + if (namedProperty && placementProperty) { + return placementProperty->getValue(); + } + return {}; +} + + +//! get root's scale property. If root is not a Link related object, then the identity matrrix will +//! be returned. +Base::Matrix4D ShapeFinder::getScale(const App::DocumentObject* root) +{ + if (!isLinkLike(root)) { + return {}; + } + + Base::Matrix4D linkScale; + auto namedProperty = root->getPropertyByName("ScaleVector"); + auto scaleVectorProperty = dynamic_cast(namedProperty); + if (scaleVectorProperty) { + linkScale.scale(scaleVectorProperty->getValue()); + } + return linkScale; +} + + +//! there isn't convenient common ancestor for the members of the Link family. We use +//! isLinkLike(obj) instead of obj->isDerivedFrom(). Some links have +//! proxy objects and will not be detected by isDerivedFrom(). +bool ShapeFinder::isLinkLike(const App::DocumentObject* obj) +{ + if (!obj) { + return false; + } + + if (obj->isDerivedFrom() || obj->isDerivedFrom() + || obj->isDerivedFrom()) { + return true; + } + + auto namedProperty = obj->getPropertyByName("LinkedObject"); + auto linkedObjectProperty = dynamic_cast(namedProperty); + if (linkedObjectProperty) { + return true; + } + + namedProperty = obj->getPropertyByName("ElementList"); + auto elementListProperty = dynamic_cast(namedProperty); + return elementListProperty != nullptr; +} + + +//! Infinite shapes can not be projected, so they need to be removed. inShape is usually a compound. +//! Datum features (Axis, Plane and CS) are examples of infinite shapes. +TopoDS_Shape ShapeFinder::stripInfiniteShapes(const TopoDS_Shape& inShape) +{ + BRep_Builder builder; + TopoDS_Compound comp; + builder.MakeCompound(comp); + + TopoDS_Iterator it(inShape); + for (; it.More(); it.Next()) { + TopoDS_Shape shape = it.Value(); + if (shape.ShapeType() < TopAbs_SOLID) { + // look inside composite shapes + shape = stripInfiniteShapes(shape); + } + else if (Part::TopoShape(shape).isInfinite()) { + continue; + } + // simple shape & finite + builder.Add(comp, shape); + } + + return {std::move(comp)}; +} + + +//! check for shape is null or shape has no subshapes(vertex/edge/face/etc) +//! this handles the case of an empty compound which is not IsNull, but has no +//! content. +// Note: the same code exists in TechDraw::ShapeUtils +bool ShapeFinder::isShapeReallyNull(const TopoDS_Shape& shape) +{ + // if the shape is null or it has no subshapes, then it is really null + return shape.IsNull() || !TopoDS_Iterator(shape).More(); +} + + +//! Returns the net transformation of a path from rootObject to leafSub. rootObject's transform +//! is included in the result. +std::pair +ShapeFinder::getGlobalTransform(const App::DocumentObject& rootObject, const std::string& leafSub) +{ + // we prune the last term if it is a vertex, edge or face + std::string newSub = removeGeometryTerm(leafSub); + + std::vector plmStack; + std::vector scaleStack; + // get transforms below rootObject + // Note: root object is provided by the caller and may or may not be a top level object + crawlPlacementChain(plmStack, scaleStack, rootObject, newSub); + + auto pathTransform = sumTransforms(plmStack, scaleStack); + + // apply the placements in reverse order - top to bottom + // should this be rootObject's local transform? + auto rootTransform = getGlobalTransform(&rootObject); + + auto netPlm = rootTransform.first * pathTransform.first; + auto netScale = rootTransform.second * pathTransform.second; + + return {netPlm, netScale}; +} + + +//! trys to get the global position and scale for a object with no information about the path +//! through the tree from a root to cursor object. +std::pair +ShapeFinder::getGlobalTransform(const App::DocumentObject* cursorObject) +{ + if (!cursorObject) { + return {}; + } + + Base::Placement netPlm; + Base::Matrix4D netScale = getScale(cursorObject); + + Base::Placement geoPlm; + auto geoCursor = dynamic_cast(cursorObject); + if (!isLinkLike(cursorObject) && geoCursor) { + netPlm = geoCursor->globalPlacement(); + return {netPlm, netScale}; + } + + netPlm = getPlacement(cursorObject); + + return {netPlm, netScale}; +} + + +//! combine a series of placement & scale transforms. The input stacks are expected in leaf to root +//! order, but the result is in the expected root to leaf order. +std::pair +ShapeFinder::sumTransforms(const std::vector& plmStack, + const std::vector& scaleStack) +{ + Base::Placement netPlm; + Base::Matrix4D netScale; + + auto itRevPlm = plmStack.rbegin(); + for (; itRevPlm != plmStack.rend(); itRevPlm++) { + netPlm *= *itRevPlm; + } + auto itRevScale = scaleStack.rbegin(); + for (; itRevScale != scaleStack.rend(); itRevScale++) { + netScale *= *itRevScale; + } + + return {netPlm, netScale}; +} + + +//! get the parent to which attachObject is attached via Links (not regular Part::Attacher +//! attachment) +App::DocumentObject* ShapeFinder::getLinkAttachParent(const App::DocumentObject* attachedObject) +{ + auto namedProperty = attachedObject->getPropertyByName("a1AttParent"); + auto attachProperty = dynamic_cast(namedProperty); + if (namedProperty && attachProperty) { + return attachProperty->getValue(); + } + return {}; +} + + +//! debugging routine that returns a string representation of a placement. +// TODO: this should be in Base::Placement? +std::string ShapeFinder::PlacementAsString(const Base::Placement& inPlacement) +{ + auto position = inPlacement.getPosition(); + auto rotation = inPlacement.getRotation(); + Base::Vector3d axis; + double angle {0.0}; + rotation.getValue(axis, angle); + std::stringstream ss; + ss << "pos: (" << position.x << ", " << position.y << ", " << position.z << ") axis: (" + << axis.x << ", " << axis.y << ", " << axis.z << ") angle: " << Base::toDegrees(angle); + return ss.str(); +} + + +//! debug routine. return readable form of TopLoc_Location from OCC +std::string ShapeFinder::LocationAsString(const TopLoc_Location& location) +{ + auto position = Base::Vector3d {location.Transformation().TranslationPart().X(), + location.Transformation().TranslationPart().Y(), + location.Transformation().TranslationPart().Z()}; + gp_XYZ axisDir; + double angle {0}; + auto isRotation = location.Transformation().GetRotation(axisDir, angle); + Base::Vector3d axis {axisDir.X(), axisDir.Y(), axisDir.Z()}; + + std::stringstream ss; + ss << "isRotation: " << isRotation << " pos: (" << position.x << ", " << position.y << ", " + << position.z << ") axis: (" << axisDir.X() << ", " << axisDir.Y() << ", " << axisDir.Z() + << ") angle: " << Base::toDegrees(angle); + return ss.str(); +} diff --git a/src/Mod/Measure/App/ShapeFinder.h b/src/Mod/Measure/App/ShapeFinder.h new file mode 100644 index 000000000000..297dc9c089c2 --- /dev/null +++ b/src/Mod/Measure/App/ShapeFinder.h @@ -0,0 +1,126 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/**************************************************************************** + * * + * Copyright (c) 2024 wandererfan * + * * + * This file is part of FreeCAD. * + * * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * + * * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * + * * + ***************************************************************************/ + +#ifndef MEASURE_SHAPEFINDER_H +#define MEASURE_SHAPEFINDER_H + +#include + +#include + +#include +#include +#include +#include + +#include + +#include "SubnameHelper.h" + +namespace Measure +{ + +//! a class to hold the result of resolving a selection into the actual target object +//! and traditional subElement name (Vertex1) + +class MeasureExport ResolveResult +{ +public: + ResolveResult(); + ResolveResult(const App::DocumentObject* realTarget, + const std::string& shortSubName, + const App::DocumentObject* targetParent); + + App::DocumentObject& getTarget() const; + std::string getShortSub() const; + App::DocumentObject& getTargetParent() const; + +private: + App::SubObjectT m_target; + App::DocumentObjectT m_targetParent; +}; + + +//! a class to obtain the located shape pointed at by a selection +class MeasureExport ShapeFinder: public SubnameHelper +{ +public: + static TopoDS_Shape getLocatedShape(const App::DocumentObject& rootObject, + const std::string& leafSub); + static Part::TopoShape getLocatedTopoShape(const App::DocumentObject& rootObject, + const std::string& leafSub); + + + static std::pair + getGlobalTransform(const App::DocumentObject& rootObject, const std::string& leafSub); + static std::pair + getGlobalTransform(const App::DocumentObject* cursorObject); + + static void crawlPlacementChain(std::vector& plmStack, + std::vector& scaleStack, + const App::DocumentObject& rootObj, + const std::string& leafSub); + + static ResolveResult resolveSelection(const App::DocumentObject& selectObj, + const std::string& selectLongSub); + + static Base::Placement getPlacement(const App::DocumentObject* root); + static Base::Matrix4D getScale(const App::DocumentObject* root); + + static bool isLinkLike(const App::DocumentObject* obj); + static std::string PlacementAsString(const Base::Placement& inPlacement); + static std::string LocationAsString(const TopLoc_Location& location); + + static TopoDS_Shape transformShape(TopoDS_Shape& inShape, + const Base::Placement& placement, + const Base::Matrix4D& scaler); + static TopoDS_Shape stripInfiniteShapes(const TopoDS_Shape& inShape); + static bool isShapeReallyNull(const TopoDS_Shape& shape); + + static std::pair + sumTransforms(const std::vector& plmStack, + const std::vector& scaleStack); + static App::DocumentObject* getLinkAttachParent(const App::DocumentObject* attachedObject); + static Base::Placement getAttachedPlacement(const App::DocumentObject* cursorObject); + + static std::string getFullPath(const App::DocumentObject* object); + static std::vector getGeometryRootObjects(const App::Document* doc); + static std::vector> + getGeometryPathsFromOutList(const App::DocumentObject* object); + + +private: + static bool ignoreModule(const std::string& moduleName); + static bool ignoreObject(const App::DocumentObject* object); + static bool ignoreLinkAttachedObject(const App::DocumentObject* object, + const App::DocumentObject* inlistObject); + static std::vector + tidyInList(const std::vector& inlist); + static std::vector + tidyInListAttachment(const App::DocumentObject* owner, + const std::vector& inlist); +}; + +} // namespace Measure + +#endif // MEASURE_SHAPEFINDER_H diff --git a/src/Mod/Measure/App/SubnameHelper.cpp b/src/Mod/Measure/App/SubnameHelper.cpp new file mode 100644 index 000000000000..b929e605b8b7 --- /dev/null +++ b/src/Mod/Measure/App/SubnameHelper.cpp @@ -0,0 +1,178 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/**************************************************************************** + * * + * Copyright (c) 2024 wandererfan * + * * + * This file is part of FreeCAD. * + * * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * + * * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * + * * + ***************************************************************************/ + +//! a class to perform common operations on subelement names. + + +#include "PreCompiled.h" +#ifndef _PreComp_ +#endif + +#include + +#include + +#include "SubnameHelper.h" + + +using namespace Measure; + + +std::string SubnameHelper::pathToLongSub(std::list path) +{ + std::vector elementNames; + for (auto& item : path) { + auto name = item->getNameInDocument(); + if (!name) { + continue; + } + elementNames.emplace_back(name); + } + return namesToLongSub(elementNames); +} + + +//! construct dot separated long subelement name from a list of elements. the elements should be +//! in topological order. +std::string SubnameHelper::namesToLongSub(const std::vector& pathElementNames) +{ + std::string result; + for (auto& name : pathElementNames) { + result += (name + "."); + } + return result; +} + + +//! return the last term of a dot separated string - A.B.C returns C +std::string SubnameHelper::getLastTerm(const std::string& inString) +{ + auto result {inString}; + size_t lastDot = inString.rfind('.'); + if (lastDot != std::string::npos) { + result = result.substr(lastDot + 1); + } + return result; +} + +//! return the first term of a dot separated string - A.B.C returns A +std::string SubnameHelper::getFirstTerm(const std::string& inString) +{ + auto result {inString}; + size_t lastDot = inString.find('.'); + if (lastDot != std::string::npos) { + result = result.substr(0, lastDot); + } + return result; +} + +//! remove the first term of a dot separated string - A.B.C returns B.C +std::string SubnameHelper::pruneFirstTerm(const std::string& inString) +{ + auto result {inString}; + size_t lastDot = inString.find('.'); + if (lastDot != std::string::npos) { + result = result.substr(lastDot + 1); + } + return result; +} + +//! return a dot separated string without its last term - A.B.C returns A.B. +// A.B.C. returns A.B.C +std::string SubnameHelper::pruneLastTerm(const std::string& inString) +{ + auto result {inString}; + if (result.back() == '.') { + // remove the trailing dot + result = result.substr(0, result.length() - 1); + } + + size_t lastDotPos = result.rfind('.'); + if (lastDotPos != std::string::npos) { + result = result.substr(0, lastDotPos + 1); + } + else { + // no dot in string, remove everything! + result = ""; + } + + return result; +} + +//! remove that part of a long subelement name that refers to a geometric subshape. "myObj.Vertex1" +//! would return "myObj.", "myObj.mySubObj." would return itself unchanged. If there is no +//! geometric reference the original input is returned. +std::string SubnameHelper::removeGeometryTerm(const std::string& longSubname) +{ + auto lastTerm = getLastTerm(longSubname); + if (longSubname.empty() || longSubname.back() == '.') { + // not a geometric reference + return longSubname; // need a copy? + } + + // brute force check for geometry names in the last term + auto pos = lastTerm.find("Vertex"); + if (pos != std::string::npos) { + return pruneLastTerm(longSubname); + } + + pos = lastTerm.find("Edge"); + if (pos != std::string::npos) { + return pruneLastTerm(longSubname); + } + + pos = lastTerm.find("Face"); + if (pos != std::string::npos) { + return pruneLastTerm(longSubname); + } + + pos = lastTerm.find("Shell"); + if (pos != std::string::npos) { + return pruneLastTerm(longSubname); + } + + pos = lastTerm.find("Solid"); + if (pos != std::string::npos) { + return pruneLastTerm(longSubname); + } + + return longSubname; +} + + +//! remove the tnp information from a selection sub name returning a dot separated path +//! Array001.Array001_i0.Array_i1.;Vertex33;:H1116,V.Vertex33 to +//! Array001.Array001_i0.Array_i1.Vertex33 +std::string SubnameHelper::removeTnpInfo(const std::string& inString) +{ + constexpr char TNPDelimiter {';'}; + size_t firstDelimiter = inString.find(TNPDelimiter); + if (firstDelimiter == std::string::npos) { + // no delimiter in string + return inString; + } + auto geomName = getLastTerm(inString); + auto path = inString.substr(0, firstDelimiter); + auto result = path + geomName; + return result; +} diff --git a/src/Mod/Measure/App/SubnameHelper.h b/src/Mod/Measure/App/SubnameHelper.h new file mode 100644 index 000000000000..51417e989151 --- /dev/null +++ b/src/Mod/Measure/App/SubnameHelper.h @@ -0,0 +1,57 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/**************************************************************************** + * * + * Copyright (c) 2024 wandererfan * + * * + * This file is part of FreeCAD. * + * * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * + * * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * + * * + ***************************************************************************/ + +#ifndef MEASURE_SUBNAMEMANIPULATOR_H +#define MEASURE_SUBNAMEMANIPULATOR_H + +#include + +#include + +#include +#include +#include +#include + +#include + +namespace Measure +{ + +//! a class to perform common operations on subelement names. +class MeasureExport SubnameHelper +{ +public: + static std::string getLastTerm(const std::string& inString); + static std::string getFirstTerm(const std::string& inString); + static std::string namesToLongSub(const std::vector& pathElementNames); + static std::string pruneLastTerm(const std::string& inString); + static std::string pruneFirstTerm(const std::string& inString); + static std::string removeGeometryTerm(const std::string& longSubname); + static std::string pathToLongSub(std::list path); + static std::string removeTnpInfo(const std::string& inString); +}; + +} // namespace Measure + +#endif // MEASURE_SUBNAMEMANIPULATOR_H diff --git a/src/Mod/Measure/Gui/QuickMeasure.cpp b/src/Mod/Measure/Gui/QuickMeasure.cpp index ffdaf354da10..07100f00e781 100644 --- a/src/Mod/Measure/Gui/QuickMeasure.cpp +++ b/src/Mod/Measure/Gui/QuickMeasure.cpp @@ -179,12 +179,23 @@ void QuickMeasure::addSelectionToMeasurement() } } +static QString areaStr(double value) +{ + Base::Quantity area(value, Base::Unit::Area); + return QString::fromStdString(area.getUserString()); +} + +static QString lenghtStr(double value) +{ + Base::Quantity dist(value, Base::Unit::Length); + return QString::fromStdString(dist.getUserString()); +} + void QuickMeasure::printResult() { MeasureType mtype = measurement->getType(); if (mtype == MeasureType::Surfaces) { - Base::Quantity area(measurement->area(), Base::Unit::Area); - print(tr("Total area: %1").arg(area.getUserString())); + print(tr("Total area: %1").arg(areaStr(measurement->area()))); } /* deactivated because computing the volumes/area of solids makes a significant slow down in selection of complex solids. @@ -195,48 +206,37 @@ void QuickMeasure::printResult() %2").arg(vol.getSafeUserString()).arg(area.getSafeUserString())); }*/ else if (mtype == MeasureType::TwoPlanes) { - Base::Quantity dist(measurement->planePlaneDistance(), Base::Unit::Length); - print(tr("Nominal distance: %1").arg(dist.getSafeUserString())); + print(tr("Nominal distance: %1").arg(lenghtStr(measurement->planePlaneDistance()))); } else if (mtype == MeasureType::Cone || mtype == MeasureType::Plane) { - Base::Quantity area(measurement->area(), Base::Unit::Area); - print(tr("Area: %1").arg(area.getUserString())); + print(tr("Area: %1").arg(areaStr(measurement->area()))); } else if (mtype == MeasureType::Cylinder || mtype == MeasureType::Sphere || mtype == MeasureType::Torus) { - Base::Quantity area(measurement->area(), Base::Unit::Area); - Base::Quantity rad(measurement->radius(), Base::Unit::Length); - print(tr("Area: %1, Radius: %2").arg(area.getSafeUserString(), rad.getSafeUserString())); + print(tr("Area: %1, Radius: %2") + .arg(areaStr(measurement->area()), lenghtStr(measurement->radius()))); } else if (mtype == MeasureType::Edges) { - Base::Quantity dist(measurement->length(), Base::Unit::Length); - print(tr("Total length: %1").arg(dist.getSafeUserString())); + print(tr("Total length: %1").arg(lenghtStr(measurement->length()))); } else if (mtype == MeasureType::TwoParallelLines) { - Base::Quantity dist(measurement->lineLineDistance(), Base::Unit::Length); - print(tr("Nominal distance: %1").arg(dist.getSafeUserString())); + print(tr("Nominal distance: %1").arg(lenghtStr(measurement->lineLineDistance()))); } else if (mtype == MeasureType::TwoLines) { - Base::Quantity angle(measurement->angle(), Base::Unit::Length); - Base::Quantity dist(measurement->length(), Base::Unit::Length); print(tr("Angle: %1, Total length: %2") - .arg(angle.getSafeUserString(), dist.getSafeUserString())); + .arg(lenghtStr(measurement->angle()), lenghtStr(measurement->length()))); } else if (mtype == MeasureType::Line) { - Base::Quantity dist(measurement->length(), Base::Unit::Length); - print(tr("Length: %1").arg(dist.getSafeUserString())); + print(tr("Length: %1").arg(lenghtStr(measurement->length()))); } else if (mtype == MeasureType::Circle) { - Base::Quantity dist(measurement->radius(), Base::Unit::Length); - print(tr("Radius: %1").arg(dist.getSafeUserString())); + print(tr("Radius: %1").arg(lenghtStr(measurement->radius()))); } else if (mtype == MeasureType::PointToPoint) { - Base::Quantity dist(measurement->length(), Base::Unit::Length); - print(tr("Distance: %1").arg(dist.getSafeUserString())); + print(tr("Distance: %1").arg(lenghtStr(measurement->length()))); } else if (mtype == MeasureType::PointToEdge || mtype == MeasureType::PointToSurface) { - Base::Quantity dist(measurement->length(), Base::Unit::Length); - print(tr("Minimum distance: %1").arg(dist.getSafeUserString())); + print(tr("Minimum distance: %1").arg(lenghtStr(measurement->length()))); } else { print(QString::fromLatin1("")); diff --git a/src/Mod/Measure/Gui/TaskMeasure.cpp b/src/Mod/Measure/Gui/TaskMeasure.cpp index 0098f1e8bee1..56d538367a18 100644 --- a/src/Mod/Measure/Gui/TaskMeasure.cpp +++ b/src/Mod/Measure/Gui/TaskMeasure.cpp @@ -147,7 +147,7 @@ TaskMeasure::TaskMeasure() auto* settingsLayout = new QHBoxLayout(); settingsLayout->addItem(new QSpacerItem(0, 0, QSizePolicy::Expanding)); settingsLayout->addWidget(mSettings); - formLayout->addRow(QStringLiteral(), settingsLayout); + formLayout->addRow(QStringLiteral(""), settingsLayout); formLayout->addRow(tr("Mode:"), modeSwitch); formLayout->addRow(showDeltaLabel, showDelta); formLayout->addRow(tr("Result:"), valueResult); @@ -466,11 +466,11 @@ void TaskMeasure::onSelectionChanged(const Gui::SelectionChanges& msg) // If the control modifier is pressed, the object is just added to the current measurement // If the control modifier is not pressed, a new measurement will be started. If autosave is on, // the old measurement will be saved otherwise discharded. Shift inverts the autosave behaviour - // temporarly + // temporarily const auto modifier = QGuiApplication::keyboardModifiers(); const bool ctrl = (modifier & Qt::ControlModifier) > 0; const bool shift = (modifier & Qt::ShiftModifier) > 0; - // shift inverts the current state temporarly + // shift inverts the current state temporarily const auto autosave = (mAutoSave && !shift) || (!mAutoSave && shift); if ((!ctrl && Selection().getSelectionStyle() == SelectionStyle::NormalSelection) || (ctrl && Selection().getSelectionStyle() == SelectionStyle::GreedySelection)) { diff --git a/src/Mod/Measure/Gui/ViewProviderMeasureBase.cpp b/src/Mod/Measure/Gui/ViewProviderMeasureBase.cpp index 456f5b431bca..1b1e8fa177f5 100644 --- a/src/Mod/Measure/Gui/ViewProviderMeasureBase.cpp +++ b/src/Mod/Measure/Gui/ViewProviderMeasureBase.cpp @@ -263,7 +263,7 @@ void ViewProviderMeasureBase::draggerChangedCallback(void* data, SoDragger*) void ViewProviderMeasureBase::setLabelValue(const Base::Quantity& value) { - pLabel->string.setValue(value.getUserString().toUtf8().constData()); + pLabel->string.setValue(value.getUserString().c_str()); } void ViewProviderMeasureBase::setLabelValue(const QString& value) diff --git a/src/Mod/Measure/Gui/ViewProviderMeasureDistance.cpp b/src/Mod/Measure/Gui/ViewProviderMeasureDistance.cpp index 0d312d7fafc3..8d3bd96af6fe 100644 --- a/src/Mod/Measure/Gui/ViewProviderMeasureDistance.cpp +++ b/src/Mod/Measure/Gui/ViewProviderMeasureDistance.cpp @@ -478,23 +478,23 @@ void ViewProviderMeasureDistance::redrawAnnotation() auto propDistance = dynamic_cast(pcObject->getPropertyByName("Distance")); - setLabelValue(propDistance->getQuantityValue().getUserString()); + setLabelValue(QString::fromStdString(propDistance->getQuantityValue().getUserString())); // Set delta distance auto propDistanceX = static_cast(getMeasureObject()->getPropertyByName("DistanceX")); static_cast(pDeltaDimensionSwitch->getChild(0)) - ->text.setValue("Δx: " + propDistanceX->getQuantityValue().getUserString().toUtf8()); + ->text.setValue(("Δx: " + propDistanceX->getQuantityValue().getUserString()).c_str()); auto propDistanceY = static_cast(getMeasureObject()->getPropertyByName("DistanceY")); static_cast(pDeltaDimensionSwitch->getChild(1)) - ->text.setValue("Δy: " + propDistanceY->getQuantityValue().getUserString().toUtf8()); + ->text.setValue(("Δy: " + propDistanceY->getQuantityValue().getUserString()).c_str()); auto propDistanceZ = static_cast(getMeasureObject()->getPropertyByName("DistanceZ")); static_cast(pDeltaDimensionSwitch->getChild(2)) - ->text.setValue("Δz: " + propDistanceZ->getQuantityValue().getUserString().toUtf8()); + ->text.setValue(("Δz: " + propDistanceZ->getQuantityValue().getUserString()).c_str()); // Set matrix SbMatrix matrix = getMatrix(); @@ -529,7 +529,6 @@ void ViewProviderMeasureDistance::onChanged(const App::Property* prop) ->backgroundColor.setValue(bColor.r, bColor.g, bColor.g); } - ViewProviderMeasureBase::onChanged(prop); } diff --git a/src/Mod/Mesh/App/CMakeLists.txt b/src/Mod/Mesh/App/CMakeLists.txt index 6a6ea57ae058..fe1e7a35fc22 100644 --- a/src/Mod/Mesh/App/CMakeLists.txt +++ b/src/Mod/Mesh/App/CMakeLists.txt @@ -102,6 +102,8 @@ SET(Core_SRCS Core/IO/Reader3MF.h Core/IO/ReaderOBJ.cpp Core/IO/ReaderOBJ.h + Core/IO/ReaderPLY.cpp + Core/IO/ReaderPLY.h Core/IO/Writer3MF.cpp Core/IO/Writer3MF.h Core/IO/WriterInventor.cpp diff --git a/src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp b/src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp new file mode 100644 index 000000000000..084132421c9f --- /dev/null +++ b/src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp @@ -0,0 +1,664 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later + +/*************************************************************************** + * Copyright (c) 2024 Werner Mayer * + * * + * This file is part of FreeCAD. * + * * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * + * * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * + * * + **************************************************************************/ + +#include "PreCompiled.h" +#ifndef _PreComp_ +#include +#include +#endif + +#include "Core/MeshIO.h" +#include "Core/MeshKernel.h" +#include +#include + +#include "ReaderPLY.h" + + +using namespace MeshCore; + +// http://local.wasp.uwa.edu.au/~pbourke/dataformats/ply/ +ReaderPLY::ReaderPLY(MeshKernel& kernel, Material* material) + : _kernel(kernel) + , _material(material) +{} + +bool ReaderPLY::CheckHeader(std::istream& input) const +{ + if (!input || input.bad()) { + return false; + } + + std::streambuf* buf = input.rdbuf(); + if (!buf) { + return false; + } + + // read in the first three characters + std::array ply {}; + input.read(ply.data(), ply.size()); + input.ignore(1); + if (!input) { + return false; + } + + return ((ply[0] == 'p') && (ply[1] == 'l') && (ply[2] == 'y')); +} + +bool ReaderPLY::ReadFormat(std::istream& str) +{ + std::string format_string; + std::string version; + char space_format_string {}; + char space_format_version {}; + str >> space_format_string >> std::ws >> format_string >> space_format_version >> std::ws + >> version; + + // clang-format off + if (std::isspace(static_cast(space_format_string)) == 0 || + std::isspace(static_cast(space_format_version)) == 0) { + return false; + } + // clang-format on + + if (format_string == "ascii") { + format = ascii; + } + else if (format_string == "binary_big_endian") { + format = binary_big_endian; + } + else if (format_string == "binary_little_endian") { + format = binary_little_endian; + } + else { + // wrong format version + return false; + } + + return (version == "1.0"); +} + +bool ReaderPLY::ReadElement(std::istream& str, std::string& element) +{ + std::string name; + std::size_t count {}; + char space_element_name {}; + char space_name_count {}; + str >> space_element_name >> std::ws >> name >> space_name_count >> std::ws >> count; + + // clang-format off + if (std::isspace(static_cast(space_element_name)) == 0 || + std::isspace(static_cast(space_name_count)) == 0) { + return false; + } + // clang-format on + + if (name == "vertex") { + element = name; + v_count = count; + meshPoints.reserve(count); + } + else if (name == "face") { + element = name; + f_count = count; + meshFacets.reserve(count); + } + else { + element.clear(); + } + + return true; +} + +ReaderPLY::Property ReaderPLY::propertyOfName(const std::string& name) +{ + if (name == "x") { + return coord_x; + } + if (name == "y") { + return coord_y; + } + if (name == "z") { + return coord_z; + } + if (name == "red" || name == "diffuse_red") { + return color_r; + } + if (name == "green" || name == "diffuse_green") { + return color_g; + } + if (name == "blue" || name == "diffuse_blue") { + return color_b; + } + + return generic; +} + +bool ReaderPLY::ReadVertexProperty(std::istream& str) +{ + std::string type; + std::string name; + char space {}; + str >> space >> std::ws >> type >> space >> std::ws >> name >> std::ws; + + Number number {}; + if (type == "char" || type == "int8") { + number = int8; + } + else if (type == "uchar" || type == "uint8") { + number = uint8; + } + else if (type == "short" || type == "int16") { + number = int16; + } + else if (type == "ushort" || type == "uint16") { + number = uint16; + } + else if (type == "int" || type == "int32") { + number = int32; + } + else if (type == "uint" || type == "uint32") { + number = uint32; + } + else if (type == "float" || type == "float32") { + number = float32; + } + else if (type == "double" || type == "float64") { + number = float64; + } + else { + // no valid number type + return false; + } + + // store the property name and type + vertex_props.emplace_back(propertyOfName(name), number); + + return true; +} + +bool ReaderPLY::ReadFaceProperty(std::istream& str) +{ + std::string type; + std::string name; + char space {}; + + std::string list; + std::string uchr; + + str >> space >> std::ws >> list >> std::ws; + if (list == "list") { + str >> uchr >> std::ws >> type >> std::ws >> name >> std::ws; + } + else { + // not a 'list' + type = list; + str >> name; + } + if (name != "vertex_indices" && name != "vertex_index") { + Number number {}; + if (type == "char" || type == "int8") { + number = int8; + } + else if (type == "uchar" || type == "uint8") { + number = uint8; + } + else if (type == "short" || type == "int16") { + number = int16; + } + else if (type == "ushort" || type == "uint16") { + number = uint16; + } + else if (type == "int" || type == "int32") { + number = int32; + } + else if (type == "uint" || type == "uint32") { + number = uint32; + } + else if (type == "float" || type == "float32") { + number = float32; + } + else if (type == "double" || type == "float64") { + number = float64; + } + else { + // no valid number type + return false; + } + + // store the property name and type + face_props.push_back(number); + } + return true; +} + +bool ReaderPLY::ReadProperty(std::istream& str, const std::string& element) +{ + if (element == "vertex") { + if (!ReadVertexProperty(str)) { + return false; + } + } + else if (element == "face") { + if (!ReadFaceProperty(str)) { + return false; + } + } + + return true; +} + +bool ReaderPLY::ReadHeader(std::istream& input) +{ + std::string line; + std::string element; + while (std::getline(input, line)) { + std::istringstream str(line); + str.unsetf(std::ios_base::skipws); + str >> std::ws; + if (str.eof()) { + continue; // empty line + } + std::string kw; + str >> kw; + if (kw == "format") { + if (!ReadFormat(str)) { + return false; + } + } + else if (kw == "element") { + if (!ReadElement(str, element)) { + return false; + } + } + else if (kw == "property") { + if (!ReadProperty(str, element)) { + return false; + } + } + else if (kw == "end_header") { + break; // end of the header, now read the data + } + } + + return true; +} + +bool ReaderPLY::VerifyVertexProperty() +{ + // check if valid 3d points + PropertyComp property; + std::size_t num_x = std::count_if(vertex_props.begin(), + vertex_props.end(), + [&property](const std::pair& prop) { + return property(prop, coord_x); + }); + + std::size_t num_y = std::count_if(vertex_props.begin(), + vertex_props.end(), + [&property](const std::pair& prop) { + return property(prop, coord_y); + }); + + std::size_t num_z = std::count_if(vertex_props.begin(), + vertex_props.end(), + [&property](const std::pair& prop) { + return property(prop, coord_z); + }); + + return ((num_x == 1) && (num_y == 1) && (num_z == 1)); +} + +bool ReaderPLY::VerifyColorProperty() +{ + // check if valid colors are set + PropertyComp property; + std::size_t num_r = std::count_if(vertex_props.begin(), + vertex_props.end(), + [&property](const std::pair& prop) { + return property(prop, color_r); + }); + + std::size_t num_g = std::count_if(vertex_props.begin(), + vertex_props.end(), + [&property](const std::pair& prop) { + return property(prop, color_g); + }); + + std::size_t num_b = std::count_if(vertex_props.begin(), + vertex_props.end(), + [&property](const std::pair& prop) { + return property(prop, color_b); + }); + + std::size_t rgb_colors = num_r + num_g + num_b; + if (rgb_colors != 0 && rgb_colors != 3) { + return false; + } + + // only if set per vertex + if (rgb_colors == 3) { + if (_material) { + _material->binding = MeshIO::PER_VERTEX; + _material->diffuseColor.reserve(v_count); + } + } + + return true; +} + +bool ReaderPLY::Load(std::istream& input) +{ + if (!CheckHeader(input)) { + return false; + } + + if (!ReadHeader(input)) { + return false; + } + + if (!VerifyVertexProperty()) { + return false; + } + + if (!VerifyColorProperty()) { + return false; + } + + // clang-format off + return format == ascii ? LoadAscii(input) + : LoadBinary(input); + // clang-format on +} + +void ReaderPLY::CleanupMesh() +{ + _kernel.Clear(); // remove all data before + + MeshCleanup meshCleanup(meshPoints, meshFacets); + if (_material) { + meshCleanup.SetMaterial(_material); + } + meshCleanup.RemoveInvalids(); + MeshPointFacetAdjacency meshAdj(meshPoints.size(), meshFacets); + meshAdj.SetFacetNeighbourhood(); + _kernel.Adopt(meshPoints, meshFacets); +} + +bool ReaderPLY::ReadVertexes(std::istream& input) +{ + std::string line; + for (std::size_t i = 0; i < v_count && std::getline(input, line); i++) { + std::istringstream str(line); + str.unsetf(std::ios_base::skipws); + str >> std::ws; + + // go through the vertex properties + PropertyArray prop_values {}; + std::size_t count_props = vertex_props.size(); + for (const auto& it : vertex_props) { + switch (it.second) { + case int8: + case int16: + case int32: { + int vt {}; + str >> vt >> std::ws; + prop_values[it.first] = static_cast(vt); + } break; + case uint8: + case uint16: + case uint32: { + unsigned int vt {}; + str >> vt >> std::ws; + prop_values[it.first] = static_cast(vt); + } break; + case float32: { + float vt {}; + str >> vt >> std::ws; + prop_values[it.first] = vt; + } break; + case float64: { + double vt {}; + str >> vt >> std::ws; + prop_values[it.first] = static_cast(vt); + } break; + default: + return false; + } + + // does line contain all properties + if (--count_props > 0 && str.eof()) { + return false; + } + } + + addVertexProperty(prop_values); + } + + return true; +} + +bool ReaderPLY::ReadFaces(std::istream& input) +{ + constexpr const std::size_t count_props = 4; + std::string line; + for (std::size_t i = 0; i < f_count && std::getline(input, line); i++) { + std::istringstream str(line); + str.unsetf(std::ios_base::skipws); + str >> std::ws; + + std::array v_indices {}; + std::size_t index = count_props; + for (int& vt : v_indices) { + str >> vt >> std::ws; + if (--index > 0 && str.eof()) { + return false; + } + } + + if (v_indices[0] != 3) { + return false; + } + + meshFacets.push_back(MeshFacet(v_indices[1], v_indices[2], v_indices[3])); + } + + return true; +} + +bool ReaderPLY::LoadAscii(std::istream& input) +{ + if (!ReadVertexes(input)) { + return false; + } + + if (!ReadFaces(input)) { + return false; + } + + CleanupMesh(); + return true; +} + +void ReaderPLY::addVertexProperty(const PropertyArray& prop) +{ + Base::Vector3f pt; + pt.x = (prop[coord_x]); + pt.y = (prop[coord_y]); + pt.z = (prop[coord_z]); + meshPoints.push_back(pt); + + if (_material && _material->binding == MeshIO::PER_VERTEX) { + // NOLINTBEGIN + float r = (prop[color_r]) / 255.0F; + float g = (prop[color_g]) / 255.0F; + float b = (prop[color_b]) / 255.0F; + // NOLINTEND + _material->diffuseColor.emplace_back(r, g, b); + } +} + +bool ReaderPLY::ReadVertexes(Base::InputStream& is) +{ + for (std::size_t i = 0; i < v_count; i++) { + // go through the vertex properties + PropertyArray prop_values {}; + for (const auto& it : vertex_props) { + switch (it.second) { + case int8: { + int8_t vt {}; + is >> vt; + prop_values[it.first] = static_cast(vt); + } break; + case uint8: { + uint8_t vt {}; + is >> vt; + prop_values[it.first] = static_cast(vt); + } break; + case int16: { + int16_t vt {}; + is >> vt; + prop_values[it.first] = static_cast(vt); + } break; + case uint16: { + uint16_t vt {}; + is >> vt; + prop_values[it.first] = static_cast(vt); + } break; + case int32: { + int32_t vt {}; + is >> vt; + prop_values[it.first] = static_cast(vt); + } break; + case uint32: { + uint32_t vt {}; + is >> vt; + prop_values[it.first] = static_cast(vt); + } break; + case float32: { + float vt {}; + is >> vt; + prop_values[it.first] = vt; + } break; + case float64: { + double vt {}; + is >> vt; + prop_values[it.first] = static_cast(vt); + } break; + default: + return false; + } + } + + addVertexProperty(prop_values); + } + + return true; +} + +bool ReaderPLY::ReadFaces(Base::InputStream& is) +{ + unsigned char num {}; + uint32_t f1 {}; + uint32_t f2 {}; + uint32_t f3 {}; + for (std::size_t i = 0; i < f_count; i++) { + is >> num; + if (num == 3) { + is >> f1 >> f2 >> f3; + if (f1 < v_count && f2 < v_count && f3 < v_count) { + meshFacets.push_back(MeshFacet(f1, f2, f3)); + } + for (auto it : face_props) { + switch (it) { + case int8: { + int8_t vt {}; + is >> vt; + } break; + case uint8: { + uint8_t vt {}; + is >> vt; + } break; + case int16: { + int16_t vt {}; + is >> vt; + } break; + case uint16: { + uint16_t vt {}; + is >> vt; + } break; + case int32: { + int32_t vt {}; + is >> vt; + } break; + case uint32: { + uint32_t vt {}; + is >> vt; + } break; + case float32: { + unsigned char cnt {}; + is >> cnt; + float vt {}; + for (unsigned char j = 0; j < cnt; j++) { + is >> vt; + } + } break; + case float64: { + unsigned char cnt {}; + is >> cnt; + double vt {}; + for (unsigned char j = 0; j < cnt; j++) { + is >> vt; + } + } break; + default: + return false; + } + } + } + } + + return true; +} + +bool ReaderPLY::LoadBinary(std::istream& input) +{ + Base::InputStream is(input); + if (format == binary_little_endian) { + is.setByteOrder(Base::Stream::LittleEndian); + } + else { + is.setByteOrder(Base::Stream::BigEndian); + } + + if (!ReadVertexes(is)) { + return false; + } + + if (!ReadFaces(is)) { + return false; + } + + CleanupMesh(); + return true; +} diff --git a/src/Mod/Mesh/App/Core/IO/ReaderPLY.h b/src/Mod/Mesh/App/Core/IO/ReaderPLY.h new file mode 100644 index 000000000000..e4ca967ace87 --- /dev/null +++ b/src/Mod/Mesh/App/Core/IO/ReaderPLY.h @@ -0,0 +1,141 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later + +/*************************************************************************** + * Copyright (c) 2024 Werner Mayer * + * * + * This file is part of FreeCAD. * + * * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * + * * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * + * * + **************************************************************************/ + + +#ifndef MESH_IO_READER_PLY_H +#define MESH_IO_READER_PLY_H + +#include +#include +#include + +namespace Base +{ +class InputStream; +} + +namespace MeshCore +{ + +class MeshKernel; +struct Material; + +/** Loads the mesh object from data in PLY format. */ +class MeshExport ReaderPLY +{ +public: + /*! + * \brief ReaderPLY + */ + explicit ReaderPLY(MeshKernel& kernel, Material* = nullptr); + /*! + * \brief Load the mesh from the input stream + * \return true on success and false otherwise + */ + bool Load(std::istream& input); + +private: + bool CheckHeader(std::istream& input) const; + bool ReadHeader(std::istream& input); + bool VerifyVertexProperty(); + bool VerifyColorProperty(); + bool ReadFormat(std::istream& str); + bool ReadElement(std::istream& str, std::string& element); + bool ReadProperty(std::istream& str, const std::string& element); + bool ReadVertexProperty(std::istream& str); + bool ReadFaceProperty(std::istream& str); + bool ReadVertexes(std::istream& input); + bool ReadFaces(std::istream& input); + bool ReadVertexes(Base::InputStream& is); + bool ReadFaces(Base::InputStream& is); + bool LoadAscii(std::istream& input); + bool LoadBinary(std::istream& input); + void CleanupMesh(); + +private: + enum Property + { + coord_x, + coord_y, + coord_z, + color_r, + color_g, + color_b, + generic, + num_props + }; + + static Property propertyOfName(const std::string& name); + using PropertyArray = std::array; + void addVertexProperty(const PropertyArray& prop); + + enum Number + { + int8, + uint8, + int16, + uint16, + int32, + uint32, + float32, + float64 + }; + + struct PropertyComp + { + using argument_type_1st = std::pair; + using argument_type_2nd = Property; + using result_type = bool; + + // clang-format off + bool operator()(const argument_type_1st& x, + const argument_type_2nd& y) const + { + return x.first == y; + } + // clang-format on + }; + + enum Format + { + unknown, + ascii, + binary_little_endian, + binary_big_endian + } format = unknown; + + std::vector> vertex_props; + std::vector face_props; + + std::size_t v_count = 0; + std::size_t f_count = 0; + MeshPointArray meshPoints; + MeshFacetArray meshFacets; + MeshKernel& _kernel; + Material* _material; +}; + +} // namespace MeshCore + + +#endif // MESH_IO_READER_PLY_H diff --git a/src/Mod/Mesh/App/Core/MeshIO.cpp b/src/Mod/Mesh/App/Core/MeshIO.cpp index ba855663bc29..8e6af13c6437 100644 --- a/src/Mod/Mesh/App/Core/MeshIO.cpp +++ b/src/Mod/Mesh/App/Core/MeshIO.cpp @@ -38,6 +38,7 @@ #include "IO/Reader3MF.h" #include "IO/ReaderOBJ.h" +#include "IO/ReaderPLY.h" #include "IO/Writer3MF.h" #include "IO/WriterInventor.h" #include "IO/WriterOBJ.h" @@ -657,519 +658,10 @@ bool MeshInput::LoadOFF(std::istream& input) return true; } -namespace MeshCore -{ -namespace Ply -{ -enum Number -{ - int8, - uint8, - int16, - uint16, - int32, - uint32, - float32, - float64 -}; -struct Property -{ - using first_argument_type = std::pair; - using second_argument_type = std::string; - using result_type = bool; - - bool operator()(const std::pair& x, const std::string& y) const - { - return x.first == y; - } -}; -} // namespace Ply -using namespace Ply; -} // namespace MeshCore - bool MeshInput::LoadPLY(std::istream& input) { - // http://local.wasp.uwa.edu.au/~pbourke/dataformats/ply/ - std::size_t v_count = 0, f_count = 0; - MeshPointArray meshPoints; - MeshFacetArray meshFacets; - - enum - { - unknown, - ascii, - binary_little_endian, - binary_big_endian - } format = unknown; - - if (!input || input.bad()) { - return false; - } - - std::streambuf* buf = input.rdbuf(); - if (!buf) { - return false; - } - - // read in the first three characters - char ply[3]; - input.read(ply, 3); - input.ignore(1); - if (!input) { - return false; - } - if ((ply[0] != 'p') || (ply[1] != 'l') || (ply[2] != 'y')) { - return false; // wrong header - } - - std::vector> vertex_props; - std::vector face_props; - std::string line, element; - - MeshIO::Binding rgb_value = MeshIO::OVERALL; - while (std::getline(input, line)) { - std::istringstream str(line); - str.unsetf(std::ios_base::skipws); - str >> std::ws; - if (str.eof()) { - continue; // empty line - } - std::string kw; - str >> kw; - if (kw == "format") { - std::string format_string, version; - char space_format_string {}, space_format_version {}; - str >> space_format_string >> std::ws >> format_string >> space_format_version - >> std::ws >> version; - if (/*!str || !str.eof() ||*/ - !std::isspace(space_format_string) || !std::isspace(space_format_version)) { - return false; - } - if (format_string == "ascii") { - format = ascii; - } - else if (format_string == "binary_big_endian") { - format = binary_big_endian; - } - else if (format_string == "binary_little_endian") { - format = binary_little_endian; - } - else { - // wrong format version - return false; - } - if (version != "1.0") { - // wrong version - return false; - } - } - else if (kw == "element") { - std::string name; - std::size_t count {}; - char space_element_name {}, space_name_count {}; - str >> space_element_name >> std::ws >> name >> space_name_count >> std::ws >> count; - if (/*!str || !str.eof() ||*/ - !std::isspace(space_element_name) || !std::isspace(space_name_count)) { - return false; - } - if (name == "vertex") { - element = name; - v_count = count; - meshPoints.reserve(count); - } - else if (name == "face") { - element = name; - f_count = count; - meshFacets.reserve(count); - } - else { - element.clear(); - } - } - else if (kw == "property") { - std::string type, name; - char space {}; - if (element == "vertex") { - str >> space >> std::ws >> type >> space >> std::ws >> name >> std::ws; - - Ply::Number number {}; - if (type == "char" || type == "int8") { - number = int8; - } - else if (type == "uchar" || type == "uint8") { - number = uint8; - } - else if (type == "short" || type == "int16") { - number = int16; - } - else if (type == "ushort" || type == "uint16") { - number = uint16; - } - else if (type == "int" || type == "int32") { - number = int32; - } - else if (type == "uint" || type == "uint32") { - number = uint32; - } - else if (type == "float" || type == "float32") { - number = float32; - } - else if (type == "double" || type == "float64") { - number = float64; - } - else { - // no valid number type - return false; - } - - // store the property name and type - vertex_props.emplace_back(name, number); - } - else if (element == "face") { - std::string list, uchr; - str >> space >> std::ws >> list >> std::ws; - if (list == "list") { - str >> uchr >> std::ws >> type >> std::ws >> name >> std::ws; - } - else { - // not a 'list' - type = list; - str >> name; - } - if (name != "vertex_indices" && name != "vertex_index") { - Number number {}; - if (type == "char" || type == "int8") { - number = int8; - } - else if (type == "uchar" || type == "uint8") { - number = uint8; - } - else if (type == "short" || type == "int16") { - number = int16; - } - else if (type == "ushort" || type == "uint16") { - number = uint16; - } - else if (type == "int" || type == "int32") { - number = int32; - } - else if (type == "uint" || type == "uint32") { - number = uint32; - } - else if (type == "float" || type == "float32") { - number = float32; - } - else if (type == "double" || type == "float64") { - number = float64; - } - else { - // no valid number type - return false; - } - - // store the property name and type - face_props.push_back(number); - } - } - } - else if (kw == "end_header") { - break; // end of the header, now read the data - } - } - - // check if valid 3d points - Property property; - std::size_t num_x = std::count_if(vertex_props.begin(), - vertex_props.end(), - [&property](const std::pair& p) { - return property(p, "x"); - }); - if (num_x != 1) { - return false; - } - - std::size_t num_y = std::count_if(vertex_props.begin(), - vertex_props.end(), - [&property](const std::pair& p) { - return property(p, "y"); - }); - if (num_y != 1) { - return false; - } - - std::size_t num_z = std::count_if(vertex_props.begin(), - vertex_props.end(), - [&property](const std::pair& p) { - return property(p, "z"); - }); - if (num_z != 1) { - return false; - } - - for (auto& it : vertex_props) { - if (it.first == "diffuse_red") { - it.first = "red"; - } - else if (it.first == "diffuse_green") { - it.first = "green"; - } - else if (it.first == "diffuse_blue") { - it.first = "blue"; - } - } - - // check if valid colors are set - std::size_t num_r = std::count_if(vertex_props.begin(), - vertex_props.end(), - [&property](const std::pair& p) { - return property(p, "red"); - }); - std::size_t num_g = std::count_if(vertex_props.begin(), - vertex_props.end(), - [&property](const std::pair& p) { - return property(p, "green"); - }); - std::size_t num_b = std::count_if(vertex_props.begin(), - vertex_props.end(), - [&property](const std::pair& p) { - return property(p, "blue"); - }); - std::size_t rgb_colors = num_r + num_g + num_b; - if (rgb_colors != 0 && rgb_colors != 3) { - return false; - } - - // only if set per vertex - if (rgb_colors == 3) { - rgb_value = MeshIO::PER_VERTEX; - if (_material) { - _material->binding = MeshIO::PER_VERTEX; - _material->diffuseColor.reserve(v_count); - } - } - - if (format == ascii) { - boost::regex rx_d("(([-+]?[0-9]*)\\.?([0-9]+([eE][-+]?[0-9]+)?))\\s*"); - boost::regex rx_s("\\b([-+]?[0-9]+)\\s*"); - boost::regex rx_u("\\b([0-9]+)\\s*"); - boost::regex rx_f(R"(^\s*3\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s*)"); - boost::smatch what; - - for (std::size_t i = 0; i < v_count && std::getline(input, line); i++) { - // go through the vertex properties - std::map prop_values; - for (const auto& it : vertex_props) { - switch (it.second) { - case int8: - case int16: - case int32: { - if (boost::regex_search(line, what, rx_s)) { - int v {}; - v = boost::lexical_cast(what[1]); - prop_values[it.first] = static_cast(v); - line = line.substr(what[0].length()); - } - else { - return false; - } - } break; - case uint8: - case uint16: - case uint32: { - if (boost::regex_search(line, what, rx_u)) { - int v {}; - v = boost::lexical_cast(what[1]); - prop_values[it.first] = static_cast(v); - line = line.substr(what[0].length()); - } - else { - return false; - } - } break; - case float32: - case float64: { - if (boost::regex_search(line, what, rx_d)) { - double v {}; - v = boost::lexical_cast(what[1]); - prop_values[it.first] = static_cast(v); - line = line.substr(what[0].length()); - } - else { - return false; - } - } break; - default: - return false; - } - } - - Base::Vector3f pt; - pt.x = (prop_values["x"]); - pt.y = (prop_values["y"]); - pt.z = (prop_values["z"]); - meshPoints.push_back(pt); - - if (_material && (rgb_value == MeshIO::PER_VERTEX)) { - float r = (prop_values["red"]) / 255.0F; - float g = (prop_values["green"]) / 255.0F; - float b = (prop_values["blue"]) / 255.0F; - _material->diffuseColor.emplace_back(r, g, b); - } - } - - int f1 {}, f2 {}, f3 {}; - for (std::size_t i = 0; i < f_count && std::getline(input, line); i++) { - if (boost::regex_search(line, what, rx_f)) { - f1 = boost::lexical_cast(what[1]); - f2 = boost::lexical_cast(what[2]); - f3 = boost::lexical_cast(what[3]); - meshFacets.push_back(MeshFacet(f1, f2, f3)); - } - } - } - // binary - else { - Base::InputStream is(input); - if (format == binary_little_endian) { - is.setByteOrder(Base::Stream::LittleEndian); - } - else { - is.setByteOrder(Base::Stream::BigEndian); - } - - for (std::size_t i = 0; i < v_count; i++) { - // go through the vertex properties - std::map prop_values; - for (const auto& it : vertex_props) { - switch (it.second) { - case int8: { - int8_t v {}; - is >> v; - prop_values[it.first] = static_cast(v); - } break; - case uint8: { - uint8_t v {}; - is >> v; - prop_values[it.first] = static_cast(v); - } break; - case int16: { - int16_t v {}; - is >> v; - prop_values[it.first] = static_cast(v); - } break; - case uint16: { - uint16_t v {}; - is >> v; - prop_values[it.first] = static_cast(v); - } break; - case int32: { - int32_t v {}; - is >> v; - prop_values[it.first] = static_cast(v); - } break; - case uint32: { - uint32_t v {}; - is >> v; - prop_values[it.first] = static_cast(v); - } break; - case float32: { - float v {}; - is >> v; - prop_values[it.first] = v; - } break; - case float64: { - double v {}; - is >> v; - prop_values[it.first] = static_cast(v); - } break; - default: - return false; - } - } - - Base::Vector3f pt; - pt.x = (prop_values["x"]); - pt.y = (prop_values["y"]); - pt.z = (prop_values["z"]); - meshPoints.push_back(pt); - - if (_material && (rgb_value == MeshIO::PER_VERTEX)) { - float r = (prop_values["red"]) / 255.0F; - float g = (prop_values["green"]) / 255.0F; - float b = (prop_values["blue"]) / 255.0F; - _material->diffuseColor.emplace_back(r, g, b); - } - } - - unsigned char n {}; - uint32_t f1 {}, f2 {}, f3 {}; - for (std::size_t i = 0; i < f_count; i++) { - is >> n; - if (n == 3) { - is >> f1 >> f2 >> f3; - if (f1 < v_count && f2 < v_count && f3 < v_count) { - meshFacets.push_back(MeshFacet(f1, f2, f3)); - } - for (auto it : face_props) { - switch (it) { - case int8: { - int8_t v {}; - is >> v; - } break; - case uint8: { - uint8_t v {}; - is >> v; - } break; - case int16: { - int16_t v {}; - is >> v; - } break; - case uint16: { - uint16_t v {}; - is >> v; - } break; - case int32: { - int32_t v {}; - is >> v; - } break; - case uint32: { - uint32_t v {}; - is >> v; - } break; - case float32: { - is >> n; - float v {}; - for (unsigned char j = 0; j < n; j++) { - is >> v; - } - } break; - case float64: { - is >> n; - double v {}; - for (unsigned char j = 0; j < n; j++) { - is >> v; - } - } break; - default: - return false; - } - } - } - } - } - - this->_rclMesh.Clear(); // remove all data before - - MeshCleanup meshCleanup(meshPoints, meshFacets); - if (_material) { - meshCleanup.SetMaterial(_material); - } - meshCleanup.RemoveInvalids(); - MeshPointFacetAdjacency meshAdj(meshPoints.size(), meshFacets); - meshAdj.SetFacetNeighbourhood(); - this->_rclMesh.Adopt(meshPoints, meshFacets); - - return true; + ReaderPLY reader(this->_rclMesh, this->_material); + return reader.Load(input); } bool MeshInput::LoadMeshNode(std::istream& input) diff --git a/src/Mod/Mesh/Gui/DlgRegularSolidImp.cpp b/src/Mod/Mesh/Gui/DlgRegularSolidImp.cpp index a250b46b4f00..10e996b5fafb 100644 --- a/src/Mod/Mesh/Gui/DlgRegularSolidImp.cpp +++ b/src/Mod/Mesh/Gui/DlgRegularSolidImp.cpp @@ -118,97 +118,93 @@ void DlgRegularSolidImp::onCreateSolidButtonClicked() { try { Gui::WaitCursor wc; - QString cmd; std::string name; + std::string cmd, name; App::Document* doc = App::GetApplication().getActiveDocument(); if (!doc) { QMessageBox::warning(this, tr("Create %1").arg(ui->comboBox1->currentText()), tr("No active document")); return; } - if (ui->comboBox1->currentIndex() == 0) { // cube - name = doc->getUniqueObjectName("Cube"); - cmd = QString(QLatin1String( - "App.ActiveDocument.addObject(\"Mesh::Cube\",\"%1\")\n" - "App.ActiveDocument.%1.Length=%2\n" - "App.ActiveDocument.%1.Width=%3\n" - "App.ActiveDocument.%1.Height=%4\n")) - .arg(QLatin1String(name.c_str()), - Base::UnitsApi::toNumber(ui->boxLength->value()), - Base::UnitsApi::toNumber(ui->boxWidth->value()), - Base::UnitsApi::toNumber(ui->boxHeight->value())); - } - else if (ui->comboBox1->currentIndex() == 1) { // cylinder - name = doc->getUniqueObjectName("Cylinder"); - cmd = QString(QLatin1String( - "App.ActiveDocument.addObject(\"Mesh::Cylinder\",\"%1\")\n" - "App.ActiveDocument.%1.Radius=%2\n" - "App.ActiveDocument.%1.Length=%3\n" - "App.ActiveDocument.%1.EdgeLength=%4\n" - "App.ActiveDocument.%1.Closed=%5\n" - "App.ActiveDocument.%1.Sampling=%6\n")) - .arg(QLatin1String(name.c_str()), - Base::UnitsApi::toNumber(ui->cylinderRadius->value()), - Base::UnitsApi::toNumber(ui->cylinderLength->value()), - Base::UnitsApi::toNumber(ui->cylinderEdgeLength->value()), - QLatin1String((ui->cylinderClosed->isChecked()?"True":"False"))) - .arg(ui->cylinderCount->value()); - } - else if (ui->comboBox1->currentIndex() == 2) { // cone - name = doc->getUniqueObjectName("Cone"); - cmd = QString(QLatin1String( - "App.ActiveDocument.addObject(\"Mesh::Cone\",\"%1\")\n" - "App.ActiveDocument.%1.Radius1=%2\n" - "App.ActiveDocument.%1.Radius2=%3\n" - "App.ActiveDocument.%1.Length=%4\n" - "App.ActiveDocument.%1.EdgeLength=%5\n" - "App.ActiveDocument.%1.Closed=%6\n" - "App.ActiveDocument.%1.Sampling=%7\n")) - .arg(QLatin1String(name.c_str()), - Base::UnitsApi::toNumber(ui->coneRadius1->value()), - Base::UnitsApi::toNumber(ui->coneRadius2->value()), - Base::UnitsApi::toNumber(ui->coneLength->value()), - Base::UnitsApi::toNumber(ui->coneEdgeLength->value()), - QLatin1String((ui->coneClosed->isChecked()?"True":"False"))) - .arg(ui->coneCount->value()); - } - else if (ui->comboBox1->currentIndex() == 3) { // sphere - name = doc->getUniqueObjectName("Sphere"); - cmd = QString(QLatin1String( - "App.ActiveDocument.addObject(\"Mesh::Sphere\",\"%1\")\n" - "App.ActiveDocument.%1.Radius=%2\n" - "App.ActiveDocument.%1.Sampling=%3\n")) - .arg(QLatin1String(name.c_str()), - Base::UnitsApi::toNumber(ui->sphereRadius->value())) - .arg(ui->sphereCount->value()); - } - else if (ui->comboBox1->currentIndex() == 4) { // ellipsoid - name = doc->getUniqueObjectName("Ellipsoid"); - cmd = QString(QLatin1String( - "App.ActiveDocument.addObject(\"Mesh::Ellipsoid\",\"%1\")\n" - "App.ActiveDocument.%1.Radius1=%2\n" - "App.ActiveDocument.%1.Radius2=%3\n" - "App.ActiveDocument.%1.Sampling=%4\n")) - .arg(QLatin1String(name.c_str()), - Base::UnitsApi::toNumber(ui->ellipsoidRadius1->value()), - Base::UnitsApi::toNumber(ui->ellipsoidRadius2->value())) - .arg(ui->ellipsoidCount->value()); - } - else if (ui->comboBox1->currentIndex() == 5) { // toroid - name = doc->getUniqueObjectName("Torus"); - cmd = QString(QLatin1String( - "App.ActiveDocument.addObject(\"Mesh::Torus\",\"%1\")\n" - "App.ActiveDocument.%1.Radius1=%2\n" - "App.ActiveDocument.%1.Radius2=%3\n" - "App.ActiveDocument.%1.Sampling=%4\n")) - .arg(QLatin1String(name.c_str()), - Base::UnitsApi::toNumber(ui->toroidRadius1->value()), - Base::UnitsApi::toNumber(ui->toroidRadius2->value())) - .arg(ui->toroidCount->value()); + switch (ui->comboBox1->currentIndex()) { + case 0: + name = doc->getUniqueObjectName("Cube"); + cmd = fmt::format( + "App.ActiveDocument.addObject(\"Mesh::Cube\",\"{0}\")\n" + "App.ActiveDocument.{0}.Length={1}\n" + "App.ActiveDocument.{0}.Width={2}\n" + "App.ActiveDocument.{0}.Height={3}\n", name, + Base::UnitsApi::toNumber(ui->boxLength->value()), + Base::UnitsApi::toNumber(ui->boxWidth->value()), + Base::UnitsApi::toNumber(ui->boxHeight->value())); + break; + case 1: + name = doc->getUniqueObjectName("Cylinder"); + cmd = fmt::format( + "App.ActiveDocument.addObject(\"Mesh::Cylinder\",\"{0}\")\n" + "App.ActiveDocument.{0}.Radius={1}\n" + "App.ActiveDocument.{0}.Length={2}\n" + "App.ActiveDocument.{0}.EdgeLength={3}\n" + "App.ActiveDocument.{0}.Closed={4}\n" + "App.ActiveDocument.{0}.Sampling={5}\n", name, + Base::UnitsApi::toNumber(ui->cylinderRadius->value()), + Base::UnitsApi::toNumber(ui->cylinderLength->value()), + Base::UnitsApi::toNumber(ui->cylinderEdgeLength->value()), + ui->cylinderClosed->isChecked() ? "True" : "False", + ui->cylinderCount->value()); + break; + case 2: + name = doc->getUniqueObjectName("Cone"); + cmd = fmt::format( + "App.ActiveDocument.addObject(\"Mesh::Cone\",\"{0}\")\n" + "App.ActiveDocument.{0}.Radius1={1}\n" + "App.ActiveDocument.{0}.Radius2={2}\n" + "App.ActiveDocument.{0}.Length={3}\n" + "App.ActiveDocument.{0}.EdgeLength={4}\n" + "App.ActiveDocument.{0}.Closed={5}\n" + "App.ActiveDocument.{0}.Sampling={6}\n", name, + Base::UnitsApi::toNumber(ui->coneRadius1->value()), + Base::UnitsApi::toNumber(ui->coneRadius2->value()), + Base::UnitsApi::toNumber(ui->coneLength->value()), + Base::UnitsApi::toNumber(ui->coneEdgeLength->value()), + ui->coneClosed->isChecked() ? "True" : "False", + ui->coneCount->value()); + break; + case 3: + name = doc->getUniqueObjectName("Sphere"); + cmd = fmt::format( + "App.ActiveDocument.addObject(\"Mesh::Sphere\",\"{0}\")\n" + "App.ActiveDocument.{0}.Radius={1}\n" + "App.ActiveDocument.{0}.Sampling={2}\n", name, + Base::UnitsApi::toNumber(ui->sphereRadius->value()), + ui->sphereCount->value()); + break; + case 4: + name = doc->getUniqueObjectName("Ellipsoid"); + cmd = fmt::format( + "App.ActiveDocument.addObject(\"Mesh::Ellipsoid\",\"{0}\")\n" + "App.ActiveDocument.{0}.Radius1={1}\n" + "App.ActiveDocument.{0}.Radius2={2}\n" + "App.ActiveDocument.{0}.Sampling={3}\n", name, + Base::UnitsApi::toNumber(ui->ellipsoidRadius1->value()), + Base::UnitsApi::toNumber(ui->ellipsoidRadius2->value()), + ui->ellipsoidCount->value()); + break; + case 5: + name = doc->getUniqueObjectName("Torus"); + cmd = fmt::format( + "App.ActiveDocument.addObject(\"Mesh::Torus\",\"{0}\")\n" + "App.ActiveDocument.{0}.Radius1={1}\n" + "App.ActiveDocument.{0}.Radius2={2}\n" + "App.ActiveDocument.{0}.Sampling={3}\n", name, + Base::UnitsApi::toNumber(ui->toroidRadius1->value()), + Base::UnitsApi::toNumber(ui->toroidRadius2->value()), + ui->toroidCount->value()); + break; } // Execute the Python block QString solid = tr("Create %1").arg(ui->comboBox1->currentText()); Gui::Application::Instance->activeDocument()->openCommand(solid.toUtf8()); - Gui::Command::doCommand(Gui::Command::Doc, (const char*)cmd.toLatin1()); + Gui::Command::doCommand(Gui::Command::Doc, cmd.c_str()); Gui::Application::Instance->activeDocument()->commitCommand(); Gui::Command::doCommand(Gui::Command::Doc, "App.activeDocument().recompute()"); Gui::Command::doCommand(Gui::Command::Gui, "Gui.SendMsgToActiveView(\"ViewFit\")"); diff --git a/src/Mod/OpenSCAD/OpenSCAD2Dgeom.py b/src/Mod/OpenSCAD/OpenSCAD2Dgeom.py index 29128473d382..de7967e9d54b 100644 --- a/src/Mod/OpenSCAD/OpenSCAD2Dgeom.py +++ b/src/Mod/OpenSCAD/OpenSCAD2Dgeom.py @@ -34,13 +34,7 @@ class Overlappingfaces(): def __init__(self,facelist): self.sortedfaces = sorted(facelist,key=(lambda shape: shape.Area),reverse=True) self.builddepdict() - #self.faceindex = {} - #for idx,face in enumerate(self.sortesfaces): - # self.faceindex[face.hashCode()] = idx - -# def __len__(self): -# return len(self.sortedfaces) - + @staticmethod def dofacesoverlapboundbox(bigface,smallface): return bigface.BoundBox.isIntersection(smallface.BoundBox) @@ -59,15 +53,11 @@ def dofacesoverlapproximity(bigface,smallface): @staticmethod def dofacesoverlapboolean(bigface,smallface): - #import FreeCAD,FreeCADGui - #FreeCAD.Console.PrintLog('intersecting %d %d\n'%(bigfacei,smallfacei)) - #FreeCADGui.updateGui() return bigface.common(smallface).Area > 0 def builddepdict(self): import Part import itertools - #isinsidelist = [] self.isinsidedict = {} #for bigface, smallface in itertools.combinations(sortedfaces,2): for bigfacei, smallfacei in\ @@ -85,7 +75,6 @@ def builddepdict(self): self.sortedfaces[bigfacei],\ self.sortedfaces[smallfacei]) if overlap: - #isinsidelist.append((bigfacei,smallfacei)) smallinbig = self.isinsidedict.get(bigfacei,[]) smallinbig.append(smallfacei) if len(smallinbig) == 1: @@ -96,7 +85,6 @@ def finddepth(dict1,faceidx,curdepth=0): if faceidx not in dict1: return curdepth+1 else: - #print(dict1[faceidx],[(finddepth(dict1,childface,curdepth)) for childface in dict1[faceidx]]) return max([(Overlappingfaces.finddepth(dict1,childface,curdepth+1)) for childface in dict1[faceidx]]) def findrootdepth(self): @@ -112,12 +100,6 @@ def hasnoparentstatic(isinsidedict,faceindex): return False return True - #@staticmethod - #def subtreedict(rootface,parantdict): - # '''biuld a subtree dictinary''' - # newdict = parantdict.copy() - # del newdict[rootface] - # return newdict @staticmethod def directchildren(isinsidedict,parent): @@ -132,9 +114,6 @@ def directchildren(isinsidedict,parent): dchildren.append(child) return dchildren - #@staticmethod - #def indirectchildren(isinsidedict,parent): - # return [child for child in isinsidedict.get(parent,[]) if child in isinsidedict] @staticmethod def printtree(isinsidedict,facenum): @@ -188,7 +167,6 @@ def makeshape(self): def removefaces(rfaces): for tfi in directchildren[::-1]: finishedwith.append(tfi) - #del faces[tfi] if tfi in isinsidedict: del isinsidedict[tfi] for key,value in isinsidedict.items(): @@ -207,24 +185,19 @@ def hasnoparent(faceindex): isinsidedict=self.isinsidedict.copy() finishedwith=[] while not all([Overlappingfaces.hasnoparentstatic(isinsidedict,fi) for fi in range(len(faces))]): - #print([(Overlappingfaces.hasnoparentstatic(isinsidedict,fi),\ - #Overlappingfaces.directchildren(isinsidedict,fi)) for fi in range(len(faces))]) for fi in range(len(faces))[::-1]: directchildren = Overlappingfaces.directchildren(isinsidedict,fi) if not directchildren: continue elif len(directchildren) == 1: faces[fi]=faces[fi].cut(faces[directchildren[0]]) - #print(fi,'-' ,directchildren[0], faces[fi],faces[directchildren[0]]) removefaces(directchildren) else: toolface=fusefaces([faces[tfi] for tfi in directchildren]) faces[fi]=faces[fi].cut(toolface) - #print(fi, '- ()', directchildren, [faces[tfi] for tfi in directchildren]) removefaces(directchildren) - #print(fi,directchildren) + faces =[face for index,face in enumerate(faces) if index not in finishedwith] -# return faces return fusefaces(faces) def findConnectedEdges(edgelist,eps=1e-6,debug=False): @@ -232,7 +205,6 @@ def findConnectedEdges(edgelist,eps=1e-6,debug=False): def vertequals(v1,v2,eps=1e-6): '''check two vertices for equality''' - #return all([abs(c1-c2)1) if not w.isClosed(): p0 = w.Vertexes[0].Point p1 = w.Vertexes[-1].Point @@ -389,15 +351,11 @@ def edgestofaces(edges,algo=3,eps=0.001): try: edges2.append(Part.LineSegment(p1,p0).toShape()) w = Part.Wire(edges2) - #w = Part.Wire(fcgeo.sortEdges(edges2)) except OCCError: comp=Part.Compound(edges2) w = comp.connectEdgesToWires(False,eps).Wires[0] facel.append(Part.Face(w)) - #if w.isValid: #debugging - # facel.append(Part.Face(w)) - #else: - # Part.show(w) + if algo is None: return facel elif algo == 1: #stable behavior @@ -425,7 +383,6 @@ def median(v1,v2): except ImportError: #workaround for Version 0.12 from draftlibs.fcgeo import findMidpoint #workaround for Version 0.12 import Part - #edges = sortEdges(edgeslist) print(debuglist) newedges = [] for i in range(len(debuglist)): diff --git a/src/Mod/Part/App/AppPart.cpp b/src/Mod/Part/App/AppPart.cpp index 105076054a9e..c244d033a58f 100644 --- a/src/Mod/Part/App/AppPart.cpp +++ b/src/Mod/Part/App/AppPart.cpp @@ -58,6 +58,7 @@ #include "ConicPy.h" #include "CustomFeature.h" #include "CylinderPy.h" +#include "Datums.h" #include "DatumFeature.h" #include "EllipsePy.h" #include "FaceMaker.h" @@ -534,6 +535,10 @@ PyMOD_INIT_FUNC(Part) Part::GeomSurfaceOfRevolution ::init(); Part::GeomSurfaceOfExtrusion ::init(); Part::Datum ::init(); + Part::DatumPlane ::init(); + Part::DatumLine ::init(); + Part::DatumPoint ::init(); + Part::LocalCoordinateSystem ::init(); // Geometry2d types Part::Geometry2d ::init(); diff --git a/src/Mod/Part/App/AppPartPy.cpp b/src/Mod/Part/App/AppPartPy.cpp index 20d680b364e2..3c5e718f922a 100644 --- a/src/Mod/Part/App/AppPartPy.cpp +++ b/src/Mod/Part/App/AppPartPy.cpp @@ -152,12 +152,17 @@ PartExport std::vector getPyShapes(PyObject *obj) { return ret; } +namespace +{ + struct EdgePoints { gp_Pnt v1, v2; std::list::iterator it; TopoDS_Edge edge; }; +} + PartExport std::list sort_Edges(double tol3d, std::list& edges) { tol3d = tol3d * tol3d; diff --git a/src/Mod/Part/App/AttachExtension.cpp b/src/Mod/Part/App/AttachExtension.cpp index be5cef8b01c7..0aaf11602d62 100644 --- a/src/Mod/Part/App/AttachExtension.cpp +++ b/src/Mod/Part/App/AttachExtension.cpp @@ -411,33 +411,18 @@ void AttachExtension::extensionOnChanged(const App::Property* prop) bool bAttached = false; try{ bAttached = positionBySupport(); - } catch (Base::Exception &e) { + } + catch (Base::Exception &e) { getExtendedObject()->setStatus(App::Error, true); Base::Console().Error("PositionBySupport: %s\n",e.what()); //set error message - how? - } catch (Standard_Failure &e){ + } + catch (Standard_Failure &e){ getExtendedObject()->setStatus(App::Error, true); Base::Console().Error("PositionBySupport: %s\n",e.GetMessageString()); } - // Hide properties when not applicable to reduce user confusion - - eMapMode mmode = eMapMode(this->MapMode.getValue()); - - bool modeIsPointOnCurve = mmode == mmNormalToPath || - mmode == mmFrenetNB || mmode == mmFrenetTN || mmode == mmFrenetTB || - mmode == mmRevolutionSection || mmode == mmConcentric; - - // MapPathParameter is only used if there is a reference to one edge and not edge + vertex - bool hasOneRef = false; - if (_props.attacher && _props.attacher->subnames.size() == 1) { - hasOneRef = true; - } - - this->MapPathParameter.setStatus(App::Property::Status::Hidden, !bAttached || !(modeIsPointOnCurve && hasOneRef)); - this->MapReversed.setStatus(App::Property::Status::Hidden, !bAttached); - this->AttachmentOffset.setStatus(App::Property::Status::Hidden, !bAttached); - getPlacement().setReadOnly(bAttached && mmode != mmTranslate); //for mmTranslate, orientation should remain editable even when attached. + updateSinglePropertyStatus(bAttached); } if (prop == &AttacherEngine) { AttacherType.setValue(enumToClass(AttacherEngine.getValueAsString())); @@ -508,27 +493,9 @@ void AttachExtension::onExtendedDocumentRestored() restoreAttacherEngine(this); - // Hide properties when not applicable to reduce user confusion bool bAttached = positionBySupport(); - eMapMode mmode = eMapMode(this->MapMode.getValue()); - bool modeIsPointOnCurve = - (mmode == mmNormalToPath || - mmode == mmFrenetNB || - mmode == mmFrenetTN || - mmode == mmFrenetTB || - mmode == mmRevolutionSection || - mmode == mmConcentric); - - // MapPathParameter is only used if there is a reference to one edge and not edge + vertex - bool hasOneRef = false; - if (_props.attacher && _props.attacher->subnames.size() == 1) { - hasOneRef = true; - } - this->MapPathParameter.setStatus(App::Property::Status::Hidden, !bAttached || !(modeIsPointOnCurve && hasOneRef)); - this->MapReversed.setStatus(App::Property::Status::Hidden, !bAttached); - this->AttachmentOffset.setStatus(App::Property::Status::Hidden, !bAttached); - getPlacement().setReadOnly(bAttached && mmode != mmTranslate); //for mmTranslate, orientation should remain editable even when attached. + updateSinglePropertyStatus(bAttached); } catch (Base::Exception&) { } @@ -536,7 +503,7 @@ void AttachExtension::onExtendedDocumentRestored() } } -void AttachExtension::updatePropertyStatus(bool bAttached, bool base) +void AttachExtension::updateSinglePropertyStatus(bool bAttached, bool base) { auto& props = base ? this->_baseProps : this->_props; if (!props.mapMode) { @@ -550,12 +517,9 @@ void AttachExtension::updatePropertyStatus(bool bAttached, bool base) || mmode == mmFrenetTB || mmode == mmRevolutionSection || mmode == mmConcentric); // MapPathParameter is only used if there is a reference to one edge and not edge + vertex - bool hasOneRef = false; - if (props.attacher && props.attacher->subnames.size() == 1) { - hasOneRef = true; - } - props.mapPathParameter->setStatus(App::Property::Status::Hidden, - !bAttached || !(modeIsPointOnCurve && hasOneRef)); + bool hasOneRef = props.attacher && props.attacher->subnames.size() == 1; + + props.mapPathParameter->setStatus(App::Property::Status::Hidden, !bAttached || !(modeIsPointOnCurve && hasOneRef)); props.mapReversed->setStatus(App::Property::Status::Hidden, !bAttached); if (base) { @@ -564,11 +528,18 @@ void AttachExtension::updatePropertyStatus(bool bAttached, bool base) else { this->AttachmentOffset.setStatus(App::Property::Status::Hidden, !bAttached); if (getExtendedContainer()) { - getPlacement().setReadOnly( - bAttached && mmode != mmTranslate); // for mmTranslate, orientation should remain - // editable even when attached. + // for mmTranslate, orientation should remain editable even when attached. + getPlacement().setReadOnly(bAttached && mmode != mmTranslate); } - updatePropertyStatus(bAttached, true); + } +} + +void AttachExtension::updatePropertyStatus(bool bAttached, bool base) +{ + updateSinglePropertyStatus(bAttached, base); + + if (!base) { + updateSinglePropertyStatus(bAttached, true); } } diff --git a/src/Mod/Part/App/AttachExtension.h b/src/Mod/Part/App/AttachExtension.h index e2c3f480d130..3418de74aecb 100644 --- a/src/Mod/Part/App/AttachExtension.h +++ b/src/Mod/Part/App/AttachExtension.h @@ -35,7 +35,6 @@ #include #include "Attacher.h" -#include "PartFeature.h" namespace Part @@ -146,7 +145,10 @@ class PartExport AttachExtension: public App::DocumentObjectExtension public: void updateAttacherVals(bool base = false) const; + // This update both _props and _baseProps if base = false void updatePropertyStatus(bool attached, bool base = false); + // This update only _props if base = false + void updateSinglePropertyStatus(bool attached, bool base = false); private: struct _Properties: Properties diff --git a/src/Mod/Part/App/Attacher.cpp b/src/Mod/Part/App/Attacher.cpp index b452fd90f46d..f3800133e6e7 100644 --- a/src/Mod/Part/App/Attacher.cpp +++ b/src/Mod/Part/App/Attacher.cpp @@ -27,6 +27,7 @@ # include # include # include +# include # include # include # include @@ -300,7 +301,8 @@ Base::Placement AttachEngine::placementFactory(const gp_Dir &ZAxis, gp_Ax3 ax3;//OCC representation of the final placement if (!makeYVertical) { ax3 = gp_Ax3(Origin, ZAxis, XAxis); - } else if (!makeLegacyFlatFaceOrientation) { + } + else if (!makeLegacyFlatFaceOrientation) { //align Y along Z, if possible gp_Vec YAxis(0.0,0.0,1.0); XAxis = YAxis.Crossed(gp_Vec(ZAxis)); @@ -309,7 +311,8 @@ Base::Placement AttachEngine::placementFactory(const gp_Dir &ZAxis, XAxis = (gp_Vec(1,0,0)*ZAxis.Z()).Normalized(); } ax3 = gp_Ax3(Origin, ZAxis, XAxis); - } else if (makeLegacyFlatFaceOrientation) { + } + else if (makeLegacyFlatFaceOrientation) { //find out, to which axis of support Normal is closest to. //The result will be written into pos variable (0..2 = X..Z) if (!placeOfRef) @@ -385,13 +388,11 @@ void AttachEngine::suggestMapModes(SuggestResult &result) const result.message = SuggestResult::srLinkBroken; result.bestFitMode = mmDeactivated; - - std::vector parts; std::vector shapes; std::vector shapeStorage; std::vector typeStr; try{ - readLinks(getRefObjects(),subnames, parts, shapes, shapeStorage, typeStr); + readLinks(getRefObjects(),subnames, shapes, shapeStorage, typeStr); } catch (Base::Exception &err) { result.references_Types = typeStr; result.message = SuggestResult::srLinkBroken; @@ -577,11 +578,10 @@ eRefType AttachEngine::getShapeType(const App::DocumentObject *obj, const std::s //const_cast is worth here, to keep obj argument const. We are not going to write anything to obj through this temporary link. tmpLink.setValue(const_cast(obj), subshape.c_str()); - std::vector parts; std::vector shapes; std::vector copiedShapeStorage; std::vector types; - readLinks(tmpLink.getValues(),tmpLink.getSubValues(), parts, shapes, copiedShapeStorage, types); + readLinks(tmpLink.getValues(), tmpLink.getSubValues(), shapes, copiedShapeStorage, types); assert(types.size() == 1); return types[0]; @@ -814,105 +814,79 @@ GProp_GProps AttachEngine::getInertialPropsOfShape(const std::vector &objs, - const std::vector &sub, - std::vector &geofs, +void AttachEngine::readLinks(const std::vector& objs, + const std::vector &subs, std::vector &shapes, std::vector &storage, std::vector &types) { - geofs.resize(objs.size()); storage.reserve(objs.size()); shapes.resize(objs.size()); types.resize(objs.size()); for (std::size_t i = 0; i < objs.size(); i++) { - if (!objs[i]->getTypeId().isDerivedFrom(App::GeoFeature::getClassTypeId())) { - FC_THROWM(AttachEngineException, - "AttachEngine3D: attached to a non App::GeoFeature '" - << objs[i]->getNameInDocument() << "'"); - } auto* geof = dynamic_cast(objs[i]); - geofs[i] = geof; - Part::TopoShape shape; - if (geof->isDerivedFrom(App::Plane::getClassTypeId())) { - // obtain Z axis and origin of placement - Base::Vector3d norm; - geof->Placement.getValue().getRotation().multVec(Base::Vector3d(0.0, 0.0, 1.0), norm); - Base::Vector3d org; - geof->Placement.getValue().multVec(Base::Vector3d(), org); - // make shape - an local-XY plane infinite face - gp_Pln plane = gp_Pln(gp_Pnt(org.x, org.y, org.z), gp_Dir(norm.x, norm.y, norm.z)); - TopoDS_Shape myShape = BRepBuilderAPI_MakeFace(plane).Shape(); - myShape.Infinite(true); - storage.emplace_back(myShape); - shapes[i] = &(storage[storage.size() - 1]); - } - else if (geof->isDerivedFrom(App::Line::getClassTypeId())) { - // obtain X axis and origin of placement - // note an inconsistency: App::Line is along local X, PartDesign::DatumLine is along - // local Z. - Base::Vector3d dir; - geof->Placement.getValue().getRotation().multVec(Base::Vector3d(1.0, 0.0, 0.0), dir); - Base::Vector3d org; - geof->Placement.getValue().multVec(Base::Vector3d(), org); - // make shape - an infinite line along local X axis - gp_Lin line = gp_Lin(gp_Pnt(org.x, org.y, org.z), gp_Dir(dir.x, dir.y, dir.z)); - TopoDS_Shape myShape = BRepBuilderAPI_MakeEdge(line).Shape(); - myShape.Infinite(true); - storage.emplace_back(myShape); - shapes[i] = &(storage[storage.size() - 1]); - } - else { - try { - shape = Part::Feature::getTopoShape(geof, sub[i].c_str(), true); - for (;;) { - if (shape.isNull()) { - FC_THROWM(AttachEngineException, - "AttachEngine3D: subshape not found " - << objs[i]->getNameInDocument() << '.' << sub[i]); - } - if (shape.shapeType() != TopAbs_COMPOUND - || shape.countSubShapes(TopAbs_SHAPE) != 1) { - break; - } - // auto extract the single sub-shape from a compound - shape = shape.getSubTopoShape(TopAbs_SHAPE, 1); - } - storage.emplace_back(shape.getShape()); - } - catch (Standard_Failure& e) { + if (!geof) { + // Accept App::Links to GeoFeatures + geof = dynamic_cast(objs[i]->getLinkedObject()); + if (!geof) { FC_THROWM(AttachEngineException, - "AttachEngine3D: subshape not found " << objs[i]->getNameInDocument() - << '.' << sub[i] << std::endl - << e.GetMessageString()); + "AttachEngine3D: attached to a non App::GeoFeature '" << objs[i]->getNameInDocument() << "'"); } - catch (Base::CADKernelError& e) { - FC_THROWM(AttachEngineException, - "AttachEngine3D: subshape not found " << objs[i]->getNameInDocument() - << '.' << sub[i] << std::endl - << e.what()); - } - if (storage.back().IsNull()) { - FC_THROWM(AttachEngineException, - "AttachEngine3D: null subshape " << objs[i]->getNameInDocument() << '.' - << sub[i]); + } + TopoDS_Shape myShape; + + try { + // getTopoShape support fully qualified subnames and should return shape with correct + // global placement. + Part::TopoShape shape = Part::Feature::getTopoShape(objs[i], subs[i].c_str(), true); + for (;;) { + if (shape.isNull()) { + FC_THROWM(AttachEngineException, + "AttachEngine3D: subshape not found " + << objs[i]->getNameInDocument() << '.' << subs[i]); + } + if (shape.shapeType() != TopAbs_COMPOUND + || shape.countSubShapes(TopAbs_SHAPE) != 1) { + break; + } + // auto extract the single sub-shape from a compound + shape = shape.getSubTopoShape(TopAbs_SHAPE, 1); } - shapes[i] = &(storage.back()); + + myShape = shape.getShape(); + } + catch (Standard_Failure& e) { + FC_THROWM(AttachEngineException, + "AttachEngine3D: subshape not found " << objs[i]->getNameInDocument() + << '.' << subs[i] << std::endl + << e.GetMessageString()); + } + catch (Base::CADKernelError& e) { + FC_THROWM(AttachEngineException, + "AttachEngine3D: subshape not found " << objs[i]->getNameInDocument() + << '.' << subs[i] << std::endl + << e.what()); } + if (myShape.IsNull()) { + FC_THROWM(AttachEngineException, + "AttachEngine3D: null subshape " << objs[i]->getNameInDocument() << '.' + << subs[i]); + } + + storage.emplace_back(myShape); + shapes[i] = &(storage.back()); // FIXME: unpack single-child compounds here? Compounds are not used so far, so it should be // considered later, when the need arises. types[i] = getShapeType(*(shapes[i])); - if (sub[i].length() == 0) { + if (subs[i].length() == 0) { types[i] = eRefType(types[i] | rtFlagHasPlacement); } } - } void AttachEngine::throwWrongMode(eMapMode mmode) @@ -977,6 +951,7 @@ Base::Placement AttachEngine::calculateAttachedPlacement(const Base::Placement& for (auto obj : objs) { ++i; auto& sub = subnames[i]; + obj = obj->getSubObject(sub.c_str()); auto& shadow = shadowSubs[i]; if (shadow.empty() || !Data::hasMissingElement(sub.c_str())) { continue; @@ -1165,20 +1140,20 @@ AttachEngine3D::_calculateAttachedPlacement(const std::vector parts; std::vector shapes; std::vector copiedShapeStorage; std::vector types; - readLinks(objs, subs, parts, shapes, copiedShapeStorage, types); + readLinks(objs, subs, shapes, copiedShapeStorage, types); - if (parts.empty()) { + if (shapes.empty()) { throw ExceptionCancel(); } // common stuff for all map modes - gp_Pnt refOrg(0.0, 0.0, 0.0); // origin of linked object - Base::Placement Place = parts[0]->Placement.getValue(); - refOrg = gp_Pnt(Place.getPosition().x, Place.getPosition().y, Place.getPosition().z); + App::DocumentObject* subObj = objs[0]->getSubObject(subs[0].c_str()); + Base::Placement Place = App::GeoFeature::getGlobalPlacement(subObj, objs[0], subs[0]); + Base::Vector3d vec = Place.getPosition(); + gp_Pnt refOrg = gp_Pnt(vec.x, vec.y, vec.z); // origin of linked object // variables to derive the actual placement. // They are to be set, depending on the mode: @@ -2108,21 +2083,21 @@ AttachEngineLine::_calculateAttachedPlacement(const std::vector parts; std::vector shapes; std::vector copiedShapeStorage; std::vector types; - readLinks(objs, subs, parts, shapes, copiedShapeStorage, types); + readLinks(objs, subs, shapes, copiedShapeStorage, types); - if (parts.empty()) { + if (shapes.empty()) { throw ExceptionCancel(); } // common stuff for all map modes - gp_Pnt refOrg(0.0, 0.0, 0.0); - Base::Placement Place = parts[0]->Placement.getValue(); - refOrg = gp_Pnt(Place.getPosition().x, Place.getPosition().y, Place.getPosition().z); + App::DocumentObject* subObj = objs[0]->getSubObject(subs[0].c_str()); + Base::Placement Place = App::GeoFeature::getGlobalPlacement(subObj, objs[0], subs[0]); + Base::Vector3d vec = Place.getPosition(); + gp_Pnt refOrg = gp_Pnt(vec.x, vec.y, vec.z); // origin of linked object // variables to derive the actual placement. // They are to be set, depending on the mode: @@ -2475,13 +2450,12 @@ AttachEnginePoint::_calculateAttachedPlacement(const std::vector parts; std::vector shapes; std::vector copiedShapeStorage; std::vector types; - readLinks(objs, subs, parts, shapes, copiedShapeStorage, types); + readLinks(objs, subs, shapes, copiedShapeStorage, types); - if (parts.empty()) { + if (shapes.empty()) { throw ExceptionCancel(); } diff --git a/src/Mod/Part/App/Attacher.h b/src/Mod/Part/App/Attacher.h index 4a16f318b040..dd0c8ba569f3 100644 --- a/src/Mod/Part/App/Attacher.h +++ b/src/Mod/Part/App/Attacher.h @@ -429,7 +429,7 @@ class PartExport AttachEngine : public Base::BaseClass return ret; } static void readLinks(const std::vector &objs, - const std::vector &subs, std::vector &geofs, + const std::vector &subs, std::vector& shapes, std::vector &storage, std::vector &types); diff --git a/src/Mod/Part/App/CMakeLists.txt b/src/Mod/Part/App/CMakeLists.txt index ecd2760d8dc5..71bedcac6552 100644 --- a/src/Mod/Part/App/CMakeLists.txt +++ b/src/Mod/Part/App/CMakeLists.txt @@ -213,6 +213,8 @@ SET(Features_SRCS CustomFeature.h BodyBase.h BodyBase.cpp + Datums.cpp + Datums.h DatumFeature.cpp DatumFeature.h AttachExtension.h diff --git a/src/Mod/Part/App/Datums.cpp b/src/Mod/Part/App/Datums.cpp new file mode 100644 index 000000000000..1fd53ce6697e --- /dev/null +++ b/src/Mod/Part/App/Datums.cpp @@ -0,0 +1,63 @@ +/*************************************************************************** + * Copyright (c) 2024 Ondsel (PL Boyer) * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + +#include "PreCompiled.h" + +#include "Datums.h" + + +using namespace Part; +using namespace Attacher; + +PROPERTY_SOURCE_WITH_EXTENSIONS(Part::DatumPlane, App::Plane) + +Part::DatumPlane::DatumPlane() +{ + AttachExtension::initExtension(this); + this->setAttacher(new AttachEnginePlane); +} + + +PROPERTY_SOURCE_WITH_EXTENSIONS(Part::DatumLine, App::Line) + +Part::DatumLine::DatumLine() +{ + AttachExtension::initExtension(this); + this->setAttacher(new AttachEngineLine); +} + + +PROPERTY_SOURCE_WITH_EXTENSIONS(Part::DatumPoint, App::Point) + +Part::DatumPoint::DatumPoint() +{ + AttachExtension::initExtension(this); + this->setAttacher(new AttachEnginePoint); +} + + +PROPERTY_SOURCE_WITH_EXTENSIONS(Part::LocalCoordinateSystem, App::LocalCoordinateSystem) + +Part::LocalCoordinateSystem::LocalCoordinateSystem() +{ + AttachExtension::initExtension(this); +} diff --git a/src/Mod/Part/App/Datums.h b/src/Mod/Part/App/Datums.h new file mode 100644 index 000000000000..06f35c865fbb --- /dev/null +++ b/src/Mod/Part/App/Datums.h @@ -0,0 +1,84 @@ +/*************************************************************************** + * Copyright (c) 2024 Ondsel (PL Boyer) * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + +#ifndef PART_DATUMS_H +#define PART_DATUMS_H + +#include + +#include "AttachExtension.h" + +namespace Part +{ + +class PartExport DatumPlane : public App::Plane, public AttachExtension +{ + PROPERTY_HEADER_WITH_EXTENSIONS(Part::DatumPlane); + +public: + DatumPlane(); + ~DatumPlane() override = default; + const char* getViewProviderName() const override { + return "PartGui::ViewProviderPlane"; + } +}; + +class PartExport DatumLine : public App::Line, public AttachExtension +{ + PROPERTY_HEADER_WITH_EXTENSIONS(Part::DatumLine); + +public: + DatumLine(); + ~DatumLine() override = default; + const char* getViewProviderName() const override { + return "PartGui::ViewProviderLine"; + } +}; + +class PartExport DatumPoint : public App::Point, public AttachExtension +{ + PROPERTY_HEADER_WITH_EXTENSIONS(Part::DatumPoint); + +public: + DatumPoint(); + ~DatumPoint() override = default; + const char* getViewProviderName() const override { + return "PartGui::ViewProviderPoint"; + } +}; + +class PartExport LocalCoordinateSystem : public App::LocalCoordinateSystem, public AttachExtension +{ + PROPERTY_HEADER_WITH_EXTENSIONS(Part::LocalCoordinateSystem); + +public: + LocalCoordinateSystem(); + ~LocalCoordinateSystem() override = default; + const char* getViewProviderName() const override { + return "PartGui::ViewProviderLCS"; + } +}; + +} //namespace Part + + +#endif // PART_DATUMS_H diff --git a/src/Mod/Part/App/FCBRepAlgoAPI_BooleanOperation.cpp b/src/Mod/Part/App/FCBRepAlgoAPI_BooleanOperation.cpp index 96af04810717..d18606ce1600 100644 --- a/src/Mod/Part/App/FCBRepAlgoAPI_BooleanOperation.cpp +++ b/src/Mod/Part/App/FCBRepAlgoAPI_BooleanOperation.cpp @@ -56,7 +56,7 @@ FCBRepAlgoAPI_BooleanOperation::FCBRepAlgoAPI_BooleanOperation(const TopoDS_Shap SetRunParallel(Standard_True); SetNonDestructive(Standard_True); } - + void FCBRepAlgoAPI_BooleanOperation::setAutoFuzzy() { FCBRepAlgoAPIHelper::setAutoFuzzy(this); diff --git a/src/Mod/Part/App/MeasureClient.cpp b/src/Mod/Part/App/MeasureClient.cpp index 2239b9865a4d..c6ddb5fba6e5 100644 --- a/src/Mod/Part/App/MeasureClient.cpp +++ b/src/Mod/Part/App/MeasureClient.cpp @@ -318,7 +318,7 @@ MeasureAreaInfoPtr MeasureAreaHandler(const App::SubObjectT& subject) BRepGProp::SurfaceProperties(shape, gprops); auto origin = gprops.CentreOfMass(); - // TODO: Center of Mass might not lie on the surface, somehow snap to the closest point on the surface? + // TODO: Center of Mass might not lie on the surface, somehow snap to the closest point on the surface? Base::Placement placement(Base::Vector3d(origin.X(), origin.Y(), origin.Z()), Base::Rotation()); return std::make_shared(true, getFaceArea(shape), placement); @@ -340,7 +340,7 @@ MeasurePositionInfoPtr MeasurePositionHandler(const App::SubObjectT& subject) return std::make_shared(false, Base::Vector3d()); } - TopoDS_Vertex vertex = TopoDS::Vertex(shape); + TopoDS_Vertex vertex = TopoDS::Vertex(shape); auto point = BRep_Tool::Pnt(vertex); return std::make_shared( true, Base::Vector3d(point.X(), point.Y(), point.Z())); } @@ -365,11 +365,11 @@ MeasureAngleInfoPtr MeasureAngleHandler(const App::SubObjectT& subject) Base::Vector3d position; if (sType == TopAbs_FACE) { TopoDS_Face face = TopoDS::Face(shape); - + GProp_GProps gprops; BRepGProp::SurfaceProperties(face, gprops); vec = gprops.CentreOfMass(); - + } else if (sType == TopAbs_EDGE) { TopoDS_Edge edge = TopoDS::Edge(shape); diff --git a/src/Mod/Part/App/MeasureInfo.h b/src/Mod/Part/App/MeasureInfo.h index 678dd9e1d51d..30482a1b8986 100644 --- a/src/Mod/Part/App/MeasureInfo.h +++ b/src/Mod/Part/App/MeasureInfo.h @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: LGPL-2.0-or-later +// SPDX-License-Identifier: LGPL-2.1-or-later /*************************************************************************** * Copyright (c) 2024 wandererfan * @@ -138,7 +138,7 @@ class PartExport MeasureRadiusInfo : public MeasureInfo { //! callback registrations // TODO: is there more that one place that GeometryHandler is defined? using GeometryHandler = std::function; - + class PartExport CallbackRegistrationRecord { public: @@ -146,7 +146,7 @@ class PartExport CallbackRegistrationRecord CallbackRegistrationRecord(const std::string& module, const std::string& measureType, GeometryHandler callback) : m_module(module), m_measureType(measureType), m_callback(callback) { } - + std::string m_module; std::string m_measureType; GeometryHandler m_callback; diff --git a/src/Mod/Part/App/PartFeature.cpp b/src/Mod/Part/App/PartFeature.cpp index 48997300d413..46514b035ee3 100644 --- a/src/Mod/Part/App/PartFeature.cpp +++ b/src/Mod/Part/App/PartFeature.cpp @@ -81,6 +81,8 @@ using namespace Part; namespace sp = std::placeholders; +constexpr const int MaterialPrecision = 6; + FC_LOG_LEVEL_INIT("Part",true,true) PROPERTY_SOURCE(Part::Feature, App::GeoFeature) @@ -91,33 +93,6 @@ Feature::Feature() ADD_PROPERTY(Shape, (TopoDS_Shape())); auto mat = Materials::MaterialManager::defaultMaterial(); ADD_PROPERTY(ShapeMaterial, (*mat)); - - // Read only properties based on the material - static const char* group = "PhysicalProperties"; - ADD_PROPERTY_TYPE(MaterialName, - (""), - group, - static_cast(App::Prop_ReadOnly | App::Prop_Output - | App::Prop_NoRecompute | App::Prop_NoPersist), - "Feature material"); - ADD_PROPERTY_TYPE(Density, - (0.0), - group, - static_cast(App::Prop_ReadOnly | App::Prop_Output - | App::Prop_NoRecompute | App::Prop_NoPersist), - "Feature density"); - ADD_PROPERTY_TYPE(Mass, - (0.0), - group, - static_cast(App::Prop_ReadOnly | App::Prop_Output - | App::Prop_NoRecompute | App::Prop_NoPersist), - "Feature mass"); - ADD_PROPERTY_TYPE(Volume, - (1.0), - group, - static_cast(App::Prop_ReadOnly | App::Prop_Output - | App::Prop_NoRecompute | App::Prop_NoPersist), - "Feature volume"); } Feature::~Feature() = default; @@ -365,7 +340,7 @@ App::ElementNamePair Feature::getExportElementName(TopoShape shape, // find it by matching either planes for faces or lines for edges. auto searchShape = this->Shape.getShape(); // If we're still out at a Shell, Solid, CompSolid, or Compound drill in - while (searchShape.getShape().ShapeType() < TopAbs_FACE ) { + while (!searchShape.getShape().IsNull() && searchShape.getShape().ShapeType() < TopAbs_FACE ) { auto shapes = searchShape.getSubTopoShapes(); if ( shapes.empty() ) // No more subshapes, so don't continue break; @@ -1018,7 +993,7 @@ static TopoShape _getTopoShape(const App::DocumentObject* obj, if (linked->isDerivedFrom(App::Line::getClassTypeId())) { static TopoDS_Shape _shape; if (_shape.IsNull()) { - BRepBuilderAPI_MakeEdge builder(gp_Lin(gp_Pnt(0, 0, 0), gp_Dir(1, 0, 0))); + BRepBuilderAPI_MakeEdge builder(gp_Lin(gp_Pnt(0, 0, 0), gp_Dir(0, 0, 1))); _shape = builder.Shape(); _shape.Infinite(Standard_True); } @@ -1076,6 +1051,7 @@ static TopoShape _getTopoShape(const App::DocumentObject* obj, shape = TopoShape(tag, hasher, _shape); } } + if (!shape.isNull()) { shape.transformShape(mat * linkMat, false, true); return shape; @@ -1524,41 +1500,11 @@ void Feature::onChanged(const App::Property* prop) } } } - updatePhysicalProperties(); - } else if (prop == &this->ShapeMaterial) { - updatePhysicalProperties(); } GeoFeature::onChanged(prop); } -void Feature::updatePhysicalProperties() -{ - MaterialName.setValue(ShapeMaterial.getValue().getName().toStdString()); - if (ShapeMaterial.getValue().hasPhysicalProperty(QString::fromLatin1("Density"))) { - Density.setValue(ShapeMaterial.getValue() - .getPhysicalQuantity(QString::fromLatin1("Density")) - .getValue()); - } else { - Base::Console().Log("Density is undefined\n"); - Density.setValue(0.0); - } - - auto topoShape = Shape.getValue(); - if (!topoShape.IsNull()) { - GProp_GProps props; - BRepGProp::VolumeProperties(topoShape, props); - Volume.setValue(props.Mass()); - Mass.setValue(Volume.getValue() * Density.getValue()); - } else { - // No shape - Base::Console().Log("No shape defined\n"); - Volume.setValue(0.0); - Mass.setValue(0.0); - } -} - - const std::vector& Feature::searchElementCache(const std::string& element, Data::SearchOptions options, double tol, diff --git a/src/Mod/Part/App/PartFeature.h b/src/Mod/Part/App/PartFeature.h index 4311fe2be27b..c865f0ab4c1c 100644 --- a/src/Mod/Part/App/PartFeature.h +++ b/src/Mod/Part/App/PartFeature.h @@ -25,7 +25,6 @@ #include #include -#include #include #include @@ -61,12 +60,6 @@ class PartExport Feature : public App::GeoFeature PropertyPartShape Shape; Materials::PropertyMaterial ShapeMaterial; - // Convenience properties set when material or shape changes - App::PropertyString MaterialName; - App::PropertyDensity Density; - App::PropertyMass Mass; - App::PropertyVolume Volume; - /** @name methods override feature */ //@{ short mustExecute() const override; @@ -179,9 +172,6 @@ class PartExport Feature : public App::GeoFeature void copyMaterial(Feature* feature); void copyMaterial(App::DocumentObject* link); - /// Update the mass and volume properties - void updatePhysicalProperties(); - void registerElementCache(const std::string &prefix, PropertyPartShape *prop); /** Helper function to obtain mapped and indexed element name from a shape diff --git a/src/Mod/Part/App/ShapeFix/ShapeFix_FixSmallFacePy.xml b/src/Mod/Part/App/ShapeFix/ShapeFix_FixSmallFacePy.xml index de33434624c2..c13a42057dbc 100644 --- a/src/Mod/Part/App/ShapeFix/ShapeFix_FixSmallFacePy.xml +++ b/src/Mod/Part/App/ShapeFix/ShapeFix_FixSmallFacePy.xml @@ -78,7 +78,7 @@ - Fixes issues in the overall geometric shape. + Fixes issues in the overall geometric shape. This function likely encapsulates higher-level fixes that involve multiple faces or elements. diff --git a/src/Mod/Part/App/TopoShapeExpansion.cpp b/src/Mod/Part/App/TopoShapeExpansion.cpp index 13e6a1ce258c..31f4f7010580 100644 --- a/src/Mod/Part/App/TopoShapeExpansion.cpp +++ b/src/Mod/Part/App/TopoShapeExpansion.cpp @@ -3119,6 +3119,9 @@ TopoShape& TopoShape::makeElementWires(const std::vector& shapes, return makeElementCompound(wires, nullptr, SingleShapeCompoundCreationPolicy::returnShape); } +namespace +{ + struct EdgePoints { @@ -3145,6 +3148,8 @@ struct EdgePoints } }; +} + TopoShape TopoShape::reverseEdge(const TopoShape& edge) { Standard_Real first = NAN; @@ -4625,7 +4630,7 @@ class MyRefineMaker: public BRepBuilderAPI_RefineModel if (it.Key().IsNull()) { continue; } - mapper.populate(MappingStatus::Generated, it.Key(), it.Value()); + mapper.populate(MappingStatus::Modified, it.Key(), it.Value()); } } }; diff --git a/src/Mod/Part/App/TopoShapePy.xml b/src/Mod/Part/App/TopoShapePy.xml index 96c9ef7aa0ac..88a4a1692272 100644 --- a/src/Mod/Part/App/TopoShapePy.xml +++ b/src/Mod/Part/App/TopoShapePy.xml @@ -898,7 +898,7 @@ ShapeType is interpreted as in the method getTolerance Determines which shapes have a tolerance within a given interval -inTolerance(value, [ShapeType=Shape]) -> ShapeList +inTolerance(valmin, valmax, [ShapeType=Shape]) -> ShapeList -- ShapeType is interpreted as in the method getTolerance diff --git a/src/Mod/Part/BOPTools/BOPFeatures.py b/src/Mod/Part/BOPTools/BOPFeatures.py index a1204b278eda..40bf5ca21685 100644 --- a/src/Mod/Part/BOPTools/BOPFeatures.py +++ b/src/Mod/Part/BOPTools/BOPFeatures.py @@ -108,7 +108,15 @@ def copy_visual_attributes(self, target, source): displayMode = source.ViewObject.DisplayMode src = source while displayMode == "Link": - src = src.LinkedObject + if getattr(src, "LinkedObject", None): + src = src.LinkedObject + elif getattr(src, "Base", None): + # Draft Link array + src = src.Base + else: + break + if not hasattr(src, "ViewObject"): + break displayMode = src.ViewObject.DisplayMode if displayMode in target.ViewObject.getEnumerationsOfProperty("DisplayMode"): target.ViewObject.DisplayMode = displayMode diff --git a/src/Mod/Part/BOPTools/JoinFeatures.py b/src/Mod/Part/BOPTools/JoinFeatures.py index 2406e889d0e3..0d67815899c5 100644 --- a/src/Mod/Part/BOPTools/JoinFeatures.py +++ b/src/Mod/Part/BOPTools/JoinFeatures.py @@ -139,7 +139,7 @@ def __init__(self,vobj): vobj.Proxy = self def getIcon(self): - return getIconPath("Part_JoinConnect.svg") + return ":/icons/booleans/Part_JoinConnect.svg" def attach(self, vobj): self.ViewObject = vobj @@ -250,7 +250,7 @@ def __init__(self,vobj): vobj.Proxy = self def getIcon(self): - return getIconPath("Part_JoinEmbed.svg") + return ":/icons/booleans/Part_JoinEmbed.svg" def attach(self, vobj): self.ViewObject = vobj @@ -344,7 +344,7 @@ def __init__(self,vobj): vobj.Proxy = self def getIcon(self): - return getIconPath("Part_JoinCutout.svg") + return ":/icons/booleans/Part_JoinCutout.svg" def attach(self, vobj): self.ViewObject = vobj diff --git a/src/Mod/Part/BOPTools/SplitFeatures.py b/src/Mod/Part/BOPTools/SplitFeatures.py index 699a94aeef5a..affb0cbcc4ae 100644 --- a/src/Mod/Part/BOPTools/SplitFeatures.py +++ b/src/Mod/Part/BOPTools/SplitFeatures.py @@ -94,7 +94,7 @@ def __init__(self,vobj): vobj.Proxy = self def getIcon(self): - return getIconPath("Part_BooleanFragments.svg") + return ":/icons/booleans/Part_BooleanFragments.svg" def attach(self, vobj): self.ViewObject = vobj @@ -252,7 +252,7 @@ def __init__(self,vobj): vobj.Proxy = self def getIcon(self): - return getIconPath("Part_Slice.svg") + return ":/icons/booleans/Part_Slice.svg" def attach(self, vobj): self.ViewObject = vobj @@ -432,7 +432,7 @@ def __init__(self,vobj): vobj.Proxy = self def getIcon(self): - return getIconPath("Part_XOR.svg") + return ":/icons/booleans/Part_XOR.svg" def attach(self, vobj): self.ViewObject = vobj diff --git a/src/Mod/Part/BOPTools/ToleranceFeatures.py b/src/Mod/Part/BOPTools/ToleranceFeatures.py index 7e46d1e2fd8d..ab45acc236c9 100644 --- a/src/Mod/Part/BOPTools/ToleranceFeatures.py +++ b/src/Mod/Part/BOPTools/ToleranceFeatures.py @@ -145,7 +145,7 @@ def __init__(self,vobj): vobj.Proxy = self def getIcon(self): - return getIconPath("preferences-part_design.svg") + return ":/icons/preferences-part_design.svg" def attach(self, vobj): self.ViewObject = vobj diff --git a/src/Mod/Part/CompoundTools/CompoundFilter.py b/src/Mod/Part/CompoundTools/CompoundFilter.py index 9a0fc0d91716..13b77bf1fb33 100644 --- a/src/Mod/Part/CompoundTools/CompoundFilter.py +++ b/src/Mod/Part/CompoundTools/CompoundFilter.py @@ -218,7 +218,7 @@ def __init__(self, vobj): vobj.setEditorMode("DontUnhideOnDelete", 2) # set hidden def getIcon(self): - return "Part_CompoundFilter" + return ":/icons/booleans/Part_CompoundFilter.svg" def attach(self, vobj): self.ViewObject = vobj diff --git a/src/Mod/Part/Gui/AppPartGui.cpp b/src/Mod/Part/Gui/AppPartGui.cpp index 998436403e7f..3c6cc8845f88 100644 --- a/src/Mod/Part/Gui/AppPartGui.cpp +++ b/src/Mod/Part/Gui/AppPartGui.cpp @@ -47,6 +47,7 @@ #include "ViewProvider.h" #include "ViewProvider2DObject.h" #include "ViewProviderAttachExtension.h" +#include "ViewProviderDatum.h" #include "ViewProviderGridExtension.h" #include "ViewProviderBoolean.h" #include "ViewProviderBox.h" @@ -167,6 +168,10 @@ PyMOD_INIT_FUNC(PartGui) PartGui::ViewProviderGridExtensionPython ::init(); PartGui::ViewProviderSplineExtension ::init(); PartGui::ViewProviderSplineExtensionPython ::init(); + PartGui::ViewProviderLine ::init(); + PartGui::ViewProviderPlane ::init(); + PartGui::ViewProviderPoint ::init(); + PartGui::ViewProviderLCS ::init(); PartGui::ViewProviderPartExt ::init(); PartGui::ViewProviderPart ::init(); PartGui::ViewProviderPrimitive ::init(); diff --git a/src/Mod/Part/Gui/CMakeLists.txt b/src/Mod/Part/Gui/CMakeLists.txt index 8df4aa8cd2c3..cc409ada8b96 100644 --- a/src/Mod/Part/Gui/CMakeLists.txt +++ b/src/Mod/Part/Gui/CMakeLists.txt @@ -164,6 +164,8 @@ SET(PartGui_SRCS ViewProvider.h ViewProviderAttachExtension.h ViewProviderAttachExtension.cpp + ViewProviderDatum.cpp + ViewProviderDatum.h ViewProviderExt.cpp ViewProviderExt.h ViewProviderReference.cpp diff --git a/src/Mod/Part/Gui/Command.cpp b/src/Mod/Part/Gui/Command.cpp index 7c8576f0edc7..2baefb624ff9 100644 --- a/src/Mod/Part/Gui/Command.cpp +++ b/src/Mod/Part/Gui/Command.cpp @@ -32,6 +32,7 @@ #endif #include +#include #include #include #include @@ -51,6 +52,8 @@ #include #include +#include + #include "BoxSelection.h" #include "CrossSections.h" #include "DlgBooleanOperation.h" @@ -2081,7 +2084,7 @@ CmdColorPerFace::CmdColorPerFace() { sAppModule = "Part"; sGroup = QT_TR_NOOP("Part"); - sMenuText = QT_TR_NOOP("Appearance per face"); + sMenuText = QT_TR_NOOP("Appearance per &face"); sToolTipText = QT_TR_NOOP("Set the appearance of each individual face " "of the selected object."); sStatusTip = sToolTipText; @@ -2183,7 +2186,7 @@ CmdPartSectionCut::CmdPartSectionCut() { sAppModule = "Part"; sGroup = "View"; - sMenuText = QT_TR_NOOP("Persistent section cut"); + sMenuText = QT_TR_NOOP("Persiste&nt section cut"); sToolTipText = QT_TR_NOOP("Creates a persistent section cut of visible part objects"); sWhatsThis = "Part_SectionCut"; sStatusTip = sToolTipText; @@ -2211,6 +2214,193 @@ bool CmdPartSectionCut::isActive() return hasActiveDocument(); } + +//=========================================================================== +// Part_CoordinateSystem +//=========================================================================== + +namespace { + QString getAutoGroupCommandStr() + // Helper function to get the python code to add the newly created object to the active Part/Body object if present + { + App::GeoFeature* activeObj = Gui::Application::Instance->activeView()->getActiveObject(PDBODYKEY); + if (!activeObj) { + activeObj = Gui::Application::Instance->activeView()->getActiveObject(PARTKEY); + } + + if (activeObj) { + QString activeName = QString::fromLatin1(activeObj->getNameInDocument()); + return QString::fromLatin1("App.ActiveDocument.getObject('%1\').addObject(obj)\n").arg(activeName); + } + + return QString::fromLatin1("# Object created at document root."); + } +} + +DEF_STD_CMD_A(CmdPartCoordinateSystem) + +CmdPartCoordinateSystem::CmdPartCoordinateSystem() + : Command("Part_CoordinateSystem") +{ + sGroup = QT_TR_NOOP("Part"); + sMenuText = QT_TR_NOOP("Create coordinate system"); + sToolTipText = QT_TR_NOOP("Create a coordinate system object that can be attached to other objects."); + sWhatsThis = "Part_CoordinateSystem"; + sStatusTip = sToolTipText; + sPixmap = "Std_CoordinateSystem"; +} + +void CmdPartCoordinateSystem::activated(int iMsg) +{ + Q_UNUSED(iMsg); + + openCommand(QT_TRANSLATE_NOOP("Command", "Add a coordinate system")); + + std::string name = getUniqueObjectName("LCS"); + doCommand(Doc, "obj = App.activeDocument().addObject('Part::LocalCoordinateSystem','%s')", name.c_str()); + doCommand(Doc, getAutoGroupCommandStr().toUtf8()); + doCommand(Doc, "obj.Visibility = True"); + doCommand(Doc, "obj.ViewObject.doubleClicked()"); +} + +bool CmdPartCoordinateSystem::isActive() +{ + return hasActiveDocument(); +} + +//=========================================================================== +// Part_DatumPlane +//=========================================================================== +DEF_STD_CMD_A(CmdPartDatumPlane) + +CmdPartDatumPlane::CmdPartDatumPlane() + : Command("Part_DatumPlane") +{ + sGroup = QT_TR_NOOP("Part"); + sMenuText = QT_TR_NOOP("Create datum plane"); + sToolTipText = QT_TR_NOOP("Create a datum plane object that can be attached to other objects."); + sWhatsThis = "Part_DatumPlane"; + sStatusTip = sToolTipText; + sPixmap = "Std_Plane"; +} + +void CmdPartDatumPlane::activated(int iMsg) +{ + Q_UNUSED(iMsg); + + openCommand(QT_TRANSLATE_NOOP("Command", "Add a datum plane")); + + std::string name = getUniqueObjectName("DatumPlane"); + doCommand(Doc, "obj = App.activeDocument().addObject('Part::DatumPlane','%s')", name.c_str()); + doCommand(Doc, getAutoGroupCommandStr().toUtf8()); + doCommand(Doc, "obj.ViewObject.doubleClicked()"); +} + +bool CmdPartDatumPlane::isActive() +{ + return hasActiveDocument(); +} + +//=========================================================================== +// Part_DatumLine +//=========================================================================== +DEF_STD_CMD_A(CmdPartDatumLine) + +CmdPartDatumLine::CmdPartDatumLine() + : Command("Part_DatumLine") +{ + sGroup = QT_TR_NOOP("Part"); + sMenuText = QT_TR_NOOP("Create datum line"); + sToolTipText = QT_TR_NOOP("Create a datum line object that can be attached to other objects."); + sWhatsThis = "Part_DatumLine"; + sStatusTip = sToolTipText; + sPixmap = "Std_Axis"; +} + +void CmdPartDatumLine::activated(int iMsg) +{ + Q_UNUSED(iMsg); + + openCommand(QT_TRANSLATE_NOOP("Command", "Add a datum line")); + + std::string name = getUniqueObjectName("DatumLine"); + doCommand(Doc, "obj = App.activeDocument().addObject('Part::DatumLine','%s')", name.c_str()); + doCommand(Doc, getAutoGroupCommandStr().toUtf8()); + doCommand(Doc, "obj.ViewObject.doubleClicked()"); +} + +bool CmdPartDatumLine::isActive() +{ + return hasActiveDocument(); +} + +//=========================================================================== +// Part_DatumPoint +//=========================================================================== +DEF_STD_CMD_A(CmdPartDatumPoint) + +CmdPartDatumPoint::CmdPartDatumPoint() + : Command("Part_DatumPoint") +{ + sGroup = QT_TR_NOOP("Part"); + sMenuText = QT_TR_NOOP("Create datum point"); + sToolTipText = QT_TR_NOOP("Create a datum point object that can be attached to other objects."); + sWhatsThis = "Part_DatumPoint"; + sStatusTip = sToolTipText; + sPixmap = "Std_Point"; +} + +void CmdPartDatumPoint::activated(int iMsg) +{ + Q_UNUSED(iMsg); + + openCommand(QT_TRANSLATE_NOOP("Command", "Add a datum point")); + + std::string name = getUniqueObjectName("DatumPoint"); + doCommand(Doc, "obj = App.activeDocument().addObject('Part::DatumPoint','%s')", name.c_str()); + doCommand(Doc, getAutoGroupCommandStr().toUtf8()); + doCommand(Doc, "obj.ViewObject.doubleClicked()"); +} + +bool CmdPartDatumPoint::isActive() +{ + return hasActiveDocument(); +} + + +//=========================================================================== +// Part_Datums +//=========================================================================== +class CmdPartDatums : public Gui::GroupCommand +{ +public: + CmdPartDatums() + : GroupCommand("Part_Datums") + { + sGroup = QT_TR_NOOP("Part"); + sMenuText = QT_TR_NOOP("Create datum"); + sToolTipText = QT_TR_NOOP("Create a datum object (coordinate system, plane, line, point) that can be attached to other objects."); + sWhatsThis = "Part_Datums"; + sStatusTip = sToolTipText; + + setCheckable(false); + + addCommand("Part_CoordinateSystem"); + addCommand("Part_DatumPlane"); + addCommand("Part_DatumLine"); + addCommand("Part_DatumPoint"); + } + + const char* className() const override + { + return "CmdPartDatums"; + } + + bool isActive() override + { + return hasActiveDocument(); + } +}; //--------------------------------------------------------------- void CreatePartCommands() @@ -2256,4 +2446,10 @@ void CreatePartCommands() rcCmdMgr.addCommand(new CmdBoxSelection()); rcCmdMgr.addCommand(new CmdPartProjectionOnSurface()); rcCmdMgr.addCommand(new CmdPartSectionCut()); + + rcCmdMgr.addCommand(new CmdPartCoordinateSystem()); + rcCmdMgr.addCommand(new CmdPartDatumPlane()); + rcCmdMgr.addCommand(new CmdPartDatumLine()); + rcCmdMgr.addCommand(new CmdPartDatumPoint()); + rcCmdMgr.addCommand(new CmdPartDatums()); } diff --git a/src/Mod/Part/Gui/DlgFilletEdges.cpp b/src/Mod/Part/Gui/DlgFilletEdges.cpp index 9ca6e974d467..a66104fbff8d 100644 --- a/src/Mod/Part/Gui/DlgFilletEdges.cpp +++ b/src/Mod/Part/Gui/DlgFilletEdges.cpp @@ -155,7 +155,7 @@ QVariant FilletRadiusModel::data(const QModelIndex& index, int role) const QVariant value = QStandardItemModel::data(index, role); if (role == Qt::DisplayRole && index.column() >= 1) { Base::Quantity q = value.value(); - QString str = q.getUserString(); + QString str = QString::fromStdString(q.getUserString()); return str; } return value; diff --git a/src/Mod/Part/Gui/DlgPartImportStep.ui b/src/Mod/Part/Gui/DlgPartImportStep.ui index 9efc79e58264..3266e7d62c05 100644 --- a/src/Mod/Part/Gui/DlgPartImportStep.ui +++ b/src/Mod/Part/Gui/DlgPartImportStep.ui @@ -67,7 +67,6 @@ - FileName SearchFile diff --git a/src/Mod/Part/Gui/DlgPrimitives.cpp b/src/Mod/Part/Gui/DlgPrimitives.cpp index 1a33d4351b07..8617cc58f884 100644 --- a/src/Mod/Part/Gui/DlgPrimitives.cpp +++ b/src/Mod/Part/Gui/DlgPrimitives.cpp @@ -111,6 +111,11 @@ const char* gce_ErrorStatusText(gce_ErrorType et) } } +static QString safeQuantityQString(Gui::QuantitySpinBox *qs) +{ + return QString::fromStdString(qs->value().getSafeUserString()); +} + void Picker::createPrimitive(QWidget* widget, const QString& descr, Gui::Document* doc) { try { @@ -268,8 +273,8 @@ QString PlanePrimitive::create(const QString& objectName, const QString& placeme "App.ActiveDocument.%1.Placement=%4\n" "App.ActiveDocument.%1.Label='%5'\n") .arg(objectName, - ui->planeLength->value().getSafeUserString(), - ui->planeWidth->value().getSafeUserString(), + safeQuantityQString(ui->planeLength), + safeQuantityQString(ui->planeWidth), placement, DlgPrimitives::tr("Plane")); } @@ -281,8 +286,8 @@ QString PlanePrimitive::change(const QString& objectName, const QString& placeme "%1.Width='%3'\n" "%1.Placement=%4\n") .arg(objectName, - ui->planeLength->value().getSafeUserString(), - ui->planeWidth->value().getSafeUserString(), + safeQuantityQString(ui->planeLength), + safeQuantityQString(ui->planeWidth), placement); } @@ -342,9 +347,9 @@ QString BoxPrimitive::create(const QString& objectName, const QString& placement "App.ActiveDocument.%1.Placement=%5\n" "App.ActiveDocument.%1.Label='%6'\n") .arg(objectName, - ui->boxLength->value().getSafeUserString(), - ui->boxWidth->value().getSafeUserString(), - ui->boxHeight->value().getSafeUserString(), + safeQuantityQString(ui->boxLength), + safeQuantityQString(ui->boxWidth), + safeQuantityQString(ui->boxHeight), placement, DlgPrimitives::tr("Box")); } @@ -357,9 +362,9 @@ QString BoxPrimitive::change(const QString& objectName, const QString& placement "%1.Height='%4'\n" "%1.Placement=%5\n") .arg(objectName, - ui->boxLength->value().getSafeUserString(), - ui->boxWidth->value().getSafeUserString(), - ui->boxHeight->value().getSafeUserString(), + safeQuantityQString(ui->boxLength), + safeQuantityQString(ui->boxWidth), + safeQuantityQString(ui->boxHeight), placement); } @@ -430,11 +435,11 @@ QString CylinderPrimitive::create(const QString& objectName, const QString& plac "App.ActiveDocument.%1.Placement=%7\n" "App.ActiveDocument.%1.Label='%8'\n") .arg(objectName, - ui->cylinderRadius->value().getSafeUserString(), - ui->cylinderHeight->value().getSafeUserString(), - ui->cylinderAngle->value().getSafeUserString(), - ui->cylinderXSkew->value().getSafeUserString(), - ui->cylinderYSkew->value().getSafeUserString(), + safeQuantityQString(ui->cylinderRadius), + safeQuantityQString(ui->cylinderHeight), + safeQuantityQString(ui->cylinderAngle), + safeQuantityQString(ui->cylinderXSkew), + safeQuantityQString(ui->cylinderYSkew), placement, DlgPrimitives::tr("Cylinder")); } @@ -449,11 +454,11 @@ QString CylinderPrimitive::change(const QString& objectName, const QString& plac "%1.SecondAngle='%6'\n" "%1.Placement=%7\n") .arg(objectName, - ui->cylinderRadius->value().getSafeUserString(), - ui->cylinderHeight->value().getSafeUserString(), - ui->cylinderAngle->value().getSafeUserString(), - ui->cylinderXSkew->value().getSafeUserString(), - ui->cylinderYSkew->value().getSafeUserString(), + safeQuantityQString(ui->cylinderRadius), + safeQuantityQString(ui->cylinderHeight), + safeQuantityQString(ui->cylinderAngle), + safeQuantityQString(ui->cylinderXSkew), + safeQuantityQString(ui->cylinderYSkew), placement); } @@ -527,10 +532,10 @@ QString ConePrimitive::create(const QString& objectName, const QString& placemen "App.ActiveDocument.%1.Placement=%6\n" "App.ActiveDocument.%1.Label='%7'\n") .arg(objectName, - ui->coneRadius1->value().getSafeUserString(), - ui->coneRadius2->value().getSafeUserString(), - ui->coneHeight->value().getSafeUserString(), - ui->coneAngle->value().getSafeUserString(), + safeQuantityQString(ui->coneRadius1), + safeQuantityQString(ui->coneRadius2), + safeQuantityQString(ui->coneHeight), + safeQuantityQString(ui->coneAngle), placement, DlgPrimitives::tr("Cone")); } @@ -544,10 +549,10 @@ QString ConePrimitive::change(const QString& objectName, const QString& placemen "%1.Angle='%5'\n" "%1.Placement=%6\n") .arg(objectName, - ui->coneRadius1->value().getSafeUserString(), - ui->coneRadius2->value().getSafeUserString(), - ui->coneHeight->value().getSafeUserString(), - ui->coneAngle->value().getSafeUserString(), + safeQuantityQString(ui->coneRadius1), + safeQuantityQString(ui->coneRadius2), + safeQuantityQString(ui->coneHeight), + safeQuantityQString(ui->coneAngle), placement); } @@ -618,10 +623,10 @@ QString SpherePrimitive::create(const QString& objectName, const QString& placem "App.ActiveDocument.%1.Placement=%6\n" "App.ActiveDocument.%1.Label='%7'\n") .arg(objectName, - ui->sphereRadius->value().getSafeUserString(), - ui->sphereAngle1->value().getSafeUserString(), - ui->sphereAngle2->value().getSafeUserString(), - ui->sphereAngle3->value().getSafeUserString(), + safeQuantityQString(ui->sphereRadius), + safeQuantityQString(ui->sphereAngle1), + safeQuantityQString(ui->sphereAngle2), + safeQuantityQString(ui->sphereAngle3), placement, DlgPrimitives::tr("Sphere")); } @@ -635,10 +640,10 @@ QString SpherePrimitive::change(const QString& objectName, const QString& placem "%1.Angle3='%5'\n" "%1.Placement=%6\n") .arg(objectName, - ui->sphereRadius->value().getSafeUserString(), - ui->sphereAngle1->value().getSafeUserString(), - ui->sphereAngle2->value().getSafeUserString(), - ui->sphereAngle3->value().getSafeUserString(), + safeQuantityQString(ui->sphereRadius), + safeQuantityQString(ui->sphereAngle1), + safeQuantityQString(ui->sphereAngle2), + safeQuantityQString(ui->sphereAngle3), placement); } @@ -720,12 +725,12 @@ QString EllipsoidPrimitive::create(const QString& objectName, const QString& pla "App.ActiveDocument.%1.Placement=%8\n" "App.ActiveDocument.%1.Label='%9'\n") .arg(objectName, - ui->ellipsoidRadius1->value().getSafeUserString(), - ui->ellipsoidRadius2->value().getSafeUserString(), - ui->ellipsoidRadius3->value().getSafeUserString(), - ui->ellipsoidAngle1->value().getSafeUserString(), - ui->ellipsoidAngle2->value().getSafeUserString(), - ui->ellipsoidAngle3->value().getSafeUserString(), + safeQuantityQString(ui->ellipsoidRadius1), + safeQuantityQString(ui->ellipsoidRadius2), + safeQuantityQString(ui->ellipsoidRadius3), + safeQuantityQString(ui->ellipsoidAngle1), + safeQuantityQString(ui->ellipsoidAngle2), + safeQuantityQString(ui->ellipsoidAngle3), placement, DlgPrimitives::tr("Ellipsoid")); } @@ -741,12 +746,12 @@ QString EllipsoidPrimitive::change(const QString& objectName, const QString& pla "%1.Angle3='%7'\n" "%1.Placement=%8\n") .arg(objectName, - ui->ellipsoidRadius1->value().getSafeUserString(), - ui->ellipsoidRadius2->value().getSafeUserString(), - ui->ellipsoidRadius3->value().getSafeUserString(), - ui->ellipsoidAngle1->value().getSafeUserString(), - ui->ellipsoidAngle2->value().getSafeUserString(), - ui->ellipsoidAngle3->value().getSafeUserString(), + safeQuantityQString(ui->ellipsoidRadius1), + safeQuantityQString(ui->ellipsoidRadius2), + safeQuantityQString(ui->ellipsoidRadius3), + safeQuantityQString(ui->ellipsoidAngle1), + safeQuantityQString(ui->ellipsoidAngle2), + safeQuantityQString(ui->ellipsoidAngle3), placement); } @@ -828,11 +833,11 @@ QString TorusPrimitive::create(const QString& objectName, const QString& placeme "App.ActiveDocument.%1.Placement=%7\n" "App.ActiveDocument.%1.Label='%8'\n") .arg(objectName, - ui->torusRadius1->value().getSafeUserString(), - ui->torusRadius2->value().getSafeUserString(), - ui->torusAngle1->value().getSafeUserString(), - ui->torusAngle2->value().getSafeUserString(), - ui->torusAngle3->value().getSafeUserString(), + safeQuantityQString(ui->torusRadius1), + safeQuantityQString(ui->torusRadius2), + safeQuantityQString(ui->torusAngle1), + safeQuantityQString(ui->torusAngle2), + safeQuantityQString(ui->torusAngle3), placement, DlgPrimitives::tr("Torus")); } @@ -847,11 +852,11 @@ QString TorusPrimitive::change(const QString& objectName, const QString& placeme "%1.Angle3='%6'\n" "%1.Placement=%7\n") .arg(objectName, - ui->torusRadius1->value().getSafeUserString(), - ui->torusRadius2->value().getSafeUserString(), - ui->torusAngle1->value().getSafeUserString(), - ui->torusAngle2->value().getSafeUserString(), - ui->torusAngle3->value().getSafeUserString(), + safeQuantityQString(ui->torusRadius1), + safeQuantityQString(ui->torusRadius2), + safeQuantityQString(ui->torusAngle1), + safeQuantityQString(ui->torusAngle2), + safeQuantityQString(ui->torusAngle3), placement); } @@ -927,10 +932,10 @@ QString PrismPrimitive::create(const QString& objectName, const QString& placeme "App.ActiveDocument.%1.Label='%8'\n") .arg(objectName, QString::number(ui->prismPolygon->value()), - ui->prismCircumradius->value().getSafeUserString(), - ui->prismHeight->value().getSafeUserString(), - ui->prismXSkew->value().getSafeUserString(), - ui->prismYSkew->value().getSafeUserString(), + safeQuantityQString(ui->prismCircumradius), + safeQuantityQString(ui->prismHeight), + safeQuantityQString(ui->prismXSkew), + safeQuantityQString(ui->prismYSkew), placement, DlgPrimitives::tr("Prism")); } @@ -946,10 +951,10 @@ QString PrismPrimitive::change(const QString& objectName, const QString& placeme "%1.Placement=%7\n") .arg(objectName, QString::number(ui->prismPolygon->value()), - ui->prismCircumradius->value().getSafeUserString(), - ui->prismHeight->value().getSafeUserString(), - ui->prismXSkew->value().getSafeUserString(), - ui->prismYSkew->value().getSafeUserString(), + safeQuantityQString(ui->prismCircumradius), + safeQuantityQString(ui->prismHeight), + safeQuantityQString(ui->prismXSkew), + safeQuantityQString(ui->prismYSkew), placement); } @@ -1063,16 +1068,16 @@ QString WedgePrimitive::create(const QString& objectName, const QString& placeme "App.ActiveDocument.%1.Placement=%12\n" "App.ActiveDocument.%1.Label='%13'\n") .arg(objectName, - ui->wedgeXmin->value().getSafeUserString(), - ui->wedgeYmin->value().getSafeUserString(), - ui->wedgeZmin->value().getSafeUserString(), - ui->wedgeX2min->value().getSafeUserString(), - ui->wedgeZ2min->value().getSafeUserString(), - ui->wedgeXmax->value().getSafeUserString(), - ui->wedgeYmax->value().getSafeUserString()) - .arg(ui->wedgeZmax->value().getSafeUserString(), - ui->wedgeX2max->value().getSafeUserString(), - ui->wedgeZ2max->value().getSafeUserString(), + safeQuantityQString(ui->wedgeXmin), + safeQuantityQString(ui->wedgeYmin), + safeQuantityQString(ui->wedgeZmin), + safeQuantityQString(ui->wedgeX2min), + safeQuantityQString(ui->wedgeZ2min), + safeQuantityQString(ui->wedgeXmax), + safeQuantityQString(ui->wedgeYmax)) + .arg(safeQuantityQString(ui->wedgeZmax), + safeQuantityQString(ui->wedgeX2max), + safeQuantityQString(ui->wedgeZ2max), placement, DlgPrimitives::tr("Wedge")); } @@ -1092,16 +1097,16 @@ QString WedgePrimitive::change(const QString& objectName, const QString& placeme "%1.Z2max='%11'\n" "%1.Placement=%12\n") .arg(objectName, - ui->wedgeXmin->value().getSafeUserString(), - ui->wedgeYmin->value().getSafeUserString(), - ui->wedgeZmin->value().getSafeUserString(), - ui->wedgeX2min->value().getSafeUserString(), - ui->wedgeZ2min->value().getSafeUserString(), - ui->wedgeXmax->value().getSafeUserString(), - ui->wedgeYmax->value().getSafeUserString(), - ui->wedgeZmax->value().getSafeUserString()) - .arg(ui->wedgeX2max->value().getSafeUserString(), - ui->wedgeZ2max->value().getSafeUserString(), + safeQuantityQString(ui->wedgeXmin), + safeQuantityQString(ui->wedgeYmin), + safeQuantityQString(ui->wedgeZmin), + safeQuantityQString(ui->wedgeX2min), + safeQuantityQString(ui->wedgeZ2min), + safeQuantityQString(ui->wedgeXmax), + safeQuantityQString(ui->wedgeYmax), + safeQuantityQString(ui->wedgeZmax)) + .arg(safeQuantityQString(ui->wedgeX2max), + safeQuantityQString(ui->wedgeZ2max), placement); } @@ -1194,10 +1199,10 @@ QString HelixPrimitive::create(const QString& objectName, const QString& placeme "App.ActiveDocument.%1.Placement=%7\n" "App.ActiveDocument.%1.Label='%8'\n") .arg(objectName, - ui->helixPitch->value().getSafeUserString(), - ui->helixHeight->value().getSafeUserString(), - ui->helixRadius->value().getSafeUserString(), - ui->helixAngle->value().getSafeUserString(), + safeQuantityQString(ui->helixPitch), + safeQuantityQString(ui->helixHeight), + safeQuantityQString(ui->helixRadius), + safeQuantityQString(ui->helixAngle), QString::number(ui->helixLocalCS->currentIndex()), placement, DlgPrimitives::tr("Helix")); @@ -1213,10 +1218,10 @@ QString HelixPrimitive::change(const QString& objectName, const QString& placeme "%1.LocalCoord=%6\n" "%1.Placement=%7\n") .arg(objectName, - ui->helixPitch->value().getSafeUserString(), - ui->helixHeight->value().getSafeUserString(), - ui->helixRadius->value().getSafeUserString(), - ui->helixAngle->value().getSafeUserString(), + safeQuantityQString(ui->helixPitch), + safeQuantityQString(ui->helixHeight), + safeQuantityQString(ui->helixRadius), + safeQuantityQString(ui->helixAngle), QString::number(ui->helixLocalCS->currentIndex()), placement); } @@ -1285,9 +1290,9 @@ QString SpiralPrimitive::create(const QString& objectName, const QString& placem "App.ActiveDocument.%1.Placement=%5\n" "App.ActiveDocument.%1.Label='%6'\n") .arg(objectName, - ui->spiralGrowth->value().getSafeUserString(), + safeQuantityQString(ui->spiralGrowth), QString::number(ui->spiralRotation->value()), - ui->spiralRadius->value().getSafeUserString(), + safeQuantityQString(ui->spiralRadius), placement, DlgPrimitives::tr("Spiral")); } @@ -1300,9 +1305,9 @@ QString SpiralPrimitive::change(const QString& objectName, const QString& placem "%1.Radius='%4'\n" "%1.Placement=%5\n") .arg(objectName, - ui->spiralGrowth->value().getSafeUserString(), + safeQuantityQString(ui->spiralGrowth), QString::number(ui->spiralRotation->value()), - ui->spiralRadius->value().getSafeUserString(), + safeQuantityQString(ui->spiralRadius), placement); } @@ -1365,9 +1370,9 @@ QString CirclePrimitive::create(const QString& objectName, const QString& placem "App.ActiveDocument.%1.Placement=%5\n" "App.ActiveDocument.%1.Label='%6'\n") .arg(objectName, - ui->circleRadius->value().getSafeUserString(), - ui->circleAngle1->value().getSafeUserString(), - ui->circleAngle2->value().getSafeUserString(), + safeQuantityQString(ui->circleRadius), + safeQuantityQString(ui->circleAngle1), + safeQuantityQString(ui->circleAngle2), placement, DlgPrimitives::tr("Circle")); } @@ -1380,9 +1385,9 @@ QString CirclePrimitive::change(const QString& objectName, const QString& placem "%1.Angle2='%4'\n" "%1.Placement=%5\n") .arg(objectName, - ui->circleRadius->value().getSafeUserString(), - ui->circleAngle1->value().getSafeUserString(), - ui->circleAngle2->value().getSafeUserString(), + safeQuantityQString(ui->circleRadius), + safeQuantityQString(ui->circleAngle1), + safeQuantityQString(ui->circleAngle2), placement); } @@ -1450,10 +1455,10 @@ QString EllipsePrimitive::create(const QString& objectName, const QString& place "App.ActiveDocument.%1.Placement=%6\n" "App.ActiveDocument.%1.Label='%7'\n") .arg(objectName, - ui->ellipseMajorRadius->value().getSafeUserString(), - ui->ellipseMinorRadius->value().getSafeUserString(), - ui->ellipseAngle1->value().getSafeUserString(), - ui->ellipseAngle2->value().getSafeUserString(), + safeQuantityQString(ui->ellipseMajorRadius), + safeQuantityQString(ui->ellipseMinorRadius), + safeQuantityQString(ui->ellipseAngle1), + safeQuantityQString(ui->ellipseAngle2), placement, DlgPrimitives::tr("Ellipse")); } @@ -1467,10 +1472,10 @@ QString EllipsePrimitive::change(const QString& objectName, const QString& place "%1.Angle2='%5'\n" "%1.Placement=%6\n") .arg(objectName, - ui->ellipseMajorRadius->value().getSafeUserString(), - ui->ellipseMinorRadius->value().getSafeUserString(), - ui->ellipseAngle1->value().getSafeUserString(), - ui->ellipseAngle2->value().getSafeUserString(), + safeQuantityQString(ui->ellipseMajorRadius), + safeQuantityQString(ui->ellipseMinorRadius), + safeQuantityQString(ui->ellipseAngle1), + safeQuantityQString(ui->ellipseAngle2), placement); } @@ -1530,7 +1535,7 @@ QString PolygonPrimitive::create(const QString& objectName, const QString& place "App.ActiveDocument.%1.Label='%5'\n") .arg(objectName, QString::number(ui->regularPolygonPolygon->value()), - ui->regularPolygonCircumradius->value().getSafeUserString(), + safeQuantityQString(ui->regularPolygonCircumradius), placement, DlgPrimitives::tr("Regular polygon")); } @@ -1543,7 +1548,7 @@ QString PolygonPrimitive::change(const QString& objectName, const QString& place "%1.Placement=%4\n") .arg(objectName, QString::number(ui->regularPolygonPolygon->value()), - ui->regularPolygonCircumradius->value().getSafeUserString(), + safeQuantityQString(ui->regularPolygonCircumradius), placement); } @@ -1624,12 +1629,12 @@ QString LinePrimitive::create(const QString& objectName, const QString& placemen "App.ActiveDocument.%1.Placement=%8\n" "App.ActiveDocument.%1.Label='%9'\n") .arg(objectName, - ui->edgeX1->value().getSafeUserString(), - ui->edgeY1->value().getSafeUserString(), - ui->edgeZ1->value().getSafeUserString(), - ui->edgeX2->value().getSafeUserString(), - ui->edgeY2->value().getSafeUserString(), - ui->edgeZ2->value().getSafeUserString(), + safeQuantityQString(ui->edgeX1), + safeQuantityQString(ui->edgeY1), + safeQuantityQString(ui->edgeZ1), + safeQuantityQString(ui->edgeX2), + safeQuantityQString(ui->edgeY2), + safeQuantityQString(ui->edgeZ2), placement, DlgPrimitives::tr("Line")); } @@ -1645,12 +1650,12 @@ QString LinePrimitive::change(const QString& objectName, const QString& placemen "%1.Z2='%7'\n" "%1.Placement=%8\n") .arg(objectName, - ui->edgeX1->value().getSafeUserString(), - ui->edgeY1->value().getSafeUserString(), - ui->edgeZ1->value().getSafeUserString(), - ui->edgeX2->value().getSafeUserString(), - ui->edgeY2->value().getSafeUserString(), - ui->edgeZ2->value().getSafeUserString(), + safeQuantityQString(ui->edgeX1), + safeQuantityQString(ui->edgeY1), + safeQuantityQString(ui->edgeZ1), + safeQuantityQString(ui->edgeX2), + safeQuantityQString(ui->edgeY2), + safeQuantityQString(ui->edgeZ2), placement); } @@ -1725,9 +1730,9 @@ QString VertexPrimitive::create(const QString& objectName, const QString& placem "App.ActiveDocument.%1.Placement=%5\n" "App.ActiveDocument.%1.Label='%6'\n") .arg(objectName, - ui->vertexX->value().getSafeUserString(), - ui->vertexY->value().getSafeUserString(), - ui->vertexZ->value().getSafeUserString(), + safeQuantityQString(ui->vertexX), + safeQuantityQString(ui->vertexY), + safeQuantityQString(ui->vertexZ), placement, DlgPrimitives::tr("Vertex")); } @@ -1740,9 +1745,9 @@ QString VertexPrimitive::change(const QString& objectName, const QString& placem "%1.Z='%4'\n" "%1.Placement=%5\n") .arg(objectName, - ui->vertexX->value().getSafeUserString(), - ui->vertexY->value().getSafeUserString(), - ui->vertexZ->value().getSafeUserString(), + safeQuantityQString(ui->vertexX), + safeQuantityQString(ui->vertexY), + safeQuantityQString(ui->vertexZ), placement); } diff --git a/src/Mod/Part/Gui/Resources/translations/Part_de.ts b/src/Mod/Part/Gui/Resources/translations/Part_de.ts index 0de8a8e29f78..74ff410738ca 100644 --- a/src/Mod/Part/Gui/Resources/translations/Part_de.ts +++ b/src/Mod/Part/Gui/Resources/translations/Part_de.ts @@ -1940,7 +1940,7 @@ der Projektion. CmdPartSectionCut - Persistent section cut + Persiste&nt section cut Dauerhafte Schnittdarstellung @@ -5958,7 +5958,7 @@ Do you want to continue? - Set appearance per face... + Set appearance per &face... Aussehen flächenweise festlegen... diff --git a/src/Mod/Part/Gui/TaskAttacher.cpp b/src/Mod/Part/Gui/TaskAttacher.cpp index d46ad0a4a84b..5f3ebe9b7786 100644 --- a/src/Mod/Part/Gui/TaskAttacher.cpp +++ b/src/Mod/Part/Gui/TaskAttacher.cpp @@ -33,6 +33,7 @@ #include #include +#include #include #include #include @@ -43,6 +44,7 @@ #include #include #include +#include #include #include #include @@ -62,29 +64,22 @@ namespace sp = std::placeholders; // Create reference name from PropertyLinkSub values in a translatable fashion const QString makeRefString(const App::DocumentObject* obj, const std::string& sub) { - if (!obj) + if (!obj) { return QObject::tr("No reference selected"); + } - if (obj->isDerivedFrom() || - obj->isDerivedFrom()) - // App::Plane, Line or Datum feature + if (obj->isDerivedFrom() || obj->isDerivedFrom()) { return QString::fromLatin1(obj->getNameInDocument()); - - if ((sub.size() > 4) && (sub.substr(0,4) == "Face")) { - int subId = std::atoi(&sub[4]); - return QString::fromLatin1(obj->getNameInDocument()) + QString::fromLatin1(":") + QObject::tr("Face") + QString::number(subId); - } else if ((sub.size() > 4) && (sub.substr(0,4) == "Edge")) { - int subId = std::atoi(&sub[4]); - return QString::fromLatin1(obj->getNameInDocument()) + QString::fromLatin1(":") + QObject::tr("Edge") + QString::number(subId); - } else if ((sub.size() > 6) && (sub.substr(0,6) == "Vertex")) { - int subId = std::atoi(&sub[6]); - return QString::fromLatin1(obj->getNameInDocument()) + QString::fromLatin1(":") + QObject::tr("Vertex") + QString::number(subId); - } else { - //something else that face/edge/vertex. Can be empty string. - return QString::fromLatin1(obj->getNameInDocument()) - + (sub.length()>0 ? QString::fromLatin1(":") : QString()) - + QString::fromLatin1(sub.c_str()); } + + // Hide the TNP string from the user. ie show "Body.Pad.Face6" and not : + // "Body.Pad.;#a:1;:G0;XTR;:Hc94:8,F.Face6" + App::ElementNamePair el; + App::GeoFeature::resolveElement(obj, sub.c_str(), el, true); + + return QString::fromLatin1(obj->getNameInDocument()) + + (sub.length() > 0 ? QString::fromLatin1(":") : QString()) + + QString::fromLatin1(el.oldName.c_str()); } void TaskAttacher::makeRefStrings(std::vector& refstrings, std::vector& refnames) { @@ -98,17 +93,18 @@ void TaskAttacher::makeRefStrings(std::vector& refstrings, std::vector< // for Origin or Datum features refnames is empty but we need a non-empty return value if (refnames[r].empty()) refnames[r] = refs[r]->getNameInDocument(); - } else { + } + else { refstrings.push_back(QObject::tr("No reference selected")); refnames.emplace_back(""); } } } -TaskAttacher::TaskAttacher(Gui::ViewProviderDocumentObject *ViewProvider, QWidget *parent, - QString picture, QString text, TaskAttacher::VisibilityFunction visFunc) +TaskAttacher::TaskAttacher(Gui::ViewProviderDocumentObject* ViewProvider, QWidget* parent, + QString picture, QString text, TaskAttacher::VisibilityFunction visFunc) : TaskBox(Gui::BitmapFactory().pixmap(picture.toLatin1()), text, true, parent) - , SelectionObserver(ViewProvider) + , SelectionObserver(ViewProvider, true, Gui::ResolveMode::NoResolve) , ViewProvider(ViewProvider) , ui(new Ui_TaskAttacher) , visibilityFunc(visFunc) @@ -125,37 +121,37 @@ TaskAttacher::TaskAttacher(Gui::ViewProviderDocumentObject *ViewProvider, QWidge // clang-format off connect(ui->attachmentOffsetX, qOverload(&Gui::QuantitySpinBox::valueChanged), - this, &TaskAttacher::onAttachmentOffsetXChanged); + this, &TaskAttacher::onAttachmentOffsetXChanged); connect(ui->attachmentOffsetY, qOverload(&Gui::QuantitySpinBox::valueChanged), - this, &TaskAttacher::onAttachmentOffsetYChanged); + this, &TaskAttacher::onAttachmentOffsetYChanged); connect(ui->attachmentOffsetZ, qOverload(&Gui::QuantitySpinBox::valueChanged), - this, &TaskAttacher::onAttachmentOffsetZChanged); + this, &TaskAttacher::onAttachmentOffsetZChanged); connect(ui->attachmentOffsetYaw, qOverload(&Gui::QuantitySpinBox::valueChanged), - this, &TaskAttacher::onAttachmentOffsetYawChanged); + this, &TaskAttacher::onAttachmentOffsetYawChanged); connect(ui->attachmentOffsetPitch, qOverload(&Gui::QuantitySpinBox::valueChanged), - this, &TaskAttacher::onAttachmentOffsetPitchChanged); + this, &TaskAttacher::onAttachmentOffsetPitchChanged); connect(ui->attachmentOffsetRoll, qOverload(&Gui::QuantitySpinBox::valueChanged), - this, &TaskAttacher::onAttachmentOffsetRollChanged); + this, &TaskAttacher::onAttachmentOffsetRollChanged); connect(ui->checkBoxFlip, &QCheckBox::toggled, - this, &TaskAttacher::onCheckFlip); + this, &TaskAttacher::onCheckFlip); connect(ui->buttonRef1, &QPushButton::clicked, - this, &TaskAttacher::onButtonRef1); + this, &TaskAttacher::onButtonRef1); connect(ui->lineRef1, &QLineEdit::textEdited, - this, &TaskAttacher::onRefName1); + this, &TaskAttacher::onRefName1); connect(ui->buttonRef2, &QPushButton::clicked, - this, &TaskAttacher::onButtonRef2); + this, &TaskAttacher::onButtonRef2); connect(ui->lineRef2, &QLineEdit::textEdited, - this, &TaskAttacher::onRefName2); + this, &TaskAttacher::onRefName2); connect(ui->buttonRef3, &QPushButton::clicked, - this, &TaskAttacher::onButtonRef3); + this, &TaskAttacher::onButtonRef3); connect(ui->lineRef3, &QLineEdit::textEdited, - this, &TaskAttacher::onRefName3); + this, &TaskAttacher::onRefName3); connect(ui->buttonRef4, &QPushButton::clicked, - this, &TaskAttacher::onButtonRef4); + this, &TaskAttacher::onButtonRef4); connect(ui->lineRef4, &QLineEdit::textEdited, - this, &TaskAttacher::onRefName4); + this, &TaskAttacher::onRefName4); connect(ui->listOfModes, &QListWidget::itemSelectionChanged, - this, &TaskAttacher::onModeSelect); + this, &TaskAttacher::onModeSelect); // clang-format on this->groupLayout()->addWidget(proxy); @@ -205,19 +201,20 @@ TaskAttacher::TaskAttacher(Gui::ViewProviderDocumentObject *ViewProvider, QWidge this->iActiveRef = 0; else this->iActiveRef = -1; - if (pcAttach->AttachmentSupport.getSize() == 0){ + if (pcAttach->AttachmentSupport.getSize() == 0) { autoNext = true; - } else { + } + else { autoNext = false; } - ui->attachmentOffsetX->bind(App::ObjectIdentifier::parse(ViewProvider->getObject(),std::string("AttachmentOffset.Base.x"))); - ui->attachmentOffsetY->bind(App::ObjectIdentifier::parse(ViewProvider->getObject(),std::string("AttachmentOffset.Base.y"))); - ui->attachmentOffsetZ->bind(App::ObjectIdentifier::parse(ViewProvider->getObject(),std::string("AttachmentOffset.Base.z"))); + ui->attachmentOffsetX->bind(App::ObjectIdentifier::parse(ViewProvider->getObject(), std::string("AttachmentOffset.Base.x"))); + ui->attachmentOffsetY->bind(App::ObjectIdentifier::parse(ViewProvider->getObject(), std::string("AttachmentOffset.Base.y"))); + ui->attachmentOffsetZ->bind(App::ObjectIdentifier::parse(ViewProvider->getObject(), std::string("AttachmentOffset.Base.z"))); - ui->attachmentOffsetYaw->bind(App::ObjectIdentifier::parse(ViewProvider->getObject(),std::string("AttachmentOffset.Rotation.Yaw"))); - ui->attachmentOffsetPitch->bind(App::ObjectIdentifier::parse(ViewProvider->getObject(),std::string("AttachmentOffset.Rotation.Pitch"))); - ui->attachmentOffsetRoll->bind(App::ObjectIdentifier::parse(ViewProvider->getObject(),std::string("AttachmentOffset.Rotation.Roll"))); + ui->attachmentOffsetYaw->bind(App::ObjectIdentifier::parse(ViewProvider->getObject(), std::string("AttachmentOffset.Rotation.Yaw"))); + ui->attachmentOffsetPitch->bind(App::ObjectIdentifier::parse(ViewProvider->getObject(), std::string("AttachmentOffset.Rotation.Pitch"))); + ui->attachmentOffsetRoll->bind(App::ObjectIdentifier::parse(ViewProvider->getObject(), std::string("AttachmentOffset.Rotation.Roll"))); visibilityAutomation(true); updateAttachmentOffsetUI(); @@ -234,6 +231,8 @@ TaskAttacher::TaskAttacher(Gui::ViewProviderDocumentObject *ViewProvider, QWidge Gui::Document* document = Gui::Application::Instance->getDocument(ViewProvider->getObject()->getDocument()); connectDelObject = document->signalDeletedObject.connect(bnd1); connectDelDocument = document->signalDeleteDocument.connect(bnd2); + + handleInitialSelection(); } TaskAttacher::~TaskAttacher() @@ -293,10 +292,11 @@ void TaskAttacher::updateReferencesUI() pcAttach->attacher().suggestMapModes(this->lastSuggestResult); if (this->lastSuggestResult.message != SuggestResult::srOK) { - if(!this->lastSuggestResult.nextRefTypeHint.empty()){ + if (!this->lastSuggestResult.nextRefTypeHint.empty()) { //message = "Need more references"; } - } else { + } + else { completed = true; } @@ -314,24 +314,29 @@ bool TaskAttacher::updatePreview() Part::AttachExtension* pcAttach = ViewProvider->getObject()->getExtensionByType(); QString errMessage; bool attached = false; - try{ + try { attached = pcAttach->positionBySupport(); - } catch (Base::Exception &err){ + } + catch (Base::Exception& err) { errMessage = QCoreApplication::translate("Exception", err.what()); - } catch (Standard_Failure &err){ + } + catch (Standard_Failure& err) { errMessage = tr("OCC error: %1").arg(QString::fromLatin1(err.GetMessageString())); - } catch (...) { + } + catch (...) { errMessage = tr("unknown error"); } - if (errMessage.length()>0){ + if (errMessage.length() > 0) { ui->message->setText(tr("Attachment mode failed: %1").arg(errMessage)); ui->message->setStyleSheet(QString::fromLatin1("QLabel{color: red;}")); - } else { - if (!attached){ + } + else { + if (!attached) { ui->message->setText(tr("Not attached")); ui->message->setStyleSheet(QString()); - } else { - std::vector strs = AttacherGui::getUIStrings(pcAttach->attacher().getTypeId(),eMapMode(pcAttach->MapMode.getValue())); + } + else { + std::vector strs = AttacherGui::getUIStrings(pcAttach->attacher().getTypeId(), eMapMode(pcAttach->MapMode.getValue())); ui->message->setText(tr("Attached with mode %1").arg(strs[0])); ui->message->setStyleSheet(QString::fromLatin1("QLabel{color: green;}")); } @@ -345,47 +350,193 @@ bool TaskAttacher::updatePreview() QLineEdit* TaskAttacher::getLine(unsigned idx) { - switch(idx) { - case 0: return ui->lineRef1; - case 1: return ui->lineRef2; - case 2: return ui->lineRef3; - case 3: return ui->lineRef4; - default: return nullptr; + switch (idx) { + case 0: return ui->lineRef1; + case 1: return ui->lineRef2; + case 2: return ui->lineRef3; + case 3: return ui->lineRef4; + default: return nullptr; } } +void TaskAttacher::findCorrectObjAndSubInThisContext(App::DocumentObject*& rootObj, std::string& sub) +{ + // The reference that we store must take into account the hierarchy of geoFeatures. For example: + // - Part + // - - Cube + // - Sketch + // if sketch is attached to Cube.Face1 then it must store Part:Cube.Face3 as Sketch is outside of Part. + // - Part + // - - Cube + // - - Sketch + // In this example it must store Cube:Face3 because Sketch is inside Part, sibling of Cube. + // So placement of Part is already taken into account. + // - Part1 + // - - Part2 + // - - - Cube + // - - Sketch + // In this example it must store Part2:Cube.Face3 since Part1 is already taken into account. + // - Part1 + // - - Part2 + // - - - Cube + // - - Part3 + // - - - Sketch + // In this example it's not possible because Sketch has Part3 placement. So it should be rejected + // So we need to take the selection object and subname, and process them to get the correct obj/sub based + // on attached and attaching objects positions. + + std::vector names = Base::Tools::splitSubName(sub); + if (!rootObj || names.size() < 2) { + return; + } + names.insert(names.begin(), rootObj->getNameInDocument()); + + App::Document* doc = rootObj->getDocument(); + App::DocumentObject* attachingObj = ViewProvider->getObject(); // Attaching object + App::DocumentObject* subObj = rootObj->getSubObject(sub.c_str()); // Object being attached. + if (!subObj || subObj == rootObj) { + // Case of root object. We don't need to modify it. + return; + } + if (subObj == attachingObj) { + //prevent self-referencing + rootObj = nullptr; + return; + } + + // Check if attachingObj is a root object. if so we keep the full path. + auto* group = App::GeoFeatureGroupExtension::getGroupOfObject(attachingObj); + if (!group) { + if (attachingObj->getDocument() != rootObj->getDocument()) { + // If it's not in same document then it's not a good selection + rootObj = nullptr; + } + // if it's same document we keep the rootObj and sub unchanged. + return; + } + + bool groupPassed = false; + for (size_t i = 0; i < names.size(); ++i) { + App::DocumentObject* obj = doc->getObject(names[i].c_str()); + if (!obj) { + Base::Console().TranslatedUserError("TaskAttacher", + "Unsuitable selection: '%s' cannot be attached to '%s' from within it's group '%s'.\n", + attachingObj->getFullLabel(), subObj->getFullLabel(), group->getFullLabel()); + rootObj = nullptr; + return; + } + + if (groupPassed) { + rootObj = obj; + + // Rebuild 'sub' starting from the next element after the current 'name' + sub = ""; + for (size_t j = i + 1; j < names.size(); ++j) { + sub += names[j]; + if (j != names.size() - 1) { + sub += "."; // Add a period between elements + } + } + return; + } + + // In case the attaching object is in a link to a part. + // For instance : + // - Part1 + // - - LinkToPart2 + // - - - Cube + // - - - Sketch + obj = obj->getLinkedObject(); + + if (obj == group) { + groupPassed = true; + } + } + + // if we reach this point it means that attaching object's group is outside of + // the scope of the attached object. For instance: + // - Part1 + // - - Part2 + // - - - Cube + // - - Part3 + // - - - Sketch + // In this case the selection is not acceptable. + rootObj = nullptr; +} + +void TaskAttacher::handleInitialSelection() +{ + // We handle initial selection only if it is not attached yet. + App::DocumentObject* obj = ViewProvider->getObject(); + Part::AttachExtension* pcAttach = obj->getExtensionByType(); + std::vector refs = pcAttach->AttachmentSupport.getValues(); + + if (!refs.empty()) { + return; + } + std::vector subAndObjNamePairs; + + auto sel = Gui::Selection().getSelectionEx("", + App::DocumentObject::getClassTypeId(), Gui::ResolveMode::NoResolve); + for (auto& selObj : sel) { + std::vector subs = selObj.getSubNames(); + std::string objName = selObj.getFeatName(); + for (auto& sub : subs) { + SubAndObjName objSubName = { objName, sub }; + subAndObjNamePairs.push_back(objSubName); + } + } + addToReference(subAndObjNamePairs); +} + void TaskAttacher::onSelectionChanged(const Gui::SelectionChanges& msg) { - if (!ViewProvider) + if (!ViewProvider) { return; + } if (msg.Type == Gui::SelectionChanges::AddSelection) { - if (iActiveRef < 0) - return; + SubAndObjName pair = { msg.pObjectName, msg.pSubName }; + addToReference(pair); + } +} - // Note: The validity checking has already been done in ReferenceSelection.cpp - Part::AttachExtension* pcAttach = ViewProvider->getObject()->getExtensionByType(); +void TaskAttacher::addToReference(const std::vector& pairs) +{ + if (iActiveRef < 0) { + return; + } + + // Note: The validity checking has already been done in ReferenceSelection.cpp + App::DocumentObject* obj = ViewProvider->getObject(); + Part::AttachExtension* pcAttach = obj->getExtensionByType(); + + for (auto& pair : pairs) { std::vector refs = pcAttach->AttachmentSupport.getValues(); std::vector refnames = pcAttach->AttachmentSupport.getSubValues(); - App::DocumentObject* selObj = ViewProvider->getObject()->getDocument()->getObject(msg.pObjectName); - if (!selObj || selObj == ViewProvider->getObject())//prevent self-referencing - return; - std::string subname = msg.pSubName; + App::DocumentObject* selObj = obj->getDocument()->getObject(pair.objName.c_str()); + std::string subname = pair.subName; + findCorrectObjAndSubInThisContext(selObj, subname); + if (!selObj) { + return; + } // Remove subname for planes and datum features - if (selObj->isDerivedFrom() || - selObj->isDerivedFrom()) + if (selObj->isDerivedFrom() || selObj->isDerivedFrom()) { subname = ""; + } // eliminate duplicate selections - for (size_t r = 0; r < refs.size(); r++) - if ((refs[r] == selObj) && (refnames[r] == subname)) + for (size_t r = 0; r < refs.size(); r++) { + if ((refs[r] == selObj) && (refnames[r] == subname)) { return; + } + } - if (autoNext && iActiveRef > 0 && iActiveRef == static_cast(refnames.size())){ - if (refs[iActiveRef-1] == selObj - && refnames[iActiveRef-1].length() != 0 && subname.length() == 0){ + if (autoNext && iActiveRef > 0 && iActiveRef == static_cast(refnames.size())) { + if (refs[iActiveRef - 1] == selObj + && refnames[iActiveRef - 1].length() != 0 && subname.length() == 0) { //A whole object was selected by clicking it twice. Fill it //into previous reference, where a sub-named reference filled by //the first click is already stored. @@ -396,31 +547,13 @@ void TaskAttacher::onSelectionChanged(const Gui::SelectionChanges& msg) if (iActiveRef < static_cast(refs.size())) { refs[iActiveRef] = selObj; refnames[iActiveRef] = subname; - } else { + } + else { refs.push_back(selObj); refnames.push_back(subname); } - //bool error = false; - try { - pcAttach->AttachmentSupport.setValues(refs, refnames); - updateListOfModes(); - eMapMode mmode = getActiveMapMode();//will be mmDeactivated, if selected or if no modes are available - if(mmode == mmDeactivated){ - //error = true; - this->completed = false; - } else { - this->completed = true; - } - pcAttach->MapMode.setValue(mmode); - selectMapMode(mmode); - updatePreview(); - } - catch(Base::Exception& e) { - //error = true; - ui->message->setText(QCoreApplication::translate("Exception", e.what())); - ui->message->setStyleSheet(QString::fromLatin1("QLabel{color: red;}")); - } + pcAttach->AttachmentSupport.setValues(refs, refnames); QLineEdit* line = getLine(iActiveRef); if (line) { @@ -431,17 +564,43 @@ void TaskAttacher::onSelectionChanged(const Gui::SelectionChanges& msg) } if (autoNext) { - if (iActiveRef == -1){ + if (iActiveRef == -1) { //nothing to do - } else if (iActiveRef == 4 || this->lastSuggestResult.nextRefTypeHint.empty()){ + } + else if (iActiveRef == 4 || this->lastSuggestResult.nextRefTypeHint.empty()) { iActiveRef = -1; - } else { + } + else { iActiveRef++; } } + } - updateReferencesUI(); + try { + updateListOfModes(); + eMapMode mmode = getActiveMapMode(); //will be mmDeactivated, if selected or if no modes are available + if (mmode == mmDeactivated) { + //error = true; + this->completed = false; + } + else { + this->completed = true; + } + pcAttach->MapMode.setValue(mmode); + selectMapMode(mmode); + updatePreview(); } + catch (Base::Exception& e) { + ui->message->setText(QCoreApplication::translate("Exception", e.what())); + ui->message->setStyleSheet(QString::fromLatin1("QLabel{color: red;}")); + } + + updateReferencesUI(); +} + +void TaskAttacher::addToReference(SubAndObjName pair) +{ + addToReference({{{ pair }}}); } void TaskAttacher::onAttachmentOffsetChanged(double /*val*/, int idx) @@ -462,17 +621,17 @@ void TaskAttacher::onAttachmentOffsetChanged(double /*val*/, int idx) if (idx == 2) { pos.z = ui->attachmentOffsetZ->value().getValueAs(Base::Quantity::MilliMetre); } - if (idx >= 0 && idx <= 2){ + if (idx >= 0 && idx <= 2) { pl.setPosition(pos); } - if (idx >= 3 && idx <= 5){ + if (idx >= 3 && idx <= 5) { double yaw, pitch, roll; yaw = ui->attachmentOffsetYaw->value().getValueAs(Base::Quantity::Degree); pitch = ui->attachmentOffsetPitch->value().getValueAs(Base::Quantity::Degree); roll = ui->attachmentOffsetRoll->value().getValueAs(Base::Quantity::Degree); Base::Rotation rot; - rot.setYawPitchRoll(yaw,pitch,roll); + rot.setYawPitchRoll(yaw, pitch, roll); pl.setRotation(rot); } @@ -526,7 +685,8 @@ void TaskAttacher::onButtonRef(const bool checked, unsigned idx) if (checked) { Gui::Selection().clearSelection(); iActiveRef = idx; - } else { + } + else { iActiveRef = -1; } updateRefButton(0); @@ -619,12 +779,15 @@ void TaskAttacher::onRefName(const QString& text, unsigned idx) if (obj->isDerivedFrom()) { // everything is OK (we assume a Part can only have exactly 3 App::Plane objects located at the base of the feature tree) subElement.clear(); - } else if (obj->isDerivedFrom()) { + } + else if (obj->isDerivedFrom()) { // everything is OK (we assume a Part can only have exactly 3 App::Line objects located at the base of the feature tree) subElement.clear(); - } else if (obj->isDerivedFrom()) { + } + else if (obj->isDerivedFrom()) { subElement.clear(); - } else { + } + else { // TODO: check validity of the text that was entered: Does subElement actually reference to an element on the obj? auto getSubshapeName = [](const QString& part) -> std::string { @@ -672,7 +835,8 @@ void TaskAttacher::onRefName(const QString& text, unsigned idx) if (idx < refs.size()) { refs[idx] = obj; refnames[idx] = subElement; - } else { + } + else { refs.push_back(obj); refnames.emplace_back(subElement); } @@ -690,12 +854,12 @@ void TaskAttacher::updateRefButton(int idx) return; QAbstractButton* b; - switch(idx){ - case 0: b = ui->buttonRef1; break; - case 1: b = ui->buttonRef2; break; - case 2: b = ui->buttonRef3; break; - case 3: b = ui->buttonRef4; break; - default: throw Base::IndexError("button index out of range"); + switch (idx) { + case 0: b = ui->buttonRef1; break; + case 1: b = ui->buttonRef2; break; + case 2: b = ui->buttonRef3; break; + case 3: b = ui->buttonRef4; break; + default: throw Base::IndexError("button index out of range"); } Part::AttachExtension* pcAttach = ViewProvider->getObject()->getExtensionByType(); @@ -713,10 +877,12 @@ void TaskAttacher::updateRefButton(int idx) if (iActiveRef == idx) { b->setText(tr("Selecting...")); - } else if (idx < static_cast(this->lastSuggestResult.references_Types.size())){ + } + else if (idx < static_cast(this->lastSuggestResult.references_Types.size())) { b->setText(AttacherGui::getShapeTypeText(this->lastSuggestResult.references_Types[idx])); - } else { - b->setText(tr("Reference%1").arg(idx+1)); + } + else { + b->setText(tr("Reference%1").arg(idx + 1)); } } @@ -740,9 +906,9 @@ void TaskAttacher::updateAttachmentOffsetUI() ui->attachmentOffsetPitch->blockSignals(bBlock); ui->attachmentOffsetRoll->blockSignals(bBlock); - ui->attachmentOffsetX->setValue(Base::Quantity(pos.x,Base::Unit::Length)); - ui->attachmentOffsetY->setValue(Base::Quantity(pos.y,Base::Unit::Length)); - ui->attachmentOffsetZ->setValue(Base::Quantity(pos.z,Base::Unit::Length)); + ui->attachmentOffsetX->setValue(Base::Quantity(pos.x, Base::Unit::Length)); + ui->attachmentOffsetY->setValue(Base::Quantity(pos.y, Base::Unit::Length)); + ui->attachmentOffsetZ->setValue(Base::Quantity(pos.z, Base::Unit::Length)); ui->attachmentOffsetYaw->setValue(yaw); ui->attachmentOffsetPitch->setValue(pitch); ui->attachmentOffsetRoll->setValue(roll); @@ -750,13 +916,13 @@ void TaskAttacher::updateAttachmentOffsetUI() auto expressions = ViewProvider->getObject()->ExpressionEngine.getExpressions(); bool bRotationBound = false; bRotationBound = bRotationBound || - expressions.find(App::ObjectIdentifier::parse(ViewProvider->getObject(),std::string("AttachmentOffset.Rotation.Angle"))) != expressions.end(); + expressions.find(App::ObjectIdentifier::parse(ViewProvider->getObject(), std::string("AttachmentOffset.Rotation.Angle"))) != expressions.end(); bRotationBound = bRotationBound || - expressions.find(App::ObjectIdentifier::parse(ViewProvider->getObject(),std::string("AttachmentOffset.Rotation.Axis.x"))) != expressions.end(); + expressions.find(App::ObjectIdentifier::parse(ViewProvider->getObject(), std::string("AttachmentOffset.Rotation.Axis.x"))) != expressions.end(); bRotationBound = bRotationBound || - expressions.find(App::ObjectIdentifier::parse(ViewProvider->getObject(),std::string("AttachmentOffset.Rotation.Axis.y"))) != expressions.end(); + expressions.find(App::ObjectIdentifier::parse(ViewProvider->getObject(), std::string("AttachmentOffset.Rotation.Axis.y"))) != expressions.end(); bRotationBound = bRotationBound || - expressions.find(App::ObjectIdentifier::parse(ViewProvider->getObject(),std::string("AttachmentOffset.Rotation.Axis.z"))) != expressions.end(); + expressions.find(App::ObjectIdentifier::parse(ViewProvider->getObject(), std::string("AttachmentOffset.Rotation.Axis.z"))) != expressions.end(); ui->attachmentOffsetYaw->setEnabled(!bRotationBound); ui->attachmentOffsetPitch->setEnabled(!bRotationBound); @@ -794,22 +960,23 @@ void TaskAttacher::updateListOfModes() this->lastSuggestResult.bestFitMode = mmDeactivated; size_t lastValidModeItemIndex = mmDummy_NumberOfModes; - if (pcAttach->AttachmentSupport.getSize() > 0){ + if (pcAttach->AttachmentSupport.getSize() > 0) { pcAttach->attacher().suggestMapModes(this->lastSuggestResult); modesInList = this->lastSuggestResult.allApplicableModes; modesInList.insert(modesInList.begin(), mmDeactivated); // always have the option to choose Deactivated mode //add reachable modes to the list, too, but gray them out (using lastValidModeItemIndex, later) - lastValidModeItemIndex = modesInList.size()-1; - for(std::pair &rm: this->lastSuggestResult.reachableModes){ + lastValidModeItemIndex = modesInList.size() - 1; + for (std::pair& rm : this->lastSuggestResult.reachableModes) { modesInList.push_back(rm.first); } - } else { + } + else { //no references - display all modes modesInList.clear(); modesInList.push_back(mmDeactivated); - for( int mmode = 0 ; mmode < mmDummy_NumberOfModes ; mmode++){ + for (int mmode = 0; mmode < mmDummy_NumberOfModes; mmode++) { if (pcAttach->attacher().modeEnabled[mmode]) modesInList.push_back(eMapMode(mmode)); } @@ -820,40 +987,42 @@ void TaskAttacher::updateListOfModes() ui->listOfModes->clear(); QListWidgetItem* iSelect = nullptr; if (!modesInList.empty()) { - for (size_t i = 0 ; i < modesInList.size() ; ++i){ + for (size_t i = 0; i < modesInList.size(); ++i) { eMapMode mmode = modesInList[i]; - std::vector mstr = AttacherGui::getUIStrings(pcAttach->attacher().getTypeId(),mmode); + std::vector mstr = AttacherGui::getUIStrings(pcAttach->attacher().getTypeId(), mmode); ui->listOfModes->addItem(mstr[0]); QListWidgetItem* item = ui->listOfModes->item(i); QString tooltip = mstr[1]; if (mmode != mmDeactivated) { tooltip += QString::fromLatin1("\n\n%1\n%2") - .arg(tr("Reference combinations:"), - AttacherGui::getRefListForMode(pcAttach->attacher(),mmode).join(QString::fromLatin1("\n"))); + .arg(tr("Reference combinations:"), + AttacherGui::getRefListForMode(pcAttach->attacher(), mmode).join(QString::fromLatin1("\n"))); } item->setToolTip(tooltip); if (mmode == curMode && curMode != mmDeactivated) iSelect = ui->listOfModes->item(i); - if (i > lastValidModeItemIndex){ + if (i > lastValidModeItemIndex) { //potential mode - can be reached by selecting more stuff item->setFlags(item->flags() & ~(Qt::ItemFlag::ItemIsEnabled | Qt::ItemFlag::ItemIsSelectable)); - refTypeStringList &extraRefs = this->lastSuggestResult.reachableModes[mmode]; - if (extraRefs.size() == 1){ + refTypeStringList& extraRefs = this->lastSuggestResult.reachableModes[mmode]; + if (extraRefs.size() == 1) { QStringList buf; - for(eRefType rt : extraRefs[0]){ + for (eRefType rt : extraRefs[0]) { buf.append(AttacherGui::getShapeTypeText(rt)); } item->setText(tr("%1 (add %2)").arg( - item->text(), - buf.join(QString::fromLatin1("+")) - )); - } else { + item->text(), + buf.join(QString::fromLatin1("+")) + )); + } + else { item->setText(tr("%1 (add more references)").arg(item->text())); } - } else if (mmode == this->lastSuggestResult.bestFitMode){ + } + else if (mmode == this->lastSuggestResult.bestFitMode) { //suggested mode - make bold QFont fnt = item->font(); fnt.setBold(true); @@ -873,7 +1042,7 @@ void TaskAttacher::updateListOfModes() void TaskAttacher::selectMapMode(eMapMode mmode) { ui->listOfModes->blockSignals(true); - for (size_t i = 0; i < modesInList.size(); ++i) { + for (size_t i = 0; i < modesInList.size(); ++i) { if (modesInList[i] == mmode) { ui->listOfModes->item(i)->setSelected(true); } @@ -910,7 +1079,7 @@ void TaskAttacher::onRefName3(const QString& text) onRefName(text, 2); } -void TaskAttacher::onRefName4(const QString &text) +void TaskAttacher::onRefName4(const QString& text) { onRefName(text, 3); } @@ -920,7 +1089,7 @@ bool TaskAttacher::getFlip() const return ui->checkBoxFlip->isChecked(); } -void TaskAttacher::changeEvent(QEvent *e) +void TaskAttacher::changeEvent(QEvent* e) { TaskBox::changeEvent(e); if (e->type() == QEvent::LanguageChange) { @@ -958,11 +1127,11 @@ void TaskAttacher::changeEvent(QEvent *e) void TaskAttacher::visibilityAutomation(bool opening_not_closing) { - auto defvisfunc = [] (bool opening_not_closing, - const std::string &postfix, - Gui::ViewProviderDocumentObject* vp, - App::DocumentObject *editObj, - const std::string& editSubName) { + auto defvisfunc = [](bool opening_not_closing, + const std::string& postfix, + Gui::ViewProviderDocumentObject* vp, + App::DocumentObject* editObj, + const std::string& editSubName) { if (opening_not_closing) { QString code = QString::fromLatin1( "import Show\n" @@ -981,19 +1150,19 @@ void TaskAttacher::visibilityAutomation(bool opening_not_closing) "\t\tif len(tvObj.AttachmentSupport) > 0:\n" "\t\t\t_tv_%4.show([lnk[0] for lnk in tvObj.AttachmentSupport])\n" "del(tvObj)" - ).arg( - QString::fromLatin1(Gui::Command::getObjectCmd(vp->getObject()).c_str()), - QString::fromLatin1(Gui::Command::getObjectCmd(editObj).c_str()), - QString::fromLatin1(editSubName.c_str()), - QString::fromLatin1(postfix.c_str())); - Gui::Command::runCommand(Gui::Command::Gui,code.toLatin1().constData()); + ).arg( + QString::fromLatin1(Gui::Command::getObjectCmd(vp->getObject()).c_str()), + QString::fromLatin1(Gui::Command::getObjectCmd(editObj).c_str()), + QString::fromLatin1(editSubName.c_str()), + QString::fromLatin1(postfix.c_str())); + Gui::Command::runCommand(Gui::Command::Gui, code.toLatin1().constData()); } else if (!postfix.empty()) { QString code = QString::fromLatin1( "_tv_%1.restore()\n" "del(_tv_%1)" - ).arg(QString::fromLatin1(postfix.c_str())); - Gui::Command::runCommand(Gui::Command::Gui,code.toLatin1().constData()); + ).arg(QString::fromLatin1(postfix.c_str())); + Gui::Command::runCommand(Gui::Command::Gui, code.toLatin1().constData()); } }; @@ -1009,18 +1178,19 @@ void TaskAttacher::visibilityAutomation(bool opening_not_closing) return; auto editDoc = Gui::Application::Instance->editDocument(); - App::DocumentObject *editObj = ViewProvider->getObject(); + App::DocumentObject* editObj = ViewProvider->getObject(); std::string editSubName; auto sels = Gui::Selection().getSelection(nullptr, Gui::ResolveMode::NoResolve, true); - if(!sels.empty() && sels[0].pResolvedObject - && sels[0].pResolvedObject->getLinkedObject()==editObj) + if (!sels.empty() && sels[0].pResolvedObject + && sels[0].pResolvedObject->getLinkedObject() == editObj) { editObj = sels[0].pObject; editSubName = sels[0].SubName; - } else { - ViewProviderDocumentObject *editVp = nullptr; + } + else { + ViewProviderDocumentObject* editVp = nullptr; if (editDoc) { - editDoc->getInEdit(&editVp,&editSubName); + editDoc->getInEdit(&editVp, &editSubName); if (editVp) editObj = editVp->getObject(); } @@ -1029,7 +1199,7 @@ void TaskAttacher::visibilityAutomation(bool opening_not_closing) try { visAutoFunc(opening_not_closing, ObjectName, ViewProvider, editObj, editSubName); } - catch (const Base::Exception &e){ + catch (const Base::Exception& e) { e.ReportException(); } catch (const Py::Exception&) { @@ -1043,7 +1213,7 @@ void TaskAttacher::visibilityAutomation(bool opening_not_closing) objName.swap(ObjectName); visAutoFunc(opening_not_closing, objName, nullptr, nullptr, std::string()); } - catch (Base::Exception &e) { + catch (Base::Exception& e) { e.ReportException(); } } @@ -1054,14 +1224,14 @@ void TaskAttacher::visibilityAutomation(bool opening_not_closing) // TaskDialog //++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ -TaskDlgAttacher::TaskDlgAttacher(Gui::ViewProviderDocumentObject *ViewProvider, bool createBox) - : TaskDialog(),ViewProvider(ViewProvider), parameter(nullptr) +TaskDlgAttacher::TaskDlgAttacher(Gui::ViewProviderDocumentObject* ViewProvider, bool createBox) + : TaskDialog(), ViewProvider(ViewProvider), parameter(nullptr) { assert(ViewProvider); setDocumentName(ViewProvider->getDocument()->getDocument()->getName()); - if(createBox) { - parameter = new TaskAttacher(ViewProvider, nullptr, QString(), tr("Attachment")); + if (createBox) { + parameter = new TaskAttacher(ViewProvider, nullptr, QString(), tr("Attachment")); Content.push_back(parameter); } } @@ -1096,11 +1266,11 @@ bool TaskDlgAttacher::accept() //DeepSOIC: changed this to heavily rely on dialog constantly updating feature properties //if (pcAttach->AttachmentOffset.isTouched()){ - Base::Placement plm = pcAttach->AttachmentOffset.getValue(); - double yaw, pitch, roll; - plm.getRotation().getYawPitchRoll(yaw,pitch,roll); - Gui::cmdAppObjectArgs(obj, "AttachmentOffset = App.Placement(App.Vector(%.10f, %.10f, %.10f), App.Rotation(%.10f, %.10f, %.10f))", - plm.getPosition().x, plm.getPosition().y, plm.getPosition().z, yaw, pitch, roll); + Base::Placement plm = pcAttach->AttachmentOffset.getValue(); + double yaw, pitch, roll; + plm.getRotation().getYawPitchRoll(yaw, pitch, roll); + Gui::cmdAppObjectArgs(obj, "AttachmentOffset = App.Placement(App.Vector(%.10f, %.10f, %.10f), App.Rotation(%.10f, %.10f, %.10f))", + plm.getPosition().x, plm.getPosition().y, plm.getPosition().z, yaw, pitch, roll); //} Gui::cmdAppObjectArgs(obj, "MapReversed = %s", pcAttach->MapReversed.getValue() ? "True" : "False"); diff --git a/src/Mod/Part/Gui/TaskAttacher.h b/src/Mod/Part/Gui/TaskAttacher.h index 8cb5192c00a2..ce63d6cc210a 100644 --- a/src/Mod/Part/Gui/TaskAttacher.h +++ b/src/Mod/Part/Gui/TaskAttacher.h @@ -113,6 +113,15 @@ private Q_SLOTS: void updateRefButton(int idx); void updateAttachmentOffsetUI(); + void findCorrectObjAndSubInThisContext(App::DocumentObject*& obj, std::string& sub); + void handleInitialSelection(); + struct SubAndObjName { + std::string objName; + std::string subName; + }; + void addToReference(SubAndObjName pair); + void addToReference(const std::vector& pairs); + /** * @brief updateListOfModes Fills the mode list with modes that apply to * current set of references. Maintains selection when possible. diff --git a/src/Mod/Part/Gui/TaskSweep.cpp b/src/Mod/Part/Gui/TaskSweep.cpp index 520e66675f5b..d68cab8fbf53 100644 --- a/src/Mod/Part/Gui/TaskSweep.cpp +++ b/src/Mod/Part/Gui/TaskSweep.cpp @@ -199,7 +199,7 @@ void SweepWidget::findShapes() } } - if (!shape.Infinite() && + if (!shape.Infinite() && (shape.ShapeType() == TopAbs_FACE || shape.ShapeType() == TopAbs_WIRE || shape.ShapeType() == TopAbs_EDGE || diff --git a/src/Mod/Part/Gui/ViewProviderAttachExtension.cpp b/src/Mod/Part/Gui/ViewProviderAttachExtension.cpp index 06a2dd377a13..af287a1ec5d4 100644 --- a/src/Mod/Part/Gui/ViewProviderAttachExtension.cpp +++ b/src/Mod/Part/Gui/ViewProviderAttachExtension.cpp @@ -113,6 +113,10 @@ void ViewProviderAttachExtension::extensionSetupContextMenu(QMenu* menu, QObject void ViewProviderAttachExtension::showAttachmentEditor() { + if (Gui::Control().activeDialog()) { + Gui::Control().closeDialog(); + } + // See PropertyEnumAttacherItem::openTask() Gui::TaskView::TaskDialog* dlg = Gui::Control().activeDialog(); TaskDlgAttacher* task; diff --git a/src/Mod/Part/Gui/ViewProviderAttachExtension.h b/src/Mod/Part/Gui/ViewProviderAttachExtension.h index f3a1376c2df6..4aaff4ec904d 100644 --- a/src/Mod/Part/Gui/ViewProviderAttachExtension.h +++ b/src/Mod/Part/Gui/ViewProviderAttachExtension.h @@ -44,7 +44,6 @@ class PartGuiExport ViewProviderAttachExtension : public Gui::ViewProviderExtens void extensionUpdateData(const App::Property*) override; void extensionSetupContextMenu(QMenu*, QObject*, const char*) override; -private: void showAttachmentEditor(); }; diff --git a/src/Mod/Part/Gui/ViewProviderDatum.cpp b/src/Mod/Part/Gui/ViewProviderDatum.cpp new file mode 100644 index 000000000000..6b7373d1f317 --- /dev/null +++ b/src/Mod/Part/Gui/ViewProviderDatum.cpp @@ -0,0 +1,94 @@ +/*************************************************************************** + * Copyright (c) 2024 Ondsel (PL Boyer) * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#include "PreCompiled.h" + +#ifndef _PreComp_ +#endif + +#include +#include +#include +#include +#include +#include +#include + +#include "ViewProviderDatum.h" + + +using namespace PartGui; + +PROPERTY_SOURCE_WITH_EXTENSIONS(PartGui::ViewProviderLine, Gui::ViewProviderLine) + +ViewProviderLine::ViewProviderLine() +{ + PartGui::ViewProviderAttachExtension::initExtension(this); +} + +bool ViewProviderLine::doubleClicked() +{ + showAttachmentEditor(); + return true; +} + +PROPERTY_SOURCE_WITH_EXTENSIONS(PartGui::ViewProviderPlane, Gui::ViewProviderPlane) + +ViewProviderPlane::ViewProviderPlane() +{ + PartGui::ViewProviderAttachExtension::initExtension(this); +} + +bool ViewProviderPlane::doubleClicked() +{ + showAttachmentEditor(); + return true; +} + + +PROPERTY_SOURCE_WITH_EXTENSIONS(PartGui::ViewProviderPoint, Gui::ViewProviderPoint) + +ViewProviderPoint::ViewProviderPoint() +{ + PartGui::ViewProviderAttachExtension::initExtension(this); +} + +bool ViewProviderPoint::doubleClicked() +{ + showAttachmentEditor(); + return true; +} + + +PROPERTY_SOURCE_WITH_EXTENSIONS(PartGui::ViewProviderLCS, Gui::ViewProviderCoordinateSystem) + +ViewProviderLCS::ViewProviderLCS() +{ + PartGui::ViewProviderAttachExtension::initExtension(this); +} + +bool ViewProviderLCS::doubleClicked() +{ + showAttachmentEditor(); + return true; +} diff --git a/src/Mod/Part/Gui/ViewProviderDatum.h b/src/Mod/Part/Gui/ViewProviderDatum.h new file mode 100644 index 000000000000..46d232e80cdd --- /dev/null +++ b/src/Mod/Part/Gui/ViewProviderDatum.h @@ -0,0 +1,84 @@ +/*************************************************************************** + * Copyright (c) 2024 Ondsel (PL Boyer) * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + + +#ifndef PARTGUI_ViewProviderDatum_H +#define PARTGUI_ViewProviderDatum_H + +#include +#include +#include +#include +#include + +#include + +namespace PartGui { + +class PartGuiExport ViewProviderLine : public Gui::ViewProviderLine, PartGui::ViewProviderAttachExtension +{ + PROPERTY_HEADER_WITH_EXTENSIONS(PartGui::ViewProviderLine); + +public: + ViewProviderLine(); + ~ViewProviderLine() override = default; + + bool doubleClicked() override; +}; + +class PartGuiExport ViewProviderPlane : public Gui::ViewProviderPlane, PartGui::ViewProviderAttachExtension +{ + PROPERTY_HEADER_WITH_EXTENSIONS(PartGui::ViewProviderPlane); + +public: + ViewProviderPlane(); + ~ViewProviderPlane() override = default; + + bool doubleClicked() override; +}; + +class PartGuiExport ViewProviderPoint : public Gui::ViewProviderPoint, PartGui::ViewProviderAttachExtension +{ + PROPERTY_HEADER_WITH_EXTENSIONS(PartGui::ViewProviderPoint); + +public: + ViewProviderPoint(); + ~ViewProviderPoint() override = default; + + bool doubleClicked() override; +}; + +class PartGuiExport ViewProviderLCS : public Gui::ViewProviderCoordinateSystem, PartGui::ViewProviderAttachExtension +{ + PROPERTY_HEADER_WITH_EXTENSIONS(PartGui::ViewProviderLCS); + +public: + ViewProviderLCS(); + ~ViewProviderLCS() override = default; + + bool doubleClicked() override; +}; + +} // namespace PartGui + + +#endif // PARTGUI_ViewProviderDatum_H diff --git a/src/Mod/Part/Gui/WorkbenchManipulator.cpp b/src/Mod/Part/Gui/WorkbenchManipulator.cpp index b6a14976dc48..eee8c4aecece 100644 --- a/src/Mod/Part/Gui/WorkbenchManipulator.cpp +++ b/src/Mod/Part/Gui/WorkbenchManipulator.cpp @@ -37,6 +37,7 @@ void WorkbenchManipulator::modifyMenuBar([[maybe_unused]] Gui::MenuItem* menuBar void WorkbenchManipulator::modifyToolBars(Gui::ToolBarItem* toolBar) { addSelectionFilter(toolBar); + addDatums(toolBar); } void WorkbenchManipulator::modifyDockWindows([[maybe_unused]] Gui::DockWindowItems* dockWindow) @@ -71,3 +72,18 @@ void WorkbenchManipulator::addSelectionFilter(Gui::ToolBarItem* toolBar) } } } + +void WorkbenchManipulator::addDatums(Gui::ToolBarItem* toolBar) +{ + if (auto view = toolBar->findItem("Structure")) { + auto add = new Gui::ToolBarItem(); // NOLINT + add->setCommand("Part_Datums"); + auto item = view->findItem("Std_Group"); + if (item) { + view->insertItem(item, add); + } + else { + view->appendItem(add); + } + } +} diff --git a/src/Mod/Part/Gui/WorkbenchManipulator.h b/src/Mod/Part/Gui/WorkbenchManipulator.h index 338dd3243dfb..623f2cc50251 100644 --- a/src/Mod/Part/Gui/WorkbenchManipulator.h +++ b/src/Mod/Part/Gui/WorkbenchManipulator.h @@ -54,6 +54,7 @@ class WorkbenchManipulator: public Gui::WorkbenchManipulator private: static void addSectionCut(Gui::MenuItem* menuBar); static void addSelectionFilter(Gui::ToolBarItem* toolBar); + static void addDatums(Gui::ToolBarItem* toolBar); }; } // namespace PartGui diff --git a/src/Mod/Part/JoinFeatures.py b/src/Mod/Part/JoinFeatures.py index d6db3772fdc3..5943f98d8eca 100644 --- a/src/Mod/Part/JoinFeatures.py +++ b/src/Mod/Part/JoinFeatures.py @@ -108,16 +108,14 @@ def __init__(self, vobj): def getIcon(self): if self.Object is None: - return getIconPath("Part_JoinConnect.svg") + return ":/icons/booleans/Part_JoinConnect.svg" else: - return getIconPath( - { - "bypass": "Part_JoinBypass.svg", - "Connect": "Part_JoinConnect.svg", - "Embed": "Part_JoinEmbed.svg", - "Cutout": "Part_JoinCutout.svg", + return { + "bypass": ":/icons/booleans/Part_JoinBypass.svg", + "Connect": ":/icons/booleans/Part_JoinConnect.svg", + "Embed": ":/icons/booleans/Part_JoinEmbed.svg", + "Cutout": ":/icons/booleans/Part_JoinCutout.svg", }[self.Object.Mode] - ) def attach(self, vobj): self.ViewObject = vobj @@ -145,8 +143,3 @@ def onDelete(self, feature, subelements): except Exception as err: FreeCAD.Console.PrintError("Error in onDelete: " + str(err)) return True - - -def getIconPath(icon_dot_svg): - return ":/icons/" + icon_dot_svg - diff --git a/src/Mod/Part/parttests/ColorTransparencyTest.py b/src/Mod/Part/parttests/ColorTransparencyTest.py index 273220ef8390..ec306914d93f 100644 --- a/src/Mod/Part/parttests/ColorTransparencyTest.py +++ b/src/Mod/Part/parttests/ColorTransparencyTest.py @@ -46,7 +46,7 @@ def test_default_shape_color(self): of 0 corresponds to a fully transparent color, which is not desirable. It changes the transparency when loading to 1.0 """ - + self._pg.SetUnsigned('DefaultShapeColor', 0xff000000) # red obj = self._doc.addObject('Part::Box') @@ -64,6 +64,6 @@ def test_app_plane_transparency(self): obj = self._doc.addObject('App::Origin') t = self._doc.findObjects('App::Plane')[0].ViewObject.Transparency - self.assertEqual(t, 50, - 'transparency of App::Plane object is {} instead of 50'.format(t)) + self.assertEqual(t, 0, + 'transparency of App::Plane object is {} instead of 0'.format(t)) diff --git a/src/Mod/PartDesign/App/Body.cpp b/src/Mod/PartDesign/App/Body.cpp index 82ce60f2af56..dcc6a666cb01 100644 --- a/src/Mod/PartDesign/App/Body.cpp +++ b/src/Mod/PartDesign/App/Body.cpp @@ -219,7 +219,9 @@ bool Body::isAllowed(const App::DocumentObject *obj) //obj->isDerivedFrom() // trouble with this line on Windows!? Linker fails to find getClassTypeId() of the Part::FeaturePython... //obj->isDerivedFrom() // allow VarSets for parameterization - obj->isDerivedFrom() + obj->isDerivedFrom() || + obj->isDerivedFrom() || + obj->isDerivedFrom() ); } diff --git a/src/Mod/PartDesign/App/FeatureExtrude.cpp b/src/Mod/PartDesign/App/FeatureExtrude.cpp index 6d0e4938e05d..e2deb3f82b77 100644 --- a/src/Mod/PartDesign/App/FeatureExtrude.cpp +++ b/src/Mod/PartDesign/App/FeatureExtrude.cpp @@ -141,8 +141,13 @@ TopoShape FeatureExtrude::makeShellFromUpToShape(TopoShape shape, TopoShape sket dir = -dir; cfaces = Part::findAllFacesCutBy(shape, sketchshape, dir); } - struct Part::cutTopoShapeFaces *nearFace; - struct Part::cutTopoShapeFaces *farFace; + + if (cfaces.empty()) { + return shape; + } + + struct Part::cutTopoShapeFaces *nearFace {}; + struct Part::cutTopoShapeFaces *farFace {}; nearFace = farFace = &cfaces.front(); for (auto &face : cfaces) { if (face.distsq > farFace->distsq) { diff --git a/src/Mod/PartDesign/App/FeatureHelix.cpp b/src/Mod/PartDesign/App/FeatureHelix.cpp index f3f3a9424564..62c70e5efab1 100644 --- a/src/Mod/PartDesign/App/FeatureHelix.cpp +++ b/src/Mod/PartDesign/App/FeatureHelix.cpp @@ -260,7 +260,7 @@ App::DocumentObjectExecReturn* Helix::execute() if (SC.State() == TopAbs_IN) { result.Reverse(); } - + fix.LimitTolerance(result, Precision::Confusion() * size * Tolerance.getValue() ); // significant precision reduction due to helical approximation - needed to allow fusion to succeed AddSubShape.setValue(result); @@ -408,8 +408,7 @@ TopoDS_Shape Helix::generateHelixPath(double breakAtTurn) bool turned = axisOffset < 0; // since the factor does not only change the radius but also the path position, we must shift its offset back // using the square of the factor - double noAngle = angle == 0. ? 1. : 0.; // alternative to the legacy use of an auxiliary path - double startOffset = 10000.0 * std::fabs(noAngle * (profileCenter * axisVector) - baseVector * axisVector); + double startOffset = 10000.0 * std::fabs((angle <= 0. ? 1. : 0.) * (profileCenter * axisVector) - baseVector * axisVector); if (radius < Precision::Confusion()) { // in this case ensure that axis is not in the sketch plane diff --git a/src/Mod/PartDesign/App/FeatureHole.cpp b/src/Mod/PartDesign/App/FeatureHole.cpp index b2b9054698b4..d4329b4a3109 100644 --- a/src/Mod/PartDesign/App/FeatureHole.cpp +++ b/src/Mod/PartDesign/App/FeatureHole.cpp @@ -37,6 +37,8 @@ # include # include # include +# include +# include # include # include # include @@ -65,7 +67,7 @@ namespace PartDesign { const char* Hole::DepthTypeEnums[] = { "Dimension", "ThroughAll", /*, "UpToFirst", */ nullptr }; const char* Hole::ThreadDepthTypeEnums[] = { "Hole Depth", "Dimension", "Tapped (DIN76)", nullptr }; -const char* Hole::ThreadTypeEnums[] = { "None", "ISOMetricProfile", "ISOMetricFineProfile", "UNC", "UNF", "UNEF", nullptr}; +const char* Hole::ThreadTypeEnums[] = { "None", "ISOMetricProfile", "ISOMetricFineProfile", "UNC", "UNF", "UNEF", "NPT", "BSP", "BSW", "BSF", nullptr}; const char* Hole::ClearanceMetricEnums[] = { "Standard", "Close", "Wide", nullptr}; const char* Hole::ClearanceUTSEnums[] = { "Normal", "Close", "Loose", nullptr }; const char* Hole::DrillPointEnums[] = { "Flat", "Angled", nullptr}; @@ -86,55 +88,55 @@ const Hole::ThreadDescription Hole::threadDescription[][171] = { /* None */ { - { "---", 6.0, 0.0, 0.0 }, + { "---", 6.0, 0.0, 0.0 }, }, /* ISO metric regular */ - /* ISO metric threaded core hole diameters according to ISO 2306 */ - // {name, thread diameter, thread pitch, core hole diameter} + /* ISO metric threaded Tap-Drill diameters according to ISO 2306 */ + // {name, thread diameter, thread pitch, Tap-Drill diameter} { - { "M1", 1.0, 0.25, 0.75 }, - { "M1.1", 1.1, 0.25, 0.85 }, - { "M1.2", 1.2, 0.25, 0.95 }, - { "M1.4", 1.4, 0.30, 1.10 }, - { "M1.6", 1.6, 0.35, 1.25 }, - { "M1.8", 1.8, 0.35, 1.45 }, - { "M2", 2.0, 0.40, 1.60 }, - { "M2.2", 2.2, 0.45, 1.75 }, - { "M2.5", 2.5, 0.45, 2.05 }, - { "M3", 3.0, 0.50, 2.50 }, - { "M3.5", 3.5, 0.60, 2.90 }, - { "M4", 4.0, 0.70, 3.30 }, - { "M4.5", 4.5, 0.75, 3.70 }, - { "M5", 5.0, 0.80, 4.20 }, - { "M6", 6.0, 1.00, 5.00 }, - { "M7", 7.0, 1.00, 6.00 }, - { "M8", 8.0, 1.25, 6.80 }, - { "M9", 9.0, 1.25, 7.80 }, - { "M10", 10.0, 1.50, 8.50 }, - { "M11", 11.0, 1.50, 9.50 }, - { "M12", 12.0, 1.75, 10.20 }, - { "M14", 14.0, 2.00, 12.00 }, - { "M16", 16.0, 2.00, 14.00 }, - { "M18", 18.0, 2.50, 15.50 }, - { "M20", 20.0, 2.50, 17.50 }, - { "M22", 22.0, 2.50, 19.50 }, - { "M24", 24.0, 3.00, 21.00 }, - { "M27", 27.0, 3.00, 24.00 }, - { "M30", 30.0, 3.50, 26.50 }, - { "M33", 33.0, 3.50, 29.50 }, - { "M36", 36.0, 4.00, 32.00 }, - { "M39", 39.0, 4.00, 35.00 }, - { "M42", 42.0, 4.50, 37.50 }, - { "M45", 45.0, 4.50, 40.50 }, - { "M48", 48.0, 5.00, 43.00 }, - { "M52", 52.0, 5.00, 47.00 }, - { "M56", 56.0, 5.50, 50.50 }, - { "M60", 60.0, 5.50, 54.50 }, - { "M64", 64.0, 6.00, 58.00 }, - { "M68", 68.0, 6.00, 62.00 }, + { "M1", 1.0, 0.25, 0.75 }, + { "M1.1", 1.1, 0.25, 0.85 }, + { "M1.2", 1.2, 0.25, 0.95 }, + { "M1.4", 1.4, 0.30, 1.10 }, + { "M1.6", 1.6, 0.35, 1.25 }, + { "M1.8", 1.8, 0.35, 1.45 }, + { "M2", 2.0, 0.40, 1.60 }, + { "M2.2", 2.2, 0.45, 1.75 }, + { "M2.5", 2.5, 0.45, 2.05 }, + { "M3", 3.0, 0.50, 2.50 }, + { "M3.5", 3.5, 0.60, 2.90 }, + { "M4", 4.0, 0.70, 3.30 }, + { "M4.5", 4.5, 0.75, 3.70 }, + { "M5", 5.0, 0.80, 4.20 }, + { "M6", 6.0, 1.00, 5.00 }, + { "M7", 7.0, 1.00, 6.00 }, + { "M8", 8.0, 1.25, 6.80 }, + { "M9", 9.0, 1.25, 7.80 }, + { "M10", 10.0, 1.50, 8.50 }, + { "M11", 11.0, 1.50, 9.50 }, + { "M12", 12.0, 1.75, 10.20 }, + { "M14", 14.0, 2.00, 12.00 }, + { "M16", 16.0, 2.00, 14.00 }, + { "M18", 18.0, 2.50, 15.50 }, + { "M20", 20.0, 2.50, 17.50 }, + { "M22", 22.0, 2.50, 19.50 }, + { "M24", 24.0, 3.00, 21.00 }, + { "M27", 27.0, 3.00, 24.00 }, + { "M30", 30.0, 3.50, 26.50 }, + { "M33", 33.0, 3.50, 29.50 }, + { "M36", 36.0, 4.00, 32.00 }, + { "M39", 39.0, 4.00, 35.00 }, + { "M42", 42.0, 4.50, 37.50 }, + { "M45", 45.0, 4.50, 40.50 }, + { "M48", 48.0, 5.00, 43.00 }, + { "M52", 52.0, 5.00, 47.00 }, + { "M56", 56.0, 5.50, 50.50 }, + { "M60", 60.0, 5.50, 54.50 }, + { "M64", 64.0, 6.00, 58.00 }, + { "M68", 68.0, 6.00, 62.00 }, }, - /* ISO metric fine (core hole entry is calculated exactly by diameter - pitch) */ + /* ISO metric fine (drill = diameter - pitch) */ { { "M1x0.2", 1.0, 0.20, 0.80 }, { "M1.1x0.2", 1.1, 0.20, 0.90 }, @@ -397,52 +399,187 @@ const Hole::ThreadDescription Hole::threadDescription[][171] = { "1 9/16", 39.688, 1.411, 38.55 }, { "1 5/8", 41.275, 1.411, 40.10 }, { "1 11/16", 42.862, 1.411, 41.60 }, + }, + /* NPT National pipe threads */ + // Asme B1.20.1 + { + { "1/16", 7.938, 0.941, 0.0 }, + { "1/8", 10.287, 0.941, 0.0 }, + { "1/4", 13.716, 1.411, 0.0 }, + { "3/8", 17.145, 1.411, 0.0 }, + { "1/2", 21.336, 1.814, 0.0 }, + { "3/4", 26.670, 1.814, 0.0 }, + { "1", 33.401, 2.209, 0.0 }, + { "1 1/4", 42.164, 2.209, 0.0 }, + { "1 1/2", 48.260, 2.209, 0.0 }, + { "2", 60.325, 2.209, 0.0 }, + { "2 1/2", 73.025, 3.175, 0.0 }, + { "3", 88.900, 3.175, 0.0 }, + { "3 1/2", 101.600, 3.175, 0.0 }, + { "4", 114.300, 3.175, 0.0 }, + { "5", 141.300, 3.175, 0.0 }, + { "6", 168.275, 3.175, 0.0 }, + { "8", 219.075, 3.175, 0.0 }, + { "10", 273.050, 3.175, 0.0 }, + { "12", 323.850, 3.175, 0.0 }, + }, + /* BSP */ + // Parallel - ISO 228-1 + // Tapered - ISO 7-1 + { + { "1/16", 7.723, 0.907, 6.6 }, + { "1/8", 9.728, 0.907, 8.8 }, + { "1/4", 13.157, 1.337, 11.8 }, + { "3/8", 16.662, 1.337, 15.25 }, + { "1/2", 20.955, 1.814, 19.00 }, + { "5/8", 22.911, 1.814, 21.00 }, + { "3/4", 26.441, 1.814, 24.50 }, + { "7/8", 30.201, 1.814, 28.25 }, + { "1", 33.249, 2.309, 30.75 }, + { "1 1/8", 37.897, 2.309, 0.0 }, + { "1 1/4", 41.910, 2.309, 39.50 }, + { "1 1/2", 47.803, 2.309, 45.50 }, + { "1 3/4", 53.743, 2.309, 51.00 }, + { "2", 59.614, 2.309, 57.00 }, + { "2 1/4", 65.710, 2.309, 0.0 }, + { "2 1/2", 75.184, 2.309, 0.0 }, + { "2 3/4", 81.534, 2.309, 0.0 }, + { "3", 87.884, 2.309, 0.0 }, + { "3 1/2", 100.330, 2.309, 0.0 }, + { "4", 113.030, 2.309, 0.0 }, + { "4 1/2", 125.730, 2.309, 0.0 }, + { "5", 138.430, 2.309, 0.0 }, + { "5 1/2", 151.130, 2.309, 0.0 }, + { "6", 163.830, 2.309, 0.0 }, + }, + /* BSW */ + // BS 84 Basic sizes + { + { "1/8", 3.175, 0.635, 2.55 }, + { "3/16", 4.762, 1.058, 3.70 }, + { "1/4", 6.350, 1.270, 5.10 }, + { "5/16", 7.938, 1.411, 6.50 }, + { "3/8", 9.525, 1.588, 7.90 }, + { "7/16", 11.113, 1.814, 9.30 }, + { "1/2", 12.700, 2.117, 10.50 }, + { "9/16", 14.290, 2.117, 12.10 }, + { "5/8", 15.876, 2.309, 13.50 }, + { "11/16", 17.463, 2.309, 15.00 }, + { "3/4", 19.051, 2.540, 16.25 }, + { "7/8", 22.226, 2.822, 19.25 }, + { "1", 25.400, 3.175, 22.00 }, + { "1 1/8", 28.576, 3.629, 24.75 }, + { "1 1/4", 31.751, 3.629, 28.00 }, + { "1 1/2", 38.100, 4.233, 33.50 }, + { "1 3/4", 44.452, 5.080, 39.00 }, + { "2", 50.802, 5.644, 44.50 }, + { "2 1/4", 57.152, 6.350, 0.0 }, + { "2 1/2", 63.502, 6.350, 0.0 }, + { "2 3/4", 69.853, 7.257, 0.0 }, + { "3", 76.203, 7.257, 0.0 }, + { "3 1/4", 82.553, 7.815, 0.0 }, + { "3 1/2", 88.903, 7.815, 0.0 }, + { "3 3/4", 95.254, 8.467, 0.0 }, + { "4", 101.604, 8.467, 0.0 }, + { "4 1/2", 114.304, 8.835, 0.0 }, + { "5", 127.005, 9.236, 0.0 }, + { "5 1/2", 139.705, 9.676, 0.0 }, + { "6", 152.406, 10.16, 0.0 }, + }, + /* BSF */ + // BS 84 Basic sizes + // BS 1157 for drill sizes + { + { "3/16", 4.763, 0.794, 4.00 }, + { "7/32", 5.558, 0.907, 4.60 }, + { "1/4", 6.350, 0.977, 5.30 }, + { "9/32", 7.142, 0.977, 6.10 }, + { "5/16", 7.938, 1.154, 6.80 }, + { "3/8", 9.525, 1.270, 8.30 }, + { "7/16", 11.113, 1.411, 9.70 }, + { "1/2", 12.700, 1.588, 11.10 }, + { "9/16", 14.288, 1.588, 12.70 }, + { "5/8", 15.875, 1.814, 14.00 }, + { "11/16", 17.463, 1.814, 15.50 }, + { "3/4", 19.050, 2.116, 16.75 }, + { "7/8", 22.225, 2.309, 19.75 }, + { "1", 25.400, 2.540, 22.75 }, + { "1 1/8", 28.575, 2.822, 25.50 }, + { "1 1/4", 31.750, 2.822, 28.50 }, + { "1 3/8", 34.925, 3.175, 31.50 }, + { "1 1/2", 38.100, 3.175, 34.50 }, + { "1 5/8", 41.275, 3.175, 0.0 }, + { "1 3/4", 44.450, 3.629, 0.0 }, + { "2", 50.800, 3.629, 0.0 }, + { "2 1/4", 57.150, 4.233, 0.0 }, + { "2 1/2", 63.500, 4.233, 0.0 }, + { "2 3/4", 69.850, 4.233, 0.0 }, + { "3", 76.200, 5.080, 0.0 }, + { "3 1/4", 82.550, 5.080, 0.0 }, + { "3 1/2", 88.900, 5.644, 0.0 }, + { "3 3/4", 95.250, 5.644, 0.0 }, + { "4", 101.600, 5.644, 0.0 }, + { "4 1/4", 107.950, 6.350, 0.0 }, } - }; -const double Hole::metricHoleDiameters[36][4] = +const double Hole::metricHoleDiameters[51][4] = { /* ISO metric clearance hole diameters according to ISO 273 */ // {screw diameter, close, standard, coarse} - { 1.0, 1.1, 1.2, 1.3}, - { 1.2, 1.3, 1.4, 1.5}, - { 1.4, 1.5, 1.6, 1.8}, - { 1.6, 1.7, 1.8, 2.0}, - { 1.8, 2.0, 2.1, 2.2}, - { 2.0, 2.2, 2.4, 2.6}, - { 2.5, 2.7, 2.9, 3.1}, - { 3.0, 3.2, 3.4, 3.6}, - { 3.5, 3.7, 3.9, 4.2}, - { 4.0, 4.3, 4.5, 4.8}, - { 4.5, 4.8, 5.0, 5.3}, - { 5.0, 5.3, 5.5, 5.8}, - { 6.0, 6.4, 6.6, 7.0}, - { 7.0, 7.4, 7.6, 8.0}, - { 8.0, 8.4, 9.0, 10.0}, + { 1.0, 1.1, 1.2, 1.3}, + { 1.2, 1.3, 1.4, 1.5}, + { 1.4, 1.5, 1.6, 1.8}, + { 1.6, 1.7, 1.8, 2.0}, + { 1.8, 2.0, 2.1, 2.2}, + { 2.0, 2.2, 2.4, 2.6}, + { 2.5, 2.7, 2.9, 3.1}, + { 3.0, 3.2, 3.4, 3.6}, + { 3.5, 3.7, 3.9, 4.2}, + { 4.0, 4.3, 4.5, 4.8}, + { 4.5, 4.8, 5.0, 5.3}, + { 5.0, 5.3, 5.5, 5.8}, + { 6.0, 6.4, 6.6, 7.0}, + { 7.0, 7.4, 7.6, 8.0}, + { 8.0, 8.4, 9.0, 10.0}, // 9.0 undefined - { 10.0, 10.5, 11.0, 12.0}, + { 10.0, 10.5, 11.0, 12.0}, // 11.0 undefined - { 12.0, 13.0, 13.5, 14.5}, - { 14.0, 15.0, 15.5, 16.5}, - { 16.0, 17.0, 17.5, 18.5}, - { 18.0, 19.0, 20.0, 21.0}, - { 20.0, 21.0, 22.0, 24.0}, - { 22.0, 23.0, 24.0, 26.0}, - { 24.0, 25.0, 26.0, 28.0}, - { 27.0, 28.0, 30.0, 32.0}, - { 30.0, 31.0, 33.0, 35.0}, - { 33.0, 34.0, 36.0, 38.0}, - { 36.0, 37.0, 39.0, 42.0}, - { 39.0, 40.0, 42.0, 45.0}, - { 42.0, 43.0, 45.0, 48.0}, - { 45.0, 46.0, 48.0, 52.0}, - { 48.0, 50.0, 52.0, 56.0}, - { 52.0, 54.0, 56.0, 62.0}, - { 56.0, 58.0, 62.0, 66.0}, - { 60.0, 62.0, 66.0, 70.0}, - { 64.0, 66.0, 70.0, 74.0}, - { 68.0, 70.0, 77.0, 78.0} + { 12.0, 13.0, 13.5, 14.5}, + { 14.0, 15.0, 15.5, 16.5}, + { 16.0, 17.0, 17.5, 18.5}, + { 18.0, 19.0, 20.0, 21.0}, + { 20.0, 21.0, 22.0, 24.0}, + { 22.0, 23.0, 24.0, 26.0}, + { 24.0, 25.0, 26.0, 28.0}, + { 27.0, 28.0, 30.0, 32.0}, + { 30.0, 31.0, 33.0, 35.0}, + { 33.0, 34.0, 36.0, 38.0}, + { 36.0, 37.0, 39.0, 42.0}, + { 39.0, 40.0, 42.0, 45.0}, + { 42.0, 43.0, 45.0, 48.0}, + { 45.0, 46.0, 48.0, 52.0}, + { 48.0, 50.0, 52.0, 56.0}, + { 52.0, 54.0, 56.0, 62.0}, + { 56.0, 58.0, 62.0, 66.0}, + { 60.0, 62.0, 66.0, 70.0}, + { 64.0, 66.0, 70.0, 74.0}, + { 68.0, 70.0, 74.0, 78.0}, + { 72.0, 74.0, 78.0, 82.0}, + { 76.0, 78.0, 82.0, 86.0}, + { 80.0, 82.0, 86.0, 91.0}, + { 85.0, 87.0, 91.0, 96.0}, + { 90.0, 93.0, 96.0, 101.0}, + { 95.0, 98.0, 101.0, 107.0}, + { 100.0, 104.0, 107.0, 112.0}, + { 105.0, 109.0, 112.0, 117.0}, + { 110.0, 114.0, 117.0, 122.0}, + { 115.0, 119.0, 122.0, 127.0}, + { 120.0, 124.0, 127.0, 132.0}, + { 125.0, 129.0, 132.0, 137.0}, + { 130.0, 134.0, 137.0, 144.0}, + { 140.0, 144.0, 147.0, 155.0}, + { 150.0, 155.0, 158.0, 165.0} }; const Hole::UTSClearanceDefinition Hole::UTSHoleDiameters[22] = @@ -637,6 +774,42 @@ const char* Hole::ThreadSize_UNEF_Enums[] = { "#12", "1/4", "5/16", "3/8", "7/1 "1 5/8", "1 11/16", nullptr }; const char* Hole::ThreadClass_UNEF_Enums[] = { "1B", "2B", "3B", nullptr }; +/* NPT */ +const char* Hole::HoleCutType_NPT_Enums[] = { "None", "Counterbore", "Countersink", "Counterdrill", nullptr}; +const char* Hole::ThreadSize_NPT_Enums[] = { "1/16", "1/8", "1/4", "3/8", "1/2", "3/4", + "1", "1 1/4", "1 1/2", + "2", "2 1/2", + "3", "3 1/2", + "4", "5", "6", "8", "10", "12", nullptr }; + +/* BSP */ +const char* Hole::HoleCutType_BSP_Enums[] = { "None", "Counterbore", "Countersink", "Counterdrill", nullptr}; +const char* Hole::ThreadSize_BSP_Enums[] = { "1/16", "1/8", "1/4", "3/8", "1/2", "5/8", "3/4", "7/8", + "1", "1 1/8", "1 1/4", "1 3/8", "1 1/2", "1 3/4", + "2", "2 1/4", "2 1/2", "2 3/4", + "3", "3 1/2", "4", "4 1/2", + "5", "5 1/2", "6", nullptr }; + +/* BSW */ +const char* Hole::HoleCutType_BSW_Enums[] = { "None", "Counterbore", "Countersink", "Counterdrill", nullptr}; +const char* Hole::ThreadSize_BSW_Enums[] = { "1/8", "3/16", "1/4", "5/16", "3/8", "7/16", + "1/2", "9/16", "5/8", "11/16", "3/4", "7/8", + "1", "1 1/8", "1 1/4", "1 1/2", "1 3/4", + "2", "2 1/4", "2 1/2", "2 3/4", + "3", "3 1/4", "3 1/2", "3 3/4", + "4", "4 1/2", "5", "5 1/2", "6", nullptr }; +const char* Hole::ThreadClass_BSW_Enums[] = { "Medium", "Normal", nullptr }; + +/* BSF */ +const char* Hole::HoleCutType_BSF_Enums[] = { "None", "Counterbore", "Countersink", "Counterdrill", nullptr}; +const char* Hole::ThreadSize_BSF_Enums[] = { "3/16", "7/32", "1/4", "9/32", "5/16", "3/8", "7/16", + "1/2", "9/16", "5/8", "11/16", "3/4", "7/8", + "1", "1 1/8", "1 1/4", "1 3/8", "1 1/2", "1 5/8", "1 3/4", + "2", "2 1/4", "2 1/2", "2 3/4", + "3", "3 1/4", "3 1/2", "3 3/4", + "4", "4 1/4", nullptr }; +const char* Hole::ThreadClass_BSF_Enums[] = { "Medium", "Normal", nullptr }; + const char* Hole::ThreadDirectionEnums[] = { "Right", "Left", nullptr}; PROPERTY_SOURCE(PartDesign::Hole, PartDesign::ProfileBased) @@ -911,8 +1084,7 @@ void Hole::updateHoleCutParams() } } - else { // we have an UTS profile or none - + else { // we don't update for these settings but we need to set a value for new holes // furthermore we must assure the hole cut diameter is not <= the hole diameter // if we have a cut but the values are zero, we assume it is a new hole @@ -930,17 +1102,10 @@ void Hole::updateHoleCutParams() else if (holeCutTypeStr == "Countersink" || holeCutTypeStr == "Counterdrill") { if (HoleCutDiameter.getValue() == 0.0 || HoleCutDiameter.getValue() <= diameterVal) { HoleCutDiameter.setValue(diameterVal * 1.7); - // 82 degrees for UTS, 90 otherwise - if (threadTypeStr != "None") - HoleCutCountersinkAngle.setValue(82.0); - else - HoleCutCountersinkAngle.setValue(90.0); + HoleCutCountersinkAngle.setValue(getCountersinkAngle()); } if (HoleCutCountersinkAngle.getValue() == 0.0) { - if (threadTypeStr != "None") - HoleCutCountersinkAngle.setValue(82.0); - else - HoleCutCountersinkAngle.setValue(90.0); + HoleCutCountersinkAngle.setValue(getCountersinkAngle()); } if (HoleCutDepth.getValue() == 0.0 && holeCutTypeStr == "Counterdrill") { HoleCutDepth.setValue(1.0); @@ -952,6 +1117,23 @@ void Hole::updateHoleCutParams() } } +double Hole::getCountersinkAngle() const +{ + std::string threadTypeStr = ThreadType.getValueAsString(); + if ( + threadTypeStr == "BSW" + || threadTypeStr == "BSF" + ) + return 100.0; + if ( + threadTypeStr == "UNC" + || threadTypeStr == "UNF" + || threadTypeStr == "UNEF" + ) + return 82.0; + return 90.0; +} + double Hole::getThreadClassClearance() const { double pitch = getThreadPitch(); @@ -1093,11 +1275,22 @@ std::optional Hole::determineDiameter() const // use normed diameters if possible std::string threadTypeStr = ThreadType.getValueAsString(); - if (threadTypeStr == "ISOMetricProfile" || threadTypeStr == "UNC" - || threadTypeStr == "UNF" || threadTypeStr == "UNEF") { - diameter = threadDescription[threadType][threadSize].CoreHole + clearance; + if (threadDescription[threadType][threadSize].TapDrill > 0) { + diameter = threadDescription[threadType][threadSize].TapDrill + clearance; + } // if nothing is available, we must calculate + else if ( + threadTypeStr == "BSP" + || threadTypeStr == "BSW" + || threadTypeStr == "BSF" + ) { + double thread = 2 * (0.640327 * pitch); + // truncation is allowed by ISO-228 and BS 84 + diameter = diameter - thread * 0.75 + clearance; + } + else if (threadTypeStr == "NPT") { + double thread = 2 * (0.8 * pitch); + diameter = diameter - thread * 0.75 + clearance; } - // if nothing available, we must calculate else { // this fits exactly the definition for ISO metric fine diameter = diameter - pitch + clearance; @@ -1241,6 +1434,12 @@ void Hole::updateDiameterParam() Diameter.setValue(opt.value()); } +double Hole::getThreadProfileAngle() +{ + // Both ISO 7-1 and ASME B1.20.1 define the same angle + return 90 - 1.79; +} + void Hole::onChanged(const App::Property* prop) { if (prop == &ThreadType) { @@ -1358,6 +1557,62 @@ void Hole::onChanged(const App::Property* prop) ThreadDepthType.setReadOnly(!Threaded.getValue()); ThreadDepth.setReadOnly(!Threaded.getValue()); } + else if (type == "BSP") { + ThreadSize.setEnums(ThreadSize_BSP_Enums); + ThreadClass.setEnums(ThreadClass_None_Enums); + HoleCutType.setEnums(HoleCutType_BSP_Enums); + Threaded.setReadOnly(false); + ThreadSize.setReadOnly(false); + ThreadFit.setReadOnly(Threaded.getValue()); + Diameter.setReadOnly(true); + ModelThread.setReadOnly(!Threaded.getValue()); + UseCustomThreadClearance.setReadOnly(!Threaded.getValue() || !ModelThread.getValue()); + CustomThreadClearance.setReadOnly(!Threaded.getValue() || !ModelThread.getValue() || !UseCustomThreadClearance.getValue()); + ThreadDepthType.setReadOnly(!Threaded.getValue()); + ThreadDepth.setReadOnly(!Threaded.getValue()); + } + else if (type == "NPT") { + ThreadSize.setEnums(ThreadSize_NPT_Enums); + ThreadClass.setEnums(ThreadClass_None_Enums); + HoleCutType.setEnums(HoleCutType_NPT_Enums); + Threaded.setReadOnly(false); + ThreadSize.setReadOnly(false); + ThreadFit.setReadOnly(Threaded.getValue()); + Diameter.setReadOnly(true); + ModelThread.setReadOnly(!Threaded.getValue()); + UseCustomThreadClearance.setReadOnly(!Threaded.getValue() || !ModelThread.getValue()); + CustomThreadClearance.setReadOnly(!Threaded.getValue() || !ModelThread.getValue() || !UseCustomThreadClearance.getValue()); + ThreadDepthType.setReadOnly(!Threaded.getValue()); + ThreadDepth.setReadOnly(!Threaded.getValue()); + } + else if (type == "BSW") { + ThreadSize.setEnums(ThreadSize_BSW_Enums); + ThreadClass.setEnums(ThreadClass_BSW_Enums); + HoleCutType.setEnums(HoleCutType_BSW_Enums); + Threaded.setReadOnly(false); + ThreadSize.setReadOnly(false); + ThreadFit.setReadOnly(Threaded.getValue()); + Diameter.setReadOnly(true); + ModelThread.setReadOnly(!Threaded.getValue()); + UseCustomThreadClearance.setReadOnly(!Threaded.getValue() || !ModelThread.getValue()); + CustomThreadClearance.setReadOnly(!Threaded.getValue() || !ModelThread.getValue() || !UseCustomThreadClearance.getValue()); + ThreadDepthType.setReadOnly(!Threaded.getValue()); + ThreadDepth.setReadOnly(!Threaded.getValue()); + } + else if (type == "BSF") { + ThreadSize.setEnums(ThreadSize_BSF_Enums); + ThreadClass.setEnums(ThreadClass_BSF_Enums); + HoleCutType.setEnums(HoleCutType_BSF_Enums); + Threaded.setReadOnly(false); + ThreadSize.setReadOnly(false); + ThreadFit.setReadOnly(Threaded.getValue()); + Diameter.setReadOnly(true); + ModelThread.setReadOnly(!Threaded.getValue()); + UseCustomThreadClearance.setReadOnly(!Threaded.getValue() || !ModelThread.getValue()); + CustomThreadClearance.setReadOnly(!Threaded.getValue() || !ModelThread.getValue() || !UseCustomThreadClearance.getValue()); + ThreadDepthType.setReadOnly(!Threaded.getValue()); + ThreadDepth.setReadOnly(!Threaded.getValue()); + } if (holeCutTypeStr == "None") { HoleCutCustomValues.setReadOnly(true); @@ -1417,6 +1672,8 @@ void Hole::onChanged(const App::Property* prop) CustomThreadClearance.setReadOnly(!UseCustomThreadClearance.getValue()); ThreadDepthType.setReadOnly(false); ThreadDepth.setReadOnly(std::string(ThreadDepthType.getValueAsString()) != "Dimension"); + if (Tapered.getValue() && TaperedAngle.getValue() == 90) + TaperedAngle.setValue(getThreadProfileAngle()); } else { ThreadClass.setReadOnly(true); @@ -1451,11 +1708,15 @@ void Hole::onChanged(const App::Property* prop) } } else if (prop == &Tapered) { - if (Tapered.getValue()) + if (Tapered.getValue()) { TaperedAngle.setReadOnly(false); - else + if (Threaded.getValue() && TaperedAngle.getValue() == 90) + TaperedAngle.setValue(getThreadProfileAngle()); + } + else { + TaperedAngle.setValue(90); TaperedAngle.setReadOnly(true); - + } } else if (prop == &ThreadSize) { updateDiameterParam(); @@ -1950,6 +2211,7 @@ App::DocumentObjectExecReturn* Hole::execute() } result = base; } + result = refineShapeIfActive(result); if (!isSingleSolidRuleSatisfied(result.getShape())) { return new App::DocumentObjectExecReturn( @@ -2084,34 +2346,90 @@ TopoDS_Shape Hole::makeThread(const gp_Vec& xDir, const gp_Vec& zDir, double len // Nomenclature and formulae according to Figure 1 of ISO 68-1 // this is the same for all metric and UTS threads as stated here: // https://en.wikipedia.org/wiki/File:ISO_and_UTS_Thread_Dimensions.svg - // Note that in the ISO standard, Dmaj is called D, which has been followed here. - double Diam = threadDescription[threadType][threadSize].diameter; // major diameter + // Rmaj is half of the major diameter + double Rmaj = threadDescription[threadType][threadSize].diameter / 2; double Pitch = getThreadPitch(); - double H = sqrt(3) / 2 * Pitch; // height of fundamental triangle double clearance; // clearance to be added on the diameter if (UseCustomThreadClearance.getValue()) - clearance = CustomThreadClearance.getValue(); + clearance = CustomThreadClearance.getValue() / 2; else - clearance = getThreadClassClearance(); - - // construct the cross section going counter-clockwise - // for graphical explanation of geometrical construction of p1-p6 see: - // https://forum.freecad.org/viewtopic.php?f=19&t=54284#p466570 - gp_Pnt p1 = toPnt((Diam / 2 - 5 * H / 8 + clearance / 2) * xDir + Pitch / 8 * zDir); - gp_Pnt p2 = toPnt((Diam / 2 + clearance / 2) * xDir + 7 * Pitch / 16 * zDir); - gp_Pnt p3 = toPnt((Diam / 2 + clearance / 2) * xDir + 9 * Pitch / 16 * zDir); - gp_Pnt p4 = toPnt((Diam / 2 - 5 * H / 8 + clearance / 2) * xDir + 7 * Pitch / 8 * zDir); - gp_Pnt p5 = toPnt(0.9 * (Diam / 2 - 5 * H / 8) * xDir + 7 * Pitch / 8 * zDir); - gp_Pnt p6 = toPnt(0.9 * (Diam / 2 - 5 * H / 8) * xDir + Pitch / 8 * zDir); + clearance = getThreadClassClearance() / 2; + double RmajC = Rmaj + clearance; + double marginZ = 0.001; BRepBuilderAPI_MakeWire mkThreadWire; - mkThreadWire.Add(BRepBuilderAPI_MakeEdge(p1, p2).Edge()); - mkThreadWire.Add(BRepBuilderAPI_MakeEdge(p2, p3).Edge()); - mkThreadWire.Add(BRepBuilderAPI_MakeEdge(p3, p4).Edge()); - mkThreadWire.Add(BRepBuilderAPI_MakeEdge(p4, p5).Edge()); - mkThreadWire.Add(BRepBuilderAPI_MakeEdge(p5, p6).Edge()); - mkThreadWire.Add(BRepBuilderAPI_MakeEdge(p6, p1).Edge()); + double H; + std::string threadTypeStr = ThreadType.getValueAsString(); + if (threadTypeStr == "BSP" || threadTypeStr == "BSW" || threadTypeStr == "BSF") { + H = 0.960491 * Pitch; // Height of Sharp V + double radius = 0.137329 * Pitch; // radius of the crest + // construct the cross section going counter-clockwise + // -------------- + // P | p4 + // 5/8P | p3 + // | crest + // 3/8P | p2 + // 0 | p1 + // -------------- + // | base-sharpV Rmaj H + + // the little adjustment of p1 and p4 is here to prevent coincidencies + double marginX = std::tan(62.5 * M_PI / 180.0) * marginZ; + + gp_Pnt p1 = toPnt( + (RmajC - 5 * H / 6 + marginX) * xDir + + marginZ * zDir + ); + gp_Pnt p4 = toPnt( + (RmajC - 5 * H / 6 + marginX) * xDir + + (Pitch - marginZ) * zDir + ); + + // Calculate positions for p2 and p3 + double p23x = RmajC - radius * 0.58284013094; + + gp_Pnt p2 = toPnt(p23x * xDir + 3 * Pitch / 8 * zDir); + gp_Pnt p3 = toPnt(p23x * xDir + 5 * Pitch / 8 * zDir); + gp_Pnt crest = toPnt((RmajC) * xDir + Pitch / 2 * zDir); + + mkThreadWire.Add(BRepBuilderAPI_MakeEdge(p1, p2).Edge()); + Handle(Geom_TrimmedCurve) arc1 = GC_MakeArcOfCircle(p2, crest, p3).Value(); + mkThreadWire.Add(BRepBuilderAPI_MakeEdge(arc1).Edge()); + mkThreadWire.Add(BRepBuilderAPI_MakeEdge(p3, p4).Edge()); + mkThreadWire.Add(BRepBuilderAPI_MakeEdge(p4, p1).Edge()); + } else { + H = sqrt(3) / 2 * Pitch; // height of fundamental triangle + double h = 7 * H / 8; // distance from Rmaj to the base + // construct the cross section going counter-clockwise + // pitch + // -------------- + // P | p4 + // 9/16P | p3 + // 7/16P | p2 + // 0 | p1 + // -------------- + // | base-sharpV Rmaj + + // the little adjustment of p1 and p4 is here to prevent coincidencies + double marginX = std::tan(60.0 * M_PI / 180.0) * marginZ; + gp_Pnt p1 = toPnt( + (RmajC - h + marginX) * xDir + + marginZ * zDir + ); + gp_Pnt p2 = toPnt((RmajC) * xDir + 7 * Pitch / 16 * zDir); + gp_Pnt p3 = toPnt((RmajC) * xDir + 9 * Pitch / 16 * zDir); + gp_Pnt p4 = toPnt( + (RmajC - h + marginX) * xDir + + (Pitch - marginZ) * zDir + ); + + mkThreadWire.Add(BRepBuilderAPI_MakeEdge(p1, p2).Edge()); + mkThreadWire.Add(BRepBuilderAPI_MakeEdge(p2, p3).Edge()); + mkThreadWire.Add(BRepBuilderAPI_MakeEdge(p3, p4).Edge()); + mkThreadWire.Add(BRepBuilderAPI_MakeEdge(p4, p1).Edge()); + } + mkThreadWire.Build(); TopoDS_Wire threadWire = mkThreadWire.Wire(); @@ -2146,7 +2464,9 @@ TopoDS_Shape Hole::makeThread(const gp_Vec& xDir, const gp_Vec& zDir, double len helixLength = holeDepth + Pitch / 8; } } - TopoDS_Shape helix = TopoShape().makeLongHelix(Pitch, helixLength, Diam / 2, 0.0, leftHanded); + double helixAngle = + Tapered.getValue() ? TaperedAngle.getValue() - 90 : 0.0; + TopoDS_Shape helix = TopoShape().makeLongHelix(Pitch, helixLength, Rmaj, helixAngle, leftHanded); gp_Pnt origo(0.0, 0.0, 0.0); gp_Dir dir_axis1(0.0, 0.0, 1.0); // pointing along the helix axis, as created. diff --git a/src/Mod/PartDesign/App/FeatureHole.h b/src/Mod/PartDesign/App/FeatureHole.h index 662dde2b6cdb..b239f44e1b8c 100644 --- a/src/Mod/PartDesign/App/FeatureHole.h +++ b/src/Mod/PartDesign/App/FeatureHole.h @@ -90,11 +90,11 @@ class PartDesignExport Hole : public ProfileBased const char * designation; double diameter; double pitch; - double CoreHole; + double TapDrill; }; static const ThreadDescription threadDescription[][171]; - static const double metricHoleDiameters[36][4]; + static const double metricHoleDiameters[51][4]; using UTSClearanceDefinition = struct { std::string designation; @@ -152,6 +152,24 @@ class PartDesignExport Hole : public ProfileBased static const char* ThreadSize_UNEF_Enums[]; static const char* ThreadClass_UNEF_Enums[]; + /* NPT profile */ + static const char* HoleCutType_NPT_Enums[]; + static const char* ThreadSize_NPT_Enums[]; + + /* BSP profile */ + static const char* HoleCutType_BSP_Enums[]; + static const char* ThreadSize_BSP_Enums[]; + + /* BSW profile */ + static const char* HoleCutType_BSW_Enums[]; + static const char* ThreadSize_BSW_Enums[]; + static const char* ThreadClass_BSW_Enums[]; + + /* BSF profile */ + static const char* HoleCutType_BSF_Enums[]; + static const char* ThreadSize_BSF_Enums[]; + static const char* ThreadClass_BSF_Enums[]; + static const double ThreadRunout[ThreadRunout_size][2]; /* Counter-xxx */ @@ -218,9 +236,11 @@ class PartDesignExport Hole : public ProfileBased void updateThreadDepthParam(); void readCutDefinitions(); + double getCountersinkAngle() const; double getThreadClassClearance() const; double getThreadRunout(int mode = 1) const; double getThreadPitch() const; + double getThreadProfileAngle(); void rotateToNormal(const gp_Dir& helixAxis, const gp_Dir& normalAxis, TopoDS_Shape& helixShape) const; gp_Vec computePerpendicular(const gp_Vec&) const; TopoDS_Shape makeThread(const gp_Vec&, const gp_Vec&, double); diff --git a/src/Mod/PartDesign/App/FeatureSketchBased.cpp b/src/Mod/PartDesign/App/FeatureSketchBased.cpp index e8a467eff90b..92f22da99a6b 100644 --- a/src/Mod/PartDesign/App/FeatureSketchBased.cpp +++ b/src/Mod/PartDesign/App/FeatureSketchBased.cpp @@ -1357,9 +1357,10 @@ void ProfileBased::getAxis(const App::DocumentObject * pcReferenceAxis, const st } if (pcReferenceAxis->isDerivedFrom()) { - const App::Line* line = static_cast(pcReferenceAxis); - base = Base::Vector3d(0, 0, 0); - line->Placement.getValue().multVec(Base::Vector3d(1, 0, 0), dir); + auto* line = static_cast(pcReferenceAxis); + Base::Placement plc = line->Placement.getValue(); + base = plc.getPosition(); + plc.getRotation().multVec(Base::Vector3d(0, 0, 1), dir); verifyAxisFunc(checkAxis, sketchplane, gp_Dir(dir.x, dir.y, dir.z)); return; diff --git a/src/Mod/PartDesign/App/ShapeBinder.cpp b/src/Mod/PartDesign/App/ShapeBinder.cpp index 31040e5001ff..8402df16c90b 100644 --- a/src/Mod/PartDesign/App/ShapeBinder.cpp +++ b/src/Mod/PartDesign/App/ShapeBinder.cpp @@ -28,6 +28,7 @@ # include # include # include +# include #endif #include @@ -194,6 +195,10 @@ void ShapeBinder::getFilteredReferences(const App::PropertyLinkSubList* prop, obj = plane; break; } + if (auto point = dynamic_cast(it)) { + obj = point; + break; + } } } } @@ -244,6 +249,13 @@ Part::TopoShape ShapeBinder::buildShapeFromReferences(App::GeoFeature* obj, std: shape.setPlacement(obj->Placement.getValue()); return shape; } + else if (obj->isDerivedFrom()) { + gp_Pnt point; + BRepBuilderAPI_MakeVertex mkPoint(point); + Part::TopoShape shape(mkPoint.Shape()); + shape.setPlacement(obj->Placement.getValue()); + return shape; + } return TopoDS_Shape(); } diff --git a/src/Mod/PartDesign/Gui/CommandBody.cpp b/src/Mod/PartDesign/Gui/CommandBody.cpp index aaa00812e78c..a7c6cb24fb76 100644 --- a/src/Mod/PartDesign/Gui/CommandBody.cpp +++ b/src/Mod/PartDesign/Gui/CommandBody.cpp @@ -606,7 +606,7 @@ CmdPartDesignDuplicateSelection::CmdPartDesignDuplicateSelection() { sAppModule = "PartDesign"; sGroup = QT_TR_NOOP("PartDesign"); - sMenuText = QT_TR_NOOP("Duplicate selected object"); + sMenuText = QT_TR_NOOP("Duplicate selected &object"); sToolTipText = QT_TR_NOOP("Duplicates the selected object and adds it to the active body"); sWhatsThis = "PartDesign_DuplicateSelection"; sStatusTip = sToolTipText; diff --git a/src/Mod/PartDesign/Gui/ReferenceSelection.cpp b/src/Mod/PartDesign/Gui/ReferenceSelection.cpp index 70f681795183..78cd679cdc54 100644 --- a/src/Mod/PartDesign/Gui/ReferenceSelection.cpp +++ b/src/Mod/PartDesign/Gui/ReferenceSelection.cpp @@ -148,12 +148,12 @@ bool ReferenceSelection::allowOrigin(PartDesign::Body *body, App::OriginGroupExt if (fits) { // check that it actually belongs to the chosen body or part try { // here are some throwers if (body) { - if (body->getOrigin ()->hasObject (pObj) ) { + if (body->hasObject(pObj, true) ) { return true; } } else if (originGroup ) { - if (originGroup->getOrigin()->hasObject(pObj)) { + if (originGroup->hasObject(pObj, true)) { return true; } } diff --git a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_de.ts b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_de.ts index 71d23aa5ad78..1755a146eb36 100644 --- a/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_de.ts +++ b/src/Mod/PartDesign/Gui/Resources/translations/PartDesign_de.ts @@ -296,7 +296,7 @@ so that self intersection is avoided. - Duplicate selected object + Duplicate selected &object Ausgewähltes Objekt duplizieren diff --git a/src/Mod/PartDesign/Gui/TaskFeaturePick.cpp b/src/Mod/PartDesign/Gui/TaskFeaturePick.cpp index 93132894f2a6..2a039750c7fe 100644 --- a/src/Mod/PartDesign/Gui/TaskFeaturePick.cpp +++ b/src/Mod/PartDesign/Gui/TaskFeaturePick.cpp @@ -162,6 +162,8 @@ TaskFeaturePick::TaskFeaturePick(std::vector& objects, if (vpo) { vpo->setTemporaryVisibility(originVisStatus[origin][axisBit], originVisStatus[origin][planeBit]); + vpo->setTemporaryScale(4.0); // NOLINT + vpo->setPlaneLabelVisibility(true); origins.push_back(vpo); } } @@ -177,6 +179,8 @@ TaskFeaturePick::~TaskFeaturePick() { for (Gui::ViewProviderCoordinateSystem* vpo : origins) { vpo->resetTemporaryVisibility(); + vpo->resetTemporarySize(); + vpo->setPlaneLabelVisibility(false); } } diff --git a/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp b/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp index 4d3a4938798f..5bca81cd1b87 100644 --- a/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp @@ -66,6 +66,10 @@ TaskHoleParameters::TaskHoleParameters(ViewProviderHole* HoleView, QWidget* pare ui->ThreadType->addItem(tr("UTS coarse profile"), QByteArray("UTS")); ui->ThreadType->addItem(tr("UTS fine profile"), QByteArray("UTS")); ui->ThreadType->addItem(tr("UTS extra fine profile"), QByteArray("UTS")); + ui->ThreadType->addItem(tr("ANSI pipe profile"), QByteArray("NPT")); + ui->ThreadType->addItem(tr("BSP pipe profile"), QByteArray("BSP")); + ui->ThreadType->addItem(tr("BSW whitworth profile"), QByteArray("BSW")); + ui->ThreadType->addItem(tr("BSF whitworth fine profile"), QByteArray("BSF")); // read values from the hole properties auto pcHole = getObject(); @@ -81,7 +85,7 @@ TaskHoleParameters::TaskHoleParameters(ViewProviderHole* HoleView, QWidget* pare ui->ThreadSize->addItem(tr(it.c_str())); } ui->ThreadSize->setCurrentIndex(pcHole->ThreadSize.getValue()); - ui->ThreadSize->setEnabled(!pcHole->Threaded.getValue() && pcHole->ThreadType.getValue() != 0L); + ui->ThreadSize->setEnabled(pcHole->ThreadType.getValue() != 0L); ui->ThreadClass->clear(); cursor = pcHole->ThreadClass.getEnumVector(); diff --git a/src/Mod/PartDesign/Gui/TaskPrimitiveParameters.cpp b/src/Mod/PartDesign/Gui/TaskPrimitiveParameters.cpp index 306f84818a53..db6ac0873977 100644 --- a/src/Mod/PartDesign/Gui/TaskPrimitiveParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskPrimitiveParameters.cpp @@ -811,103 +811,103 @@ void TaskBoxPrimitives::onWedgeZmaxChanged(double v) bool TaskBoxPrimitives::setPrimitive(App::DocumentObject* obj) { try { - QString name(QString::fromLatin1(Gui::Command::getObjectCmd(obj).c_str())); - QString cmd; App::Document* doc = App::GetApplication().getActiveDocument(); if (!doc) { return false; } + std::string cmd; + std::string name(Gui::Command::getObjectCmd(obj)); Base::QuantityFormat format(Base::QuantityFormat::Fixed, Base::UnitsApi::getDecimals()); switch (ui->widgetStack->currentIndex()) { case 1: // box - cmd = QString::fromLatin1("%1.Length='%2'\n" - "%1.Width='%3'\n" - "%1.Height='%4'\n") - .arg(name, - ui->boxLength->value().getSafeUserString(), - ui->boxWidth->value().getSafeUserString(), - ui->boxHeight->value().getSafeUserString()); + cmd = fmt::format("{0}.Length='{1}'\n" + "{0}.Width='{2}'\n" + "{0}.Height='{3}'\n", + name, + ui->boxLength->value().getSafeUserString(), + ui->boxWidth->value().getSafeUserString(), + ui->boxHeight->value().getSafeUserString()); break; case 2: // cylinder - cmd = QString::fromLatin1("%1.Radius='%2'\n" - "%1.Height='%3'\n" - "%1.Angle='%4'\n" - "%1.FirstAngle='%5'\n" - "%1.SecondAngle='%6'\n") - .arg(name, - ui->cylinderRadius->value().getSafeUserString(), - ui->cylinderHeight->value().getSafeUserString(), - ui->cylinderAngle->value().getSafeUserString(), - ui->cylinderXSkew->value().getSafeUserString(), - ui->cylinderYSkew->value().getSafeUserString()); + cmd = fmt::format("{0}.Radius='{1}'\n" + "{0}.Height='{2}'\n" + "{0}.Angle='{3}'\n" + "{0}.FirstAngle='{4}'\n" + "{0}.SecondAngle='{5}'\n", + name, + ui->cylinderRadius->value().getSafeUserString(), + ui->cylinderHeight->value().getSafeUserString(), + ui->cylinderAngle->value().getSafeUserString(), + ui->cylinderXSkew->value().getSafeUserString(), + ui->cylinderYSkew->value().getSafeUserString()); break; case 3: // cone - cmd = QString::fromLatin1("%1.Radius1='%2'\n" - "%1.Radius2='%3'\n" - "%1.Height='%4'\n" - "%1.Angle='%5'\n") - .arg(name, - ui->coneRadius1->value().getSafeUserString(), - ui->coneRadius2->value().getSafeUserString(), - ui->coneHeight->value().getSafeUserString(), - ui->coneAngle->value().getSafeUserString()); + cmd = fmt::format("{0}.Radius1='{1}'\n" + "{0}.Radius2='{2}'\n" + "{0}.Height='{3}'\n" + "{0}.Angle='{4}'\n", + name, + ui->coneRadius1->value().getSafeUserString(), + ui->coneRadius2->value().getSafeUserString(), + ui->coneHeight->value().getSafeUserString(), + ui->coneAngle->value().getSafeUserString()); break; case 4: // sphere - cmd = QString::fromLatin1("%1.Radius='%2'\n" - "%1.Angle1='%3'\n" - "%1.Angle2='%4'\n" - "%1.Angle3='%5'\n") - .arg(name, - ui->sphereRadius->value().getSafeUserString(), - ui->sphereAngle1->value().getSafeUserString(), - ui->sphereAngle2->value().getSafeUserString(), - ui->sphereAngle3->value().getSafeUserString()); + cmd = fmt::format("{0}.Radius='{1}'\n" + "{0}.Angle1='{2}'\n" + "{0}.Angle2='{3}'\n" + "{0}.Angle3='{4}'\n", + name, + ui->sphereRadius->value().getSafeUserString(), + ui->sphereAngle1->value().getSafeUserString(), + ui->sphereAngle2->value().getSafeUserString(), + ui->sphereAngle3->value().getSafeUserString()); break; case 5: // ellipsoid - cmd = QString::fromLatin1("%1.Radius1='%2'\n" - "%1.Radius2='%3'\n" - "%1.Radius3='%4'\n" - "%1.Angle1='%5'\n" - "%1.Angle2='%6'\n" - "%1.Angle3='%7'\n") - .arg(name, - ui->ellipsoidRadius1->value().getSafeUserString(), - ui->ellipsoidRadius2->value().getSafeUserString(), - ui->ellipsoidRadius3->value().getSafeUserString(), - ui->ellipsoidAngle1->value().getSafeUserString(), - ui->ellipsoidAngle2->value().getSafeUserString(), - ui->ellipsoidAngle3->value().getSafeUserString()); + cmd = fmt::format("{0}.Radius1='{1}'\n" + "{0}.Radius2='{2}'\n" + "{0}.Radius3='{3}'\n" + "{0}.Angle1='{4}'\n" + "{0}.Angle2='{5}'\n" + "{0}.Angle3='{6}'\n", + name, + ui->ellipsoidRadius1->value().getSafeUserString(), + ui->ellipsoidRadius2->value().getSafeUserString(), + ui->ellipsoidRadius3->value().getSafeUserString(), + ui->ellipsoidAngle1->value().getSafeUserString(), + ui->ellipsoidAngle2->value().getSafeUserString(), + ui->ellipsoidAngle3->value().getSafeUserString()); break; case 6: // torus - cmd = QString::fromLatin1("%1.Radius1='%2'\n" - "%1.Radius2='%3'\n" - "%1.Angle1='%4'\n" - "%1.Angle2='%5'\n" - "%1.Angle3='%6'\n") - .arg(name, - ui->torusRadius1->value().getSafeUserString(), - ui->torusRadius2->value().getSafeUserString(), - ui->torusAngle1->value().getSafeUserString(), - ui->torusAngle2->value().getSafeUserString(), - ui->torusAngle3->value().getSafeUserString()); + cmd = fmt::format("{0}.Radius1='{1}'\n" + "{0}.Radius2='{2}'\n" + "{0}.Angle1='{3}'\n" + "{0}.Angle2='{4}'\n" + "{0}.Angle3='{5}'\n", + name, + ui->torusRadius1->value().getSafeUserString(), + ui->torusRadius2->value().getSafeUserString(), + ui->torusAngle1->value().getSafeUserString(), + ui->torusAngle2->value().getSafeUserString(), + ui->torusAngle3->value().getSafeUserString()); break; case 7: // prism - cmd = QString::fromLatin1("%1.Polygon=%2\n" - "%1.Circumradius='%3'\n" - "%1.Height='%4'\n" - "%1.FirstAngle='%5'\n" - "%1.SecondAngle='%6'\n") - .arg(name, - QString::number(ui->prismPolygon->value()), - ui->prismCircumradius->value().getSafeUserString(), - ui->prismHeight->value().getSafeUserString(), - ui->prismXSkew->value().getSafeUserString(), - ui->prismYSkew->value().getSafeUserString()); + cmd = fmt::format("{0}.Polygon={1}\n" + "{0}.Circumradius='{2}'\n" + "{0}.Height='{3}'\n" + "{0}.FirstAngle='{4}'\n" + "{0}.SecondAngle='{5}'\n", + name, + ui->prismPolygon->value(), + ui->prismCircumradius->value().getSafeUserString(), + ui->prismHeight->value().getSafeUserString(), + ui->prismXSkew->value().getSafeUserString(), + ui->prismYSkew->value().getSafeUserString()); break; case 8: // wedge // Xmin/max, Ymin/max and Zmin/max must each not be equal @@ -929,27 +929,27 @@ bool TaskBoxPrimitives::setPrimitive(App::DocumentObject* obj) tr("Z min must not be equal to Z max!")); return false; } - cmd = QString::fromLatin1("%1.Xmin='%2'\n" - "%1.Ymin='%3'\n" - "%1.Zmin='%4'\n" - "%1.X2min='%5'\n" - "%1.Z2min='%6'\n" - "%1.Xmax='%7'\n" - "%1.Ymax='%8'\n" - "%1.Zmax='%9'\n" - "%1.X2max='%10'\n" - "%1.Z2max='%11'\n") - .arg(name, - ui->wedgeXmin->value().getSafeUserString(), - ui->wedgeYmin->value().getSafeUserString(), - ui->wedgeZmin->value().getSafeUserString(), - ui->wedgeX2min->value().getSafeUserString(), - ui->wedgeZ2min->value().getSafeUserString(), - ui->wedgeXmax->value().getSafeUserString(), - ui->wedgeYmax->value().getSafeUserString(), - ui->wedgeZmax->value().getSafeUserString()) - .arg(ui->wedgeX2max->value().getSafeUserString(), - ui->wedgeZ2max->value().getSafeUserString()); + cmd = fmt::format("{0}.Xmin='{1}'\n" + "{0}.Ymin='{2}'\n" + "{0}.Zmin='{3}'\n" + "{0}.X2min='{4}'\n" + "{0}.Z2min='{5}'\n" + "{0}.Xmax='{6}'\n" + "{0}.Ymax='{7}'\n" + "{0}.Zmax='{8}'\n" + "{0}.X2max='{9}'\n" + "{0}.Z2max='{10}'\n", + name, + ui->wedgeXmin->value().getSafeUserString(), + ui->wedgeYmin->value().getSafeUserString(), + ui->wedgeZmin->value().getSafeUserString(), + ui->wedgeX2min->value().getSafeUserString(), + ui->wedgeZ2min->value().getSafeUserString(), + ui->wedgeXmax->value().getSafeUserString(), + ui->wedgeYmax->value().getSafeUserString(), + ui->wedgeZmax->value().getSafeUserString(), + ui->wedgeX2max->value().getSafeUserString(), + ui->wedgeZ2max->value().getSafeUserString()); break; default: @@ -959,7 +959,7 @@ bool TaskBoxPrimitives::setPrimitive(App::DocumentObject* obj) // Execute the Python block // No need to open a transaction because this is already done in the command // class or when starting to edit a primitive. - Gui::Command::runCommand(Gui::Command::Doc, cmd.toUtf8()); + Gui::Command::runCommand(Gui::Command::Doc, cmd.c_str()); Gui::Command::runCommand(Gui::Command::Doc, "App.ActiveDocument.recompute()"); } catch (const Base::PyException& e) { diff --git a/src/Mod/PartDesign/Gui/ViewProviderBody.cpp b/src/Mod/PartDesign/Gui/ViewProviderBody.cpp index fc49c5f0f06c..604095e3a342 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderBody.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderBody.cpp @@ -342,11 +342,11 @@ bool ViewProviderBody::canDropObjects() const { // if the BaseFeature property is marked as hidden or read-only then // it's not allowed to modify it. - PartDesign::Body* body = getObject(); - if (body->BaseFeature.testStatus(App::Property::Status::Hidden)) - return false; - if (body->BaseFeature.testStatus(App::Property::Status::ReadOnly)) + auto* body = getObject(); + if (body->BaseFeature.testStatus(App::Property::Status::Hidden) + || body->BaseFeature.testStatus(App::Property::Status::ReadOnly)) { return false; + } return true; } @@ -355,7 +355,15 @@ bool ViewProviderBody::canDropObject(App::DocumentObject* obj) const if (obj->isDerivedFrom()) { return true; } - if (!obj->isDerivedFrom(Part::Feature::getClassTypeId())) { + else if (obj->isDerivedFrom(App::DatumElement::getClassTypeId())) { + // accept only datums that are not part of a LCS. + auto* lcs = static_cast(obj)->getLCS(); + return !lcs; + } + else if (obj->isDerivedFrom(App::LocalCoordinateSystem::getClassTypeId())) { + return !obj->isDerivedFrom(App::Origin::getClassTypeId()); + } + else if (!obj->isDerivedFrom(Part::Feature::getClassTypeId())) { return false; } else if (PartDesign::Body::findBodyOf(obj)) { @@ -375,8 +383,10 @@ bool ViewProviderBody::canDropObject(App::DocumentObject* obj) const void ViewProviderBody::dropObject(App::DocumentObject* obj) { - PartDesign::Body* body = getObject(); - if (obj->isDerivedFrom()) { + auto* body = getObject(); + if (obj->isDerivedFrom() + || obj->isDerivedFrom() + || obj->isDerivedFrom()) { body->addObject(obj); } else if (PartDesign::Body::isAllowed(obj) && PartDesignGui::isFeatureMovable(obj)) { diff --git a/src/Mod/PartDesign/Gui/ViewProviderDatum.cpp b/src/Mod/PartDesign/Gui/ViewProviderDatum.cpp index 813257e0b43e..e234245bd941 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderDatum.cpp +++ b/src/Mod/PartDesign/Gui/ViewProviderDatum.cpp @@ -2,22 +2,21 @@ * Copyright (c) 2013 Jan Rheinlaender * * * * * - * This file is part of the FreeCAD CAx development system. * + * This file is part of FreeCAD. * * * - * This library is free software; you can redistribute it and/or * - * modify it under the terms of the GNU Library General Public * - * License as published by the Free Software Foundation; either * - * version 2 of the License, or (at your option) any later version. * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * * * - * This library is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Library General Public License for more details. * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * * * - * You should have received a copy of the GNU Library General Public * - * License along with this library; see the file COPYING.LIB. If not, * - * write to the Free Software Foundation, Inc., 59 Temple Place, * - * Suite 330, Boston, MA 02111-1307, USA * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * * * ***************************************************************************/ diff --git a/src/Mod/PartDesign/Gui/ViewProviderDatum.h b/src/Mod/PartDesign/Gui/ViewProviderDatum.h index 8187d00ab21c..07f5a8676566 100644 --- a/src/Mod/PartDesign/Gui/ViewProviderDatum.h +++ b/src/Mod/PartDesign/Gui/ViewProviderDatum.h @@ -2,22 +2,21 @@ * Copyright (c) 2013 Jan Rheinlaender * * * * * - * This file is part of the FreeCAD CAx development system. * + * This file is part of FreeCAD. * * * - * This library is free software; you can redistribute it and/or * - * modify it under the terms of the GNU Library General Public * - * License as published by the Free Software Foundation; either * - * version 2 of the License, or (at your option) any later version. * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * * * - * This library is distributed in the hope that it will be useful, * - * but WITHOUT ANY WARRANTY; without even the implied warranty of * - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * - * GNU Library General Public License for more details. * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * * * - * You should have received a copy of the GNU Library General Public * - * License along with this library; see the file COPYING.LIB. If not, * - * write to the Free Software Foundation, Inc., 59 Temple Place, * - * Suite 330, Boston, MA 02111-1307, USA * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * * * ***************************************************************************/ diff --git a/src/Mod/PartDesign/Gui/Workbench.cpp b/src/Mod/PartDesign/Gui/Workbench.cpp index 5f49add30949..4e3929e6b982 100644 --- a/src/Mod/PartDesign/Gui/Workbench.cpp +++ b/src/Mod/PartDesign/Gui/Workbench.cpp @@ -85,19 +85,22 @@ void Workbench::setupContextMenu(const char* recipient, Gui::MenuItem* item) con body = PartDesignGui::getBodyFor (feature, false, false, true); // lote of assertion so feature should be marked as a tip - if ( selection.size () == 1 && feature && ( - ( feature->isDerivedFrom ( PartDesign::Feature::getClassTypeId () ) && body ) || - ( feature->isDerivedFrom ( Part::Feature::getClassTypeId () ) && body && + if ( selection.size() == 1 && feature && body && ( + feature->isDerivedFrom() || + ( feature->isDerivedFrom() && body->BaseFeature.getValue() == feature ) ) ) { *item << "PartDesign_MoveTip"; } if (strcmp(recipient, "Tree") == 0) { - Gui::MDIView *activeView = Gui::Application::Instance->activeView(); - if ( !selection.empty() && activeView ) { + if (activeView ) { + if (feature && feature->isDerivedFrom()){ + *item << "Std_ToggleFreeze"; + } + bool docHaveBodies = activeView->getAppDocument()->countObjectsOfType ( PartDesign::Body::getClassTypeId () ) > 0; @@ -120,11 +123,9 @@ void Workbench::setupContextMenu(const char* recipient, Gui::MenuItem* item) con break; } } - if (addMoveFeature) { *item << "PartDesign_MoveFeature"; } - if (addMoveFeatureInTree) { *item << "PartDesign_MoveFeatureInTree"; } @@ -380,14 +381,6 @@ Gui::MenuItem* Workbench::setupMenuBar() const root->insertItem(item, part); part->setCommand("&Part Design"); - // datums - Gui::MenuItem* datums = new Gui::MenuItem; - datums->setCommand("Create a datum"); - - *datums << "PartDesign_Point" - << "PartDesign_Line" - << "PartDesign_Plane"; - // additives Gui::MenuItem* additives = new Gui::MenuItem; additives->setCommand("Create an additive feature"); @@ -429,8 +422,6 @@ Gui::MenuItem* Workbench::setupMenuBar() const *part << "PartDesign_Body" << "Separator" - << datums - << "PartDesign_CoordinateSystem" << "PartDesign_ShapeBinder" << "PartDesign_SubShapeBinder" << "PartDesign_Clone" @@ -490,8 +481,7 @@ Gui::ToolBarItem* Workbench::setupToolBars() const << "Sketcher_ValidateSketch" << "Part_CheckGeometry" << "PartDesign_SubShapeBinder" - << "PartDesign_Clone" - << "PartDesign_CompDatums"; + << "PartDesign_Clone"; part = new Gui::ToolBarItem(root); part->setCommand("Part Design Modeling"); diff --git a/src/Mod/PartDesign/PartDesignTests/TestHelix.py b/src/Mod/PartDesign/PartDesignTests/TestHelix.py index 2e4e0458649b..1f4a816ace9a 100644 --- a/src/Mod/PartDesign/PartDesignTests/TestHelix.py +++ b/src/Mod/PartDesign/PartDesignTests/TestHelix.py @@ -161,7 +161,7 @@ def testGiantHelix(self): helix.Angle = 0 helix.Mode = 0 self.Doc.recompute() - + self.assertTrue(helix.Shape.isValid()) bbox = helix.Shape.BoundBox self.assertAlmostEqual(bbox.ZMin/((10**exponent)**3),0,places=4) @@ -317,6 +317,50 @@ def testCone(self): self.Doc.recompute() self.assertAlmostEqual(helix.Shape.Volume/1e5, 3.8828,places=4) + def testNegativeCone(self): + """ Test helix following a cone with a negative angle """ + body = self.Doc.addObject('PartDesign::Body','ConeBody') + coneSketch = self.Doc.addObject('Sketcher::SketchObject', 'ConeSketch') + body.addObject(coneSketch) + + geoList = [] + geoList.append(Part.LineSegment(FreeCAD.Vector(5, 5, 0), FreeCAD.Vector(3, 0, 0))) + geoList.append(Part.LineSegment(FreeCAD.Vector(3, 0, 0), FreeCAD.Vector(2, 0, 0))) + geoList.append(Part.LineSegment(FreeCAD.Vector(2, 0, 0), FreeCAD.Vector(4, 5, 0))) + geoList.append(Part.LineSegment(FreeCAD.Vector(4, 5, 0), FreeCAD.Vector(5, 5, 0))) + (l1, l2, l3, l4) = coneSketch.addGeometry(geoList) + + conList = [] + conList.append(Sketcher.Constraint("Coincident", 0, 2, 1, 1)) + conList.append(Sketcher.Constraint("Coincident", 1, 2, 2, 1)) + conList.append(Sketcher.Constraint("Coincident", 2, 2, 3, 1)) + conList.append(Sketcher.Constraint("Coincident", 3, 2, 0, 1)) + conList.append(Sketcher.Constraint("Horizontal", 1)) + conList.append(Sketcher.Constraint("Angle", l3, 1, -2, 2, FreeCAD.Units.Quantity("30 deg"))) + conList.append(Sketcher.Constraint("DistanceX", 1, 2, -100)) + conList.append(Sketcher.Constraint("DistanceY", 1, 2, 0)) + conList.append(Sketcher.Constraint("Equal", 0, 2)) + conList.append(Sketcher.Constraint("Equal", 1, 3)) + conList.append(Sketcher.Constraint("DistanceY", 0, 50)) + conList.append(Sketcher.Constraint("DistanceX", 1, 10)) + coneSketch.addConstraint(conList) + + xz_plane = body.Origin.OriginFeatures[4] + coneSketch.AttachmentSupport = xz_plane + coneSketch.MapMode = 'FlatFace' + helix = self.Doc.addObject("PartDesign::AdditiveHelix", "AdditiveHelix") + body.addObject(helix) + helix.Profile = coneSketch + helix.ReferenceAxis = (coneSketch, "V_Axis") + + helix.Pitch = 50 + helix.Height = 110 + helix.Angle = -30 + helix.Mode = 0 + helix.Reversed = False + self.Doc.recompute() + self.assertAlmostEqual(helix.Shape.Volume/1e5, 6.0643, places=4) + def tearDown(self): FreeCAD.closeDocument("PartDesignTestHelix") diff --git a/src/Mod/PartDesign/PartDesignTests/TestHole.py b/src/Mod/PartDesign/PartDesignTests/TestHole.py index 0529c1f0c628..3965d28f42f1 100644 --- a/src/Mod/PartDesign/PartDesignTests/TestHole.py +++ b/src/Mod/PartDesign/PartDesignTests/TestHole.py @@ -116,6 +116,84 @@ def testCountersinkHole(self): self.Doc.recompute() self.assertAlmostEqual(self.Hole.Shape.Volume, 10**3 - pi * 3**2 * 10 - 24.7400421) + def testNoRefineHole(self): + # Add a second box to get a shape with more faces + self.Box2 = self.Doc.addObject('PartDesign::AdditiveBox','Box') + self.Box2.Length=10 + self.Box2.Width=10 + self.Box2.Height=10 + self.Box2.AttacherEngine = u"Engine 3D" + self.Box2.AttachmentOffset = App.Placement( + App.Vector(1.0000000000, 0.0000000000, 0.0000000000), + App.Rotation(0.0000000000, 0.0000000000, 0.0000000000), + ) + self.Box2.MapReversed = False + self.Box2.AttachmentSupport = self.Doc.getObject('XY_Plane') + self.Box2.MapPathParameter = 0.000000 + self.Box2.MapMode = 'FlatFace' + + # Set the Refine option to False, otherwise adding the second box would be useless + self.Box2.Refine = False + self.Body.addObject(self.Box2) + self.Doc.recompute() + + # Move the Hole on top of the Body + self.Body.removeObject(self.Hole) + self.Body.insertObject(self.Hole,self.Box2, True) + self.Body.Tip = self.Hole + self.Hole.Diameter = 6 + self.Hole.Depth = 10 + self.Hole.ThreadType = 0 + self.Hole.HoleCutType = 0 + self.Hole.DepthType = 0 + self.Hole.DrillPoint = 0 + self.Hole.Tapered = 0 + self.Hole.Visibility = True + + # Test the number of faces with the Refine option set to False + self.Hole.Refine = False + self.Doc.recompute() + self.assertEqual(len(self.Hole.Shape.Faces), 15) + + def testRefineHole(self): + # Add a second box to get a shape with more faces + self.Box2 = self.Doc.addObject('PartDesign::AdditiveBox','Box') + self.Box2.Length=10 + self.Box2.Width=10 + self.Box2.Height=10 + self.Box2.AttacherEngine = u"Engine 3D" + self.Box2.AttachmentOffset = App.Placement( + App.Vector(1.0000000000, 0.0000000000, 0.0000000000), + App.Rotation(0.0000000000, 0.0000000000, 0.0000000000), + ) + self.Box2.MapReversed = False + self.Box2.AttachmentSupport = self.Doc.getObject('XY_Plane') + self.Box2.MapPathParameter = 0.000000 + self.Box2.MapMode = 'FlatFace' + + # Set the Refine option to False, otherwise adding the second box would be useless + self.Box2.Refine = False + self.Body.addObject(self.Box2) + self.Doc.recompute() + + # Move the Hole on top of the Body + self.Body.removeObject(self.Hole) + self.Body.insertObject(self.Hole,self.Box2, True) + self.Body.Tip = self.Hole + self.Hole.Diameter = 6 + self.Hole.Depth = 10 + self.Hole.ThreadType = 0 + self.Hole.HoleCutType = 0 + self.Hole.DepthType = 0 + self.Hole.DrillPoint = 0 + self.Hole.Tapered = 0 + self.Hole.Visibility = True + + # Test the number of faces with the Refine option set to True + self.Hole.Refine = True + self.Doc.recompute() + self.assertEqual(len(self.Hole.Shape.Faces), 7) + def tearDown(self): #closing doc FreeCAD.closeDocument("PartDesignTestHole") diff --git a/src/Mod/PartDesign/PartDesignTests/TestTopologicalNamingProblem.py b/src/Mod/PartDesign/PartDesignTests/TestTopologicalNamingProblem.py index f59cadda68fa..f7a456c0b9c9 100644 --- a/src/Mod/PartDesign/PartDesignTests/TestTopologicalNamingProblem.py +++ b/src/Mod/PartDesign/PartDesignTests/TestTopologicalNamingProblem.py @@ -621,7 +621,7 @@ def testPartDesignElementMapRevolution(self): self.assertEqual(self.countFacesEdgesVertexes(revolution.Shape.ElementReverseMap), (9, 21, 14)) self.assertEqual( revolution.Shape.ElementReverseMap["Vertex9"][1].count(";"), 3) - self.assertEqual( revolution.Shape.ElementReverseMap["Face9"].count(";"), 16) + self.assertEqual( revolution.Shape.ElementReverseMap["Face9"].count(";"), 14) # Arrange for an UpToFace mode test revolution.Type = 3 revolution.UpToFace = (pad, ("Face4")) diff --git a/src/Mod/Robot/CMakeLists.txt b/src/Mod/Robot/CMakeLists.txt index 646b7320bb1e..429e54569b22 100644 --- a/src/Mod/Robot/CMakeLists.txt +++ b/src/Mod/Robot/CMakeLists.txt @@ -44,10 +44,12 @@ fc_target_copy_resource(RobotScripts ${CMAKE_BINARY_DIR}/Mod/Robot ${Robot_Scripts}) +if (DEFINED Robot_Resources) fc_target_copy_resource(RobotScripts ${CMAKE_CURRENT_SOURCE_DIR} ${CMAKE_BINARY_DIR}/${CMAKE_INSTALL_DATADIR}/Mod/Robot ${Robot_Resources}) +endif() INSTALL( FILES @@ -56,6 +58,7 @@ INSTALL( Mod/Robot ) +if (DEFINED Robot_Resources) INSTALL( DIRECTORY Lib @@ -65,3 +68,4 @@ INSTALL( PATTERN "*.pdf" EXCLUDE PATTERN "testprog.*" EXCLUDE ) +endif() diff --git a/src/Mod/Sandbox/Gui/GLGraphicsView.cpp b/src/Mod/Sandbox/Gui/GLGraphicsView.cpp index a0136ee71fd4..afd4e560db06 100644 --- a/src/Mod/Sandbox/Gui/GLGraphicsView.cpp +++ b/src/Mod/Sandbox/Gui/GLGraphicsView.cpp @@ -66,10 +66,6 @@ using namespace Gui; -#ifndef GL_MULTISAMPLE -#define GL_MULTISAMPLE 0x809D -#endif - // http://doc.qt.digia.com/qq/qq26-openglcanvas.html GraphicsView::GraphicsView() diff --git a/src/Mod/Sandbox/Gui/Overlay.cpp b/src/Mod/Sandbox/Gui/Overlay.cpp index d50db9df6d66..b8df855acd23 100644 --- a/src/Mod/Sandbox/Gui/Overlay.cpp +++ b/src/Mod/Sandbox/Gui/Overlay.cpp @@ -69,9 +69,6 @@ class MyPaintable : public Gui::GLGraphicsItem view->getSoRenderManager()->scheduleRedraw(); } - #ifndef GL_MULTISAMPLE - #define GL_MULTISAMPLE 0x809D - #endif void paintGL() { const SbViewportRegion vp = view->getSoRenderManager()->getViewportRegion(); diff --git a/src/Mod/Sketcher/App/SketchObject.cpp b/src/Mod/Sketcher/App/SketchObject.cpp index ddb5788dadd6..ba9bedba3dc8 100644 --- a/src/Mod/Sketcher/App/SketchObject.cpp +++ b/src/Mod/Sketcher/App/SketchObject.cpp @@ -127,7 +127,7 @@ FC_LOG_LEVEL_INIT("Sketch", true, true) PROPERTY_SOURCE(Sketcher::SketchObject, Part::Part2DObject) -SketchObject::SketchObject() +SketchObject::SketchObject() : geoLastId(0) { ADD_PROPERTY_TYPE( Geometry, (nullptr), "Sketch", (App::PropertyType)(App::Prop_None), "Sketch geometry"); @@ -164,9 +164,6 @@ SketchObject::SketchObject() "Sketch", (App::PropertyType)(App::Prop_None), "Tolerance for fitting arcs of projected external geometry"); - geoLastId = 0; - geoHistoryLevel = 1; - ADD_PROPERTY(InternalShape, (Part::TopoShape())); ADD_PROPERTY_TYPE(MakeInternals, @@ -3512,7 +3509,7 @@ int SketchObject::trim(int GeoId, const Base::Vector3d& point) Constraint* constr) { // TODO: Move code currently later in this method (that does as per the following description) here. /* It is possible that the trimming entity has both a PointOnObject constraint to the - * trimmed entity, and a simple Tangent contstraint to the trimmed entity. In this case we + * trimmed entity, and a simple Tangent constraint to the trimmed entity. In this case we * want to change to a single end-to-end tangency, i.e we want to ensure that constrType1 is * set to Sketcher::Tangent, that the secondPos1 is captured from the PointOnObject, and * also make sure that the PointOnObject constraint is deleted. The below loop ensures this, @@ -8213,7 +8210,7 @@ static Part::Geometry *fitArcs(std::vector > &ar double tol) { double radius = 0.0; - double m; + double m = 0.0; Base::Vector3d center; for (auto &geo : arcs) { if (auto arc = Base::freecad_dynamic_cast(geo.get())) { @@ -8228,27 +8225,27 @@ static Part::Geometry *fitArcs(std::vector > &ar } else return nullptr; } - if (radius == 0.0) + if (radius == 0.0) { return nullptr; + } if (P1.SquareDistance(P2) < Precision::Confusion()) { Part::GeomCircle* circle = new Part::GeomCircle(); circle->setCenter(center); circle->setRadius(radius); return circle; } - else if (arcs.size() == 1) { + if (arcs.size() == 1) { auto res = arcs.front().release(); arcs.clear(); return res; } - else { - GeomLProp_CLProps prop(Handle(Geom_Curve)::DownCast(arcs.front()->handle()),m,0,Precision::Confusion()); - gp_Pnt midPoint = prop.Value(); - GC_MakeArcOfCircle arc(P1, midPoint, P2); - auto geo = new Part::GeomArcOfCircle(); - geo->setHandle(arc.Value()); - return geo; - } + + GeomLProp_CLProps prop(Handle(Geom_Curve)::DownCast(arcs.front()->handle()),m,0,Precision::Confusion()); + gp_Pnt midPoint = prop.Value(); + GC_MakeArcOfCircle arc(P1, midPoint, P2); + auto geo = new Part::GeomArcOfCircle(); + geo->setHandle(arc.Value()); + return geo; } void SketchObject::validateExternalLinks() diff --git a/src/Mod/Sketcher/App/SketchObject.h b/src/Mod/Sketcher/App/SketchObject.h index 1b6239691f8f..fd5c67520717 100644 --- a/src/Mod/Sketcher/App/SketchObject.h +++ b/src/Mod/Sketcher/App/SketchObject.h @@ -1062,7 +1062,8 @@ class SketcherExport SketchObject: public Part::Part2DObject // mapping from Geometry[*].Id to index of Geometry std::map geoMap; - int geoHistoryLevel; + // keep geoHistoryLevel and the code who ise it for easier porting of stuff from LS3 branch + const int geoHistoryLevel = 1; std::vector geoIdHistory; long geoLastId; diff --git a/src/Mod/Sketcher/App/SketchObjectPy.xml b/src/Mod/Sketcher/App/SketchObjectPy.xml index d9d5834b9b63..43dab8c3b760 100644 --- a/src/Mod/Sketcher/App/SketchObjectPy.xml +++ b/src/Mod/Sketcher/App/SketchObjectPy.xml @@ -253,7 +253,7 @@ carbonCopy(objName:str, asConstruction=True) Add a link to an external geometry. -addExternal(objName:str, subName:str, bool:defining, bool:intersection) +addExternal(objName:str, subName:str, defining:bool=False, intersection:bool=False) Args: objName: The name of the document object to reference. diff --git a/src/Mod/Sketcher/App/SketchObjectPyImp.cpp b/src/Mod/Sketcher/App/SketchObjectPyImp.cpp index 072e389e661e..1344f15bb6e5 100644 --- a/src/Mod/Sketcher/App/SketchObjectPyImp.cpp +++ b/src/Mod/Sketcher/App/SketchObjectPyImp.cpp @@ -555,39 +555,24 @@ PyObject* SketchObjectPy::carbonCopy(PyObject* args) PyObject* SketchObjectPy::addExternal(PyObject* args) { - char* ObjectName; - char* SubName; - PyObject* defining; // this is an optional argument default false - PyObject* intersection; // this is an optional argument default false - bool isDefining; - bool isIntersection; + char* ObjectName = nullptr; + char* SubName = nullptr; + PyObject* defining = Py_False; + PyObject* intersection = Py_False; if (!PyArg_ParseTuple(args, - "ssO!O!", + "ss|O!O!", &ObjectName, &SubName, &PyBool_Type, &defining, &PyBool_Type, &intersection)) { - if (!PyArg_ParseTuple(args, "ssO!", &ObjectName, &SubName, &PyBool_Type, &defining)) { - PyErr_Clear(); - if (!PyArg_ParseTuple(args, "ss", &ObjectName, &SubName)) { - return nullptr; - } - else { - isDefining = false; - } - } - else { - isDefining = Base::asBoolean(defining); - } - isIntersection = false; - } - else { - isDefining = Base::asBoolean(defining); - isIntersection = Base::asBoolean(intersection); + return nullptr; } + bool isDefining = Base::asBoolean(defining); + bool isIntersection = Base::asBoolean(intersection); + // get the target object for the external link Sketcher::SketchObject* skObj = this->getSketchObjectPtr(); App::DocumentObject* Obj = skObj->getDocument()->getObject(ObjectName); @@ -780,8 +765,8 @@ PyObject* SketchObjectPy::setDatum(PyObject* args) str << "Cannot set the datum because the sketch contains conflicting constraints"; } else if (err == -2) { - str << "Datum " << (const char*)Quantity.getUserString().toUtf8() - << " for the constraint with index " << Index << " is invalid"; + str << "Datum " << Quantity.getUserString() << " for the constraint with index " + << Index << " is invalid"; } else if (err == -4) { str << "Negative datum values are not valid for the constraint with index " << Index; @@ -793,8 +778,7 @@ PyObject* SketchObjectPy::setDatum(PyObject* args) str << "Cannot set the datum because of invalid geometry"; } else { - str << "Unexpected problem at setting datum " - << (const char*)Quantity.getUserString().toUtf8() + str << "Unexpected problem at setting datum " << Quantity.getUserString() << " for the constraint with index " << Index; } PyErr_SetString(PyExc_ValueError, str.str().c_str()); diff --git a/src/Mod/Sketcher/App/planegcs/Geo.cpp b/src/Mod/Sketcher/App/planegcs/Geo.cpp index b46ce7c0f71b..cbb4e30983b8 100644 --- a/src/Mod/Sketcher/App/planegcs/Geo.cpp +++ b/src/Mod/Sketcher/App/planegcs/Geo.cpp @@ -1141,7 +1141,7 @@ double BSpline::splineValue(double x, size_t k, unsigned int p, VEC_D& d, const } } - return d[p]; + return p < d.size() ? d[p] : 0.0; } void BSpline::setupFlattenedKnots() diff --git a/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp b/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp index 9a1ee5713e81..95212cc61a84 100644 --- a/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp +++ b/src/Mod/Sketcher/Gui/CommandCreateGeo.cpp @@ -39,6 +39,7 @@ #include #include #include +#include #include #include #include @@ -1515,7 +1516,11 @@ CONSTRUCTION_UPDATE_ACTION(CmdSketcherProjection, "Sketcher_Projection") void CmdSketcherProjection::activated(int iMsg) { Q_UNUSED(iMsg); - ActivateHandler(getActiveGuiDocument(), std::make_unique()); + bool extGeoRef = Gui::WindowParameter::getDefaultParameter() + ->GetGroup("Mod/Sketcher/General") + ->GetBool("AlwaysExtGeoReference", false); + ActivateHandler(getActiveGuiDocument(), + std::make_unique(extGeoRef, false)); } bool CmdSketcherProjection::isActive() @@ -1546,12 +1551,17 @@ CmdSketcherIntersection::CmdSketcherIntersection() CONSTRUCTION_UPDATE_ACTION(CmdSketcherIntersection, "Sketcher_Intersection") -void CmdSketcherIntersection::activated(int) +void CmdSketcherIntersection::activated(int iMsg) { - ActivateHandler(getActiveGuiDocument(), std::make_unique(true)); + Q_UNUSED(iMsg); + bool extGeoRef = Gui::WindowParameter::getDefaultParameter() + ->GetGroup("Mod/Sketcher/General") + ->GetBool("AlwaysExtGeoReference", false); + ActivateHandler(getActiveGuiDocument(), + std::make_unique(extGeoRef, true)); } -bool CmdSketcherIntersection::isActive(void) +bool CmdSketcherIntersection::isActive() { return isCommandActive(getActiveGuiDocument()); } diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerExternal.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerExternal.h index d7bc44bc6afc..57391568092b 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerExternal.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerExternal.h @@ -116,8 +116,9 @@ class ExternalSelection: public Gui::SelectionFilterGate class DrawSketchHandlerExternal: public DrawSketchHandler { public: - DrawSketchHandlerExternal(bool intersection = false) - : intersection(intersection) + DrawSketchHandlerExternal(bool alwaysReference, bool intersection) + : alwaysReference {alwaysReference} + , intersection {intersection} {} ~DrawSketchHandlerExternal() override { @@ -168,7 +169,8 @@ class DrawSketchHandlerExternal: public DrawSketchHandler "addExternal(\"%s\",\"%s\", %s, %s)", msg.pObjectName, msg.pSubName, - isConstructionMode() ? "False" : "True", + alwaysReference || isConstructionMode() ? "False" + : "True", intersection ? "True" : "False"); Gui::Command::commitCommand(); @@ -229,6 +231,7 @@ class DrawSketchHandlerExternal: public DrawSketchHandler setAxisPickStyle(true); } + bool alwaysReference; bool intersection; }; diff --git a/src/Mod/Sketcher/Gui/DrawSketchHandlerLineSet.h b/src/Mod/Sketcher/Gui/DrawSketchHandlerLineSet.h index f8673d028519..b8600b543581 100644 --- a/src/Mod/Sketcher/Gui/DrawSketchHandlerLineSet.h +++ b/src/Mod/Sketcher/Gui/DrawSketchHandlerLineSet.h @@ -554,6 +554,7 @@ class DrawSketchHandlerLineSet: public DrawSketchHandler static_cast(lastEndPosId), firstCurve, static_cast(firstPosId)); + firstsegment = true; } Gui::Command::commitCommand(); diff --git a/src/Mod/Sketcher/Gui/EditDatumDialog.cpp b/src/Mod/Sketcher/Gui/EditDatumDialog.cpp index 13db66510db5..88db1b321bb5 100644 --- a/src/Mod/Sketcher/Gui/EditDatumDialog.cpp +++ b/src/Mod/Sketcher/Gui/EditDatumDialog.cpp @@ -203,7 +203,7 @@ void EditDatumDialog::accepted() ui_ins_datum->labelEdit->apply(); } else { - auto unitString = newQuant.getUnit().getString().toUtf8().toStdString(); + auto unitString = newQuant.getUnit().getString(); unitString = Base::Tools::escapeQuotesFromString(unitString); Gui::cmdAppObjectArgs(sketch, "setDatum(%i,App.Units.Quantity('%f %s'))", diff --git a/src/Mod/Sketcher/Gui/EditModeConstraintCoinManager.cpp b/src/Mod/Sketcher/Gui/EditModeConstraintCoinManager.cpp index d2762cd688b6..e055539283d6 100644 --- a/src/Mod/Sketcher/Gui/EditModeConstraintCoinManager.cpp +++ b/src/Mod/Sketcher/Gui/EditModeConstraintCoinManager.cpp @@ -2095,11 +2095,10 @@ void EditModeConstraintCoinManager::rebuildConstraintNodes( QString EditModeConstraintCoinManager::getPresentationString(const Constraint* constraint) { - QString nameStr; // name parameter string + std::string nameStr; // name parameter string QString valueStr; // dimensional value string - QString presentationStr; // final return string - QString unitStr; // the actual unit string - QString baseUnitStr; // the expected base unit string + std::string unitStr; // the actual unit string + std::string baseUnitStr; // the expected base unit string double factor; // unit scaling factor, currently not used Base::UnitSystem unitSys; // current unit system @@ -2108,10 +2107,11 @@ QString EditModeConstraintCoinManager::getPresentationString(const Constraint* c } // Get the current name parameter string of the constraint - nameStr = QString::fromStdString(constraint->Name); + nameStr = constraint->Name; // Get the current value string including units - valueStr = constraint->getPresentationValue().getUserString(factor, unitStr); + valueStr = + QString::fromStdString(constraint->getPresentationValue().getUserString(factor, unitStr)); // Hide units if user has requested it, is being displayed in the base // units, and the schema being used has a clear base unit in the first @@ -2127,19 +2127,19 @@ QString EditModeConstraintCoinManager::getPresentationString(const Constraint* c switch (unitSys) { case Base::UnitSystem::SI1: case Base::UnitSystem::MmMin: - baseUnitStr = QString::fromLatin1("mm"); + baseUnitStr = "mm"; break; case Base::UnitSystem::SI2: - baseUnitStr = QString::fromLatin1("m"); + baseUnitStr = "m"; break; case Base::UnitSystem::ImperialDecimal: - baseUnitStr = QString::fromLatin1("in"); + baseUnitStr = "in"; break; case Base::UnitSystem::Centimeters: - baseUnitStr = QString::fromLatin1("cm"); + baseUnitStr = "cm"; break; default: @@ -2147,9 +2147,9 @@ QString EditModeConstraintCoinManager::getPresentationString(const Constraint* c break; } - if (!baseUnitStr.isEmpty()) { + if (!baseUnitStr.empty()) { // expected unit string matches actual unit string. remove. - if (QString::compare(baseUnitStr, unitStr) == 0) { + if (baseUnitStr.compare(unitStr) == 0) { // Example code from: Mod/TechDraw/App/DrawViewDimension.cpp:372 QRegularExpression rxUnits( QString::fromUtf8(" \\D*$")); // space + any non digits at end of string @@ -2171,17 +2171,19 @@ QString EditModeConstraintCoinManager::getPresentationString(const Constraint* c %N - the constraint name parameter %V - the value of the dimensional constraint, including any unit characters */ - if (constraintParameters.bShowDimensionalName && !nameStr.isEmpty()) { + if (constraintParameters.bShowDimensionalName && !nameStr.empty()) { + QString presentationStr; if (constraintParameters.sDimensionalStringFormat.contains(QLatin1String("%V")) || constraintParameters.sDimensionalStringFormat.contains(QLatin1String("%N"))) { presentationStr = constraintParameters.sDimensionalStringFormat; - presentationStr.replace(QLatin1String("%N"), nameStr); + presentationStr.replace(QLatin1String("%N"), QString::fromStdString(nameStr)); presentationStr.replace(QLatin1String("%V"), valueStr); } else { // user defined format string does not contain any valid parameter, using default format // "%N = %V" - presentationStr = nameStr + QLatin1String(" = ") + valueStr; + presentationStr = + QString::fromStdString(nameStr) + QString::fromLatin1(" = ") + valueStr; } return presentationStr; diff --git a/src/Mod/Sketcher/Gui/PropertyConstraintListItem.cpp b/src/Mod/Sketcher/Gui/PropertyConstraintListItem.cpp index bad00d161bd4..4d443701babb 100644 --- a/src/Mod/Sketcher/Gui/PropertyConstraintListItem.cpp +++ b/src/Mod/Sketcher/Gui/PropertyConstraintListItem.cpp @@ -50,8 +50,7 @@ PropertyConstraintListItem::~PropertyConstraintListItem() QVariant PropertyConstraintListItem::toString(const QVariant& prop) const { const QList& value = prop.value>(); - QString str; - QTextStream out(&str); + std::stringstream out; out << "["; for (QList::const_iterator it = value.begin(); it != value.end(); ++it) { if (it != value.begin()) { @@ -60,7 +59,7 @@ QVariant PropertyConstraintListItem::toString(const QVariant& prop) const out << it->getUserString(); } out << "]"; - return QVariant(str); + return QVariant(QString::fromStdString(out.str())); } void PropertyConstraintListItem::initialize() diff --git a/src/Mod/Sketcher/Gui/SketcherSettings.cpp b/src/Mod/Sketcher/Gui/SketcherSettings.cpp index c74c9e32f802..ca48c9f24226 100644 --- a/src/Mod/Sketcher/Gui/SketcherSettings.cpp +++ b/src/Mod/Sketcher/Gui/SketcherSettings.cpp @@ -112,6 +112,7 @@ void SketcherSettings::saveSettings() ui->checkBoxAutoRemoveRedundants->onSave(); ui->checkBoxUnifiedCoincident->onSave(); ui->checkBoxHorVerAuto->onSave(); + ui->checkBoxAddExtGeo->onSave(); enum { @@ -186,6 +187,7 @@ void SketcherSettings::loadSettings() setProperty("checkBoxUnifiedCoincident", ui->checkBoxUnifiedCoincident->isChecked()); ui->checkBoxHorVerAuto->onRestore(); setProperty("checkBoxHorVerAuto", ui->checkBoxHorVerAuto->isChecked()); + ui->checkBoxAddExtGeo->onRestore(); // Dimensioning constraints mode ui->dimensioningMode->clear(); diff --git a/src/Mod/Sketcher/Gui/SketcherSettings.ui b/src/Mod/Sketcher/Gui/SketcherSettings.ui index 134703a28449..f465cba556d7 100644 --- a/src/Mod/Sketcher/Gui/SketcherSettings.ui +++ b/src/Mod/Sketcher/Gui/SketcherSettings.ui @@ -216,6 +216,25 @@ Requires to re-enter edit mode to take effect.
+ + + + If checked then external geometry is always added as reference, otherwise it's added according to the current construction mode. + + + Always add external geometry as reference + + + false + + + AlwaysExtGeoReference + + + Mod/Sketcher/General + + + diff --git a/src/Mod/Sketcher/Gui/TaskSketcherConstraints.cpp b/src/Mod/Sketcher/Gui/TaskSketcherConstraints.cpp index 349e62f20064..163308fbd797 100644 --- a/src/Mod/Sketcher/Gui/TaskSketcherConstraints.cpp +++ b/src/Mod/Sketcher/Gui/TaskSketcherConstraints.cpp @@ -158,7 +158,8 @@ class ConstraintItem: public QListWidgetItem case Sketcher::Diameter: case Sketcher::Angle: name = QString::fromLatin1("%1 (%2)").arg( - name, constraint->getPresentationValue().getUserString()); + name, + QString::fromStdString(constraint->getPresentationValue().getUserString())); break; case Sketcher::SnellsLaw: { double v = constraint->getPresentationValue().getValue(); diff --git a/src/Mod/Sketcher/Gui/Utils.cpp b/src/Mod/Sketcher/Gui/Utils.cpp index 0211b0bf6c92..fd29f90d9710 100644 --- a/src/Mod/Sketcher/Gui/Utils.cpp +++ b/src/Mod/Sketcher/Gui/Utils.cpp @@ -719,41 +719,41 @@ std::string SketcherGui::lengthToDisplayFormat(double value, int digits) Base::Quantity asQuantity; asQuantity.setValue(value); asQuantity.setUnit(Base::Unit::Length); - QString qUserString = asQuantity.getUserString(); + std::string userString = asQuantity.getUserString(); if (Base::UnitsApi::isMultiUnitLength() || (!hideUnits() && useSystemDecimals())) { // just return the user string - return qUserString.toStdString(); + return userString; } // find the unit of measure double factor = 1.0; - QString qUnitString; - QString qtranslate = Base::UnitsApi::schemaTranslate(asQuantity, factor, qUnitString); - QString unitPart = QString::fromUtf8(" ") + qUnitString; + std::string unitString; + std::string translate = Base::UnitsApi::schemaTranslate(asQuantity, factor, unitString); + std::string unitPart = " " + unitString; // get the numeric part of the user string QRegularExpression rxNoUnits( QString::fromUtf8("(.*) \\D*$")); // text before space + any non digits at end of string - QRegularExpressionMatch match = rxNoUnits.match(qUserString); + QRegularExpressionMatch match = rxNoUnits.match(QString::fromStdString(userString)); if (!match.hasMatch()) { // no units in userString? - return qUserString.toStdString(); + return userString; } QString matched = match.captured(1); // matched is the numeric part of user string + auto smatched = matched.toStdString(); int dpPos = matched.indexOf(QLocale().decimalPoint()); if (dpPos < 0) { - auto ret = matched.toStdString(); // no decimal separator (ie an integer), return all the digits if (!hideUnits()) { - ret.append(unitPart.toStdString()); + smatched.append(unitPart); } - return ret; + return smatched; } // real number if (useSystemDecimals() && hideUnits()) { // return just the numeric part of the user string - return matched.toStdString(); + return smatched; } // real number and not using system decimals @@ -764,7 +764,7 @@ std::string SketcherGui::lengthToDisplayFormat(double value, int digits) } auto numericPart = matched.left(requiredLength).toStdString(); if (!hideUnits()) { - numericPart.append(unitPart.toStdString()); + numericPart.append(unitPart); } return numericPart; } @@ -779,7 +779,7 @@ std::string SketcherGui::angleToDisplayFormat(double value, int digits) Base::Quantity asQuantity; asQuantity.setValue(value); asQuantity.setUnit(Base::Unit::Angle); - QString qUserString = asQuantity.getUserString(); + QString qUserString = QString::fromStdString(asQuantity.getUserString()); if (Base::UnitsApi::isMultiUnitAngle()) { // just return the user string // Coin SbString doesn't handle utf8 well, so we convert to ascii @@ -794,7 +794,7 @@ std::string SketcherGui::angleToDisplayFormat(double value, int digits) // we always use use U+00B0 (°) as the unit of measure for angles in // single unit schema. Will need a change to support rads or grads. - auto qUnitString = QString::fromUtf8("°"); + std::string unitString = "°"; auto decimalSep = QLocale().decimalPoint(); // get the numeric part of the user string @@ -806,18 +806,12 @@ std::string SketcherGui::angleToDisplayFormat(double value, int digits) return qUserString.toStdString(); } QString matched = match.captured(1); // matched is the numeric part of user string - auto smatched = matched.toStdString(); - auto sUnitString = qUnitString.toStdString(); int dpPos = matched.indexOf(decimalSep); - if (dpPos < 0) { - // no decimal separator (ie an integer), return all the digits - return smatched + sUnitString; - } - - // real number - if (useSystemDecimals()) { - // return just the numeric part of the user string + degree symbol - return smatched + sUnitString; + if (dpPos < 0 || useSystemDecimals()) { + // just the numeric part of the user string + degree symbol + auto angle = matched.toStdString(); + angle.append(unitString); + return angle; } // real number and not using system decimals @@ -827,7 +821,7 @@ std::string SketcherGui::angleToDisplayFormat(double value, int digits) requiredLength = matched.size(); } auto numericPart = matched.left(requiredLength).toStdString(); - numericPart.append(sUnitString); + numericPart.append(unitString); return numericPart; } diff --git a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp index 8ea22eb7cae3..2ab463630466 100644 --- a/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp +++ b/src/Mod/Sketcher/Gui/ViewProviderSketch.cpp @@ -158,8 +158,7 @@ void ViewProviderSketch::ParameterObserver::updateGridSize(const std::string& st "User parameter:BaseApp/Preferences/Mod/Sketcher/General"); Client.GridSize.setValue( - Base::Quantity::parse( - QString::fromLatin1(hGrp->GetGroup("GridSize")->GetASCII("GridSize", "10.0").c_str())) + Base::Quantity::parse(hGrp->GetGroup("GridSize")->GetASCII("GridSize", "10.0")) .getValue()); } diff --git a/src/Mod/Sketcher/SketcherTests/TestSketcherSolver.py b/src/Mod/Sketcher/SketcherTests/TestSketcherSolver.py index 3e96bfd3e8c5..cdb8d6b1c1d6 100644 --- a/src/Mod/Sketcher/SketcherTests/TestSketcherSolver.py +++ b/src/Mod/Sketcher/SketcherTests/TestSketcherSolver.py @@ -482,31 +482,25 @@ def testCircleToLineDistance_Reference_Secant(self): def testRemovedExternalGeometryReference(self): body = self.Doc.addObject("PartDesign::Body", "Body") - sketch = self.Doc.addObject("Sketcher::SketchObject", "Sketch") + sketch = body.newObject("Sketcher::SketchObject", "Sketch") CreateRectangleSketch(sketch, (0, 0), (30, 30)) - pad = self.Doc.addObject("PartDesign::Pad", "Pad") + pad = body.newObject("PartDesign::Pad", "Pad") pad.Profile = sketch - sketch1 = self.Doc.addObject("Sketcher::SketchObject", "Sketch1") + sketch1 = body.newObject("Sketcher::SketchObject", "Sketch1") CreateCircleSketch(sketch1, (15, 15), 0.25) - body.addObject(sketch) - body.addObject(pad) - body.addObject(sketch1) self.Doc.recompute() + self.assertEqual(len(pad.Shape.Edges), 12) + hole = self.Doc.addObject("PartDesign::Hole", "Hole") hole.Refine = True + hole.Reversed = True body.addObject(hole) hole.Profile = sketch1 - hole.Diameter = 0.250000 - hole.Depth = 10.000000 hole.DrillPointAngle = 118.000000 - hole.TaperedAngle = 90.000000 hole.Diameter = 6.000000 - hole.Depth = 8.000000 - hole.DrillPointAngle = 118.000000 hole.TaperedAngle = 90.000000 hole.Tapered = 0 hole.Depth = 8.000000 - hole.DrillPointAngle = 118.000000 hole.Threaded = 1 hole.ModelThread = 0 hole.ThreadDepthType = 0 @@ -518,24 +512,25 @@ def testRemovedExternalGeometryReference(self): hole.DepthType = 0 hole.DrillPoint = 1 hole.DrillForDepth = 0 - hole.Tapered = 0 self.Doc.recompute() - self.assertEqual(len(hole.Shape.Edges), 13) - hole.Threaded = True - hole.ModelThread = True - body.addObject(hole) - # - sketch2 = self.Doc.addObject("Sketcher::SketchObject", "Sketch2") + # 15 edges if it's passthrough-flat 17 if DrillPoint = 1 + self.assertEqual(len(hole.Shape.Edges), 17) + + hole.ModelThread = 1 + sketch2 = body.newObject("Sketcher::SketchObject", "Sketch2") CreateRectangleSketch(sketch2, (0, 0), (3, 3)) - body.addObject(sketch2) self.Doc.recompute() - sketch2.addExternal("Hole", "Edge29") # Edge29 will disappear when we stop modeling threads - self.assertEqual(len(hole.Shape.Edges), 38) - hole.ModelThread = False - hole.Refine = True + self.assertGreater(len(hole.Shape.Edges), 17) + # 77 edges for basic profile + self.assertEqual(len(hole.Shape.Edges), 77) + + # Edges in the thread should disappear when we stop modeling thread + sketch2.addExternal("Hole", "Edge29") + hole.ModelThread = 0 + hole.Refine = 1 self.Doc.recompute() - self.assertEqual(len(hole.Shape.Edges), 38) - self.assertEqual(len(sketch2.ExternalGeometry), 1) + self.assertEqual(len(hole.Shape.Edges), 17) + self.assertEqual(len(sketch2.ExternalGeometry), 0) def testSaveLoadWithExternalGeometryReference(self): # Arrange diff --git a/src/Mod/Spreadsheet/App/PropertySheet.cpp b/src/Mod/Spreadsheet/App/PropertySheet.cpp index 9695a1d411d4..73fb0a11fdba 100644 --- a/src/Mod/Spreadsheet/App/PropertySheet.cpp +++ b/src/Mod/Spreadsheet/App/PropertySheet.cpp @@ -129,20 +129,16 @@ const Cell* PropertySheet::getValueFromAlias(const std::string& alias) const bool PropertySheet::isValidCellAddressName(const std::string& candidate) { - static const boost::regex gen("^[A-Za-z][_A-Za-z0-9]*$"); - boost::cmatch cm; - /* Check if it matches a cell reference */ - if (boost::regex_match(candidate.c_str(), cm, gen)) { - static const boost::regex e("\\${0,1}([A-Z]{1,2})\\${0,1}([0-9]{1,5})"); + static const boost::regex e("\\${0,1}([A-Z]{1,2})\\${0,1}([0-9]{1,5})"); + boost::cmatch cm; - if (boost::regex_match(candidate.c_str(), cm, e)) { - const boost::sub_match colstr = cm[1]; - const boost::sub_match rowstr = cm[2]; + if (boost::regex_match(candidate.c_str(), cm, e)) { + const boost::sub_match colstr = cm[1]; + const boost::sub_match rowstr = cm[2]; - if (App::validRow(rowstr.str()) >= 0 && App::validColumn(colstr.str())) { - return true; - } + if (App::validRow(rowstr.str()) >= 0 && App::validColumn(colstr.str())) { + return true; } } return false; @@ -150,13 +146,19 @@ bool PropertySheet::isValidCellAddressName(const std::string& candidate) bool PropertySheet::isValidAlias(const std::string& candidate) { + /* Ensure it only contains allowed characters */ + static const boost::regex gen("^[A-Za-z][_A-Za-z0-9]*$"); + boost::cmatch cm; + if (!boost::regex_match(candidate.c_str(), cm, gen)) { + return false; + } /* Check if it is used before */ if (getValueFromAlias(candidate)) { return false; } - /* check if it would be a valid cell address name, e.g. "A2" or "C3" */ + /* Check if it would be a valid cell address name, e.g. "A2" or "C3" */ if (isValidCellAddressName(candidate)) { return false; } diff --git a/src/Mod/Spreadsheet/App/Sheet.cpp b/src/Mod/Spreadsheet/App/Sheet.cpp index 0171fd1eee4b..88376404dd2b 100644 --- a/src/Mod/Spreadsheet/App/Sheet.cpp +++ b/src/Mod/Spreadsheet/App/Sheet.cpp @@ -110,7 +110,7 @@ Sheet::~Sheet() /** * Clear all cells in the sheet. These are implemented as dynamic * properties, for example "A1" is added as a dynamic property. Since - * now users may add dyanamic properties, we need to try to avoid + * now users may add dynamic properties, we need to try to avoid * removing those, too, so we check whether the dynamic property name * is a valid cell address name before removing it. */ diff --git a/src/Mod/Spreadsheet/Gui/CMakeLists.txt b/src/Mod/Spreadsheet/Gui/CMakeLists.txt index 35e130667fe1..f6a6a2f3af07 100644 --- a/src/Mod/Spreadsheet/Gui/CMakeLists.txt +++ b/src/Mod/Spreadsheet/Gui/CMakeLists.txt @@ -86,6 +86,8 @@ SET(SpreadsheetGui_SRCS DlgBindSheet.cpp DlgSheetConf.h DlgSheetConf.cpp + ZoomableView.h + ZoomableView.cpp ${SpreadsheetGui_UIC_HDRS} ) diff --git a/src/Mod/Spreadsheet/Gui/Command.cpp b/src/Mod/Spreadsheet/Gui/Command.cpp index 1ef8e34660a6..b16e5477552d 100644 --- a/src/Mod/Spreadsheet/Gui/Command.cpp +++ b/src/Mod/Spreadsheet/Gui/Command.cpp @@ -58,7 +58,7 @@ CmdSpreadsheetMergeCells::CmdSpreadsheetMergeCells() { sAppModule = "Spreadsheet"; sGroup = QT_TR_NOOP("Spreadsheet"); - sMenuText = QT_TR_NOOP("Merge cells"); + sMenuText = QT_TR_NOOP("&Merge cells"); sToolTipText = QT_TR_NOOP("Merge selected cells"); sWhatsThis = "Spreadsheet_MergeCells"; sStatusTip = sToolTipText; @@ -119,7 +119,7 @@ CmdSpreadsheetSplitCell::CmdSpreadsheetSplitCell() { sAppModule = "Spreadsheet"; sGroup = QT_TR_NOOP("Spreadsheet"); - sMenuText = QT_TR_NOOP("Split cell"); + sMenuText = QT_TR_NOOP("Sp&lit cell"); sToolTipText = QT_TR_NOOP("Split previously merged cells"); sWhatsThis = "Spreadsheet_SplitCell"; sStatusTip = sToolTipText; @@ -140,7 +140,7 @@ void CmdSpreadsheetSplitCell::activated(int iMsg) if (current.isValid()) { std::string address = CellAddress(current.row(), current.column()).toString(); - Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Split cell")); + Gui::Command::openCommand(QT_TRANSLATE_NOOP("Command", "Sp&lit cell")); Gui::Command::doCommand(Gui::Command::Doc, "App.ActiveDocument.%s.splitCell('%s')", sheet->getNameInDocument(), @@ -181,7 +181,7 @@ CmdSpreadsheetImport::CmdSpreadsheetImport() { sAppModule = "Spreadsheet"; sGroup = QT_TR_NOOP("Spreadsheet"); - sMenuText = QT_TR_NOOP("Import spreadsheet"); + sMenuText = QT_TR_NOOP("&Import spreadsheet"); sToolTipText = QT_TR_NOOP("Import CSV file into spreadsheet"); sWhatsThis = "Spreadsheet_Import"; sStatusTip = sToolTipText; @@ -234,7 +234,7 @@ CmdSpreadsheetExport::CmdSpreadsheetExport() { sAppModule = "Spreadsheet"; sGroup = QT_TR_NOOP("Spreadsheet"); - sMenuText = QT_TR_NOOP("Export spreadsheet"); + sMenuText = QT_TR_NOOP("&Export spreadsheet"); sToolTipText = QT_TR_NOOP("Export spreadsheet to CSV file"); sWhatsThis = "Spreadsheet_Export"; sStatusTip = sToolTipText; @@ -280,7 +280,7 @@ CmdSpreadsheetAlignLeft::CmdSpreadsheetAlignLeft() { sAppModule = "Spreadsheet"; sGroup = QT_TR_NOOP("Spreadsheet"); - sMenuText = QT_TR_NOOP("Align left"); + sMenuText = QT_TR_NOOP("Align &left"); sToolTipText = QT_TR_NOOP("Left-align contents of selected cells"); sWhatsThis = "Spreadsheet_AlignLeft"; sStatusTip = sToolTipText; @@ -337,7 +337,7 @@ CmdSpreadsheetAlignCenter::CmdSpreadsheetAlignCenter() { sAppModule = "Spreadsheet"; sGroup = QT_TR_NOOP("Spreadsheet"); - sMenuText = QT_TR_NOOP("Align center"); + sMenuText = QT_TR_NOOP("Align ¢er"); sToolTipText = QT_TR_NOOP("Center-align contents of selected cells"); sWhatsThis = "Spreadsheet_AlignCenter"; sStatusTip = sToolTipText; @@ -394,7 +394,7 @@ CmdSpreadsheetAlignRight::CmdSpreadsheetAlignRight() { sAppModule = "Spreadsheet"; sGroup = QT_TR_NOOP("Spreadsheet"); - sMenuText = QT_TR_NOOP("Align right"); + sMenuText = QT_TR_NOOP("Align &right"); sToolTipText = QT_TR_NOOP("Right-align contents of selected cells"); sWhatsThis = "Spreadsheet_AlignRight"; sStatusTip = sToolTipText; @@ -451,7 +451,7 @@ CmdSpreadsheetAlignTop::CmdSpreadsheetAlignTop() { sAppModule = "Spreadsheet"; sGroup = QT_TR_NOOP("Spreadsheet"); - sMenuText = QT_TR_NOOP("Align top"); + sMenuText = QT_TR_NOOP("Align &top"); sToolTipText = QT_TR_NOOP("Top-align contents of selected cells"); sWhatsThis = "Spreadsheet_AlignTop"; sStatusTip = sToolTipText; @@ -508,7 +508,7 @@ CmdSpreadsheetAlignBottom::CmdSpreadsheetAlignBottom() { sAppModule = "Spreadsheet"; sGroup = QT_TR_NOOP("Spreadsheet"); - sMenuText = QT_TR_NOOP("Align bottom"); + sMenuText = QT_TR_NOOP("Align &bottom"); sToolTipText = QT_TR_NOOP("Bottom-align contents of selected cells"); sWhatsThis = "Spreadsheet_AlignBottom"; sStatusTip = sToolTipText; @@ -565,7 +565,7 @@ CmdSpreadsheetAlignVCenter::CmdSpreadsheetAlignVCenter() { sAppModule = "Spreadsheet"; sGroup = QT_TR_NOOP("Spreadsheet"); - sMenuText = QT_TR_NOOP("Vertically center-align"); + sMenuText = QT_TR_NOOP("&Vertically center-align"); sToolTipText = QT_TR_NOOP("Vertically center-align contents of selected cells"); sWhatsThis = "Spreadsheet_AlignVCenter"; sStatusTip = sToolTipText; @@ -622,7 +622,7 @@ CmdSpreadsheetStyleBold::CmdSpreadsheetStyleBold() { sAppModule = "Spreadsheet"; sGroup = QT_TR_NOOP("Spreadsheet"); - sMenuText = QT_TR_NOOP("Bold text"); + sMenuText = QT_TR_NOOP("&Bold text"); sToolTipText = QT_TR_NOOP("Set text in selected cells bold"); sWhatsThis = "Spreadsheet_StyleBold"; sStatusTip = sToolTipText; @@ -706,7 +706,7 @@ CmdSpreadsheetStyleItalic::CmdSpreadsheetStyleItalic() { sAppModule = "Spreadsheet"; sGroup = QT_TR_NOOP("Spreadsheet"); - sMenuText = QT_TR_NOOP("Italic text"); + sMenuText = QT_TR_NOOP("&Italic text"); sToolTipText = QT_TR_NOOP("Set text in selected cells italic"); sWhatsThis = "Spreadsheet_StyleItalic"; sStatusTip = sToolTipText; @@ -790,7 +790,7 @@ CmdSpreadsheetStyleUnderline::CmdSpreadsheetStyleUnderline() { sAppModule = "Spreadsheet"; sGroup = QT_TR_NOOP("Spreadsheet"); - sMenuText = QT_TR_NOOP("Underline text"); + sMenuText = QT_TR_NOOP("&Underline text"); sToolTipText = QT_TR_NOOP("Underline text in selected cells"); sWhatsThis = "Spreadsheet_StyleUnderline"; sStatusTip = sToolTipText; @@ -945,7 +945,7 @@ CmdCreateSpreadsheet::CmdCreateSpreadsheet() { sAppModule = "Spreadsheet"; sGroup = QT_TR_NOOP("Spreadsheet"); - sMenuText = QT_TR_NOOP("Create spreadsheet"); + sMenuText = QT_TR_NOOP("&Create spreadsheet"); sToolTipText = QT_TR_NOOP("Create a new spreadsheet"); sWhatsThis = "Spreadsheet_CreateSheet"; sStatusTip = sToolTipText; diff --git a/src/Mod/Spreadsheet/Gui/DlgSettings.ui b/src/Mod/Spreadsheet/Gui/DlgSettings.ui index 947d5e296172..e6f19c431318 100644 --- a/src/Mod/Spreadsheet/Gui/DlgSettings.ui +++ b/src/Mod/Spreadsheet/Gui/DlgSettings.ui @@ -6,8 +6,8 @@ 0 0 - 322 - 149 + 392 + 282 @@ -25,8 +25,8 @@ Display Settings - - + + If checked, use the custom presentation to display cell string. @@ -42,24 +42,43 @@ - - - - Qt::Horizontal + + + + Set a zoom level for table view from 60% to 160%. - - - 40 - 20 - + + % - + + 60 + + + 160 + + + 10 + + + 100 + + + DefaultZoomLevel + + + Mod/Spreadsheet + + - - + + - %V = %A + Default zoom level: + + + + The format of the custom cell string presentation. Defaults to: %V = %A @@ -67,6 +86,9 @@ Defaults to: %V = %A %A - alias name %V - cell value + + %V = %A + DisplayAliasFormatString @@ -75,6 +97,19 @@ Defaults to: %V = %A + + + + Qt::Horizontal + + + + 40 + 20 + + + + @@ -110,10 +145,10 @@ Defaults to: %V = %A - + - <html><head/><body><p>Character to use as field delimiter. Default is tab, but also commonly used are commas (,) and semicolons (;). Select from the list or enter your own in the field. Must be a single character or the words <span style=" font-style:italic;">tab</span>, <span style=" font-style:italic;">comma</span>, or <span style=" font-style:italic;">semicolon</span>.</p></body></html> + <html><head/><body><p>Character to use as field delimiter. Default is tab, but also commonly used are commas (,) and semicolons (;). Select from the list or enter your own in the field. Must be a single character or the words <span style=" font-style:italic;">tab</span>, <span style=" font-style:italic;">comma</span>, or <span style=" font-style:italic;">semicolon</span>.</p></body></html> true @@ -166,7 +201,7 @@ Defaults to: %V = %A - " + " ImportExportQuoteCharacter @@ -205,7 +240,7 @@ Defaults to: %V = %A - + @@ -225,22 +260,35 @@ Defaults to: %V = %A + + Gui::PrefCheckBox + QCheckBox +
Gui/PrefWidgets.h
+
Gui::PrefComboBox QComboBox
Gui/PrefWidgets.h
- Gui::PrefLineEdit - QLineEdit + Gui::PrefSpinBox + QSpinBox
Gui/PrefWidgets.h
- Gui::PrefCheckBox - QCheckBox + Gui::PrefLineEdit + QLineEdit
Gui/PrefWidgets.h
+ + delimiterComboBox + quoteCharLineEdit + escapeCharLineEdit + dZLSpinBox + checkBoxShowAlias + formatString + diff --git a/src/Mod/Spreadsheet/Gui/DlgSettingsImp.cpp b/src/Mod/Spreadsheet/Gui/DlgSettingsImp.cpp index d90e4fc54b40..f301917e4629 100644 --- a/src/Mod/Spreadsheet/Gui/DlgSettingsImp.cpp +++ b/src/Mod/Spreadsheet/Gui/DlgSettingsImp.cpp @@ -57,6 +57,7 @@ void DlgSettingsImp::saveSettings() ui->quoteCharLineEdit->onSave(); ui->escapeCharLineEdit->onSave(); ui->formatString->onSave(); + ui->dZLSpinBox->onSave(); ui->checkBoxShowAlias->onSave(); } @@ -94,6 +95,7 @@ void DlgSettingsImp::loadSettings() ui->quoteCharLineEdit->onRestore(); ui->escapeCharLineEdit->onRestore(); ui->formatString->onRestore(); + ui->dZLSpinBox->onRestore(); ui->checkBoxShowAlias->onRestore(); } diff --git a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_de.ts b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_de.ts index 0210d96cbcf5..7717320e16d1 100644 --- a/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_de.ts +++ b/src/Mod/Spreadsheet/Gui/Resources/translations/Spreadsheet_de.ts @@ -10,7 +10,7 @@ - Create spreadsheet + &Create spreadsheet Kalkulationstabelle erstellen @@ -28,7 +28,7 @@ - Align bottom + Align &bottom Nach unten ausrichten @@ -46,7 +46,7 @@ - Align center + Align &center Zentrieren @@ -64,7 +64,7 @@ - Align left + Align &left Linksbündig @@ -82,7 +82,7 @@ - Align right + Align &right Rechtsbündig @@ -100,7 +100,7 @@ - Align top + Align &top Nach oben ausrichten @@ -118,7 +118,7 @@ - Vertically center-align + &Vertically center-align Vertikal zentrieren @@ -136,7 +136,7 @@ - Export spreadsheet + &Export spreadsheet Kalkulationstabelle exportieren @@ -154,7 +154,7 @@ - Import spreadsheet + &Import spreadsheet Kalkulationstabelle importieren @@ -172,7 +172,7 @@ - Merge cells + &Merge cells Zellen verbinden @@ -208,7 +208,7 @@ - Split cell + Sp&lit cell Zelle teilen @@ -226,7 +226,7 @@ - Bold text + &Bold text Text in Fettschrift @@ -244,7 +244,7 @@ - Italic text + &Italic text Text in Kursivschrift @@ -262,7 +262,7 @@ - Underline text + &Underline text Text unterstreichen @@ -288,7 +288,7 @@ - Split cell + Sp&lit cell Zelle teilen diff --git a/src/Mod/Spreadsheet/Gui/Sheet.ui b/src/Mod/Spreadsheet/Gui/Sheet.ui index 0a0c47596ece..9d1f78bfe010 100644 --- a/src/Mod/Spreadsheet/Gui/Sheet.ui +++ b/src/Mod/Spreadsheet/Gui/Sheet.ui @@ -57,7 +57,154 @@ Spreadsheet.my_alias_name instead of Spreadsheet.B1
- + + + + + + + + + 0 + 0 + + + + 5 + + + 20 + + + Qt::Vertical + + + + + + + + + + + + 0 + 0 + + + + 5 + + + 20 + + + Qt::Horizontal + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + + + + Qt::NoFocus + + + Zoom + + + Qt::ToolButtonTextOnly + + + true + + + + + + + Qt::ClickFocus + + + - + + + Qt::ToolButtonTextOnly + + + true + + + + + + + + 0 + 0 + + + + Qt::ClickFocus + + + 60 + + + 160 + + + 10 + + + 20 + + + Qt::Horizontal + + + QSlider::TicksBelow + + + 10 + + + + + + + Qt::ClickFocus + + + + + + + Qt::ToolButtonTextOnly + + + true + + + + diff --git a/src/Mod/Spreadsheet/Gui/SheetModel.cpp b/src/Mod/Spreadsheet/Gui/SheetModel.cpp index bd5023edf3e8..51e372fe8180 100644 --- a/src/Mod/Spreadsheet/Gui/SheetModel.cpp +++ b/src/Mod/Spreadsheet/Gui/SheetModel.cpp @@ -378,7 +378,7 @@ QVariant SheetModel::data(const QModelIndex& index, int role) const // When displaying a quantity then use the globally set scheme // See: https://forum.freecad.org/viewtopic.php?f=3&t=50078 Base::Quantity value = floatProp->getQuantityValue(); - v = value.getUserString(); + v = QString::fromStdString(value.getUserString()); } return formatCellDisplay(v, cell); } diff --git a/src/Mod/Spreadsheet/Gui/SheetTableView.cpp b/src/Mod/Spreadsheet/Gui/SheetTableView.cpp index 3a9f33585c08..732e714bddca 100644 --- a/src/Mod/Spreadsheet/Gui/SheetTableView.cpp +++ b/src/Mod/Spreadsheet/Gui/SheetTableView.cpp @@ -119,7 +119,8 @@ SheetTableView::SheetTableView(QWidget* parent) setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel); connect(verticalHeader(), &QWidget::customContextMenuRequested, [this](const QPoint& point) { - QMenu menu(this); + Q_UNUSED(point) + QMenu menu {nullptr}; const auto selection = selectionModel()->selectedRows(); const auto& [min, max] = selectedMinMaxRows(selection); if (bool isContiguous = max - min == selection.size() - 1) { @@ -141,11 +142,12 @@ SheetTableView::SheetTableView(QWidget* parent) } auto remove = menu.addAction(tr("Remove row(s)", "", selection.size())); connect(remove, &QAction::triggered, this, &SheetTableView::removeRows); - menu.exec(verticalHeader()->mapToGlobal(point)); + menu.exec(QCursor::pos()); }); connect(horizontalHeader(), &QWidget::customContextMenuRequested, [this](const QPoint& point) { - QMenu menu(this); + Q_UNUSED(point) + QMenu menu {nullptr}; const auto selection = selectionModel()->selectedColumns(); const auto& [min, max] = selectedMinMaxColumns(selection); if (bool isContiguous = max - min == selection.size() - 1) { @@ -171,7 +173,7 @@ SheetTableView::SheetTableView(QWidget* parent) } auto remove = menu.addAction(tr("Remove column(s)", "", selection.size())); connect(remove, &QAction::triggered, this, &SheetTableView::removeColumns); - menu.exec(horizontalHeader()->mapToGlobal(point)); + menu.exec(QCursor::pos()); }); actionProperties = new QAction(tr("Properties..."), this); @@ -180,41 +182,41 @@ SheetTableView::SheetTableView(QWidget* parent) horizontalHeader()->setContextMenuPolicy(Qt::CustomContextMenu); verticalHeader()->setContextMenuPolicy(Qt::CustomContextMenu); - contextMenu = new QMenu(this); + verticalHeader()->setDefaultAlignment(Qt::AlignHCenter | Qt::AlignVCenter); - contextMenu->addAction(actionProperties); + contextMenu.addAction(actionProperties); connect(actionProperties, &QAction::triggered, this, &SheetTableView::cellProperties); - contextMenu->addSeparator(); + contextMenu.addSeparator(); actionRecompute = new QAction(tr("Recompute"), this); connect(actionRecompute, &QAction::triggered, this, &SheetTableView::onRecompute); - contextMenu->addAction(actionRecompute); + contextMenu.addAction(actionRecompute); actionBind = new QAction(tr("Bind..."), this); connect(actionBind, &QAction::triggered, this, &SheetTableView::onBind); - contextMenu->addAction(actionBind); + contextMenu.addAction(actionBind); actionConf = new QAction(tr("Configuration table..."), this); connect(actionConf, &QAction::triggered, this, &SheetTableView::onConfSetup); - contextMenu->addAction(actionConf); + contextMenu.addAction(actionConf); horizontalHeader()->addAction(actionBind); verticalHeader()->addAction(actionBind); - contextMenu->addSeparator(); - actionMerge = contextMenu->addAction(tr("Merge cells")); + contextMenu.addSeparator(); + actionMerge = contextMenu.addAction(tr("Merge cells")); connect(actionMerge, &QAction::triggered, this, &SheetTableView::mergeCells); - actionSplit = contextMenu->addAction(tr("Split cells")); + actionSplit = contextMenu.addAction(tr("Split cells")); connect(actionSplit, &QAction::triggered, this, &SheetTableView::splitCell); - contextMenu->addSeparator(); - actionCut = contextMenu->addAction(tr("Cut")); + contextMenu.addSeparator(); + actionCut = contextMenu.addAction(tr("Cut")); connect(actionCut, &QAction::triggered, this, &SheetTableView::cutSelection); - actionCopy = contextMenu->addAction(tr("Copy")); + actionCopy = contextMenu.addAction(tr("Copy")); connect(actionCopy, &QAction::triggered, this, &SheetTableView::copySelection); - actionPaste = contextMenu->addAction(tr("Paste")); + actionPaste = contextMenu.addAction(tr("Paste")); connect(actionPaste, &QAction::triggered, this, &SheetTableView::pasteClipboard); - actionDel = contextMenu->addAction(tr("Delete")); + actionDel = contextMenu.addAction(tr("Delete")); connect(actionDel, &QAction::triggered, this, &SheetTableView::deleteSelection); setTabKeyNavigation(false); @@ -241,7 +243,7 @@ void SheetTableView::onBind() { auto ranges = selectedRanges(); if (!ranges.empty() && ranges.size() <= 2) { - DlgBindSheet dlg(sheet, ranges, this); + DlgBindSheet dlg {sheet, ranges}; dlg.exec(); } } @@ -252,16 +254,16 @@ void SheetTableView::onConfSetup() if (ranges.empty()) { return; } - DlgSheetConf dlg(sheet, ranges.back(), this); + DlgSheetConf dlg {sheet, ranges.back()}; dlg.exec(); } void SheetTableView::cellProperties() { - std::unique_ptr dialog(new PropertiesDialog(sheet, selectedRanges(), this)); + PropertiesDialog dialog {sheet, selectedRanges()}; - if (dialog->exec() == QDialog::Accepted) { - dialog->apply(); + if (dialog.exec() == QDialog::Accepted) { + dialog.apply(); } } @@ -1125,7 +1127,7 @@ void SheetTableView::contextMenuEvent(QContextMenuEvent*) auto ranges = selectedRanges(); actionBind->setEnabled(!ranges.empty() && ranges.size() <= 2); - contextMenu->exec(QCursor::pos()); + contextMenu.exec(QCursor::pos()); } QString SheetTableView::toHtml() const diff --git a/src/Mod/Spreadsheet/Gui/SheetTableView.h b/src/Mod/Spreadsheet/Gui/SheetTableView.h index 4c4190097442..e63af97da9bf 100644 --- a/src/Mod/Spreadsheet/Gui/SheetTableView.h +++ b/src/Mod/Spreadsheet/Gui/SheetTableView.h @@ -26,7 +26,7 @@ #include #include #include - +#include #include @@ -109,7 +109,7 @@ protected Q_SLOTS: Spreadsheet::Sheet* sheet; int tabCounter; - QMenu* contextMenu; + QMenu contextMenu; QAction* actionProperties; QAction* actionRecompute; diff --git a/src/Mod/Spreadsheet/Gui/SpreadsheetView.cpp b/src/Mod/Spreadsheet/Gui/SpreadsheetView.cpp index 3a7a00994370..fb276b562a8d 100644 --- a/src/Mod/Spreadsheet/Gui/SpreadsheetView.cpp +++ b/src/Mod/Spreadsheet/Gui/SpreadsheetView.cpp @@ -28,7 +28,6 @@ #include #include #include -#include #endif #include @@ -47,6 +46,7 @@ #include "LineEdit.h" #include "SpreadsheetDelegate.h" #include "SpreadsheetView.h" +#include "ZoomableView.h" #include "qtcolorpicker.h" #include "ui_Sheet.h" @@ -74,6 +74,8 @@ SheetView::SheetView(Gui::Document* pcDocument, App::DocumentObject* docObj, QWi ui->setupUi(w); setCentralWidget(w); + new ZoomableView(ui); + delegate = new SpreadsheetDelegate(sheet); ui->cells->setModel(model); ui->cells->setItemDelegate(delegate); diff --git a/src/Mod/Spreadsheet/Gui/ZoomableView.cpp b/src/Mod/Spreadsheet/Gui/ZoomableView.cpp new file mode 100644 index 000000000000..3efcd32a2996 --- /dev/null +++ b/src/Mod/Spreadsheet/Gui/ZoomableView.cpp @@ -0,0 +1,231 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/**************************************************************************** + * * + * Copyright (c) 2024 xtemp09 * + * * + * This file is part of FreeCAD. * + * * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * + * * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * + * * + ***************************************************************************/ + +#include +#include + +#include "ZoomableView.h" +#include "ui_Sheet.h" + + +ZoomableView::ZoomableView(Ui::Sheet* ui) + : QGraphicsView {} + , stv {ui->cells} +{ + if (!stv) { + Base::Console().DeveloperWarning("ZoomableView", "Failed to find a SheetTableView object"); + deleteLater(); + return; + } + else { + QLayoutItem* li_stv = stv->parentWidget()->layout()->replaceWidget(stv, this); + if (li_stv == nullptr) { + Base::Console().DeveloperWarning("ZoomableView", + "Failed to replace the SheetTableView object"); + deleteLater(); + return; + } + delete li_stv; + } + + stv->setParent(nullptr); + qpw = m_scene.addWidget(stv); + setScene(&m_scene); + + setBackgroundBrush(Qt::transparent); + setFrameStyle(QFrame::NoFrame); + + setSizePolicy(QSizePolicy {QSizePolicy::Expanding, QSizePolicy::Expanding}); + + setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + + stv->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + stv->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff); + + QPointer dummySB_h {stv->horizontalScrollBar()}, + dummySB_v {stv->verticalScrollBar()}, realSB_h {ui->realSB_h}, realSB_v {ui->realSB_v}; + + if (!dummySB_h || !dummySB_v || !realSB_h || !realSB_v) { + Base::Console().DeveloperWarning("ZoomableView", "Failed to identify the scrollbars"); + deleteLater(); + return; + } + + realSB_h->setRange(dummySB_h->minimum(), dummySB_h->maximum()); + realSB_v->setRange(dummySB_v->minimum(), dummySB_v->maximum()); + + realSB_h->setPageStep(dummySB_h->pageStep()); + realSB_v->setPageStep(dummySB_v->pageStep()); + + + connect(realSB_h, &QAbstractSlider::valueChanged, dummySB_h, &QAbstractSlider::setValue); + connect(realSB_v, &QAbstractSlider::valueChanged, dummySB_v, &QAbstractSlider::setValue); + + connect(dummySB_h, &QAbstractSlider::rangeChanged, realSB_h, &QAbstractSlider::setRange); + connect(dummySB_v, &QAbstractSlider::rangeChanged, realSB_v, &QAbstractSlider::setRange); + + connect(dummySB_h, &QAbstractSlider::valueChanged, this, &ZoomableView::updateView); + connect(dummySB_v, &QAbstractSlider::valueChanged, this, &ZoomableView::updateView); + + connect(this, + &ZoomableView::zoomLevelChanged, + ui->zoomTB, + [zoomTB = ui->zoomTB](int new_zoomLevel) { + zoomTB->setText(QStringLiteral("%1%").arg(new_zoomLevel)); + }); + + connect(this, + &ZoomableView::zoomLevelChanged, + ui->zoomSlider, + [zoomSlider = ui->zoomSlider](int new_zoomLevel) { + zoomSlider->blockSignals(true); + zoomSlider->setValue(new_zoomLevel); + zoomSlider->blockSignals(false); + }); + + connect(ui->zoomPlus, &QToolButton::clicked, this, &ZoomableView::zoomIn); + connect(ui->zoomSlider, &QSlider::valueChanged, this, &ZoomableView::setZoomLevel); + connect(ui->zoomMinus, &QToolButton::clicked, this, &ZoomableView::zoomOut); + + connect(ui->zoomTB, &QToolButton::clicked, ui->zoomSlider, [zoomSlider = ui->zoomSlider]() { + const QString title = tr("Zoom level"), label = tr("New zoom level:"); + constexpr int min = ZoomableView::min, max = ZoomableView::max, step = 10; + const int val = zoomSlider->value(); + bool ok; + const int new_val = + QInputDialog::getInt(zoomSlider, title, label, val, min, max, step, &ok); + + if (ok) { + zoomSlider->setValue(new_val); + } + }); + + resetZoom(); +} + +int ZoomableView::zoomLevel() const +{ + return m_zoomLevel; +} + +void ZoomableView::setZoomLevel(int new_zoomLevel) +{ + checkLimits(new_zoomLevel); + + if (m_zoomLevel == new_zoomLevel) { + return; + } + + m_zoomLevel = new_zoomLevel; + updateView(); + Q_EMIT zoomLevelChanged(m_zoomLevel); +} + +inline void ZoomableView::checkLimits(int& zoom_level) +{ + zoom_level = qBound(ZoomableView::min, zoom_level, ZoomableView::max); +} + +void ZoomableView::zoomIn(void) +{ + setZoomLevel(m_zoomLevel + zoom_step_kb); +} + +void ZoomableView::zoomOut(void) +{ + setZoomLevel(m_zoomLevel - zoom_step_kb); +} + +void ZoomableView::resetZoom(void) +{ + constexpr const char* path = "User parameter:BaseApp/Preferences/Mod/Spreadsheet"; + ParameterGrp::handle hGrp = App::GetApplication().GetParameterGroupByPath(path); + const int defaultZoomLevel = static_cast(hGrp->GetInt("DefaultZoomLevel", 100)); + + setZoomLevel(defaultZoomLevel); +} + +void ZoomableView::updateView(void) +{ + /* QGraphicsView has hardcoded margins therefore we have to avoid fitInView + * Find more information at https://bugreports.qt.io/browse/QTBUG-42331 */ + + const qreal scale_factor = static_cast(m_zoomLevel) / 100.0, + new_w = static_cast(viewport()->rect().width()) / scale_factor, + new_h = static_cast(viewport()->rect().height()) / scale_factor; + + const QRectF new_geometry {0.0, 0.0, new_w, new_h}; + + const QRect old_geometry {stv->geometry()}; + stv->setGeometry(1, 1, old_geometry.width() - 1, old_geometry.height() - 1); + + resetTransform(); + qpw->setGeometry(new_geometry); + setSceneRect(new_geometry); + scale(scale_factor, scale_factor); + centerOn(new_geometry.center()); +} + +void ZoomableView::keyPressEvent(QKeyEvent* event) +{ + if (event->modifiers() & Qt::ControlModifier) { + switch (event->key()) { + case Qt::Key_Plus: + zoomIn(); + event->accept(); + break; + case Qt::Key_Minus: + zoomOut(); + event->accept(); + break; + case Qt::Key_0: + resetZoom(); + event->accept(); + break; + default: + QGraphicsView::keyPressEvent(event); + } + } + else { + QGraphicsView::keyPressEvent(event); + } +} + +void ZoomableView::resizeEvent(QResizeEvent* event) +{ + QGraphicsView::resizeEvent(event); + updateView(); +} + +void ZoomableView::wheelEvent(QWheelEvent* event) +{ + if (event->modifiers() & Qt::ControlModifier) { + const int y = event->angleDelta().y(); + setZoomLevel(m_zoomLevel + (y > 0 ? zoom_step_mwheel : -zoom_step_mwheel)); + event->accept(); + } + else { + QGraphicsView::wheelEvent(event); + } +} diff --git a/src/Mod/Spreadsheet/Gui/ZoomableView.h b/src/Mod/Spreadsheet/Gui/ZoomableView.h new file mode 100644 index 000000000000..7f14abb7ffad --- /dev/null +++ b/src/Mod/Spreadsheet/Gui/ZoomableView.h @@ -0,0 +1,83 @@ +// SPDX-License-Identifier: LGPL-2.1-or-later +/**************************************************************************** + * * + * Copyright (c) 2024 xtemp09 * + * * + * This file is part of FreeCAD. * + * * + * FreeCAD is free software: you can redistribute it and/or modify it * + * under the terms of the GNU Lesser General Public License as * + * published by the Free Software Foundation, either version 2.1 of the * + * License, or (at your option) any later version. * + * * + * FreeCAD is distributed in the hope that it will be useful, but * + * WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * + * Lesser General Public License for more details. * + * * + * You should have received a copy of the GNU Lesser General Public * + * License along with FreeCAD. If not, see * + * . * + * * + ***************************************************************************/ + +#ifndef ZOOMABLEVIEW_H +#define ZOOMABLEVIEW_H + +#include + +#include "SpreadsheetView.h" + +namespace SpreadsheetGui +{ +class SheetTableView; +} + +class ZoomableView: public QGraphicsView +{ + Q_OBJECT + Q_PROPERTY(int zoomLevel READ zoomLevel() WRITE setZoomLevel NOTIFY zoomLevelChanged) +public: + /*! + * \brief A descendant of QGraphicsView to show a SheetTableView object in its viewport, + * allowing magnification. \param ui \details The object replaces SheetTableView in layout, + * handling mouse and keyboard events. + */ + explicit ZoomableView(Ui::Sheet* ui); + ~ZoomableView() override = default; + + int zoomLevel() const; + void setZoomLevel(int new_scale); + + + static constexpr int min {60}, max {160}; + static void checkLimits(int& zoom_level); + +Q_SIGNALS: + void zoomLevelChanged(int); /// This signal is emitted whenever zoom level is changed. It is + /// used to show the zoom level in the zoom button. + +public Q_SLOTS: + void zoomIn(void); /// This function is the slot for the zoomIn button and a keyboard shortcut + void + zoomOut(void); /// This function is the slot for the zoomOut button and a keyboard shortcut + void resetZoom(void); /// This function is the slot for a keyboard shortcut + +private: + void updateView(void); + + QPointer stv; + QGraphicsScene m_scene; + QGraphicsProxyWidget* qpw; + + int m_zoomLevel; + +protected: + void keyPressEvent(QKeyEvent* event) override; + void resizeEvent(QResizeEvent* event) override; + void wheelEvent(QWheelEvent* event) override; + + static constexpr int zoom_step_mwheel {5}, zoom_step_kb {10}; +}; + +#endif // ZOOMABLEVIEW_H diff --git a/src/Mod/Start/Gui/Manipulator.cpp b/src/Mod/Start/Gui/Manipulator.cpp index 07cc4604620e..f49af09e509e 100644 --- a/src/Mod/Start/Gui/Manipulator.cpp +++ b/src/Mod/Start/Gui/Manipulator.cpp @@ -45,7 +45,7 @@ CmdStart::CmdStart() { sAppModule = "Start"; sGroup = QT_TR_NOOP("Start"); - sMenuText = QT_TR_NOOP("Start Page"); + sMenuText = QT_TR_NOOP("&Start Page"); sToolTipText = QT_TR_NOOP("Displays the Start Page"); sWhatsThis = "Start_Start"; sStatusTip = sToolTipText; diff --git a/src/Mod/Start/Gui/Resources/translations/StartPage_de.ts b/src/Mod/Start/Gui/Resources/translations/StartPage_de.ts index ff0962eea3d1..927bb3921994 100644 --- a/src/Mod/Start/Gui/Resources/translations/StartPage_de.ts +++ b/src/Mod/Start/Gui/Resources/translations/StartPage_de.ts @@ -47,8 +47,8 @@ - Start - Start + &Start Page + Startseite diff --git a/src/Mod/TechDraw/App/DimensionAutoCorrect.cpp b/src/Mod/TechDraw/App/DimensionAutoCorrect.cpp index 02ff03fa318f..a18edac90c17 100644 --- a/src/Mod/TechDraw/App/DimensionAutoCorrect.cpp +++ b/src/Mod/TechDraw/App/DimensionAutoCorrect.cpp @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: LGPL-2.1-or-later +// SPDX-License-Identifier: LGPL-2.0-or-later /*************************************************************************** * Copyright (c) 2023 WandererFan * * * @@ -44,7 +44,7 @@ // // reference // replace(ref, newRef) // else: -// // auto correct phase 2 +// // auto correct phase 2 - to be implemented // // we don't have any geometry that is identical to our saved geometry. // // finding a match now becomes guess work. we have to find the most // // similar geometry (with at least some level of same-ness) and use @@ -68,6 +68,7 @@ #include #include +#include #include "GeometryMatcher.h" #include "DimensionReferences.h" @@ -77,6 +78,7 @@ #include "Preferences.h" using namespace TechDraw; +using namespace Measure; using DU = DrawUtil; //! true if references point to valid geometry and the valid geometry matches the @@ -173,17 +175,17 @@ bool DimensionAutoCorrect::autocorrectReferences(std::vector& referenceSta continue; } - // we did not find an exact match, so check for an similar match + // we did not find an exact match, so check for a similar match success = fix1GeomSimilar(fixedRef, savedGeometry.at(iRef).getShape()); if (success) { - // we did find an similar match + // we did find a similar match referenceState.at(iRef) = true; repairedRefs.push_back(fixedRef); iRef++; continue; } - // we did not find an similar match the geometry + // we did not find a similar match the geometry result = false; referenceState.at(iRef) = false; repairedRefs.push_back(fixedRef); @@ -289,7 +291,8 @@ bool DimensionAutoCorrect::findExactEdge2d(ReferenceEntry& refToFix, const Part: return true; } } - // no match + + // no match, return the input reference return false; } @@ -413,8 +416,16 @@ bool DimensionAutoCorrect::findSimilarEdge3d(ReferenceEntry& refToFix, bool DimensionAutoCorrect::isMatchingGeometry(const ReferenceEntry& ref, const Part::TopoShape& savedGeometry) const { - // Base::Console().Message("DAC::isMatchingGeometry()\n"); - Part::TopoShape temp = ref.asCanonicalTopoShape(); + Part::TopoShape temp; + if (ref.is3d()) { + auto shape3d = ShapeFinder::getLocatedShape(*ref.getObject(), ref.getSubName(true)); + temp = Part::TopoShape(shape3d); + } else { + auto shape2d = ref.getGeometry(); + temp = Part::TopoShape(shape2d); + } + + if (temp.isNull()) { // this shouldn't happen as we already know that this ref points to valid geometry return false; @@ -435,7 +446,7 @@ ReferenceEntry DimensionAutoCorrect::searchObjForVert(App::DocumentObject* obj, bool exact) const { (void)exact; - auto shape3d = Part::Feature::getShape(obj); + auto shape3d = ShapeFinder::getLocatedShape(*obj, ""); if (shape3d.IsNull()) { // how to handle this? return {}; @@ -443,7 +454,7 @@ ReferenceEntry DimensionAutoCorrect::searchObjForVert(App::DocumentObject* obj, auto vertsAll = getDimension()->getVertexes(shape3d); size_t iVert {1}; for (auto& vert : vertsAll) { - bool isSame = getMatcher()->compareGeometry(vert, refVertex); + bool isSame = getMatcher()->compareGeometry(refVertex, vert); if (isSame) { auto newSubname = std::string("Vertex") + std::to_string(iVert); return {obj, newSubname, getDimension()->getDocument()}; diff --git a/src/Mod/TechDraw/App/DimensionAutoCorrect.h b/src/Mod/TechDraw/App/DimensionAutoCorrect.h index 641f0df0f679..fc567251085e 100644 --- a/src/Mod/TechDraw/App/DimensionAutoCorrect.h +++ b/src/Mod/TechDraw/App/DimensionAutoCorrect.h @@ -1,4 +1,4 @@ -// SPDX-License-Identifier: LGPL-2.1-or-later +// SPDX-License-Identifier: LGPL-2.0-or-later /*************************************************************************** * Copyright (c) 2023 WandererFan * * * diff --git a/src/Mod/TechDraw/App/DimensionFormatter.cpp b/src/Mod/TechDraw/App/DimensionFormatter.cpp index 3716cd27fe6a..a371ef965247 100644 --- a/src/Mod/TechDraw/App/DimensionFormatter.cpp +++ b/src/Mod/TechDraw/App/DimensionFormatter.cpp @@ -78,9 +78,9 @@ std::string DimensionFormatter::formatValue(const qreal value, asQuantity.setUnit(Base::Unit::Length); } - QString qUserString = asQuantity.getUserString(); // this handles mm to inch/km/parsec etc - // and decimal positions but won't give more than - // Global_Decimals precision + // this handles mm to inch/km/parsec etc and decimal positions but + // won't give more than Global_Decimals precision + QString qUserString = QString::fromStdString(asQuantity.getUserString()); //get formatSpec prefix/suffix/specifier QStringList qsl = getPrefixSuffixSpec(qFormatSpec); @@ -132,7 +132,7 @@ std::string DimensionFormatter::formatValue(const qreal value, qBasicUnit = QString::fromUtf8("°"); } else { - double convertValue = Base::Quantity::parse(QString::fromLatin1("1") + qBasicUnit).getValue(); + double convertValue = Base::Quantity::parse("1" + qBasicUnit.toStdString()).getValue(); userVal = asQuantity.getValue() / convertValue; if (areaMeasure) { userVal = userVal / convertValue; // divide again as area is length² diff --git a/src/Mod/TechDraw/App/DimensionReferences.cpp b/src/Mod/TechDraw/App/DimensionReferences.cpp index 72d9ca9f176a..dd350d1a707d 100644 --- a/src/Mod/TechDraw/App/DimensionReferences.cpp +++ b/src/Mod/TechDraw/App/DimensionReferences.cpp @@ -33,7 +33,10 @@ #include #include #include +#include #include + +#include #include #include #include @@ -45,11 +48,12 @@ #include "CosmeticVertex.h" using namespace TechDraw; +using namespace Measure; using DU = DrawUtil; using SU = ShapeUtils; -ReferenceEntry::ReferenceEntry( App::DocumentObject* docObject, std::string subName, App::Document* document) +ReferenceEntry::ReferenceEntry( App::DocumentObject* docObject, const std::string& subName, App::Document* document) { setObject(docObject); setSubName(subName); @@ -66,7 +70,7 @@ ReferenceEntry::ReferenceEntry( App::DocumentObject* docObject, std::string subN ReferenceEntry::ReferenceEntry(const ReferenceEntry& other) { setObject(other.getObject()); - setSubName(other.getSubName()); + setSubName(other.getSubName(true)); setObjectName(other.getObjectName()); setDocument(other.getDocument()); } @@ -79,7 +83,7 @@ ReferenceEntry& ReferenceEntry::operator=(const ReferenceEntry& otherRef) return *this; } setObject(otherRef.getObject()); - setSubName(otherRef.getSubName()); + setSubName(otherRef.getSubName(true)); setObjectName(otherRef.getObjectName()); setDocument(otherRef.getDocument()); return *this; @@ -94,8 +98,6 @@ bool ReferenceEntry::operator==(const ReferenceEntry& otherRef) const TopoDS_Shape ReferenceEntry::getGeometry() const { - // Base::Console().Message("RE::getGeometry() - objectName: %s sub: **%s**\n", - // getObjectName(), getSubName()); // first, make sure the object has not been deleted! App::DocumentObject* obj = getDocument()->getObject(getObjectName().c_str()); if (!obj) { @@ -112,24 +114,13 @@ TopoDS_Shape ReferenceEntry::getGeometry() const } // 3d geometry - Part::TopoShape shape = Part::Feature::getTopoShape(getObject()); - auto geoFeat = getObject(); - if (geoFeat) { - shape.setPlacement(geoFeat->globalPlacement()); - } - - if (getSubName().empty()) { - return shape.getShape(); - } - // TODO: what happens if the subelement is no longer present? - return shape.getSubShape(getSubName().c_str()); + return ShapeFinder::getLocatedShape(*getObject(), getSubName(true)); } //! get a shape for this 2d reference TopoDS_Shape ReferenceEntry::getGeometry2d() const { - // Base::Console().Message("RE::getGeometry2d()\n"); std::string gType; try { auto dvp = getObject(); //NOLINT cppcoreguidelines-pro-type-static-cast-downcast @@ -160,7 +151,6 @@ TopoDS_Shape ReferenceEntry::getGeometry2d() const } catch (...) { Base::Console().Message("RE::getGeometry2d - no shape for dimension 2d reference - gType: **%s**\n", gType.c_str()); - return {}; } return {}; @@ -172,12 +162,8 @@ std::string ReferenceEntry::getSubName(bool longForm) const if (longForm) { return m_subName; } - std::string workingSubName(m_subName); - size_t lastDot = workingSubName.rfind('.'); - if (lastDot != std::string::npos) { - workingSubName = workingSubName.substr(lastDot + 1); - } - return workingSubName; + + return ShapeFinder::getLastTerm(m_subName); } @@ -198,10 +184,8 @@ App::DocumentObject* ReferenceEntry::getObject() const //! return the reference geometry as a Part::TopoShape. Part::TopoShape ReferenceEntry::asTopoShape() const { - // Base::Console().Message("RE::asTopoShape()\n"); TopoDS_Shape geom = getGeometry(); if (geom.IsNull()) { - // throw Base::RuntimeError("Dimension Reference has null geometry"); return {}; } if (geom.ShapeType() == TopAbs_VERTEX) { @@ -222,7 +206,6 @@ Part::TopoShape ReferenceEntry::asTopoShape() const //! returns unscaled, unrotated version of inShape. inShape is assumed to be a 2d shape, but this is not enforced. Part::TopoShape ReferenceEntry::asCanonicalTopoShape() const { - // Base::Console().Message("RE::asCanonicalTopoShape()\n"); if (is3d()) { return asTopoShape(); } @@ -240,7 +223,6 @@ Part::TopoShape ReferenceEntry::asCanonicalTopoShape() const //! operations. Part::TopoShape ReferenceEntry::asCanonicalTopoShape(const Part::TopoShape& inShape, const DrawViewPart& dvp) { - // Base::Console().Message("RE::(static)asCanonicalTopoShape()\n"); gp_Ax2 OXYZ; auto unscaledShape = SU::scaleShape(inShape.getShape(), 1.0 / dvp.getScale()); if (dvp.Rotation.getValue() != 0.0) { @@ -270,7 +252,6 @@ Part::TopoShape ReferenceEntry::asTopoShapeFace(const TopoDS_Face &face) std::string ReferenceEntry::geomType() const { - // Base::Console().Message("RE::geomType() - subName: **%s**\n", getSubName().c_str()); return DrawUtil::getGeomTypeFromName(getSubName()); } @@ -295,14 +276,21 @@ bool ReferenceEntry::isWholeObject() const //! true if this reference point to 3d model geometry bool ReferenceEntry::is3d() const { - if (!getObject()) { - // we should really fail here? + if (getObject() && + getObject()->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId()) && + !getSubName().empty()) { + // this is a well formed 2d reference return false; } - if (getObject()->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId())) { - return false; + + if (getObject() && + getObject()->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId()) && + getSubName().empty()) { + // this is a broken 3d reference, so it should be treated as 3d + return true; } + // either we have no object or we have an object and it is a 3d object return true; } @@ -310,7 +298,6 @@ bool ReferenceEntry::is3d() const //! true if the target of this reference has a shape bool ReferenceEntry::hasGeometry() const { - // Base::Console().Message("RE::hasGeometry()\n"); if (!getObject()) { return false; } @@ -321,6 +308,7 @@ bool ReferenceEntry::hasGeometry() const } // 3d reference + // TODO: shouldn't this be ShapeFinder.getLocatedShape? auto shape = Part::Feature::getTopoShape(getObject()); auto subShape = shape.getSubShape(getSubName().c_str()); diff --git a/src/Mod/TechDraw/App/DimensionReferences.h b/src/Mod/TechDraw/App/DimensionReferences.h index 8816cd8f8814..e974949c96b7 100644 --- a/src/Mod/TechDraw/App/DimensionReferences.h +++ b/src/Mod/TechDraw/App/DimensionReferences.h @@ -55,7 +55,7 @@ class TechDrawExport ReferenceEntry { public: ReferenceEntry() = default; - ReferenceEntry( App::DocumentObject* docObject, std::string subName, App::Document* document = nullptr); + ReferenceEntry( App::DocumentObject* docObject, const std::string& subName, App::Document* document = nullptr); ReferenceEntry(const ReferenceEntry& other); ~ReferenceEntry() = default; diff --git a/src/Mod/TechDraw/App/DrawLeaderLine.cpp b/src/Mod/TechDraw/App/DrawLeaderLine.cpp index 0e1f8c2dcefa..fad7be8e3e3c 100644 --- a/src/Mod/TechDraw/App/DrawLeaderLine.cpp +++ b/src/Mod/TechDraw/App/DrawLeaderLine.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include "DrawViewPart.h" #include "DrawPage.h" @@ -96,7 +97,6 @@ DrawLeaderLine::DrawLeaderLine() ADD_PROPERTY_TYPE(RotatesWithParent ,(true), group, App::Prop_None, "If true, leader rotates around parent. If false, only first segment of leader changes with parent rotation."); - //hide the DrawView properties that don't apply to Leader ScaleType.setStatus(App::Property::ReadOnly, true); ScaleType.setStatus(App::Property::Hidden, true); @@ -110,11 +110,6 @@ DrawLeaderLine::DrawLeaderLine() LockPosition.setStatus(App::Property::Hidden, true); } -void DrawLeaderLine::onChanged(const App::Property* prop) -{ - DrawView::onChanged(prop); -} - short DrawLeaderLine::mustExecute() const { if (!isRestoring() && LeaderParent.isTouched()) { @@ -140,8 +135,6 @@ App::DocumentObjectExecReturn *DrawLeaderLine::execute() return App::DocumentObject::StdReturn; } - // is horizLastSegment something that should be done only at draw time? - horizLastSegment(); overrideKeepUpdated(false); return DrawView::execute(); } @@ -202,78 +195,108 @@ Base::Vector3d DrawLeaderLine::getAttachPoint() //! unit agnostic conversion of last segment to horizontal. need to do this at drawing time otherwise //! we just realign the canonical form. -void DrawLeaderLine::horizLastSegment() +std::vector DrawLeaderLine::horizLastSegment(const std::vector& inDeltas, double rotationDeg) { - // Base::Console().Message("DLL::horizLastSegment() - auto: %d\n", AutoHorizontal.getValue()); - bool adjust = AutoHorizontal.getValue(); - if (!adjust) { - return; - } - - auto temp = horizLastSegment(WayPoints.getValues()); - WayPoints.setValues(temp); -} -std::vector DrawLeaderLine::horizLastSegment(const std::vector& inDeltas) -{ - // Base::Console().Message("DLL::horizLastSegment(in: %d)\n", inDeltas.size()); + Base::Vector3d stdX{1, 0, 0}; std::vector wp = inDeltas; - if (wp.size() > 1) { + if (wp.size() > 1) { size_t iLast = wp.size() - 1; size_t iPen = wp.size() - 2; Base::Vector3d last = wp.at(iLast); Base::Vector3d penUlt = wp.at(iPen); - last.y = penUlt.y; - wp.at(iLast) = last; + + auto lastSeg = DU::invertY(last - penUlt); + auto lastSegLong = lastSeg.Length(); + auto lastSegRotated = lastSeg; + lastSegRotated.RotateZ(Base::toRadians(rotationDeg)); + auto lastSegRotatedUnit = lastSegRotated; + lastSegRotatedUnit.Normalize(); + auto dot = lastSegRotatedUnit.Dot(stdX); + + auto newLast = penUlt + stdX * lastSegLong; + if (dot < 0) { + newLast = penUlt - stdX * lastSegLong; + } + + wp.at(iLast) = newLast; } return wp; } + +//! returns the waypoints with scale, rotation and horizontal last applied. +std::vector DrawLeaderLine::getTransformedWayPoints() const +{ + auto doScale = Scalable.getValue(); + auto doRotate = RotatesWithParent.getValue(); + auto vPoints = getScaledAndRotatedPoints(doScale, doRotate); + if (AutoHorizontal.getValue()) { + vPoints = DrawLeaderLine::horizLastSegment(vPoints, getBaseView()->Rotation.getValue()); + } + + return vPoints; +} + //! returns the mid point of last segment. used by leader decorators like weld symbol. +//! the returned point is unscaled and unrotated. Base::Vector3d DrawLeaderLine::getTileOrigin() const { - std::vector wp = WayPoints.getValues(); + std::vector wp = getTransformedWayPoints(); if (wp.size() > 1) { Base::Vector3d last = wp.rbegin()[0]; Base::Vector3d second = wp.rbegin()[1]; - return (last + second) / 2.0; + return (last + second) / 2; } - Base::Console().Warning("DLL::getTileOrigin - no waypoints\n"); return Base::Vector3d(); } //! returns start of last line segment Base::Vector3d DrawLeaderLine::getKinkPoint() const { - std::vector wp = WayPoints.getValues(); + std::vector wp = getTransformedWayPoints(); if (wp.size() > 1) { return wp.rbegin()[1]; // second point from end } - Base::Console().Warning("DLL::getKinkPoint - no waypoints\n"); return Base::Vector3d(); } //end of last line segment Base::Vector3d DrawLeaderLine::getTailPoint() const { - std::vector wp = WayPoints.getValues(); + std::vector wp = getTransformedWayPoints(); if (!wp.empty()) { return wp.rbegin()[0]; // Last } - Base::Console().Warning("DLL::getTailPoint - no waypoints\n"); return Base::Vector3d(); } +//! returns the (transformed) direction of the last segment of the leader line +Base::Vector3d DrawLeaderLine::lastSegmentDirection() const +{ + std::vector wp = getTransformedWayPoints(); + if (wp.empty()) { + return Base::Vector3d(1,0,0); + } + // this direction is in conventional coords? Y+ up? + // vertical segment will be small negative Y - large negative Y -> a positive Y but we want a negative Y + auto tailPoint = DU::invertY(wp.rbegin()[0]); + auto kinkPoint = DU::invertY(wp.rbegin()[1]); + auto direction = kinkPoint - tailPoint; // from kink to tail + direction = DU::invertY(direction); + direction.Normalize(); + return direction; +} //! create a new leader feature from parameters. Used by python method makeLeader. //! pagePoints are in mm from bottom left of page. DrawLeaderLine* DrawLeaderLine::makeLeader(DrawViewPart* parent, std::vector pagePoints, int iStartSymbol, int iEndSymbol) { - // Base::Console().Message("DLL::makeLeader(%s, %d, %d, %d)\n", parent->getNameInDocument(), pagePoints.size(), iStartSymbol, iEndSymbol); + Base::Console().Message("DLL::makeLeader(%s, %d, %d, %d)\n", parent->getNameInDocument(), pagePoints.size(), iStartSymbol, iEndSymbol); if (pagePoints.size() < 2) { Base::Console().Message("DLL::makeLeader - not enough pagePoints\n"); return {}; @@ -338,7 +361,6 @@ DrawLeaderLine* DrawLeaderLine::makeLeader(DrawViewPart* parent, std::vector DrawLeaderLine::getScaledAndRotatedPoints(bool doScale, bool doRotate) const { - // Base::Console().Message("DLL::getScaledAndRotatedPoints(%d, %d)\n", doScale, doRotate); auto dvp = getBaseView(); if (!dvp) { // document is restoring? @@ -378,7 +400,6 @@ DrawLeaderLine::makeCanonicalPoints(const std::vector& inPoints, bool doScale, bool doRotate) const { - // Base::Console().Message("DLL::makeCanonicalPoints(%d, %d, %d)\n", inPoints.size(), doScale, doRotate); auto dvp = getBaseView(); double scale{1.0}; @@ -414,12 +435,15 @@ DrawLeaderLine::makeCanonicalPointsInverted(const std::vector& i for (auto& point : inPoints) { conventionalPoints.push_back(DU::invertY(point)); } - auto conventionalCanon = makeCanonicalPoints(inPoints, doScale, doRotate); + + auto conventionalCanon = makeCanonicalPoints(conventionalPoints, doScale, doRotate); + std::vector invertedPoints; invertedPoints.reserve(inPoints.size()); for (auto& point : conventionalCanon) { invertedPoints.push_back(DU::invertY(point)); } + return invertedPoints; } @@ -442,6 +466,14 @@ bool DrawLeaderLine::getDefAuto() const return Preferences::getPreferenceGroup("LeaderLine")->GetBool("AutoHorizontal", true); } +void DrawLeaderLine::dumpWaypoints(const std::vector &points, const std::string &label) +{ + Base::Console().Message("DLL::dumpWaypoints - %s\n", label.c_str()); + for (auto& p : points) { + Base::Console().Message(">>>> a point: %s\n", DU::formatVector(p).c_str()); + } +} + PyObject *DrawLeaderLine::getPyObject() { diff --git a/src/Mod/TechDraw/App/DrawLeaderLine.h b/src/Mod/TechDraw/App/DrawLeaderLine.h index 82c7b8e5bffb..0e1bb332589e 100644 --- a/src/Mod/TechDraw/App/DrawLeaderLine.h +++ b/src/Mod/TechDraw/App/DrawLeaderLine.h @@ -69,8 +69,7 @@ class TechDrawExport DrawLeaderLine : public TechDraw::DrawView bool keepUpdated() override; double getScale() const override; double getBaseScale() const; - void horizLastSegment(); - static std::vector horizLastSegment(const std::vector& inDeltas); + static std::vector horizLastSegment(const std::vector& inDeltas, double rotationDeg); bool getDefAuto() const; Base::Vector3d getTileOrigin() const; @@ -88,8 +87,11 @@ class TechDrawExport DrawLeaderLine : public TechDraw::DrawView bool isParentReady() const; -protected: - void onChanged(const App::Property* prop) override; + void dumpWaypoints(const std::vector& points, const std::string& label); + + std::vector getTransformedWayPoints() const; + + Base::Vector3d lastSegmentDirection() const; private: diff --git a/src/Mod/TechDraw/App/DrawSVGTemplate.cpp b/src/Mod/TechDraw/App/DrawSVGTemplate.cpp index e8917eed61fe..c31364114331 100644 --- a/src/Mod/TechDraw/App/DrawSVGTemplate.cpp +++ b/src/Mod/TechDraw/App/DrawSVGTemplate.cpp @@ -182,13 +182,13 @@ void DrawSVGTemplate::extractTemplateAttributes(QDomDocument& templateDocument) // Obtain the width QString str = docElement.attribute(QString::fromLatin1("width")); - quantity = Base::Quantity::parse(str); + quantity = Base::Quantity::parse(str.toStdString()); quantity.setUnit(Base::Unit::Length); Width.setValue(quantity.getValue()); str = docElement.attribute(QString::fromLatin1("height")); - quantity = Base::Quantity::parse(str); + quantity = Base::Quantity::parse(str.toStdString()); quantity.setUnit(Base::Unit::Length); Height.setValue(quantity.getValue()); diff --git a/src/Mod/TechDraw/App/DrawTemplate.cpp b/src/Mod/TechDraw/App/DrawTemplate.cpp index 8964f10042e2..e36cba4373e7 100644 --- a/src/Mod/TechDraw/App/DrawTemplate.cpp +++ b/src/Mod/TechDraw/App/DrawTemplate.cpp @@ -37,6 +37,7 @@ #include "DrawTemplatePy.h" #include "DrawPage.h" #include "DrawUtil.h" +#include "Preferences.h" using namespace TechDraw; @@ -129,6 +130,7 @@ std::pair DrawTemplate::getPageNumbers() const //! get replacement values from document QString DrawTemplate::getAutofillValue(const QString &id) const { + constexpr int ISODATELENGTH {10}; auto doc = getDocument(); if (!doc) { return QString(); @@ -142,8 +144,14 @@ QString DrawTemplate::getAutofillValue(const QString &id) const } // date else if (id.compare(QString::fromUtf8(Autofill::Date)) == 0) { + auto timeLocale = std::setlocale(LC_TIME, nullptr); QDateTime date = QDateTime::currentDateTime(); - return date.toString(QLocale().dateFormat(QLocale::ShortFormat)); + if (Preferences::enforceISODate()) { + auto rawDate = date.toString(Qt::ISODate); + return rawDate.left(ISODATELENGTH); + } + auto qTimeLocale = QString::fromUtf8(timeLocale); + return date.toString(QLocale(qTimeLocale).dateFormat(QLocale::ShortFormat)); } // organization ( also organisation/owner/company ) else if (id.compare(QString::fromUtf8(Autofill::Organization)) == 0 || diff --git a/src/Mod/TechDraw/App/DrawViewAnnotation.cpp b/src/Mod/TechDraw/App/DrawViewAnnotation.cpp index 5d8f6ab94ea7..9964bf09e1bc 100644 --- a/src/Mod/TechDraw/App/DrawViewAnnotation.cpp +++ b/src/Mod/TechDraw/App/DrawViewAnnotation.cpp @@ -24,8 +24,6 @@ #include "PreCompiled.h" #ifndef _PreComp_ -# include -# include #endif #include "DrawViewAnnotation.h" @@ -62,6 +60,9 @@ DrawViewAnnotation::DrawViewAnnotation() TextStyle.setEnums(TextStyleEnums); ADD_PROPERTY_TYPE(TextStyle, ((long)0), vgroup, App::Prop_None, "Text style"); + ADD_PROPERTY_TYPE(Owner, (nullptr), vgroup, (App::PropertyType)(App::Prop_None), + "Feature to which this annotation is attached, if any"); + Scale.setStatus(App::Property::Hidden, true); ScaleType.setStatus(App::Property::Hidden, true); } @@ -82,6 +83,20 @@ void DrawViewAnnotation::onChanged(const App::Property* prop) TechDraw::DrawView::onChanged(prop); } + +short DrawViewAnnotation::mustExecute() const +{ + if (!isRestoring()) { + if (Text.isTouched() || + Owner.isTouched()) { + return 1; + } + } + + return DrawView::mustExecute(); +} + + void DrawViewAnnotation::handleChangedPropertyType(Base::XMLReader &reader, const char *TypeName, App::Property *prop) // transforms properties that had been changed { diff --git a/src/Mod/TechDraw/App/DrawViewAnnotation.h b/src/Mod/TechDraw/App/DrawViewAnnotation.h index bec639f85d32..8cf2711a6ddb 100644 --- a/src/Mod/TechDraw/App/DrawViewAnnotation.h +++ b/src/Mod/TechDraw/App/DrawViewAnnotation.h @@ -51,6 +51,7 @@ class TechDrawExport DrawViewAnnotation : public TechDraw::DrawView App::PropertyInteger LineSpace; App::PropertyEnumeration TextStyle; // Plain, Bold, Italic, Bold-Italic App::PropertyFloat MaxWidth; + App::PropertyLink Owner; QRectF getRect() const override; @@ -65,6 +66,11 @@ class TechDrawExport DrawViewAnnotation : public TechDraw::DrawView return "TechDrawGui::ViewProviderAnnotation"; } + short mustExecute() const override; + + bool checkFit() const override {return true;} + App::PropertyLink *getOwnerProperty() override { return &Owner; } + protected: void onChanged(const App::Property* prop) override; void handleChangedPropertyType(Base::XMLReader &reader, const char *TypeName, App::Property * prop) override; diff --git a/src/Mod/TechDraw/App/DrawViewDimension.cpp b/src/Mod/TechDraw/App/DrawViewDimension.cpp index 3264180c6c70..ce421aab3b99 100644 --- a/src/Mod/TechDraw/App/DrawViewDimension.cpp +++ b/src/Mod/TechDraw/App/DrawViewDimension.cpp @@ -645,7 +645,6 @@ QStringList DrawViewDimension::getPrefixSuffixSpec(const QString &fSpec) //! NOTE: this returns the Dimension value in internal units (ie mm)!!!! double DrawViewDimension::getDimValue() { - // Base::Console().Message("DVD::getDimValue()\n"); constexpr double CircleDegrees{360.0}; double result = 0.0; if (!has2DReferences() && !has3DReferences()) { @@ -703,7 +702,7 @@ double DrawViewDimension::getTrueDimValue() const result = measurement->radius(); } else if (Type.isValue("Diameter")) { - result = 2.0 * measurement->radius(); + result = 2 * measurement->radius(); } else if (Type.isValue("Angle") || Type.isValue("Angle3Pt")) { result = measurement->angle(); @@ -720,7 +719,6 @@ double DrawViewDimension::getTrueDimValue() const //! retrieve the dimension value for "projected" (2d) dimensions. The returned value is in internal units (mm). double DrawViewDimension::getProjectedDimValue() const { - // Base::Console().Message("DVD::getProjectedDimValue()\n"); double result = 0.0; double scale = getViewPart()->getScale(); @@ -736,7 +734,8 @@ double DrawViewDimension::getProjectedDimValue() const // then we should not move the points. // pts.invertY(); - pts.scale(1.0 / scale); + // unscale the points, map them to the broken view then rescale them to draw. + pts.scale(1 / scale); pts.first(dbv->mapPoint2dFromView(pts.first())); pts.second(dbv->mapPoint2dFromView(pts.second())); pts.invertY(); @@ -808,7 +807,6 @@ pointPair DrawViewDimension::getLinearPoints() const pointPair DrawViewDimension::getPointsOneEdge(ReferenceVector references) { - // Base::Console().Message("DVD::getPointsOneEdge()\n"); App::DocumentObject* refObject = references.front().getObject(); int iSubelement = DrawUtil::getIndexFromName(references.front().getSubName()); if (refObject->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId()) @@ -849,7 +847,6 @@ pointPair DrawViewDimension::getPointsOneEdge(ReferenceVector references) pointPair DrawViewDimension::getPointsTwoEdges(ReferenceVector references) { - // Base::Console().Message("DVD::getPointsTwoEdges() - %s\n", getNameInDocument()); App::DocumentObject* refObject = references.front().getObject(); int iSubelement0 = DrawUtil::getIndexFromName(references.at(0).getSubName()); int iSubelement1 = DrawUtil::getIndexFromName(references.at(1).getSubName()); @@ -882,7 +879,6 @@ pointPair DrawViewDimension::getPointsTwoEdges(ReferenceVector references) pointPair DrawViewDimension::getPointsTwoVerts(ReferenceVector references) { - // Base::Console().Message("DVD::getPointsTwoVerts() - %s\n", getNameInDocument()); App::DocumentObject* refObject = references.front().getObject(); int iSubelement0 = DrawUtil::getIndexFromName(references.at(0).getSubName()); int iSubelement1 = DrawUtil::getIndexFromName(references.at(1).getSubName()); @@ -920,7 +916,6 @@ pointPair DrawViewDimension::getPointsTwoVerts(ReferenceVector references) pointPair DrawViewDimension::getPointsEdgeVert(ReferenceVector references) { - // Base::Console().Message("DVD::getPointsEdgeVert() - %s\n", getNameInDocument()); App::DocumentObject* refObject = references.front().getObject(); int iSubelement0 = DrawUtil::getIndexFromName(references.at(0).getSubName()); int iSubelement1 = DrawUtil::getIndexFromName(references.at(1).getSubName()); @@ -978,7 +973,6 @@ pointPair DrawViewDimension::getPointsEdgeVert(ReferenceVector references) arcPoints DrawViewDimension::getArcParameters(ReferenceVector references) { - // Base::Console().Message("DVD::getArcParameters()\n"); App::DocumentObject* refObject = references.front().getObject(); int iSubelement = DrawUtil::getIndexFromName(references.front().getSubName()); if (refObject->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId()) @@ -1039,7 +1033,7 @@ arcPoints DrawViewDimension::arcPointsFromBaseGeom(TechDraw::BaseGeomPtr base) if (ellipse->closed()) { double r1 = ellipse->minor; double r2 = ellipse->major; - double rAvg = (r1 + r2) / 2.0; + double rAvg = (r1 + r2) / 2; pts.center = Base::Vector3d(ellipse->center.x, ellipse->center.y, 0.0); pts.radius = rAvg; pts.isArc = false; @@ -1052,7 +1046,7 @@ arcPoints DrawViewDimension::arcPointsFromBaseGeom(TechDraw::BaseGeomPtr base) TechDraw::AOEPtr aoe = std::static_pointer_cast(base); double r1 = aoe->minor; double r2 = aoe->major; - double rAvg = (r1 + r2) / 2.0; + double rAvg = (r1 + r2) / 2; pts.isArc = true; pts.center = Base::Vector3d(aoe->center.x, aoe->center.y, 0.0); pts.radius = rAvg; @@ -1113,10 +1107,12 @@ arcPoints DrawViewDimension::arcPointsFromEdge(TopoDS_Edge occEdge) arcPoints pts; pts.isArc = !BRep_Tool::IsClosed(occEdge); pts.arcCW = false; + + // get all the common information for circle, ellipse and bspline conversions BRepAdaptor_Curve adapt(occEdge); double pFirst = adapt.FirstParameter(); double pLast = adapt.LastParameter(); - double pMid = (pFirst + pLast) / 2.0; + double pMid = (pFirst + pLast) / 2; BRepLProp_CLProps props(adapt, pFirst, 0, Precision::Confusion()); pts.arcEnds.first(DrawUtil::toVector3d(props.Value())); props.SetParameter(pLast); @@ -1208,7 +1204,6 @@ arcPoints DrawViewDimension::arcPointsFromEdge(TopoDS_Edge occEdge) anglePoints DrawViewDimension::getAnglePointsTwoEdges(ReferenceVector references) { - // Base::Console().Message("DVD::getAnglePointsTwoEdges() - %s\n", getNameInDocument()); App::DocumentObject* refObject = references.front().getObject(); int iSubelement0 = DrawUtil::getIndexFromName(references.at(0).getSubName()); int iSubelement1 = DrawUtil::getIndexFromName(references.at(1).getSubName()); @@ -1343,7 +1338,6 @@ anglePoints DrawViewDimension::getAnglePointsTwoEdges(ReferenceVector references // somewhere? anglePoints DrawViewDimension::getAnglePointsThreeVerts(ReferenceVector references) { - // Base::Console().Message("DVD::getAnglePointsThreeVerts() - %s\n", getNameInDocument()); if (references.size() < 3) { throw Base::RuntimeError("Not enough references to make angle dimension"); } @@ -1478,7 +1472,6 @@ DrawViewPart* DrawViewDimension::getViewPart() const // subName) ReferenceVector DrawViewDimension::getEffectiveReferences() const { - // Base::Console().Message("DVD::getEffectiveReferences()\n"); const std::vector& objects3d = References3D.getValues(); const std::vector& subElements3d = References3D.getSubValues(); const std::vector& objects = References2D.getValues(); @@ -1549,7 +1542,7 @@ int DrawViewDimension::getRefType() const // decide what the reference configuration is by examining the names of the sub elements int DrawViewDimension::getRefTypeSubElements(const std::vector& subElements) { - int refType = invalidRef; + int refType{invalidRef}; int refEdges{0}; int refVertices{0}; int refFaces{0}; @@ -1591,7 +1584,6 @@ int DrawViewDimension::getRefTypeSubElements(const std::vector& sub //! validate 2D references - only checks if the target exists bool DrawViewDimension::checkReferences2D() const { - // Base::Console().Message("DVD::checkReferences2d() - %s\n", getNameInDocument()); const std::vector& objects = References2D.getValues(); if (objects.empty()) { return false; @@ -1650,8 +1642,6 @@ bool DrawViewDimension::hasBroken3dReferences() const void DrawViewDimension::updateSavedGeometry() { - // Base::Console().Message("DVD::updateSavedGeometry() - %s - savedGeometry: %d\n", - // getNameInDocument(), SavedGeometry.getValues().size()); ReferenceVector references = getEffectiveReferences(); if (references.empty()) { // no references to save @@ -1719,6 +1709,20 @@ std::vector DrawViewDimension::getVertexes(const TopoShape& inShape) return ret; } +//! returns the angle subtended by an arc from 3 points. +double DrawViewDimension::getArcAngle(Base::Vector3d center, Base::Vector3d startPoint, Base::Vector3d endPoint) +{ + auto leg0 = startPoint - center; + auto leg1 = endPoint - startPoint; + auto referenceDirection = leg0.Cross(leg1); + gp_Ax1 axis{DU::togp_Pnt(center), DU::togp_Vec(referenceDirection)}; + gp_Vec startVec = DrawUtil::togp_Vec(leg0); + gp_Vec endVec = DrawUtil::togp_Vec(leg1); + double angle = startVec.AngleWithRef(endVec, axis.Direction().XYZ()); + return angle; +} + + pointPair DrawViewDimension::closestPoints(TopoDS_Shape s1, TopoDS_Shape s2) const { pointPair result; @@ -1740,7 +1744,6 @@ pointPair DrawViewDimension::closestPoints(TopoDS_Shape s1, TopoDS_Shape s2) con // set the reference property from a reference vector void DrawViewDimension::setReferences2d(const ReferenceVector& refsAll) { - // Base::Console().Message("DVD::setReferences2d(%d)\n", refs.size()); std::vector objects; std::vector subNames; if (objects.size() != subNames.size()) { @@ -1759,7 +1762,6 @@ void DrawViewDimension::setReferences2d(const ReferenceVector& refsAll) // set the reference property from a reference vector void DrawViewDimension::setReferences3d(const ReferenceVector &refsAll) { - // Base::Console().Message("DVD::setReferences3d()\n"); if (refsAll.empty() && !References3D.getValues().empty()) { // clear the property of any old links References3D.setValue(nullptr, nullptr); @@ -1773,7 +1775,7 @@ void DrawViewDimension::setReferences3d(const ReferenceVector &refsAll) for (auto& ref : refsAll) { objects.push_back(ref.getObject()); - subNames.push_back(ref.getSubName()); + subNames.push_back(ref.getSubName(true)); // cache the referenced object m_3dObjectCache.insert(ref.getObject()->getNameInDocument()); // cache the parent object if available. Ideally, we would handle deletion @@ -1794,7 +1796,6 @@ void DrawViewDimension::setReferences3d(const ReferenceVector &refsAll) //! add Dimension 3D references to measurement void DrawViewDimension::setAll3DMeasurement() { - // Base::Console().Message("DVD::setAll3dMeasurement()\n"); measurement->clear(); const std::vector& Objs = References3D.getValues(); const std::vector& Subs = References3D.getSubValues(); @@ -1820,7 +1821,6 @@ void DrawViewDimension::setAll3DMeasurement() //! dimension. bool DrawViewDimension::validateReferenceForm() const { - // Base::Console().Message("DVD::validateReferenceForm()\n"); // we have either or both valid References3D and References2D ReferenceVector references = getEffectiveReferences(); if (references.empty()) { @@ -1925,8 +1925,8 @@ void DrawViewDimension::dumpRefs2D(const char* text) const Base::Console().Message("DUMP - %s\n", text); const std::vector& objects = References2D.getValues(); const std::vector& subElements = References2D.getSubValues(); - std::vector::const_iterator objIt = objects.begin(); - std::vector::const_iterator subIt = subElements.begin(); + auto objIt = objects.begin(); + auto subIt = subElements.begin(); int i = 0; for (; objIt != objects.end(); objIt++, subIt++, i++) { Base::Console().Message("DUMP - ref: %d object: %s subElement: %s\n", @@ -1936,6 +1936,7 @@ void DrawViewDimension::dumpRefs2D(const char* text) const } } +// TODO: this should go into DrawUtil or ShapeUtil or ?? double DrawViewDimension::dist2Segs(Base::Vector3d s1, Base::Vector3d e1, Base::Vector3d s2, @@ -2043,7 +2044,6 @@ pointPair DrawViewDimension::getArrowPositions() bool DrawViewDimension::has2DReferences() const { - // Base::Console().Message("DVD::has2DReferences() - %s\n",getNameInDocument()); const std::vector& objects = References2D.getValues(); const std::vector& subNames = References2D.getSubValues(); if (objects.empty()) { @@ -2120,6 +2120,8 @@ PyObject* DrawViewDimension::getPyObject() return Py::new_reference_to(PythonObject); } + +//! store the corners of this dimension's base view for use by phase 2 of the auto correct process. void DrawViewDimension::saveFeatureBox() { std::vector bbxCorners; diff --git a/src/Mod/TechDraw/App/DrawViewDimension.h b/src/Mod/TechDraw/App/DrawViewDimension.h index 5f3bd1ec28b5..c45ab4f0d173 100644 --- a/src/Mod/TechDraw/App/DrawViewDimension.h +++ b/src/Mod/TechDraw/App/DrawViewDimension.h @@ -204,9 +204,9 @@ class TechDrawExport DrawViewDimension: public TechDraw::DrawView return m_corrector; } - // these should probably be static as they don't use the dimension at all - std::vector getEdges(const Part::TopoShape& inShape); - std::vector getVertexes(const Part::TopoShape& inShape); + static std::vector getEdges(const Part::TopoShape& inShape); + static std::vector getVertexes(const Part::TopoShape& inShape); + static double getArcAngle(Base::Vector3d center, Base::Vector3d startPoint, Base::Vector3d endPoint); // autocorrect support methods void saveFeatureBox(); diff --git a/src/Mod/TechDraw/App/DrawViewImage.cpp b/src/Mod/TechDraw/App/DrawViewImage.cpp index 619d484e20ba..8a3da9d447dd 100644 --- a/src/Mod/TechDraw/App/DrawViewImage.cpp +++ b/src/Mod/TechDraw/App/DrawViewImage.cpp @@ -52,6 +52,8 @@ DrawViewImage::DrawViewImage() "Embedded image file. System use only.");// n/a to end users ADD_PROPERTY_TYPE(Width, (100), vgroup, App::Prop_None, "The width of cropped image"); ADD_PROPERTY_TYPE(Height, (100), vgroup, App::Prop_None, "The height of cropped image"); + ADD_PROPERTY_TYPE(Owner, (nullptr), vgroup, (App::PropertyType)(App::Prop_None), + "Feature to which this symbol is attached"); ScaleType.setValue("Custom"); Scale.setStatus(App::Property::Hidden, false); diff --git a/src/Mod/TechDraw/App/DrawViewImage.h b/src/Mod/TechDraw/App/DrawViewImage.h index c1274bba5216..54225ecee9d6 100644 --- a/src/Mod/TechDraw/App/DrawViewImage.h +++ b/src/Mod/TechDraw/App/DrawViewImage.h @@ -47,6 +47,7 @@ class TechDrawExport DrawViewImage : public TechDraw::DrawView App::PropertyFileIncluded ImageIncluded; App::PropertyFloat Width; App::PropertyFloat Height; + App::PropertyLink Owner; /** @name methods override Feature */ //@{ @@ -58,6 +59,9 @@ class TechDrawExport DrawViewImage : public TechDraw::DrawView const char* getViewProviderName() const override { return "TechDrawGui::ViewProviderImage"; } + + App::PropertyLink *getOwnerProperty() override { return &Owner; } + QRectF getRect() const override; void setupObject() override; diff --git a/src/Mod/TechDraw/App/DrawViewSpreadsheet.cpp b/src/Mod/TechDraw/App/DrawViewSpreadsheet.cpp index d5d00e4b16f6..98566c289390 100644 --- a/src/Mod/TechDraw/App/DrawViewSpreadsheet.cpp +++ b/src/Mod/TechDraw/App/DrawViewSpreadsheet.cpp @@ -63,6 +63,9 @@ DrawViewSpreadsheet::DrawViewSpreadsheet() ADD_PROPERTY_TYPE(TextSize, (12.0), vgroup, App::Prop_None, "The size of the text"); ADD_PROPERTY_TYPE(LineWidth, (0.35), vgroup, App::Prop_None, "The thickness of the cell lines"); + ADD_PROPERTY_TYPE(Owner, (nullptr), vgroup, (App::PropertyType)(App::Prop_None), + "Feature to which this sheet is attached"); + EditableTexts.setStatus(App::Property::Hidden, true); } @@ -272,8 +275,7 @@ std::string DrawViewSpreadsheet::getSheetImage() if (prop && cell) { if (prop->isDerivedFrom(App::PropertyQuantity::getClassTypeId())) { auto contentAsQuantity = static_cast(prop)->getQuantityValue(); - auto ustring = contentAsQuantity.getUserString(); - field << ustring.toStdString(); + field << contentAsQuantity.getUserString(); } else if (prop->isDerivedFrom(App::PropertyFloat::getClassTypeId()) || prop->isDerivedFrom(App::PropertyInteger::getClassTypeId())) { std::string temp = cell->getFormattedQuantity(); diff --git a/src/Mod/TechDraw/App/DrawViewSpreadsheet.h b/src/Mod/TechDraw/App/DrawViewSpreadsheet.h index 4f1f6f0c9471..6ca008f43efa 100644 --- a/src/Mod/TechDraw/App/DrawViewSpreadsheet.h +++ b/src/Mod/TechDraw/App/DrawViewSpreadsheet.h @@ -49,9 +49,13 @@ class TechDrawExport DrawViewSpreadsheet : public TechDraw::DrawViewSymbol App::PropertyFloat LineWidth; App::PropertyFloat TextSize; + App::PropertyLink Owner; App::DocumentObjectExecReturn *execute() override; short mustExecute() const override; + + App::PropertyLink *getOwnerProperty() override { return &Owner; } + std::string getSheetImage(); const char* getViewProviderName() const override { diff --git a/src/Mod/TechDraw/App/Preferences.cpp b/src/Mod/TechDraw/App/Preferences.cpp index 7962467cd0ee..6577a700fe53 100644 --- a/src/Mod/TechDraw/App/Preferences.cpp +++ b/src/Mod/TechDraw/App/Preferences.cpp @@ -508,7 +508,7 @@ int Preferences::CenterLineStyle() int Preferences::HighlightLineStyle() { // default is line #2 dashed, which is index 1 - return getPreferenceGroup("Decorations")->GetInt("LineStyleHighLight", 1) + 1; + return getPreferenceGroup("Decorations")->GetInt("LineStyleHighlight", 1) + 1; } int Preferences::HiddenLineStyle() @@ -650,6 +650,11 @@ void Preferences::setBalloonDragModifiers(Qt::KeyboardModifiers newModifiers) getPreferenceGroup("General")->SetUnsigned("BalloonDragModifier", (uint)newModifiers); } +bool Preferences::enforceISODate() +{ + return getPreferenceGroup("Standards")->GetBool("EnforceISODate", false); +} + //! if true, shapes are validated before use and problematic ones are skipped. //! validating shape takes time, but can prevent crashes/bad results in occt. //! this would normally be set to false and set to true to aid in debugging/support. @@ -671,3 +676,9 @@ bool Preferences::switchOnClick() { return getPreferenceGroup("General")->GetBool("SwitchToWB", true); } + +//! if true, svg symbols will use the old scaling logic. +bool Preferences::useLegacySvgScaling() +{ + return getPreferenceGroup("General")->GetBool("LegacySvgScaling", false); +} diff --git a/src/Mod/TechDraw/App/Preferences.h b/src/Mod/TechDraw/App/Preferences.h index b93889f1bdc5..2a62f585bc0e 100644 --- a/src/Mod/TechDraw/App/Preferences.h +++ b/src/Mod/TechDraw/App/Preferences.h @@ -151,11 +151,14 @@ class TechDrawExport Preferences static Qt::KeyboardModifiers balloonDragModifiers(); static void setBalloonDragModifiers(Qt::KeyboardModifiers newModifiers); + static bool enforceISODate(); static bool switchOnClick(); static bool checkShapesBeforeUse(); static bool debugBadShape(); + static bool useLegacySvgScaling(); + }; diff --git a/src/Mod/TechDraw/App/ShapeExtractor.cpp b/src/Mod/TechDraw/App/ShapeExtractor.cpp index 8acb890674cf..24ecc02a2232 100644 --- a/src/Mod/TechDraw/App/ShapeExtractor.cpp +++ b/src/Mod/TechDraw/App/ShapeExtractor.cpp @@ -47,6 +47,7 @@ #include #include #include +#include //#include #include "ShapeExtractor.h" @@ -55,6 +56,7 @@ #include "Preferences.h" using namespace TechDraw; +using namespace Measure; using DU = DrawUtil; using SU = ShapeUtils; @@ -135,7 +137,7 @@ TopoDS_Shape ShapeExtractor::getShapes(const std::vector l else { auto shape = Part::Feature::getShape(obj); // if source obj has a shape, we use that shape. - if(!SU::isShapeReallyNull(shape) && !isExplodedView) { + if(!SU::isShapeReallyNull(shape)) { if (checkShape(obj, shape)) { sourceShapes.push_back(getLocatedShape(obj)); } @@ -166,7 +168,7 @@ TopoDS_Shape ShapeExtractor::getShapes(const std::vector l continue; } else if (s.ShapeType() < TopAbs_SOLID) { //clean up composite shapes - TopoDS_Shape cleanShape = stripInfiniteShapes(s); + TopoDS_Shape cleanShape = ShapeFinder::ShapeFinder::stripInfiniteShapes(s); if (!cleanShape.IsNull()) { builder.Add(comp, cleanShape); } @@ -226,7 +228,7 @@ std::vector ShapeExtractor::getXShapes(const App::Link* xLink) auto shape = Part::Feature::getShape(l); // TODO: getTopoShape() ? Part::TopoShape ts(shape); if (ts.isInfinite()) { - shape = stripInfiniteShapes(shape); + shape = ShapeFinder::stripInfiniteShapes(shape); } if (!checkShape(l, shape)) { continue; @@ -285,7 +287,7 @@ TopoDS_Shape ShapeExtractor::getShapeFromXLink(const App::Link* xLink) } Part::TopoShape ts(shape); if (ts.isInfinite()) { - shape = stripInfiniteShapes(shape); + shape = ShapeFinder::stripInfiniteShapes(shape); ts = Part::TopoShape(shape); } //ts might be garbage now, better check @@ -379,30 +381,6 @@ TopoDS_Shape ShapeExtractor::getShapesFused(const std::vector links, bool include2d = true); static std::vector getShapes2d(const std::vector links); static std::vector getXShapes(const App::Link* xLink); - static std::vector getShapesFromObject(const App::DocumentObject* docObj); static TopoDS_Shape getShapesFused(const std::vector links); static TopoDS_Shape getShapeFromXLink(const App::Link* xLink); + static std::vector getShapesFromXRoot(const App::DocumentObject *xLinkRoot); + static std::vector getShapesFromObject(const App::DocumentObject* docObj); static bool is2dObject(const App::DocumentObject* obj); static bool isEdgeType(const App::DocumentObject* obj); @@ -52,14 +53,19 @@ class TechDrawExport ShapeExtractor static bool isDraftPoint(const App::DocumentObject* obj); static bool isDatumPoint(const App::DocumentObject* obj); static bool isSketchObject(const App::DocumentObject* obj); - static Base::Vector3d getLocation3dFromFeat(const App::DocumentObject *obj); - - static TopoDS_Shape stripInfiniteShapes(TopoDS_Shape inShape); + static bool isExplodedAssembly(const App::DocumentObject* obj); + static Base::Vector3d getLocation3dFromFeat(const App::DocumentObject *obj); static TopoDS_Shape getLocatedShape(const App::DocumentObject* docObj); static bool checkShape(const App::DocumentObject* shapeObj, TopoDS_Shape shape); + static App::DocumentObject* getExplodedAssembly(std::vector& sourceShapes, + App::DocumentObject* link); + static void restoreExplodedAssembly(App::DocumentObject* link); + + static App::DocumentObject* getLinkedObject(const App::DocumentObject* root); + protected: private: diff --git a/src/Mod/TechDraw/CMakeLists.txt b/src/Mod/TechDraw/CMakeLists.txt index 280fabc5230a..5279e5fc7a1c 100644 --- a/src/Mod/TechDraw/CMakeLists.txt +++ b/src/Mod/TechDraw/CMakeLists.txt @@ -193,6 +193,7 @@ SET(TDTestFile_SRCS TDTest/TestHatch.svg TDTest/TestImage.png TDTest/TestSymbol.svg + TDTest/TestNonAsciiSymbol.svg TDTest/TestTemplate.svg ) diff --git a/src/Mod/TechDraw/Gui/CMakeLists.txt b/src/Mod/TechDraw/Gui/CMakeLists.txt index f9ab485b594d..9339c5828c82 100644 --- a/src/Mod/TechDraw/Gui/CMakeLists.txt +++ b/src/Mod/TechDraw/Gui/CMakeLists.txt @@ -105,6 +105,8 @@ SET(TechDrawGui_SRCS CommandExtensionDims.h CommandExtensionPack.cpp CommandStack.cpp + CommandHelpers.cpp + CommandHelpers.h DimensionValidators.cpp DimensionValidators.h Resources/TechDraw.qrc diff --git a/src/Mod/TechDraw/Gui/Command.cpp b/src/Mod/TechDraw/Gui/Command.cpp index e931c7e896d9..3d4bd35ebf3f 100644 --- a/src/Mod/TechDraw/Gui/Command.cpp +++ b/src/Mod/TechDraw/Gui/Command.cpp @@ -79,6 +79,7 @@ #include "TaskSectionView.h" #include "ViewProviderPage.h" #include "ViewProviderDrawingView.h" +#include "CommandHelpers.h" void execSimpleSection(Gui::Command* cmd); void execComplexSection(Gui::Command* cmd); @@ -455,16 +456,25 @@ void CmdTechDrawView::activated(int iMsg) filename = Base::Tools::escapeEncodeFilename(filename); auto filespec = DU::cleanFilespecBackslash(filename.toStdString()); openCommand(QT_TRANSLATE_NOOP("Command", "Create Symbol")); - doCommand(Doc, "f = open(\"%s\", 'r')", filespec.c_str()); + doCommand(Doc, "import codecs"); + doCommand(Doc, + "f = codecs.open(\"%s\", 'r', encoding=\"utf-8\")", + filespec.c_str()); doCommand(Doc, "svg = f.read()"); doCommand(Doc, "f.close()"); - doCommand(Doc, "App.activeDocument().addObject('TechDraw::DrawViewSymbol', '%s')", + doCommand(Doc, + "App.activeDocument().addObject('TechDraw::DrawViewSymbol', '%s')", + FeatName.c_str()); + doCommand( + Doc, + "App.activeDocument().%s.translateLabel('DrawViewSymbol', 'Symbol', '%s')", + FeatName.c_str(), FeatName.c_str()); - doCommand(Doc, "App.activeDocument().%s.translateLabel('DrawViewSymbol', 'Symbol', '%s')", - FeatName.c_str(), FeatName.c_str()); doCommand(Doc, "App.activeDocument().%s.Symbol = svg", FeatName.c_str()); - doCommand(Doc, "App.activeDocument().%s.addView(App.activeDocument().%s)", PageName.c_str(), - FeatName.c_str()); + doCommand(Doc, + "App.activeDocument().%s.addView(App.activeDocument().%s)", + PageName.c_str(), + FeatName.c_str()); } else { std::string FeatName = getUniqueObjectName("Image"); @@ -1550,7 +1560,8 @@ void CmdTechDrawSymbol::activated(int iMsg) filename = Base::Tools::escapeEncodeFilename(filename); auto filespec = DU::cleanFilespecBackslash(filename.toStdString()); openCommand(QT_TRANSLATE_NOOP("Command", "Create Symbol")); - doCommand(Doc, "f = open(\"%s\", 'r')", (const char*)filespec.c_str()); + doCommand(Doc, "import codecs"); + doCommand(Doc, "f = codecs.open(\"%s\", 'r', encoding=\"utf-8\")", filespec.c_str()); doCommand(Doc, "svg = f.read()"); doCommand(Doc, "f.close()"); doCommand(Doc, "App.activeDocument().addObject('TechDraw::DrawViewSymbol', '%s')", @@ -1558,8 +1569,17 @@ void CmdTechDrawSymbol::activated(int iMsg) doCommand(Doc, "App.activeDocument().%s.translateLabel('DrawViewSymbol', 'Symbol', '%s')", FeatName.c_str(), FeatName.c_str()); doCommand(Doc, "App.activeDocument().%s.Symbol = svg", FeatName.c_str()); + + auto baseView = CommandHelpers::firstViewInSelection(this); + if (baseView) { + auto baseName = baseView->getNameInDocument(); + doCommand(Doc, "App.activeDocument().%s.Owner = App.activeDocument().%s", + FeatName.c_str(), baseName); + } + doCommand(Doc, "App.activeDocument().%s.addView(App.activeDocument().%s)", PageName.c_str(), FeatName.c_str()); + updateActive(); commitCommand(); } @@ -1721,6 +1741,12 @@ CmdTechDrawSpreadsheetView::CmdTechDrawSpreadsheetView() : Command("TechDraw_Spr void CmdTechDrawSpreadsheetView::activated(int iMsg) { Q_UNUSED(iMsg); + TechDraw::DrawPage* page = DrawGuiUtil::findPage(this); + if (!page) { + return; + } + std::string PageName = page->getNameInDocument(); + const std::vector spreads = getSelection().getObjectsOfType(Spreadsheet::Sheet::getClassTypeId()); if (spreads.size() != 1) { @@ -1730,12 +1756,6 @@ void CmdTechDrawSpreadsheetView::activated(int iMsg) } std::string SpreadName = spreads.front()->getNameInDocument(); - TechDraw::DrawPage* page = DrawGuiUtil::findPage(this); - if (!page) { - return; - } - std::string PageName = page->getNameInDocument(); - openCommand(QT_TRANSLATE_NOOP("Command", "Create spreadsheet view")); std::string FeatName = getUniqueObjectName("Sheet"); doCommand(Doc, "App.activeDocument().addObject('TechDraw::DrawViewSpreadsheet', '%s')", @@ -1744,6 +1764,15 @@ void CmdTechDrawSpreadsheetView::activated(int iMsg) FeatName.c_str(), FeatName.c_str()); doCommand(Doc, "App.activeDocument().%s.Source = App.activeDocument().%s", FeatName.c_str(), SpreadName.c_str()); + + // look for an owner view in the selection + auto baseView = CommandHelpers::firstViewInSelection(this); + if (baseView) { + auto baseName = baseView->getNameInDocument(); + doCommand(Doc, "App.activeDocument().%s.Owner = App.activeDocument().%s", + FeatName.c_str(), baseName); + } + doCommand(Doc, "App.activeDocument().%s.addView(App.activeDocument().%s)", PageName.c_str(), FeatName.c_str()); updateActive(); diff --git a/src/Mod/TechDraw/Gui/CommandAnnotate.cpp b/src/Mod/TechDraw/Gui/CommandAnnotate.cpp index bfbc3fa873ed..52d5f294612a 100644 --- a/src/Mod/TechDraw/Gui/CommandAnnotate.cpp +++ b/src/Mod/TechDraw/Gui/CommandAnnotate.cpp @@ -24,7 +24,6 @@ #ifndef _PreComp_ # include # include -# include #endif #include @@ -60,13 +59,15 @@ #include "TaskWeldingSymbol.h" #include "TaskCosmeticCircle.h" #include "ViewProviderViewPart.h" +#include "CommandHelpers.h" using namespace TechDrawGui; using namespace TechDraw; +using namespace CommandHelpers; +//using CH = CommandHelpers; //internal functions -bool _checkSelectionHatch(Gui::Command* cmd); void execCosmeticVertex(Gui::Command* cmd); void execMidpoints(Gui::Command* cmd); @@ -76,9 +77,6 @@ void exec2LineCenterLine(Gui::Command* cmd); void exec2PointCenterLine(Gui::Command* cmd); void execLine2Points(Gui::Command* cmd); void execCosmeticCircle(Gui::Command* cmd); -std::vector getSelectedSubElements(Gui::Command* cmd, - TechDraw::DrawViewPart* &dvp, - std::string subType = "Edge"); //=========================================================================== // TechDraw_Leader @@ -333,7 +331,7 @@ void execMidpoints(Gui::Command* cmd) { // Base::Console().Message("execMidpoints()\n"); TechDraw::DrawViewPart * dvp = nullptr; - std::vector selectedEdges = getSelectedSubElements(cmd, dvp, "Edge"); + std::vector selectedEdges = CommandHelpers::getSelectedSubElements(cmd, dvp, "Edge"); if (!dvp || selectedEdges.empty()) return; @@ -360,7 +358,7 @@ void execQuadrants(Gui::Command* cmd) { // Base::Console().Message("execQuadrants()\n"); TechDraw::DrawViewPart* dvp = nullptr; - std::vector selectedEdges = getSelectedSubElements(cmd, dvp, "Edge"); + std::vector selectedEdges = CommandHelpers::getSelectedSubElements(cmd, dvp, "Edge"); if (!dvp || selectedEdges.empty()) return; @@ -553,6 +551,13 @@ void CmdTechDrawAnnotation::activated(int iMsg) doCommand(Doc, "App.activeDocument().%s.translateLabel('DrawViewAnnotation', 'Annotation', '%s')", FeatName.c_str(), FeatName.c_str()); + auto baseView = CommandHelpers::firstViewInSelection(this); + if (baseView) { + auto baseName = baseView->getNameInDocument(); + doCommand(Doc, "App.activeDocument().%s.Owner = App.activeDocument().%s", + FeatName.c_str(), baseName); + } + doCommand(Doc, "App.activeDocument().%s.addView(App.activeDocument().%s)", PageName.c_str(), FeatName.c_str()); updateActive(); commitCommand(); @@ -823,7 +828,7 @@ void exec2LineCenterLine(Gui::Command* cmd) return; } TechDraw::DrawViewPart* dvp = nullptr; - std::vector selectedEdges = getSelectedSubElements(cmd, dvp, "Edge"); + std::vector selectedEdges = CommandHelpers::getSelectedSubElements(cmd, dvp, "Edge"); if (!dvp || selectedEdges.empty()) { return; @@ -1687,46 +1692,3 @@ void CreateTechDrawCommandsAnnotate() rcCmdMgr.addCommand(new CmdTechDrawSurfaceFinishSymbols()); } -//=========================================================================== -// Selection Validation Helpers -//=========================================================================== - -std::vector getSelectedSubElements(Gui::Command* cmd, - TechDraw::DrawViewPart* &dvp, - std::string subType) -{ -// Base::Console().Message("getSelectedSubElements() - dvp: %X\n", dvp); - std::vector selectedSubs; - std::vector subNames; - dvp = nullptr; - std::vector selection = cmd->getSelection().getSelectionEx(); - std::vector::iterator itSel = selection.begin(); - for (; itSel != selection.end(); itSel++) { - if ((*itSel).getObject()->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId())) { - dvp = static_cast ((*itSel).getObject()); - subNames = (*itSel).getSubNames(); - break; - } - } - if (!dvp) { - QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong Selection"), - QObject::tr("No Part View in Selection")); - return selectedSubs; - } - - for (auto& s: subNames) { - if (TechDraw::DrawUtil::getGeomTypeFromName(s) == subType) { - selectedSubs.push_back(s); - } - } - - if (selectedSubs.empty()) { - QMessageBox::warning(Gui::getMainWindow(), - QObject::tr("Wrong Selection"), - QObject::tr("No %1 in Selection") - .arg(QString::fromStdString(subType))); - return selectedSubs; - } - - return selectedSubs; -} diff --git a/src/Mod/TechDraw/Gui/CommandDecorate.cpp b/src/Mod/TechDraw/Gui/CommandDecorate.cpp index 9a05d64ea193..e57a1dbd3e88 100644 --- a/src/Mod/TechDraw/Gui/CommandDecorate.cpp +++ b/src/Mod/TechDraw/Gui/CommandDecorate.cpp @@ -53,6 +53,7 @@ #include "ViewProviderGeomHatch.h" #include "ViewProviderPage.h" #include "MDIViewPage.h" +#include "CommandHelpers.h" using namespace TechDrawGui; @@ -268,11 +269,20 @@ void CmdTechDrawImage::activated(int iMsg) std::string FeatName = getUniqueObjectName("Image"); fileName = Base::Tools::escapeEncodeFilename(fileName); auto filespec = DU::cleanFilespecBackslash(fileName.toStdString()); + openCommand(QT_TRANSLATE_NOOP("Command", "Create Image")); doCommand(Doc, "App.activeDocument().addObject('TechDraw::DrawViewImage', '%s')", FeatName.c_str()); doCommand(Doc, "App.activeDocument().%s.translateLabel('DrawViewImage', 'Image', '%s')", FeatName.c_str(), FeatName.c_str()); doCommand(Doc, "App.activeDocument().%s.ImageFile = '%s'", FeatName.c_str(), filespec.c_str()); + + auto baseView = CommandHelpers::firstViewInSelection(this); + if (baseView) { + auto baseName = baseView->getNameInDocument(); + doCommand(Doc, "App.activeDocument().%s.Owner = App.activeDocument().%s", + FeatName.c_str(), baseName); + } + doCommand(Doc, "App.activeDocument().%s.addView(App.activeDocument().%s)", PageName.c_str(), FeatName.c_str()); updateActive(); commitCommand(); diff --git a/src/Mod/TechDraw/Gui/CommandExtensionPack.cpp b/src/Mod/TechDraw/Gui/CommandExtensionPack.cpp index 9e12aadf302f..8a85781947d1 100644 --- a/src/Mod/TechDraw/Gui/CommandExtensionPack.cpp +++ b/src/Mod/TechDraw/Gui/CommandExtensionPack.cpp @@ -1840,7 +1840,7 @@ void CmdTechDrawExtensionAreaAnnotation::activated(int iMsg) asQuantity.setValue(totalArea); asQuantity.setUnit(Base::Unit::Area); - QString qUserString = asQuantity.getUserString(); + QString qUserString = QString::fromStdString(asQuantity.getUserString()); if (qUserString.endsWith(QString::fromUtf8("^2"))) { qUserString.chop(2); qUserString.append(QString::fromUtf8("²")); diff --git a/src/Mod/TechDraw/Gui/CommandHelpers.cpp b/src/Mod/TechDraw/Gui/CommandHelpers.cpp new file mode 100644 index 000000000000..b7a78c9dbccb --- /dev/null +++ b/src/Mod/TechDraw/Gui/CommandHelpers.cpp @@ -0,0 +1,228 @@ +// SPDX-License-Identifier: LGPL-2.0-or-later + +/*************************************************************************** + * Copyright (c) 2024 WandererFan * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + +//! CommandHelpers is a collection of methods for common actions in commands +#include "PreCompiled.h" +#ifndef _PreComp_ +#endif + +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include + + +#include "CommandHelpers.h" + +using namespace TechDraw; +using namespace TechDrawGui; + +//! find the first DrawView in the current selection for use as a base view (owner) +TechDraw::DrawView* CommandHelpers::firstViewInSelection(Gui::Command* cmd) +{ + std::vector selection = cmd->getSelection().getSelectionEx(); + TechDraw::DrawView* baseView{nullptr}; + if (!selection.empty()) { + for (auto& selobj : selection) { + if (selobj.getObject()->isDerivedFrom()) { + auto docobj = selobj.getObject(); + baseView = dynamic_cast(docobj); + break; + } + } + } + return baseView; +} + +//! find the first DrawView in the current selection for use as a base view (owner) +TechDraw::DrawView* CommandHelpers::firstNonSpreadsheetInSelection(Gui::Command* cmd) +{ + std::vector selection = cmd->getSelection().getSelectionEx(); + TechDraw::DrawView* baseView{nullptr}; + if (!selection.empty()) { + for (auto& selobj : selection) { + if (selobj.getObject()->isDerivedFrom()) { + continue; + } else { + auto docobj = selobj.getObject(); + baseView = dynamic_cast(docobj); + break; + } + } + } + return baseView; +} + + +std::vector CommandHelpers::getSelectedSubElements(Gui::Command* cmd, + TechDraw::DrawViewPart* &dvp, + std::string subType) +{ + std::vector selectedSubs; + std::vector subNames; + dvp = nullptr; + std::vector selection = cmd->getSelection().getSelectionEx(); + std::vector::iterator itSel = selection.begin(); + for (; itSel != selection.end(); itSel++) { + if ((*itSel).getObject()->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId())) { + dvp = static_cast ((*itSel).getObject()); + subNames = (*itSel).getSubNames(); + break; + } + } + if (!dvp) { + QMessageBox::warning(Gui::getMainWindow(), QObject::tr("Wrong Selection"), + QObject::tr("No Part View in Selection")); + return selectedSubs; + } + + for (auto& s: subNames) { + if (TechDraw::DrawUtil::getGeomTypeFromName(s) == subType) { + selectedSubs.push_back(s); + } + } + + if (selectedSubs.empty()) { + QMessageBox::warning(Gui::getMainWindow(), + QObject::tr("Wrong Selection"), + QObject::tr("No %1 in Selection") + .arg(QString::fromStdString(subType))); + return selectedSubs; + } + + return selectedSubs; +} + +//! extract the selected shapes and xShapes and determine if a face has been +//! selected to define the projection direction +void CommandHelpers::getSelectedShapes(Gui::Command* cmd, + std::vector& shapes, + std::vector& xShapes, + App::DocumentObject* faceObj, + std::string& faceName) +{ + Gui::ResolveMode resolve = Gui::ResolveMode::OldStyleElement;//mystery + bool single = false; //mystery + auto selection = cmd->getSelection().getSelectionEx(nullptr, App::DocumentObject::getClassTypeId(), + resolve, single); + for (auto& sel : selection) { + bool is_linked = false; + auto obj = sel.getObject(); + if (obj->isDerivedFrom(TechDraw::DrawPage::getClassTypeId())) { + continue; + } + if (obj->isDerivedFrom(App::LinkElement::getClassTypeId()) + || obj->isDerivedFrom(App::LinkGroup::getClassTypeId()) + || obj->isDerivedFrom(App::Link::getClassTypeId())) { + is_linked = true; + } + // If parent of the obj is a link to another document, we possibly need to treat non-link obj as linked, too + // 1st, is obj in another document? + if (obj->getDocument() != cmd->getDocument()) { + std::set parents = obj->getInListEx(true); + for (auto& parent : parents) { + // Only consider parents in the current document, i.e. possible links in this View's document + if (parent->getDocument() != cmd->getDocument()) { + continue; + } + // 2nd, do we really have a link to obj? + if (parent->isDerivedFrom(App::LinkElement::getClassTypeId()) + || parent->isDerivedFrom(App::LinkGroup::getClassTypeId()) + || parent->isDerivedFrom(App::Link::getClassTypeId())) { + // We have a link chain from this document to obj, and obj is in another document -> it is an XLink target + is_linked = true; + } + } + } + if (is_linked) { + xShapes.push_back(obj); + continue; + } + //not a Link and not null. assume to be drawable. Undrawables will be + // skipped later. + shapes.push_back(obj); + if (faceObj) { + continue; + } + //don't know if this works for an XLink + for (auto& sub : sel.getSubNames()) { + if (TechDraw::DrawUtil::getGeomTypeFromName(sub) == "Face") { + faceName = sub; + // + faceObj = obj; + break; + } + } + } +} + + +std::pair CommandHelpers::viewDirection() +{ + if (!Preferences::useCameraDirection()) { + return { Base::Vector3d(0, -1, 0), Base::Vector3d(1, 0, 0) }; + } + + auto faceInfo = faceFromSelection(); + if (faceInfo.first) { + return DrawGuiUtil::getProjDirFromFace(faceInfo.first, faceInfo.second); + } + + return DrawGuiUtil::get3DDirAndRot(); +} + +std::pair CommandHelpers::faceFromSelection() +{ + auto selection = Gui::Selection().getSelectionEx( + nullptr, App::DocumentObject::getClassTypeId(), Gui::ResolveMode::NoResolve); + + if (selection.empty()) { + return { nullptr, "" }; + } + + for (auto& sel : selection) { + for (auto& sub : sel.getSubNames()) { + if (TechDraw::DrawUtil::getGeomTypeFromName(sub) == "Face") { + return { sel.getObject(), sub }; + } + } + } + + return { nullptr, "" }; +} diff --git a/src/Mod/TechDraw/Gui/CommandHelpers.h b/src/Mod/TechDraw/Gui/CommandHelpers.h new file mode 100644 index 000000000000..ed86dbefae97 --- /dev/null +++ b/src/Mod/TechDraw/Gui/CommandHelpers.h @@ -0,0 +1,71 @@ +// SPDX-License-Identifier: LGPL-2.0-or-later + +/*************************************************************************** + * Copyright (c) 2024 WandererFan * + * * + * This file is part of the FreeCAD CAx development system. * + * * + * This library is free software; you can redistribute it and/or * + * modify it under the terms of the GNU Library General Public * + * License as published by the Free Software Foundation; either * + * version 2 of the License, or (at your option) any later version. * + * * + * This library is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU Library General Public License for more details. * + * * + * You should have received a copy of the GNU Library General Public * + * License along with this library; see the file COPYING.LIB. If not, * + * write to the Free Software Foundation, Inc., 59 Temple Place, * + * Suite 330, Boston, MA 02111-1307, USA * + * * + ***************************************************************************/ + +//! CommandHelpers is a collection of methods for common actions in commands + + +#ifndef COMMANDHELPERS_H +#define COMMANDHELPERS_H + +#include +#include + +#include +#include + +namespace App { +class DocumentObject; +} + +namespace Gui { +class Command; +} + +namespace TechDraw { +class DrawView; +class DrawViewPart; + +namespace CommandHelpers { + +TechDraw::DrawView* firstViewInSelection(Gui::Command* cmd); +TechDraw::DrawView* firstNonSpreadsheetInSelection(Gui::Command* cmd); + +std::vector getSelectedSubElements(Gui::Command* cmd, + TechDraw::DrawViewPart* &dvp, + std::string subType = "Edge"); + +void getSelectedShapes(Gui::Command* cmd, + std::vector& shapes, + std::vector& xShapes, + App::DocumentObject* faceObj, + std::string& faceName); + +std::pair faceFromSelection(); +std::pair viewDirection(); + + +} // end namespace CommandHelpers +} // end namespace TechDraw + +#endif diff --git a/src/Mod/TechDraw/Gui/DimensionValidators.cpp b/src/Mod/TechDraw/Gui/DimensionValidators.cpp index f2d9c8247843..f477c2f6c965 100644 --- a/src/Mod/TechDraw/Gui/DimensionValidators.cpp +++ b/src/Mod/TechDraw/Gui/DimensionValidators.cpp @@ -30,6 +30,7 @@ #include #include #include +#include #include #include @@ -37,6 +38,7 @@ using namespace TechDraw; +using namespace Measure; using DU = DrawUtil; TechDraw::DrawViewPart* TechDraw::getReferencesFromSelection(ReferenceVector& references2d, @@ -44,15 +46,21 @@ TechDraw::DrawViewPart* TechDraw::getReferencesFromSelection(ReferenceVector& re { TechDraw::DrawViewPart* dvp(nullptr); TechDraw::DrawViewDimension* dim(nullptr); - std::vector selectionAll = Gui::Selection().getSelectionEx(); + constexpr bool allowOnlySingle{false}; + std::vector selectionAll = + Gui::Selection().getSelectionEx("*", + App::DocumentObject::getClassTypeId(), + Gui::ResolveMode::NoResolve, + allowOnlySingle); + for (auto& selItem : selectionAll) { if (selItem.getObject()->isDerivedFrom(TechDraw::DrawViewDimension::getClassTypeId())) { //we are probably repairing a dimension, but we will check later - dim = static_cast(selItem.getObject()); + dim = static_cast(selItem.getObject()); //NOLINT cppcoreguidelines-pro-type-static-cast-downcast } else if (selItem.getObject()->isDerivedFrom(TechDraw::DrawViewPart::getClassTypeId())) { //this could be a 2d geometry selection or just a DrawViewPart for context in //a 3d selection - dvp = static_cast(selItem.getObject()); + dvp = static_cast(selItem.getObject()); //NOLINT cppcoreguidelines-pro-type-static-cast-downcast if (selItem.getSubNames().empty()) { //there are no subNames, so we think this is a 3d case, //and we only need to select the view. We set the reference @@ -62,38 +70,17 @@ TechDraw::DrawViewPart* TechDraw::getReferencesFromSelection(ReferenceVector& re continue; } for (auto& sub : selItem.getSubNames()) { - ReferenceEntry ref(dvp, sub); + // plain ordinary 2d view + geometry reference + + ReferenceEntry ref(dvp, ShapeFinder::getLastTerm(sub)); references2d.push_back(ref); } } else if (!selItem.getObject()->isDerivedFrom(TechDraw::DrawView::getClassTypeId())) { - //this is not a TechDraw object, so we check to see if it has 3d geometry - std::vector links; - links.push_back(selItem.getObject()); - if (!ShapeExtractor::getShapes(links).IsNull()) { - //this item has 3d geometry so we are interested - App::DocumentObject* obj3d = selItem.getObject(); - if (selItem.getSubNames().empty()) { - if (ShapeExtractor::isPointType(obj3d)) { - //a point object may not have a subName when selected, - //so we need to perform some special handling. - ReferenceEntry ref(obj3d, "Vertex1"); - references3d.push_back(ref); - continue; - } else { - //this is a whole object reference, probably for an extent dimension - ReferenceEntry ref(obj3d, std::string()); - references3d.push_back(ref); - continue; - } - } - //this is a regular reference in form obj+subelement - for (auto& sub3d : selItem.getSubNames()) { - ReferenceEntry ref(obj3d, sub3d); - references3d.push_back(ref); - } - } else { - Base::Console().Message("DV::getRefsFromSel - %s has no shape!\n", - selItem.getObject()->getNameInDocument()); + App::DocumentObject* obj3d = selItem.getObject(); + // this is a regular 3d reference in form obj + long subelement + for (auto& sub3d : selItem.getSubNames()) { + ReferenceEntry ref(obj3d, sub3d); + references3d.push_back(ref); } } } @@ -109,15 +96,15 @@ TechDraw::DrawViewPart* TechDraw::getReferencesFromSelection(ReferenceVector& re //! verify that the proposed references contains valid geometries from a 2d DrawViewPart. DimensionGeometryType TechDraw::validateDimSelection( - ReferenceVector references, //[(dvp*, std::string),...,(dvp*, std::string)] - StringVector acceptableGeometry,//"Edge", "Vertex", etc - std::vector minimumCounts, //how many of each geometry are needed for a good dimension - std::vector acceptableDimensionGeometrys)//isVertical, isHorizontal, ... + const ReferenceVector& references, //[(dvp*, std::string),...,(dvp*, std::string)] + const StringVector& acceptableGeometry,//"Edge", "Vertex", etc + const std::vector& minimumCounts, //how many of each geometry are needed for a good dimension + const std::vector& acceptableDimensionGeometrys)//isVertical, isHorizontal, ... { StringVector subNames; TechDraw::DrawViewPart* dvpSave(nullptr); for (auto& ref : references) { - auto* dvp = dynamic_cast(ref.getObject()); + auto dvp = dynamic_cast(ref.getObject()); if (dvp) { dvpSave = dvp; if (!ref.getSubName().empty()) { @@ -181,15 +168,15 @@ DimensionGeometryType TechDraw::validateDimSelection( //! verify that the proposed references contains valid geometries from non-TechDraw objects. DimensionGeometryType TechDraw::validateDimSelection3d( TechDraw::DrawViewPart* dvp, - ReferenceVector references, //[(dvp*, std::string),...,(dvp*, std::string)] - StringVector acceptableGeometry,//"Edge", "Vertex", etc - std::vector minimumCounts, //how many of each geometry are needed for a good dimension - std::vector acceptableDimensionGeometrys)//isVertical, isHorizontal, ... + const ReferenceVector& references, //[(dvp*, std::string),...,(dvp*, std::string)] + const StringVector& acceptableGeometry,//"Edge", "Vertex", etc + const std::vector& minimumCounts, //how many of each geometry are needed for a good dimension + const std::vector& acceptableDimensionGeometrys)//isVertical, isHorizontal, ... { StringVector subNames; for (auto& ref : references) { if (!ref.getSubName().empty()) { - subNames.push_back(ref.getSubName()); + subNames.push_back(ref.getSubName(true)); } } @@ -225,7 +212,7 @@ DimensionGeometryType TechDraw::validateDimSelection3d( bool TechDraw::validateSubnameList(StringVector subNames, GeometrySet acceptableGeometrySet) { for (auto& sub : subNames) { - std::string geometryType = DrawUtil::getGeomTypeFromName(sub); + std::string geometryType = DrawUtil::getGeomTypeFromName(ShapeFinder::getLastTerm(sub)); if (acceptableGeometrySet.count(geometryType) == 0) { //this geometry type is not allowed return false; @@ -240,7 +227,7 @@ bool TechDraw::checkGeometryOccurrences(StringVector subNames, GeomCountMap keye //how many of each geometry descriptor are input GeomCountMap foundCounts; for (auto& sub : subNames) { - std::string geometryType = DrawUtil::getGeomTypeFromName(sub); + std::string geometryType = DrawUtil::getGeomTypeFromName(ShapeFinder::getLastTerm(sub)); std::map::iterator it0(foundCounts.find(geometryType)); if (it0 == foundCounts.end()) { //first occurrence of this geometryType @@ -355,8 +342,8 @@ DimensionGeometryType TechDraw::getGeometryConfiguration3d(DrawViewPart* dvp, //fill the GeomCountMap with pairs made from corresponding items in acceptableGeometry //and minimumCounts -GeomCountMap TechDraw::loadRequiredCounts(StringVector& acceptableGeometry, - std::vector& minimumCounts) +GeomCountMap TechDraw::loadRequiredCounts(const StringVector& acceptableGeometry, + const std::vector& minimumCounts) { if (acceptableGeometry.size() != minimumCounts.size()) { throw Base::IndexError("acceptableGeometry and minimum counts have different sizes."); diff --git a/src/Mod/TechDraw/Gui/DimensionValidators.h b/src/Mod/TechDraw/Gui/DimensionValidators.h index 339f7345561b..d2865b752746 100644 --- a/src/Mod/TechDraw/Gui/DimensionValidators.h +++ b/src/Mod/TechDraw/Gui/DimensionValidators.h @@ -66,16 +66,15 @@ enum DimensionGeometryEnum { DrawViewPart* getReferencesFromSelection(ReferenceVector& references2d, ReferenceVector& references3d); -DimensionGeometryType validateDimSelection( - ReferenceVector references, - StringVector acceptableGeometry,//"Edge", "Vertex", etc - std::vector minimumCounts, //how many of each geometry are needed for a good dimension - std::vector acceptableDimensionGeometrys);//isVertical, isHorizontal, ... -DimensionGeometryType validateDimSelection3d( - DrawViewPart* dvp, ReferenceVector references, - StringVector acceptableGeometry,//"Edge", "Vertex", etc - std::vector minimumCounts, //how many of each geometry are needed for a good dimension - std::vector acceptableDimensionGeometrys);//isVertical, isHorizontal, ... +DimensionGeometryType validateDimSelection(const ReferenceVector& references, + const StringVector& acceptableGeometry,//"Edge", "Vertex", etc + const std::vector& minimumCounts, //how many of each geometry are needed for a good dimension + const std::vector& acceptableDimensionGeometrys);//isVertical, isHorizontal, ... +DimensionGeometryType validateDimSelection3d(DrawViewPart* dvp, + const ReferenceVector& references, + const StringVector& acceptableGeometry, //"Edge", "Vertex", etc + const std::vector& minimumCounts, //how many of each geometry are needed for a good dimension + const std::vector& acceptableDimensionGeometrys);//isVertical, isHorizontal, ... bool validateSubnameList(StringVector subNames, GeometrySet acceptableGeometrySet); @@ -83,8 +82,8 @@ DimensionGeometryType getGeometryConfiguration(ReferenceVector valid2dReferences DimensionGeometryType getGeometryConfiguration3d(DrawViewPart* dvp, ReferenceVector valid3dReferences); -GeomCountMap loadRequiredCounts(StringVector& acceptableGeometry, - std::vector& minimumCouts); +GeomCountMap loadRequiredCounts(const StringVector& acceptableGeometry, + const std::vector& minimumCouts); bool checkGeometryOccurrences(StringVector subNames, GeomCountMap keyedMinimumCounts); DimensionGeometryType isValidVertexes(ReferenceVector refs); diff --git a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAdvanced.ui b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAdvanced.ui index e775476392aa..ce8d0d00a324 100644 --- a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAdvanced.ui +++ b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAdvanced.ui @@ -31,7 +31,7 @@ - If this box is checked, double clicking on a page in the tree will automatically switch to TechDraw and the page will be made visible. + If this box is checked, double-clicking on a page in the tree will automatically switch to TechDraw and the page will be made visible. Switch Workbench on Click @@ -79,7 +79,7 @@ - If checked, FreeCAD will use the new face finder algorithm. If not checked, FreeCAD will use the original face finder. + If checked, FreeCAD will use the new face finder algorithm. If not checked, FreeCAD will use the legacy face finder algorithm. Use New Face Finder Algorithm @@ -148,7 +148,7 @@ can be a performance penalty in complex models. - If checked, system will attempt to automatically correct dimension references when the model changes. + If checked, the system will attempt to automatically correct dimension references when the model changes. @@ -170,7 +170,7 @@ can be a performance penalty in complex models. - If checked, input shapes will be checked for errors before use.and invalid shapes will be skipped by the shape extractor. Checking for errors is slower, but can prevent crashes from some geometry problems. + If checked, input shapes will be checked for errors before use and invalid shapes will be skipped by the shape extractor. Checking for errors is slower, but can prevent crashes from some geometry problems. @@ -305,7 +305,7 @@ when hatching a face with a PAT pattern
- If checked, shapes which fail validation will be saved as brep files for later analysis. + If checked, shapes that fail validation will be saved as BREP files for later analysis. Debug Bad Shape @@ -464,7 +464,7 @@ Each unit is approx. 0.1 mm wide
Limit of 64x64 pixel SVG tiles used to hatch a single face. -For large scalings you might get an error about too many SVG tiles. +For large scalings, you might get an error about too many SVG tiles. Then you need to increase the tile limit. @@ -498,7 +498,7 @@ Then you need to increase the tile limit.
- <html><head/><body><p>Some combinations of OS and Navigation style key bindings may conflict with the default modifier keys for Ballon dragging and View snapping override. You can make adjustments here to find a non-conflicting key binding.</p></body></html> + Some combinations of OS and Navigation style key bindings may conflict with the default modifier keys for Balloon dragging and View snapping override. You can make adjustments here to find a non-conflicting key binding. Behaviour Overrides @@ -509,7 +509,7 @@ Then you need to increase the tile limit.
- Check this box to use the default modifier keys. Uncheck this box to set a different key combination. + Check this box to use the default modifier keys. Uncheck this box to set a different key combination. Use Default diff --git a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotation.ui b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotation.ui index 5f49c6a9126a..ef51dadf78ef 100644 --- a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotation.ui +++ b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotation.ui @@ -6,8 +6,8 @@ 0 0 - 580 - 795 + 835 + 956 @@ -28,8 +28,8 @@ - - + + 0 @@ -37,52 +37,75 @@ - Length of balloon leader line kink + Show arc centers in printed output - - 5.000000000000000 + + Print Center Marks - BalloonKink + PrintCenterMarks - Mod/TechDraw/Dimensions + Mod/TechDraw/Decorations - - + + + + + 0 + 0 + + + + + true + + - This checkbox controls whether or not to display a highlight around the detail area in the detail's source view. + Show arc center marks in views - Detail Source Show Highlight + Show Center Marks true - ShowDetailHighlight + ShowCenterMarks - /Mod/TechDraw/General + Mod/TechDraw/Decorations - - + + true + + If checked, the section annotation will be drawn on the Source view. If unchecked, no section line, arrows or symbol will be shown in the Source view. + - Section Cut Surface + Show Section Line in Source View + + + true + + + ShowSectionLine + + + Mod/TechDraw/Decorations - - + + 0 @@ -90,28 +113,16 @@ - Style for balloon leader line ends + Shape of balloon annotations - BalloonArrow + BalloonShape Mod/TechDraw/Decorations - - - - - true - - - - Balloon Leader End - - - @@ -136,95 +147,49 @@ - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - true - + + + + + 0 + 0 + - Show or hide marks at direction changes on ComplexSection lines. - - - Complex Section Line Marks - - - true + Style for balloon leader line ends - SectionLineMarks + BalloonArrow Mod/TechDraw/Decorations - - - - This checkbox controls whether or not to display the outline around a detail view. - - - Detail View Show Matting - - - true - - - ShowDetailMatting - - - /Mod/TechDraw/General - - - - - + + true - If checked, the section annotation will be drawn on the Source view. If unchecked, no section line, arrows or symbol will be shown in the Source view. + Length of horizontal portion of Balloon leader - Show Section Line in Source View - - - true - - - ShowSectionLine - - - Mod/TechDraw/Decorations + Balloon Leader Kink Length - - + + - false + true - Detail View Outline Shape + Broken View Break Type @@ -253,60 +218,94 @@ - - - - - 0 - 0 - - + + - Show arc centers in printed output + Default appearance of cut surface in section view - - Print Center Marks + + 2 - PrintCenterMarks + CutSurfaceDisplay - Mod/TechDraw/Decorations + /Mod/TechDraw/Decorations + + + Hide + + + + + Solid Color + + + + + SVG Hatch + + + + + PAT Hatch + + - - - - - 0 - 0 - + + + + This checkbox controls whether or not to display the outline around a detail view. - - - true - + + Detail View Show Matting + + + true + + ShowDetailMatting + + + /Mod/TechDraw/General + + + + + - Forces last leader line segment to be horizontal + This checkbox controls whether or not to display a highlight around the detail area in the detail's source view. - Leader Line Auto Horizontal + Detail Source Show Highlight true - AutoHorizontal + ShowDetailHighlight - Mod/TechDraw/LeaderLine + /Mod/TechDraw/General - - + + + + + false + + + + Detail View Outline Shape + + + + + 0 @@ -319,70 +318,99 @@ - Show arc center marks in views + Forces last leader line segment to be horizontal - Show Center Marks + Leader Line Auto Horizontal true - ShowCenterMarks + AutoHorizontal - Mod/TechDraw/Decorations + Mod/TechDraw/LeaderLine - - + + + + Qt::Orientation::Horizontal + + + + 40 + 20 + + + + + + true - Balloon Shape + Balloon Leader End - - - - Default appearance of cut surface in section view - + + 2 - CutSurfaceDisplay + BreakType - /Mod/TechDraw/Decorations + Mod/TechDraw/Decorations - Hide - - - - - Solid Color + No Break Lines - SVG Hatch + ZigZag Lines - PAT Hatch + Simple Lines + + + + + true + + + + Balloon Shape + + + + + + + + true + + + + Section Cut Surface + + + @@ -402,78 +430,66 @@ - - - - - 0 - 0 - + + + + + true + - Shape of balloon annotations + Show or hide marks at direction changes on ComplexSection lines. + + + Complex Section Line Marks + + + true - BalloonShape + SectionLineMarks Mod/TechDraw/Decorations - - - - - true - + + + + + 0 + 0 + - Length of horizontal portion of Balloon leader + Length of balloon leader line kink - - Balloon Leader Kink Length + + 5.000000000000000 - - - - - - - true - + + BalloonKink - - Broken View Break Type + + Mod/TechDraw/Dimensions - - - - 2 + + + + If this box is checked, templates will auto fill date fields using ccyy-mm-dd format even if that is not the standard format for the current locale. + + + Enforce ISO 8601 Date Format - BreakType + EnforceISODate - Mod/TechDraw/Decorations + Mod/TechDraw/Standards - - - No Break Lines - - - - - ZigZag Lines - - - - - Simple Lines - - @@ -507,7 +523,7 @@ 6 - QComboBox::AdjustToContents + QComboBox::SizeAdjustPolicy::AdjustToContents @@ -680,7 +696,7 @@ Shape of line end caps. The default (round) should almost -always be the right choice. Flat or square caps are useful +always be the right choice. Flat or square caps are useful if you are planning to use a drawing as a 1:1 cutting guide. @@ -775,7 +791,7 @@ if you are planning to use a drawing as a 1:1 cutting guide. - Qt::Horizontal + Qt::Orientation::Horizontal @@ -837,7 +853,7 @@ if you are planning to use a drawing as a 1:1 cutting guide. - Qt::Vertical + Qt::Orientation::Vertical @@ -871,8 +887,6 @@ if you are planning to use a drawing as a 1:1 cutting guide.
Gui/PrefWidgets.h
- - - + diff --git a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotationImp.cpp b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotationImp.cpp index 551d20d45a14..1affe1666abc 100644 --- a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotationImp.cpp +++ b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotationImp.cpp @@ -127,6 +127,7 @@ void DlgPrefsTechDrawAnnotationImp::saveSettings() ui->pcbBreakType->onSave(); ui->pcbBreakStyle->onSave(); + ui->cbISODates->onSave(); } void DlgPrefsTechDrawAnnotationImp::loadSettings() @@ -186,6 +187,7 @@ void DlgPrefsTechDrawAnnotationImp::loadSettings() loadLineStyleBoxes(); ui->pcbBreakType->onRestore(); + ui->cbISODates->onRestore(); } /** diff --git a/src/Mod/TechDraw/Gui/PagePrinter.cpp b/src/Mod/TechDraw/Gui/PagePrinter.cpp index c620c828dde8..5ce473f0198e 100644 --- a/src/Mod/TechDraw/Gui/PagePrinter.cpp +++ b/src/Mod/TechDraw/Gui/PagePrinter.cpp @@ -183,10 +183,9 @@ void PagePrinter::printAllPdf(QPrinter* printer, App::Document* doc) QString documentName = QString::fromUtf8(doc->getName()); QPdfWriter pdfWriter(outputFile); - // setPdfVersion sets the printed PDF Version to comply with PDF/A-1b, more details under: - // https://www.kdab.com/creating-pdfa-documents-qt/ but this is not working as of Qt 5.12 - // printer->setPdfVersion(QPagedPaintDevice::PdfVersion_A1b); - // pdfWriter.setPdfVersion(QPagedPaintDevice::PdfVersion_A1b); + // set the printed PDF Version to comply with PDF/A-1b, more details under: + // https://www.kdab.com/creating-pdfa-documents-qt/ + pdfWriter.setPdfVersion(QPagedPaintDevice::PdfVersion_A1b); pdfWriter.setTitle(documentName); pdfWriter.setResolution(printer->resolution()); @@ -350,6 +349,7 @@ void PagePrinter::printPdf(ViewProviderPage* vpPage, const std::string& file) // set up the pdfwriter QString outputFile = QString::fromStdString(filespec); QPdfWriter pdfWriter(outputFile); + pdfWriter.setPdfVersion(QPagedPaintDevice::PdfVersion_A1b); QPageLayout pageLayout = pdfWriter.pageLayout(); auto marginsdb = pageLayout.margins(QPageLayout::Millimeter); QString documentName = QString::fromUtf8(vpPage->getDrawPage()->getNameInDocument()); diff --git a/src/Mod/TechDraw/Gui/QGIDecoration.cpp b/src/Mod/TechDraw/Gui/QGIDecoration.cpp index 8461d40539ec..422ad3f7a5c4 100644 --- a/src/Mod/TechDraw/Gui/QGIDecoration.cpp +++ b/src/Mod/TechDraw/Gui/QGIDecoration.cpp @@ -60,6 +60,9 @@ void QGIDecoration::paint ( QPainter * painter, const QStyleOptionGraphicsItem * QStyleOptionGraphicsItem myOption(*option); myOption.state &= ~QStyle::State_Selected; + // painter->setPen(Qt::green); + // painter->drawRect(boundingRect()); //good for debugging + QGraphicsItemGroup::paint (painter, &myOption, widget); } diff --git a/src/Mod/TechDraw/Gui/QGILeaderLine.cpp b/src/Mod/TechDraw/Gui/QGILeaderLine.cpp index 2b31f9b3614d..40eab380e082 100644 --- a/src/Mod/TechDraw/Gui/QGILeaderLine.cpp +++ b/src/Mod/TechDraw/Gui/QGILeaderLine.cpp @@ -143,21 +143,18 @@ QVariant QGILeaderLine::itemChange(GraphicsItemChange change, const QVariant& va //QGILL isn't draggable so skip QGIV::mousePress have event void QGILeaderLine::mousePressEvent(QGraphicsSceneMouseEvent* event) { - // Base::Console().Message("QGILL::mousePressEvent() - %s\n", getViewName()); QGraphicsItem::mousePressEvent(event); } -//QGILL isn't draggable so skip QGIV::mouseRelease +//QGILL isn't draggable so skip QGIV::Release void QGILeaderLine::mouseReleaseEvent(QGraphicsSceneMouseEvent* event) { - // Base::Console().Message("QGILL::mouseReleaseEvent() - %s\n", getViewName()); QGraphicsItem::mouseReleaseEvent(event); } //! start editor on double click void QGILeaderLine::mouseDoubleClickEvent(QGraphicsSceneMouseEvent* event) { - // Base::Console().Message("QGILL::mouseDoubleClickEvent() - %s\n", getViewName()); auto ViewProvider = dynamic_cast(getViewProvider(getLeaderFeature())); if (!ViewProvider) { qWarning() << "QGILeaderLine::mouseDoubleClickEvent: No valid view provider"; @@ -261,8 +258,8 @@ void QGILeaderLine::onLineEditFinished(QPointF tipDisplace, std::vector std::vector pageDeltas; for (auto& pt : scenePoints) { QPointF distFromP0 = pt - scenePoints.front(); - // convert deltas to mm and conventional Y axis from scene coords - Base::Vector3d deltaInPageCoords = DGU::fromSceneCoords(DU::toVector3d(distFromP0)); + // convert deltas to mm + Base::Vector3d deltaInPageCoords = Rez::appX(DU::toVector3d(distFromP0)); pageDeltas.push_back(deltaInPageCoords); } pageDeltas.at(0) = Base::Vector3d(0.0, 0.0, 0.0); @@ -290,7 +287,14 @@ void QGILeaderLine::startPathEdit() m_editPath->setScale(scale); m_editPath->inEdit(true); m_editPath->show(); - m_editPath->startPathEdit(getWayPointsFromFeature()); + // m_editPath->startPathEdit(getWayPointsFromFeature()); + auto vPoints = featLeader->getTransformedWayPoints(); + std::vector qPoints; + qPoints.reserve(vPoints.size()); + for (auto& point : vPoints) { + qPoints.emplace_back(Rez::guiX(DU::toQPointF(point))); + } + m_editPath->startPathEdit(qPoints); } void QGILeaderLine::saveState() @@ -337,7 +341,6 @@ void QGILeaderLine::updateView(bool update) void QGILeaderLine::draw() { - // Base::Console().Message("QGILL::draw()- %s\n", getViewObject()->getNameInDocument()); if (m_blockDraw) { return; } @@ -373,22 +376,13 @@ void QGILeaderLine::draw() // set the leader's Qt position from feature's X,Y and scale. // the feature's x,y is unscaled, unrotated and conventional Y - // line style is standing in for line number here? - m_lineStyle = static_cast(vp->LineStyle.getValue()); - double baseScale = featLeader->getBaseScale(); - double xPos = Rez::guiX(featLeader->X.getValue()); - double yPos = Rez::guiX(featLeader->Y.getValue()); - Base::Vector3d vAttachPoint{xPos, yPos}; - vAttachPoint = vAttachPoint * baseScale; - double rotationRad = parent->Rotation.getValue() * M_PI / DegreesHalfCircle; - if (rotationRad != 0.0) { - vAttachPoint.RotateZ(rotationRad); - } - vAttachPoint = DU::invertY(vAttachPoint); - QPointF qPoint = DU::toQPointF(vAttachPoint); + QPointF qPoint = DU::toQPointF(getAttachPoint()); // ???? why does the attach point not need Rez applied? setPos(qPoint); + // line style is standing in for line number here? + m_lineStyle = static_cast(vp->LineStyle.getValue()); + m_line->setFillStyle(Qt::NoBrush); m_line->setStyle(m_lineStyle); m_line->setWidth(getLineWidth()); @@ -419,7 +413,6 @@ void QGILeaderLine::draw() QPainterPath QGILeaderLine::makeLeaderPath(std::vector qPoints) { - // Base::Console().Message("QGILeaderLine::makeLeaderPath()\n"); QPainterPath result; DrawLeaderLine* featLeader = getLeaderFeature(); if (!featLeader) { @@ -469,7 +462,6 @@ QPainterPath QGILeaderLine::makeLeaderPath(std::vector qPoints) //! result is is not inverted (Y grows upwards). QPointF QGILeaderLine::getAttachFromFeature() { - // Base::Console().Message("QGILL::getAttachFromFeature()\n"); TechDraw::DrawLeaderLine* featLeader = getLeaderFeature(); if (!featLeader) { // Base::Console().Message("QGIL::getAttachFromLeader - no feature\n"); @@ -483,7 +475,6 @@ QPointF QGILeaderLine::getAttachFromFeature() std::vector QGILeaderLine::getWayPointsFromFeature() { - // Base::Console().Message("QGILL::getWayPointsFromFeature()\n"); DrawLeaderLine* featLeader = getLeaderFeature(); if (!featLeader) { // Base::Console().Message("QGILL::getWayPointsFromFeature - featLeader is nullptr\n"); @@ -494,6 +485,9 @@ std::vector QGILeaderLine::getWayPointsFromFeature() auto doScale = featLeader->Scalable.getValue(); auto doRotate = featLeader->RotatesWithParent.getValue(); auto vPoints = featLeader->getScaledAndRotatedPoints(doScale, doRotate); + if (featLeader->AutoHorizontal.getValue()) { + vPoints = DrawLeaderLine::horizLastSegment(vPoints, featLeader->getBaseView()->Rotation.getValue()); + } std::vector qPoints; qPoints.reserve(vPoints.size()); @@ -504,20 +498,18 @@ std::vector QGILeaderLine::getWayPointsFromFeature() qPoints.push_back(DU::toQPointF(entry)); } else { // use points as saved in >= v0.22 - qPoints.push_back(DU::toQPointF(DGU::toSceneCoords(entry, false))); + qPoints.push_back(DU::toQPointF(Rez::guiX(entry))); } } if (qPoints.empty()) { Base::Console().Warning("QGILeaderLine::getWayPointsFromFeature - no points\n"); } - return qPoints; } void QGILeaderLine::setArrows(std::vector pathPoints) { - // Base::Console().Message("QGILL::setArrows()\n"); Base::Vector3d stdX(1.0, 0.0, 0.0); TechDraw::DrawLeaderLine* featLeader = getLeaderFeature(); @@ -574,6 +566,33 @@ void QGILeaderLine::drawBorder() // QGIView::drawBorder(); //good for debugging } + +//! return the position of the tip of the leader's arrow +Base::Vector3d QGILeaderLine::getAttachPoint() +{ + TechDraw::DrawLeaderLine* featLeader = getLeaderFeature(); + if (!featLeader) { + return Base::Vector3d(0, 0, 0); + } + TechDraw::DrawView* parent = featLeader->getBaseView(); + + if (!parent) { + return Base::Vector3d(0, 0, 0); + } + + double baseScale = featLeader->getBaseScale(); + double xPos = Rez::guiX(featLeader->X.getValue()); + double yPos = Rez::guiX(featLeader->Y.getValue()); + Base::Vector3d vAttachPoint{xPos, yPos}; + vAttachPoint = vAttachPoint * baseScale; + double rotationRad = parent->Rotation.getValue() * M_PI / DegreesHalfCircle; + if (rotationRad != 0.0) { + vAttachPoint.RotateZ(rotationRad); + } + vAttachPoint = DU::invertY(vAttachPoint); + return vAttachPoint; +} + //****************************************************************************** @@ -628,8 +647,8 @@ void QGILeaderLine::paint(QPainter* painter, const QStyleOptionGraphicsItem* opt QStyleOptionGraphicsItem myOption(*option); myOption.state &= ~QStyle::State_Selected; - // painter->setPen(Qt::blue); - // painter->drawRect(boundingRect()); //good for debugging + // painter->setPen(Qt::blue); + // painter->drawRect(boundingRect()); //good for debugging QGIView::paint(painter, &myOption, widget); } diff --git a/src/Mod/TechDraw/Gui/QGILeaderLine.h b/src/Mod/TechDraw/Gui/QGILeaderLine.h index 916e3f76e6c2..7fd7e046df51 100644 --- a/src/Mod/TechDraw/Gui/QGILeaderLine.h +++ b/src/Mod/TechDraw/Gui/QGILeaderLine.h @@ -99,6 +99,7 @@ class TechDrawGuiExport QGILeaderLine: public QGIView void setLeaderFeature(TechDraw::DrawLeaderLine* feat); bool useOldCoords() const; + Base::Vector3d getAttachPoint(); public Q_SLOTS: diff --git a/src/Mod/TechDraw/Gui/QGISectionLine.cpp b/src/Mod/TechDraw/Gui/QGISectionLine.cpp index 67b9b0d6d411..f59f105edeec 100644 --- a/src/Mod/TechDraw/Gui/QGISectionLine.cpp +++ b/src/Mod/TechDraw/Gui/QGISectionLine.cpp @@ -470,7 +470,7 @@ void QGISectionLine::setSectionColor(QColor c) QColor QGISectionLine::getSectionColor() { - return PreferencesGui::sectionLineQColor(); + return getColor(); } void QGISectionLine::paint ( QPainter * painter, const QStyleOptionGraphicsItem * option, QWidget * widget) { diff --git a/src/Mod/TechDraw/Gui/QGITile.cpp b/src/Mod/TechDraw/Gui/QGITile.cpp index 4f150b8e41c7..d20db38396d0 100644 --- a/src/Mod/TechDraw/Gui/QGITile.cpp +++ b/src/Mod/TechDraw/Gui/QGITile.cpp @@ -32,6 +32,7 @@ #include #include +#include #include "QGITile.h" #include "PreferencesGui.h" @@ -41,6 +42,7 @@ using namespace TechDrawGui; using namespace TechDraw; +using DU = DrawUtil; QGITile::QGITile(TechDraw::DrawTileWeld* dtw) : m_textL(QString::fromUtf8(" ")), @@ -69,10 +71,7 @@ QGITile::QGITile(TechDraw::DrawTileWeld* dtw) : m_wide = getSymbolWidth(); m_high = getSymbolHeight(); -// m_high = prefFontSize(); - m_textL = QString(); - m_textR = QString(); - m_textC = QString(); + m_fontName = prefTextFont(); m_font = QFont(m_fontName); @@ -88,55 +87,19 @@ QGITile::QGITile(TechDraw::DrawTileWeld* dtw) : m_colCurrent = m_colNormal; } -QGITile::~QGITile() -{ - -} void QGITile::draw() { -// Base::Console().Message("QGIT::draw()\n"); - prepareGeometryChange(); m_wide = getSymbolWidth(); m_high = getSymbolHeight(); makeText(); makeSymbol(); - - double textWidthL = m_qgTextL->boundingRect().width(); - double textWidthR = m_qgTextR->boundingRect().width(); - double totalWidth = m_wide + textWidthL + textWidthR; - if (m_row == 0) { //arrowSide - double x = m_origin.x(); - double y = m_origin.y() - (m_high * 0.5); //inverted y!! - setPos(x, y); - } else if (m_row == -1) { //otherSide - if (getAltWeld()) { - if (isTailRight()) { - double x = m_origin.x() + (0.5 * totalWidth); //move to right 1/2 tile width - double y = m_origin.y() + (m_high * 0.5); //inverted y!! - setPos(x, y); - } else { - double x = m_origin.x() - (0.5 * totalWidth); //move to left 1/2 tile width - double y = m_origin.y() + (m_high * 0.5); //inverted y!! - setPos(x, y); - } - } else { - double x = m_origin.x(); - double y = m_origin.y() + (m_high * 0.5); //inverted y!! - setPos(x, y); - } - } else { - double x = m_origin.x() + m_col * totalWidth; - double y = m_origin.y() - (m_row * m_high) - (m_high * 0.5); //inverted y!! - setPos(x, y); - } } void QGITile::makeSymbol() { -// Base::Console().Message("QGIT::makeSymbol()\n"); // m_effect->setColor(m_colCurrent); // m_qgSvg->setGraphicsEffect(m_effect); @@ -155,12 +118,9 @@ void QGITile::makeSymbol() void QGITile::makeText() { -// Base::Console().Message("QGIT::makeText()\n"); prepareGeometryChange(); -// m_font.setPixelSize(prefFontSize()); double verticalFudge = 0.10; - //(0, 0) is 1/2 up symbol (above line symbol)! m_qgTextL->setFont(m_font); m_qgTextL->setPlainText(m_textL); m_qgTextL->setColor(m_colCurrent); @@ -193,7 +153,7 @@ void QGITile::makeText() charWidth = textWidth / m_textR.size(); hMargin = 1; if (!m_textR.isEmpty()) { - hMargin = (m_wide / 2.0) + (charWidth); + hMargin = (m_wide / 2) + (charWidth); } double textHeightR = m_qgTextR->boundingRect().height(); if (m_row < 0) { // below line @@ -216,7 +176,7 @@ void QGITile::makeText() } //read whole text file into std::string -std::string QGITile::getStringFromFile(std::string inSpec) +std::string QGITile::getStringFromFile(const std::string& inSpec) { Base::FileInfo fi(inSpec); Base::ifstream f(fi); @@ -237,41 +197,40 @@ void QGITile::setTileScale(double s) m_scale = s; } -void QGITile::setTileTextLeft(std::string s) +void QGITile::setTileTextLeft(const std::string& text) { - m_textL = QString::fromUtf8(s.c_str()); + m_textL = QString::fromUtf8(text.c_str()); } -void QGITile::setTileTextRight(std::string s) +void QGITile::setTileTextRight(const std::string& text) { - m_textR = QString::fromUtf8(s.c_str()); + m_textR = QString::fromUtf8(text.c_str()); } -void QGITile::setTileTextCenter(std::string s) +void QGITile::setTileTextCenter(const std::string& text) { - m_textC = QString::fromUtf8(s.c_str()); + m_textC = QString::fromUtf8(text.c_str()); } -void QGITile::setFont(QFont f, double fSizePx) +void QGITile::setFont(const QFont& font, double fSizePx) { -// Base::Console().Message("QGIT::setFont(%s, %.3f)\n", qPrintable(f.family()), fSizePx); - m_font = f; + m_font = font; m_font.setPixelSize(fSizePx); } -void QGITile::setFont(std::string fName, double fSizePx) + +void QGITile::setFont(const std::string &fName, double fSizePx) { QString qFName = QString::fromStdString(fName); - QFont f(qFName); - setFont(f, fSizePx); + QFont font(qFName); + setFont(font, fSizePx); } -void QGITile::setSymbolFile(std::string s) +void QGITile::setSymbolFile(const std::string &fileSpec) { -// Base::Console().Message("QGIT::setSymbolFile(%s)\n", s.c_str()); - if (!s.empty()) { - m_svgPath = QString::fromUtf8(s.c_str()); + if (!fileSpec.empty()) { + m_svgPath = QString::fromUtf8(fileSpec.c_str()); } } @@ -308,12 +267,12 @@ void QGITile::setPrettySel() { draw(); } -bool QGITile::isTailRight() +bool QGITile::isTailRight() const { return m_tailRight; } -bool QGITile::getAltWeld() +bool QGITile::getAltWeld() const { return m_altWeld; } @@ -327,24 +286,22 @@ QColor QGITile::getTileColor() const double QGITile::getSymbolWidth() const { - double w = Preferences::getPreferenceGroup("Dimensions")->GetFloat("SymbolSize", 64); + double symbolWidth = Preferences::getPreferenceGroup("Dimensions")->GetFloat("SymbolSize", 64); // symbols are only nominally 64x64. they actually have a "border" of 4 - 0.5*stroke(0.5) // so we'll say effectively 62x62? 60 x 60 -// double w = 64.0; - double fudge = 4.0; //allowance for tile border - w = w - fudge; - w = w * getSymbolFactor(); - return w; + constexpr double borderAllow = 4.0; //allowance for tile border + symbolWidth = symbolWidth - borderAllow; + symbolWidth = symbolWidth * getSymbolFactor(); + return symbolWidth; } double QGITile::getSymbolHeight() const { - double h = Preferences::getPreferenceGroup("Dimensions")->GetFloat("SymbolSize", 64); - double fudge = 4.0; - h = h - fudge; -// double h = 60.0; - h = h * getSymbolFactor(); - return h; + double height = Preferences::getPreferenceGroup("Dimensions")->GetFloat("SymbolSize", 64); + double borderAllow = 4.0; + height = height - borderAllow; + height = height * getSymbolFactor(); + return height; } //make symbols larger or smaller than standard @@ -355,7 +312,6 @@ double QGITile::getSymbolFactor() const double QGITile::prefFontSize() const { -// Base::Reference hGrp = Preferences::getPreferenceGroup("Dimensions"); return Preferences::dimFontSizeMM(); } @@ -369,3 +325,61 @@ QRectF QGITile::boundingRect() const return childrenBoundingRect(); } + +//! determine where to position the tile based on which fields are used. +QPointF QGITile::calcTilePosition() +{ + constexpr double OneHalf{0.5}; + auto xDir = m_leaderXDirection; // "right" + auto yDir = m_leaderYDirection; // "up" + Base::Vector3d stdX{1, 0, 0}; + auto dot = stdX.Dot(xDir); + if (dot < 0) { + // our leader points left, so yDir should be +Y, but we need -Y up + yDir = -yDir; + } + + double textWidthL = m_qgTextL->boundingRect().width(); + double textWidthR = m_qgTextR->boundingRect().width(); + double totalWidth = m_wide + textWidthL + textWidthR; + + if (m_row == 0) { //arrowSide + double offsetDistanceY = getSymbolHeight() * OneHalf; + auto vOffset = yDir * offsetDistanceY; + auto netPosition = m_origin + DU::toQPointF(vOffset); + return netPosition; + } + + if (m_row == -1) { //otherSide + if (getAltWeld()) { + if (isTailRight()) { + auto hOffset = DU::toQPointF(xDir * (OneHalf * totalWidth)); //move to right 1/2 tile width + auto vOffset = DU::toQPointF(yDir * (getSymbolHeight() * OneHalf)); // move down 1/2 tile height + auto netPosition = m_origin + hOffset - vOffset; + return netPosition; + } + auto hOffset = DU::toQPointF(xDir * (OneHalf * totalWidth)); + auto vOffset = DU::toQPointF(yDir * (OneHalf * getSymbolHeight())); + auto netPosition = m_origin - hOffset - vOffset; // left and down + return netPosition; + } + + auto vOffset = DU::toQPointF(yDir * (OneHalf * getSymbolHeight())); // down 1/2 tile height + auto netPosition = m_origin - vOffset; + return netPosition; + } + + auto hOffset = DU::toQPointF(xDir * (m_col * totalWidth)); + auto vOffset = DU::toQPointF(yDir * ((m_row * m_high) + (m_high * OneHalf))); + auto netPosition = m_origin + hOffset - vOffset; + + return netPosition; +} + +void QGITile::setLocalAxes(Base::Vector3d xdir, Base::Vector3d ydir) +{ + m_leaderXDirection = xdir; + m_leaderYDirection = ydir; +} + + diff --git a/src/Mod/TechDraw/Gui/QGITile.h b/src/Mod/TechDraw/Gui/QGITile.h index a9eb95d32185..a9f349c531bd 100644 --- a/src/Mod/TechDraw/Gui/QGITile.h +++ b/src/Mod/TechDraw/Gui/QGITile.h @@ -47,45 +47,49 @@ class TechDrawGuiExport QGITile : public QGIDecoration { public: explicit QGITile(TechDraw::DrawTileWeld*); - ~QGITile() override; + ~QGITile() override = default; enum {Type = QGraphicsItem::UserType + 325}; - int type(void) const override { return Type;} + int type() const override { return Type;} QRectF boundingRect() const override; - void setTileTextLeft(std::string s); - void setTileTextRight(std::string s); - void setTileTextCenter(std::string s); - void setFont(QFont f, double fSizePx); - void setFont(std::string fName, double fSizePx); - void setSymbolFile(std::string s); - void setTilePosition(QPointF org, int r, int c); - void setTileScale(double s); - void setTailRight(bool b) { m_tailRight = b; } - void setAltWeld(bool b) { m_altWeld = b; } - bool isTailRight(); + void setTileTextLeft(const std::string& text); + void setTileTextRight(const std::string& text); + void setTileTextCenter(const std::string& text); + void setFont(const QFont& font, double fSizePx); + void setFont(const std::string& fName, double fSizePx); + void setSymbolFile(const std::string& fileSpec); + void setTilePosition(QPointF org, int row, int col); + void setTileScale(double scale); + void setTailRight(bool state) { m_tailRight = state; } + void setAltWeld(bool state) { m_altWeld = state; } + bool isTailRight() const; void draw() override; + void setLocalAxes(Base::Vector3d xdir, Base::Vector3d ydir); + QPointF mapPointToRotation(Base::Vector3d pointIn); + QPointF calcTilePosition(); + protected: - QColor getTileColor(void) const; + QColor getTileColor() const; void setPrettyNormal(); void setPrettyPre(); void setPrettySel(); - double getSymbolWidth(void) const; - double getSymbolHeight(void) const; - double getSymbolFactor(void) const; + double getSymbolWidth() const; + double getSymbolHeight() const; + double getSymbolFactor() const; QByteArray getSvgString(QString svgPath); - QString prefTextFont(void) const; - double prefFontSize(void) const; - void makeSymbol(void); - void makeText(void); + QString prefTextFont() const; + double prefFontSize() const; + void makeSymbol(); + void makeText(); - bool getAltWeld(void); + bool getAltWeld() const; bool isReadable(QString filePath); - std::string getStringFromFile(std::string inSpec); + std::string getStringFromFile(const std::string &inSpec); private: @@ -109,6 +113,9 @@ class TechDrawGuiExport QGITile : public QGIDecoration bool m_tailRight; bool m_altWeld; TechDraw::DrawTileWeld* m_tileFeat; + + Base::Vector3d m_leaderXDirection; + Base::Vector3d m_leaderYDirection; }; } diff --git a/src/Mod/TechDraw/Gui/QGIViewBalloon.cpp b/src/Mod/TechDraw/Gui/QGIViewBalloon.cpp index acdda7b4c1a2..1502c0215133 100644 --- a/src/Mod/TechDraw/Gui/QGIViewBalloon.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewBalloon.cpp @@ -277,7 +277,7 @@ QGIViewBalloon::QGIViewBalloon() arrow->setPrettyNormal(); arrow->setStyle(prefDefaultArrow()); - balloonLabel->setZValue(ZVALUE::LABEL); + balloonLabel->setZValue(ZVALUE::BALLOON); arrow->setZValue(ZVALUE::DIMENSION); balloonLines->setZValue(ZVALUE::DIMENSION); @@ -925,6 +925,7 @@ void QGIViewBalloon::setPens(void) { balloonLines->setWidth(m_lineWidth); balloonShape->setWidth(m_lineWidth); + balloonShape->setFillColor(PreferencesGui::pageQColor()); arrow->setWidth(m_lineWidth); } diff --git a/src/Mod/TechDraw/Gui/QGIViewDimension.cpp b/src/Mod/TechDraw/Gui/QGIViewDimension.cpp index cc93a1b02cb2..866ac2fac8ff 100644 --- a/src/Mod/TechDraw/Gui/QGIViewDimension.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewDimension.cpp @@ -466,7 +466,7 @@ void QGIDatumLabel::setFont(QFont font) QFont tFont(font); double fontSize = font.pixelSize(); double tolAdj = getTolAdjust(); - tFont.setPixelSize((int)(fontSize * tolAdj)); + tFont.setPixelSize(std::max(1, (int)(fontSize * tolAdj))); m_tolTextOver->setFont(tFont); m_tolTextUnder->setFont(tFont); updateFrameRect(); diff --git a/src/Mod/TechDraw/Gui/QGIViewSymbol.cpp b/src/Mod/TechDraw/Gui/QGIViewSymbol.cpp index af1fa299e799..aa5c9fccbfb2 100644 --- a/src/Mod/TechDraw/Gui/QGIViewSymbol.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewSymbol.cpp @@ -24,11 +24,12 @@ #include "PreCompiled.h" #ifndef _PreComp_ # include -# include # include # include # include +# include +# include #endif #include @@ -105,22 +106,17 @@ void QGIViewSymbol::draw() void QGIViewSymbol::drawSvg() { auto viewSymbol(dynamic_cast(getViewObject())); - if (!viewSymbol) + if (!viewSymbol) { return; - - double rezfactor = Rez::getRezFactor(); - double scaling = viewSymbol->getScale(); - double pxMm = 3.78;//96px/25.4mm ( CSS/SVG defined value of 96 pixels per inch) - // double pxMm = 3.54; //90px/25.4mm ( inkscape value version <= 0.91) - //some software uses different px/in, so symbol will need Scale adjusted. - //Arch/Draft views are in px and need to be scaled @ rezfactor px/mm to ensure proper representation - if (viewSymbol->isDerivedFrom(TechDraw::DrawViewArch::getClassTypeId()) - || viewSymbol->isDerivedFrom(TechDraw::DrawViewDraft::getClassTypeId())) { - scaling = scaling * rezfactor; } - else { - scaling = scaling * rezfactor / pxMm; + + double scaling{1}; + if (Preferences::useLegacySvgScaling()) { + scaling = legacyScaler(viewSymbol); + } else { + scaling = symbolScaler(viewSymbol); } + m_svgItem->setScale(scaling); QByteArray qba(viewSymbol->Symbol.getValue(), strlen(viewSymbol->Symbol.getValue())); @@ -162,3 +158,69 @@ void QGIViewSymbol::rotateView() double rot = getViewObject()->Rotation.getValue(); m_displayArea->setRotation(-rot); } + +//! this is the original scaling logic as used in versions <= 1.0 +//! it does not scale correctly for svg files that use mm units, but is available for +//! backwards compatibility. Set General/LegacySvgScaling to true to use this method. +double QGIViewSymbol::legacyScaler(TechDraw::DrawViewSymbol* feature) const +{ + double rezfactor = Rez::getRezFactor(); + double scaling = feature->getScale(); + double pxMm = 3.78;//96px/25.4mm ( CSS/SVG defined value of 96 pixels per inch) + // double pxMm = 3.54; //90px/25.4mm ( inkscape value version <= 0.91) + //some software uses different px/in, so symbol will need Scale adjusted. + //Arch/Draft views are in px and need to be scaled @ rezfactor px/mm to ensure proper representation + if (feature->isDerivedFrom(TechDraw::DrawViewArch::getClassTypeId()) + || feature->isDerivedFrom(TechDraw::DrawViewDraft::getClassTypeId())) { + scaling = scaling * rezfactor; + } + else { + scaling = scaling * rezfactor / pxMm; + } + + return scaling; +} + +//! new symbol scaling logic as of v1.1 +//! svg in mm scales correctly. svg in px will be drawn using scene units (0.1 mm) +//! as pixels. +double QGIViewSymbol::symbolScaler(TechDraw::DrawViewSymbol* feature) const +{ + double scaling = feature->getScale(); + double rezfactor = Rez::getRezFactor(); + + QByteArray qba(feature->Symbol.getValue(), strlen(feature->Symbol.getValue())); + QString qSymbolString = QString::fromUtf8(qba); + + const QString pxToken{QString::fromUtf8("px")}; + const QString mmToken{QString::fromUtf8("mm")}; + + // heightRegex finds (height="51.8309mm") in the svg text and returns the mm if present + QString heightRegex = QString::fromUtf8(R"(height=\"\d*\.?\d+([a-zA-Z]+)\")"); + QRegularExpression reHeight(heightRegex); + QRegularExpressionMatch matchHeight = reHeight.match(qSymbolString); + + QString matchUnits; + if (matchHeight.hasMatch()) { + auto capture0 = matchHeight.captured(0); + matchUnits = matchHeight.captured(1); + } + + if (matchUnits.isEmpty() || + matchUnits == pxToken) { + scaling *= rezfactor; + } + + if (matchUnits == mmToken) { + auto svgSize = m_svgItem->renderer()->defaultSize(); + auto vpSize = m_svgItem->renderer()->viewBox(); + // wf: this calculation works, but I don't know why. :( + // hints here: https://stackoverflow.com/questions/49866474/get-svg-size-from-qsvgrenderer + // and here: https://stackoverflow.com/questions/7544921/qt-qgraphicssvgitem-renders-too-big-0-5-unit-on-each-side + scaling *= rezfactor * vpSize.width() / svgSize.width(); + } + + return scaling; +} + + diff --git a/src/Mod/TechDraw/Gui/QGIViewSymbol.h b/src/Mod/TechDraw/Gui/QGIViewSymbol.h index 5283868220ea..e22182a6e189 100644 --- a/src/Mod/TechDraw/Gui/QGIViewSymbol.h +++ b/src/Mod/TechDraw/Gui/QGIViewSymbol.h @@ -59,6 +59,8 @@ class TechDrawGuiExport QGIViewSymbol : public QGIView protected: virtual void drawSvg(); void symbolToSvg(QByteArray qba); + double legacyScaler(TechDraw::DrawViewSymbol* feature) const; + double symbolScaler(TechDraw::DrawViewSymbol* feature) const; QGDisplayArea* m_displayArea; QGCustomSvg *m_svgItem; diff --git a/src/Mod/TechDraw/Gui/QGIWeldSymbol.cpp b/src/Mod/TechDraw/Gui/QGIWeldSymbol.cpp index 7d61d7f39d13..e20398e3d10f 100644 --- a/src/Mod/TechDraw/Gui/QGIWeldSymbol.cpp +++ b/src/Mod/TechDraw/Gui/QGIWeldSymbol.cpp @@ -21,6 +21,7 @@ ***************************************************************************/ #include "PreCompiled.h" +#include #ifndef _PreComp_ # include # include @@ -28,6 +29,7 @@ #endif #include +#include #include #include @@ -57,25 +59,23 @@ using DU = DrawUtil; QGIWeldSymbol::QGIWeldSymbol() : m_arrowFeat(nullptr), m_otherFeat(nullptr), - m_tailText(nullptr), - m_fieldFlag(nullptr), - m_allAround(nullptr), + m_tailText(new QGCustomText()), + m_fieldFlag(new QGIPrimPath()), + m_allAround(new QGIVertex(-1)), m_blockDraw(false) { - setFiltersChildEvents(true); //qt5 + setFiltersChildEvents(true); setFlag(QGraphicsItem::ItemIsMovable, false); setCacheMode(QGraphicsItem::NoCache); setZValue(ZVALUE::DIMENSION); - m_tailText = new QGCustomText(); m_tailText->setPlainText( QString::fromUtf8(" ")); addToGroup(m_tailText); m_tailText->hide(); m_tailText->setPos(0.0, 0.0); //avoid bRect issues - m_allAround = new QGIVertex(-1); addToGroup(m_allAround); m_allAround->setPos(0.0, 0.0); m_allAround->setAcceptHoverEvents(false); @@ -85,7 +85,6 @@ QGIWeldSymbol::QGIWeldSymbol() : m_allAround->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); m_allAround->setFlag(QGraphicsItem::ItemStacksBehindParent, true); - m_fieldFlag = new QGIPrimPath(); addToGroup(m_fieldFlag); m_fieldFlag->setPos(0.0, 0.0); m_fieldFlag->setAcceptHoverEvents(false); @@ -94,9 +93,10 @@ QGIWeldSymbol::QGIWeldSymbol() : m_fieldFlag->setFlag(QGraphicsItem::ItemSendsScenePositionChanges, false); m_fieldFlag->setFlag(QGraphicsItem::ItemSendsGeometryChanges, true); m_fieldFlag->setFlag(QGraphicsItem::ItemStacksBehindParent, true); - m_fieldFlag->setFill(prefNormalColor(), Qt::SolidPattern); + m_fieldFlag->setFill(prefNormalColor(), Qt::SolidPattern); setNormalColor(prefNormalColor()); + setCurrentColor(getNormalColor()); setSettingColor(getNormalColor()); @@ -105,7 +105,6 @@ QGIWeldSymbol::QGIWeldSymbol() : QVariant QGIWeldSymbol::itemChange(GraphicsItemChange change, const QVariant &value) { -// Base::Console().Message("QGIWS::itemChange(%d)\n", change); if (change == ItemSelectedHasChanged && scene()) { if(isSelected()) { setPrettySel(); @@ -120,7 +119,6 @@ QVariant QGIWeldSymbol::itemChange(GraphicsItemChange change, const QVariant &va void QGIWeldSymbol::updateView(bool update) { -// Base::Console().Message("QGIWS::updateView()\n"); Q_UNUSED(update); TechDraw::DrawWeldSymbol *feature = getFeature(); @@ -138,7 +136,6 @@ void QGIWeldSymbol::updateView(bool update) void QGIWeldSymbol::draw() { -// Base::Console().Message("QGIWS::draw()- %s\n", getFeature()->getNameInDocument()); if (!isVisible()) { return; } @@ -163,18 +160,20 @@ void QGIWeldSymbol::draw() void QGIWeldSymbol::drawTile(TechDraw::DrawTileWeld* tileFeat) { -// Base::Console().Message("QGIWS::drawTile() - tileFeat: %X\n", tileFeat); if (!tileFeat) { Base::Console().Message("QGIWS::drawTile - tile is null\n"); return; } - const auto sym = getFeature(); - if (!sym) + const auto symbol = getFeature(); + if (!symbol) { return; - auto vp = dynamic_cast(getViewProvider(sym)); - if (!vp) + } + auto vp = dynamic_cast(getViewProvider(symbol)); + if (!vp) { return; + } + std::string fontName = vp->Font.getValue(); int fontSize = QGIView::exactFontSize(vp->Font.getValue(), vp->TileFontSize.getValue()); @@ -184,11 +183,10 @@ void QGIWeldSymbol::drawTile(TechDraw::DrawTileWeld* tileFeat) std::string tileTextL = tileFeat->LeftText.getValue(); std::string tileTextR = tileFeat->RightText.getValue(); std::string tileTextC = tileFeat->CenterText.getValue(); -// std::string symbolFile = tileFeat->SymbolFile.getValue(); - int row = tileFeat->TileRow.getValue(); - int col = tileFeat->TileColumn.getValue(); + int row = (int)tileFeat->TileRow.getValue(); + int col = (int)tileFeat->TileColumn.getValue(); - QGITile* tile = new QGITile(tileFeat); + auto tile = new QGITile(tileFeat); addToGroup(tile); QPointF org = getTileOrigin(); @@ -198,18 +196,32 @@ void QGIWeldSymbol::drawTile(TechDraw::DrawTileWeld* tileFeat) tile->setTileTextLeft(tileTextL); tile->setTileTextRight(tileTextR); tile->setTileTextCenter(tileTextC); -// tile->setSymbolFile(symbolFile); tile->setZValue(ZVALUE::DIMENSION); tile->setTileScale(featScale); tile->setTailRight(getFeature()->isTailRightSide()); tile->setAltWeld(getFeature()->AlternatingWeld.getValue()); + auto localAxes = getLocalAxes(); + tile->setLocalAxes(localAxes.first, localAxes.second); + auto tilePos = tile->calcTilePosition(); // this is not the center! pos is left and up from center + + auto rotationDeg = getLastSegAngle(); + Base::Vector3d stdX{1, 0, 0}; + auto xdir = localAxes.first; + auto dot = stdX.Dot(xdir); + constexpr double DegreesHalfCircle{180.0}; + if (dot < 0) { + rotationDeg -= DegreesHalfCircle; + } + tile->setRotation(rotationDeg); // Qt angles are clockwise + tile->draw(); + tile->setPos(tilePos); + } void QGIWeldSymbol::drawAllAround() { -// Base::Console().Message("QGIWS::drawAllAround()\n"); QPointF allAroundPos = getKinkPoint(); m_allAround->setPos(allAroundPos); @@ -224,7 +236,6 @@ void QGIWeldSymbol::drawAllAround() m_allAround->setNormalColor(getCurrentColor()); m_allAround->setFill(Qt::NoBrush); -// m_allAround->setRadius(calculateFontPixelSize(getDimFontSize())); m_allAround->setRadius(PreferencesGui::dimFontSizePX()); auto qgiLead = dynamic_cast(getQGIVByName(getLeader()->getNameInDocument())); @@ -236,26 +247,32 @@ void QGIWeldSymbol::drawAllAround() void QGIWeldSymbol::drawTailText() { -// Base::Console().Message("QGIWS::drawTailText()\n"); + constexpr double DegreesHalfCircle{180.0}; + constexpr double verticalBRectAdjustFactor{1.2}; // text bounding rect is bigger than font size and text is not + // vertically aligned with brect midline, so we artificially + // bump the text size so the middle aligns with the leader + QPointF textPos = getTailPoint(); m_tailText->setPos(textPos); //avoid messing up brect with empty item at 0, 0 !!! std::string tText = getFeature()->TailText.getValue(); if (tText.empty()) { m_tailText->hide(); return; - } else { - m_tailText->show(); } - const auto sym = getFeature(); - if (!sym) + + m_tailText->show(); + + const auto symbol = getFeature(); + if (!symbol) { return; - auto vp = dynamic_cast(getViewProvider(sym)); + } + auto vp = dynamic_cast(getViewProvider(symbol)); if (!vp) { return; } QString qFontName = QString::fromStdString(vp->Font.getValue()); int fontSize = QGIView::exactFontSize(vp->Font.getValue(), - vp->FontSize.getValue()); + vp->FontSize.getValue()); // this is different from the size used in the tiles m_font.setFamily(qFontName); m_font.setPixelSize(fontSize); @@ -266,23 +283,42 @@ void QGIWeldSymbol::drawTailText() m_tailText->setColor(getCurrentColor()); m_tailText->setZValue(ZVALUE::DIMENSION); - double textWidth = m_tailText->boundingRect().width(); - double charWidth = textWidth / tText.size(); - double hMargin = charWidth + prefArrowSize(); + auto brWidth = m_tailText->boundingRect().width(); + auto brHeight = m_tailText->boundingRect().height(); + auto brCharWidth = brWidth / tText.length(); + + double hMargin = brCharWidth + prefArrowSize(); // leave a gap from the graphic + auto angleDeg = getLastSegAngle(); + + auto localAxes = getLocalAxes(); + auto xdir = localAxes.first; + auto ydir = localAxes.second; + Base::Vector3d stdX{1, 0, 0}; + auto xdirStartOffset = DU::toQPointF(xdir * brWidth) * -1; // start of text in xDir when leader points left + auto dot = stdX.Dot(xdir); + if (dot < 0) { + angleDeg -= DegreesHalfCircle; + xdirStartOffset = QPointF(0, 0); + ydir = -ydir; + } - double textHeight = m_tailText->boundingRect().width(); - double vFudge = textHeight * 0.1; + auto xAdjust = DU::toQPointF(xdir * hMargin); + auto yAdjust = DU::toQPointF(ydir * (brHeight * verticalBRectAdjustFactor) / 2); - if (getFeature()->isTailRightSide()) { - m_tailText->justifyLeftAt(textPos.x() + hMargin, textPos.y() - vFudge, true); - } else { - m_tailText->justifyRightAt(textPos.x() - hMargin, textPos.y() - vFudge, true); - } + // QGCustomText doesn't know about rotation so we can't use the justify methods + QPointF justPoint = textPos - xAdjust + yAdjust; // original + justPoint += xdirStartOffset; + + m_tailText->setPos(justPoint); + + auto kink = getLeader()->getKinkPoint(); + m_tailText->setTransformOriginPoint(DU::toQPointF(kink)); + + m_tailText->setRotation(angleDeg); } void QGIWeldSymbol::drawFieldFlag() { -// Base::Console().Message("QGIWS::drawFieldFlag()\n"); QPointF fieldFlagPos = getKinkPoint(); m_fieldFlag->setPos(fieldFlagPos); @@ -292,19 +328,33 @@ void QGIWeldSymbol::drawFieldFlag() m_fieldFlag->hide(); return; } + + auto localAxes = getLocalAxes(); + auto xdir = localAxes.first; + auto ydir = localAxes.second; + + // TODO: similar code used here and in QGITiled to handle leader points left. different actions, though. + // used here and QGITile. + Base::Vector3d stdX{1, 0, 0}; + auto dot = stdX.Dot(xdir); + if (dot < 0) { + // our leader points left, so yDir should be +Y, but we need -Y up + ydir = -ydir; + } + +// NOLINTBEGIN readability-magic-numbers std::vector flagPoints = { QPointF(0.0, 0.0), - QPointF(0.0, -3.0), - QPointF(-2.0, -2.5), - QPointF(0.0, -2.0) }; - //flag sb about 2x text? -// double scale = calculateFontPixelSize(getDimFontSize()) / 2.0; - double scale = PreferencesGui::dimFontSizePX() / 2.0; + DU::toQPointF(ydir * 3.0), + DU::toQPointF(xdir * -2.0 + ydir * 2.5), + DU::toQPointF(ydir * 2.0) }; +// NOLINTEND readability-magic-numbers + + double scale = (float)PreferencesGui::dimFontSizePX() / 2; QPainterPath path; path.moveTo(flagPoints.at(0) * scale); - int i = 1; - int stop = flagPoints.size(); - for ( ; i < stop; i++) { - path.lineTo(flagPoints.at(i) * scale); + size_t iSeg = 1; + for ( ; iSeg < flagPoints.size(); iSeg++) { + path.lineTo(flagPoints.at(iSeg) * scale); } auto qgiLead = dynamic_cast(getQGIVByName(getLeader()->getNameInDocument())); @@ -342,17 +392,17 @@ void QGIWeldSymbol::getTileFeats() void QGIWeldSymbol::removeQGITiles() { - std::vector tiles = getQGITiles(); - for (auto t: tiles) { - QList tChildren = t->childItems(); + std::vector tilesAll = getQGITiles(); + for (auto tile: tilesAll) { + QList tChildren = tile->childItems(); for (auto tc: tChildren) { - t->removeFromGroup(tc); + tile->removeFromGroup(tc); scene()->removeItem(tc); //tc gets deleted when QGIWS gets deleted } - removeFromGroup(t); - scene()->removeItem(t); - delete t; + removeFromGroup(tile); + scene()->removeItem(tile); + delete tile; } } @@ -360,8 +410,8 @@ std::vector QGIWeldSymbol::getQGITiles() const { std::vector result; QList children = childItems(); - for (auto& c:children) { - QGITile* tile = dynamic_cast(c); + for (auto& child:children) { + auto tile = dynamic_cast(child); if (tile) { result.push_back(tile); } @@ -403,10 +453,10 @@ void QGIWeldSymbol::drawBorder() void QGIWeldSymbol::setPrettyNormal() { - std::vector tiles = getQGITiles(); - for (auto t: tiles) { - t->setColor(getNormalColor()); - t->draw(); + std::vector tilesAll = getQGITiles(); + for (auto tile: tilesAll) { + tile->setColor(getNormalColor()); + tile->draw(); } setCurrentColor(getNormalColor()); m_fieldFlag->setNormalColor(getNormalColor()); @@ -419,10 +469,10 @@ void QGIWeldSymbol::setPrettyNormal() void QGIWeldSymbol::setPrettyPre() { - std::vector tiles = getQGITiles(); - for (auto t: tiles) { - t->setColor(getPreColor()); - t->draw(); + std::vector tilesAll = getQGITiles(); + for (auto tile: tilesAll) { + tile->setColor(getPreColor()); + tile->draw(); } setCurrentColor(getPreColor()); @@ -436,10 +486,10 @@ void QGIWeldSymbol::setPrettyPre() void QGIWeldSymbol::setPrettySel() { - std::vector tiles = getQGITiles(); - for (auto t: tiles) { - t->setColor(getSelectColor()); - t->draw(); + std::vector tilesAll = getQGITiles(); + for (auto tile: tilesAll) { + tile->setColor(getSelectColor()); + tile->draw(); } setCurrentColor(getSelectColor()); @@ -487,6 +537,25 @@ TechDraw::DrawLeaderLine *QGIWeldSymbol::getLeader() return dynamic_cast(feature->Leader.getValue()); } +//! get the angle for the transformed last segment +double QGIWeldSymbol::getLastSegAngle() +{ + auto lastSegDirection = getLeader()->lastSegmentDirection(); + auto lastSegAngleRad = DU::angleWithX(lastSegDirection); + return Base::toDegrees(lastSegAngleRad); +} + +std::pair QGIWeldSymbol::getLocalAxes() +{ + auto localX = getLeader()->lastSegmentDirection(); + auto localY = DU::invertY(localX); + localY.RotateZ(M_PI_2); + localY.Normalize(); + localY = DU::invertY(localY); + return {localX, localY}; +} + + //preference QColor QGIWeldSymbol::prefNormalColor() { @@ -494,7 +563,7 @@ QColor QGIWeldSymbol::prefNormalColor() return getNormalColor(); } -double QGIWeldSymbol::prefArrowSize() +double QGIWeldSymbol::prefArrowSize() const { return PreferencesGui::dimArrowSize(); } @@ -529,8 +598,8 @@ QRectF QGIWeldSymbol::customBoundingRect() const } std::vector qgTiles = getQGITiles(); - for (auto& t: qgTiles) { - QRectF childRect = mapFromItem(t, t->boundingRect()).boundingRect(); + for (auto& tile: qgTiles) { + QRectF childRect = mapFromItem(tile, tile->boundingRect()).boundingRect(); result = result.united(childRect); } return result; @@ -546,10 +615,11 @@ void QGIWeldSymbol::paint ( QPainter * painter, const QStyleOptionGraphicsItem * QStyleOptionGraphicsItem myOption(*option); myOption.state &= ~QStyle::State_Selected; -// painter->setPen(Qt::red); -// painter->drawRect(boundingRect()); //good for debugging + // painter->setPen(Qt::red); + // painter->drawRect(boundingRect()); //good for debugging QGIView::paint (painter, &myOption, widget); } + #include diff --git a/src/Mod/TechDraw/Gui/QGIWeldSymbol.h b/src/Mod/TechDraw/Gui/QGIWeldSymbol.h index 416dce384970..7370d3cec8f0 100644 --- a/src/Mod/TechDraw/Gui/QGIWeldSymbol.h +++ b/src/Mod/TechDraw/Gui/QGIWeldSymbol.h @@ -84,11 +84,14 @@ class TechDrawGuiExport QGIWeldSymbol : public QGIView QPointF getKinkPoint(); QPointF getTailPoint(); - virtual void setPrettyNormal(); - virtual void setPrettySel(); - virtual void setPrettyPre(); + void setPrettyNormal(); + void setPrettySel(); + void setPrettyPre(); void getTileFeats(); + void makeLines(); + double getLastSegAngle(); + std::pair getLocalAxes(); protected: QVariant itemChange( GraphicsItemChange change, @@ -106,10 +109,13 @@ class TechDrawGuiExport QGIWeldSymbol : public QGIView void removeQGITiles(); std::vector getQGITiles() const; - virtual QColor prefNormalColor(); - double prefArrowSize(); + QColor prefNormalColor(); + double prefArrowSize() const; double prefFontSize() const; + virtual QRectF customBoundingRect() const; + +private: TechDraw::DrawTileWeld* m_arrowFeat; TechDraw::DrawTileWeld* m_otherFeat; std::string m_arrowName; @@ -123,7 +129,6 @@ class TechDrawGuiExport QGIWeldSymbol : public QGIView bool m_blockDraw; //prevent redraws while updating. - virtual QRectF customBoundingRect() const; }; diff --git a/src/Mod/TechDraw/Gui/QGSPage.cpp b/src/Mod/TechDraw/Gui/QGSPage.cpp index af6cf78d0a0a..c8cc68ea8edb 100644 --- a/src/Mod/TechDraw/Gui/QGSPage.cpp +++ b/src/Mod/TechDraw/Gui/QGSPage.cpp @@ -175,7 +175,6 @@ Qt::KeyboardModifiers QGSPage::cleanModifierList(Qt::KeyboardModifiers mods) void QGSPage::addChildrenToPage() { - // Base::Console().Message("QGSP::addChildrenToPage()\n"); // A fresh page is added and we iterate through its collected children and add these to Canvas View -MLP // if docobj is a featureviewcollection (ex orthogroup), add its child views. if there are ever children that have children, // we'll have to make this recursive. -WF @@ -188,11 +187,11 @@ void QGSPage::addChildrenToPage() } } } - //when restoring, it is possible for a Dimension to be loaded before the ViewPart it applies to - //therefore we need to make sure parentage of the graphics representation is set properly. bit of a kludge. - setDimensionGroups(); - setBalloonGroups(); - setLeaderParentage(); + // when restoring, it is possible for an item (ex a Dimension) to be loaded before the ViewPart + // it applies to therefore we need to make sure parentage of the graphics representation is set + // properly. bit of a kludge. + // + setViewParents(); App::DocumentObject* obj = m_vpPage->getDrawPage()->Template.getValue(); auto pageTemplate(dynamic_cast(obj)); @@ -329,6 +328,8 @@ int QGSPage::addQView(QGIView* view) } view->updateView(true); + } else { + Base::Console().Message("QGSP::addQView - qview already exists\n"); } return 0; } @@ -416,7 +417,7 @@ bool QGSPage::attachView(App::DocumentObject* obj) qview = addViewBalloon(static_cast(obj)); } else if (typeId.isDerivedFrom(TechDraw::DrawViewAnnotation::getClassTypeId())) { - qview = addDrawViewAnnotation(static_cast(obj)); + qview = addAnnotation(static_cast(obj)); } else if (typeId.isDerivedFrom(TechDraw::DrawViewSymbol::getClassTypeId())) { qview = addDrawViewSymbol(static_cast(obj)); @@ -447,37 +448,85 @@ bool QGSPage::attachView(App::DocumentObject* obj) return (qview != nullptr); } + +void QGSPage::addItemToScene(QGIView* item) +{ + addItem(item); + + // Does item belong to a parent? + QGIView* parent = nullptr; + parent = findParent(item); + + if (parent) { + addItemToParent(item, parent); + } +} + +//! adds item to parent's group with position adjustments if required. +void QGSPage::addItemToParent(QGIView* item, QGIView* parent) +{ + // not every view uses the same remapping?? spreadsheets, image, RTA, anno? + // anything that was originally designed to have its position + // defined relative to the Page should not use the dimension/balloon mapping. + assert(item); + assert(parent); + // TODO: make custom user types retrievable by name (see QGIUserTypes.h) + constexpr int QGIVDimensionType {QGraphicsItem::UserType + 106}; + constexpr int QGIVBalloonType {QGraphicsItem::UserType + 140}; + constexpr int QGIWeldSymbolType {QGraphicsItem::UserType + 340}; + // constexpr int QGIViewAnnotationType {QGraphicsItem::UserType + 120}; + + if (item->type() == QGIWeldSymbolType) { + // don't touch these + return; + } + + // original parenting logic here + QPointF posRef(0., 0.); + if (item->type() == QGIVDimensionType || item->type() == QGIVBalloonType) { + QPointF mapPos = item->mapToItem(parent, posRef); + item->moveBy(-mapPos.x(), -mapPos.y()); + parent->addToGroup(item); + return; + } + + // positioning logic for objects (leader/rta/etc) that normally draw relative to the page goes + // here + // + QPointF itemPosition {item->getViewObject()->X.getValue(), // millimetres on page + -item->getViewObject()->Y.getValue()}; + parent->addToGroup(item); + item->setPos(Rez::guiX(itemPosition)); + + item->setZValue(ZVALUE::DIMENSION); +} + QGIView* QGSPage::addViewPart(TechDraw::DrawViewPart* partFeat) { - // Base::Console().Message("QGSP::addViewPart(%s)\n", partFeat->Label.getValue()); auto viewPart(new QGIViewPart); - + addItem(viewPart); viewPart->setViewPartFeature(partFeat); - - addQView(viewPart); // we need to install an event filter for any views derived from DrawViewPart viewPart->installSceneEventFilter(viewPart); + return viewPart; } QGIView* QGSPage::addViewSection(DrawViewSection* sectionFeat) { auto viewSection(new QGIViewSection); - + addItem(viewSection); viewSection->setViewPartFeature(sectionFeat); - - addQView(viewSection); viewSection->installSceneEventFilter(viewSection); + return viewSection; } QGIView* QGSPage::addProjectionGroup(TechDraw::DrawProjGroup* projGroupFeat) { - // Base::Console().Message("QGSP::addprojectionGroup(%s)\n", projGroupFeat->Label.getValue()); auto qview(new QGIProjGroup); - + addItem(qview); qview->setViewFeature(projGroupFeat); - addQView(qview); qview->installSceneEventFilter(qview); return qview; @@ -486,85 +535,72 @@ QGIView* QGSPage::addProjectionGroup(TechDraw::DrawProjGroup* projGroupFeat) QGIView* QGSPage::addDrawView(TechDraw::DrawView* view) { auto qview(new QGIView); - + addItem(qview); qview->setViewFeature(view); - addQView(qview); return qview; } QGIView* QGSPage::addDrawViewCollection(TechDraw::DrawViewCollection* collectionFeat) { auto qview(new QGIViewCollection); - + addItem(qview); qview->setViewFeature(collectionFeat); - addQView(qview); + return qview; } -QGIView* QGSPage::addDrawViewAnnotation(TechDraw::DrawViewAnnotation* annoFeat) +QGIView* QGSPage::addAnnotation(TechDraw::DrawViewAnnotation* annoFeat) { - auto qview(new QGIViewAnnotation); - - qview->setViewAnnoFeature(annoFeat); + auto annoView{new QGIViewAnnotation}; + annoView->setViewFeature(annoFeat); + annoView->setZValue(ZVALUE::ANNOTATION); + addItemToScene(annoView); - addQView(qview); - return qview; + return annoView; } QGIView* QGSPage::addDrawViewSymbol(TechDraw::DrawViewSymbol* symbolFeat) { QGIViewSymbol *symbolView = new QGIViewSymbol; symbolView->setViewFeature(symbolFeat); + addItemToScene(symbolView); - addQView(symbolView); return symbolView; } QGIView* QGSPage::addDrawViewClip(TechDraw::DrawViewClip* view) { auto qview(new QGIViewClip); - - qview->setPosition(Rez::guiX(view->X.getValue()), Rez::guiX(view->Y.getValue())); qview->setViewFeature(view); + addItemToScene(qview); + qview->setPosition(Rez::guiX(view->X.getValue()), Rez::guiX(view->Y.getValue())); - addQView(qview); return qview; } QGIView* QGSPage::addDrawViewSpreadsheet(TechDraw::DrawViewSpreadsheet* sheetFeat) { auto qview(new QGIViewSpreadsheet); - qview->setViewFeature(sheetFeat); + addItemToScene(qview); - addQView(qview); return qview; } QGIView* QGSPage::addDrawViewImage(TechDraw::DrawViewImage* imageFeat) { auto qview(new QGIViewImage); - qview->setViewFeature(imageFeat); + addItemToScene(qview); - addQView(qview); return qview; } QGIView* QGSPage::addViewBalloon(TechDraw::DrawViewBalloon* balloonFeat) { auto vBalloon(new QGIViewBalloon); - - addItem(vBalloon); - vBalloon->setViewPartFeature(balloonFeat); - - QGIView* parent = nullptr; - parent = findParent(vBalloon); - - if (parent) { - addBalloonToParent(vBalloon, parent); - } + addItemToScene(vBalloon); return vBalloon; } @@ -631,18 +667,8 @@ void QGSPage::createBalloon(QPointF origin, DrawView* parent) QGIView* QGSPage::addViewDimension(TechDraw::DrawViewDimension* dimFeat) { auto dimGroup(new QGIViewDimension); - - addItem(dimGroup); - dimGroup->setViewPartFeature(dimFeat); - - // Find if it belongs to a parent - QGIView* parent = nullptr; - parent = findParent(dimGroup); - - if (parent) { - addDimToParent(dimGroup, parent); - } + addItemToScene(dimGroup); return dimGroup; } @@ -662,16 +688,9 @@ void QGSPage::addDimToParent(QGIViewDimension* dim, QGIView* parent) QGIView* QGSPage::addViewLeader(TechDraw::DrawLeaderLine* leaderFeat) { QGILeaderLine *leaderItem = new QGILeaderLine; - addItem(leaderItem); leaderItem->setViewFeature(leaderFeat); + addItemToScene(leaderItem); - // Find if it belongs to a parent - QGIView* parent = nullptr; - parent = findParent(leaderItem); - - if (parent) { - addLeaderToParent(leaderItem, parent); - } return leaderItem; } @@ -693,67 +712,67 @@ void QGSPage::addLeaderToParent(QGILeaderLine* leader, QGIView* parent) QGIView* QGSPage::addRichAnno(TechDraw::DrawRichAnno* richFeat) { - QGIRichAnno *richView = new QGIRichAnno; + auto richView = new QGIRichAnno; richView->setViewFeature(richFeat); + addItemToScene(richView); + + // Find if it belongs to a parent + QGIView* parent = nullptr; + parent = findParent(richView); + + if (parent) { + addRichAnnoToParent(richView, parent); + } - addQView(richView); return richView; } + +void QGSPage::addRichAnnoToParent(QGIRichAnno* anno, QGIView* parent) +{ + assert(anno); + assert(parent);//blow up if we don't have Anno or Parent + QPointF posRef(0., 0.); + QPointF parentOrigin = anno->mapToItem(parent, posRef); + // this is not right for a DPGI? Needs the usual calculation?? + QPointF annoPositionInParent{ anno->getViewObject()->X.getValue(), + anno->getViewObject()->Y.getValue()}; + QPointF moveToPosition = parentOrigin + annoPositionInParent; + anno->moveBy(-moveToPosition.x(), -moveToPosition.y()); + parent->addToGroup(anno); + anno->setZValue(ZVALUE::DIMENSION); +} + +// ?? why does this not get parented to its leader here?? +// the taskdialog sets the Leader property in the weld feature. +// the weld symbol draws itself based on the leader's geometry, but is not added to the leader's +// group(?why?) QGIView* QGSPage::addWeldSymbol(TechDraw::DrawWeldSymbol* weldFeat) { QGIWeldSymbol *weldView = new QGIWeldSymbol; weldView->setViewFeature(weldFeat); + addItem(weldView); - addQView(weldView); return weldView; } -void QGSPage::setDimensionGroups() -{ - const std::vector& allItems = getViews(); - int dimItemType = QGraphicsItem::UserType + 106; - - for (auto& item : allItems) { - if (item->type() == dimItemType && !item->group()) { - QGIView* parent = findParent(item); - if (parent) { - QGIViewDimension* dim = dynamic_cast(item); - addDimToParent(dim, parent); - } - } - } -} -void QGSPage::setBalloonGroups() +//! ensure that all QGIViews are parented correctly in the scene +void QGSPage::setViewParents() { const std::vector& allItems = getViews(); - int balloonItemType = QGraphicsItem::UserType + 140; for (auto& item : allItems) { - if (item->type() == balloonItemType && !item->group()) { - QGIView* parent = findParent(item); - if (parent) { - QGIViewBalloon* balloon = dynamic_cast(item); - addBalloonToParent(balloon, parent); - } + if (item->group()) { + // this item already has a parent in the scene. probably should check if it is the + // correct parent + continue; } - } -} - -//! ensure that all Leader QGItems are parented correctly -void QGSPage::setLeaderParentage() -{ - const std::vector& allItems = getViews(); - int LeaderItemType = QGraphicsItem::UserType + 232; - for (auto& item : allItems) { - if (item->type() == LeaderItemType && !item->group()) { - QGIView* parent = findParent(item); - if (parent) { - QGILeaderLine* leader = dynamic_cast(item); - addLeaderToParent(leader, parent); - } + QGIView* parent = findParent(item); + if (parent) { + // item has a parent, so make sure it belongs to parent's group + addItemToParent(item, parent); } } } @@ -792,7 +811,6 @@ QGIView* QGSPage::getQGIVByName(std::string name) const //find the parent of a QGIV based on the corresponding feature's parentage QGIView* QGSPage::findParent(QGIView* view) const { - // Base::Console().Message("QGSP::findParent(%s)\n", view->getViewName()); const std::vector qviews = getViews(); TechDraw::DrawView* myFeat = view->getViewObject(); diff --git a/src/Mod/TechDraw/Gui/QGSPage.h b/src/Mod/TechDraw/Gui/QGSPage.h index b811e6ff1794..294fd8431dda 100644 --- a/src/Mod/TechDraw/Gui/QGSPage.h +++ b/src/Mod/TechDraw/Gui/QGSPage.h @@ -67,6 +67,7 @@ class ViewProviderPage; class QGIViewBalloon; class QGITile; class QGILeaderLine; +class QGIRichAnno; class TechDrawGuiExport QGSPage: public QGraphicsScene { @@ -85,7 +86,7 @@ class TechDrawGuiExport QGSPage: public QGraphicsScene QGIView* addViewSection(TechDraw::DrawViewSection* sectionFeat); QGIView* addDrawView(TechDraw::DrawView* viewFeat); QGIView* addDrawViewCollection(TechDraw::DrawViewCollection* collectionFeat); - QGIView* addDrawViewAnnotation(TechDraw::DrawViewAnnotation* annoFeat); + QGIView* addAnnotation(TechDraw::DrawViewAnnotation* annoFeat); QGIView* addDrawViewSymbol(TechDraw::DrawViewSymbol* symbolFeat); QGIView* addDrawViewClip(TechDraw::DrawViewClip* clipFeat); QGIView* addDrawViewSpreadsheet(TechDraw::DrawViewSpreadsheet* sheetFeat); @@ -112,6 +113,10 @@ class TechDrawGuiExport QGSPage: public QGraphicsScene void addDimToParent(QGIViewDimension* dim, QGIView* parent); void addLeaderToParent(QGILeaderLine* leader, QGIView* parent); + void addRichAnnoToParent(QGIRichAnno* anno, QGIView* parent); + + void addItemToScene(QGIView* item); + void addItemToParent(QGIView* item, QGIView* parent); std::vector getViews() const; @@ -143,9 +148,7 @@ class TechDrawGuiExport QGSPage: public QGraphicsScene void postProcessXml(QTemporaryFile& temporaryFile, QString filename, QString pagename); // scene parentage fixups - void setDimensionGroups(); - void setBalloonGroups(); - void setLeaderParentage(); + void setViewParents(); static bool itemClearsSelection(int itemTypeIn); static Qt::KeyboardModifiers cleanModifierList(Qt::KeyboardModifiers mods); diff --git a/src/Mod/TechDraw/Gui/Resources/fonts/osifont.license b/src/Mod/TechDraw/Gui/Resources/fonts/osifont.license index 0ad149ca7d21..b04111e27596 100644 --- a/src/Mod/TechDraw/Gui/Resources/fonts/osifont.license +++ b/src/Mod/TechDraw/Gui/Resources/fonts/osifont.license @@ -1,8 +1,8 @@ -osifont license: +osifont license: -osifont-lgpl3fe.ttf is used under one or more of the following licenses: -- GNU GPL licence version 3 with GPL font exception, -- GNU GPL licence version 2 with GPL font exception, +osifont-lgpl3fe.ttf is used under one or more of the following licenses: +- GNU GPL licence version 3 with GPL font exception, +- GNU GPL licence version 2 with GPL font exception, - GNU LGPL licence version 3 with GPL font exception. diff --git a/src/Mod/TechDraw/Gui/TaskLeaderLine.cpp b/src/Mod/TechDraw/Gui/TaskLeaderLine.cpp index 9926606c1e37..d864feb4d208 100644 --- a/src/Mod/TechDraw/Gui/TaskLeaderLine.cpp +++ b/src/Mod/TechDraw/Gui/TaskLeaderLine.cpp @@ -215,7 +215,6 @@ void TaskLeaderLine::changeEvent(QEvent *event) void TaskLeaderLine::setUiPrimary() { -// Base::Console().Message("TTL::setUiPrimary()\n"); enableVPUi(true); setWindowTitle(QObject::tr("New Leader Line")); @@ -258,7 +257,6 @@ void TaskLeaderLine::enableVPUi(bool enable) void TaskLeaderLine::setUiEdit() { -// Base::Console().Message("TTL::setUiEdit()\n"); enableVPUi(true); setWindowTitle(QObject::tr("Edit Leader Line")); @@ -380,16 +378,14 @@ void TaskLeaderLine::createLeaderFeature(std::vector sceneDeltas std::vector pageDeltas; // convert deltas to mm. leader points are stored inverted, so we do not convert to conventional Y axis for (auto& delta : sceneDeltas) { - Base::Vector3d deltaInPageCoords = DGU::fromSceneCoords(delta, false); + Base::Vector3d deltaInPageCoords = Rez::appX(delta); pageDeltas.push_back(deltaInPageCoords); } -// should just do this in place. - if (m_lineFeat->AutoHorizontal.getValue()) { - pageDeltas = DrawLeaderLine::horizLastSegment(pageDeltas); - } - // convert to unscaled, unrotated but inverted - auto temp = m_lineFeat->makeCanonicalPointsInverted(pageDeltas); + // already unrotated, now convert to unscaled, but inverted + bool doScale{true}; + bool doRotate{false}; + auto temp = m_lineFeat->makeCanonicalPointsInverted(pageDeltas, doScale, doRotate); m_lineFeat->WayPoints.setValues(temp); } commonFeatureUpdate(); @@ -491,8 +487,6 @@ void TaskLeaderLine::removeFeature() void TaskLeaderLine::onTrackerClicked(bool clicked) { Q_UNUSED(clicked); -// Base::Console().Message("TTL::onTrackerClicked() m_pbTrackerState: %d\n", -// m_pbTrackerState); if (!m_vpp->getMDIViewPage()) { Base::Console().Message("TLL::onTrackerClicked - no Mdi, no Tracker!\n"); return; @@ -714,7 +708,7 @@ QGIView* TaskLeaderLine::findParentQGIV() return vpdv->getQView();; } -void TaskLeaderLine::setEditCursor(QCursor cursor) +void TaskLeaderLine::setEditCursor(const QCursor &cursor) { if (!m_vpp->getQGSPage()) { return; @@ -725,15 +719,29 @@ void TaskLeaderLine::setEditCursor(QCursor cursor) } } -//from scene QPointF to zero origin (delta from p0) Vector3d points +// from scene QPointF to zero origin (delta from p0) Vector3d points std::vector TaskLeaderLine::scenePointsToDeltas(std::vector scenePoints) { -// Base::Console().Message("TTL::scenePointsToDeltas(%d)\n", pts.size()); + if (scenePoints.empty()) { + return {}; + } + std::vector result; + auto frontPoint = DU::toVector3d(m_qgParent->mapFromScene(scenePoints.front())); result.reserve(scenePoints.size()); for (auto& point: scenePoints) { - QPointF delta = point - scenePoints.front(); - result.push_back(DU::toVector3d(delta)); + auto viewPoint = m_qgParent->mapFromScene(point); + auto vPoint = DU::toVector3d(viewPoint); + auto delta = vPoint - frontPoint; + auto rotationDeg = m_baseFeat->Rotation.getValue(); + auto deltaUnrotated{delta}; + if (rotationDeg != 0) { + deltaUnrotated = DU::invertY(deltaUnrotated); + deltaUnrotated.RotateZ(-Base::toRadians(rotationDeg)); + deltaUnrotated = DU::invertY(deltaUnrotated); + } + + result.push_back(deltaUnrotated); } return result; } diff --git a/src/Mod/TechDraw/Gui/TaskLeaderLine.h b/src/Mod/TechDraw/Gui/TaskLeaderLine.h index 156a56369778..d5b412246590 100644 --- a/src/Mod/TechDraw/Gui/TaskLeaderLine.h +++ b/src/Mod/TechDraw/Gui/TaskLeaderLine.h @@ -91,7 +91,7 @@ public Q_SLOTS: void setUiPrimary(); void setUiEdit(); void enableVPUi(bool enable); - void setEditCursor(QCursor cursor); + void setEditCursor(const QCursor& cursor); QGIView* findParentQGIV(); diff --git a/src/Mod/TechDraw/Gui/TaskSectionView.cpp b/src/Mod/TechDraw/Gui/TaskSectionView.cpp index 62e566008a26..6fc54b7c161d 100644 --- a/src/Mod/TechDraw/Gui/TaskSectionView.cpp +++ b/src/Mod/TechDraw/Gui/TaskSectionView.cpp @@ -65,7 +65,8 @@ TaskSectionView::TaskSectionView(TechDraw::DrawViewPart* base) : m_applyDeferred(0), m_directionIsSet(false), m_modelIsDirty(false), - m_scaleEdited(false) + m_scaleEdited(false), + m_directionChanged(false) { //existence of base is guaranteed by CmdTechDrawSectionView (Command.cpp) @@ -94,7 +95,8 @@ TaskSectionView::TaskSectionView(TechDraw::DrawViewSection* section) : m_applyDeferred(0), m_directionIsSet(true), m_modelIsDirty(false), - m_scaleEdited(false) + m_scaleEdited(false), + m_directionChanged(false) { //existence of section is guaranteed by ViewProviderViewSection.setEdit @@ -122,7 +124,6 @@ TaskSectionView::TaskSectionView(TechDraw::DrawViewSection* section) : void TaskSectionView::setUiPrimary() { - // Base::Console().Message("TSV::setUiPrimary()\n"); setWindowTitle(QObject::tr("Create Section View")); // note DPGI will have a custom scale type and scale = 1.0. In this case, @@ -155,7 +156,6 @@ void TaskSectionView::setUiPrimary() void TaskSectionView::setUiEdit() { - // Base::Console().Message("TSV::setUiEdit()\n"); setWindowTitle(QObject::tr("Edit Section View")); std::string temp = m_section->SectionSymbol.getValue(); QString qTemp = QString::fromStdString(temp); @@ -238,7 +238,6 @@ void TaskSectionView::setUiCommon(Base::Vector3d origin) //save the start conditions void TaskSectionView::saveSectionState() { - // Base::Console().Message("TSV::saveSectionState()\n"); if (m_section) { m_saveSymbol = m_section->SectionSymbol.getValue(); m_saveScale = m_section->getScale(); @@ -255,7 +254,6 @@ void TaskSectionView::saveSectionState() //restore the start conditions void TaskSectionView::restoreSectionState() { - // Base::Console().Message("TSV::restoreSectionState()\n"); if (!m_section) return; @@ -271,63 +269,62 @@ void TaskSectionView::restoreSectionState() //the VectorEditWidget reports a change in direction void TaskSectionView::slotViewDirectionChanged(Base::Vector3d newDirection) { - // Base::Console().Message("TSV::slotViewDirectionChanged(%s)\n", - // DrawUtil::formatVector(newDirection).c_str()); Base::Vector3d projectedViewDirection = m_base->projectPoint(newDirection, false); projectedViewDirection.Normalize(); double viewAngle = atan2(projectedViewDirection.y, projectedViewDirection.x); m_compass->setDialAngle(viewAngle * 180.0 / M_PI); checkAll(false); + directionChanged(true); applyAligned(); } //the CompassWidget reports that the view direction angle has changed void TaskSectionView::slotChangeAngle(double newAngle) { - // Base::Console().Message("TSV::slotChangeAngle(%.3f)\n", newAngle); double angleRadians = newAngle * M_PI / 180.0; double unitX = cos(angleRadians); double unitY = sin(angleRadians); Base::Vector3d localUnit(unitX, unitY, 0.0); m_viewDirectionWidget->setValueNoNotify(localUnit); checkAll(false); + directionChanged(true); applyAligned(); } //preset view directions void TaskSectionView::onUpClicked() { - // Base::Console().Message("TSV::onUpClicked()\n"); checkAll(false); m_compass->setToNorth(); m_viewDirectionWidget->setValueNoNotify(Base::Vector3d(0.0, 1.0, 0.0)); + directionChanged(true); applyAligned(); } void TaskSectionView::onDownClicked() { - // Base::Console().Message("TSV::onDownClicked()\n"); checkAll(false); m_compass->setToSouth(); m_viewDirectionWidget->setValueNoNotify(Base::Vector3d(0.0, -1.0, 0.0)); + directionChanged(true); applyAligned(); } void TaskSectionView::onLeftClicked() { - // Base::Console().Message("TSV::onLeftClicked()\n"); checkAll(false); m_compass->setToWest(); m_viewDirectionWidget->setValueNoNotify(Base::Vector3d(-1.0, 0.0, 0.0)); + directionChanged(true); applyAligned(); } void TaskSectionView::onRightClicked() { - // Base::Console().Message("TSV::onRightClicked()\n"); checkAll(false); m_compass->setToEast(); m_viewDirectionWidget->setValueNoNotify(Base::Vector3d(1.0, 0.0, 0.0)); + directionChanged(true); applyAligned(); } @@ -425,8 +422,6 @@ void TaskSectionView::updateNowClicked() { apply(true); } //****************************************************************************** bool TaskSectionView::apply(bool forceUpdate) { -// Base::Console().Message("TSV::apply() - liveUpdate: %d force: %d deferred: %d\n", -// ui->cbLiveUpdate->isChecked(), forceUpdate, m_applyDeferred); if (!ui->cbLiveUpdate->isChecked() && !forceUpdate) { //nothing to do m_applyDeferred++; @@ -471,7 +466,6 @@ bool TaskSectionView::apply(bool forceUpdate) void TaskSectionView::applyQuick(std::string dir) { - // Base::Console().Message("TSV::applyQuick(%s)\n", dir.c_str()); m_dirName = dir; enableAll(true); apply(); @@ -479,7 +473,6 @@ void TaskSectionView::applyQuick(std::string dir) void TaskSectionView::applyAligned() { - // Base::Console().Message("TSV::applyAligned()\n"); m_dirName = "Aligned"; enableAll(true); m_directionIsSet = true; @@ -492,7 +485,6 @@ void TaskSectionView::applyAligned() TechDraw::DrawViewSection* TaskSectionView::createSectionView(void) { - // Base::Console().Message("TSV::createSectionView()\n"); if (!isBaseValid()) { failNoObject(); return nullptr; @@ -564,7 +556,6 @@ TechDraw::DrawViewSection* TaskSectionView::createSectionView(void) double rotation = requiredRotation(viewDirectionAngle); Command::doCommand(Command::Doc, "App.ActiveDocument.%s.Rotation = %.6f", m_sectionName.c_str(), rotation); - } Gui::Command::commitCommand(); return m_section; @@ -572,7 +563,6 @@ TechDraw::DrawViewSection* TaskSectionView::createSectionView(void) void TaskSectionView::updateSectionView() { - // Base::Console().Message("TSV::updateSectionView() - m_sectionName: %s\n", m_sectionName.c_str()); if (!isSectionValid()) { failNoObject(); return; @@ -620,11 +610,15 @@ void TaskSectionView::updateSectionView() //Note: DirectionName is to be deprecated in the future m_section->setCSFromBase(m_dirName.c_str()); } + //auto orientation of view relative to base view - double viewDirectionAngle = m_compass->positiveValue(); - double rotation = requiredRotation(viewDirectionAngle); - Command::doCommand(Command::Doc, "App.ActiveDocument.%s.Rotation = %.6f", - m_sectionName.c_str(), rotation); + if (directionChanged()) { + double viewDirectionAngle = m_compass->positiveValue(); + double rotation = requiredRotation(viewDirectionAngle); + Command::doCommand(Command::Doc, "App.ActiveDocument.%s.Rotation = %.6f", + m_sectionName.c_str(), rotation); + directionChanged(false); + } } Gui::Command::commitCommand(); } @@ -687,7 +681,6 @@ double TaskSectionView::requiredRotation(double inputAngle) bool TaskSectionView::accept() { - // Base::Console().Message("TSV::accept()\n"); apply(true); Gui::Command::doCommand(Gui::Command::Gui, "Gui.ActiveDocument.resetEdit()"); return true; @@ -695,7 +688,6 @@ bool TaskSectionView::accept() bool TaskSectionView::reject() { - // Base::Console().Message("TSV::reject()\n"); if (!m_section) {//no section created, nothing to undo Gui::Command::doCommand(Gui::Command::Gui, "Gui.ActiveDocument.resetEdit()"); return false; diff --git a/src/Mod/TechDraw/Gui/TaskSectionView.h b/src/Mod/TechDraw/Gui/TaskSectionView.h index 989100e7e615..29163eb8de23 100644 --- a/src/Mod/TechDraw/Gui/TaskSectionView.h +++ b/src/Mod/TechDraw/Gui/TaskSectionView.h @@ -95,6 +95,8 @@ protected Q_SLOTS: private: double requiredRotation(double inputAngle); std::string makeSectionLabel(QString symbol); + bool directionChanged() const { return m_directionChanged; } + void directionChanged(bool newState) { m_directionChanged = newState; } std::unique_ptr ui; TechDraw::DrawViewPart* m_base; @@ -130,6 +132,7 @@ protected Q_SLOTS: bool m_modelIsDirty; bool m_scaleEdited; + bool m_directionChanged{false}; }; class TaskDlgSectionView : public Gui::TaskView::TaskDialog diff --git a/src/Mod/TechDraw/Gui/TemplateTextField.cpp b/src/Mod/TechDraw/Gui/TemplateTextField.cpp index b0327184a28f..dd22a4986323 100644 --- a/src/Mod/TechDraw/Gui/TemplateTextField.cpp +++ b/src/Mod/TechDraw/Gui/TemplateTextField.cpp @@ -77,14 +77,21 @@ void TemplateTextField::mouseReleaseEvent(QGraphicsSceneMouseEvent *event) ui.setFieldName(fieldNameStr); ui.setFieldContent(tmplte->EditableTexts[fieldNameStr]); + + auto qName = QString::fromStdString(fieldNameStr); + auto svgTemplate = dynamic_cast(tmplte); + if (svgTemplate) { + // preset the autofill with the current value - something might have changed since this field was created + m_autofillString = svgTemplate->getAutofillByEditableName(qName); + } ui.setAutofillContent(m_autofillString.toStdString()); if (ui.exec() == QDialog::Accepted) { QString qsClean = ui.getFieldContent(); std::string utf8Content = qsClean.toUtf8().constData(); if (ui.getAutofillState()) { - auto svgTemplate = dynamic_cast(tmplte); if (svgTemplate) { + // unlikely, but something could have changed since we grabbed the autofill value QString fieldName = QString::fromStdString(fieldNameStr); QString autofillValue = svgTemplate->getAutofillByEditableName(fieldName); if (!autofillValue.isEmpty()) { diff --git a/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp b/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp index bcd22e56508a..0471fed01b17 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp @@ -40,6 +40,8 @@ #include #include +#include +#include #include "PreferencesGui.h" #include "ZVALUE.h" @@ -72,9 +74,6 @@ ViewProviderBalloon::ViewProviderBalloon() StackOrder.setValue(ZVALUE::DIMENSION); } -ViewProviderBalloon::~ViewProviderBalloon() -{ -} bool ViewProviderBalloon::doubleClicked() { @@ -84,7 +83,7 @@ bool ViewProviderBalloon::doubleClicked() void ViewProviderBalloon::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) { - Gui::ActionFunction* func = new Gui::ActionFunction(menu); + auto* func = new Gui::ActionFunction(menu); QAction* act = menu->addAction(QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue()))); act->setData(QVariant((int)ViewProvider::Default)); func->trigger(act, [this]() { @@ -111,12 +110,12 @@ bool ViewProviderBalloon::setEdit(int ModNum) return true; } -void ViewProviderBalloon::updateData(const App::Property* p) +void ViewProviderBalloon::updateData(const App::Property* prop) { //Balloon handles X, Y updates differently that other QGIView //call QGIViewBalloon::updateView - if (p == &(getViewObject()->X) || - p == &(getViewObject()->Y) ){ + if (prop == &(getViewObject()->X) || + prop == &(getViewObject()->Y) ){ QGIView* qgiv = getQView(); if (qgiv) { qgiv->updateView(true); @@ -124,22 +123,22 @@ void ViewProviderBalloon::updateData(const App::Property* p) } //Skip QGIView X, Y processing - do not call ViewProviderDrawingView - Gui::ViewProviderDocumentObject::updateData(p); + Gui::ViewProviderDocumentObject::updateData(prop); } -void ViewProviderBalloon::onChanged(const App::Property* p) +void ViewProviderBalloon::onChanged(const App::Property* prop) { - if ((p == &Font) || - (p == &Fontsize) || - (p == &Color) || - (p == &LineWidth) || - (p == &LineVisible)) { + if ((prop == &Font) || + (prop == &Fontsize) || + (prop == &Color) || + (prop == &LineWidth) || + (prop == &LineVisible)) { QGIView* qgiv = getQView(); if (qgiv) { qgiv->updateView(true); } } - Gui::ViewProviderDocumentObject::onChanged(p); + Gui::ViewProviderDocumentObject::onChanged(prop); } TechDraw::DrawViewBalloon* ViewProviderBalloon::getViewObject() const @@ -189,3 +188,24 @@ bool ViewProviderBalloon::onDelete(const std::vector & parms) } return true; } + +std::vector ViewProviderBalloon::claimChildren() const +{ + // What can reasonably have a Balloon as a parent? A leader? a bit unconventional, but not forbidden. + // A RichAnno? Maybe? Another Balloon? Maybe? + + std::vector temp; + const std::vector& candidates = getViewObject()->getInList(); + for (auto& obj : candidates) { + if (obj->isDerivedFrom() || + obj->isDerivedFrom() || + obj->isDerivedFrom() ) { + temp.push_back(obj); + } + } + return temp; +} + + + + diff --git a/src/Mod/TechDraw/Gui/ViewProviderBalloon.h b/src/Mod/TechDraw/Gui/ViewProviderBalloon.h index 5499cedb6268..d0d8e86d84cc 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderBalloon.h +++ b/src/Mod/TechDraw/Gui/ViewProviderBalloon.h @@ -44,7 +44,7 @@ class TechDrawGuiExport ViewProviderBalloon : public ViewProviderDrawingView /// constructor ViewProviderBalloon(); /// destructor - ~ViewProviderBalloon() override; + ~ViewProviderBalloon() override = default; App::PropertyFont Font; App::PropertyLength Fontsize; @@ -53,9 +53,9 @@ class TechDrawGuiExport ViewProviderBalloon : public ViewProviderDrawingView App::PropertyColor Color; bool useNewSelectionModel() const override {return false;} - void updateData(const App::Property*) override; - void onChanged(const App::Property* p) override; - void setupContextMenu(QMenu*, QObject*, const char*) override; + void updateData(const App::Property* prop) override; + void onChanged(const App::Property* prop) override; + void setupContextMenu(QMenu* menu, QObject* receiver, const char* member) override; bool setEdit(int ModNum) override; bool doubleClicked() override; bool canDelete(App::DocumentObject* obj) const override; @@ -63,6 +63,8 @@ class TechDrawGuiExport ViewProviderBalloon : public ViewProviderDrawingView TechDraw::DrawViewBalloon* getViewObject() const override; + std::vector claimChildren() const override; + protected: void handleChangedPropertyType(Base::XMLReader &reader, const char *TypeName, App::Property * prop) override; }; diff --git a/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp b/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp index 2f4562640d51..eb6b0f2a52a6 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderDimension.cpp @@ -41,6 +41,10 @@ #include #include +#include +#include +#include + #include "PreferencesGui.h" #include "ZVALUE.h" @@ -98,9 +102,6 @@ ViewProviderDimension::ViewProviderDimension() StackOrder.setValue(ZVALUE::DIMENSION); } -ViewProviderDimension::~ViewProviderDimension() -{ -} void ViewProviderDimension::attach(App::DocumentObject *pcFeat) { @@ -122,7 +123,7 @@ bool ViewProviderDimension::doubleClicked() void ViewProviderDimension::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) { - Gui::ActionFunction* func = new Gui::ActionFunction(menu); + auto* func = new Gui::ActionFunction(menu); QAction* act = menu->addAction(QObject::tr("Edit %1").arg(QString::fromUtf8(getObject()->Label.getValue()))); act->setData(QVariant((int)ViewProvider::Default)); func->trigger(act, [this](){ @@ -201,34 +202,34 @@ void ViewProviderDimension::setPixmapForType() } } -void ViewProviderDimension::onChanged(const App::Property* p) +void ViewProviderDimension::onChanged(const App::Property* prop) { - if ((p == &Font) || - (p == &Fontsize) || - (p == &Arrowsize) || - (p == &LineWidth) || - (p == &StandardAndStyle) || - (p == &RenderingExtent) || - (p == &FlipArrowheads) || - (p == &GapFactorASME) || - (p == &GapFactorISO) || - p == &LineSpacingFactorISO) { - QGIView* qgiv = getQView(); + if ((prop == &Font) || + (prop == &Fontsize) || + (prop == &Arrowsize) || + (prop == &LineWidth) || + (prop == &StandardAndStyle) || + (prop == &RenderingExtent) || + (prop == &FlipArrowheads) || + (prop == &GapFactorASME) || + (prop == &GapFactorISO) || + prop == &LineSpacingFactorISO) { + auto* qgiv = getQView(); if (qgiv) { qgiv->updateView(true); } } - if (p == &Color) { - QGIView* qgiv = getQView(); + if (prop == &Color) { + auto* qgiv = getQView(); if (qgiv) { - QGIViewDimension* qgivd = dynamic_cast(qgiv); + auto* qgivd = dynamic_cast(qgiv); if (qgivd) { qgivd->setNormalColorAll(); } } } - ViewProviderDrawingView::onChanged(p); + ViewProviderDrawingView::onChanged(prop); } TechDraw::DrawViewDimension* ViewProviderDimension::getViewObject() const @@ -292,7 +293,6 @@ bool ViewProviderDimension::canDelete(App::DocumentObject *obj) const bool ViewProviderDimension::onDelete(const std::vector & parms) { Q_UNUSED(parms) -// Base::Console().Message("VPB::onDelete() - parms: %d\n", parms.size()); auto dlg = Gui::Control().activeDialog(); auto ourDlg = dynamic_cast(dlg); if (ourDlg) { @@ -308,3 +308,23 @@ bool ViewProviderDimension::onDelete(const std::vector & parms) return true; } + +std::vector ViewProviderDimension::claimChildren() const +{ + // What can reasonably have a Dimension as a parent? A leader? a bit unconventional, but not forbidden. + // A RichAnno? Maybe? Balloons? This is a bit of a corner case. Typically, a + // Dimension would belong to something rather than owning something. + // Pages will appear in the inList, but should not be treated as a child of the dimension! + + std::vector temp; + const std::vector& candidates = getViewObject()->getInList(); + for (auto& obj : candidates) { + if (obj->isDerivedFrom() || + obj->isDerivedFrom() || + obj->isDerivedFrom() ) { + temp.push_back(obj); + } + } + return temp; +} + diff --git a/src/Mod/TechDraw/Gui/ViewProviderDimension.h b/src/Mod/TechDraw/Gui/ViewProviderDimension.h index d385d66b7983..04213422f946 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderDimension.h +++ b/src/Mod/TechDraw/Gui/ViewProviderDimension.h @@ -41,7 +41,7 @@ class TechDrawGuiExport ViewProviderDimension : public ViewProviderDrawingView /// constructor ViewProviderDimension(); /// destructor - ~ViewProviderDimension() override; + ~ViewProviderDimension() override = default; App::PropertyFont Font; App::PropertyLength Fontsize; @@ -90,6 +90,9 @@ class TechDrawGuiExport ViewProviderDimension : public ViewProviderDrawingView bool canDelete(App::DocumentObject* obj) const override; void setPixmapForType(); + std::vector claimChildren() const override; + + protected: void handleChangedPropertyType(Base::XMLReader &reader, const char *TypeName, App::Property * prop) override; diff --git a/src/Mod/TechDraw/Gui/ViewProviderLeader.cpp b/src/Mod/TechDraw/Gui/ViewProviderLeader.cpp index 28de10104c47..79fee565eb37 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderLeader.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderLeader.cpp @@ -100,18 +100,18 @@ bool ViewProviderLeader::doubleClicked() return true; } -void ViewProviderLeader::onChanged(const App::Property* p) +void ViewProviderLeader::onChanged(const App::Property* prop) { - if ((p == &Color) || - (p == &LineWidth) || - (p == &LineStyle) || - (p == &UseOldCoords)) { - QGIView* qgiv = getQView(); + if ((prop == &Color) || + (prop == &LineWidth) || + (prop == &LineStyle) || + (prop == &UseOldCoords)) { + auto* qgiv = getQView(); if (qgiv) { qgiv->updateView(true); } } - ViewProviderDrawingView::onChanged(p); + ViewProviderDrawingView::onChanged(prop); } std::vector ViewProviderLeader::claimChildren() const diff --git a/src/Mod/TechDraw/Gui/ViewProviderProjGroup.cpp b/src/Mod/TechDraw/Gui/ViewProviderProjGroup.cpp index 37b115312872..bf9494581618 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderProjGroup.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderProjGroup.cpp @@ -35,7 +35,9 @@ #include #include +#include #include +#include #include #include #include @@ -55,16 +57,6 @@ ViewProviderProjGroup::ViewProviderProjGroup() sPixmap = "TechDraw_TreeProjGroup"; } -ViewProviderProjGroup::~ViewProviderProjGroup() -{ -} - -void ViewProviderProjGroup::setupContextMenu(QMenu* menu, QObject* receiver, const char* member) -{ - Q_UNUSED(menu); - Q_UNUSED(receiver); - Q_UNUSED(member); -} bool ViewProviderProjGroup::setEdit(int ModNum) { @@ -72,10 +64,11 @@ bool ViewProviderProjGroup::setEdit(int ModNum) // When double-clicking on the item for this sketch the // object unsets and sets its edit mode without closing // the task panel - Gui::TaskView::TaskDialog *dlg = Gui::Control().activeDialog(); - TaskDlgProjGroup *projDlg = qobject_cast(dlg); - if (projDlg && projDlg->getViewProvider() != this) + auto* dlg = Gui::Control().activeDialog(); + auto* projDlg = qobject_cast(dlg); + if (projDlg && projDlg->getViewProvider() != this) { projDlg = nullptr; // another sketch left open its task panel + } // clear the selection (convenience) Gui::Selection().clearSelection(); @@ -97,8 +90,9 @@ bool ViewProviderProjGroup::doubleClicked() return true; } -bool ViewProviderProjGroup::onDelete(const std::vector &) +bool ViewProviderProjGroup::onDelete(const std::vector & parms) { + Q_UNUSED(parms) // warn the user if the ProjGroup is not empty QString bodyMessage; @@ -142,8 +136,9 @@ bool ViewProviderProjGroup::onDelete(const std::vector &) bodyMessageStream << qApp->translate("Std_Delete", "The group cannot be deleted because its items have the following\nsection or detail views, or leader lines that would get broken:"); bodyMessageStream << '\n'; - for (const auto& ListIterator : ViewList) + for (const auto& ListIterator : ViewList) { bodyMessageStream << '\n' << QString::fromUtf8(ListIterator.c_str()); + } QMessageBox::warning(Gui::getMainWindow(), qApp->translate("Std_Delete", "Object dependencies"), bodyMessage, QMessageBox::Ok); @@ -156,20 +151,17 @@ bool ViewProviderProjGroup::onDelete(const std::vector &) bodyMessageStream << qApp->translate("Std_Delete", "The projection group is not empty, therefore\nthe following referencing objects might be lost:"); bodyMessageStream << '\n'; - for (auto ObjIterator : objs) + for (auto ObjIterator : objs) { bodyMessageStream << '\n' << QString::fromUtf8(ObjIterator->Label.getValue()); + } bodyMessageStream << "\n\n" << QObject::tr("Are you sure you want to continue?"); // show and evaluate dialog int DialogResult = QMessageBox::warning(Gui::getMainWindow(), qApp->translate("Std_Delete", "Object dependencies"), bodyMessage, QMessageBox::Yes, QMessageBox::No); - if (DialogResult == QMessageBox::Yes) - return true; - else - return false; + return (DialogResult == QMessageBox::Yes); } - else - return true; + return true; } bool ViewProviderProjGroup::canDelete(App::DocumentObject *obj) const @@ -183,17 +175,36 @@ bool ViewProviderProjGroup::canDelete(App::DocumentObject *obj) const std::vector ViewProviderProjGroup::claimChildren() const { - // Collect any child fields + // Collect any child Document Objects and put them in the right place in the Feature tree + // valid children of an ProjGroup are: + // - Balloons + // - Leaders + // - RichAnno std::vector temp; + const std::vector& candidates = getViewObject()->getInList(); + // DPGI's do not point at the DPG, the DPG/DVC maintains links to the items + + // why does this need a try/catch?? try { - for (auto* view : getObject()->Views.getValues()) { - temp.push_back(view); - } - return temp; - } catch (...) { - std::vector tmp; - return tmp; + for (auto& obj : candidates) { + if (obj->isDerivedFrom() || + obj->isDerivedFrom() || + obj->isDerivedFrom()) { + temp.push_back(obj); + } + } +// return temp; } + catch (...) { + return {}; + } + + // plus the individual ProjGroupItems + for (auto& view : getViewObject()->Views.getValues()) { + temp.push_back(view); + } + + return temp; } TechDraw::DrawProjGroup* ViewProviderProjGroup::getViewObject() const diff --git a/src/Mod/TechDraw/Gui/ViewProviderProjGroup.h b/src/Mod/TechDraw/Gui/ViewProviderProjGroup.h index 182c94521f27..2495cb1e83d1 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderProjGroup.h +++ b/src/Mod/TechDraw/Gui/ViewProviderProjGroup.h @@ -22,8 +22,8 @@ #ifndef DRAWINGGUI_VIEWPROVIDERVIEWGROUP_H #define DRAWINGGUI_VIEWPROVIDERVIEWGROUP_H - -#include + +#include #include @@ -39,20 +39,19 @@ class TechDrawGuiExport ViewProviderProjGroup : public ViewProviderDrawingView public: ViewProviderProjGroup(); /// constructor - ~ViewProviderProjGroup() override; /// destructor + ~ViewProviderProjGroup() override = default; /// destructor bool useNewSelectionModel() const override {return false;} - /// Claim all the views for the page + /// Claim all the views for the group std::vector claimChildren() const override; /// Is called by the tree if the user double click on the object bool doubleClicked() override; - void setupContextMenu(QMenu*, QObject*, const char*) override; TechDraw::DrawProjGroup* getObject() const; TechDraw::DrawProjGroup* getViewObject() const override; - bool onDelete(const std::vector &) override; + bool onDelete(const std::vector &parms) override; bool canDelete(App::DocumentObject* obj) const override; protected: diff --git a/src/Mod/TechDraw/Gui/ViewProviderRichAnno.cpp b/src/Mod/TechDraw/Gui/ViewProviderRichAnno.cpp index 0254fbcf94c2..7379d11cc2cf 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderRichAnno.cpp +++ b/src/Mod/TechDraw/Gui/ViewProviderRichAnno.cpp @@ -28,14 +28,16 @@ #include #include -#include +#include +#include +#include + #include #include "PreferencesGui.h" #include "ZVALUE.h" #include "QGIView.h" #include "TaskRichAnno.h" #include "QGSPage.h" -#include "ViewProviderPage.h" #include "ViewProviderRichAnno.h" using namespace TechDrawGui; @@ -68,9 +70,6 @@ ViewProviderRichAnno::ViewProviderRichAnno() StackOrder.setValue(ZVALUE::DIMENSION); } -ViewProviderRichAnno::~ViewProviderRichAnno() -{ -} bool ViewProviderRichAnno::doubleClicked() { @@ -79,7 +78,7 @@ bool ViewProviderRichAnno::doubleClicked() return true; } -void ViewProviderRichAnno::updateData(const App::Property* p) +void ViewProviderRichAnno::updateData(const App::Property* prop) { // only if there is a frame we can enable the frame line parameters if (getViewObject()) { @@ -95,21 +94,21 @@ void ViewProviderRichAnno::updateData(const App::Property* p) } } - ViewProviderDrawingView::updateData(p); + ViewProviderDrawingView::updateData(prop); } -void ViewProviderRichAnno::onChanged(const App::Property* p) +void ViewProviderRichAnno::onChanged(const App::Property* prop) { - if ((p == &LineColor) || - (p == &LineWidth) || - (p == &LineStyle)) { - QGIView* qgiv = getQView(); + if ((prop == &LineColor) || + (prop == &LineWidth) || + (prop == &LineStyle)) { + auto* qgiv = getQView(); if (qgiv) { qgiv->updateView(true); } } - ViewProviderDrawingView::onChanged(p); + ViewProviderDrawingView::onChanged(prop); } TechDraw::DrawRichAnno* ViewProviderRichAnno::getViewObject() const @@ -183,3 +182,23 @@ bool ViewProviderRichAnno::canDelete(App::DocumentObject *obj) const Q_UNUSED(obj) return true; } + + +std::vector ViewProviderRichAnno::claimChildren() const +{ + // What can reasonably have a RichAnno as a parent? A leader? a bit unconventional, but not forbidden. + // Another RichAnno? Maybe? Balloons? Dimensions? This is a bit of a corner case. Typically, a + // RichAnno would belong to something rather than owning something. + + std::vector temp; + const std::vector& candidates = getViewObject()->getInList(); + for (auto& obj : candidates) { + if (obj->isDerivedFrom() || + obj->isDerivedFrom() || + obj->isDerivedFrom() || + obj->isDerivedFrom() ) { + temp.push_back(obj); + } + } + return temp; +} diff --git a/src/Mod/TechDraw/Gui/ViewProviderRichAnno.h b/src/Mod/TechDraw/Gui/ViewProviderRichAnno.h index 2d3e37998c19..ebff4129f17c 100644 --- a/src/Mod/TechDraw/Gui/ViewProviderRichAnno.h +++ b/src/Mod/TechDraw/Gui/ViewProviderRichAnno.h @@ -46,15 +46,15 @@ class TechDrawGuiExport ViewProviderRichAnno : public ViewProviderDrawingView /// constructor ViewProviderRichAnno(); /// destructor - ~ViewProviderRichAnno() override; + ~ViewProviderRichAnno() override = default; App::PropertyLength LineWidth; App::PropertyEnumeration LineStyle; App::PropertyColor LineColor; bool useNewSelectionModel() const override {return false;} - void updateData(const App::Property*) override; - void onChanged(const App::Property* p) override; + void updateData(const App::Property* prop) override; + void onChanged(const App::Property* prop) override; bool doubleClicked() override; bool canDelete(App::DocumentObject* obj) const override; @@ -63,6 +63,10 @@ class TechDrawGuiExport ViewProviderRichAnno : public ViewProviderDrawingView TechDraw::DrawRichAnno* getViewObject() const override; TechDraw::DrawRichAnno* getFeature() const; + /// Claim any views that have this as a parent + std::vector claimChildren() const override; + + protected: App::Color getDefLineColor(); std::string getDefFont(); diff --git a/src/Mod/TechDraw/Gui/ZVALUE.h b/src/Mod/TechDraw/Gui/ZVALUE.h index 9425ba6c6367..36497cbf1a43 100644 --- a/src/Mod/TechDraw/Gui/ZVALUE.h +++ b/src/Mod/TechDraw/Gui/ZVALUE.h @@ -16,7 +16,8 @@ namespace ZVALUE { const int SECTIONLINE = 90; const int MATTING = 100; const int DIMENSION = 110; - const int LABEL = 120; + const int BALLOON = 120; + const int ANNOTATION = 120; const int TRACKER = 125; const int LOCK = 200; } diff --git a/src/Mod/TechDraw/LineGroup/ASME.Y14.2.2008.ElementDef.csv b/src/Mod/TechDraw/LineGroup/ASME.Y14.2.2008.ElementDef.csv index efa491a90b29..74a1c6a9e2cb 100644 --- a/src/Mod/TechDraw/LineGroup/ASME.Y14.2.2008.ElementDef.csv +++ b/src/Mod/TechDraw/LineGroup/ASME.Y14.2.2008.ElementDef.csv @@ -1,6 +1,6 @@ # ASME Y14.2-2008 line element definitions # NOTE: ASME Y14.2-2008 explicitly does not define the lengths of line elements, -# but recommends lengths that "depict the appropriate line convention commensurate +# but recommends lengths that "depict the appropriate line convention commensurate # with the drawing size and scale". The values used here are generally those # from ISO128. # NOTE: saving this file from a spreadsheet program (like LibreOffice Calc) may diff --git a/src/Mod/TechDraw/TDTest/DrawViewSymbolTest.py b/src/Mod/TechDraw/TDTest/DrawViewSymbolTest.py index c5590bd43ab7..05a1e924d670 100644 --- a/src/Mod/TechDraw/TDTest/DrawViewSymbolTest.py +++ b/src/Mod/TechDraw/TDTest/DrawViewSymbolTest.py @@ -1,5 +1,6 @@ import FreeCAD +import codecs import os import unittest from .TechDrawTestUtilities import createPageWithSVGTemplate @@ -21,7 +22,7 @@ def testMakeSymbol(self): sym = FreeCAD.ActiveDocument.addObject("TechDraw::DrawViewSymbol", "TestSymbol") path = os.path.dirname(os.path.abspath(__file__)) symbolFileSpec = path + "/TestSymbol.svg" - f = open(symbolFileSpec, "r") + f = codecs.open(symbolFileSpec, "r", encoding="utf-8") svg = f.read() f.close() sym.Symbol = svg @@ -33,6 +34,26 @@ def testMakeSymbol(self): self.assertTrue("Up-to-date" in sym.State) + def testNonAsciiSymbol(self): + """Tests if a Non-Ascii symbol can be added to page""" + sym = FreeCAD.ActiveDocument.addObject( + "TechDraw::DrawViewSymbol", "NonAsciiSymbol" + ) + path = os.path.dirname(os.path.abspath(__file__)) + symbolFileSpec = path + "/TestNonAsciiSymbol.svg" + f = codecs.open(symbolFileSpec, "r", encoding="utf-8") + svg = f.read() + f.close() + sym.Symbol = svg + self.page.addView(sym) + sym.X = 220.0 + sym.Y = 150.0 + + FreeCAD.ActiveDocument.recompute() + + self.assertTrue("Up-to-date" in sym.State) + + if __name__ == "__main__": unittest.main() diff --git a/src/Mod/TechDraw/TDTest/TestNonAsciiSymbol.svg b/src/Mod/TechDraw/TDTest/TestNonAsciiSymbol.svg new file mode 100644 index 000000000000..5c1105ceb07d --- /dev/null +++ b/src/Mod/TechDraw/TDTest/TestNonAsciiSymbol.svg @@ -0,0 +1,23 @@ + + + + + + + + + ⌀ 0,01 + + Ä + + Ö + + Ü + + diff --git a/src/Mod/TechDraw/Templates/locale/README.md b/src/Mod/TechDraw/Templates/locale/README.md index 45518445b4c2..bf6368084695 100644 --- a/src/Mod/TechDraw/Templates/locale/README.md +++ b/src/Mod/TechDraw/Templates/locale/README.md @@ -1,7 +1,7 @@ This folder (`locale`) contains translations for [TechDraw workbench templates](https://wiki.freecad.org/TechDraw_Templates) in the parent `Templates` folder. The name of each `locale` subfolder represents a language, which follows [IETF BCP 47 standardized codes](https://en.wikipedia.org/wiki/IETF_language_tag). The original TechDraw templates in the parent folder are written using American English (`en-US`). -As such, the most basic name for a locale subfolder will include an [ISO 639 language code](https://en.wikipedia.org/wiki/ISO_639) (e.g. `de` for German). If it's necessary, additional subtags can be added to describe language variants. For instance variants spoken in a particular country, or a specific script. Those subtags are combinable and are based in other standards. +As such, the most basic name for a locale subfolder will include an [ISO 639 language code](https://en.wikipedia.org/wiki/ISO_639) (e.g. `de` for German). If it's necessary, additional subtags can be added to describe language variants. For instance variants spoken in a particular country, or a specific script. Those subtags are combinable and are based in other standards. The most common additional subtag is an additional country code to describe a regional variant of the language (e.g. `de-DE` for German spoken in Germany, `es-AR` for Spanish spoken in Argentina, or `zh-CN` for Simplified Chinese in Mainland China). Country subtags are based on [the ISO 3166-1 standard's country codes](https://en.wikipedia.org/wiki/ISO_3166-1). diff --git a/src/Mod/Test/BaseTests.py b/src/Mod/Test/BaseTests.py index a07f6b596bd7..266e0c04e3fe 100644 --- a/src/Mod/Test/BaseTests.py +++ b/src/Mod/Test/BaseTests.py @@ -83,32 +83,6 @@ def adder(): time.sleep(3) FreeCAD.Console.PrintMessage(str(self.count) + "\n") - # def testStatus(self): - # SLog = FreeCAD.GetStatus("Console","Log") - # SErr = FreeCAD.GetStatus("Console","Err") - # SWrn = FreeCAD.GetStatus("Console","Wrn") - # SMsg = FreeCAD.GetStatus("Console","Msg") - # FreeCAD.SetStatus("Console","Log",1) - # FreeCAD.SetStatus("Console","Err",1) - # FreeCAD.SetStatus("Console","Wrn",1) - # FreeCAD.SetStatus("Console","Msg",1) - # self.assertEqual(FreeCAD.GetStatus("Console","Msg"),1,"Set and read status failed (Console,Msg)") - # self.assertEqual(FreeCAD.GetStatus("Console","Err"),1,"Set and read status failed (Console,Err)") - # self.assertEqual(FreeCAD.GetStatus("Console","Wrn"),1,"Set and read status failed (Console,Wrn)") - # self.assertEqual(FreeCAD.GetStatus("Console","Log"),1,"Set and read status failed (Console,Log)") - # FreeCAD.SetStatus("Console","Log",0) - # FreeCAD.SetStatus("Console","Err",0) - # FreeCAD.SetStatus("Console","Wrn",0) - # FreeCAD.SetStatus("Console","Msg",0) - # self.assertEqual(FreeCAD.GetStatus("Console","Msg"),0,"Set and read status failed (Console,Msg)") - # self.assertEqual(FreeCAD.GetStatus("Console","Err"),0,"Set and read status failed (Console,Err)") - # self.assertEqual(FreeCAD.GetStatus("Console","Wrn"),0,"Set and read status failed (Console,Wrn)") - # self.assertEqual(FreeCAD.GetStatus("Console","Log"),0,"Set and read status failed (Console,Log)") - # FreeCAD.SetStatus("Console","Log",SLog) - # FreeCAD.SetStatus("Console","Err",SErr) - # FreeCAD.SetStatus("Console","Wrn",SWrn) - # FreeCAD.SetStatus("Console","Msg",SMsg) - def tearDown(self): pass @@ -144,8 +118,6 @@ def testGroupNames(self): # check on special conditions def testInt(self): - # FreeCAD.Console.PrintLog("Base::ParameterTestCase::testInt\n") - # Temp = FreeCAD.ParamGet("System parameter:Test/44") # check on Int self.TestPar.SetInt("44", 4711) self.assertEqual(self.TestPar.GetInt("44"), 4711, "In and out error at Int") @@ -154,7 +126,6 @@ def testInt(self): self.assertEqual(self.TestPar.GetInt("44", 1), 1, "Deletion error at Int") def testBool(self): - # FreeCAD.Console.PrintLog("Base::ParameterTestCase::testBool\n") # check on Int self.TestPar.SetBool("44", 1) self.assertEqual(self.TestPar.GetBool("44"), 1, "In and out error at Bool") @@ -163,8 +134,6 @@ def testBool(self): self.assertEqual(self.TestPar.GetBool("44", 0), 0, "Deletion error at Bool") def testFloat(self): - # FreeCAD.Console.PrintLog("Base::ParameterTestCase::testFloat\n") - # Temp = FreeCAD.ParamGet("System parameter:Test/44") # check on Int self.TestPar.SetFloat("44", 4711.4711) self.assertEqual(self.TestPar.GetFloat("44"), 4711.4711, "In and out error at Float") @@ -173,8 +142,6 @@ def testFloat(self): self.assertEqual(self.TestPar.GetFloat("44", 1.1), 1.1, "Deletion error at Float") def testString(self): - # FreeCAD.Console.PrintLog("Base::ParameterTestCase::testFloat\n") - # Temp = FreeCAD.ParamGet("System parameter:Test/44") # check on Int self.TestPar.SetString("44", "abcdefgh") self.assertEqual(self.TestPar.GetString("44"), "abcdefgh", "In and out error at String") @@ -183,8 +150,6 @@ def testString(self): self.assertEqual(self.TestPar.GetString("44", "hallo"), "hallo", "Deletion error at String") def testNesting(self): - # Parameter testing - # FreeCAD.Console.PrintLog("Base::ParameterTestCase::testNesting\n") for i in range(50): self.TestPar.SetFloat(str(i), 4711.4711) self.TestPar.SetInt(str(i), 4711) @@ -197,8 +162,6 @@ def testNesting(self): Temp = 0 def testExportImport(self): - # Parameter testing - # FreeCAD.Console.PrintLog("Base::ParameterTestCase::testNesting\n") self.TestPar.SetFloat("ExTest", 4711.4711) self.TestPar.SetInt("ExTest", 4711) self.TestPar.SetString("ExTest", "4711") diff --git a/src/Mod/Test/Document.py b/src/Mod/Test/Document.py index 18ba7b19766b..495965078997 100644 --- a/src/Mod/Test/Document.py +++ b/src/Mod/Test/Document.py @@ -44,6 +44,16 @@ def loads(self, data): self.Dictionary = data +class MyFeature: + def __init__(self, obj): + obj.Proxy = self + obj.addProperty("App::PropertyLinkList", "propLink") + + def onDocumentRestored(self, obj): + if hasattr(obj, "propLink"): + obj.removeProperty("propLink") + + class DocumentBasicCases(unittest.TestCase): def setUp(self): self.Doc = FreeCAD.newDocument("CreateTest") @@ -56,6 +66,15 @@ def saveAndRestore(self): self.Doc = FreeCAD.open(SaveName) return self.Doc + def testIssue18601(self): + lnk = self.Doc.addObject("App::FeaturePython", "MyLink") + obj = self.Doc.addObject("App::FeaturePython", "MyFeature") + fea = MyFeature(obj) + obj.propLink = [lnk] + doc = self.saveAndRestore() + FreeCAD.closeDocument(doc.Name) + self.Doc = FreeCAD.newDocument("CreateTest") + def testAccessByNameOrID(self): obj = self.Doc.addObject("App::DocumentObject", "MyName") @@ -338,17 +357,17 @@ def testSubObject(self): res = obj.getSubObject("X_Axis", retType=2) self.assertEqual( - res[1].multVec(FreeCAD.Vector(1, 0, 0)).getAngle(FreeCAD.Vector(1, 0, 0)), 0.0 + res[1].multVec(FreeCAD.Vector(0, 0, 1)).getAngle(FreeCAD.Vector(1, 0, 0)), 0.0 ) res = obj.getSubObject("Y_Axis", retType=2) self.assertEqual( - res[1].multVec(FreeCAD.Vector(1, 0, 0)).getAngle(FreeCAD.Vector(0, 1, 0)), 0.0 + res[1].multVec(FreeCAD.Vector(0, 0, 1)).getAngle(FreeCAD.Vector(0, 1, 0)), 0.0 ) res = obj.getSubObject("Z_Axis", retType=2) self.assertEqual( - res[1].multVec(FreeCAD.Vector(1, 0, 0)).getAngle(FreeCAD.Vector(0, 0, 1)), 0.0 + res[1].multVec(FreeCAD.Vector(0, 0, 1)).getAngle(FreeCAD.Vector(0, 0, 1)), 0.0 ) res = obj.getSubObject("XY_Plane", retType=2) diff --git a/src/XDGData/org.freecad.FreeCAD.metainfo.xml.in b/src/XDGData/org.freecad.FreeCAD.metainfo.xml.in index e870d71d00d8..c12ab1594173 100644 --- a/src/XDGData/org.freecad.FreeCAD.metainfo.xml.in +++ b/src/XDGData/org.freecad.FreeCAD.metainfo.xml.in @@ -64,7 +64,7 @@ architecture assembly part - coin + coin https://www.freecad.org/ https://github.com/FreeCAD/FreeCAD/issues diff --git a/tests/src/App/ExpressionParser.cpp b/tests/src/App/ExpressionParser.cpp index de59657c8a87..d7a88267fb1d 100644 --- a/tests/src/App/ExpressionParser.cpp +++ b/tests/src/App/ExpressionParser.cpp @@ -44,8 +44,8 @@ class ExpressionParserTest: public ::testing::Test } Base::Quantity parse_quantity_text_as_quantity(const char* quantity_text) { - auto quantity_qstr = QString::fromStdString(std::string(quantity_text)); - auto quantity_result = Base::Quantity::parse(quantity_qstr); + auto quantity_str = std::string(quantity_text); + auto quantity_result = Base::Quantity::parse(quantity_str); return quantity_result; } @@ -95,8 +95,8 @@ TEST_F(ExpressionParserTest, functionPARSEQUANT) EXPECT_EQ(expression_result, quantity_result) << "mismatch:" " expression_text='" + std::string(expression_text) + "'" " quantity_text='" + std::string(quantity_text) + "'" - " expression_representation='" + expression_result.getUserString().toStdString() + "'" - " quantity_representation='" + quantity_result.getUserString().toStdString() + "'" + " expression_representation='" + expression_result.getUserString() + "'" + " quantity_representation='" + quantity_result.getUserString() + "'" ; } diff --git a/tests/src/App/Property.cpp b/tests/src/App/Property.cpp index 528ca56f2fa1..4589f5b8b981 100644 --- a/tests/src/App/Property.cpp +++ b/tests/src/App/Property.cpp @@ -4,6 +4,7 @@ #include #include #include +#include TEST(PropertyLink, TestSetValues) { @@ -17,7 +18,16 @@ TEST(PropertyLink, TestSetValues) EXPECT_EQ(sub[1], "Sub2"); } -TEST(PropertyFloatTest, testWriteRead) +class PropertyFloatTest: public ::testing::Test +{ +protected: + static void SetUpTestSuite() + { + XERCES_CPP_NAMESPACE::XMLPlatformUtils::Initialize(); + } +}; + +TEST_F(PropertyFloatTest, testWriteRead) { #if defined(FC_OS_LINUX) || defined(FC_OS_BSD) setlocale(LC_ALL, ""); diff --git a/tests/src/App/PropertyExpressionEngine.cpp b/tests/src/App/PropertyExpressionEngine.cpp index 19554c49361f..582d80bf3a57 100644 --- a/tests/src/App/PropertyExpressionEngine.cpp +++ b/tests/src/App/PropertyExpressionEngine.cpp @@ -80,9 +80,9 @@ TEST_F(PropertyExpressionEngineTest, executeCrossPropertyReference) ASSERT_TRUE(target_entry.type() == typeid(Base::Quantity)); auto target_quant = App::any_cast(target_entry); auto target_value = target_quant.getValue(); - auto target_unit = target_quant.getUnit().getString().toStdString(); + auto target_unit = target_quant.getUnit().getString(); - auto verify_quant = Base::Quantity::parse(QString::fromStdString(target_text)); + auto verify_quant = Base::Quantity::parse(target_text); EXPECT_EQ(target_quant, verify_quant) << "" "expecting equal: source_text='" + source_text + "' target_text='" + target_text + "'" diff --git a/tests/src/Base/CMakeLists.txt b/tests/src/Base/CMakeLists.txt index 2feb4d2eb07c..2404b058a420 100644 --- a/tests/src/Base/CMakeLists.txt +++ b/tests/src/Base/CMakeLists.txt @@ -16,6 +16,7 @@ target_sources( ${CMAKE_CURRENT_SOURCE_DIR}/Quantity.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Reader.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Rotation.cpp + ${CMAKE_CURRENT_SOURCE_DIR}/ServiceProvider.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Stream.cpp ${CMAKE_CURRENT_SOURCE_DIR}/TimeInfo.cpp ${CMAKE_CURRENT_SOURCE_DIR}/Tools.cpp diff --git a/tests/src/Base/Quantity.cpp b/tests/src/Base/Quantity.cpp index d4a27059f562..525c57541be4 100644 --- a/tests/src/Base/Quantity.cpp +++ b/tests/src/Base/Quantity.cpp @@ -19,12 +19,10 @@ TEST(BaseQuantity, TestValid) TEST(BaseQuantity, TestParse) { - Base::Quantity q1 = Base::Quantity::parse(QString::fromLatin1("1,234 kg")); + Base::Quantity q1 = Base::Quantity::parse("1,234 kg"); EXPECT_EQ(q1, Base::Quantity(1.2340, Base::Unit::Mass)); - EXPECT_THROW( - boost::ignore_unused(Base::Quantity::parse(QString::fromLatin1("1,234,500.12 kg"))), - Base::ParserError); + EXPECT_THROW(boost::ignore_unused(Base::Quantity::parse("1,234,500.12 kg")), Base::ParserError); } TEST(BaseQuantity, TestDim) @@ -74,10 +72,10 @@ TEST(BaseQuantity, TestPow3DIV2) TEST(BaseQuantity, TestString) { - Base::Quantity q1 {2, QString::fromLatin1("kg*m/s^2")}; + Base::Quantity q1 {2, "kg*m/s^2"}; EXPECT_EQ(q1.getUnit(), Base::Unit::Force); - Base::Quantity q2 {2, QString::fromLatin1("kg*m^2/s^2")}; + Base::Quantity q2 {2, "kg*m^2/s^2"}; EXPECT_EQ(q2.getUnit(), Base::Unit::Work); } @@ -91,7 +89,7 @@ TEST(BaseQuantity, TestCopy) TEST(BaseQuantity, TestEqual) { Base::Quantity q1 {1.0, Base::Unit::Force}; - Base::Quantity q2 {1.0, QString::fromLatin1("kg*mm/s^2")}; + Base::Quantity q2 {1.0, "kg*mm/s^2"}; EXPECT_EQ(q1 == q1, true); EXPECT_EQ(q1 == q2, true); @@ -100,7 +98,7 @@ TEST(BaseQuantity, TestEqual) TEST(BaseQuantity, TestNotEqual) { Base::Quantity q1 {1.0, Base::Unit::Force}; - Base::Quantity q2 {2.0, QString::fromLatin1("kg*m/s^2")}; + Base::Quantity q2 {2.0, "kg*m/s^2"}; Base::Quantity q3 {1.0, Base::Unit::Work}; EXPECT_EQ(q1 != q2, true); @@ -110,7 +108,7 @@ TEST(BaseQuantity, TestNotEqual) TEST(BaseQuantity, TestLessOrGreater) { Base::Quantity q1 {1.0, Base::Unit::Force}; - Base::Quantity q2 {2.0, QString::fromLatin1("kg*m/s^2")}; + Base::Quantity q2 {2.0, "kg*m/s^2"}; Base::Quantity q3 {2.0, Base::Unit::Work}; EXPECT_EQ(q1 < q2, true); @@ -192,10 +190,10 @@ TEST_F(Quantity, TestSchemeImperialTwo) Base::Quantity quantity {1.0, Base::Unit::Length}; double factor {}; - QString unitString; + std::string unitString; auto scheme = Base::UnitsApi::createSchema(Base::UnitSystem::ImperialDecimal); - QString result = scheme->schemaTranslate(quantity, factor, unitString); - EXPECT_EQ(result.toStdString(), "0.04 in"); + std::string result = scheme->schemaTranslate(quantity, factor, unitString); + EXPECT_EQ(result, "0.04 in"); } TEST_F(Quantity, TestSchemeImperialOne) @@ -207,11 +205,11 @@ TEST_F(Quantity, TestSchemeImperialOne) quantity.setFormat(format); double factor {}; - QString unitString; + std::string unitString; auto scheme = Base::UnitsApi::createSchema(Base::UnitSystem::ImperialDecimal); - QString result = scheme->schemaTranslate(quantity, factor, unitString); + std::string result = scheme->schemaTranslate(quantity, factor, unitString); - EXPECT_EQ(result.toStdString(), "0.0 in"); + EXPECT_EQ(result, "0.0 in"); } TEST_F(Quantity, TestSafeUserString) @@ -223,9 +221,9 @@ TEST_F(Quantity, TestSafeUserString) format.precision = 1; quantity.setFormat(format); - QString result = quantity.getSafeUserString(); + std::string result = quantity.getSafeUserString(); - EXPECT_EQ(result.toStdString(), "1 mm"); + EXPECT_EQ(result, "1 mm"); Base::UnitsApi::setSchema(Base::UnitSystem::Imperial1); @@ -234,13 +232,13 @@ TEST_F(Quantity, TestSafeUserString) result = quantity.getSafeUserString(); - EXPECT_EQ(result.toStdString(), "1.0 \\'"); + EXPECT_EQ(result, "1.0 \\'"); quantity = Base::Quantity {25.4, Base::Unit::Length}; quantity.setFormat(format); result = quantity.getSafeUserString(); - EXPECT_EQ(result.toStdString(), "1.0 \\\""); + EXPECT_EQ(result, "1.0 \\\""); } // NOLINTEND diff --git a/tests/src/Base/Reader.cpp b/tests/src/Base/Reader.cpp index 79038059d077..da308a41c89b 100644 --- a/tests/src/Base/Reader.cpp +++ b/tests/src/Base/Reader.cpp @@ -15,18 +15,16 @@ namespace fs = boost::filesystem; -class ReaderTest: public ::testing::Test +class ReaderXML { -protected: - void SetUp() override +public: + ReaderXML() { - XERCES_CPP_NAMESPACE::XMLPlatformUtils::Initialize(); _tempDir = fs::temp_directory_path(); - std::string filename = "unit_test_Reader.xml"; + fs::path filename = fs::unique_path("unit_test_Reader-%%%%.xml"); _tempFile = _tempDir / filename; } - - void TearDown() override + ~ReaderXML() { if (inputStream.is_open()) { inputStream.close(); @@ -36,6 +34,11 @@ class ReaderTest: public ::testing::Test } } + Base::XMLReader* Reader() + { + return _reader.get(); + } + void givenDataAsXMLStream(const std::string& data) { auto stringData = @@ -48,11 +51,6 @@ class ReaderTest: public ::testing::Test _reader = std::make_unique(_tempFile.string().c_str(), inputStream); } - Base::XMLReader* Reader() - { - return _reader.get(); - } - private: std::unique_ptr _reader; fs::path _tempDir; @@ -60,14 +58,27 @@ class ReaderTest: public ::testing::Test std::ifstream inputStream; }; +class ReaderTest: public ::testing::Test +{ +protected: + void SetUp() override + { + XERCES_CPP_NAMESPACE::XMLPlatformUtils::Initialize(); + } + + void TearDown() override + {} +}; + TEST_F(ReaderTest, beginCharStreamNormal) { // Arrange - givenDataAsXMLStream("Test ASCII data"); - Reader()->readElement("data"); + ReaderXML xml; + xml.givenDataAsXMLStream("Test ASCII data"); + xml.Reader()->readElement("data"); // Act - auto& result = Reader()->beginCharStream(); + auto& result = xml.Reader()->beginCharStream(); // Assert EXPECT_TRUE(result.good()); @@ -76,11 +87,12 @@ TEST_F(ReaderTest, beginCharStreamNormal) TEST_F(ReaderTest, beginCharStreamOpenClose) { // Arrange - givenDataAsXMLStream(""); - Reader()->readElement("data"); + ReaderXML xml; + xml.givenDataAsXMLStream(""); + xml.Reader()->readElement("data"); // Act - auto& result = Reader()->beginCharStream(); // Not an error, even though there is no data + auto& result = xml.Reader()->beginCharStream(); // Not an error, even though there is no data // Assert EXPECT_TRUE(result.good()); @@ -89,23 +101,25 @@ TEST_F(ReaderTest, beginCharStreamOpenClose) TEST_F(ReaderTest, beginCharStreamAlreadyBegun) { // Arrange - givenDataAsXMLStream("Test ASCII data"); - Reader()->readElement("data"); - Reader()->beginCharStream(); + ReaderXML xml; + xml.givenDataAsXMLStream("Test ASCII data"); + xml.Reader()->readElement("data"); + xml.Reader()->beginCharStream(); // Act & Assert - EXPECT_THROW(Reader()->beginCharStream(), Base::XMLParseException); // NOLINT + EXPECT_THROW(xml.Reader()->beginCharStream(), Base::XMLParseException); // NOLINT } TEST_F(ReaderTest, charStreamGood) { // Arrange - givenDataAsXMLStream("Test ASCII data"); - Reader()->readElement("data"); - Reader()->beginCharStream(); + ReaderXML xml; + xml.givenDataAsXMLStream("Test ASCII data"); + xml.Reader()->readElement("data"); + xml.Reader()->beginCharStream(); // Act - auto& result = Reader()->charStream(); + auto& result = xml.Reader()->charStream(); // Assert EXPECT_TRUE(result.good()); @@ -114,33 +128,36 @@ TEST_F(ReaderTest, charStreamGood) TEST_F(ReaderTest, charStreamBad) { // Arrange - givenDataAsXMLStream("Test ASCII data"); - Reader()->readElement("data"); + ReaderXML xml; + xml.givenDataAsXMLStream("Test ASCII data"); + xml.Reader()->readElement("data"); // Act & Assert - EXPECT_THROW(Reader()->charStream(), Base::XMLParseException); // NOLINT + EXPECT_THROW(xml.Reader()->charStream(), Base::XMLParseException); // NOLINT } TEST_F(ReaderTest, endCharStreamGood) { // Arrange - givenDataAsXMLStream("Test ASCII data"); - Reader()->readElement("data"); - Reader()->beginCharStream(); + ReaderXML xml; + xml.givenDataAsXMLStream("Test ASCII data"); + xml.Reader()->readElement("data"); + xml.Reader()->beginCharStream(); // Act & Assert - Reader()->endCharStream(); // Does not throw + xml.Reader()->endCharStream(); // Does not throw } TEST_F(ReaderTest, endCharStreamBad) { // Arrange - givenDataAsXMLStream("Test ASCII data"); - Reader()->readElement("data"); + ReaderXML xml; + xml.givenDataAsXMLStream("Test ASCII data"); + xml.Reader()->readElement("data"); // Do not open the stream... // Act & Assert - Reader()->endCharStream(); // Does not throw, even with no open stream + xml.Reader()->endCharStream(); // Does not throw, even with no open stream } TEST_F(ReaderTest, readDataSmallerThanBuffer) @@ -148,13 +165,14 @@ TEST_F(ReaderTest, readDataSmallerThanBuffer) // Arrange constexpr size_t bufferSize {20}; std::string expectedData {"Test ASCII data"}; - givenDataAsXMLStream("" + expectedData + ""); - Reader()->readElement("data"); - Reader()->beginCharStream(); + ReaderXML xml; + xml.givenDataAsXMLStream("" + expectedData + ""); + xml.Reader()->readElement("data"); + xml.Reader()->beginCharStream(); std::array buffer {}; // Act - auto bytesRead = Reader()->read(buffer.data(), bufferSize); + auto bytesRead = xml.Reader()->read(buffer.data(), bufferSize); // Assert EXPECT_STREQ(expectedData.c_str(), buffer.data()); @@ -166,13 +184,14 @@ TEST_F(ReaderTest, readDataLargerThanBuffer) // Arrange constexpr size_t bufferSize {5}; std::string expectedData {"Test ASCII data"}; - givenDataAsXMLStream("" + expectedData + ""); - Reader()->readElement("data"); - Reader()->beginCharStream(); + ReaderXML xml; + xml.givenDataAsXMLStream("" + expectedData + ""); + xml.Reader()->readElement("data"); + xml.Reader()->beginCharStream(); std::array buffer {}; // Act - auto bytesRead = Reader()->read(buffer.data(), bufferSize); + auto bytesRead = xml.Reader()->read(buffer.data(), bufferSize); // Assert for (size_t i = 0; i < bufferSize; ++i) { @@ -186,14 +205,15 @@ TEST_F(ReaderTest, readDataLargerThanBufferSecondRead) // Arrange constexpr size_t bufferSize {5}; std::string expectedData {"Test ASCII data"}; - givenDataAsXMLStream("" + expectedData + ""); - Reader()->readElement("data"); - Reader()->beginCharStream(); + ReaderXML xml; + xml.givenDataAsXMLStream("" + expectedData + ""); + xml.Reader()->readElement("data"); + xml.Reader()->beginCharStream(); std::array buffer {}; - Reader()->read(buffer.data(), bufferSize); // Read the first five bytes + xml.Reader()->read(buffer.data(), bufferSize); // Read the first five bytes // Act - auto bytesRead = Reader()->read(buffer.data(), bufferSize); // Second five bytes + auto bytesRead = xml.Reader()->read(buffer.data(), bufferSize); // Second five bytes // Assert for (size_t i = 0; i < bufferSize; ++i) { @@ -207,12 +227,13 @@ TEST_F(ReaderTest, readDataNotStarted) // Arrange constexpr size_t bufferSize {20}; std::string expectedData {"Test ASCII data"}; - givenDataAsXMLStream("" + expectedData + ""); - Reader()->readElement("data"); + ReaderXML xml; + xml.givenDataAsXMLStream("" + expectedData + ""); + xml.Reader()->readElement("data"); std::array buffer {}; // Act - auto bytesRead = Reader()->read(buffer.data(), bufferSize); + auto bytesRead = xml.Reader()->read(buffer.data(), bufferSize); // Assert EXPECT_EQ(-1, bytesRead); // Because we didn't call beginCharStream @@ -225,28 +246,29 @@ TEST_F(ReaderTest, readNextStartElement) Node2 )"; - givenDataAsXMLStream(xmlBody); + ReaderXML xml; + xml.givenDataAsXMLStream(xmlBody); // start of document - EXPECT_TRUE(Reader()->isStartOfDocument()); - Reader()->readElement("document"); - EXPECT_STREQ(Reader()->localName(), "document"); + EXPECT_TRUE(xml.Reader()->isStartOfDocument()); + xml.Reader()->readElement("document"); + EXPECT_STREQ(xml.Reader()->localName(), "document"); // next element - EXPECT_TRUE(Reader()->readNextElement()); - EXPECT_STREQ(Reader()->localName(), "node1"); - EXPECT_STREQ(Reader()->getAttribute("attr"), "1"); - Reader()->readEndElement("node1"); - EXPECT_TRUE(Reader()->isEndOfElement()); + EXPECT_TRUE(xml.Reader()->readNextElement()); + EXPECT_STREQ(xml.Reader()->localName(), "node1"); + EXPECT_STREQ(xml.Reader()->getAttribute("attr"), "1"); + xml.Reader()->readEndElement("node1"); + EXPECT_TRUE(xml.Reader()->isEndOfElement()); // next element - EXPECT_TRUE(Reader()->readNextElement()); - EXPECT_STREQ(Reader()->localName(), "node2"); - EXPECT_STREQ(Reader()->getAttribute("attr"), "2"); - Reader()->readEndElement("node2"); - EXPECT_TRUE(Reader()->isEndOfElement()); - Reader()->readEndElement("document"); - EXPECT_TRUE(Reader()->isEndOfDocument()); + EXPECT_TRUE(xml.Reader()->readNextElement()); + EXPECT_STREQ(xml.Reader()->localName(), "node2"); + EXPECT_STREQ(xml.Reader()->getAttribute("attr"), "2"); + xml.Reader()->readEndElement("node2"); + EXPECT_TRUE(xml.Reader()->isEndOfElement()); + xml.Reader()->readEndElement("document"); + EXPECT_TRUE(xml.Reader()->isEndOfDocument()); } TEST_F(ReaderTest, readNextStartEndElement) @@ -256,24 +278,25 @@ TEST_F(ReaderTest, readNextStartEndElement) )"; - givenDataAsXMLStream(xmlBody); + ReaderXML xml; + xml.givenDataAsXMLStream(xmlBody); // start of document - EXPECT_TRUE(Reader()->isStartOfDocument()); - Reader()->readElement("document"); - EXPECT_STREQ(Reader()->localName(), "document"); + EXPECT_TRUE(xml.Reader()->isStartOfDocument()); + xml.Reader()->readElement("document"); + EXPECT_STREQ(xml.Reader()->localName(), "document"); // next element - EXPECT_TRUE(Reader()->readNextElement()); - EXPECT_STREQ(Reader()->localName(), "node1"); - EXPECT_STREQ(Reader()->getAttribute("attr"), "1"); + EXPECT_TRUE(xml.Reader()->readNextElement()); + EXPECT_STREQ(xml.Reader()->localName(), "node1"); + EXPECT_STREQ(xml.Reader()->getAttribute("attr"), "1"); // next element - EXPECT_TRUE(Reader()->readNextElement()); - EXPECT_STREQ(Reader()->localName(), "node2"); - EXPECT_STREQ(Reader()->getAttribute("attr"), "2"); - EXPECT_FALSE(Reader()->readNextElement()); - EXPECT_TRUE(Reader()->isEndOfDocument()); + EXPECT_TRUE(xml.Reader()->readNextElement()); + EXPECT_STREQ(xml.Reader()->localName(), "node2"); + EXPECT_STREQ(xml.Reader()->getAttribute("attr"), "2"); + EXPECT_FALSE(xml.Reader()->readNextElement()); + EXPECT_TRUE(xml.Reader()->isEndOfDocument()); } TEST_F(ReaderTest, charStreamBase64Encoded) @@ -281,13 +304,14 @@ TEST_F(ReaderTest, charStreamBase64Encoded) // Arrange static constexpr size_t bufferSize {100}; std::array buffer {}; - givenDataAsXMLStream("RnJlZUNBRCByb2NrcyEg8J+qqPCfqqjwn6qo\n"); - Reader()->readElement("data"); - Reader()->beginCharStream(Base::CharStreamFormat::Base64Encoded); + ReaderXML xml; + xml.givenDataAsXMLStream("RnJlZUNBRCByb2NrcyEg8J+qqPCfqqjwn6qo\n"); + xml.Reader()->readElement("data"); + xml.Reader()->beginCharStream(Base::CharStreamFormat::Base64Encoded); // Act - Reader()->charStream().getline(buffer.data(), bufferSize); - Reader()->endCharStream(); + xml.Reader()->charStream().getline(buffer.data(), bufferSize); + xml.Reader()->endCharStream(); // Assert // Conversion done using https://www.base64encode.org for testing purposes @@ -302,22 +326,23 @@ TEST_F(ReaderTest, validDefaults) )"; - givenDataAsXMLStream(xmlBody); + ReaderXML xml; + xml.givenDataAsXMLStream(xmlBody); // Act - const char* value2 = Reader()->getAttribute("missing", "expected value"); - int value4 = Reader()->getAttributeAsInteger("missing", "-123"); - unsigned value6 = Reader()->getAttributeAsUnsigned("missing", "123"); - double value8 = Reader()->getAttributeAsFloat("missing", "1.234"); + const char* value2 = xml.Reader()->getAttribute("missing", "expected value"); + int value4 = xml.Reader()->getAttributeAsInteger("missing", "-123"); + unsigned value6 = xml.Reader()->getAttributeAsUnsigned("missing", "123"); + double value8 = xml.Reader()->getAttributeAsFloat("missing", "1.234"); // Assert - EXPECT_THROW({ Reader()->getAttributeAsInteger("missing"); }, Base::XMLBaseException); + EXPECT_THROW({ xml.Reader()->getAttributeAsInteger("missing"); }, Base::XMLBaseException); EXPECT_EQ(value2, "expected value"); - EXPECT_THROW({ Reader()->getAttributeAsInteger("missing"); }, Base::XMLBaseException); + EXPECT_THROW({ xml.Reader()->getAttributeAsInteger("missing"); }, Base::XMLBaseException); EXPECT_EQ(value4, -123); - EXPECT_THROW({ Reader()->getAttributeAsUnsigned("missing"); }, Base::XMLBaseException); + EXPECT_THROW({ xml.Reader()->getAttributeAsUnsigned("missing"); }, Base::XMLBaseException); EXPECT_EQ(value6, 123); - EXPECT_THROW({ Reader()->getAttributeAsFloat("missing"); }, Base::XMLBaseException); + EXPECT_THROW({ xml.Reader()->getAttributeAsFloat("missing"); }, Base::XMLBaseException); EXPECT_NEAR(value8, 1.234, 0.001); } @@ -329,16 +354,17 @@ TEST_F(ReaderTest, invalidDefaults) )"; - givenDataAsXMLStream(xmlBody); + ReaderXML xml; + xml.givenDataAsXMLStream(xmlBody); // Act / Assert EXPECT_THROW( - { Reader()->getAttributeAsInteger("missing", "Not an Integer"); }, + { xml.Reader()->getAttributeAsInteger("missing", "Not an Integer"); }, std::invalid_argument); EXPECT_THROW( - { Reader()->getAttributeAsInteger("missing", "Not an Unsigned"); }, + { xml.Reader()->getAttributeAsInteger("missing", "Not an Unsigned"); }, std::invalid_argument); EXPECT_THROW( - { Reader()->getAttributeAsInteger("missing", "Not a Float"); }, + { xml.Reader()->getAttributeAsInteger("missing", "Not a Float"); }, std::invalid_argument); } diff --git a/tests/src/Base/ServiceProvider.cpp b/tests/src/Base/ServiceProvider.cpp new file mode 100644 index 000000000000..405c8cf134cd --- /dev/null +++ b/tests/src/Base/ServiceProvider.cpp @@ -0,0 +1,110 @@ +#include +#include + +class SimpleService +{ +public: + virtual ~SimpleService() = default; + virtual std::string foo() = 0; + + SimpleService() = default; + + SimpleService(const SimpleService& other) = delete; + SimpleService(SimpleService&& other) noexcept = delete; + SimpleService& operator=(const SimpleService& other) = delete; + SimpleService& operator=(SimpleService&& other) noexcept = delete; +}; + +class FirstServiceImplementation final: public SimpleService +{ +public: + std::string foo() override + { + return "first"; + } +}; + +class SecondServiceImplementation final: public SimpleService +{ +public: + std::string foo() override + { + return "second"; + } +}; + +TEST(ServiceProvider, provideEmptyImplementation) +{ + // Arrange + Base::ServiceProvider serviceProvider; + + // Act + auto implementation = serviceProvider.provide(); + + // Assert + EXPECT_EQ(implementation, nullptr); +} + +TEST(ServiceProvider, provideEmptyImplementationList) +{ + // Arrange + Base::ServiceProvider serviceProvider; + + // Act + const auto implementations = serviceProvider.all(); + + // Assert + EXPECT_EQ(implementations.size(), 0); +} + +TEST(ServiceProvider, provideImplementation) +{ + // Arrange + Base::ServiceProvider serviceProvider; + + serviceProvider.implement(new FirstServiceImplementation); + + // Act + auto implementation = serviceProvider.provide(); + + // Assert + EXPECT_NE(implementation, nullptr); + EXPECT_EQ(implementation->foo(), "first"); +} + +TEST(ServiceProvider, provideLatestImplementation) +{ + // Arrange + Base::ServiceProvider serviceProvider; + + serviceProvider.implement(new FirstServiceImplementation); + serviceProvider.implement(new SecondServiceImplementation); + + // Act + auto implementation = serviceProvider.provide(); + + // Assert + EXPECT_NE(implementation, nullptr); + EXPECT_EQ(implementation->foo(), "second"); +} + +TEST(ServiceProvider, provideAllImplementations) +{ + // Arrange + Base::ServiceProvider serviceProvider; + + serviceProvider.implement(new FirstServiceImplementation); + serviceProvider.implement(new SecondServiceImplementation); + + // Act + auto implementations = serviceProvider.all(); + auto it = implementations.begin(); + + // Assert + // Implementations should be available in order from the most recent one + EXPECT_EQ((*it)->foo(), "second"); + ++it; + EXPECT_EQ((*it)->foo(), "first"); + ++it; + EXPECT_EQ(it, implementations.end()); +} diff --git a/tests/src/Base/Unit.cpp b/tests/src/Base/Unit.cpp index 616abde14096..fa73d9110696 100644 --- a/tests/src/Base/Unit.cpp +++ b/tests/src/Base/Unit.cpp @@ -6,7 +6,7 @@ TEST(Unit, TestString) { auto toString = [](const Base::Unit& unit) { - return unit.getString().toStdString(); + return unit.getString(); }; EXPECT_EQ(toString(Base::Unit(0, 0, 0, 0, 0, 0, 0, 0)), ""); EXPECT_EQ(toString(Base::Unit(1, 0, 0, 0, 0, 0, 0, 0)), "mm"); @@ -24,7 +24,7 @@ TEST(Unit, TestString) TEST(Unit, TestTypeString) { auto toString = [](const Base::Unit& unit) { - return unit.getTypeString().toStdString(); + return unit.getTypeString(); }; EXPECT_EQ(toString(Base::Unit::Acceleration), "Acceleration"); EXPECT_EQ(toString(Base::Unit::AmountOfSubstance), "AmountOfSubstance"); @@ -83,14 +83,14 @@ TEST(Unit, TestTypeString) } TEST(Unit, strings) { - EXPECT_STREQ(Base::Unit::Acceleration.getString().toStdString().c_str(), "mm/s^2"); - EXPECT_STREQ(Base::Unit::AmountOfSubstance.getString().toStdString().c_str(), "mol"); - EXPECT_STREQ(Base::Unit::Angle.getString().toStdString().c_str(), "deg"); - EXPECT_STREQ(Base::Unit::AngleOfFriction.getString().toStdString().c_str(), "deg"); - EXPECT_STREQ(Base::Unit::Area.getString().toStdString().c_str(), "mm^2"); - EXPECT_STREQ(Base::Unit::CurrentDensity.getString().toStdString().c_str(), "A/mm^2"); - EXPECT_STREQ(Base::Unit::Density.getString().toStdString().c_str(), "kg/mm^3"); - EXPECT_STREQ(Base::Unit::DissipationRate.getString().toStdString().c_str(), "mm^2/s^3"); + EXPECT_STREQ(Base::Unit::Acceleration.getString().c_str(), "mm/s^2"); + EXPECT_STREQ(Base::Unit::AmountOfSubstance.getString().c_str(), "mol"); + EXPECT_STREQ(Base::Unit::Angle.getString().c_str(), "deg"); + EXPECT_STREQ(Base::Unit::AngleOfFriction.getString().c_str(), "deg"); + EXPECT_STREQ(Base::Unit::Area.getString().c_str(), "mm^2"); + EXPECT_STREQ(Base::Unit::CurrentDensity.getString().c_str(), "A/mm^2"); + EXPECT_STREQ(Base::Unit::Density.getString().c_str(), "kg/mm^3"); + EXPECT_STREQ(Base::Unit::DissipationRate.getString().c_str(), "mm^2/s^3"); } TEST(Unit, TestEqual) diff --git a/tests/src/Gui/QuantitySpinBox.cpp b/tests/src/Gui/QuantitySpinBox.cpp index b1af5a5a3f26..6b1fb34b2bb4 100644 --- a/tests/src/Gui/QuantitySpinBox.cpp +++ b/tests/src/Gui/QuantitySpinBox.cpp @@ -32,19 +32,19 @@ private Q_SLOTS: void test_SimpleBaseUnit() // NOLINT { auto result = qsb->valueFromText("1mm"); - QCOMPARE(result, Base::Quantity(1, QLatin1String("mm"))); + QCOMPARE(result, Base::Quantity(1, "mm")); } void test_UnitInNumerator() // NOLINT { auto result = qsb->valueFromText("1mm/10"); - QCOMPARE(result, Base::Quantity(0.1, QLatin1String("mm"))); + QCOMPARE(result, Base::Quantity(0.1, "mm")); } void test_UnitInDenominator() // NOLINT { auto result = qsb->valueFromText("1/10mm"); - QCOMPARE(result, Base::Quantity(0.1, QLatin1String("mm"))); + QCOMPARE(result, Base::Quantity(0.1, "mm")); } void test_KeepFormat() // NOLINT diff --git a/tests/src/Mod/Assembly/CMakeLists.txt b/tests/src/Mod/Assembly/CMakeLists.txt index 1b1d32dc85ac..5b905d2e9af4 100644 --- a/tests/src/Mod/Assembly/CMakeLists.txt +++ b/tests/src/Mod/Assembly/CMakeLists.txt @@ -5,6 +5,11 @@ target_include_directories(Assembly_tests_run PUBLIC ${Python3_INCLUDE_DIRS} ${XercesC_INCLUDE_DIRS} ) +if (NOT FREECAD_USE_EXTERNAL_ONDSELSOLVER) + target_include_directories(Assembly_tests_run PUBLIC + ${CMAKE_SOURCE_DIR}/src/3rdParty/OndselSolver + ) +endif () target_link_directories(Assembly_tests_run PUBLIC ${OCC_LIBRARY_DIR}) target_link_libraries(Assembly_tests_run diff --git a/tests/src/Mod/Material/App/TestMaterialValue.cpp b/tests/src/Mod/Material/App/TestMaterialValue.cpp index 90c739ab8922..15c8afcc2ed3 100644 --- a/tests/src/Mod/Material/App/TestMaterialValue.cpp +++ b/tests/src/Mod/Material/App/TestMaterialValue.cpp @@ -130,7 +130,7 @@ TEST_F(TestMaterialValue, TestQuantityType) EXPECT_EQ(variant.toString().size(), 0); auto quantity = variant.value(); EXPECT_FALSE(quantity.isValid()); - EXPECT_EQ(quantity.getUserString(), QString::fromStdString("nan ")); + EXPECT_EQ(quantity.getUserString(), "nan "); EXPECT_TRUE(std::isnan(quantity.getValue())); // Test a copy @@ -146,7 +146,7 @@ TEST_F(TestMaterialValue, TestQuantityType) EXPECT_EQ(variant.toString().size(), 0); quantity = variant.value(); EXPECT_FALSE(quantity.isValid()); - EXPECT_EQ(quantity.getUserString(), QString::fromStdString("nan ")); + EXPECT_EQ(quantity.getUserString(), "nan "); EXPECT_TRUE(std::isnan(quantity.getValue())); } @@ -246,27 +246,27 @@ TEST_F(TestMaterialValue, TestArray3DType) EXPECT_EQ(mat2.rows(1), 1); EXPECT_EQ(mat2.rows(2), 2); - quantity = Base::Quantity::parse(QString::fromStdString("32 C")); + quantity = Base::Quantity::parse("32 C"); mat2.setDepthValue(quantity); EXPECT_FALSE(mat2.getDepthValue(0).isValid()); EXPECT_FALSE(mat2.getDepthValue(1).isValid()); EXPECT_TRUE(mat2.getDepthValue(2).isValid()); - EXPECT_EQ(mat2.getDepthValue(2), Base::Quantity::parse(QString::fromStdString("32 C"))); + EXPECT_EQ(mat2.getDepthValue(2), Base::Quantity::parse("32 C")); - mat2.setDepthValue(0, Base::Quantity::parse(QString::fromStdString("9.8 m/s/s"))); + mat2.setDepthValue(0, Base::Quantity::parse("9.8 m/s/s")); EXPECT_TRUE(mat2.getDepthValue(0).isValid()); EXPECT_FALSE(mat2.getDepthValue(1).isValid()); EXPECT_TRUE(mat2.getDepthValue(2).isValid()); - EXPECT_EQ(mat2.getDepthValue(0), Base::Quantity::parse(QString::fromStdString("9.8 m/s/s"))); - EXPECT_EQ(mat2.getDepthValue(2), Base::Quantity::parse(QString::fromStdString("32 C"))); + EXPECT_EQ(mat2.getDepthValue(0), Base::Quantity::parse("9.8 m/s/s")); + EXPECT_EQ(mat2.getDepthValue(2), Base::Quantity::parse("32 C")); - mat2.setDepthValue(1, Base::Quantity::parse(QString::fromStdString("120 MPa"))); + mat2.setDepthValue(1, Base::Quantity::parse("120 MPa")); EXPECT_TRUE(mat2.getDepthValue(0).isValid()); EXPECT_TRUE(mat2.getDepthValue(1).isValid()); EXPECT_TRUE(mat2.getDepthValue(2).isValid()); - EXPECT_EQ(mat2.getDepthValue(0), Base::Quantity::parse(QString::fromStdString("9.8 m/s/s"))); - EXPECT_EQ(mat2.getDepthValue(1), Base::Quantity::parse(QString::fromStdString("120 MPa"))); - EXPECT_EQ(mat2.getDepthValue(2), Base::Quantity::parse(QString::fromStdString("32 C"))); + EXPECT_EQ(mat2.getDepthValue(0), Base::Quantity::parse("9.8 m/s/s")); + EXPECT_EQ(mat2.getDepthValue(1), Base::Quantity::parse("120 MPa")); + EXPECT_EQ(mat2.getDepthValue(2), Base::Quantity::parse("32 C")); // Rows are currently empty EXPECT_THROW(mat2.getValue(2, 0), Materials::InvalidIndex); @@ -275,12 +275,11 @@ TEST_F(TestMaterialValue, TestArray3DType) EXPECT_FALSE(mat2.getValue(0, 1).isValid()); // set to a valid quantity - mat2.setValue(0, 0, Base::Quantity::parse(QString::fromStdString("120 MPa"))); + mat2.setValue(0, 0, Base::Quantity::parse("120 MPa")); EXPECT_TRUE(mat2.getValue(0, 0).isValid()); - mat2.setValue(0, 1, Base::Quantity::parse(QString::fromStdString("9.8 m/s/s"))); + mat2.setValue(0, 1, Base::Quantity::parse("9.8 m/s/s")); EXPECT_TRUE(mat2.getValue(0, 1).isValid()); - EXPECT_THROW(mat2.setValue(0, 2, Base::Quantity::parse(QString::fromStdString("32 C"))), Materials::InvalidIndex); - + EXPECT_THROW(mat2.setValue(0, 2, Base::Quantity::parse("32 C")), Materials::InvalidIndex); } // clang-format on diff --git a/tests/src/Mod/Material/App/TestMaterials.cpp b/tests/src/Mod/Material/App/TestMaterials.cpp index bdbc7d3d3a7c..3843d5f1997a 100644 --- a/tests/src/Mod/Material/App/TestMaterials.cpp +++ b/tests/src/Mod/Material/App/TestMaterials.cpp @@ -37,6 +37,7 @@ #include #include +#include #include #include #include @@ -220,10 +221,11 @@ TEST_F(TestMaterial, TestAddAppearanceModel) EXPECT_EQ(models->size(), 0); } -QString parseQuantity(const char *string) +QString parseQuantity(const std::string& value) { - QString value = QString::fromStdString(string); - return Base::Quantity::parse(value).getUserString(); + auto quantity = Base::Quantity::parse(value); + quantity.setFormat(Materials::MaterialValue::getQuantityFormat()); + return QString::fromStdString(quantity.getUserString()); } TEST_F(TestMaterial, TestCalculiXSteel) @@ -340,12 +342,11 @@ TEST_F(TestMaterial, TestCalculiXSteel) EXPECT_EQ(steel->getAppearanceValue(QString::fromStdString("SpecularColor")), QString::fromStdString("(0.9800, 0.9800, 0.9800, 1.0)")); EXPECT_DOUBLE_EQ(steel->getAppearanceValue(QString::fromStdString("Transparency")).toDouble(), 0.0); - EXPECT_EQ(steel->getPhysicalQuantity(QString::fromStdString("Density")).getUserString(), parseQuantity("7900.00 kg/m^3")); - EXPECT_EQ(steel->getPhysicalQuantity(QString::fromStdString("YoungsModulus")).getUserString(), parseQuantity("210.00 GPa")); - EXPECT_EQ(steel->getPhysicalQuantity(QString::fromStdString("SpecificHeat")).getUserString(), parseQuantity("590.00 J/kg/K")); - EXPECT_EQ(steel->getPhysicalQuantity(QString::fromStdString("ThermalConductivity")).getUserString(), parseQuantity("43.00 W/m/K")); - EXPECT_EQ(steel->getPhysicalQuantity(QString::fromStdString("ThermalExpansionCoefficient")).getUserString(), parseQuantity("12.00 µm/m/K")); - + EXPECT_EQ(steel->getPhysicalQuantity(QString::fromStdString("Density")).getUserString(), parseQuantity("7900.00 kg/m^3").toStdString()); + EXPECT_EQ(steel->getPhysicalQuantity(QString::fromStdString("YoungsModulus")).getUserString(), parseQuantity("210.00 GPa").toStdString()); + EXPECT_EQ(steel->getPhysicalQuantity(QString::fromStdString("SpecificHeat")).getUserString(), parseQuantity("590.00 J/kg/K").toStdString()); + EXPECT_EQ(steel->getPhysicalQuantity(QString::fromStdString("ThermalConductivity")).getUserString(), parseQuantity("43.00 W/m/K").toStdString()); + EXPECT_EQ(steel->getPhysicalQuantity(QString::fromStdString("ThermalExpansionCoefficient")).getUserString(), parseQuantity("12.00 µm/m/K").toStdString()); } TEST_F(TestMaterial, TestColumns) diff --git a/tests/src/Mod/Mesh/App/Importer.cpp b/tests/src/Mod/Mesh/App/Importer.cpp index fe6db6055948..76157a61282e 100644 --- a/tests/src/Mod/Mesh/App/Importer.cpp +++ b/tests/src/Mod/Mesh/App/Importer.cpp @@ -1,10 +1,20 @@ #include #include #include +#include #include +class ImporterTest: public ::testing::Test +{ +protected: + static void SetUpTestSuite() + { + XERCES_CPP_NAMESPACE::XMLPlatformUtils::Initialize(); + } +}; + // NOLINTBEGIN(cppcoreguidelines-*,readability-*) -TEST(ImporterTest, Test3MF) +TEST_F(ImporterTest, Test3MF) { std::string file(DATADIR); file.append("/tests/mesh.3mf"); diff --git a/tests/src/Mod/Spreadsheet/App/PropertySheet.cpp b/tests/src/Mod/Spreadsheet/App/PropertySheet.cpp index 4e63b35d0398..a3199f896667 100644 --- a/tests/src/Mod/Spreadsheet/App/PropertySheet.cpp +++ b/tests/src/Mod/Spreadsheet/App/PropertySheet.cpp @@ -76,7 +76,12 @@ TEST_F(PropertySheetTest, validAliases) // NOLINT TEST_F(PropertySheetTest, invalidAliases) // NOLINT { - std::vector invalidAliases {"A1", "ZZ1234", "mm"}; + std::vector invalidAliases {"A1", + "ZZ1234", + "mm", + "no spaces allowed", + "\'NoLeadingQuotes"}; + for (const auto& name : invalidAliases) { EXPECT_FALSE(propertySheet()->isValidAlias(name)) << "\"" << name << "\" was accepted as an alias name, and should not be"; diff --git a/tools/build/MacOS/BUILD_OSX.md b/tools/build/MacOS/BUILD_OSX.md index 8bb5207aac29..5ab1586ced30 100644 --- a/tools/build/MacOS/BUILD_OSX.md +++ b/tools/build/MacOS/BUILD_OSX.md @@ -142,7 +142,7 @@ If FreeCAD is installed via the bottle then one will have to wait for a new bott If any of the dependencies FreeCAD relies on is updated FreeCAD will likely require a rebuild. Mac homebrew does provide a feature to pin packages at specific versions to prevent them from updating, and also allows setting of an environment variable to prevent homebrew from automatically checking for updates (which can slow things down). All that said, FreeCAD can be built using all the dependencies provided by Mac homebrew, but not using the formula file: instead cloning the source to an arbitrary path on a local filesystem. This provides a couple of advantages: - If `brew cleanup` is run and FreeCAD was installed using the above-provided command, all source tarballs or bottles that were _checked out_ or downloaded during the install process will be deleted from the system. If a reinstall or upgrade is later required then homebrew will have to refetch the bottles, or reclone the git source again. -- Mac homebrew provides a method, _install flag_, for keeping the source regardless if the build succeeds or fails. The options are limited, however, and performing a standard `git clone` outside of homebrew is **much** preferred. +- Mac homebrew provides a method, _install flag_, for keeping the source regardless if the build succeeds or fails. The options are limited, however, and performing a standard `git clone` outside of homebrew is **much** preferred. - Cloning the FreeCAD source allows passing **any** cmake flags not provided by the formula file - Allowing the use of other build systems such as _ninja_ - Allowing the use of alternate compilers, e.g. _ccache_ diff --git a/tools/build/WindowsInstaller/README.md b/tools/build/WindowsInstaller/README.md index 9db81808d83a..981f11137ace 100644 --- a/tools/build/WindowsInstaller/README.md +++ b/tools/build/WindowsInstaller/README.md @@ -32,7 +32,7 @@ msvcp140.dll vcamp140.dll vccorlib140.dll vcomp140.dll -``` +``` 3. Open the file *Settings.nsh* with a text editor (both jEdit and Visual Studio Code are good editors for NSIS files). Edit the following paths to correspond to your system: `FILES_FREECAD` corresponds to your installation directory (e.g. `CMAKE_INSTALL_PREFIX` if you self-compiled) and `FILES_DEPS` is the folder you created with the MSVC redistributable files in it. ``` !define FILES_FREECAD "C:\FreeCAD\Installer\FreeCAD"