From 439abaf81fc3ca212fa862c6c5ff91a2bf300a3c Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 29 Nov 2024 15:04:35 +0100 Subject: [PATCH 001/221] Mesh: move PLY reader to own class --- src/Mod/Mesh/App/CMakeLists.txt | 2 + src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp | 560 +++++++++++++++++++++++++ src/Mod/Mesh/App/Core/IO/ReaderPLY.h | 60 +++ src/Mod/Mesh/App/Core/MeshIO.cpp | 514 +---------------------- 4 files changed, 625 insertions(+), 511 deletions(-) create mode 100644 src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp create mode 100644 src/Mod/Mesh/App/Core/IO/ReaderPLY.h 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..cc8884a6f3a1 --- /dev/null +++ b/src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp @@ -0,0 +1,560 @@ +// 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 +#include +#endif + +#include "Core/MeshIO.h" +#include "Core/MeshKernel.h" +#include +#include + +#include "ReaderPLY.h" + + +using namespace MeshCore; + +namespace MeshCore::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 MeshCore::Ply + +using namespace MeshCore::Ply; + +ReaderPLY::ReaderPLY(MeshKernel& kernel, Material* material) + : _kernel(kernel) + , _material(material) +{} + +bool ReaderPLY::Load(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; + } + } + } + } + } + + _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); + + 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..4478a27213a5 --- /dev/null +++ b/src/Mod/Mesh/App/Core/IO/ReaderPLY.h @@ -0,0 +1,60 @@ +// 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 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*); + /*! + * \brief Load the mesh from the input stream + * \return true on success and false otherwise + */ + bool Load(std::istream& input); + +private: + 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) From 2437cd6de0889eef6e6fb8f5e4fdcb3eb628c3f0 Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 29 Nov 2024 17:19:12 +0100 Subject: [PATCH 002/221] Mesh: Refactor ReaderPLY --- src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp | 810 ++++++++++++++----------- src/Mod/Mesh/App/Core/IO/ReaderPLY.h | 67 +- 2 files changed, 518 insertions(+), 359 deletions(-) diff --git a/src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp b/src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp index cc8884a6f3a1..abc61b1da162 100644 --- a/src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp +++ b/src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp @@ -38,57 +38,14 @@ using namespace MeshCore; -namespace MeshCore::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 MeshCore::Ply - -using namespace MeshCore::Ply; - +// http://local.wasp.uwa.edu.au/~pbourke/dataformats/ply/ ReaderPLY::ReaderPLY(MeshKernel& kernel, Material* material) : _kernel(kernel) , _material(material) {} -bool ReaderPLY::Load(std::istream& input) +bool ReaderPLY::CheckHeader(std::istream& input) const { - // 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; } @@ -99,21 +56,189 @@ bool ReaderPLY::Load(std::istream& input) } // read in the first three characters - char ply[3]; - input.read(ply, 3); + std::array ply {}; + input.read(ply.data(), ply.size()); input.ignore(1); if (!input) { return false; } - if ((ply[0] != 'p') || (ply[1] != 'l') || (ply[2] != 'y')) { - return false; // wrong header + + 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; + if (!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; + } + + 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; + if (!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(); + } + + return true; +} + +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(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; + } } - std::vector> vertex_props; - std::vector face_props; - std::string line, element; + return true; +} - MeshIO::Binding rgb_value = MeshIO::OVERALL; +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); @@ -124,139 +249,18 @@ bool ReaderPLY::Load(std::istream& input) 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 + if (!ReadFormat(str)) { 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)) { + if (!ReadElement(str, element)) { 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); - } + if (!ReadProperty(str, element)) { + return false; } } else if (kw == "end_header") { @@ -264,6 +268,11 @@ bool ReaderPLY::Load(std::istream& input) } } + return true; +} + +bool ReaderPLY::VerifyVertexProperty() +{ // check if valid 3d points Property property; std::size_t num_x = std::count_if(vertex_props.begin(), @@ -271,28 +280,24 @@ bool ReaderPLY::Load(std::istream& input) [&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; - } + return ((num_x == 1) && (num_y == 1) && (num_z == 1)); +} + +bool ReaderPLY::VerifyColorProperty() +{ for (auto& it : vertex_props) { if (it.first == "diffuse_red") { it.first = "red"; @@ -306,21 +311,25 @@ bool ReaderPLY::Load(std::istream& input) } // check if valid colors are set + Property property; 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; @@ -328,233 +337,318 @@ bool ReaderPLY::Load(std::istream& input) // 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 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) +{ + 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::smatch what; + std::string line; + + 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); - } + Base::Vector3f pt; + pt.x = (prop_values["x"]); + pt.y = (prop_values["y"]); + pt.z = (prop_values["z"]); + meshPoints.push_back(pt); + + if (_material && _material->binding == 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)); - } + return true; +} + +bool ReaderPLY::ReadFaces(std::istream& input) +{ + boost::regex rx_f(R"(^\s*3\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s*)"); + boost::smatch what; + std::string line; + + for (std::size_t i = 0; i < f_count && std::getline(input, line); i++) { + if (boost::regex_search(line, what, rx_f)) { + int f1 {}; + int f2 {}; + int f3 {}; + 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); + + return true; +} + +bool ReaderPLY::LoadAscii(std::istream& input) +{ + if (!ReadVertexes(input)) { + return false; + } + + if (!ReadFaces(input)) { + return false; + } + + CleanupMesh(); + return true; +} + +bool ReaderPLY::ReadVertexes(Base::InputStream& is) +{ + std::string prop_x = "x"; + std::string prop_y = "y"; + std::string prop_z = "z"; + std::string prop_r = "red"; + std::string prop_g = "gree"; + std::string prop_b = "blue"; + 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; + } } - else { - is.setByteOrder(Base::Stream::BigEndian); + + Base::Vector3f pt; + pt.x = (prop_values[prop_x]); + pt.y = (prop_values[prop_y]); + pt.z = (prop_values[prop_z]); + meshPoints.push_back(pt); + + if (_material && _material->binding == MeshIO::PER_VERTEX) { + float r = (prop_values[prop_r]) / 255.0F; + float g = (prop_values[prop_g]) / 255.0F; + float b = (prop_values[prop_b]) / 255.0F; + _material->diffuseColor.emplace_back(r, g, b); } + } + + return true; +} - 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) { +bool ReaderPLY::ReadFaces(Base::InputStream& is) +{ + unsigned char n {}; + uint32_t f1 {}; + uint32_t f2 {}; + uint32_t 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; - 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: { + is >> n; float v {}; - is >> v; - prop_values[it.first] = v; + for (unsigned char j = 0; j < n; j++) { + is >> v; + } } break; case float64: { + is >> n; double v {}; - is >> v; - prop_values[it.first] = static_cast(v); + for (unsigned char j = 0; j < n; j++) { + is >> 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; - } - } - } - } + 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); } - _kernel.Clear(); // remove all data before + if (!ReadVertexes(is)) { + return false; + } - MeshCleanup meshCleanup(meshPoints, meshFacets); - if (_material) { - meshCleanup.SetMaterial(_material); + if (!ReadFaces(is)) { + return false; } - meshCleanup.RemoveInvalids(); - MeshPointFacetAdjacency meshAdj(meshPoints.size(), meshFacets); - meshAdj.SetFacetNeighbourhood(); - _kernel.Adopt(meshPoints, meshFacets); + CleanupMesh(); return true; } diff --git a/src/Mod/Mesh/App/Core/IO/ReaderPLY.h b/src/Mod/Mesh/App/Core/IO/ReaderPLY.h index 4478a27213a5..fceb08e21015 100644 --- a/src/Mod/Mesh/App/Core/IO/ReaderPLY.h +++ b/src/Mod/Mesh/App/Core/IO/ReaderPLY.h @@ -29,6 +29,11 @@ #include #include +namespace Base +{ +class InputStream; +} + namespace MeshCore { @@ -42,7 +47,7 @@ class MeshExport ReaderPLY /*! * \brief ReaderPLY */ - explicit ReaderPLY(MeshKernel& kernel, Material*); + explicit ReaderPLY(MeshKernel& kernel, Material* = nullptr); /*! * \brief Load the mesh from the input stream * \return true on success and false otherwise @@ -50,6 +55,66 @@ class MeshExport ReaderPLY 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: + struct Property + { + using argument_type_1st = std::pair; + using argument_type_2nd = std::string; + 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 Number + { + int8, + uint8, + int16, + uint16, + int32, + uint32, + float32, + float64 + }; + + 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; }; From 6270d7657dcdde667e697e8f8a9a14fc4f2295ea Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 29 Nov 2024 18:50:11 +0100 Subject: [PATCH 003/221] Mesh: Reduce time of importing binary PLY files by around 60 percent --- src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp | 120 +++++++++++++------------ src/Mod/Mesh/App/Core/IO/ReaderPLY.h | 42 ++++++--- 2 files changed, 90 insertions(+), 72 deletions(-) diff --git a/src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp b/src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp index abc61b1da162..ff29c4e4d248 100644 --- a/src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp +++ b/src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp @@ -121,6 +121,30 @@ bool ReaderPLY::ReadElement(std::istream& str, std::string& element) 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; @@ -159,7 +183,7 @@ bool ReaderPLY::ReadVertexProperty(std::istream& str) } // store the property name and type - vertex_props.emplace_back(name, number); + vertex_props.emplace_back(propertyOfName(name), number); return true; } @@ -274,23 +298,23 @@ bool ReaderPLY::ReadHeader(std::istream& input) bool ReaderPLY::VerifyVertexProperty() { // check if valid 3d points - Property property; + PropertyComp property; std::size_t num_x = std::count_if(vertex_props.begin(), vertex_props.end(), - [&property](const std::pair& p) { - return property(p, "x"); + [&property](const std::pair& p) { + return property(p, coord_x); }); std::size_t num_y = std::count_if(vertex_props.begin(), vertex_props.end(), - [&property](const std::pair& p) { - return property(p, "y"); + [&property](const std::pair& p) { + return property(p, coord_y); }); std::size_t num_z = std::count_if(vertex_props.begin(), vertex_props.end(), - [&property](const std::pair& p) { - return property(p, "z"); + [&property](const std::pair& p) { + return property(p, coord_z); }); return ((num_x == 1) && (num_y == 1) && (num_z == 1)); @@ -298,36 +322,24 @@ bool ReaderPLY::VerifyVertexProperty() bool ReaderPLY::VerifyColorProperty() { - 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 - Property property; + PropertyComp property; std::size_t num_r = std::count_if(vertex_props.begin(), vertex_props.end(), - [&property](const std::pair& p) { - return property(p, "red"); + [&property](const std::pair& p) { + return property(p, color_r); }); std::size_t num_g = std::count_if(vertex_props.begin(), vertex_props.end(), - [&property](const std::pair& p) { - return property(p, "green"); + [&property](const std::pair& p) { + return property(p, color_g); }); std::size_t num_b = std::count_if(vertex_props.begin(), vertex_props.end(), - [&property](const std::pair& p) { - return property(p, "blue"); + [&property](const std::pair& p) { + return property(p, color_b); }); std::size_t rgb_colors = num_r + num_g + num_b; @@ -395,7 +407,7 @@ bool ReaderPLY::ReadVertexes(std::istream& input) for (std::size_t i = 0; i < v_count && std::getline(input, line); i++) { // go through the vertex properties - std::map prop_values; + PropertyArray prop_values {}; for (const auto& it : vertex_props) { switch (it.second) { case int8: @@ -441,18 +453,7 @@ bool ReaderPLY::ReadVertexes(std::istream& input) } } - Base::Vector3f pt; - pt.x = (prop_values["x"]); - pt.y = (prop_values["y"]); - pt.z = (prop_values["z"]); - meshPoints.push_back(pt); - - if (_material && _material->binding == 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); - } + addVertexProperty(prop_values); } return true; @@ -493,17 +494,29 @@ bool ReaderPLY::LoadAscii(std::istream& input) 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) { - std::string prop_x = "x"; - std::string prop_y = "y"; - std::string prop_z = "z"; - std::string prop_r = "red"; - std::string prop_g = "gree"; - std::string prop_b = "blue"; for (std::size_t i = 0; i < v_count; i++) { // go through the vertex properties - std::map prop_values; + PropertyArray prop_values {}; for (const auto& it : vertex_props) { switch (it.second) { case int8: { @@ -551,18 +564,7 @@ bool ReaderPLY::ReadVertexes(Base::InputStream& is) } } - Base::Vector3f pt; - pt.x = (prop_values[prop_x]); - pt.y = (prop_values[prop_y]); - pt.z = (prop_values[prop_z]); - meshPoints.push_back(pt); - - if (_material && _material->binding == MeshIO::PER_VERTEX) { - float r = (prop_values[prop_r]) / 255.0F; - float g = (prop_values[prop_g]) / 255.0F; - float b = (prop_values[prop_b]) / 255.0F; - _material->diffuseColor.emplace_back(r, g, b); - } + addVertexProperty(prop_values); } return true; diff --git a/src/Mod/Mesh/App/Core/IO/ReaderPLY.h b/src/Mod/Mesh/App/Core/IO/ReaderPLY.h index fceb08e21015..e4ca967ace87 100644 --- a/src/Mod/Mesh/App/Core/IO/ReaderPLY.h +++ b/src/Mod/Mesh/App/Core/IO/ReaderPLY.h @@ -73,21 +73,22 @@ class MeshExport ReaderPLY void CleanupMesh(); private: - struct Property + enum Property { - using argument_type_1st = std::pair; - using argument_type_2nd = std::string; - 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 + 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, @@ -100,6 +101,21 @@ class MeshExport ReaderPLY 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, @@ -108,7 +124,7 @@ class MeshExport ReaderPLY binary_big_endian } format = unknown; - std::vector> vertex_props; + std::vector> vertex_props; std::vector face_props; std::size_t v_count = 0; From 3cb80f93074e6532d8a60d050020694a86324474 Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 29 Nov 2024 20:58:24 +0100 Subject: [PATCH 004/221] Mesh: Reduce time of importing ASCII PLY files by around 85 percent --- src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp | 88 ++++++++++++-------------- 1 file changed, 42 insertions(+), 46 deletions(-) diff --git a/src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp b/src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp index ff29c4e4d248..1ab1537a7341 100644 --- a/src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp +++ b/src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp @@ -24,7 +24,6 @@ #include "PreCompiled.h" #ifndef _PreComp_ #include -#include #include #endif @@ -398,59 +397,49 @@ void ReaderPLY::CleanupMesh() bool ReaderPLY::ReadVertexes(std::istream& input) { - 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::smatch what; 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: { - 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; - } + int v {}; + str >> v >> std::ws; + prop_values[it.first] = static_cast(v); } 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; - } + unsigned int v {}; + str >> v >> std::ws; + prop_values[it.first] = static_cast(v); + } break; + case float32: { + float v {}; + str >> v >> std::ws; + prop_values[it.first] = v; } 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; - } + double v {}; + str >> v >> std::ws; + prop_values[it.first] = static_cast(v); } break; default: return false; } + + // does line contain all properties + if (--count_props > 0 && str.eof()) { + return false; + } } addVertexProperty(prop_values); @@ -461,20 +450,27 @@ bool ReaderPLY::ReadVertexes(std::istream& input) bool ReaderPLY::ReadFaces(std::istream& input) { - boost::regex rx_f(R"(^\s*3\s+([0-9]+)\s+([0-9]+)\s+([0-9]+)\s*)"); - boost::smatch what; + 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++) { - if (boost::regex_search(line, what, rx_f)) { - int f1 {}; - int f2 {}; - int f3 {}; - 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)); + 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& v : v_indices) { + str >> v >> 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; From fe7bff5a9ab2b60933cd31e64ec933b4f39729bf Mon Sep 17 00:00:00 2001 From: Vincenzo Calligaro Date: Sat, 7 Dec 2024 11:36:53 +0100 Subject: [PATCH 005/221] [PartDesign] Hole: restore missing call to FeatureAddSub::refineShapeIfActive() Signed-off-by: Vincenzo Calligaro --- src/Mod/PartDesign/App/FeatureHole.cpp | 1 + .../PartDesign/PartDesignTests/TestHole.py | 78 +++++++++++++++++++ 2 files changed, 79 insertions(+) diff --git a/src/Mod/PartDesign/App/FeatureHole.cpp b/src/Mod/PartDesign/App/FeatureHole.cpp index b2b9054698b4..cd46abc5195a 100644 --- a/src/Mod/PartDesign/App/FeatureHole.cpp +++ b/src/Mod/PartDesign/App/FeatureHole.cpp @@ -1950,6 +1950,7 @@ App::DocumentObjectExecReturn* Hole::execute() } result = base; } + result = refineShapeIfActive(result); if (!isSingleSolidRuleSatisfied(result.getShape())) { return new App::DocumentObjectExecReturn( 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") From f2e57b4eb4fc294e5d40012135d6d4d50aa98778 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sat, 7 Dec 2024 19:28:04 +0100 Subject: [PATCH 006/221] Sketch: Fix Python type hints in addExternal The syntax of type hints in Python is 'argument name: argument type'. For more details see: https://docs.python.org/3/library/typing.html --- src/Mod/Sketcher/App/SketchObjectPy.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Mod/Sketcher/App/SketchObjectPy.xml b/src/Mod/Sketcher/App/SketchObjectPy.xml index b47a995cbc4c..3876cded4672 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. From cebcb7f66c79e6976b5cc262f9b0e26bc856a6ed Mon Sep 17 00:00:00 2001 From: wmayer Date: Sat, 7 Dec 2024 19:55:49 +0100 Subject: [PATCH 007/221] Sketch: Fix SketchObjectPy::addExternal Use PyArg_ParseTuple's support of optional arguments than doing it with several calls of PyArg_ParseTuple with different arguments. This is error-prone, leads to convoluted code logic and may even fail because once the error indicator is set PyArg_ParseTuple may unexpectedly fail. --- src/Mod/Sketcher/App/SketchObjectPyImp.cpp | 33 ++++++---------------- 1 file changed, 9 insertions(+), 24 deletions(-) diff --git a/src/Mod/Sketcher/App/SketchObjectPyImp.cpp b/src/Mod/Sketcher/App/SketchObjectPyImp.cpp index 67550b5cb5cc..f6dd98a1ce3b 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); From e09e10777854a6e5f1713ec05609544d040e8f03 Mon Sep 17 00:00:00 2001 From: Vincenzo Calligaro Date: Sat, 7 Dec 2024 17:52:41 +0100 Subject: [PATCH 008/221] Updated tests affected by the modification Signed-off-by: Vincenzo Calligaro --- src/Mod/Sketcher/SketcherTests/TestSketcherSolver.py | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/Mod/Sketcher/SketcherTests/TestSketcherSolver.py b/src/Mod/Sketcher/SketcherTests/TestSketcherSolver.py index e9936cf61e2c..c3e42a97f613 100644 --- a/src/Mod/Sketcher/SketcherTests/TestSketcherSolver.py +++ b/src/Mod/Sketcher/SketcherTests/TestSketcherSolver.py @@ -520,22 +520,23 @@ def testRemovedExternalGeometryReference(self): hole.DrillForDepth = 0 hole.Tapered = 0 self.Doc.recompute() - self.assertEqual(len(hole.Shape.Edges), 13) + self.assertEqual(len(hole.Shape.Edges), 12) hole.Threaded = True hole.ModelThread = True - body.addObject(hole) + # body.addObject(hole) # Commented out as this is a duplicate + # (already performed after hole = self.Doc.addObject("PartDesign::Hole", "Hole")) # sketch2 = self.Doc.addObject("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) + self.assertEqual(len(hole.Shape.Edges), 32) hole.ModelThread = False hole.Refine = True self.Doc.recompute() - self.assertEqual(len(hole.Shape.Edges), 38) - self.assertEqual(len(sketch2.ExternalGeometry), 1) + self.assertEqual(len(hole.Shape.Edges), 12) + self.assertEqual(len(sketch2.ExternalGeometry), 0) def testSaveLoadWithExternalGeometryReference(self): # Arrange From 173df9447aec5e683e78543f8dbd1abd0e10bb03 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sat, 7 Dec 2024 13:17:53 +0100 Subject: [PATCH 009/221] Mesh: Fix linter warnings --- src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp | 162 +++++++++++++------------ 1 file changed, 87 insertions(+), 75 deletions(-) diff --git a/src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp b/src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp index 1ab1537a7341..084132421c9f 100644 --- a/src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp +++ b/src/Mod/Mesh/App/Core/IO/ReaderPLY.cpp @@ -73,9 +73,14 @@ bool ReaderPLY::ReadFormat(std::istream& str) char space_format_version {}; str >> space_format_string >> std::ws >> format_string >> space_format_version >> std::ws >> version; - if (!std::isspace(space_format_string) || !std::isspace(space_format_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; } @@ -100,9 +105,14 @@ bool ReaderPLY::ReadElement(std::istream& str, std::string& element) char space_element_name {}; char space_name_count {}; str >> space_element_name >> std::ws >> name >> space_name_count >> std::ws >> count; - if (!std::isspace(space_element_name) || !std::isspace(space_name_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; @@ -300,20 +310,20 @@ bool ReaderPLY::VerifyVertexProperty() PropertyComp property; std::size_t num_x = std::count_if(vertex_props.begin(), vertex_props.end(), - [&property](const std::pair& p) { - return property(p, coord_x); + [&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& p) { - return property(p, coord_y); + [&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& p) { - return property(p, coord_z); + [&property](const std::pair& prop) { + return property(prop, coord_z); }); return ((num_x == 1) && (num_y == 1) && (num_z == 1)); @@ -325,20 +335,20 @@ bool ReaderPLY::VerifyColorProperty() PropertyComp property; std::size_t num_r = std::count_if(vertex_props.begin(), vertex_props.end(), - [&property](const std::pair& p) { - return property(p, color_r); + [&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& p) { - return property(p, color_g); + [&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& p) { - return property(p, color_b); + [&property](const std::pair& prop) { + return property(prop, color_b); }); std::size_t rgb_colors = num_r + num_g + num_b; @@ -411,26 +421,26 @@ bool ReaderPLY::ReadVertexes(std::istream& input) case int8: case int16: case int32: { - int v {}; - str >> v >> std::ws; - prop_values[it.first] = static_cast(v); + int vt {}; + str >> vt >> std::ws; + prop_values[it.first] = static_cast(vt); } break; case uint8: case uint16: case uint32: { - unsigned int v {}; - str >> v >> std::ws; - prop_values[it.first] = static_cast(v); + unsigned int vt {}; + str >> vt >> std::ws; + prop_values[it.first] = static_cast(vt); } break; case float32: { - float v {}; - str >> v >> std::ws; - prop_values[it.first] = v; + float vt {}; + str >> vt >> std::ws; + prop_values[it.first] = vt; } break; case float64: { - double v {}; - str >> v >> std::ws; - prop_values[it.first] = static_cast(v); + double vt {}; + str >> vt >> std::ws; + prop_values[it.first] = static_cast(vt); } break; default: return false; @@ -459,8 +469,8 @@ bool ReaderPLY::ReadFaces(std::istream& input) std::array v_indices {}; std::size_t index = count_props; - for (int& v : v_indices) { - str >> v >> std::ws; + for (int& vt : v_indices) { + str >> vt >> std::ws; if (--index > 0 && str.eof()) { return false; } @@ -516,44 +526,44 @@ bool ReaderPLY::ReadVertexes(Base::InputStream& is) for (const auto& it : vertex_props) { switch (it.second) { case int8: { - int8_t v {}; - is >> v; - prop_values[it.first] = static_cast(v); + int8_t vt {}; + is >> vt; + prop_values[it.first] = static_cast(vt); } break; case uint8: { - uint8_t v {}; - is >> v; - prop_values[it.first] = static_cast(v); + uint8_t vt {}; + is >> vt; + prop_values[it.first] = static_cast(vt); } break; case int16: { - int16_t v {}; - is >> v; - prop_values[it.first] = static_cast(v); + int16_t vt {}; + is >> vt; + prop_values[it.first] = static_cast(vt); } break; case uint16: { - uint16_t v {}; - is >> v; - prop_values[it.first] = static_cast(v); + uint16_t vt {}; + is >> vt; + prop_values[it.first] = static_cast(vt); } break; case int32: { - int32_t v {}; - is >> v; - prop_values[it.first] = static_cast(v); + int32_t vt {}; + is >> vt; + prop_values[it.first] = static_cast(vt); } break; case uint32: { - uint32_t v {}; - is >> v; - prop_values[it.first] = static_cast(v); + uint32_t vt {}; + is >> vt; + prop_values[it.first] = static_cast(vt); } break; case float32: { - float v {}; - is >> v; - prop_values[it.first] = v; + float vt {}; + is >> vt; + prop_values[it.first] = vt; } break; case float64: { - double v {}; - is >> v; - prop_values[it.first] = static_cast(v); + double vt {}; + is >> vt; + prop_values[it.first] = static_cast(vt); } break; default: return false; @@ -568,13 +578,13 @@ bool ReaderPLY::ReadVertexes(Base::InputStream& is) bool ReaderPLY::ReadFaces(Base::InputStream& is) { - unsigned char n {}; + unsigned char num {}; uint32_t f1 {}; uint32_t f2 {}; uint32_t f3 {}; for (std::size_t i = 0; i < f_count; i++) { - is >> n; - if (n == 3) { + 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)); @@ -582,41 +592,43 @@ bool ReaderPLY::ReadFaces(Base::InputStream& is) for (auto it : face_props) { switch (it) { case int8: { - int8_t v {}; - is >> v; + int8_t vt {}; + is >> vt; } break; case uint8: { - uint8_t v {}; - is >> v; + uint8_t vt {}; + is >> vt; } break; case int16: { - int16_t v {}; - is >> v; + int16_t vt {}; + is >> vt; } break; case uint16: { - uint16_t v {}; - is >> v; + uint16_t vt {}; + is >> vt; } break; case int32: { - int32_t v {}; - is >> v; + int32_t vt {}; + is >> vt; } break; case uint32: { - uint32_t v {}; - is >> v; + uint32_t vt {}; + is >> vt; } break; case float32: { - is >> n; - float v {}; - for (unsigned char j = 0; j < n; j++) { - is >> v; + unsigned char cnt {}; + is >> cnt; + float vt {}; + for (unsigned char j = 0; j < cnt; j++) { + is >> vt; } } break; case float64: { - is >> n; - double v {}; - for (unsigned char j = 0; j < n; j++) { - is >> v; + unsigned char cnt {}; + is >> cnt; + double vt {}; + for (unsigned char j = 0; j < cnt; j++) { + is >> vt; } } break; default: From b0b843e34b09ee3e928d68ff59646c326f36d520 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 22:02:49 +0000 Subject: [PATCH 010/221] [pre-commit.ci] pre-commit autoupdate MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit updates: - [github.com/pre-commit/mirrors-clang-format: 7d85583be209cb547946c82fbe51f4bc5dd1d017 → fed9a1f62c22af0bc846a260ebfeb0844368fd93](https://github.com/pre-commit/mirrors-clang-format/compare/7d85583be209cb547946c82fbe51f4bc5dd1d017...fed9a1f62c22af0bc846a260ebfeb0844368fd93) --- .pre-commit-config.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From 9caa6d2c7b63b87c293cd5e45d8adf12a0725bdb Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 9 Dec 2024 22:06:48 +0000 Subject: [PATCH 011/221] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/Base/FileInfo.cpp | 16 ++++------------ src/Mod/CAM/App/PathSegmentWalker.cpp | 2 +- 2 files changed, 5 insertions(+), 13 deletions(-) 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/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); From ce55d6be75734ed083bf653e52b0b69fc33aaf55 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sat, 7 Dec 2024 12:51:10 +0100 Subject: [PATCH 012/221] Gui: Rename ViewProviderDatum::getRoot() to ViewProviderDatum::getDatumRoot() Before the change the compiler raised the warning: 'Gui::ViewProviderDatum::getRoot' hides overloaded virtual function [-Werror,-Woverloaded-virtual] In the base class the method getRoot() is declared as const while in ViewProviderDatum it's not and that's why it's considered as an overloaded method. However, this signature causes two problems: 1. In the client code it's not always clear which version of getRoot() should be called 2. It violates const-correctness So, trying to declare the method ViewProviderDatum::getRoot() as const it now overrides the method of the base class (and fixes the warning) but this doesn't lead to the expected result: See https://forum.freecad.org/viewtopic.php?p=796064#p796064 The other option is to rename the method. And this gives the expected result now. --- src/Gui/ViewProviderDatum.h | 4 ++-- src/Gui/ViewProviderLine.cpp | 2 +- src/Gui/ViewProviderPlane.cpp | 2 +- src/Gui/ViewProviderPoint.cpp | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/Gui/ViewProviderDatum.h b/src/Gui/ViewProviderDatum.h index 857037ae286c..e2c25559d0ff 100644 --- a/src/Gui/ViewProviderDatum.h +++ b/src/Gui/ViewProviderDatum.h @@ -44,10 +44,10 @@ namespace Gui ~ViewProviderDatum() override; /// Get point derived classes will add their specific stuff - SoSeparator* getRoot() { return pRoot; } + SoSeparator* getDatumRoot() const { return pRoot; } /// Get pointer to the text label associated with the feature - SoText2* getLabel() { return pLabel; } + SoText2* getLabel() const { return pLabel; } void attach(App::DocumentObject*) override; std::vector getDisplayModes() const override; diff --git a/src/Gui/ViewProviderLine.cpp b/src/Gui/ViewProviderLine.cpp index a3d99cf640fb..bcc464da5854 100644 --- a/src/Gui/ViewProviderLine.cpp +++ b/src/Gui/ViewProviderLine.cpp @@ -94,7 +94,7 @@ void ViewProviderLine::attach(App::DocumentObject *obj) { // 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); diff --git a/src/Gui/ViewProviderPlane.cpp b/src/Gui/ViewProviderPlane.cpp index 7c567e4505de..25e6fe577f63 100644 --- a/src/Gui/ViewProviderPlane.cpp +++ b/src/Gui/ViewProviderPlane.cpp @@ -114,7 +114,7 @@ void ViewProviderPlane::attach(App::DocumentObject * obj) { // indexes used to create the edges static const int32_t lines[6] = { 0, 1, 2, 3, 0, -1 }; - SoSeparator* sep = getRoot(); + SoSeparator* sep = getDatumRoot(); auto pCoords = new SoCoordinate3(); pCoords->point.setNum(4); diff --git a/src/Gui/ViewProviderPoint.cpp b/src/Gui/ViewProviderPoint.cpp index edcde697261c..3e87d23bfc0a 100644 --- a/src/Gui/ViewProviderPoint.cpp +++ b/src/Gui/ViewProviderPoint.cpp @@ -52,7 +52,7 @@ 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); From 20d64a7f0ffc9653e7e30a438bd37fcd5d26a01d Mon Sep 17 00:00:00 2001 From: luzpaz Date: Tue, 10 Dec 2024 12:54:10 +0000 Subject: [PATCH 013/221] Fix various typos Found via `codespell -q 3 -L aci,addmin,ake,aline,alle,alledges,alocation,als,ang,anid,anormal,aply,apoints,ba,beginn,behaviour,bloaded,bottome,brushin,bu,byteorder,calculater,cancelled,cancelling,cas,cascade,centimetre,childrens,childs,colour,colours,commen,connexion,currenty,documentin,dof,doubleclick,dum,eiter,elemente,ende,feld,finde,findf,findn,fle,freez,graphin,hist,iff,incrementin,indexin,indicies,initialisation,initialise,initialised,initialises,initialisiert,inout,ist,itsel,kilometre,leadin,lod,mantatory,methode,metres,millimetre,modell,nd,noe,normale,normaly,nto,numer,oce,oder,ontop,orgin,orginx,orginy,ot,pard,parm,parms,pres,programm,que,rady,recurrance,renderin,rin,ro,rougly,sectionin,seperator,serie,shs,sinc,siz,som,strack,substraction,te,technic,thist,thru,tread,tru,ue,uint,unter,uptodate,vas,vertexes,vew,wallthickness,whitespaces -S "./.git,*.po,*.ts,*.pdf,./ChangeLog.txt,./src/3rdParty,./src/Mod/Assembly/App/opendcm,./src/CXX,./src/zipios++,./src/Base/swig*,./src/Mod/Robot/App/kdl_cp,./src/Mod/Import/App/SCL,./src/WindowsInstaller,./src/Doc/FreeCAD.uml,./src/Base/StackWalker.cpp,./build/doc/SourceDoc,./tools/build/WindowsInstaller/lang,./src/Mod/TechDraw/Templates/locale"` --- src/Mod/CAM/CAMTests/TestPathHelix.py | 2 +- src/Mod/Draft/draftgeoutils/circles.py | 4 ++-- src/Mod/Sketcher/App/SketchObject.cpp | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) 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/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/Sketcher/App/SketchObject.cpp b/src/Mod/Sketcher/App/SketchObject.cpp index ddb5788dadd6..fe39ee810de0 100644 --- a/src/Mod/Sketcher/App/SketchObject.cpp +++ b/src/Mod/Sketcher/App/SketchObject.cpp @@ -3512,7 +3512,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, From 396963006be18897d4bc58762f93e1f5b805e7d9 Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Mon, 9 Dec 2024 14:25:36 +0100 Subject: [PATCH 014/221] Core: SoShapeScale fix weird scaling on viewport resize. See https://github.com/FreeCAD/FreeCAD/issues/18382#issuecomment-2527623758 --- src/Gui/Inventor/SoAxisCrossKit.cpp | 14 ++++++++------ src/Gui/ViewProviderDatum.cpp | 7 +++---- src/Gui/ViewProviderLine.cpp | 2 +- src/Gui/ViewProviderPlane.cpp | 2 +- src/Gui/ViewProviderPoint.cpp | 3 ++- src/Mod/Assembly/JointObject.py | 2 +- src/Mod/Assembly/SoSwitchMarker.py | 2 +- src/Mod/CAM/Gui/ViewProviderPath.cpp | 2 +- src/Mod/CAM/Path/Dressup/Gui/Tags.py | 2 +- src/Mod/CAM/Path/Main/Gui/Job.py | 4 ++-- 10 files changed, 21 insertions(+), 19 deletions(-) diff --git a/src/Gui/Inventor/SoAxisCrossKit.cpp b/src/Gui/Inventor/SoAxisCrossKit.cpp index ff02b98d29f4..ad11a4fc6007 100644 --- a/src/Gui/Inventor/SoAxisCrossKit.cpp +++ b/src/Gui/Inventor/SoAxisCrossKit.cpp @@ -85,24 +85,26 @@ 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); 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/ViewProviderDatum.cpp b/src/Gui/ViewProviderDatum.cpp index 8195d9c242cd..93736271b13f 100644 --- a/src/Gui/ViewProviderDatum.cpp +++ b/src/Gui/ViewProviderDatum.cpp @@ -78,7 +78,6 @@ void ViewProviderDatum::attach(App::DocumentObject* pcObject) { ViewProviderGeometryObject::attach(pcObject); - float defaultSz = ViewProviderCoordinateSystem::defaultSize(); // Create an external separator auto sep = new SoSeparator(); @@ -93,8 +92,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 @@ -135,7 +134,7 @@ void ViewProviderDatum::attach(App::DocumentObject* pcObject) // Scale feature to the given size 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; diff --git a/src/Gui/ViewProviderLine.cpp b/src/Gui/ViewProviderLine.cpp index bcc464da5854..edf31b38cca6 100644 --- a/src/Gui/ViewProviderLine.cpp +++ b/src/Gui/ViewProviderLine.cpp @@ -79,7 +79,7 @@ void ViewProviderLine::attach(App::DocumentObject *obj) { 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) { diff --git a/src/Gui/ViewProviderPlane.cpp b/src/Gui/ViewProviderPlane.cpp index 25e6fe577f63..a0ea2c40bb9f 100644 --- a/src/Gui/ViewProviderPlane.cpp +++ b/src/Gui/ViewProviderPlane.cpp @@ -92,7 +92,7 @@ void ViewProviderPlane::attach(App::DocumentObject * obj) { noRole = true; } - 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 diff --git a/src/Gui/ViewProviderPoint.cpp b/src/Gui/ViewProviderPoint.cpp index 3e87d23bfc0a..22c27aaed1bb 100644 --- a/src/Gui/ViewProviderPoint.cpp +++ b/src/Gui/ViewProviderPoint.cpp @@ -59,8 +59,9 @@ void ViewProviderPoint::attach(App::DocumentObject * obj) { 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/Mod/Assembly/JointObject.py b/src/Mod/Assembly/JointObject.py index a2c06ea7ca5e..5c6f8d655955 100644 --- a/src/Mod/Assembly/JointObject.py +++ b/src/Mod/Assembly/JointObject.py @@ -999,7 +999,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() 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/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) From 8b6b66040c9ff8afd0cb7e390915e43d06fcd14b Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Mon, 9 Dec 2024 14:26:28 +0100 Subject: [PATCH 015/221] SoShapeScale: Fix SoShapeScale does not take DPI scaling into account --- src/Gui/CMakeLists.txt | 2 + src/Gui/Inventor/SoAxisCrossKit.cpp | 6 ++- src/Gui/SoDevicePixelRatioElement.cpp | 55 +++++++++++++++++++++++++++ src/Gui/SoDevicePixelRatioElement.h | 51 +++++++++++++++++++++++++ src/Gui/SoFCDB.cpp | 2 + src/Gui/View3DInventorViewer.cpp | 2 + 6 files changed, 116 insertions(+), 2 deletions(-) create mode 100644 src/Gui/SoDevicePixelRatioElement.cpp create mode 100644 src/Gui/SoDevicePixelRatioElement.h diff --git a/src/Gui/CMakeLists.txt b/src/Gui/CMakeLists.txt index 3bf6f8d4621a..9e71c9a4f7a7 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/Inventor/SoAxisCrossKit.cpp b/src/Gui/Inventor/SoAxisCrossKit.cpp index ad11a4fc6007..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. @@ -101,6 +100,9 @@ SoShapeScale::GLRender(SoGLRenderAction * action) 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){ scale->scaleFactor = v; 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/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/View3DInventorViewer.cpp b/src/Gui/View3DInventorViewer.cpp index 3a4b9cea2fc0..e27592adb42f 100644 --- a/src/Gui/View3DInventorViewer.cpp +++ b/src/Gui/View3DInventorViewer.cpp @@ -107,6 +107,7 @@ #include "NaviCube.h" #include "NavigationStyle.h" #include "Selection.h" +#include "SoDevicePixelRatioElement.h" #include "SoFCDB.h" #include "SoFCInteractiveElement.h" #include "SoFCOffscreenRenderer.h" @@ -2360,6 +2361,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); From ab5b53e972d8f91a4238c1a68569db9d70d2956d Mon Sep 17 00:00:00 2001 From: wmayer Date: Tue, 10 Dec 2024 17:41:43 +0100 Subject: [PATCH 016/221] Sketcher: Fix warning [-Wmaybe-uninitialized] --- src/Mod/Sketcher/App/SketchObject.cpp | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/Mod/Sketcher/App/SketchObject.cpp b/src/Mod/Sketcher/App/SketchObject.cpp index fe39ee810de0..a3f7336cbacb 100644 --- a/src/Mod/Sketcher/App/SketchObject.cpp +++ b/src/Mod/Sketcher/App/SketchObject.cpp @@ -8213,7 +8213,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 +8228,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() From 438c6d730f9f7c30f23471702fe91423fdd1b9a3 Mon Sep 17 00:00:00 2001 From: wmayer Date: Tue, 10 Dec 2024 16:27:42 +0100 Subject: [PATCH 017/221] Core: Fix pre-selection of coordinate system --- src/Gui/ViewProviderDatum.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/Gui/ViewProviderDatum.cpp b/src/Gui/ViewProviderDatum.cpp index 93736271b13f..1e30a3ea66e0 100644 --- a/src/Gui/ViewProviderDatum.cpp +++ b/src/Gui/ViewProviderDatum.cpp @@ -106,13 +106,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(); @@ -126,9 +128,9 @@ void ViewProviderDatum::attach(App::DocumentObject* pcObject) // Hidden lines hidden->addChild(pRoot); - highlight->addChild(hidden); + visible->addChild(hidden); - sep->addChild(highlight); + sep->addChild(visible); // Scale feature to the given size @@ -139,7 +141,9 @@ void ViewProviderDatum::attach(App::DocumentObject* pcObject) soScale->setPart("shape", sep); soScale->scaleFactor = sz; - addDisplayMaskMode(soScale, "Base"); + highlight->addChild(soScale); + + addDisplayMaskMode(highlight, "Base"); } From fbd7d201d52102b72354aa201f175a33218bfffe Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Fri, 9 Aug 2024 10:37:49 +0200 Subject: [PATCH 018/221] BIM: BimViews upgrade --- src/Mod/BIM/Arch.py | 24 +- src/Mod/BIM/ArchBuildingPart.py | 2 + src/Mod/BIM/CMakeLists.txt | 1 + src/Mod/BIM/InitGui.py | 6 +- src/Mod/BIM/Resources/Arch.qrc | 6 +- src/Mod/BIM/Resources/icons/Arch_View_Cut.svg | 476 ++++++++++++++++++ ...techdraw-ArchView.svg => BIM_ArchView.svg} | 0 .../BIM/Resources/icons/BIM_InsertView.svg | 151 ++++++ ...aw-PageDefault.svg => BIM_PageDefault.svg} | 0 src/Mod/BIM/Resources/ui/dialogViews.ui | 14 +- .../Resources/ui/preferences-archdefaults.ui | 214 ++++---- src/Mod/BIM/TestArch.py | 48 ++ src/Mod/BIM/bimcommands/BimDrawingView.py | 83 +++ src/Mod/BIM/bimcommands/BimSectionPlane.py | 2 +- src/Mod/BIM/bimcommands/BimShape2DView.py | 18 +- src/Mod/BIM/bimcommands/BimTDPage.py | 3 +- src/Mod/BIM/bimcommands/BimTDView.py | 7 +- src/Mod/BIM/bimcommands/BimViews.py | 52 +- 18 files changed, 1000 insertions(+), 107 deletions(-) create mode 100644 src/Mod/BIM/Resources/icons/Arch_View_Cut.svg rename src/Mod/BIM/Resources/icons/{techdraw-ArchView.svg => BIM_ArchView.svg} (100%) create mode 100644 src/Mod/BIM/Resources/icons/BIM_InsertView.svg rename src/Mod/BIM/Resources/icons/{techdraw-PageDefault.svg => BIM_PageDefault.svg} (100%) create mode 100644 src/Mod/BIM/bimcommands/BimDrawingView.py diff --git a/src/Mod/BIM/Arch.py b/src/Mod/BIM/Arch.py index 818b860d2e47..e9537176d8a8 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 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/CMakeLists.txt b/src/Mod/BIM/CMakeLists.txt index 8b71a2cf24c2..df1dcb5c755b 100644 --- a/src/Mod/BIM/CMakeLists.txt +++ b/src/Mod/BIM/CMakeLists.txt @@ -106,6 +106,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 diff --git a/src/Mod/BIM/InitGui.py b/src/Mod/BIM/InitGui.py index ce80711699c8..fb104f377b55 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 = [ diff --git a/src/Mod/BIM/Resources/Arch.qrc b/src/Mod/BIM/Resources/Arch.qrc index 360eb6d3ca96..04568cfbbab8 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 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/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/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/TestArch.py b/src/Mod/BIM/TestArch.py index 48ebc43a4e48..27bbb9bff26f 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,53 @@ def testBuildingPart(self): App.ActiveDocument.recompute() assert wall.Visibility + 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 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/BimSectionPlane.py b/src/Mod/BIM/bimcommands/BimSectionPlane.py index f558da15a579..549b1021a18d 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")} 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/BimTDPage.py b/src/Mod/BIM/bimcommands/BimTDPage.py index 0c5100ec0e16..a4ec885fd929 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': "V, P", } def IsActive(self): diff --git a/src/Mod/BIM/bimcommands/BimTDView.py b/src/Mod/BIM/bimcommands/BimTDView.py index 554d1cdd6bdc..254bec5b9879 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): diff --git a/src/Mod/BIM/bimcommands/BimViews.py b/src/Mod/BIM/bimcommands/BimViews.py index 99ed00a9abcd..0ff4a2f17cd4 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,7 +290,7 @@ 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 objSelected = FreeCADGui.Selection.getSelection() @@ -306,6 +310,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" @@ -445,11 +450,16 @@ def onContextMenu(self, 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 +485,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 +507,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 +532,35 @@ 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 + if vm: # store the last double-clicked item for the BIM WPView command if isinstance(item, str) or ( @@ -543,6 +581,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 From 992e6d397ca7a97a36742a800dd08b63ddade1ba Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Fri, 9 Aug 2024 13:12:45 +0200 Subject: [PATCH 019/221] BIM: Support for active container --- src/Mod/BIM/bimcommands/BimViews.py | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/src/Mod/BIM/bimcommands/BimViews.py b/src/Mod/BIM/bimcommands/BimViews.py index 0ff4a2f17cd4..2f2674b2686f 100644 --- a/src/Mod/BIM/bimcommands/BimViews.py +++ b/src/Mod/BIM/bimcommands/BimViews.py @@ -293,13 +293,25 @@ def update(self, retrigger=True): 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("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) @@ -560,7 +572,10 @@ def show(item, column=None): 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 - + if getattr(obj.ViewObject, "SetWorkingPlane", False): + obj.ViewObject.Proxy.setWorkingPlane() + if getattr(obj.ViewObject, "DoubleClickActivates", True): + FreeCADGui.ActiveDocument.ActiveView.setActiveObject("Arch", obj) if vm: # store the last double-clicked item for the BIM WPView command if isinstance(item, str) or ( From 791328048619178c7c0adbf5db9271b8c9236de1 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Fri, 9 Aug 2024 15:34:51 +0200 Subject: [PATCH 020/221] BIM: Support for NativeIFC in BimViews --- src/Mod/BIM/bimcommands/BimTDPage.py | 2 +- src/Mod/BIM/bimcommands/BimViews.py | 64 +++++++++++++++++++++++++-- src/Mod/Draft/WorkingPlane.py | 4 ++ src/Mod/Draft/draftutils/gui_utils.py | 2 +- 4 files changed, 66 insertions(+), 6 deletions(-) diff --git a/src/Mod/BIM/bimcommands/BimTDPage.py b/src/Mod/BIM/bimcommands/BimTDPage.py index a4ec885fd929..a2702470df0e 100644 --- a/src/Mod/BIM/bimcommands/BimTDPage.py +++ b/src/Mod/BIM/bimcommands/BimTDPage.py @@ -41,7 +41,7 @@ def GetResources(self): "ToolTip": QT_TRANSLATE_NOOP( "BIM_TDPage", "Creates a new TechDraw page from a template" ), - 'Accel': "V, P", + 'Accel': "T, P", } def IsActive(self): diff --git a/src/Mod/BIM/bimcommands/BimViews.py b/src/Mod/BIM/bimcommands/BimViews.py index 2f2674b2686f..4b3fc36828cb 100644 --- a/src/Mod/BIM/bimcommands/BimViews.py +++ b/src/Mod/BIM/bimcommands/BimViews.py @@ -297,7 +297,9 @@ def update(self, retrigger=True): bold.setBold(True) objSelected = FreeCADGui.Selection.getSelection() objNameSelected = [obj.Label for obj in objSelected] - objActive = FreeCADGui.ActiveDocument.ActiveView.getActiveObject("Arch") + 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) @@ -341,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) @@ -352,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" @@ -458,6 +484,14 @@ 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): @@ -572,10 +606,32 @@ def show(item, column=None): 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): - FreeCADGui.ActiveDocument.ActiveView.setActiveObject("Arch", obj) + 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 ( 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/draftutils/gui_utils.py b/src/Mod/Draft/draftutils/gui_utils.py index 32c6ae3a953a..3d965e8a87b2 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) From 9c9d451ac68b7cb538f66bf5b2e45197f5265ba3 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Wed, 18 Sep 2024 10:49:22 +0200 Subject: [PATCH 021/221] BIM: NativeIFC 2D support - basic import/export + linework annotations --- src/Mod/BIM/CMakeLists.txt | 1 + src/Mod/BIM/importers/exportIFC.py | 243 +++++++++++++------------ src/Mod/BIM/nativeifc/ifc_export.py | 146 +++++++++++++++ src/Mod/BIM/nativeifc/ifc_generator.py | 82 ++++++++- src/Mod/BIM/nativeifc/ifc_status.py | 5 +- src/Mod/BIM/nativeifc/ifc_tools.py | 89 +-------- 6 files changed, 356 insertions(+), 210 deletions(-) create mode 100644 src/Mod/BIM/nativeifc/ifc_export.py diff --git a/src/Mod/BIM/CMakeLists.txt b/src/Mod/BIM/CMakeLists.txt index df1dcb5c755b..1e50d4be6600 100644 --- a/src/Mod/BIM/CMakeLists.txt +++ b/src/Mod/BIM/CMakeLists.txt @@ -189,6 +189,7 @@ SET(nativeifc_SRCS nativeifc/__init__.py nativeifc/ifc_openshell.py nativeifc/ifc_types.py + nativeifc/ifc_export.py ) SOURCE_GROUP("" FILES ${Arch_SRCS}) diff --git a/src/Mod/BIM/importers/exportIFC.py b/src/Mod/BIM/importers/exportIFC.py index 7088e923bc87..e587324a2d47 100644 --- a/src/Mod/BIM/importers/exportIFC.py +++ b/src/Mod/BIM/importers/exportIFC.py @@ -1289,125 +1289,11 @@ 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 - - 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 - - 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 - ) + ann = create_annotation(anno, ifcfile, context, history, preferences) annos[anno.Name] = ann # groups @@ -2550,3 +2436,128 @@ def writeJson(filename,ifcfile): #print("json:",s) f.write(s) f.close() + + +def create_annotation(anno, ifcfile, context, history, preferences): + """Creates an annotation object""" + + # uses global ifcbin, curvestyles + 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) + 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 + + 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/nativeifc/ifc_export.py b/src/Mod/BIM/nativeifc/ifc_export.py new file mode 100644 index 000000000000..9fda8b773597 --- /dev/null +++ b/src/Mod/BIM/nativeifc/ifc_export.py @@ -0,0 +1,146 @@ +# *************************************************************************** +# * * +# * 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 * +# * * +# *************************************************************************** + +import FreeCAD +import Draft +import ifcopenshell + +from importers import exportIFC +from importers import exportIFCHelper + +from nativeifc import ifc_tools + + +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[ + ifc_tools.get_body_context_ids(ifcfile)[0] + ] # we take the first one (first found subcontext) + return prefs, 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 is_annotation(obj): + """Determines if the given FreeCAD object should be saved as an IfcAnnotation""" + + if getattr(obj, "IfcClass", None) == "IfcAnnotation": + 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"]: + 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 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) + prefs, context = get_export_preferences(ifcfile) + 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 diff --git a/src/Mod/BIM/nativeifc/ifc_generator.py b/src/Mod/BIM/nativeifc/ifc_generator.py index be7674519e8e..070fcc6b755a 100644 --- a/src/Mod/BIM/nativeifc/ifc_generator.py +++ b/src/Mod/BIM/nativeifc/ifc_generator.py @@ -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,32 @@ 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 + elif obj.ViewObject and obj.ShapeMode == "Coin": + node, placement = get_annotation_shape(element, ifcfile, coin=True) + if node: + set_representation(obj.ViewObject, node) + colors = node[0] + else: + set_representation(obj.ViewObject, None) + print_debug(obj) + if placement: + obj.Placement = placement + 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 +98,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 +361,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 @@ -451,11 +472,12 @@ def set_representation(vobj, node): 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]: 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]: + fset.coordIndex.setValues(node[2]) + fset.partIndex.setValues(node[4]) def print_debug(obj): @@ -524,3 +546,45 @@ 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""" + + import Part + from importers import importIFCHelper + + shape = None + placement = None + ifcscale = importIFCHelper.getScaling(ifcfile) + shapes2d = [] + for rep in annotation.Representation.Representations: + if rep.RepresentationIdentifier in ["Annotation", "FootPrint", "Axis"]: + sh = importIFCHelper.get2DShape(rep, ifcscale) + if sh: + shapes2d.extend(sh) + if shapes2d: + shape = Part.makeCompound(shapes2d) + placement = importIFCHelper.getPlacement(annotation.ObjectPlacement, ifcscale) + 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_status.py b/src/Mod/BIM/nativeifc/ifc_status.py index ec2a1f8ce2fc..72381b8a16fd 100644 --- a/src/Mod/BIM/nativeifc/ifc_status.py +++ b/src/Mod/BIM/nativeifc/ifc_status.py @@ -355,6 +355,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 +380,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): @@ -416,7 +417,7 @@ def 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) + prefs, context = ifc_export.get_export_preferences(ifcfile) exportIFC.export(objs, ifcfile, preferences=prefs) for n in [o.Name for o in doc.Objects]: if doc.getObject(n): diff --git a/src/Mod/BIM/nativeifc/ifc_tools.py b/src/Mod/BIM/nativeifc/ifc_tools.py index df157bfb2f79..fcde65740a8a 100644 --- a/src/Mod/BIM/nativeifc/ifc_tools.py +++ b/src/Mod/BIM/nativeifc/ifc_tools.py @@ -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,7 @@ from nativeifc import ifc_import from nativeifc import ifc_layers from nativeifc import ifc_status +from nativeifc import ifc_export SCALE = 1000.0 # IfcOpenShell works in meters, FreeCAD works in mm SHORT = False # If True, only Step ID attribute is created @@ -739,8 +738,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 @@ -1011,7 +1008,10 @@ def aggregate(obj, parent, mode=None): ifcclass = None if mode == "opening": ifcclass = "IfcOpeningElement" - product = create_product(obj, parent, ifcfile, ifcclass) + if ifc_export.is_annotation(obj): + product = ifc_export.create_annotation(obj, ifcfile) + else: + product = ifc_export.create_product(obj, parent, ifcfile, ifcclass) shapemode = getattr(parent, "ShapeMode", DEFAULT_SHAPEMODE) newobj = create_object(product, obj.Document, ifcfile, shapemode) new = True @@ -1065,69 +1065,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""" @@ -1144,20 +1081,6 @@ def get_ifctype(obj): 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""" @@ -1240,7 +1163,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: From bf4a98830160f0a3a4daa5022ee192f7dffb4192 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Thu, 26 Sep 2024 13:18:03 +0200 Subject: [PATCH 022/221] BIM: NativeIFC 2D support - texts --- src/Mod/BIM/importers/exportIFC.py | 29 +++++++---- src/Mod/BIM/nativeifc/ifc_export.py | 19 +++++++ src/Mod/BIM/nativeifc/ifc_objects.py | 18 +++++++ src/Mod/BIM/nativeifc/ifc_tools.py | 78 +++++++++++++++++----------- 4 files changed, 104 insertions(+), 40 deletions(-) diff --git a/src/Mod/BIM/importers/exportIFC.py b/src/Mod/BIM/importers/exportIFC.py index e587324a2d47..813aa66a7ae1 100644 --- a/src/Mod/BIM/importers/exportIFC.py +++ b/src/Mod/BIM/importers/exportIFC.py @@ -2443,11 +2443,9 @@ def create_annotation(anno, ifcfile, context, history, preferences): # uses global ifcbin, curvestyles 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) + ovc = None + zvc = None + xvc = None if anno.isDerivedFrom("Part::Feature"): if Draft.getType(anno) == "Hatch": objectType = "HATCH" @@ -2477,18 +2475,20 @@ def create_annotation(anno, ifcfile, context, history, preferences): 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)) + 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((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) + 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": @@ -2546,7 +2546,14 @@ def create_annotation(anno, ifcfile, context, history, preferences): 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 diff --git a/src/Mod/BIM/nativeifc/ifc_export.py b/src/Mod/BIM/nativeifc/ifc_export.py index 9fda8b773597..569a4cc4f258 100644 --- a/src/Mod/BIM/nativeifc/ifc_export.py +++ b/src/Mod/BIM/nativeifc/ifc_export.py @@ -26,6 +26,7 @@ from importers import exportIFC from importers import exportIFCHelper +from importers import importIFCHelper from nativeifc import ifc_tools @@ -116,6 +117,17 @@ def is_annotation(obj): return False +def get_text(annotation): + """Determines if an IfcAnnotation contains an IfcTextLiteral. + Returns the IfcTextLiteral or None""" + + for rep in annotation.Representation.Representations: + for item in rep.Items: + if item.is_a("IfcTextLiteral"): + return item + return None + + def create_annotation(obj, ifcfile): """Adds an IfcAnnotation from the given object to the given IFC file""" @@ -144,3 +156,10 @@ def get_history(ifcfile): # IFC4 allows to not write any history history = None return history + + +def get_placement(ifcelement, ifcfile): + """Returns a FreeCAD placement from an IFC placement""" + + s = 0.001 / ifcopenshell.util.unit.calculate_unit_scale(ifcfile) + return importIFCHelper.getPlacement(ifcelement, scaling=s) diff --git a/src/Mod/BIM/nativeifc/ifc_objects.py b/src/Mod/BIM/nativeifc/ifc_objects.py index 5f2299094264..d67610dd2eeb 100644 --- a/src/Mod/BIM/nativeifc/ifc_objects.py +++ b/src/Mod/BIM/nativeifc/ifc_objects.py @@ -64,6 +64,8 @@ def onChanged(self, obj, prop): 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 == "Placement": if getattr(self, "virgin_placement", False): self.virgin_placement = False @@ -169,6 +171,22 @@ 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: + 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: + result = ifc_tools.set_attribute(ifcfile, text, "Literal", value) + def edit_geometry(self, obj, prop): """Edits a geometry property of an object""" diff --git a/src/Mod/BIM/nativeifc/ifc_tools.py b/src/Mod/BIM/nativeifc/ifc_tools.py index fcde65740a8a..7f6241161272 100644 --- a/src/Mod/BIM/nativeifc/ifc_tools.py +++ b/src/Mod/BIM/nativeifc/ifc_tools.py @@ -47,6 +47,8 @@ from nativeifc import ifc_status from nativeifc import ifc_export +from draftviewproviders import view_layer + SCALE = 1000.0 # IfcOpenShell works in meters, FreeCAD works in mm SHORT = False # If True, only Step ID attribute is created ROUND = 8 # rounding value for placements @@ -243,7 +245,7 @@ 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) @@ -253,7 +255,7 @@ def create_object(ifcentity, document, ifcfile, shapemode=0): ifcentity.id(), ifcentity.is_a(), ifcentity.Name ) 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: @@ -460,37 +462,41 @@ 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', + 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 == "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 @@ -621,6 +627,17 @@ 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("IfcAnnotation"): + text = ifc_export.get_text(ifcentity) + if text: + # the two props below are already taken care of, normally + 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) # link Label2 and Description if "Description" in obj.PropertiesList and hasattr(obj, "setExpression"): obj.setExpression("Label2", "Description") @@ -1008,12 +1025,15 @@ def aggregate(obj, parent, mode=None): ifcclass = None if mode == "opening": ifcclass = "IfcOpeningElement" + 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" else: product = ifc_export.create_product(obj, parent, ifcfile, ifcclass) 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) base = getattr(obj, "Base", None) @@ -1317,7 +1337,7 @@ 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 = [ From a2793dc903a44392efe7c4ebc6d2417000524444 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Fri, 27 Sep 2024 09:45:37 +0200 Subject: [PATCH 023/221] BIM: NativeIFC 2D support - handling orphan elements and drawing groups --- src/Mod/BIM/importers/importIFCHelper.py | 22 +++++++---- src/Mod/BIM/nativeifc/ifc_generator.py | 6 ++- src/Mod/BIM/nativeifc/ifc_tools.py | 50 +++++++++++++++++++----- 3 files changed, 60 insertions(+), 18 deletions(-) diff --git a/src/Mod/BIM/importers/importIFCHelper.py b/src/Mod/BIM/importers/importIFCHelper.py index 8f44fce96565..ceb3cae38695 100644 --- a/src/Mod/BIM/importers/importIFCHelper.py +++ b/src/Mod/BIM/importers/importIFCHelper.py @@ -872,14 +872,20 @@ 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") else: print("getCurveSet: unhandled element: ", el) diff --git a/src/Mod/BIM/nativeifc/ifc_generator.py b/src/Mod/BIM/nativeifc/ifc_generator.py index 070fcc6b755a..ab9069bfd61c 100644 --- a/src/Mod/BIM/nativeifc/ifc_generator.py +++ b/src/Mod/BIM/nativeifc/ifc_generator.py @@ -72,17 +72,21 @@ def generate_geometry(obj, cached=False): 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 - return + if done: + return # generate the shape or coin node elements = get_decomposition(obj) diff --git a/src/Mod/BIM/nativeifc/ifc_tools.py b/src/Mod/BIM/nativeifc/ifc_tools.py index 7f6241161272..c8ec87847c10 100644 --- a/src/Mod/BIM/nativeifc/ifc_tools.py +++ b/src/Mod/BIM/nativeifc/ifc_tools.py @@ -254,13 +254,22 @@ def create_object(ifcentity, document, ifcfile, shapemode=0, objecttype=None): s = "IFC: Created #{}: {}, '{}'\n".format( ifcentity.id(), ifcentity.is_a(), ifcentity.Name ) + if not objecttype: + if ifcentity.is_a("IfcAnnotation"): + if ifc_export.get_text(ifcentity): + objecttype = "text" FreeCAD.Console.PrintLog(s) 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 @@ -328,9 +337,10 @@ def create_child(parent, element): 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" @@ -339,10 +349,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] @@ -353,6 +363,8 @@ def assign_groups(children): g = grobj.Group g.append(elobj) grobj.Group = g + result.append(elobj) + return result def get_children( @@ -382,7 +394,7 @@ def get_children( return result -def get_object(element, document=None): +def get_object(element, document=None, ifcfile=None): """Returns the object that references this element, if any""" if document: @@ -393,7 +405,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 @@ -1343,6 +1355,14 @@ def get_orphan_elements(ifcfile): products = [ p for p in products if not hasattr(p, "VoidsElements") or not p.VoidsElements ] + 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 @@ -1384,8 +1404,20 @@ 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) def remove_tree(objs): From 4fba4abe5f695324843c5c3c6e30a4312f854e45 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Fri, 27 Sep 2024 09:57:45 +0200 Subject: [PATCH 024/221] BIM: Workaround for objects needing recompute --- src/Mod/BIM/nativeifc/ifc_tools.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/Mod/BIM/nativeifc/ifc_tools.py b/src/Mod/BIM/nativeifc/ifc_tools.py index c8ec87847c10..c17caf29017c 100644 --- a/src/Mod/BIM/nativeifc/ifc_tools.py +++ b/src/Mod/BIM/nativeifc/ifc_tools.py @@ -48,6 +48,7 @@ from nativeifc import ifc_export 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 @@ -334,6 +335,8 @@ 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 @@ -1419,6 +1422,9 @@ def load_orphans(obj): for o in rest: project.Proxy.addObject(project, o) + # TEST: Try recomputing + QtCore.QTimer.singleShot(0, lambda: recompute(objs)) + def remove_tree(objs): """Removes all given objects and their children, if not used by others""" @@ -1442,3 +1448,13 @@ 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() + for c in children: + c.touch() + FreeCAD.ActiveDocument.recompute() + endtime = "%02d:%02d" % (divmod(round(time.time() - stime, 1), 60)) + print("DEBUG: Extra recomputing of",len(children),"objects took",endtime) From 9c53a024c0c6aefcdb3a4e3bf6dbee509b6e8393 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Fri, 27 Sep 2024 11:56:16 +0200 Subject: [PATCH 025/221] BIM: NativeIFC 2D support - dimensions --- src/Mod/BIM/nativeifc/ifc_export.py | 43 +++++++++++++++++++++++++--- src/Mod/BIM/nativeifc/ifc_objects.py | 23 ++++++++++++++- src/Mod/BIM/nativeifc/ifc_tools.py | 32 ++++++++++++++++++++- 3 files changed, 92 insertions(+), 6 deletions(-) diff --git a/src/Mod/BIM/nativeifc/ifc_export.py b/src/Mod/BIM/nativeifc/ifc_export.py index 569a4cc4f258..66b7a3fa8da6 100644 --- a/src/Mod/BIM/nativeifc/ifc_export.py +++ b/src/Mod/BIM/nativeifc/ifc_export.py @@ -121,10 +121,33 @@ def get_text(annotation): """Determines if an IfcAnnotation contains an IfcTextLiteral. Returns the IfcTextLiteral or None""" - for rep in annotation.Representation.Representations: - for item in rep.Items: - if item.is_a("IfcTextLiteral"): - return item + 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 mesured 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) + 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[0].Point) + return res return None @@ -163,3 +186,15 @@ def get_placement(ifcelement, ifcfile): s = 0.001 / ifcopenshell.util.unit.calculate_unit_scale(ifcfile) return importIFCHelper.getPlacement(ifcelement, scaling=s) + + +def get_scaled_point(point, ifcfile, is2d=False): + """Returns a scaled 2d or 3d point tuple form a FreeCAD point""" + + 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 diff --git a/src/Mod/BIM/nativeifc/ifc_objects.py b/src/Mod/BIM/nativeifc/ifc_objects.py index d67610dd2eeb..71ef0de337bd 100644 --- a/src/Mod/BIM/nativeifc/ifc_objects.py +++ b/src/Mod/BIM/nativeifc/ifc_objects.py @@ -25,6 +25,8 @@ import FreeCAD translate = FreeCAD.Qt.translate +# the property groups below should not be treated as psets +NON_PSETS = ["Base", "IFC", "", "Geometry", "Dimension", "Linear/radial dimension", "PhysicalProperties"] class ifc_object: """Base class for all IFC-based objects""" @@ -66,6 +68,8 @@ def onChanged(self, obj, prop): 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 == "Placement": if getattr(self, "virgin_placement", False): self.virgin_placement = False @@ -77,7 +81,7 @@ def onChanged(self, obj, prop): obj.ViewObject.signalChangeIcon() elif obj.getGroupOfProperty(prop) == "Geometry": self.edit_geometry(obj, prop) - elif obj.getGroupOfProperty(prop) not in ["Base", "IFC", "", "Geometry", "PhysicalProperties"]: + elif 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) @@ -186,6 +190,23 @@ def edit_annotation(self, obj, attribute, value=None): text = ifc_export.get_text(elt) if text: result = 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: + 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) + result = ifc_tools.set_attribute(ifcfile, points, "CoordList", value) + else: + print("DEBUG: unknown dimension curve type:",sub) def edit_geometry(self, obj, prop): """Edits a geometry property of an object""" diff --git a/src/Mod/BIM/nativeifc/ifc_tools.py b/src/Mod/BIM/nativeifc/ifc_tools.py index c17caf29017c..05170f6ba885 100644 --- a/src/Mod/BIM/nativeifc/ifc_tools.py +++ b/src/Mod/BIM/nativeifc/ifc_tools.py @@ -259,6 +259,8 @@ def create_object(ifcentity, document, ifcfile, shapemode=0, objecttype=None): if ifcentity.is_a("IfcAnnotation"): if ifc_export.get_text(ifcentity): objecttype = "text" + elif ifc_export.get_dimension(ifcentity): + objecttype = "dimension" FreeCAD.Console.PrintLog(s) obj = add_object(document, otype=objecttype) add_properties(obj, ifcfile, ifcentity, shapemode=shapemode) @@ -483,11 +485,21 @@ def add_object(document, otype=None, oname="IfcObject"): 'material', 'layer', 'text', + 'dimension', or anything else for a standard IFC object""" if not document: return None - if otype == "text": + if 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": @@ -653,6 +665,24 @@ def add_properties( obj.addProperty("App::PropertyStringList", "Text", "Base") obj.Text = [text.Literal] obj.Placement = ifc_export.get_placement(ifcentity.ObjectPlacement, ifcfile) + else: + dim = ifc_export.get_dimension(ifcentity) + if dim and len(dim) >= 3: + # the two props below are already taken care of, normally + 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) # link Label2 and Description if "Description" in obj.PropertiesList and hasattr(obj, "setExpression"): obj.setExpression("Label2", "Description") From 8406eae6c139e9c7c56b0a7f6127e33299bfd931 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Fri, 27 Sep 2024 14:08:26 +0200 Subject: [PATCH 026/221] BIM: NativeIFC 2D support - optimized export of FreeCAD dimensions --- src/Mod/BIM/importers/exportIFC.py | 26 ++++++- src/Mod/BIM/importers/importIFCHelper.py | 11 +-- src/Mod/BIM/nativeifc/ifc_export.py | 6 +- src/Mod/BIM/nativeifc/ifc_generator.py | 2 +- src/Mod/BIM/nativeifc/ifc_tools.py | 86 +++++++++++++++--------- 5 files changed, 91 insertions(+), 40 deletions(-) diff --git a/src/Mod/BIM/importers/exportIFC.py b/src/Mod/BIM/importers/exportIFC.py index 813aa66a7ae1..8f2dfc1929b2 100644 --- a/src/Mod/BIM/importers/exportIFC.py +++ b/src/Mod/BIM/importers/exportIFC.py @@ -1676,13 +1676,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) @@ -2512,11 +2530,13 @@ def create_annotation(anno, ifcfile, context, history, preferences): if curves: reps.append(ifcfile.createIfcGeometricCurveSet(curves)) curves = [] + # leftover edges for e in sh.Edges: - if e.hashCode not in ehc: + if e.hashCode() not in ehc: curves.append(createCurve(ifcfile,e)) if curves: reps.append(ifcfile.createIfcGeometricCurveSet(curves)) + # Append text l = FreeCAD.Vector(vp.tbase).multiply(preferences['SCALE_FACTOR']) zdir = None xdir = None diff --git a/src/Mod/BIM/importers/importIFCHelper.py b/src/Mod/BIM/importers/importIFCHelper.py index ceb3cae38695..deae2fec1928 100644 --- a/src/Mod/BIM/importers/importIFCHelper.py +++ b/src/Mod/BIM/importers/importIFCHelper.py @@ -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 @@ -885,9 +886,9 @@ def index2points(segment): [p1, p2, p3] = index2points(s) result.append(Part.Arc(p1, p2, p3)) else: - raise RuntimeError("Illegal IfcIndexedPolyCurve segment") + raise RuntimeError("Illegal IfcIndexedPolyCurve segment: "+s.is_a()) else: - print("getCurveSet: unhandled element: ", el) + print("importIFCHelper.getCurveSet: unhandled element: ", el) return result @@ -909,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/nativeifc/ifc_export.py b/src/Mod/BIM/nativeifc/ifc_export.py index 66b7a3fa8da6..d957333204d9 100644 --- a/src/Mod/BIM/nativeifc/ifc_export.py +++ b/src/Mod/BIM/nativeifc/ifc_export.py @@ -139,15 +139,17 @@ def get_dimension(annotation): 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) + shape = importIFCHelper.get2DShape(rep, s, notext=True) 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[0].Point) + res.append(shape[0].Vertexes[1].Point) return res + else: + print(annotation,"NOT A DIMENSION") return None diff --git a/src/Mod/BIM/nativeifc/ifc_generator.py b/src/Mod/BIM/nativeifc/ifc_generator.py index ab9069bfd61c..9c9ea9289b06 100644 --- a/src/Mod/BIM/nativeifc/ifc_generator.py +++ b/src/Mod/BIM/nativeifc/ifc_generator.py @@ -564,7 +564,7 @@ def get_annotation_shape(annotation, ifcfile, coin=False): shapes2d = [] for rep in annotation.Representation.Representations: if rep.RepresentationIdentifier in ["Annotation", "FootPrint", "Axis"]: - sh = importIFCHelper.get2DShape(rep, ifcscale) + sh = importIFCHelper.get2DShape(rep, ifcscale, notext=True) if sh: shapes2d.extend(sh) if shapes2d: diff --git a/src/Mod/BIM/nativeifc/ifc_tools.py b/src/Mod/BIM/nativeifc/ifc_tools.py index 05170f6ba885..436fda8d3e86 100644 --- a/src/Mod/BIM/nativeifc/ifc_tools.py +++ b/src/Mod/BIM/nativeifc/ifc_tools.py @@ -257,10 +257,10 @@ def create_object(ifcentity, document, ifcfile, shapemode=0, objecttype=None): ) if not objecttype: if ifcentity.is_a("IfcAnnotation"): - if ifc_export.get_text(ifcentity): - objecttype = "text" - elif ifc_export.get_dimension(ifcentity): + if ifc_export.get_dimension(ifcentity): objecttype = "dimension" + elif ifc_export.get_text(ifcentity): + objecttype = "text" FreeCAD.Console.PrintLog(s) obj = add_object(document, otype=objecttype) add_properties(obj, ifcfile, ifcentity, shapemode=shapemode) @@ -656,33 +656,32 @@ def add_properties( setattr(obj, attr, str(value)) # annotation properties if ifcentity.is_a("IfcAnnotation"): - text = ifc_export.get_text(ifcentity) - if text: - # the two props below are already taken care of, normally - 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) + 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: - dim = ifc_export.get_dimension(ifcentity) - if dim and len(dim) >= 3: - # the two props below are already taken care of, normally - 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) + 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) + # link Label2 and Description if "Description" in obj.PropertiesList and hasattr(obj, "setExpression"): obj.setExpression("Label2", "Description") @@ -1184,8 +1183,35 @@ def create_relationship(old_obj, obj, parent, element, ifcfile, mode=None): parent_element = get_ifc_element(parent) else: parent_element = parent + # case 4: anything inside group + if parent_element.is_a("IfcGroup"): + # IFC objects can be part of multiple groups but we do the FreeCAD way here + 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: From af84424a775b2694efa2e992f3cdb516b3d1f944 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Mon, 30 Sep 2024 14:58:11 +0200 Subject: [PATCH 027/221] BIM: NativeIFC 2D support - section planes --- src/Mod/BIM/ArchSectionPlane.py | 8 ++ src/Mod/BIM/bimcommands/BimSectionPlane.py | 6 ++ src/Mod/BIM/bimcommands/BimTDView.py | 5 ++ src/Mod/BIM/importers/exportIFC.py | 26 ++++++ src/Mod/BIM/nativeifc/ifc_export.py | 56 +++++++++++-- src/Mod/BIM/nativeifc/ifc_objects.py | 78 ++++++++++++++++-- src/Mod/BIM/nativeifc/ifc_tools.py | 95 ++++++++++++++-------- src/Mod/Draft/draftfunctions/svg.py | 8 +- src/Mod/Draft/draftobjects/shape2dview.py | 6 +- 9 files changed, 240 insertions(+), 48 deletions(-) diff --git a/src/Mod/BIM/ArchSectionPlane.py b/src/Mod/BIM/ArchSectionPlane.py index d30f0dab4a04..8a6bd08d73f7 100644 --- a/src/Mod/BIM/ArchSectionPlane.py +++ b/src/Mod/BIM/ArchSectionPlane.py @@ -843,6 +843,10 @@ def execute(self,obj): # old objects l = obj.ViewObject.DisplaySize.Value h = obj.ViewObject.DisplaySize.Value + if not l: + l = 1 + if not h: + h = 1 p = Part.makePlane(l,h,Vector(l/2,-h/2,0),Vector(0,0,-1)) # make sure the normal direction is pointing outwards, you never know what OCC will decide... if p.normalAt(0,0).getAngle(obj.Placement.Rotation.multVec(FreeCAD.Vector(0,0,1))) > 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/bimcommands/BimSectionPlane.py b/src/Mod/BIM/bimcommands/BimSectionPlane.py index 549b1021a18d..c6a326b27a21 100644 --- a/src/Mod/BIM/bimcommands/BimSectionPlane.py +++ b/src/Mod/BIM/bimcommands/BimSectionPlane.py @@ -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/BimTDView.py b/src/Mod/BIM/bimcommands/BimTDView.py index 254bec5b9879..c3d1230d01b7 100644 --- a/src/Mod/BIM/bimcommands/BimTDView.py +++ b/src/Mod/BIM/bimcommands/BimTDView.py @@ -93,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/importers/exportIFC.py b/src/Mod/BIM/importers/exportIFC.py index 8f2dfc1929b2..df25562c90a5 100644 --- a/src/Mod/BIM/importers/exportIFC.py +++ b/src/Mod/BIM/importers/exportIFC.py @@ -2464,6 +2464,8 @@ def create_annotation(anno, ifcfile, context, history, preferences): ovc = None zvc = None xvc = None + repid = "Annotation" + reptype = "Annotation2D" if anno.isDerivedFrom("Part::Feature"): if Draft.getType(anno) == "Hatch": objectType = "HATCH" @@ -2548,6 +2550,30 @@ def create_annotation(anno, ifcfile, context, history, preferences): 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 diff --git a/src/Mod/BIM/nativeifc/ifc_export.py b/src/Mod/BIM/nativeifc/ifc_export.py index d957333204d9..403f597c977d 100644 --- a/src/Mod/BIM/nativeifc/ifc_export.py +++ b/src/Mod/BIM/nativeifc/ifc_export.py @@ -89,6 +89,20 @@ def create_representation(obj, ifcfile): 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" + return objecttype + + def is_annotation(obj): """Determines if the given FreeCAD object should be saved as an IfcAnnotation""" @@ -104,7 +118,8 @@ def is_annotation(obj): "Text", "Dimension", "LinearDimension", - "AngularDimension"]: + "AngularDimension", + "SectionPlane"]: return True elif obj.isDerivedFrom("Part::Feature"): if obj.Shape and (not obj.Shape.Solids) and obj.Shape.Edges: @@ -153,6 +168,26 @@ def get_dimension(annotation): 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 create_annotation(obj, ifcfile): """Adds an IfcAnnotation from the given object to the given IFC file""" @@ -183,16 +218,21 @@ def get_history(ifcfile): return history -def get_placement(ifcelement, ifcfile): +def get_placement(ifcelement, ifcfile=None, scale=None): """Returns a FreeCAD placement from an IFC placement""" - s = 0.001 / ifcopenshell.util.unit.calculate_unit_scale(ifcfile) - return importIFCHelper.getPlacement(ifcelement, scaling=s) + 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, is2d=False): +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) @@ -200,3 +240,9 @@ def get_scaled_point(point, ifcfile, is2d=False): 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 diff --git a/src/Mod/BIM/nativeifc/ifc_objects.py b/src/Mod/BIM/nativeifc/ifc_objects.py index 71ef0de337bd..d5ce797180dc 100644 --- a/src/Mod/BIM/nativeifc/ifc_objects.py +++ b/src/Mod/BIM/nativeifc/ifc_objects.py @@ -26,7 +26,7 @@ translate = FreeCAD.Qt.translate # the property groups below should not be treated as psets -NON_PSETS = ["Base", "IFC", "", "Geometry", "Dimension", "Linear/radial dimension", "PhysicalProperties"] +NON_PSETS = ["Base", "IFC", "", "Geometry", "Dimension", "Linear/radial dimension", "SectionPlane", "PhysicalProperties"] class ifc_object: """Base class for all IFC-based objects""" @@ -61,7 +61,7 @@ def onChanged(self, obj, prop): self.edit_type(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": @@ -70,6 +70,8 @@ def onChanged(self, obj, prop): 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 @@ -79,9 +81,9 @@ 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 NON_PSETS: + 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) @@ -182,14 +184,15 @@ def edit_annotation(self, obj, attribute, value=None): from nativeifc import ifc_export if not value: - value = obj.getPropertyByName(attribute) + 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: - result = ifc_tools.set_attribute(ifcfile, text, "Literal", value) + ifc_tools.set_attribute(ifcfile, text, "Literal", value) elif attribute in ["Start", "End"]: dim = ifc_export.get_dimension(elt) if dim: @@ -204,9 +207,29 @@ def edit_annotation(self, obj, attribute, value=None): value[0] = ifc_export.get_scaled_point(obj.Start, ifcfile, is2d) else: value[-1] = ifc_export.get_scaled_point(obj.End, ifcfile, is2d) - result = ifc_tools.set_attribute(ifcfile, points, "CoordList", value) + 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 + if obj.ViewObject: + if obj.ViewObject.DisplayLength.Value: + l = ifc_export.get_scaled_value(obj.ViewObject.DisplayLength.Value) + if obj.ViewObject.DisplayHeight.Value: + w = ifc_export.get_scaled_value(obj.ViewObject.DisplayHeight.Value) + if obj.Depth.Value: + h = ifc_export.get_scaled_value(obj.Depth.Value) + 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""" @@ -326,6 +349,47 @@ def edit_type(self, obj): # Not doing anything right now because an unset Type property could screw the ifc file pass + def get_section_data(self, obj): + """Returns two things: a list of objects and a cut plane""" + + from nativeifc import ifc_tools # lazy import + import Part + + if not obj.IfcClass == "IfcAnnotation": + return None, None + if obj.ObjectType != "DRAWING": + return None, 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: + return None, None + class document_object: """Holder for the document's IFC objects""" diff --git a/src/Mod/BIM/nativeifc/ifc_tools.py b/src/Mod/BIM/nativeifc/ifc_tools.py index 436fda8d3e86..eaaa28394750 100644 --- a/src/Mod/BIM/nativeifc/ifc_tools.py +++ b/src/Mod/BIM/nativeifc/ifc_tools.py @@ -255,12 +255,7 @@ def create_object(ifcentity, document, ifcfile, shapemode=0, objecttype=None): s = "IFC: Created #{}: {}, '{}'\n".format( ifcentity.id(), ifcentity.is_a(), ifcentity.Name ) - if not objecttype: - if ifcentity.is_a("IfcAnnotation"): - if ifc_export.get_dimension(ifcentity): - objecttype = "dimension" - elif ifc_export.get_text(ifcentity): - objecttype = "text" + objecttype = ifc_export.get_object_type(ifcentity, objecttype) FreeCAD.Console.PrintLog(s) obj = add_object(document, otype=objecttype) add_properties(obj, ifcfile, ifcentity, shapemode=shapemode) @@ -399,6 +394,18 @@ def get_children( return result +def get_freecad_children(obj): + """Returns the childen of this object that exist in the documemt""" + + 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""" @@ -486,11 +493,15 @@ def add_object(document, otype=None, oname="IfcObject"): 'layer', 'text', 'dimension', + 'sectionplane', or anything else for a standard IFC object""" if not document: return None - if otype == "dimension": + if otype == "sectionplane": + obj = Arch.makeSectionPlane() + obj.Proxy = ifc_objects.ifc_object(otype) + elif otype == "dimension": obj = Draft.make_dimension(FreeCAD.Vector(), FreeCAD.Vector(1,0,0)) obj.Proxy = ifc_objects.ifc_object(otype) obj.removeProperty("Diameter") @@ -656,31 +667,51 @@ def add_properties( setattr(obj, attr, str(value)) # annotation properties if ifcentity.is_a("IfcAnnotation"): - 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) + 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: - 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) + 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) # link Label2 and Description if "Description" in obj.PropertiesList and hasattr(obj, "setExpression"): @@ -1141,7 +1172,7 @@ 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" 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/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)) From 8577d1bb46306076f2b0872580e7fdfeabaf6359 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Tue, 1 Oct 2024 13:23:03 +0200 Subject: [PATCH 028/221] BIM: NativeIFC 2D support - misc fixes cf comment #2383181661 --- src/Mod/BIM/importers/exportIFC.py | 25 +++++------------- src/Mod/BIM/nativeifc/ifc_export.py | 38 +++++++++++++++++++++++----- src/Mod/BIM/nativeifc/ifc_objects.py | 13 +++++----- src/Mod/BIM/nativeifc/ifc_tools.py | 10 ++++++++ 4 files changed, 55 insertions(+), 31 deletions(-) diff --git a/src/Mod/BIM/importers/exportIFC.py b/src/Mod/BIM/importers/exportIFC.py index df25562c90a5..7e09064fa34c 100644 --- a/src/Mod/BIM/importers/exportIFC.py +++ b/src/Mod/BIM/importers/exportIFC.py @@ -2464,6 +2464,7 @@ def create_annotation(anno, ifcfile, context, history, preferences): ovc = None zvc = None xvc = None + reps = [] repid = "Annotation" reptype = "Annotation2D" if anno.isDerivedFrom("Part::Feature"): @@ -2475,7 +2476,6 @@ def create_annotation(anno, ifcfile, context, history, preferences): objectType = "AREA" else: objectType = "LINEWORK" - reps = [] sh = anno.Shape.copy() sh.scale(preferences['SCALE_FACTOR']) # to meters ehc = [] @@ -2520,24 +2520,13 @@ def create_annotation(anno, ifcfile, context, history, preferences): if FreeCAD.GuiUp: objectType = "DIMENSION" vp = anno.ViewObject.Proxy - reps = [] - sh = Part.makePolygon([vp.p1,vp.p2,vp.p3,vp.p4]) + 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 - 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 = [] - # leftover edges - for e in sh.Edges: - if e.hashCode() not in ehc: - curves.append(createCurve(ifcfile,e)) - if curves: - reps.append(ifcfile.createIfcGeometricCurveSet(curves)) + curve = createCurve(ifcfile,sh) + reps = [ifcfile.createIfcGeometricCurveSet([curve])] # Append text l = FreeCAD.Vector(vp.tbase).multiply(preferences['SCALE_FACTOR']) zdir = None diff --git a/src/Mod/BIM/nativeifc/ifc_export.py b/src/Mod/BIM/nativeifc/ifc_export.py index 403f597c977d..d962595e0f6d 100644 --- a/src/Mod/BIM/nativeifc/ifc_export.py +++ b/src/Mod/BIM/nativeifc/ifc_export.py @@ -31,18 +31,41 @@ from nativeifc import ifc_tools -def get_export_preferences(ifcfile): - """returns a preferences dict for exportIFC""" +def get_export_preferences(ifcfile, preferred_context=None): + """returns a preferences dict for exportIFC. + Preferred context can either indicate a ContextType like 'Model' or 'Plan', + or a [ContextIdentifier,ContextType] list or tuple, for ex. + ('Annotation','Plan'). This function will do its best to find the most + appropriate context.""" 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[ - ifc_tools.get_body_context_ids(ifcfile)[0] - ] # we take the first one (first found subcontext) - return prefs, context + cids = ifc_tools.get_body_context_ids(ifcfile) + contexts = [ifcfile[i] for i in cids] + best_context = None + if preferred_context: + if isinstance(preferred_context, str): + for context in contexts: + if context.ContextType == preferred_context: + best_context = context + break + elif isinstance(preferred_context, (list, tuple)): + second_choice = None + for context in contexts: + if context.ContextType == preferred_context[1]: + second_choice = context + if context.ContextIdentifier == preferred_context[0]: + best_context = context + break + else: + if second_choice: + best_context = second_choice + if not best_context: + best_context = contexts[0] + return prefs, best_context def create_product(obj, parent, ifcfile, ifcclass=None): @@ -198,7 +221,8 @@ def create_annotation(obj, ifcfile): exportIFC.curvestyles = {} exportIFC.ifcopenshell = ifcopenshell exportIFC.ifcbin = exportIFCHelper.recycler(ifcfile, template=False) - prefs, context = get_export_preferences(ifcfile) + prefs, context = get_export_preferences(ifcfile, preferred_context="Plan") + 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 diff --git a/src/Mod/BIM/nativeifc/ifc_objects.py b/src/Mod/BIM/nativeifc/ifc_objects.py index d5ce797180dc..ffda99c4aaf9 100644 --- a/src/Mod/BIM/nativeifc/ifc_objects.py +++ b/src/Mod/BIM/nativeifc/ifc_objects.py @@ -214,11 +214,11 @@ def edit_annotation(self, obj, attribute, value=None): l = w = h = 1000 if obj.ViewObject: if obj.ViewObject.DisplayLength.Value: - l = ifc_export.get_scaled_value(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) + w = ifc_export.get_scaled_value(obj.ViewObject.DisplayHeight.Value, ifcfile) if obj.Depth.Value: - h = ifc_export.get_scaled_value(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: @@ -356,9 +356,9 @@ def get_section_data(self, obj): import Part if not obj.IfcClass == "IfcAnnotation": - return None, None + return [], None if obj.ObjectType != "DRAWING": - return None, None + return [], None objs = getattr(obj, "Objects", []) if not objs: # no object defined, we automatically use the project @@ -388,7 +388,8 @@ def get_section_data(self, obj): plane.Placement = obj.Placement return objs, plane else: - return None, None + print("DEBUG: Section plane returned no objects") + return [], None class document_object: diff --git a/src/Mod/BIM/nativeifc/ifc_tools.py b/src/Mod/BIM/nativeifc/ifc_tools.py index eaaa28394750..6aa2e9dce0bc 100644 --- a/src/Mod/BIM/nativeifc/ifc_tools.py +++ b/src/Mod/BIM/nativeifc/ifc_tools.py @@ -1216,7 +1216,17 @@ def create_relationship(old_obj, obj, parent, element, ifcfile, mode=None): parent_element = parent # 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: From a62ce903d3bdd7f9e104186c436c3387b5a00b20 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Thu, 3 Oct 2024 11:15:11 +0200 Subject: [PATCH 029/221] BIM: NativeIFC 2D support - better context detetcion --- src/Mod/BIM/nativeifc/ifc_export.py | 88 +++++++++++++++++++++++----- src/Mod/BIM/nativeifc/ifc_objects.py | 3 + 2 files changed, 77 insertions(+), 14 deletions(-) diff --git a/src/Mod/BIM/nativeifc/ifc_export.py b/src/Mod/BIM/nativeifc/ifc_export.py index d962595e0f6d..daa976e7dde3 100644 --- a/src/Mod/BIM/nativeifc/ifc_export.py +++ b/src/Mod/BIM/nativeifc/ifc_export.py @@ -31,12 +31,13 @@ from nativeifc import ifc_tools -def get_export_preferences(ifcfile, preferred_context=None): +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] list or tuple, for ex. - ('Annotation','Plan'). This function will do its best to find the most - appropriate context.""" + 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() @@ -46,25 +47,80 @@ def get_export_preferences(ifcfile, preferred_context=None): 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 context.ContextType == preferred_context[1]: - second_choice = context - if context.ContextIdentifier == preferred_context[0]: + 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 - break - else: - if second_choice: - best_context = second_choice - if not best_context: - best_context = contexts[0] + 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 @@ -221,7 +277,11 @@ def create_annotation(obj, ifcfile): exportIFC.curvestyles = {} exportIFC.ifcopenshell = ifcopenshell exportIFC.ifcbin = exportIFCHelper.recycler(ifcfile, template=False) - prefs, context = get_export_preferences(ifcfile, preferred_context="Plan") + 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 diff --git a/src/Mod/BIM/nativeifc/ifc_objects.py b/src/Mod/BIM/nativeifc/ifc_objects.py index ffda99c4aaf9..d5771302241f 100644 --- a/src/Mod/BIM/nativeifc/ifc_objects.py +++ b/src/Mod/BIM/nativeifc/ifc_objects.py @@ -198,6 +198,9 @@ def edit_annotation(self, obj, attribute, value=None): 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 From a8b4fb485ec65b55716642c4666c45ffc9bef8f0 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Thu, 17 Oct 2024 16:07:21 +0200 Subject: [PATCH 030/221] BIM: NativeIFC 2D support - small fixes --- src/Mod/BIM/nativeifc/ifc_export.py | 3 +++ src/Mod/BIM/nativeifc/ifc_objects.py | 2 +- src/Mod/BIM/nativeifc/ifc_tools.py | 6 +++++- 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/src/Mod/BIM/nativeifc/ifc_export.py b/src/Mod/BIM/nativeifc/ifc_export.py index daa976e7dde3..ca2d3d10cdca 100644 --- a/src/Mod/BIM/nativeifc/ifc_export.py +++ b/src/Mod/BIM/nativeifc/ifc_export.py @@ -234,6 +234,9 @@ def get_dimension(annotation): 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) diff --git a/src/Mod/BIM/nativeifc/ifc_objects.py b/src/Mod/BIM/nativeifc/ifc_objects.py index d5771302241f..f7a890ec319c 100644 --- a/src/Mod/BIM/nativeifc/ifc_objects.py +++ b/src/Mod/BIM/nativeifc/ifc_objects.py @@ -214,7 +214,7 @@ def edit_annotation(self, obj, attribute, value=None): else: print("DEBUG: unknown dimension curve type:",sub) elif attribute in ["DisplayLength","DisplayHeight","Depth"]: - l = w = h = 1000 + l = w = h = 1000.0 if obj.ViewObject: if obj.ViewObject.DisplayLength.Value: l = ifc_export.get_scaled_value(obj.ViewObject.DisplayLength.Value, ifcfile) diff --git a/src/Mod/BIM/nativeifc/ifc_tools.py b/src/Mod/BIM/nativeifc/ifc_tools.py index 6aa2e9dce0bc..d96783e771e1 100644 --- a/src/Mod/BIM/nativeifc/ifc_tools.py +++ b/src/Mod/BIM/nativeifc/ifc_tools.py @@ -843,6 +843,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(): @@ -882,12 +885,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) From 1d6e60f55829de61ea6d43b4ea9e1f574d8f9bfe Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Thu, 14 Nov 2024 10:35:16 +0100 Subject: [PATCH 031/221] BIM: NativeIFC 2D support - axes --- src/Mod/BIM/ArchAxis.py | 48 +++++++++++++++++---- src/Mod/BIM/importers/exportIFC.py | 23 ++++++++++ src/Mod/BIM/nativeifc/ifc_export.py | 28 ++++++++++++- src/Mod/BIM/nativeifc/ifc_generator.py | 57 ++++++++++++++++++------- src/Mod/BIM/nativeifc/ifc_objects.py | 3 +- src/Mod/BIM/nativeifc/ifc_tools.py | 58 ++++++++++++++++++++++++-- 6 files changed, 188 insertions(+), 29 deletions(-) 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/importers/exportIFC.py b/src/Mod/BIM/importers/exportIFC.py index 7e09064fa34c..e710208a64f8 100644 --- a/src/Mod/BIM/importers/exportIFC.py +++ b/src/Mod/BIM/importers/exportIFC.py @@ -2474,6 +2474,29 @@ def create_annotation(anno, ifcfile, context, history, preferences): 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() diff --git a/src/Mod/BIM/nativeifc/ifc_export.py b/src/Mod/BIM/nativeifc/ifc_export.py index ca2d3d10cdca..d55e159c9c9a 100644 --- a/src/Mod/BIM/nativeifc/ifc_export.py +++ b/src/Mod/BIM/nativeifc/ifc_export.py @@ -179,13 +179,15 @@ def get_object_type(ifcentity, objecttype=None): objecttype = "dimension" elif get_text(ifcentity): objecttype = "text" + elif ifcentity.is_a("IfcGridAxis"): + objecttype = "axis" return objecttype def is_annotation(obj): """Determines if the given FreeCAD object should be saved as an IfcAnnotation""" - if getattr(obj, "IfcClass", None) == "IfcAnnotation": + if getattr(obj, "IfcClass", None) in ["IfcAnnotation", "IfcGridAxis"]: return True if getattr(obj, "IfcType", None) == "Annotation": return True @@ -270,6 +272,30 @@ def get_sectionplane(annotation): 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""" diff --git a/src/Mod/BIM/nativeifc/ifc_generator.py b/src/Mod/BIM/nativeifc/ifc_generator.py index 9c9ea9289b06..578fe3c368b4 100644 --- a/src/Mod/BIM/nativeifc/ifc_generator.py +++ b/src/Mod/BIM/nativeifc/ifc_generator.py @@ -465,21 +465,39 @@ def set_representation(vobj, node): """Sets the correct coin nodes for the given Part object""" # node = [colors, verts, faces, edges, parts] + if not vobj.RootNode: + return + if vobj.RootNode.getNumChildren() < 3: + return 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 + switch = vobj.RootNode.getChild(2) + 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[3]: + if node[1] and node[3] and eset: coords.point.setValues(node[1]) eset.coordIndex.setValues(node[3]) - if node[2] and node[4]: + if node[2] and node[4] and fset: fset.coordIndex.setValues(node[2]) fset.partIndex.setValues(node[4]) @@ -553,7 +571,9 @@ def delete_ghost(document): def get_annotation_shape(annotation, ifcfile, coin=False): - """Returns a shape or a coin node form an IFC annotation""" + """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 @@ -562,14 +582,21 @@ def get_annotation_shape(annotation, ifcfile, coin=False): placement = None ifcscale = importIFCHelper.getScaling(ifcfile) shapes2d = [] - 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) + 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) - placement = importIFCHelper.getPlacement(annotation.ObjectPlacement, ifcscale) + if hasattr(annotation, "ObjectPlacement"): + placement = importIFCHelper.getPlacement(annotation.ObjectPlacement, ifcscale) + else: + placement = None if coin: iv = shape.writeInventor() iv = iv.replace("\n", "") diff --git a/src/Mod/BIM/nativeifc/ifc_objects.py b/src/Mod/BIM/nativeifc/ifc_objects.py index f7a890ec319c..26e3c9674946 100644 --- a/src/Mod/BIM/nativeifc/ifc_objects.py +++ b/src/Mod/BIM/nativeifc/ifc_objects.py @@ -26,7 +26,8 @@ translate = FreeCAD.Qt.translate # the property groups below should not be treated as psets -NON_PSETS = ["Base", "IFC", "", "Geometry", "Dimension", "Linear/radial dimension", "SectionPlane", "PhysicalProperties"] +NON_PSETS = ["Base", "IFC", "", "Geometry", "Dimension", "Linear/radial dimension", + "SectionPlane", "Axis", "PhysicalProperties"] class ifc_object: """Base class for all IFC-based objects""" diff --git a/src/Mod/BIM/nativeifc/ifc_tools.py b/src/Mod/BIM/nativeifc/ifc_tools.py index d96783e771e1..2b98c240a1aa 100644 --- a/src/Mod/BIM/nativeifc/ifc_tools.py +++ b/src/Mod/BIM/nativeifc/ifc_tools.py @@ -253,7 +253,7 @@ def create_object(ifcentity, document, ifcfile, shapemode=0, objecttype=None): 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) @@ -494,6 +494,7 @@ def add_object(document, otype=None, oname="IfcObject"): 'text', 'dimension', 'sectionplane', + 'axis', or anything else for a standard IFC object""" if not document: @@ -501,6 +502,15 @@ def add_object(document, otype=None, oname="IfcObject"): if 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) @@ -666,7 +676,18 @@ def add_properties( if value is not None: setattr(obj, attr, str(value)) # annotation properties - if ifcentity.is_a("IfcAnnotation"): + 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: @@ -1028,6 +1049,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) @@ -1053,6 +1081,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""" @@ -1218,6 +1269,7 @@ 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 @@ -1355,7 +1407,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: From 7f456d854f4e468d3893a5c3239fe257301f3c60 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Tue, 10 Dec 2024 10:24:27 +0100 Subject: [PATCH 032/221] BIM: Fixed whitespace --- src/Mod/BIM/nativeifc/ifc_objects.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Mod/BIM/nativeifc/ifc_objects.py b/src/Mod/BIM/nativeifc/ifc_objects.py index 26e3c9674946..ea8f097c2493 100644 --- a/src/Mod/BIM/nativeifc/ifc_objects.py +++ b/src/Mod/BIM/nativeifc/ifc_objects.py @@ -26,7 +26,7 @@ translate = FreeCAD.Qt.translate # the property groups below should not be treated as psets -NON_PSETS = ["Base", "IFC", "", "Geometry", "Dimension", "Linear/radial dimension", +NON_PSETS = ["Base", "IFC", "", "Geometry", "Dimension", "Linear/radial dimension", "SectionPlane", "Axis", "PhysicalProperties"] class ifc_object: From 2cc8c3e4c5c2b6d5130bce558bcfab7b08d5bf93 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Wed, 11 Dec 2024 10:45:41 +0100 Subject: [PATCH 033/221] BIM: Fixes appearance defects coming from recent transparency and #18298 --- src/Mod/BIM/nativeifc/ifc_generator.py | 14 ++++++++++++-- src/Mod/BIM/nativeifc/ifc_tools.py | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/Mod/BIM/nativeifc/ifc_generator.py b/src/Mod/BIM/nativeifc/ifc_generator.py index 578fe3c368b4..583dac7a24d3 100644 --- a/src/Mod/BIM/nativeifc/ifc_generator.py +++ b/src/Mod/BIM/nativeifc/ifc_generator.py @@ -464,13 +464,23 @@ 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] if not vobj.RootNode: return if vobj.RootNode.getNumChildren() < 3: return - coords = vobj.RootNode.getChild(1) # SoCoordinate3 - switch = vobj.RootNode.getChild(2) + 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 diff --git a/src/Mod/BIM/nativeifc/ifc_tools.py b/src/Mod/BIM/nativeifc/ifc_tools.py index 2b98c240a1aa..1c3dd9aa39bb 100644 --- a/src/Mod/BIM/nativeifc/ifc_tools.py +++ b/src/Mod/BIM/nativeifc/ifc_tools.py @@ -942,7 +942,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() From d057fd79602acaa30a2b3e62cdac99b215cbd355 Mon Sep 17 00:00:00 2001 From: Ronny Standtke Date: Thu, 12 Dec 2024 04:14:07 +0100 Subject: [PATCH 034/221] fixed loading of bim tutorial images --- src/Mod/BIM/bimcommands/BimTutorial.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Mod/BIM/bimcommands/BimTutorial.py b/src/Mod/BIM/bimcommands/BimTutorial.py index 7f04a459f16b..1467b2786c32 100644 --- a/src/Mod/BIM/bimcommands/BimTutorial.py +++ b/src/Mod/BIM/bimcommands/BimTutorial.py @@ -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"): From 6780d8a514ab34e91853d4c4a369a8b0d77becf3 Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Fri, 13 Dec 2024 13:55:17 +0100 Subject: [PATCH 035/221] Dark theme: tweak error color (#18468) * Update FreeCAD Dark.cfg * Update FreeCAD Dark.cfg * Update FreeCAD Dark.cfg --- src/Gui/PreferencePacks/FreeCAD Dark/FreeCAD Dark.cfg | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Gui/PreferencePacks/FreeCAD Dark/FreeCAD Dark.cfg b/src/Gui/PreferencePacks/FreeCAD Dark/FreeCAD Dark.cfg index 746f1e353e6d..8bac8f722dd2 100644 --- a/src/Gui/PreferencePacks/FreeCAD Dark/FreeCAD Dark.cfg +++ b/src/Gui/PreferencePacks/FreeCAD Dark/FreeCAD Dark.cfg @@ -92,10 +92,10 @@ - + - + From 7c3164ff618c188dce2dcc0b640f04a88aa8a708 Mon Sep 17 00:00:00 2001 From: wmayer Date: Thu, 12 Dec 2024 15:58:57 +0100 Subject: [PATCH 036/221] Part: Fix compiler warnings [-Wodr] Type 'struct EdgePoints' violates the C++ One Definition Rule because it's defined in two different translation units --- src/Mod/Part/App/AppPartPy.cpp | 5 +++++ src/Mod/Part/App/TopoShapeExpansion.cpp | 5 +++++ 2 files changed, 10 insertions(+) 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/TopoShapeExpansion.cpp b/src/Mod/Part/App/TopoShapeExpansion.cpp index 13e6a1ce258c..87bfd083a41a 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; From ad419828b00c6a11c47fb486de00aacaa1a96702 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Patryk=20Skowro=C5=84ski?= <115568996+pskowronskiTDx@users.noreply.github.com> Date: Fri, 13 Dec 2024 15:41:11 +0100 Subject: [PATCH 037/221] Update for 3Dconnexion NavLib integration (#18433) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fixed QuickZoom crash & picking in ortho view * Fixed QuickZoom for high DPI screens * Fixed return value for SetHitLookFrom Co-authored-by: Benjamin Nauck * Removed whitespace from GetPointerPosition Co-authored-by: Benjamin Nauck --------- Co-authored-by: Patryk Skowroński Co-authored-by: Benjamin Nauck --- src/Gui/3Dconnexion/navlib/NavlibInterface.h | 2 + .../3Dconnexion/navlib/NavlibNavigation.cpp | 49 +++++---------- src/Gui/3Dconnexion/navlib/NavlibPivot.cpp | 63 +++++++++++++++---- 3 files changed, 71 insertions(+), 43 deletions(-) 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 5acd45cd368c..df24487cf7cd 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); @@ -269,34 +274,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); @@ -348,11 +327,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; } @@ -390,6 +374,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 1b8ed7524b97..8c0ac446e7de 100644 --- a/src/Gui/3Dconnexion/navlib/NavlibPivot.cpp +++ b/src/Gui/3Dconnexion/navlib/NavlibPivot.cpp @@ -136,29 +136,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) { @@ -166,6 +187,11 @@ long NavlibInterface::GetHitLookAt(navlib::point_t& position) const closestHitPoint = hitPoint; } } + + if (wasPointerPick) { + wasPointerPick = false; + break; + } } if (minLength < MAX_FLOAT) { @@ -219,7 +245,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; } From 8bc062b6e8fcb2637eee2a1cac86f233ece01e38 Mon Sep 17 00:00:00 2001 From: Snow Faerie Date: Fri, 13 Dec 2024 17:39:30 +0100 Subject: [PATCH 038/221] Fix and add menu accelerators (#15532) * Fix and add menu accelerators: menus common to all workbenches I use menu accelerators fairly often, so I find it very frustrating when they are missing, or worse, they don't work due to the same letter being assigned to several commands. This patch adds accelerators to lots of menu entries missing them and fixes broken accelerators. Wherever possible, standard accelerator keys are used: https://doc.qt.io/qt-5/accelerators.html This commit covers accelerator fixes that are common to all workbenches. Accelerator fixes for specific workbenches will be done in separate commits. * Add missing accelerators: Spreadsheet workbench --- src/Gui/Action.cpp | 25 +++- src/Gui/Application.h | 8 +- src/Gui/CommandDoc.cpp | 36 ++--- src/Gui/CommandFeat.cpp | 2 +- src/Gui/CommandLink.cpp | 8 +- src/Gui/CommandMacro.cpp | 18 +-- src/Gui/CommandStd.cpp | 32 ++--- src/Gui/CommandView.cpp | 176 ++++++++++++------------- src/Gui/CommandWindow.cpp | 12 +- src/Gui/DocumentRecovery.cpp | 2 +- src/Gui/OnlineDocumentation.cpp | 2 +- src/Gui/Workbench.cpp | 12 +- src/Mod/Material/Gui/Command.cpp | 4 +- src/Mod/Part/Gui/Command.cpp | 4 +- src/Mod/PartDesign/Gui/CommandBody.cpp | 2 +- src/Mod/Spreadsheet/Gui/Command.cpp | 30 ++--- src/Mod/Start/Gui/Manipulator.cpp | 2 +- 17 files changed, 198 insertions(+), 177 deletions(-) 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.h b/src/Gui/Application.h index 0af9884193ed..0e77b81d498c 100644 --- a/src/Gui/Application.h +++ b/src/Gui/Application.h @@ -263,22 +263,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"))}, diff --git a/src/Gui/CommandDoc.cpp b/src/Gui/CommandDoc.cpp index f1899fb05205..b38065d1514e 100644 --- a/src/Gui/CommandDoc.cpp +++ b/src/Gui/CommandDoc.cpp @@ -521,7 +521,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 +574,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 +606,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 +735,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 +762,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 +790,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 +829,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 +860,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 +919,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 +949,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 +1094,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 +1122,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 +1197,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 +1463,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 +1543,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 +1590,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 +1625,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 +1735,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..f9bb92cbc6c4 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"); 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/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/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/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/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/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/Part/Gui/Command.cpp b/src/Mod/Part/Gui/Command.cpp index 7c8576f0edc7..3dee082a43e3 100644 --- a/src/Mod/Part/Gui/Command.cpp +++ b/src/Mod/Part/Gui/Command.cpp @@ -2081,7 +2081,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 +2183,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; 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/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/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; From d1f706050d171d933774f119b5ef969a717af640 Mon Sep 17 00:00:00 2001 From: Kacper Donat Date: Sat, 9 Nov 2024 20:27:57 +0100 Subject: [PATCH 039/221] TopoNaming: Refine - mark joined faces as modified not generated This is parity change with LS3: https://github.com/realthunder/FreeCAD/blob/a9810d509a6f112b5ac03d4d4831b67e6bffd5b7/src/Mod/Part/App/TopoShapeEx.cpp#L3357 --- src/Mod/Part/App/TopoShapeExpansion.cpp | 2 +- .../PartDesign/PartDesignTests/TestTopologicalNamingProblem.py | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Mod/Part/App/TopoShapeExpansion.cpp b/src/Mod/Part/App/TopoShapeExpansion.cpp index 87bfd083a41a..31f4f7010580 100644 --- a/src/Mod/Part/App/TopoShapeExpansion.cpp +++ b/src/Mod/Part/App/TopoShapeExpansion.cpp @@ -4630,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/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")) From c4528eb3a59e4de40d396fdcb5a95bc537ecf4f5 Mon Sep 17 00:00:00 2001 From: Florian Foinant-Willig Date: Tue, 3 Dec 2024 22:31:16 +0100 Subject: [PATCH 040/221] PartDesign: fix helix with negative angle --- src/Mod/PartDesign/App/FeatureHelix.cpp | 3 +- .../PartDesign/PartDesignTests/TestHelix.py | 44 +++++++++++++++++++ 2 files changed, 45 insertions(+), 2 deletions(-) diff --git a/src/Mod/PartDesign/App/FeatureHelix.cpp b/src/Mod/PartDesign/App/FeatureHelix.cpp index f3f3a9424564..0fe36104fe1f 100644 --- a/src/Mod/PartDesign/App/FeatureHelix.cpp +++ b/src/Mod/PartDesign/App/FeatureHelix.cpp @@ -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/PartDesignTests/TestHelix.py b/src/Mod/PartDesign/PartDesignTests/TestHelix.py index 2e4e0458649b..824693da786c 100644 --- a/src/Mod/PartDesign/PartDesignTests/TestHelix.py +++ b/src/Mod/PartDesign/PartDesignTests/TestHelix.py @@ -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") From eef368ae63c830e73670195cfc283feb69cc588d Mon Sep 17 00:00:00 2001 From: mosfet80 Date: Sun, 8 Dec 2024 20:34:37 +0100 Subject: [PATCH 041/221] Cleqn BaseTests.py Clean code --- src/Mod/Test/BaseTests.py | 37 ------------------------------------- 1 file changed, 37 deletions(-) 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") From f4f611163dc4e87279ca86372f4baead461d5da9 Mon Sep 17 00:00:00 2001 From: wasd845 Date: Sat, 14 Dec 2024 00:44:30 +0800 Subject: [PATCH 042/221] Add export config directory specification feature (#15235) --- src/Gui/DlgCreateNewPreferencePack.ui | 13 ++++++++++--- src/Gui/DlgCreateNewPreferencePackImp.cpp | 12 ++++++++++++ src/Gui/DlgCreateNewPreferencePackImp.h | 4 ++++ src/Gui/PreferencePackManager.cpp | 17 ++++++++++++----- src/Gui/PreferencePackManager.h | 2 +- src/Gui/PreferencePages/DlgSettingsGeneral.cpp | 3 ++- 6 files changed, 41 insertions(+), 10 deletions(-) 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/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/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(); } From fe57e3176dd3a61c8a8fa1f173a7168b2ec8c500 Mon Sep 17 00:00:00 2001 From: efferre79 Date: Fri, 13 Dec 2024 17:46:46 +0100 Subject: [PATCH 043/221] cmake fixes for external OndselSolver building (#18379) * Assembly: fix building with external OndselSolver This commit pairs with f35b075e271e9cb3451f3439f7dc0274841a0838. It solves two issues: - remove hardcoded includes of 3rdparty files - add missing include_directories() * Assembly: add check for external OndselSolver includes --- src/Mod/Assembly/App/AssemblyObject.h | 2 +- src/Mod/Assembly/App/CMakeLists.txt | 5 ----- src/Mod/Assembly/CMakeLists.txt | 11 +++++++++++ tests/src/Mod/Assembly/CMakeLists.txt | 5 +++++ 4 files changed, 17 insertions(+), 6 deletions(-) diff --git a/src/Mod/Assembly/App/AssemblyObject.h b/src/Mod/Assembly/App/AssemblyObject.h index 8ddf548a4295..a5f7df556c05 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 { 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/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 From 7550d54a017ebcb62ba9c9a7fefb0ead8727237e Mon Sep 17 00:00:00 2001 From: marioalexis Date: Mon, 9 Dec 2024 13:56:38 -0300 Subject: [PATCH 044/221] Base: Add electromagnetic potential unit --- src/App/Application.cpp | 1 + src/App/PropertyUnits.cpp | 11 +++++++++++ src/App/PropertyUnits.h | 13 +++++++++++++ src/Base/Unit.cpp | 4 ++++ src/Base/Unit.h | 1 + src/Base/UnitsSchemaInternal.cpp | 4 ++++ src/Base/UnitsSchemaMKS.cpp | 4 ++++ 7 files changed, 38 insertions(+) diff --git a/src/App/Application.cpp b/src/App/Application.cpp index 5a07c132f4bf..56ef0a38b2ba 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(); diff --git a/src/App/PropertyUnits.cpp b/src/App/PropertyUnits.cpp index bd8a0610bcf6..69e887039fae 100644 --- a/src/App/PropertyUnits.cpp +++ b/src/App/PropertyUnits.cpp @@ -554,6 +554,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..b67c82f74014 100644 --- a/src/App/PropertyUnits.h +++ b/src/App/PropertyUnits.h @@ -546,6 +546,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/Unit.cpp b/src/Base/Unit.cpp index 46a5dbe3ef0a..d60c3178d7eb 100644 --- a/src/Base/Unit.cpp +++ b/src/Base/Unit.cpp @@ -515,6 +515,9 @@ QString Unit::getTypeString() const if (*this == Unit::ElectricPotential) { return QString::fromLatin1("ElectricPotential"); } + if (*this == Unit::ElectromagneticPotential) { + return QString::fromLatin1("ElectromagneticPotential"); + } if (*this == Unit::Frequency) { return QString::fromLatin1("Frequency"); } @@ -656,6 +659,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..81ec17ec514a 100644 --- a/src/Base/Unit.h +++ b/src/Base/Unit.h @@ -137,6 +137,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; diff --git a/src/Base/UnitsSchemaInternal.cpp b/src/Base/UnitsSchemaInternal.cpp index c17cbbe99e8d..99824bb44bf3 100644 --- a/src/Base/UnitsSchemaInternal.cpp +++ b/src/Base/UnitsSchemaInternal.cpp @@ -400,6 +400,10 @@ UnitsSchemaInternal::schemaTranslate(const Quantity& quant, double& factor, QStr unitString = QString::fromLatin1("A/m"); factor = 1e-3; } + else if (unit == Unit::ElectromagneticPotential) { + unitString = QString::fromLatin1("Wb/m"); + factor = 1e3; + } else if (unit == Unit::ElectricalConductance) { if (UnitValue < 1e-9) { unitString = QString::fromUtf8("\xC2\xB5S"); diff --git a/src/Base/UnitsSchemaMKS.cpp b/src/Base/UnitsSchemaMKS.cpp index 5d921e8166a7..c575b81e9e84 100644 --- a/src/Base/UnitsSchemaMKS.cpp +++ b/src/Base/UnitsSchemaMKS.cpp @@ -347,6 +347,10 @@ QString UnitsSchemaMKS::schemaTranslate(const Quantity& quant, double& factor, Q unitString = QString::fromLatin1("A/m"); factor = 1e-3; } + else if (unit == Unit::ElectromagneticPotential) { + unitString = QString::fromLatin1("Wb/m"); + factor = 1e3; + } else if (unit == Unit::ElectricalConductance) { if (UnitValue < 1e-9) { unitString = QString::fromUtf8("\xC2\xB5S"); From c02aa87a358e1c0ca1d7b30ec20dcc459b798403 Mon Sep 17 00:00:00 2001 From: marioalexis Date: Mon, 9 Dec 2024 17:19:27 -0300 Subject: [PATCH 045/221] Fem: Make it possible to run CalculiX with one core - fixes #18339 --- src/Mod/Fem/Gui/DlgSettingsFemCcx.ui | 8 ++++---- src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py | 8 +++----- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/src/Mod/Fem/Gui/DlgSettingsFemCcx.ui b/src/Mod/Fem/Gui/DlgSettingsFemCcx.ui index 66084fab866c..9289ba959a02 100644 --- a/src/Mod/Fem/Gui/DlgSettingsFemCcx.ui +++ b/src/Mod/Fem/Gui/DlgSettingsFemCcx.ui @@ -300,11 +300,11 @@ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - 1 + + Set to zero to automatically use maximum number of available cores - - 40 + + 0 AnalysisNumCPUs diff --git a/src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py b/src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py index 114289aad1b4..55162bdb05e6 100644 --- a/src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py +++ b/src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py @@ -381,13 +381,11 @@ 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: + num_cpu_pref = ccx_prefs.GetInt("AnalysisNumCPUs", 0) + 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)) + env.insert("OMP_NUM_THREADS", str(QtCore.QThread.idealThreadCount())) self.Calculix.setProcessEnvironment(env) self.cwd = QtCore.QDir.currentPath() From b1f93bc51e60fec0a5337400aa02d1ecf8ae1d16 Mon Sep 17 00:00:00 2001 From: xtemp09 Date: Fri, 13 Dec 2024 23:52:51 +0700 Subject: [PATCH 046/221] [Spreadsheet] Enable zoom in Spreadsheet (#16130) * [Spreadsheet] Enable zoom in Spreadsheet Closes #6094. This commit also fixes page tab order of Spreadsheet settings in Preferences. * Spreadsheet: apply clang-format --------- Co-authored-by: Chris Hennes --- src/Mod/Spreadsheet/Gui/CMakeLists.txt | 2 + src/Mod/Spreadsheet/Gui/DlgSettings.ui | 98 ++++++--- src/Mod/Spreadsheet/Gui/DlgSettingsImp.cpp | 2 + src/Mod/Spreadsheet/Gui/Sheet.ui | 149 ++++++++++++- src/Mod/Spreadsheet/Gui/SheetTableView.cpp | 47 ++-- src/Mod/Spreadsheet/Gui/SheetTableView.h | 4 +- src/Mod/Spreadsheet/Gui/SpreadsheetView.cpp | 4 +- src/Mod/Spreadsheet/Gui/ZoomableView.cpp | 231 ++++++++++++++++++++ src/Mod/Spreadsheet/Gui/ZoomableView.h | 83 +++++++ 9 files changed, 567 insertions(+), 53 deletions(-) create mode 100644 src/Mod/Spreadsheet/Gui/ZoomableView.cpp create mode 100644 src/Mod/Spreadsheet/Gui/ZoomableView.h 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/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/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/SheetTableView.cpp b/src/Mod/Spreadsheet/Gui/SheetTableView.cpp index 3a9f33585c08..e95637084316 100644 --- a/src/Mod/Spreadsheet/Gui/SheetTableView.cpp +++ b/src/Mod/Spreadsheet/Gui/SheetTableView.cpp @@ -119,7 +119,7 @@ SheetTableView::SheetTableView(QWidget* parent) setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel); connect(verticalHeader(), &QWidget::customContextMenuRequested, [this](const QPoint& point) { - QMenu menu(this); + QMenu menu {nullptr}; const auto selection = selectionModel()->selectedRows(); const auto& [min, max] = selectedMinMaxRows(selection); if (bool isContiguous = max - min == selection.size() - 1) { @@ -141,11 +141,11 @@ 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); + QMenu menu {nullptr}; const auto selection = selectionModel()->selectedColumns(); const auto& [min, max] = selectedMinMaxColumns(selection); if (bool isContiguous = max - min == selection.size() - 1) { @@ -171,7 +171,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 +180,40 @@ SheetTableView::SheetTableView(QWidget* parent) horizontalHeader()->setContextMenuPolicy(Qt::CustomContextMenu); verticalHeader()->setContextMenuPolicy(Qt::CustomContextMenu); - contextMenu = new QMenu(this); - 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 +240,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 +251,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 +1124,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 From 83202d8ad67a719cb62e29d9dc3496a076999f1f Mon Sep 17 00:00:00 2001 From: Kevin Martin Date: Fri, 13 Dec 2024 11:54:46 -0500 Subject: [PATCH 047/221] Address the poor performance of the existing unique-name generation (#17944) * Address the poor performance of the existing unique-name generation As described in Issue 16849, the existing Tools::getUniqueName method requires calling code to form a vector of existing names to be avoided. This leads to poor performance both in the O(n) cost of building such a vector and also getUniqueName's O(n) algorithm for actually generating the unique name (where 'n' is the number of pre-existing names). This has particularly noticeable cost in documents with large numbers of DocumentObjects because generating both Names and Labels for each new object incurs this cost. During an operation such as importing this results in an O(n^2) time spent generating names. The other major cost is in the saving of the temporary backup file, which uses name generation for the "files" embedded in the Zip file. Documents can easily need several such "files" for each object in the document. This update includes the following changes: Create UniqueNameManager to keep a list of existing names organized in a manner that eases unique-name generation. This class essentially acts as a set of names, with the ability to add and remove names and check if a name is already there, with the added ability to take a prototype name and generate a unique form for it which is not already in the set. Eliminate Tools::getUniqueName Make DocumentObject naming use the new UniqueNameManager class Make DocumentObject Label naming use the new UniqueNameManager class. Labels are not always unique; unique labels are generated if the settings at the time request it (and other conditions). Because of this the Label management requires additionally keeping a map of counts for labels which already exist more than once. These collections are maintained via notifications of value changes on the Label properties of the objects in the document. Add Document::containsObject(DocumentObject*) for a definitive test of an object being in a Document. This is needed because DocumentObjects can be in a sort of limbo (e.g. when they are in the Undo/Redo lists) where they have a parent linkage to the Document but should not participate in Label collision checks. Rename Document.getStandardObjectName to getStandardObjectLabel to better represent what it does. Use new UniqueNameManager for Writer internal filenames within the zip file. Eliminate unneeded Reader::FileNames collection. The file names already exist in the FileList collection elements. The only existing use for the FileNames collection was to determine if there were any files at all, and with FileList and FileNames being parallel vectors, they both had the same length so FileList could be used for this test.. Use UniqueNameManager for document names and labels. This uses ad hoc UniqueNameManager objects created on the spot on the assumption that document creation is relatively rare and there are few documents, so although the cost is O(n), n itself is small. Use an ad hoc UniqueNameManager to name new DymanicProperty entries. This is only done if a property of the proposed name already exists, since such a check is more-or-less O(log(n)), almost never finds a collision, and avoids the O(n) building of the UniqueNameManager. If there is a collision an ad-hoc UniqueNameManager is built and discarded after use. The property management classes have a bit of a mess of methods including several to populate various collection types with all existing properties. Rather than introducing yet another such collection-specific method to fill a UniqueNameManager, a visitProperties method was added which calls a passed function for each property. The existing code would be simpler if existing fill-container methods all used this. Ideally the PropertyContainer class would keep a central directory of all properties ("static", Dynamic, and exposed by ExtensionContainer and other derivations) and a permanent UniqueNameManager. However the Property management is a bit of a mess making such a change a project unto itself. The unit tests for Tools:getUniqueName have been changed to test UniqueNameManager.makeUniqueName instead. This revealed a small regression insofar as passing a prototype name like "xyz1234" to the old code would yield "xyz1235" whether or not "xyz1234" already existed, while the new code will return the next name above the currently-highest name on the "xyz" model, which could be "xyz" or "xyz1". * Correct wrong case on include path * Implement suggested code changes Also change the semantics of visitProperties to not have any short-circuit return * Remove reference through undefined iterator * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Fix up some comments for DOxygen --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- src/App/Application.cpp | 156 ++++++++-------- src/App/Application.h | 4 +- src/App/Document.cpp | 156 ++++++++++------ src/App/Document.h | 22 ++- src/App/DocumentObject.cpp | 73 ++++++++ src/App/DocumentObject.h | 11 +- src/App/DynamicProperty.cpp | 42 +++-- src/App/DynamicProperty.h | 2 + src/App/Extension.cpp | 4 + src/App/Extension.h | 2 + src/App/ExtensionContainer.cpp | 7 + src/App/ExtensionContainer.h | 2 + src/App/PropertyContainer.cpp | 16 +- src/App/PropertyContainer.h | 7 + src/App/PropertyStandard.cpp | 96 +--------- src/App/private/DocumentP.h | 7 + src/Base/Reader.cpp | 5 +- src/Base/Reader.h | 5 +- src/Base/Tools.cpp | 296 +++++++++++++++++++----------- src/Base/Tools.h | 96 +++++++++- src/Base/Writer.cpp | 47 +---- src/Base/Writer.h | 25 ++- src/Gui/Document.cpp | 2 +- src/Gui/ViewProviderLink.cpp | 11 +- src/Gui/ViewProviderLink.h | 4 +- src/Mod/Spreadsheet/App/Sheet.cpp | 13 +- src/Mod/Spreadsheet/App/Sheet.h | 3 + tests/src/Base/Tools.cpp | 32 +++- 28 files changed, 716 insertions(+), 430 deletions(-) diff --git a/src/App/Application.cpp b/src/App/Application.cpp index 56ef0a38b2ba..9b9a0b7f56b8 100644 --- a/src/App/Application.cpp +++ b/src/App/Application.cpp @@ -450,41 +450,16 @@ void Application::renameDocument(const char *OldName, const char *NewName) throw Base::RuntimeError("Renaming document internal name is no longer allowed!"); } -Document* Application::newDocument(const char * Name, const char * UserName, bool createView, bool tempDoc) +Document* Application::newDocument(const char * proposedName, const char * proposedLabel, bool createView, bool tempDoc) { - auto getNameAndLabel = [this](const char * Name, const char * UserName) -> std::tuple { - bool defaultName = (!Name || Name[0] == '\0'); - - // get a valid name anyway! - if (defaultName) { - Name = "Unnamed"; - } - - std::string userName; - if (UserName && UserName[0] != '\0') { - userName = UserName; - } - else { - userName = defaultName ? QObject::tr("Unnamed").toStdString() : Name; - - std::vector names; - names.reserve(DocMap.size()); - for (const auto& pos : DocMap) { - names.emplace_back(pos.second->Label.getValue()); - } - - if (!names.empty()) { - userName = Base::Tools::getUniqueName(userName, names); - } - } - - return std::make_tuple(std::string(Name), userName); - }; + std::string name; + bool useDefaultName = (!proposedName || proposedName[0] == '\0'); + // get a valid name anyway! + if (useDefaultName) { + proposedName = "Unnamed"; + } - auto tuple = getNameAndLabel(Name, UserName); - std::string name = std::get<0>(tuple); - std::string userName = std::get<1>(tuple); - name = getUniqueDocumentName(name.c_str(), tempDoc); + name = getUniqueDocumentName(proposedName, tempDoc); // return the temporary document if it exists if (tempDoc) { @@ -493,53 +468,65 @@ Document* Application::newDocument(const char * Name, const char * UserName, boo return it->second; } - // create the FreeCAD document - std::unique_ptr newDoc(new Document(name.c_str())); - newDoc->setStatus(Document::TempDoc, tempDoc); + // Determine the document's Label + std::string label; + if (proposedLabel && proposedLabel[0] != '\0') { + label = proposedLabel; + } + else { + label = useDefaultName ? QObject::tr("Unnamed").toStdString() : proposedName; - auto oldActiveDoc = _pActiveDoc; - auto doc = newDoc.release(); // now owned by the Application + if (!DocMap.empty()) { + // The assumption here is that there are not many documents and + // documents are rarely created so the cost + // of building this manager each time is inconsequential + Base::UniqueNameManager names; + for (const auto& pos : DocMap) { + names.addExactName(pos.second->Label.getValue()); + } + + label = names.makeUniqueName(label); + } + } + // create the FreeCAD document + Document* doc = new Document(name.c_str()); + doc->setStatus(Document::TempDoc, tempDoc); // add the document to the internal list DocMap[name] = doc; - _pActiveDoc = doc; //NOLINTBEGIN // clang-format off // connect the signals to the application for the new document - _pActiveDoc->signalBeforeChange.connect(std::bind(&App::Application::slotBeforeChangeDocument, this, sp::_1, sp::_2)); - _pActiveDoc->signalChanged.connect(std::bind(&App::Application::slotChangedDocument, this, sp::_1, sp::_2)); - _pActiveDoc->signalNewObject.connect(std::bind(&App::Application::slotNewObject, this, sp::_1)); - _pActiveDoc->signalDeletedObject.connect(std::bind(&App::Application::slotDeletedObject, this, sp::_1)); - _pActiveDoc->signalBeforeChangeObject.connect(std::bind(&App::Application::slotBeforeChangeObject, this, sp::_1, sp::_2)); - _pActiveDoc->signalChangedObject.connect(std::bind(&App::Application::slotChangedObject, this, sp::_1, sp::_2)); - _pActiveDoc->signalRelabelObject.connect(std::bind(&App::Application::slotRelabelObject, this, sp::_1)); - _pActiveDoc->signalActivatedObject.connect(std::bind(&App::Application::slotActivatedObject, this, sp::_1)); - _pActiveDoc->signalUndo.connect(std::bind(&App::Application::slotUndoDocument, this, sp::_1)); - _pActiveDoc->signalRedo.connect(std::bind(&App::Application::slotRedoDocument, this, sp::_1)); - _pActiveDoc->signalRecomputedObject.connect(std::bind(&App::Application::slotRecomputedObject, this, sp::_1)); - _pActiveDoc->signalRecomputed.connect(std::bind(&App::Application::slotRecomputed, this, sp::_1)); - _pActiveDoc->signalBeforeRecompute.connect(std::bind(&App::Application::slotBeforeRecompute, this, sp::_1)); - _pActiveDoc->signalOpenTransaction.connect(std::bind(&App::Application::slotOpenTransaction, this, sp::_1, sp::_2)); - _pActiveDoc->signalCommitTransaction.connect(std::bind(&App::Application::slotCommitTransaction, this, sp::_1)); - _pActiveDoc->signalAbortTransaction.connect(std::bind(&App::Application::slotAbortTransaction, this, sp::_1)); - _pActiveDoc->signalStartSave.connect(std::bind(&App::Application::slotStartSaveDocument, this, sp::_1, sp::_2)); - _pActiveDoc->signalFinishSave.connect(std::bind(&App::Application::slotFinishSaveDocument, this, sp::_1, sp::_2)); - _pActiveDoc->signalChangePropertyEditor.connect(std::bind(&App::Application::slotChangePropertyEditor, this, sp::_1, sp::_2)); + doc->signalBeforeChange.connect(std::bind(&App::Application::slotBeforeChangeDocument, this, sp::_1, sp::_2)); + doc->signalChanged.connect(std::bind(&App::Application::slotChangedDocument, this, sp::_1, sp::_2)); + doc->signalNewObject.connect(std::bind(&App::Application::slotNewObject, this, sp::_1)); + doc->signalDeletedObject.connect(std::bind(&App::Application::slotDeletedObject, this, sp::_1)); + doc->signalBeforeChangeObject.connect(std::bind(&App::Application::slotBeforeChangeObject, this, sp::_1, sp::_2)); + doc->signalChangedObject.connect(std::bind(&App::Application::slotChangedObject, this, sp::_1, sp::_2)); + doc->signalRelabelObject.connect(std::bind(&App::Application::slotRelabelObject, this, sp::_1)); + doc->signalActivatedObject.connect(std::bind(&App::Application::slotActivatedObject, this, sp::_1)); + doc->signalUndo.connect(std::bind(&App::Application::slotUndoDocument, this, sp::_1)); + doc->signalRedo.connect(std::bind(&App::Application::slotRedoDocument, this, sp::_1)); + doc->signalRecomputedObject.connect(std::bind(&App::Application::slotRecomputedObject, this, sp::_1)); + doc->signalRecomputed.connect(std::bind(&App::Application::slotRecomputed, this, sp::_1)); + doc->signalBeforeRecompute.connect(std::bind(&App::Application::slotBeforeRecompute, this, sp::_1)); + doc->signalOpenTransaction.connect(std::bind(&App::Application::slotOpenTransaction, this, sp::_1, sp::_2)); + doc->signalCommitTransaction.connect(std::bind(&App::Application::slotCommitTransaction, this, sp::_1)); + doc->signalAbortTransaction.connect(std::bind(&App::Application::slotAbortTransaction, this, sp::_1)); + doc->signalStartSave.connect(std::bind(&App::Application::slotStartSaveDocument, this, sp::_1, sp::_2)); + doc->signalFinishSave.connect(std::bind(&App::Application::slotFinishSaveDocument, this, sp::_1, sp::_2)); + doc->signalChangePropertyEditor.connect(std::bind(&App::Application::slotChangePropertyEditor, this, sp::_1, sp::_2)); // clang-format on //NOLINTEND - // make sure that the active document is set in case no GUI is up - { - Base::PyGILStateLocker lock; - Py::Object active(_pActiveDoc->getPyObject(), true); - Py::Module("FreeCAD").setAttr(std::string("ActiveDocument"), active); - } - - signalNewDocument(*_pActiveDoc, createView); + // (temporarily) make this the active document for the upcoming notifications. + // Signal NewDocument rather than ActiveDocument + auto oldActiveDoc = _pActiveDoc; + setActiveDocumentNoSignal(doc); + signalNewDocument(*doc, createView); - // set the UserName after notifying all observers - _pActiveDoc->Label.setValue(userName); + doc->Label.setValue(label); // set the old document active again if the new is temporary if (tempDoc && oldActiveDoc) @@ -629,13 +616,17 @@ std::string Application::getUniqueDocumentName(const char *Name, bool tempDoc) c return CleanName; } else { - std::vector names; - names.reserve(DocMap.size()); - for (pos = DocMap.begin(); pos != DocMap.end(); ++pos) { - if (!tempDoc || !pos->second->testStatus(Document::TempDoc)) - names.push_back(pos->first); + // The assumption here is that there are not many documents and + // documents are rarely created so the cost + // of building this manager each time is inconsequential + Base::UniqueNameManager names; + for (const auto& pos : DocMap) { + if (!tempDoc || !pos.second->testStatus(Document::TempDoc)) { + names.addExactName(pos.first); + } } - return Base::Tools::getUniqueName(CleanName, names); + + return names.makeUniqueName(CleanName); } } @@ -1053,6 +1044,14 @@ Document* Application::getActiveDocument() const } void Application::setActiveDocument(Document* pDoc) +{ + setActiveDocumentNoSignal(pDoc); + + if (pDoc) + signalActiveDocument(*pDoc); +} + +void Application::setActiveDocumentNoSignal(Document* pDoc) { _pActiveDoc = pDoc; @@ -1060,18 +1059,15 @@ void Application::setActiveDocument(Document* pDoc) if (pDoc) { Base::PyGILStateLocker lock; Py::Object active(pDoc->getPyObject(), true); - Py::Module("FreeCAD").setAttr(std::string("ActiveDocument"),active); + Py::Module("FreeCAD").setAttr(std::string("ActiveDocument"), active); } else { Base::PyGILStateLocker lock; - Py::Module("FreeCAD").setAttr(std::string("ActiveDocument"),Py::None()); + Py::Module("FreeCAD").setAttr(std::string("ActiveDocument"), Py::None()); } - - if (pDoc) - signalActiveDocument(*pDoc); } -void Application::setActiveDocument(const char *Name) +void Application::setActiveDocument(const char* Name) { // If no active document is set, resort to a default. if (*Name == '\0') { diff --git a/src/App/Application.h b/src/App/Application.h index e2a32adefe2d..2a19bd80fd34 100644 --- a/src/App/Application.h +++ b/src/App/Application.h @@ -160,7 +160,7 @@ class AppExport Application std::vector getDocuments() const; /// Set the active document void setActiveDocument(App::Document* pDoc); - void setActiveDocument(const char *Name); + void setActiveDocument(const char* Name); /// close all documents (without saving) void closeAllDocuments(); /// Add pending document to open together with the current opening document @@ -505,6 +505,8 @@ class AppExport Application static void cleanupUnits(); + void setActiveDocumentNoSignal(App::Document* pDoc); + /** @name member for parameter */ //@{ static Base::Reference _pcSysParamMngr; diff --git a/src/App/Document.cpp b/src/App/Document.cpp index 131a18ba855f..b834a4777bfe 100644 --- a/src/App/Document.cpp +++ b/src/App/Document.cpp @@ -645,8 +645,11 @@ void Document::clearDocument() setStatus(Document::PartialDoc, false); d->clearRecomputeLog(); + d->objectLabelCounts.clear(); + d->objectLabelManager.clear(); d->objectArray.clear(); d->objectMap.clear(); + d->objectNameManager.clear(); d->objectIdMap.clear(); d->lastObjectId = 0; } @@ -2250,6 +2253,59 @@ bool Document::saveToFile(const char* filename) const return true; } +void Document::registerLabel(const std::string& newLabel) +{ + if (newLabel.empty()) { + return; + } + if (!d->objectLabelManager.containsName(newLabel)) { + // First occurrence of label. We make no entry in objectLabelCounts when the count is one. + d->objectLabelManager.addExactName(newLabel); + } + else { + auto it = d->objectLabelCounts.find(newLabel); + if (it != d->objectLabelCounts.end()) { + // There is a count already greater then one, so increment it + it->second++; + } + else { + // There is no count entry, which implies one, so register a count of two + d->objectLabelCounts.insert(std::pair(newLabel, 2)); + } + } +} + +void Document::unregisterLabel(const std::string& oldLabel) +{ + if (oldLabel.empty()) { + return; + } + auto it = d->objectLabelCounts.find(oldLabel); + if (it == d->objectLabelCounts.end()) { + // Missing count implies a count of one, or an unregistered name + d->objectLabelManager.removeExactName(oldLabel); + return; + } + if (--it->second == 1) { + // Decremented to one, remove the count entry + d->objectLabelCounts.erase(it); + } +} + +bool Document::containsLabel(const std::string& label) +{ + return d->objectLabelManager.containsName(label); +} + +std::string Document::makeUniqueLabel(const std::string& modelLabel) +{ + if (modelLabel.empty()) { + return std::string(); + } + + return d->objectLabelManager.makeUniqueName(modelLabel, 3); +} + bool Document::isAnyRestoring() { return globalIsRestoring; @@ -2276,7 +2332,10 @@ void Document::restore(const char* filename, setStatus(Document::PartialDoc, false); d->clearRecomputeLog(); + d->objectLabelCounts.clear(); + d->objectLabelManager.clear(); d->objectArray.clear(); + d->objectNameManager.clear(); d->objectMap.clear(); d->objectIdMap.clear(); d->lastObjectId = 0; @@ -3585,6 +3644,7 @@ DocumentObject* Document::addObject(const char* sType, // insert in the name map d->objectMap[ObjectName] = pcObject; + d->objectNameManager.addExactName(ObjectName); // generate object id and add to id map; pcObject->_Id = ++d->lastObjectId; d->objectIdMap[pcObject->_Id] = pcObject; @@ -3593,6 +3653,8 @@ DocumentObject* Document::addObject(const char* sType, pcObject->pcNameInDocument = &(d->objectMap.find(ObjectName)->first); // insert in the vector d->objectArray.push_back(pcObject); + // Register the current Label even though it is (probably) about to change + registerLabel(pcObject->Label.getStrValue()); // If we are restoring, don't set the Label object now; it will be restored later. This is to // avoid potential duplicate label conflicts later. @@ -3653,13 +3715,6 @@ Document::addObjects(const char* sType, const std::vector& objectNa return objects; } - // get all existing object names - std::vector reservedNames; - reservedNames.reserve(d->objectMap.size()); - for (const auto& pos : d->objectMap) { - reservedNames.push_back(pos.first); - } - for (auto it = objects.begin(); it != objects.end(); ++it) { auto index = std::distance(objects.begin(), it); App::DocumentObject* pcObject = *it; @@ -3674,29 +3729,19 @@ Document::addObjects(const char* sType, const std::vector& objectNa } } - // get unique name + // get unique name. We don't use getUniqueObjectName because it takes a char* not a std::string std::string ObjectName = objectNames[index]; if (ObjectName.empty()) { ObjectName = sType; } ObjectName = Base::Tools::getIdentifier(ObjectName); - if (d->objectMap.find(ObjectName) != d->objectMap.end()) { - // remove also trailing digits from clean name which is to avoid to create lengthy names - // like 'Box001001' - if (!testStatus(KeepTrailingDigits)) { - std::string::size_type index = ObjectName.find_last_not_of("0123456789"); - if (index + 1 < ObjectName.size()) { - ObjectName = ObjectName.substr(0, index + 1); - } - } - - ObjectName = Base::Tools::getUniqueName(ObjectName, reservedNames, 3); + if (d->objectNameManager.containsName(ObjectName)) { + ObjectName = d->objectNameManager.makeUniqueName(ObjectName, 3); } - reservedNames.push_back(ObjectName); - // insert in the name map d->objectMap[ObjectName] = pcObject; + d->objectNameManager.addExactName(ObjectName); // generate object id and add to id map; pcObject->_Id = ++d->lastObjectId; d->objectIdMap[pcObject->_Id] = pcObject; @@ -3705,6 +3750,8 @@ Document::addObjects(const char* sType, const std::vector& objectNa pcObject->pcNameInDocument = &(d->objectMap.find(ObjectName)->first); // insert in the vector d->objectArray.push_back(pcObject); + // Register the current Label even though it is about to change + registerLabel(pcObject->Label.getStrValue()); pcObject->Label.setValue(ObjectName); @@ -3765,6 +3812,7 @@ void Document::addObject(DocumentObject* pcObject, const char* pObjectName) // insert in the name map d->objectMap[ObjectName] = pcObject; + d->objectNameManager.addExactName(ObjectName); // generate object id and add to id map; if (!pcObject->_Id) { pcObject->_Id = ++d->lastObjectId; @@ -3775,6 +3823,8 @@ void Document::addObject(DocumentObject* pcObject, const char* pObjectName) pcObject->pcNameInDocument = &(d->objectMap.find(ObjectName)->first); // insert in the vector d->objectArray.push_back(pcObject); + // Register the current Label even though it is about to change + registerLabel(pcObject->Label.getStrValue()); pcObject->Label.setValue(ObjectName); @@ -3798,12 +3848,14 @@ void Document::_addObject(DocumentObject* pcObject, const char* pObjectName) { std::string ObjectName = getUniqueObjectName(pObjectName); d->objectMap[ObjectName] = pcObject; + d->objectNameManager.addExactName(ObjectName); // generate object id and add to id map; if (!pcObject->_Id) { pcObject->_Id = ++d->lastObjectId; } d->objectIdMap[pcObject->_Id] = pcObject; d->objectArray.push_back(pcObject); + registerLabel(pcObject->Label.getStrValue()); // cache the pointer to the name string in the Object (for performance of // DocumentObject::getNameInDocument()) pcObject->pcNameInDocument = &(d->objectMap.find(ObjectName)->first); @@ -3832,6 +3884,15 @@ void Document::_addObject(DocumentObject* pcObject, const char* pObjectName) signalActivatedObject(*pcObject); } +bool Document::containsObject(const DocumentObject* pcObject) const +{ + // We could look for the object in objectMap (keyed by object name), + // or search in objectArray (a O(n) vector search) but looking by Id + // in objectIdMap would be fastest. + auto found = d->objectIdMap.find(pcObject->getID()); + return found != d->objectIdMap.end() && found->second == pcObject; +} + /// Remove an object out of the document void Document::removeObject(const char* sName) { @@ -3919,6 +3980,7 @@ void Document::removeObject(const char* sName) } } + unregisterLabel(pos->second->Label.getStrValue()); for (std::vector::iterator obj = d->objectArray.begin(); obj != d->objectArray.end(); ++obj) { @@ -3932,6 +3994,7 @@ void Document::removeObject(const char* sName) if (tobedestroyed) { tobedestroyed->pcNameInDocument = nullptr; } + d->objectNameManager.removeExactName(pos->first); d->objectMap.erase(pos); } @@ -4001,6 +4064,8 @@ void Document::_removeObject(DocumentObject* pcObject) // remove from map pcObject->setStatus(ObjectStatus::Remove, false); // Unset the bit to be on the safe side d->objectIdMap.erase(pcObject->_Id); + d->objectNameManager.removeExactName(pos->first); + unregisterLabel(pos->second->Label.getStrValue()); d->objectMap.erase(pos); for (std::vector::iterator it = d->objectArray.begin(); @@ -4277,50 +4342,29 @@ const char* Document::getObjectName(DocumentObject* pFeat) const return nullptr; } -std::string Document::getUniqueObjectName(const char* Name) const +std::string Document::getUniqueObjectName(const char* proposedName) const { - if (!Name || *Name == '\0') { + if (!proposedName || *proposedName == '\0') { return {}; } - std::string CleanName = Base::Tools::getIdentifier(Name); - - // name in use? - auto pos = d->objectMap.find(CleanName); - - if (pos == d->objectMap.end()) { - // if not, name is OK - return CleanName; - } - else { - // remove also trailing digits from clean name which is to avoid to create lengthy names - // like 'Box001001' - if (!testStatus(KeepTrailingDigits)) { - std::string::size_type index = CleanName.find_last_not_of("0123456789"); - if (index + 1 < CleanName.size()) { - CleanName = CleanName.substr(0, index + 1); - } - } + std::string cleanName = Base::Tools::getIdentifier(proposedName); - std::vector names; - names.reserve(d->objectMap.size()); - for (pos = d->objectMap.begin(); pos != d->objectMap.end(); ++pos) { - names.push_back(pos->first); - } - return Base::Tools::getUniqueName(CleanName, names, 3); + if (!d->objectNameManager.containsName(cleanName)) { + // Not in use yet, name is OK + return cleanName; } + return d->objectNameManager.makeUniqueName(cleanName, 3); } -std::string Document::getStandardObjectName(const char* Name, int d) const + std::tuple +Document::decomposeName(const std::string& name, std::string& baseName, std::string& nameExtension) { - std::vector mm = getObjects(); - std::vector labels; - labels.reserve(mm.size()); + return d->objectNameManager.decomposeName(name, baseName, nameExtension); +} - for (auto it : mm) { - std::string label = it->Label.getValue(); - labels.push_back(label); - } - return Base::Tools::getUniqueName(Name, labels, d); +std::string Document::getStandardObjectLabel(const char* modelName, int digitCount) const +{ + return d->objectLabelManager.makeUniqueName(modelName, digitCount); } std::vector Document::getDependingObjects() const diff --git a/src/App/Document.h b/src/App/Document.h index 36a878ee1043..a740c2e5303f 100644 --- a/src/App/Document.h +++ b/src/App/Document.h @@ -287,6 +287,10 @@ class AppExport Document: public App::PropertyContainer */ void addObject(DocumentObject*, const char* pObjectName = nullptr); + /// returns whether this is actually contains the DocumentObject. + /// Testing the DocumentObject's pDoc pointer is not sufficient because the object + /// removeObject and _removeObject leave _pDoc unchanged + bool containsObject(const DocumentObject*) const; /** Copy objects from another document to this document * @@ -318,11 +322,14 @@ class AppExport Document: public App::PropertyContainer /// Returns true if the DocumentObject is contained in this document bool isIn(const DocumentObject* pFeat) const; /// Returns a Name of an Object or 0 - const char* getObjectName(DocumentObject* pFeat) const; - /// Returns a Name of an Object or 0 - std::string getUniqueObjectName(const char* Name) const; - /// Returns a name of the form prefix_number. d specifies the number of digits. - std::string getStandardObjectName(const char* Name, int d) const; + const char *getObjectName(DocumentObject* pFeat) const; + /// Returns a Name for a new Object or empty if proposedName is null or empty. + std::string getUniqueObjectName(const char* proposedName) const; + /// Returns a name different from any of the Labels of any objects in this document, based on the given modelName. + std::string getStandardObjectLabel(const char* modelName, int d) const; + /// Break an object Name or Label into its base parts, returning tuple(digitCount, digitsValue) + std::tuple + decomposeName(const std::string& name, std::string& baseName, std::string& nameExtension); /// Returns a list of document's objects including the dependencies std::vector getDependingObjects() const; /// Returns a list of all Objects @@ -567,6 +574,11 @@ class AppExport Document: public App::PropertyContainer /// Indicate if there is any document restoring/importing static bool isAnyRestoring(); + void registerLabel(const std ::string& newLabel); + void unregisterLabel(const std::string& oldLabel); + bool containsLabel(const std::string& label); + std::string makeUniqueLabel(const std::string& modelLabel); + friend class Application; /// because of transaction handling friend class TransactionalObject; diff --git a/src/App/DocumentObject.cpp b/src/App/DocumentObject.cpp index bd2b3b395eec..8c2ad17b92c5 100644 --- a/src/App/DocumentObject.cpp +++ b/src/App/DocumentObject.cpp @@ -814,6 +814,74 @@ void DocumentObject::onBeforeChange(const Property* prop) signalBeforeChange(*this, *prop); } +std::vector>> +DocumentObject::onProposedLabelChange(std::string& newLabel) +{ + // Note that this work can't be done in onBeforeChangeLabel because FeaturePython overrides this + // method and does not initially base-call it. + + // We re only called if the new label differs from the old one, and our code to check duplicates + // may not work if this is not the case. + std::string oldLabel = Label.getStrValue(); + assert(newLabel != oldLabel); + std::string label; + if (!isAttachedToDocument() + || (getDocument()->testStatus(App::Document::Restoring) + && !getDocument()->testStatus(App::Document::Importing)) + || getDocument()->isPerformingTransaction()) { + return {}; + } + static ParameterGrp::handle _hPGrp; + if (!_hPGrp) { + _hPGrp = GetApplication().GetUserParameter().GetGroup("BaseApp"); + _hPGrp = _hPGrp->GetGroup("Preferences")->GetGroup("Document"); + } + App::Document* doc = getDocument(); + if (doc && newLabel.size() > 0 && !_hPGrp->GetBool("DuplicateLabels") && !allowDuplicateLabel() + && doc->containsLabel(newLabel)) { + // We must ensure the Label is unique in the document (well, sort of...). + // If the base name of the proposed label equals the base name of the object Name, we use + // the (uniquefied) object Name, which could actually be identical to another object's Label, + // but probably isn't. + // Otherwise we generate a unique Label using newLabel as a prototype name. In doing so, + // we must also act as if the current value of the property is not an existing Label entry. + std::string objName = getNameInDocument(); + std::string objBaseName; + std::string objSuffix; + doc->decomposeName(objName, objBaseName, objSuffix); + std::string newBaseName; + std::string newSuffix; + doc->decomposeName(newLabel, newBaseName, newSuffix); + if (newBaseName == objBaseName && newSuffix == objSuffix) { + newLabel = objName; + } + else { + // We deregister the old label so it does not interfere with making the new label, + // and re-register it after. This is probably a bit less efficient that having a special + // make-unique-label-as-if-this-one-did-not-exist method, but such a method would be a real + // ugly wart. + doc->unregisterLabel(oldLabel); + newLabel = doc->makeUniqueLabel(newLabel); + doc->registerLabel(oldLabel); + } + } + + // Despite our efforts to make a unique label, onBeforeLabelChange can change it. + onBeforeChangeLabel(newLabel); + + if (oldLabel == newLabel || getDocument()->testStatus(App::Document::Restoring)) { + // Don't update label reference if we are restoring or if the label is unchanged. + // When importing (which also counts as restoring), it is possible the + // new object changes its label. However, we cannot update label + // references here, because object being restored is not based on + // dependency order. It can only be done in afterRestore(). + // + // See PropertyLinkBase::restoreLabelReference() for more details. + return {}; + } + return PropertyLinkBase::updateLabelReferences(this, newLabel.c_str()); +} + void DocumentObject::onEarlyChange(const Property* prop) { if (GetApplication().isClosingAll()) { @@ -836,6 +904,11 @@ void DocumentObject::onEarlyChange(const Property* prop) /// get called by the container when a Property was changed void DocumentObject::onChanged(const Property* prop) { + if (prop == &Label && _pDoc && _pDoc->containsObject(this) && oldLabel != Label.getStrValue()) { + _pDoc->unregisterLabel(oldLabel); + _pDoc->registerLabel(Label.getStrValue()); + } + if (isFreezed() && prop != &Visibility) { return; } diff --git a/src/App/DocumentObject.h b/src/App/DocumentObject.h index 72f78fe13d91..666f066dfb6f 100644 --- a/src/App/DocumentObject.h +++ b/src/App/DocumentObject.h @@ -513,7 +513,14 @@ class AppExport DocumentObject: public App::TransactionalObject { return false; } - + /// Handle Label changes, including forcing unique label values, + /// signalling OnBeforeLabelChange, and arranging to update linked references, + /// on the assumption that after returning the label will indeed be changed to + /// the (altered) value of newLabel. + /// Returns a vector of referenging (linking) properties as produced by + /// PropertyLinkBase::updateLabelReferences which is needed for undo/redo purposes. + std::vector>> + onProposedLabelChange(std::string& newLabel); /*** Called to let object itself control relabeling * * @param newLabel: input as the new label, which can be modified by object itself @@ -765,10 +772,10 @@ class AppExport DocumentObject: public App::TransactionalObject /// Old label; used for renaming expressions std::string oldLabel; +private: // pointer to the document name string (for performance) const std::string* pcNameInDocument {nullptr}; -private: // accessed by App::Document to record and restore the correct view provider type std::string _pcViewProviderName; diff --git a/src/App/DynamicProperty.cpp b/src/App/DynamicProperty.cpp index f79ecd565098..c9bdb89981ef 100644 --- a/src/App/DynamicProperty.cpp +++ b/src/App/DynamicProperty.cpp @@ -70,7 +70,13 @@ void DynamicProperty::getPropertyNamedList( } } -void DynamicProperty::getPropertyMap(std::map& Map) const +void DynamicProperty::visitProperties(std::function visitor) const { + for (auto& v : props.get<0>()) { + visitor(v.property); + } +} + +void DynamicProperty::getPropertyMap(std::map& Map) const { for (auto& v : props.get<0>()) { Map[v.name] = v.property; @@ -298,25 +304,21 @@ bool DynamicProperty::removeDynamicProperty(const char* name) std::string DynamicProperty::getUniquePropertyName(PropertyContainer& pc, const char* Name) const { - std::string CleanName = Base::Tools::getIdentifier(Name); - - // name in use? - std::map objectProps; - pc.getPropertyMap(objectProps); - auto pos = objectProps.find(CleanName); - - if (pos == objectProps.end()) { - // if not, name is OK - return CleanName; - } - else { - std::vector names; - names.reserve(objectProps.size()); - for (pos = objectProps.begin(); pos != objectProps.end(); ++pos) { - names.push_back(pos->first); - } - return Base::Tools::getUniqueName(CleanName, names); - } + std::string cleanName = Base::Tools::getIdentifier(Name); + + // We test if the property already exists by finding it, which is not much more expensive than + // having a separate propertyExists(name) method. This avoids building the UniqueNameManager + // (which could also tell if the name exists) except in the relatively rare condition of + // the name already existing. + if (pc.getPropertyByName(cleanName.c_str()) == nullptr) { + return cleanName; + } + Base::UniqueNameManager names; + // Build the index of existing names. + pc.visitProperties([&](Property* prop) { + names.addExactName(prop->getName()); + }); + return names.makeUniqueName(cleanName); } void DynamicProperty::save(const Property* prop, Base::Writer& writer) const diff --git a/src/App/DynamicProperty.h b/src/App/DynamicProperty.h index 29936fa66563..0e24c63ca566 100644 --- a/src/App/DynamicProperty.h +++ b/src/App/DynamicProperty.h @@ -87,6 +87,8 @@ class AppExport DynamicProperty void getPropertyList(std::vector& List) const; /// get all properties with their names void getPropertyNamedList(std::vector>& List) const; + /// See PropertyContainer::visitProperties for semantics + void visitProperties(std::function visitor) const; /// Get all properties of the class (including parent) void getPropertyMap(std::map& Map) const; /// Find a dynamic property by its name diff --git a/src/App/Extension.cpp b/src/App/Extension.cpp index c84e613de49d..c942a0e5cb19 100644 --- a/src/App/Extension.cpp +++ b/src/App/Extension.cpp @@ -181,6 +181,10 @@ void Extension::extensionGetPropertyMap(std::map& Map) c extensionGetPropertyData().getPropertyMap(this, Map); } +void Extension::extensionVisitProperties(std::function visitor) const +{ + extensionGetPropertyData().visitProperties(this, visitor); +} void Extension::initExtensionSubclass(Base::Type& toInit, const char* ClassName, const char* ParentName, diff --git a/src/App/Extension.h b/src/App/Extension.h index 7c1545435e3b..b4395d870407 100644 --- a/src/App/Extension.h +++ b/src/App/Extension.h @@ -254,6 +254,8 @@ class AppExport Extension virtual const char* extensionGetPropertyName(const Property* prop) const; /// get all properties of the class (including properties of the parent) virtual void extensionGetPropertyMap(std::map &Map) const; + /// See PropertyContainer::visitProperties for semantics + virtual void extensionVisitProperties(std::function visitor) const; /// get all properties of the class (including properties of the parent) virtual void extensionGetPropertyList(std::vector &List) const; diff --git a/src/App/ExtensionContainer.cpp b/src/App/ExtensionContainer.cpp index 2fd642990d17..e16f7bcac931 100644 --- a/src/App/ExtensionContainer.cpp +++ b/src/App/ExtensionContainer.cpp @@ -176,6 +176,13 @@ void ExtensionContainer::getPropertyMap(std::map& Map) c entry.second->extensionGetPropertyMap(Map); } } +void ExtensionContainer::visitProperties(std::function visitor) const +{ + App::PropertyContainer::visitProperties(visitor); + for(const auto &entry : _extensions) { + entry.second->extensionVisitProperties(visitor); + }; +} Property* ExtensionContainer::getPropertyByName(const char* name) const { diff --git a/src/App/ExtensionContainer.h b/src/App/ExtensionContainer.h index 9fb5d6284fef..957c8a34d7fb 100644 --- a/src/App/ExtensionContainer.h +++ b/src/App/ExtensionContainer.h @@ -182,6 +182,8 @@ class AppExport ExtensionContainer: public App::PropertyContainer const char* getPropertyName(const Property* prop) const override; /// get all properties of the class (including properties of the parent) void getPropertyMap(std::map& Map) const override; + /// See PropertyContainer::visitProperties for semantics + void visitProperties(std::function visitor) const override; /// get all properties of the class (including properties of the parent) void getPropertyList(std::vector& List) const override; diff --git a/src/App/PropertyContainer.cpp b/src/App/PropertyContainer.cpp index 10100e65a3ae..3b33044d76c1 100644 --- a/src/App/PropertyContainer.cpp +++ b/src/App/PropertyContainer.cpp @@ -92,6 +92,12 @@ void PropertyContainer::getPropertyList(std::vector &List) const getPropertyData().getPropertyList(this,List); } +void PropertyContainer::visitProperties(std::function visitor) const +{ + dynamicProps.visitProperties(visitor); + getPropertyData().visitProperties(this, visitor); +} + void PropertyContainer::getPropertyNamedList(std::vector > &List) const { dynamicProps.getPropertyNamedList(List); @@ -619,7 +625,15 @@ void PropertyData::getPropertyNamedList(OffsetBase offsetBase, } } - +void PropertyData::visitProperties(OffsetBase offsetBase, + std::function visitor) const +{ + merge(); + char* offset = offsetBase.getOffset(); + for (const auto& spec : propertyData.get<0>()) { + visitor(reinterpret_cast(spec.Offset + offset)); + }; +} /** \defgroup PropFrame Property framework \ingroup APP diff --git a/src/App/PropertyContainer.h b/src/App/PropertyContainer.h index b8b5ac91ae1d..bbec1ab618f2 100644 --- a/src/App/PropertyContainer.h +++ b/src/App/PropertyContainer.h @@ -134,6 +134,8 @@ struct AppExport PropertyData void getPropertyMap(OffsetBase offsetBase,std::map &Map) const; void getPropertyList(OffsetBase offsetBase,std::vector &List) const; void getPropertyNamedList(OffsetBase offsetBase, std::vector > &List) const; + /// See PropertyContainer::visitProperties for semantics + void visitProperties(OffsetBase offsetBase, std::function visitor) const; void merge(PropertyData *other=nullptr) const; void split(PropertyData *other); @@ -172,6 +174,11 @@ class AppExport PropertyContainer: public Base::Persistence virtual void getPropertyMap(std::map &Map) const; /// get all properties of the class (including properties of the parent) virtual void getPropertyList(std::vector &List) const; + /// Call the given visitor for each property. The visiting order is undefined. + /// This method is necessary because PropertyContainer has no begin and end methods + /// and it is not practical to implement these. + /// What gets visited is undefined if the collection of Properties is changed during this call. + virtual void visitProperties(std::function visitor) const; /// get all properties with their names, may contain duplicates and aliases virtual void getPropertyNamedList(std::vector > &List) const; /// set the Status bit of all properties at once diff --git a/src/App/PropertyStandard.cpp b/src/App/PropertyStandard.cpp index 696afa0ec496..1d91a97edaea 100644 --- a/src/App/PropertyStandard.cpp +++ b/src/App/PropertyStandard.cpp @@ -1385,101 +1385,13 @@ void PropertyString::setValue(const char* newLabel) return; } - std::string _newLabel; - std::vector>> propChanges; - std::string label; + std::string label = newLabel; auto obj = dynamic_cast(getContainer()); bool commit = false; - if (obj && obj->isAttachedToDocument() && this == &obj->Label - && (!obj->getDocument()->testStatus(App::Document::Restoring) - || obj->getDocument()->testStatus(App::Document::Importing)) - && !obj->getDocument()->isPerformingTransaction()) { - // allow object to control label change - - static ParameterGrp::handle _hPGrp; - if (!_hPGrp) { - _hPGrp = GetApplication().GetUserParameter().GetGroup("BaseApp"); - _hPGrp = _hPGrp->GetGroup("Preferences")->GetGroup("Document"); - } - App::Document* doc = obj->getDocument(); - if (doc && !_hPGrp->GetBool("DuplicateLabels") && !obj->allowDuplicateLabel()) { - std::vector objectLabels; - std::vector::const_iterator it; - std::vector objs = doc->getObjects(); - bool match = false; - for (it = objs.begin(); it != objs.end(); ++it) { - if (*it == obj) { - continue; // don't compare object with itself - } - std::string objLabel = (*it)->Label.getValue(); - if (!match && objLabel == newLabel) { - match = true; - } - objectLabels.push_back(objLabel); - } - - // make sure that there is a name conflict otherwise we don't have to do anything - if (match && *newLabel) { - label = newLabel; - // remove number from end to avoid lengthy names - size_t lastpos = label.length() - 1; - while (label[lastpos] >= 48 && label[lastpos] <= 57) { - // if 'lastpos' becomes 0 then all characters are digits. In this case we use - // the complete label again - if (lastpos == 0) { - lastpos = label.length() - 1; - break; - } - lastpos--; - } - - bool changed = false; - label = label.substr(0, lastpos + 1); - if (label != obj->getNameInDocument() - && boost::starts_with(obj->getNameInDocument(), label)) { - // In case the label has the same base name as object's - // internal name, use it as the label instead. - const char* objName = obj->getNameInDocument(); - const char* c = &objName[lastpos + 1]; - for (; *c; ++c) { - if (*c < 48 || *c > 57) { - break; - } - } - if (*c == 0 - && std::find(objectLabels.begin(), - objectLabels.end(), - obj->getNameInDocument()) - == objectLabels.end()) { - label = obj->getNameInDocument(); - changed = true; - } - } - if (!changed) { - label = Base::Tools::getUniqueName(label, objectLabels, 3); - } - } - } - - if (label.empty()) { - label = newLabel; - } - obj->onBeforeChangeLabel(label); - newLabel = label.c_str(); - - if (!obj->getDocument()->testStatus(App::Document::Restoring)) { - // Only update label reference if we are not restoring. When - // importing (which also counts as restoring), it is possible the - // new object changes its label. However, we cannot update label - // references here, because object restoring is not based on - // dependency order. It can only be done in afterRestore(). - // - // See PropertyLinkBase::restoreLabelReference() for more details. - propChanges = PropertyLinkBase::updateLabelReferences(obj, newLabel); - } - + if (obj && this == &obj->Label) { + propChanges = obj->onProposedLabelChange(label); if (!propChanges.empty() && !GetApplication().getActiveTransaction()) { commit = true; std::ostringstream str; @@ -1489,7 +1401,7 @@ void PropertyString::setValue(const char* newLabel) } aboutToSetValue(); - _cValue = newLabel; + _cValue = label; hasSetValue(); for (auto& change : propChanges) { diff --git a/src/App/private/DocumentP.h b/src/App/private/DocumentP.h index 64d3b6697d3f..a6006be3b8e7 100644 --- a/src/App/private/DocumentP.h +++ b/src/App/private/DocumentP.h @@ -30,6 +30,7 @@ #include #include #include +#include #include #include #include @@ -65,6 +66,9 @@ struct DocumentP std::vector objectArray; std::unordered_set touchedObjs; std::unordered_map objectMap; + Base::UniqueNameManager objectNameManager; + Base::UniqueNameManager objectLabelManager; + std::unordered_map objectLabelCounts; std::unordered_map objectIdMap; std::unordered_map partialLoadObjects; std::vector pendingRemove; @@ -129,6 +133,8 @@ struct DocumentP void clearDocument() { + objectLabelCounts.clear(); + objectLabelManager.clear(); objectArray.clear(); for (auto& v : objectMap) { v.second->setStatus(ObjectStatus::Destroy, true); @@ -136,6 +142,7 @@ struct DocumentP v.second = nullptr; } objectMap.clear(); + objectNameManager.clear(); objectIdMap.clear(); } diff --git a/src/Base/Reader.cpp b/src/Base/Reader.cpp index 63b85bfa81a5..2cbbf032d752 100644 --- a/src/Base/Reader.cpp +++ b/src/Base/Reader.cpp @@ -463,14 +463,13 @@ const char* Base::XMLReader::addFile(const char* Name, Base::Persistence* Object temp.Object = Object; FileList.push_back(temp); - FileNames.push_back(temp.FileName); return Name; } -const std::vector& Base::XMLReader::getFilenames() const +bool Base::XMLReader::hasFilenames() const { - return FileNames; + return FileList.size() > 0; } bool Base::XMLReader::hasReadFailed(const std::string& filename) const diff --git a/src/Base/Reader.h b/src/Base/Reader.h index a11b1966a25b..005114027da9 100644 --- a/src/Base/Reader.h +++ b/src/Base/Reader.h @@ -251,8 +251,8 @@ class BaseExport XMLReader: public XERCES_CPP_NAMESPACE_QUALIFIER DefaultHandler const char* addFile(const char* Name, Base::Persistence* Object); /// process the requested file writes void readFiles(zipios::ZipInputStream& zipstream) const; - /// get all registered file names - const std::vector& getFilenames() const; + /// Returns whether reader has any registered filenames + bool hasFilenames() const; /// returns true if reading the file \a filename has failed bool hasReadFailed(const std::string& filename) const; bool isRegistered(Base::Persistence* Object) const; @@ -364,7 +364,6 @@ class BaseExport XMLReader: public XERCES_CPP_NAMESPACE_QUALIFIER DefaultHandler std::vector FileList; private: - std::vector FileNames; mutable std::vector FailedFiles; std::bitset<32> StatusBits; diff --git a/src/Base/Tools.cpp b/src/Base/Tools.cpp index 71f6021bee1e..374a15b237c2 100644 --- a/src/Base/Tools.cpp +++ b/src/Base/Tools.cpp @@ -33,130 +33,214 @@ #include "Interpreter.h" #include "Tools.h" -namespace Base +void Base::UniqueNameManager::PiecewiseSparseIntegerSet::Add(uint value) { -struct string_comp -{ - // s1 and s2 must be numbers represented as string - bool operator()(const std::string& s1, const std::string& s2) - { - if (s1.size() < s2.size()) { - return true; - } - if (s1.size() > s2.size()) { - return false; - } - - return s1 < s2; + etype newSpan(value, 1); + iterator above = Spans.lower_bound(newSpan); + if (above != Spans.end() && above->first <= value) { + // The found span includes value so there is nothing to do as it is already in the set. + return; } - static std::string increment(const std::string& s) - { - std::string n = s; - int addcarry = 1; - for (std::string::reverse_iterator it = n.rbegin(); it != n.rend(); ++it) { - if (addcarry == 0) { - break; - } - int d = *it - 48; - d = d + addcarry; - *it = ((d % 10) + 48); - addcarry = d / 10; - } - if (addcarry > 0) { - std::string b; - b.resize(1); - b[0] = addcarry + 48; - n = b + n; - } - return n; + // Set below to the next span down, if any + iterator below; + if (above == Spans.begin()) { + below = Spans.end(); + } + else { + below = above; + --below; } -}; -class unique_name + if (above != Spans.end() && below != Spans.end() + && above->first - below->first + 1 == below->second) { + // below and above have a gap of exactly one between them, and this must be value + // so we coalesce the two spans (and the gap) into one. + newSpan = etype(below->first, below->second + above->second + 1); + Spans.erase(above); + above = Spans.erase(below); + } + if (below != Spans.end() && value - below->first == below->second) { + // value is adjacent to the end of below, so just expand below by one + newSpan = etype(below->first, below->second + 1); + above = Spans.erase(below); + } + else if (above != Spans.end() && above->first - value == 1) { + // value is adjacent to the start of above, so juse expand above down by one + newSpan = etype(above->first - 1, above->second + 1); + above = Spans.erase(above); + } + // else value is not adjacent to any existing span, so just make anew span for it + Spans.insert(above, newSpan); +} +void Base::UniqueNameManager::PiecewiseSparseIntegerSet::Remove(uint value) { -public: - unique_name(std::string name, const std::vector& names, int padding) - : base_name {std::move(name)} - , padding {padding} - { - removeDigitsFromEnd(); - findHighestSuffix(names); - } - - std::string get() const - { - return appendSuffix(); - } - -private: - void removeDigitsFromEnd() - { - std::string::size_type pos = base_name.find_last_not_of("0123456789"); - if (pos != std::string::npos && (pos + 1) < base_name.size()) { - num_suffix = base_name.substr(pos + 1); - base_name.erase(pos + 1); - } + etype newSpan(value, 1); + iterator at = Spans.lower_bound(newSpan); + if (at == Spans.end() || at->first > value) { + // The found span does not include value so there is nothing to do, as it is already not in + // the set. + return; } - - void findHighestSuffix(const std::vector& names) - { - for (const auto& name : names) { - if (name.substr(0, base_name.length()) == base_name) { // same prefix - std::string suffix(name.substr(base_name.length())); - if (!suffix.empty()) { - std::string::size_type pos = suffix.find_first_not_of("0123456789"); - if (pos == std::string::npos) { - num_suffix = std::max(num_suffix, suffix, Base::string_comp()); - } - } - } - } + if (at->second == 1) { + // value is the only in this span, just remove the span + Spans.erase(at); } - - std::string appendSuffix() const - { - std::stringstream str; - str << base_name; - if (padding > 0) { - str.fill('0'); - str.width(padding); - } - str << Base::string_comp::increment(num_suffix); - return str.str(); + else if (at->first == value) { + // value is the first in this span, trim the lower end + etype replacement(at->first + 1, at->second - 1); + Spans.insert(Spans.erase(at), replacement); } + else if (value - at->first == at->second - 1) { + // value is the last in this span, trim the upper end + etype replacement(at->first, at->second - 1); + Spans.insert(Spans.erase(at), replacement); + } + else { + // value is in the moddle of the span, so we must split it. + etype firstReplacement(at->first, value - at->first); + etype secondReplacement(value + 1, at->second - ((value + 1) - at->first)); + // Because erase returns the iterator after the erased element, and insert returns the + // iterator for the inserted item, we want to insert secondReplacement first. + Spans.insert(Spans.insert(Spans.erase(at), secondReplacement), firstReplacement); + } +} +bool Base::UniqueNameManager::PiecewiseSparseIntegerSet::Contains(uint value) const +{ + iterator at = Spans.lower_bound(etype(value, 1)); + return at != Spans.end() && at->first <= value; +} -private: - std::string num_suffix; - std::string base_name; - int padding; -}; - -} // namespace Base - -std::string -Base::Tools::getUniqueName(const std::string& name, const std::vector& names, int pad) +std::tuple Base::UniqueNameManager::decomposeName(const std::string& name, + std::string& baseNameOut, + std::string& nameSuffixOut) const { - if (names.empty()) { - return name; + auto suffixStart = std::make_reverse_iterator(GetNameSuffixStartPosition(name)); + nameSuffixOut = name.substr(name.crend() - suffixStart); + auto digitsStart = std::find_if_not(suffixStart, name.crend(), [](char c) { + return std::isdigit(c); + }); + baseNameOut = name.substr(0, name.crend() - digitsStart); + uint digitCount = digitsStart - suffixStart; + if (digitCount == 0) { + // No digits in name + return std::tuple {0, 0}; } - - Base::unique_name unique(name, names, pad); - return unique.get(); + else { + return std::tuple { + digitCount, + std::stoul(name.substr(name.crend() - digitsStart, digitCount))}; + } +} +void Base::UniqueNameManager::addExactName(const std::string& name) +{ + std::string baseName; + std::string nameSuffix; + uint digitCount; + uint digitsValue; + std::tie(digitCount, digitsValue) = decomposeName(name, baseName, nameSuffix); + baseName += nameSuffix; + auto baseNameEntry = UniqueSeeds.find(baseName); + if (baseNameEntry == UniqueSeeds.end()) { + // First use of baseName + baseNameEntry = + UniqueSeeds.emplace(baseName, std::vector()).first; + } + if (digitCount >= baseNameEntry->second.size()) { + // First use of this digitCount + baseNameEntry->second.resize(digitCount + 1); + } + PiecewiseSparseIntegerSet& baseNameAndDigitCountEntry = baseNameEntry->second[digitCount]; + // Name should not already be there + assert(!baseNameAndDigitCountEntry.Contains(digitsValue)); + baseNameAndDigitCountEntry.Add(digitsValue); +} +std::string Base::UniqueNameManager::makeUniqueName(const std::string& modelName, + int minDigits) const +{ + std::string namePrefix; + std::string nameSuffix; + decomposeName(modelName, namePrefix, nameSuffix); + std::string baseName = namePrefix + nameSuffix; + auto baseNameEntry = UniqueSeeds.find(baseName); + if (baseNameEntry == UniqueSeeds.end()) { + // First use of baseName, just return it with no unique digits + return baseName; + } + // We don't care about the digit count of the suggested name, we always use at least the most + // digits ever used before. + int digitCount = baseNameEntry->second.size() - 1; + uint digitsValue; + if (digitCount < minDigits) { + // Caller is asking for more digits than we have in any registered name. + // We start the longer digit string at 000...0001 even though we might have shorter strings + // with larger numeric values. + digitCount = minDigits; + digitsValue = 1; + } + else { + digitsValue = baseNameEntry->second[digitCount].Next(); + } + std::string digits = std::to_string(digitsValue); + if (digitCount > digits.size()) { + namePrefix += std::string(digitCount - digits.size(), '0'); + } + return namePrefix + digits + nameSuffix; } -std::string Base::Tools::addNumber(const std::string& name, unsigned int num, int d) +void Base::UniqueNameManager::removeExactName(const std::string& name) { - std::stringstream str; - str << name; - if (d > 0) { - str.fill('0'); - str.width(d); + std::string baseName; + std::string nameSuffix; + uint digitCount; + uint digitsValue; + std::tie(digitCount, digitsValue) = decomposeName(name, baseName, nameSuffix); + baseName += nameSuffix; + auto baseNameEntry = UniqueSeeds.find(baseName); + if (baseNameEntry == UniqueSeeds.end()) { + // name must not be registered, so nothing to do. + return; + } + auto& digitValueSets = baseNameEntry->second; + if (digitCount >= digitValueSets.size()) { + // First use of this digitCount, name must not be registered, so nothing to do. + return; + } + digitValueSets[digitCount].Remove(digitsValue); + // an element of digitValueSets may now be newly empty and so may other elements below it + // Prune off all such trailing empty entries. + auto lastNonemptyEntry = + std::find_if(digitValueSets.crbegin(), digitValueSets.crend(), [](auto& it) { + return it.Any(); + }); + if (lastNonemptyEntry == digitValueSets.crend()) { + // All entries are empty, so the entire baseName can be forgotten. + UniqueSeeds.erase(baseName); + } + else { + digitValueSets.resize(digitValueSets.crend() - lastNonemptyEntry); } - str << num; - return str.str(); } +bool Base::UniqueNameManager::containsName(const std::string& name) const +{ + std::string baseName; + std::string nameSuffix; + uint digitCount; + uint digitsValue; + std::tie(digitCount, digitsValue) = decomposeName(name, baseName, nameSuffix); + baseName += nameSuffix; + auto baseNameEntry = UniqueSeeds.find(baseName); + if (baseNameEntry == UniqueSeeds.end()) { + // base name is not registered + return false; + } + if (digitCount >= baseNameEntry->second.size()) { + // First use of this digitCount, name must not be registered, so not in collection + return false; + } + return baseNameEntry->second[digitCount].Contains(digitsValue); +} std::string Base::Tools::getIdentifier(const std::string& name) { if (name.empty()) { diff --git a/src/Base/Tools.h b/src/Base/Tools.h index baf61e872e91..ca76945e8a78 100644 --- a/src/Base/Tools.h +++ b/src/Base/Tools.h @@ -33,6 +33,7 @@ #include #include #include +#include #include #include @@ -264,11 +265,100 @@ class ConnectionBlocker // ---------------------------------------------------------------------------- + +class BaseExport UniqueNameManager +{ +protected: + // This method returns the position of the start of the suffix (or name.cend() if no + // suffix). It must return the same suffix lentgh (name.size() - returnValue) for both + // unique names (one containing digits) and the corresponding base name (with no digits). + virtual std::string::const_iterator GetNameSuffixStartPosition(const std::string& name) const + { + return name.cend(); + } + +private: + class PiecewiseSparseIntegerSet + { + public: + PiecewiseSparseIntegerSet() + {} + + private: + // Each pair being represents the span of integers from lowest to + // (lowest+count-1) inclusive + using etype = std::pair; + // This span comparer class is analogous to std::less and treats overlapping spans as being + // neither greater nor less than each other + class comparer + { + public: + bool operator()(const etype& lhs, const etype& rhs) const + { + // The equality case here is when lhs is below and directly adjacent to rhs. + return rhs.first - lhs.first >= lhs.second; + } + }; + // Spans is the set of spans. Adjacent spans are coalesced so there are always gaps between + // the entries. + std::set Spans; + using iterator = typename std::set::iterator; + using const_iterator = typename std::set::const_iterator; + + public: + void Add(uint value); + void Remove(uint value); + bool Contains(uint value) const; + bool Any() const + { + return Spans.size() != 0; + } + void Clear() + { + Spans.clear(); + } + uint Next() const + { + if (Spans.size() == 0) { + return 0; + } + iterator last = Spans.end(); + --last; + return last->first + last->second; + } + }; + // Keyed as UniqueSeeds[baseName][digitCount][digitValue] iff that seed is taken. + // We need the double-indexing so that Name01 and Name001 can both be indexed, although we only + // ever allocate off the longest for each name i.e. UniqueSeeds[baseName].size()-1 digits. + std::map> UniqueSeeds; + +public: + std::tuple decomposeName(const std::string& name, + std::string& baseNameOut, + std::string& nameSuffixOut) const; + + UniqueNameManager() + {} + + // Register a name in the collection. It is an error (detected only by assertions) to register a + // name more than once. The effect if undetected is that the second registration will have no + // effect + void addExactName(const std::string& name); + std::string makeUniqueName(const std::string& modelName, int minDigits = 0) const; + + // Remove a registered name so it can be generated again. + // Nothing happens if you try to remove a non-registered name. + void removeExactName(const std::string& name); + + bool containsName(const std::string& name) const; + + void clear() + { + UniqueSeeds.clear(); + } +}; struct BaseExport Tools { - static std::string - getUniqueName(const std::string&, const std::vector&, int d = 0); - static std::string addNumber(const std::string&, unsigned int, int d = 0); static std::string getIdentifier(const std::string&); static std::wstring widen(const std::string& str); static std::string narrow(const std::wstring& str); diff --git a/src/Base/Writer.cpp b/src/Base/Writer.cpp index d80af5a74326..17aa16d5072f 100644 --- a/src/Base/Writer.cpp +++ b/src/Base/Writer.cpp @@ -247,56 +247,19 @@ std::string Writer::addFile(const char* Name, const Base::Persistence* Object) assert(!isForceXML()); FileEntry temp; - temp.FileName = getUniqueFileName(Name); + temp.FileName = Name ? Name : ""; + if (FileNameManager.containsName(temp.FileName)) { + temp.FileName = FileNameManager.makeUniqueName(temp.FileName); + } temp.Object = Object; FileList.push_back(temp); - - FileNames.push_back(temp.FileName); + FileNameManager.addExactName(temp.FileName); // return the unique file name return temp.FileName; } -std::string Writer::getUniqueFileName(const char* Name) -{ - // name in use? - std::string CleanName = (Name ? Name : ""); - std::vector::const_iterator pos; - pos = find(FileNames.begin(), FileNames.end(), CleanName); - - if (pos == FileNames.end()) { - // if not, name is OK - return CleanName; - } - - std::vector names; - names.reserve(FileNames.size()); - FileInfo fi(CleanName); - CleanName = fi.fileNamePure(); - std::string ext = fi.extension(); - for (pos = FileNames.begin(); pos != FileNames.end(); ++pos) { - fi.setFile(*pos); - std::string FileName = fi.fileNamePure(); - if (fi.extension() == ext) { - names.push_back(FileName); - } - } - - std::stringstream str; - str << Base::Tools::getUniqueName(CleanName, names); - if (!ext.empty()) { - str << "." << ext; - } - - return str.str(); -} - -const std::vector& Writer::getFilenames() const -{ - return FileNames; -} - void Writer::incInd() { if (indent < 1020) { diff --git a/src/Base/Writer.h b/src/Base/Writer.h index 5ca61be9df12..0b5981581447 100644 --- a/src/Base/Writer.h +++ b/src/Base/Writer.h @@ -39,6 +39,8 @@ #include #include +#include + #include "FileInfo.h" @@ -56,6 +58,24 @@ class Persistence; */ class BaseExport Writer { +private: + // This overrides UniqueNameManager's suffix-locating function so thet the last '.' and + // everything after it is considered suffix. + class UniqueFileNameManager: public UniqueNameManager + { + protected: + virtual std::string::const_iterator + GetNameSuffixStartPosition(const std::string& name) const override + { + // This is an awkward way to do this, because the FileInfo class only yields pieces of + // the path, not delimiter positions. We can't just use fi.extension().size() because + // both "xyz" and "xyz." would yield three; we need the length of the extension + // *including its delimiter* so we use the length difference between the fileName and + // fileNamePure. + FileInfo fi(name); + return name.end() - (fi.fileName().size() - fi.fileNamePure().size()); + } + }; public: Writer(); @@ -84,8 +104,6 @@ class BaseExport Writer std::string addFile(const char* Name, const Base::Persistence* Object); /// process the requested file storing virtual void writeFiles() = 0; - /// get all registered file names - const std::vector& getFilenames() const; /// Set mode void setMode(const std::string& mode); /// Set modes @@ -151,14 +169,13 @@ class BaseExport Writer std::string ObjectName; protected: - std::string getUniqueFileName(const char* Name); struct FileEntry { std::string FileName; const Base::Persistence* Object; }; std::vector FileList; - std::vector FileNames; + UniqueFileNameManager FileNameManager; std::vector Errors; std::set Modes; diff --git a/src/Gui/Document.cpp b/src/Gui/Document.cpp index d75604d5b098..e7df35552d0b 100644 --- a/src/Gui/Document.cpp +++ b/src/Gui/Document.cpp @@ -1938,7 +1938,7 @@ void Document::importObjects(const std::vector& obj, Base: localreader->readEndElement("Document"); // In the file GuiDocument.xml new data files might be added - if (!localreader->getFilenames().empty()) + if (localreader->hasFilenames()) reader.initLocalReader(localreader); } diff --git a/src/Gui/ViewProviderLink.cpp b/src/Gui/ViewProviderLink.cpp index a2cad7a67fe4..39447e29be82 100644 --- a/src/Gui/ViewProviderLink.cpp +++ b/src/Gui/ViewProviderLink.cpp @@ -3408,7 +3408,16 @@ void ViewProviderLink::getPropertyMap(std::map &Map) } } -void ViewProviderLink::getPropertyList(std::vector &List) const { +void ViewProviderLink::visitProperties(std::function visitor) const +{ + inherited::visitProperties(visitor); + if (childVp != nullptr) { + childVp->visitProperties(visitor); + } +} + +void ViewProviderLink::getPropertyList(std::vector& List) const +{ std::map Map; getPropertyMap(Map); List.reserve(List.size()+Map.size()); diff --git a/src/Gui/ViewProviderLink.h b/src/Gui/ViewProviderLink.h index fc296f256182..67c355991cd8 100644 --- a/src/Gui/ViewProviderLink.h +++ b/src/Gui/ViewProviderLink.h @@ -265,7 +265,9 @@ class GuiExport ViewProviderLink : public ViewProviderDocumentObject App::Property *getPropertyByName(const char* name) const override; void getPropertyMap(std::map &Map) const override; - void getPropertyList(std::vector &List) const override; + /// See PropertyContainer::visitProperties for semantics + void visitProperties(std::function visitor) const override; + void getPropertyList(std::vector& List) const override; ViewProviderDocumentObject *getLinkedViewProvider( std::string *subname=nullptr, bool recursive=false) const override; diff --git a/src/Mod/Spreadsheet/App/Sheet.cpp b/src/Mod/Spreadsheet/App/Sheet.cpp index 0171fd1eee4b..71d32b42e51b 100644 --- a/src/Mod/Spreadsheet/App/Sheet.cpp +++ b/src/Mod/Spreadsheet/App/Sheet.cpp @@ -872,6 +872,17 @@ void Sheet::getPropertyNamedList(std::vector>& } } +void Sheet::visitProperties(std::function visitor) const +{ + DocumentObject::visitProperties(visitor); + for (const auto& v : cells.aliasProp) { + auto prop = getProperty(v.first); + if (prop != nullptr) { + visitor(prop); + } + }; +} + void Sheet::touchCells(Range range) { do { @@ -1134,7 +1145,7 @@ DocumentObjectExecReturn* Sheet::execute() catch (std::exception&) { // TODO: evaluate using a more specific exception (not_a_dag) // Cycle detected; flag all with errors Base::Console().Error("Cyclic dependency detected in spreadsheet : %s\n", - *pcNameInDocument); + getNameInDocument()); std::ostringstream ss; ss << "Cyclic dependency"; int count = 0; diff --git a/src/Mod/Spreadsheet/App/Sheet.h b/src/Mod/Spreadsheet/App/Sheet.h index 9b6ae0f6dc37..217f4f7efea7 100644 --- a/src/Mod/Spreadsheet/App/Sheet.h +++ b/src/Mod/Spreadsheet/App/Sheet.h @@ -189,6 +189,9 @@ class SpreadsheetExport Sheet: public App::DocumentObject void getPropertyNamedList(std::vector>& List) const override; + /// See PropertyContainer::visitProperties for semantics + void visitProperties(std::function visitor) const override; + short mustExecute() const override; App::DocumentObjectExecReturn* execute() override; diff --git a/tests/src/Base/Tools.cpp b/tests/src/Base/Tools.cpp index f2385433d335..fa219b31eed6 100644 --- a/tests/src/Base/Tools.cpp +++ b/tests/src/Base/Tools.cpp @@ -5,42 +5,58 @@ // NOLINTBEGIN(cppcoreguidelines-*,readability-*) TEST(BaseToolsSuite, TestUniqueName1) { - EXPECT_EQ(Base::Tools::getUniqueName("Body", {}), "Body"); + EXPECT_EQ(Base::UniqueNameManager().makeUniqueName("Body"), "Body"); } TEST(BaseToolsSuite, TestUniqueName2) { - EXPECT_EQ(Base::Tools::getUniqueName("Body", {"Body"}, 1), "Body1"); + Base::UniqueNameManager manager; + manager.addExactName("Body"); + EXPECT_EQ(manager.makeUniqueName("Body", 1), "Body1"); } TEST(BaseToolsSuite, TestUniqueName3) { - EXPECT_EQ(Base::Tools::getUniqueName("Body", {"Body"}, 3), "Body001"); + Base::UniqueNameManager manager; + manager.addExactName("Body"); + EXPECT_EQ(manager.makeUniqueName("Body", 3), "Body001"); } TEST(BaseToolsSuite, TestUniqueName4) { - EXPECT_EQ(Base::Tools::getUniqueName("Body", {"Body001"}, 3), "Body002"); + Base::UniqueNameManager manager; + manager.addExactName("Body001"); + EXPECT_EQ(manager.makeUniqueName("Body", 3), "Body002"); } TEST(BaseToolsSuite, TestUniqueName5) { - EXPECT_EQ(Base::Tools::getUniqueName("Body", {"Body", "Body001"}, 3), "Body002"); + Base::UniqueNameManager manager; + manager.addExactName("Body"); + manager.addExactName("Body001"); + EXPECT_EQ(manager.makeUniqueName("Body", 3), "Body002"); } TEST(BaseToolsSuite, TestUniqueName6) { - EXPECT_EQ(Base::Tools::getUniqueName("Body001", {"Body", "Body001"}, 3), "Body002"); + Base::UniqueNameManager manager; + manager.addExactName("Body"); + manager.addExactName("Body001"); + EXPECT_EQ(manager.makeUniqueName("Body001", 3), "Body002"); } TEST(BaseToolsSuite, TestUniqueName7) { - EXPECT_EQ(Base::Tools::getUniqueName("Body001", {"Body"}, 3), "Body002"); + Base::UniqueNameManager manager; + manager.addExactName("Body"); + EXPECT_EQ(manager.makeUniqueName("Body001", 3), "Body001"); } TEST(BaseToolsSuite, TestUniqueName8) { - EXPECT_EQ(Base::Tools::getUniqueName("Body12345", {"Body"}, 3), "Body12346"); + Base::UniqueNameManager manager; + manager.addExactName("Body"); + EXPECT_EQ(manager.makeUniqueName("Body12345", 3), "Body001"); } TEST(Tools, TestIota) From f1e67c964186b9f4e0cefd24a1e44bef15fd4cae Mon Sep 17 00:00:00 2001 From: LarryWoestman <68401843+LarryWoestman@users.noreply.github.com> Date: Fri, 13 Dec 2024 08:55:47 -0800 Subject: [PATCH 048/221] CAM: fixed A, B, and C axis handling; added relevant tests (#18103) * CAM: fixed A, B, and C axis handling; added relevant tests * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- .../CAM/CAMTests/TestRefactoredTestPost.py | 2 +- .../CAMTests/TestRefactoredTestPostGCodes.py | 271 +++++++++++++++++- src/Mod/CAM/Path/Post/UtilsParse.py | 25 +- 3 files changed, 290 insertions(+), 8 deletions(-) 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/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, From 752b5dcf68116164a445950cf51fdf4df450010f Mon Sep 17 00:00:00 2001 From: Syres916 <46537884+Syres916@users.noreply.github.com> Date: Wed, 11 Dec 2024 02:11:54 +0000 Subject: [PATCH 049/221] [Gui] Tree, set FontSize on start of application --- src/Gui/Tree.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Gui/Tree.cpp b/src/Gui/Tree.cpp index 2558afa57ca5..4a65c594219b 100644 --- a/src/Gui/Tree.cpp +++ b/src/Gui/Tree.cpp @@ -748,6 +748,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() From aed305da644310bfa7da4dd27deff15dde725822 Mon Sep 17 00:00:00 2001 From: Kacper Donat Date: Fri, 6 Dec 2024 00:07:24 +0100 Subject: [PATCH 050/221] Base: Add Services and ServiceProvider This is intended to be used for intra-module communication. Modules can specify service that are then implemented by other modules. This way we can use features from for example part in Core without relying on the Part module explicitly. Base does provide Service definition - which is basically an abstract class with pure virtual methods. This service then can be implemented in other modules and accessed in runtime via ServiceProvider class that stores all implementations. ServiceProvider does store multiple implementations so in theory it is possible to use it to provide granular implementations. For example, part can provide CenterOfMass service that provides center of mass for part features, mesh can implement another one for meshes and then we can iterate over all implementations and find one that can provide center of --- src/Base/CMakeLists.txt | 4 +- src/Base/ServiceProvider.cpp | 31 +++++++ src/Base/ServiceProvider.h | 143 +++++++++++++++++++++++++++++ tests/src/Base/CMakeLists.txt | 1 + tests/src/Base/ServiceProvider.cpp | 110 ++++++++++++++++++++++ 5 files changed, 288 insertions(+), 1 deletion(-) create mode 100644 src/Base/ServiceProvider.cpp create mode 100644 src/Base/ServiceProvider.h create mode 100644 tests/src/Base/ServiceProvider.cpp 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/ServiceProvider.cpp b/src/Base/ServiceProvider.cpp new file mode 100644 index 000000000000..f1d583e69abc --- /dev/null +++ b/src/Base/ServiceProvider.cpp @@ -0,0 +1,31 @@ + +// 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 "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/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/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()); +} From fc56730648a1fa406aa74b5c740aa9edc9dbdcd2 Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Tue, 26 Nov 2024 09:27:40 +0100 Subject: [PATCH 051/221] Core: Datums: Fix axis placement and add migration script. --- src/App/Datums.cpp | 68 ++++++++++++++++++- src/App/Datums.h | 4 ++ src/Gui/ViewProviderLine.cpp | 8 +-- src/Mod/Part/App/PartFeature.cpp | 2 +- src/Mod/PartDesign/App/FeatureSketchBased.cpp | 7 +- src/Mod/Test/Document.py | 6 +- 6 files changed, 81 insertions(+), 14 deletions(-) diff --git a/src/App/Datums.cpp b/src/App/Datums.cpp index 75a6b06e2b79..c58c34b72fdd 100644 --- a/src/App/Datums.cpp +++ b/src/App/Datums.cpp @@ -207,9 +207,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 +277,68 @@ 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 featIt = std::find_if(features.begin(), features.end(), + [](App::DocumentObject* obj) { + return obj->isDerivedFrom(App::DatumElement::getClassTypeId()) && + strcmp(static_cast(obj)->Role.getValue(), PointRoles[0]) == 0; + }); + if (featIt == features.end()) { + // origin point not found let's add it + auto data = getData(PointRoles[0]); + auto* origin = createDatum(data); + features.push_back(origin); + OriginFeatures.setValues(features); + } +} + +void LocalCoordinateSystem::migrateXAxisPlacement() +{ + auto features = OriginFeatures.getValues(); + + bool migrated = false; + + 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)) { + feature->Placement.setValue(Base::Placement(Base::Vector3d(), data.rot)); + migrated = true; + } + } + } + } + + static bool warnedUser = false; + if (!warnedUser && migrated) { + Base::Console().Warning("This file was created with an older version of FreeCAD." + "It had some origin's X axis with incorrect placement, which is being fixed now.\n" + "But if you save the file here and open this file back in an " + "older version of FreeCAD, you will find the origin objects axis looking incorrect." + "And if your file is using the origin axis as references it will likely be broken.\n"); + warnedUser = true; + } +} + // ---------------------------------------------------------------------------- LocalCoordinateSystem::LCSExtension::LCSExtension(LocalCoordinateSystem* obj) diff --git a/src/App/Datums.h b/src/App/Datums.h index 8e3d567ea1d6..002790e78bc0 100644 --- a/src/App/Datums.h +++ b/src/App/Datums.h @@ -213,6 +213,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 +246,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/Gui/ViewProviderLine.cpp b/src/Gui/ViewProviderLine.cpp index edf31b38cca6..3cf3fdb85b25 100644 --- a/src/Gui/ViewProviderLine.cpp +++ b/src/Gui/ViewProviderLine.cpp @@ -83,12 +83,12 @@ void ViewProviderLine::attach(App::DocumentObject *obj) { 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 @@ -107,7 +107,7 @@ 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(); diff --git a/src/Mod/Part/App/PartFeature.cpp b/src/Mod/Part/App/PartFeature.cpp index 48997300d413..ee3ab6948dc1 100644 --- a/src/Mod/Part/App/PartFeature.cpp +++ b/src/Mod/Part/App/PartFeature.cpp @@ -1018,7 +1018,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); } 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/Test/Document.py b/src/Mod/Test/Document.py index 18ba7b19766b..e59ab99e781f 100644 --- a/src/Mod/Test/Document.py +++ b/src/Mod/Test/Document.py @@ -338,17 +338,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) From 48dbdacdbd64118b0b553feaa54c64c03893904f Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Fri, 20 Sep 2024 10:46:01 +0200 Subject: [PATCH 052/221] Part: add datum objects and commands to create them. --- src/App/Datums.cpp | 25 ++- src/App/Datums.h | 25 ++- src/Gui/CommandStructure.cpp | 4 +- src/Mod/Part/App/AppPart.cpp | 5 + src/Mod/Part/App/AttachExtension.h | 1 - src/Mod/Part/App/CMakeLists.txt | 2 + src/Mod/Part/App/Datums.cpp | 63 ++++++ src/Mod/Part/App/Datums.h | 84 ++++++++ src/Mod/Part/Gui/AppPartGui.cpp | 5 + src/Mod/Part/Gui/CMakeLists.txt | 2 + src/Mod/Part/Gui/Command.cpp | 196 ++++++++++++++++++ .../Part/Gui/ViewProviderAttachExtension.cpp | 4 + .../Part/Gui/ViewProviderAttachExtension.h | 1 - src/Mod/Part/Gui/ViewProviderDatum.cpp | 94 +++++++++ src/Mod/Part/Gui/ViewProviderDatum.h | 84 ++++++++ src/Mod/Part/Gui/WorkbenchManipulator.cpp | 16 ++ src/Mod/Part/Gui/WorkbenchManipulator.h | 1 + src/Mod/PartDesign/App/Body.cpp | 4 +- src/Mod/PartDesign/Gui/ViewProviderBody.cpp | 24 ++- src/Mod/PartDesign/Gui/ViewProviderDatum.cpp | 25 ++- src/Mod/PartDesign/Gui/ViewProviderDatum.h | 25 ++- 21 files changed, 626 insertions(+), 64 deletions(-) create mode 100644 src/Mod/Part/App/Datums.cpp create mode 100644 src/Mod/Part/App/Datums.h create mode 100644 src/Mod/Part/Gui/ViewProviderDatum.cpp create mode 100644 src/Mod/Part/Gui/ViewProviderDatum.h diff --git a/src/App/Datums.cpp b/src/App/Datums.cpp index c58c34b72fdd..3157ea4cd3c7 100644 --- a/src/App/Datums.cpp +++ b/src/App/Datums.cpp @@ -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 * + * . * * * ***************************************************************************/ diff --git a/src/App/Datums.h b/src/App/Datums.h index 002790e78bc0..286e7353f341 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 * + * . * * * ***************************************************************************/ 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/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/AttachExtension.h b/src/Mod/Part/App/AttachExtension.h index e2c3f480d130..a86abb594708 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 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/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 3dee082a43e3..eed34ee9debc 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" @@ -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 a coordinate system"); + sToolTipText = QT_TR_NOOP("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_Plane +//=========================================================================== +DEF_STD_CMD_A(CmdPartPlane) + +CmdPartPlane::CmdPartPlane() + : Command("Part_Plane") +{ + sGroup = QT_TR_NOOP("Part"); + sMenuText = QT_TR_NOOP("Create a datum plane"); + sToolTipText = QT_TR_NOOP("A plane object that can be attached to other objects."); + sWhatsThis = "Part_Plane"; + sStatusTip = sToolTipText; + sPixmap = "Std_Plane"; +} + +void CmdPartPlane::activated(int iMsg) +{ + Q_UNUSED(iMsg); + + openCommand(QT_TRANSLATE_NOOP("Command", "Add a datum plane")); + + std::string name = getUniqueObjectName("Plane"); + doCommand(Doc, "obj = App.activeDocument().addObject('Part::DatumPlane','%s')", name.c_str()); + doCommand(Doc, getAutoGroupCommandStr().toUtf8()); + doCommand(Doc, "obj.ViewObject.doubleClicked()"); +} + +bool CmdPartPlane::isActive() +{ + return hasActiveDocument(); +} + +//=========================================================================== +// Part_Line +//=========================================================================== +DEF_STD_CMD_A(CmdPartLine) + +CmdPartLine::CmdPartLine() + : Command("Part_Line") +{ + sGroup = QT_TR_NOOP("Part"); + sMenuText = QT_TR_NOOP("Create a datum line"); + sToolTipText = QT_TR_NOOP("A line object that can be attached to other objects."); + sWhatsThis = "Part_Line"; + sStatusTip = sToolTipText; + sPixmap = "Std_Axis"; +} + +void CmdPartLine::activated(int iMsg) +{ + Q_UNUSED(iMsg); + + openCommand(QT_TRANSLATE_NOOP("Command", "Add a datum line")); + + std::string name = getUniqueObjectName("Line"); + doCommand(Doc, "obj = App.activeDocument().addObject('Part::DatumLine','%s')", name.c_str()); + doCommand(Doc, getAutoGroupCommandStr().toUtf8()); + doCommand(Doc, "obj.ViewObject.doubleClicked()"); +} + +bool CmdPartLine::isActive() +{ + return hasActiveDocument(); +} + +//=========================================================================== +// Part_Point +//=========================================================================== +DEF_STD_CMD_A(CmdPartPoint) + +CmdPartPoint::CmdPartPoint() + : Command("Part_Point") +{ + sGroup = QT_TR_NOOP("Part"); + sMenuText = QT_TR_NOOP("Create a datum point"); + sToolTipText = QT_TR_NOOP("A point object that can be attached to other objects."); + sWhatsThis = "Part_Point"; + sStatusTip = sToolTipText; + sPixmap = "Std_Point"; +} + +void CmdPartPoint::activated(int iMsg) +{ + Q_UNUSED(iMsg); + + openCommand(QT_TRANSLATE_NOOP("Command", "Add a datum point")); + + std::string name = getUniqueObjectName("Point"); + doCommand(Doc, "obj = App.activeDocument().addObject('Part::DatumPoint','%s')", name.c_str()); + doCommand(Doc, getAutoGroupCommandStr().toUtf8()); + doCommand(Doc, "obj.ViewObject.doubleClicked()"); +} + +bool CmdPartPoint::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 a datum"); + sToolTipText = QT_TR_NOOP("Create a datum object (LCS, Plane, Line, Point) that can be attached to other objects."); + sWhatsThis = "Part_Datums"; + sStatusTip = sToolTipText; + + setCheckable(false); + + addCommand("Part_CoordinateSystem"); + addCommand("Part_Plane"); + addCommand("Part_Line"); + addCommand("Part_Point"); + } + + 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 CmdPartPlane()); + rcCmdMgr.addCommand(new CmdPartLine()); + rcCmdMgr.addCommand(new CmdPartPoint()); + rcCmdMgr.addCommand(new CmdPartDatums()); } 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/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/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 * + * . * * * ***************************************************************************/ From 32bf49cb8a8d2c7ce8df74b98b8a1f3aaa46d719 Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Thu, 3 Oct 2024 14:34:52 +0200 Subject: [PATCH 053/221] Part: AttachExtension: Refactor to remove code duplicates. --- src/Mod/Part/App/AttachExtension.cpp | 71 ++++++++-------------------- src/Mod/Part/App/AttachExtension.h | 3 ++ 2 files changed, 24 insertions(+), 50 deletions(-) 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 a86abb594708..3418de74aecb 100644 --- a/src/Mod/Part/App/AttachExtension.h +++ b/src/Mod/Part/App/AttachExtension.h @@ -145,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 From 0a9a97fc63ee5d452f7e3cb744a70c807f6e6651 Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Tue, 8 Oct 2024 09:48:42 +0200 Subject: [PATCH 054/221] Run precommit on TaskAttacher.cpp --- src/Mod/Part/Gui/TaskAttacher.cpp | 312 ++++++++++++++++-------------- 1 file changed, 171 insertions(+), 141 deletions(-) diff --git a/src/Mod/Part/Gui/TaskAttacher.cpp b/src/Mod/Part/Gui/TaskAttacher.cpp index d46ad0a4a84b..1b57ea6daf12 100644 --- a/src/Mod/Part/Gui/TaskAttacher.cpp +++ b/src/Mod/Part/Gui/TaskAttacher.cpp @@ -70,20 +70,23 @@ const QString makeRefString(const App::DocumentObject* obj, const std::string& s // App::Plane, Line or Datum feature return QString::fromLatin1(obj->getNameInDocument()); - if ((sub.size() > 4) && (sub.substr(0,4) == "Face")) { + 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")) { + } + 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")) { + } + 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 { + } + 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()); + + (sub.length() > 0 ? QString::fromLatin1(":") : QString()) + + QString::fromLatin1(sub.c_str()); } } @@ -98,15 +101,16 @@ 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) , ViewProvider(ViewProvider) @@ -125,37 +129,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 +209,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(); @@ -293,10 +298,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 +320,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,23 +356,25 @@ 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::onSelectionChanged(const Gui::SelectionChanges& msg) { - if (!ViewProvider) + if (!ViewProvider) { return; + } if (msg.Type == Gui::SelectionChanges::AddSelection) { - if (iActiveRef < 0) + if (iActiveRef < 0) { return; + } // Note: The validity checking has already been done in ReferenceSelection.cpp Part::AttachExtension* pcAttach = ViewProvider->getObject()->getExtensionByType(); @@ -374,18 +387,20 @@ void TaskAttacher::onSelectionChanged(const Gui::SelectionChanges& msg) std::string subname = msg.pSubName; // 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,7 +411,8 @@ 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); } @@ -406,17 +422,18 @@ void TaskAttacher::onSelectionChanged(const Gui::SelectionChanges& msg) pcAttach->AttachmentSupport.setValues(refs, refnames); updateListOfModes(); eMapMode mmode = getActiveMapMode();//will be mmDeactivated, if selected or if no modes are available - if(mmode == mmDeactivated){ + if (mmode == mmDeactivated) { //error = true; this->completed = false; - } else { + } + else { this->completed = true; } pcAttach->MapMode.setValue(mmode); selectMapMode(mmode); updatePreview(); } - catch(Base::Exception& e) { + catch (Base::Exception& e) { //error = true; ui->message->setText(QCoreApplication::translate("Exception", e.what())); ui->message->setStyleSheet(QString::fromLatin1("QLabel{color: red;}")); @@ -431,11 +448,13 @@ 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++; } } @@ -462,17 +481,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 +545,8 @@ void TaskAttacher::onButtonRef(const bool checked, unsigned idx) if (checked) { Gui::Selection().clearSelection(); iActiveRef = idx; - } else { + } + else { iActiveRef = -1; } updateRefButton(0); @@ -619,12 +639,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 +695,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 +714,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 +737,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 +766,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 +776,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 +820,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 +847,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 +902,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 +939,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 +949,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 +987,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 +1010,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 +1038,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 +1059,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 +1073,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 +1084,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 +1126,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"); From a6efacdf24a69b48795fc1e0ca112a8405beeb02 Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Wed, 9 Oct 2024 16:30:17 +0200 Subject: [PATCH 055/221] TaskAttacher: Make sure hierarchy is respected when adding references. --- src/Mod/Part/App/Attacher.cpp | 78 +++++++++++-------- src/Mod/Part/Gui/TaskAttacher.cpp | 120 ++++++++++++++++++++++++++++-- src/Mod/Part/Gui/TaskAttacher.h | 2 + 3 files changed, 163 insertions(+), 37 deletions(-) diff --git a/src/Mod/Part/App/Attacher.cpp b/src/Mod/Part/App/Attacher.cpp index b452fd90f46d..2dd69ed34f72 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 @@ -820,7 +821,7 @@ GProp_GProps AttachEngine::getInertialPropsOfShape(const std::vector &objs, - const std::vector &sub, + const std::vector &subs, std::vector &geofs, std::vector &shapes, std::vector &storage, @@ -831,50 +832,56 @@ void AttachEngine::readLinks(const std::vector &objs, 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())) { + std::string fullSub = subs[i]; + const char* element = Data::findElementName(fullSub.c_str()); + App::DocumentObject* obj = objs[i]->getSubObject(subs[i].c_str()); + + auto* geof = dynamic_cast(obj); + if (!geof) { FC_THROWM(AttachEngineException, "AttachEngine3D: attached to a non App::GeoFeature '" - << objs[i]->getNameInDocument() << "'"); + << obj->getNameInDocument() << "'"); } - auto* geof = dynamic_cast(objs[i]); geofs[i] = geof; - Part::TopoShape shape; + TopoDS_Shape myShape; + Base::Placement plc = App::GeoFeature::getGlobalPlacement(obj, objs[i], fullSub); 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); + plc.getRotation().multVec(Base::Vector3d(0.0, 0.0, 1.0), norm); Base::Vector3d org; - geof->Placement.getValue().multVec(Base::Vector3d(), org); + plc.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 = 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); + plc.getRotation().multVec(Base::Vector3d(0.0, 0.0, 1.0), dir); Base::Vector3d org; - geof->Placement.getValue().multVec(Base::Vector3d(), org); + plc.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 = BRepBuilderAPI_MakeEdge(line).Shape(); myShape.Infinite(true); - storage.emplace_back(myShape); - shapes[i] = &(storage[storage.size() - 1]); + } + else if (geof->isDerivedFrom(App::Point::getClassTypeId())) { + Base::Vector3d org; + plc.multVec(Base::Vector3d(), org); + + gp_Pnt pnt = gp_Pnt(org.x, org.y, org.z); + myShape = BRepBuilderAPI_MakeVertex(pnt).Shape(); } else { try { - shape = Part::Feature::getTopoShape(geof, sub[i].c_str(), true); + Part::TopoShape shape = Part::Feature::getTopoShape(geof, element, true); for (;;) { if (shape.isNull()) { FC_THROWM(AttachEngineException, "AttachEngine3D: subshape not found " - << objs[i]->getNameInDocument() << '.' << sub[i]); + << objs[i]->getNameInDocument() << '.' << subs[i]); } if (shape.shapeType() != TopAbs_COMPOUND || shape.countSubShapes(TopAbs_SHAPE) != 1) { @@ -883,32 +890,34 @@ void AttachEngine::readLinks(const std::vector &objs, // auto extract the single sub-shape from a compound shape = shape.getSubTopoShape(TopAbs_SHAPE, 1); } - storage.emplace_back(shape.getShape()); + shape.setPlacement(plc); + myShape = shape.getShape(); } catch (Standard_Failure& e) { FC_THROWM(AttachEngineException, "AttachEngine3D: subshape not found " << objs[i]->getNameInDocument() - << '.' << sub[i] << std::endl + << '.' << subs[i] << std::endl << e.GetMessageString()); } catch (Base::CADKernelError& e) { FC_THROWM(AttachEngineException, "AttachEngine3D: subshape not found " << objs[i]->getNameInDocument() - << '.' << sub[i] << std::endl + << '.' << subs[i] << std::endl << e.what()); } - if (storage.back().IsNull()) { + if (myShape.IsNull()) { FC_THROWM(AttachEngineException, "AttachEngine3D: null subshape " << objs[i]->getNameInDocument() << '.' - << sub[i]); + << subs[i]); } - shapes[i] = &(storage.back()); } + 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); } } @@ -977,6 +986,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; @@ -1176,9 +1186,13 @@ AttachEngine3D::_calculateAttachedPlacement(const std::vectorPlacement.getValue(); - refOrg = gp_Pnt(Place.getPosition().x, Place.getPosition().y, Place.getPosition().z); + Base::Placement Place = App::GeoFeature::getGlobalPlacement(parts[0], objs[0], subs[0]); + Base::Console().Warning("parts[0] = %s\n", parts[0]->getNameInDocument()); + Base::Console().Warning("objs[0] = %s\n", objs[0]->getNameInDocument()); + Base::Console().Warning("subs[0] = %s\n", subs[0]); + Base::Console().Warning("Place = (%f, %f, %f)\n", Place.getPosition().x, Place.getPosition().y, Place.getPosition().z); + 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: @@ -2120,9 +2134,9 @@ AttachEngineLine::_calculateAttachedPlacement(const std::vectorPlacement.getValue(); - refOrg = gp_Pnt(Place.getPosition().x, Place.getPosition().y, Place.getPosition().z); + Base::Placement Place = App::GeoFeature::getGlobalPlacement(parts[0], 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: diff --git a/src/Mod/Part/Gui/TaskAttacher.cpp b/src/Mod/Part/Gui/TaskAttacher.cpp index 1b57ea6daf12..547ff84d2514 100644 --- a/src/Mod/Part/Gui/TaskAttacher.cpp +++ b/src/Mod/Part/Gui/TaskAttacher.cpp @@ -43,6 +43,7 @@ #include #include #include +#include #include #include #include @@ -112,7 +113,7 @@ void TaskAttacher::makeRefStrings(std::vector& refstrings, std::vector< 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) @@ -365,6 +366,112 @@ QLineEdit* TaskAttacher::getLine(unsigned idx) } } +void TaskAttacher::processSelection(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 if 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; + } + + 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; + } + + // In case the attaching object is in a link to a part. + // For instance : + // - Part1 + // - - LinkToPart2 + // - - - Cube + // - - - Sketch + obj = obj->getLinkedObject(); + + if (obj == group) { + ++i; + obj = doc->getObject(names[i].c_str()); + if (!obj) { + return; + } + + 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; + } + } + + // 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::onSelectionChanged(const Gui::SelectionChanges& msg) { if (!ViewProvider) { @@ -377,14 +484,17 @@ void TaskAttacher::onSelectionChanged(const Gui::SelectionChanges& msg) } // Note: The validity checking has already been done in ReferenceSelection.cpp - Part::AttachExtension* pcAttach = ViewProvider->getObject()->getExtensionByType(); + App::DocumentObject* obj = ViewProvider->getObject(); + Part::AttachExtension* pcAttach = obj->getExtensionByType(); 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; + App::DocumentObject* selObj = obj->getDocument()->getObject(msg.pObjectName); std::string subname = msg.pSubName; + processSelection(selObj, subname); + if (!selObj) { + return; + } // Remove subname for planes and datum features if (selObj->isDerivedFrom() || selObj->isDerivedFrom()) { diff --git a/src/Mod/Part/Gui/TaskAttacher.h b/src/Mod/Part/Gui/TaskAttacher.h index 8cb5192c00a2..c8cb3fce9f1a 100644 --- a/src/Mod/Part/Gui/TaskAttacher.h +++ b/src/Mod/Part/Gui/TaskAttacher.h @@ -113,6 +113,8 @@ private Q_SLOTS: void updateRefButton(int idx); void updateAttachmentOffsetUI(); + void processSelection(App::DocumentObject*& obj, std::string& sub); + /** * @brief updateListOfModes Fills the mode list with modes that apply to * current set of references. Maintains selection when possible. From deb6ebd276c2e9681a3ad24f7c001c3b1236f73d Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Tue, 15 Oct 2024 12:23:35 +0200 Subject: [PATCH 056/221] TaskAttacher: Fix the string maker such that it does not show TNP string. --- src/App/GeoFeature.cpp | 2 +- src/App/GeoFeature.h | 2 +- src/Mod/Part/Gui/TaskAttacher.cpp | 35 ++++++++++++------------------- 3 files changed, 15 insertions(+), 24 deletions(-) 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/Mod/Part/Gui/TaskAttacher.cpp b/src/Mod/Part/Gui/TaskAttacher.cpp index 547ff84d2514..eb0ae4141362 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 @@ -63,32 +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) { From e76b638298cfcad8aa77e6dbac053c15bc019f6c Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Thu, 17 Oct 2024 14:17:53 +0200 Subject: [PATCH 057/221] Task attacher: Handle initial selection when no refs. --- src/Mod/Part/Gui/TaskAttacher.cpp | 102 ++++++++++++++++++++++-------- src/Mod/Part/Gui/TaskAttacher.h | 3 + 2 files changed, 77 insertions(+), 28 deletions(-) diff --git a/src/Mod/Part/Gui/TaskAttacher.cpp b/src/Mod/Part/Gui/TaskAttacher.cpp index eb0ae4141362..3dac3f92d9f6 100644 --- a/src/Mod/Part/Gui/TaskAttacher.cpp +++ b/src/Mod/Part/Gui/TaskAttacher.cpp @@ -231,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() @@ -463,6 +465,32 @@ void TaskAttacher::processSelection(App::DocumentObject*& rootObj, std::string& 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 objNames; + std::vector subNames; + + auto sel = Gui::Selection().getSelectionEx("", + App::DocumentObject::getClassTypeId(), Gui::ResolveMode::NoResolve); + for (auto& selObj : sel) { + std::vector subs = selObj.getSubNames(); + const char* objName = selObj.getFeatName(); + for (auto& sub : subs) { + objNames.push_back(objName); + subNames.push_back(sub); + } + } + addToReference(objNames, subNames); +} + void TaskAttacher::onSelectionChanged(const Gui::SelectionChanges& msg) { if (!ViewProvider) { @@ -470,18 +498,26 @@ void TaskAttacher::onSelectionChanged(const Gui::SelectionChanges& msg) } if (msg.Type == Gui::SelectionChanges::AddSelection) { - if (iActiveRef < 0) { - return; - } + addToReference(msg.pObjectName, msg.pSubName); + } +} - // Note: The validity checking has already been done in ReferenceSelection.cpp - App::DocumentObject* obj = ViewProvider->getObject(); - Part::AttachExtension* pcAttach = obj->getExtensionByType(); +void TaskAttacher::addToReference(std::vector objNames, std::vector subNames) +{ + if (iActiveRef < 0 || objNames.size() != subNames.size()) { + return; + } + + // Note: The validity checking has already been done in ReferenceSelection.cpp + App::DocumentObject* obj = ViewProvider->getObject(); + Part::AttachExtension* pcAttach = obj->getExtensionByType(); + + for (size_t i = 0; i < objNames.size(); ++i) { std::vector refs = pcAttach->AttachmentSupport.getValues(); std::vector refnames = pcAttach->AttachmentSupport.getSubValues(); - App::DocumentObject* selObj = obj->getDocument()->getObject(msg.pObjectName); - std::string subname = msg.pSubName; + App::DocumentObject* selObj = obj->getDocument()->getObject(objNames[i].c_str()); + std::string subname = subNames[i]; processSelection(selObj, subname); if (!selObj) { return; @@ -518,26 +554,29 @@ void TaskAttacher::onSelectionChanged(const Gui::SelectionChanges& msg) 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; + pcAttach->AttachmentSupport.setValues(refs, refnames); + + if (i == objNames.size() - 1) { + // We check for the moed only for the last ref added. This is to avoid unnecessary warnings + // when we handle initial selection. + 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(); } - else { - this->completed = true; + catch (Base::Exception& e) { + ui->message->setText(QCoreApplication::translate("Exception", e.what())); + ui->message->setStyleSheet(QString::fromLatin1("QLabel{color: red;}")); } - 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;}")); } QLineEdit* line = getLine(iActiveRef); @@ -559,9 +598,16 @@ void TaskAttacher::onSelectionChanged(const Gui::SelectionChanges& msg) iActiveRef++; } } - - updateReferencesUI(); } + + updateReferencesUI(); +} + +void TaskAttacher::addToReference(const char* objName, const char* subName) +{ + std::string objname = objName; + std::string subname = subName; + addToReference({ objname }, { subname }); } void TaskAttacher::onAttachmentOffsetChanged(double /*val*/, int idx) diff --git a/src/Mod/Part/Gui/TaskAttacher.h b/src/Mod/Part/Gui/TaskAttacher.h index c8cb3fce9f1a..2833bf3ab87b 100644 --- a/src/Mod/Part/Gui/TaskAttacher.h +++ b/src/Mod/Part/Gui/TaskAttacher.h @@ -114,6 +114,9 @@ private Q_SLOTS: void updateAttachmentOffsetUI(); void processSelection(App::DocumentObject*& obj, std::string& sub); + void handleInitialSelection(); + void addToReference(const char* objName, const char* subName); + void addToReference(std::vector objNames, std::vector subNames); /** * @brief updateListOfModes Fills the mode list with modes that apply to From 9504b7e569edc3a95e129153ad72bad06381a0b5 Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Thu, 10 Oct 2024 15:42:38 +0200 Subject: [PATCH 058/221] PartDesign: Enable the use of the core datums as references. --- src/Mod/PartDesign/Gui/ReferenceSelection.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) 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; } } From c5fbbb38306aa405bdaf3bf3d98b56838e475c1e Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Fri, 6 Dec 2024 18:29:50 +0100 Subject: [PATCH 059/221] SubShapeBinder: Add support for point. --- src/Mod/Part/App/PartFeature.cpp | 1 + src/Mod/PartDesign/App/ShapeBinder.cpp | 12 ++++++++++++ 2 files changed, 13 insertions(+) diff --git a/src/Mod/Part/App/PartFeature.cpp b/src/Mod/Part/App/PartFeature.cpp index ee3ab6948dc1..65ae266de81d 100644 --- a/src/Mod/Part/App/PartFeature.cpp +++ b/src/Mod/Part/App/PartFeature.cpp @@ -1076,6 +1076,7 @@ static TopoShape _getTopoShape(const App::DocumentObject* obj, shape = TopoShape(tag, hasher, _shape); } } + if (!shape.isNull()) { shape.transformShape(mat * linkMat, false, true); return shape; 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(); } From 4066100a79c3e6e82682f004d69133c794cb87aa Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Fri, 11 Oct 2024 12:41:50 +0200 Subject: [PATCH 060/221] Attacher.cpp: Remove special handling of App::Datums since it is already done in Part::Feature::getTopoShape --- src/Mod/Part/App/Attacher.cpp | 158 +++++++++++++--------------------- src/Mod/Part/App/Attacher.h | 2 +- 2 files changed, 60 insertions(+), 100 deletions(-) diff --git a/src/Mod/Part/App/Attacher.cpp b/src/Mod/Part/App/Attacher.cpp index 2dd69ed34f72..f3800133e6e7 100644 --- a/src/Mod/Part/App/Attacher.cpp +++ b/src/Mod/Part/App/Attacher.cpp @@ -301,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)); @@ -310,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) @@ -386,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; @@ -578,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]; @@ -815,102 +814,69 @@ GProp_GProps AttachEngine::getInertialPropsOfShape(const std::vector &objs, +void AttachEngine::readLinks(const std::vector& objs, const std::vector &subs, - std::vector &geofs, 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++) { - std::string fullSub = subs[i]; - const char* element = Data::findElementName(fullSub.c_str()); - App::DocumentObject* obj = objs[i]->getSubObject(subs[i].c_str()); - - auto* geof = dynamic_cast(obj); + auto* geof = dynamic_cast(objs[i]); if (!geof) { - FC_THROWM(AttachEngineException, - "AttachEngine3D: attached to a non App::GeoFeature '" - << obj->getNameInDocument() << "'"); + // Accept App::Links to GeoFeatures + geof = dynamic_cast(objs[i]->getLinkedObject()); + if (!geof) { + FC_THROWM(AttachEngineException, + "AttachEngine3D: attached to a non App::GeoFeature '" << objs[i]->getNameInDocument() << "'"); + } } - geofs[i] = geof; TopoDS_Shape myShape; - Base::Placement plc = App::GeoFeature::getGlobalPlacement(obj, objs[i], fullSub); - if (geof->isDerivedFrom(App::Plane::getClassTypeId())) { - // obtain Z axis and origin of placement - Base::Vector3d norm; - plc.getRotation().multVec(Base::Vector3d(0.0, 0.0, 1.0), norm); - Base::Vector3d org; - plc.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)); - myShape = BRepBuilderAPI_MakeFace(plane).Shape(); - myShape.Infinite(true); - } - else if (geof->isDerivedFrom(App::Line::getClassTypeId())) { - // obtain X axis and origin of placement - Base::Vector3d dir; - plc.getRotation().multVec(Base::Vector3d(0.0, 0.0, 1.0), dir); - Base::Vector3d org; - plc.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)); - myShape = BRepBuilderAPI_MakeEdge(line).Shape(); - myShape.Infinite(true); - } - else if (geof->isDerivedFrom(App::Point::getClassTypeId())) { - Base::Vector3d org; - plc.multVec(Base::Vector3d(), org); - gp_Pnt pnt = gp_Pnt(org.x, org.y, org.z); - myShape = BRepBuilderAPI_MakeVertex(pnt).Shape(); - } - else { - try { - Part::TopoShape shape = Part::Feature::getTopoShape(geof, element, 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); + 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; } - shape.setPlacement(plc); - 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]); + // auto extract the single sub-shape from a compound + shape = shape.getSubTopoShape(TopAbs_SHAPE, 1); } + + 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()); @@ -921,7 +887,6 @@ void AttachEngine::readLinks(const std::vector &objs, types[i] = eRefType(types[i] | rtFlagHasPlacement); } } - } void AttachEngine::throwWrongMode(eMapMode mmode) @@ -1175,22 +1140,18 @@ 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 - Base::Placement Place = App::GeoFeature::getGlobalPlacement(parts[0], objs[0], subs[0]); - Base::Console().Warning("parts[0] = %s\n", parts[0]->getNameInDocument()); - Base::Console().Warning("objs[0] = %s\n", objs[0]->getNameInDocument()); - Base::Console().Warning("subs[0] = %s\n", subs[0]); - Base::Console().Warning("Place = (%f, %f, %f)\n", 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 @@ -2122,19 +2083,19 @@ 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 - Base::Placement Place = App::GeoFeature::getGlobalPlacement(parts[0], objs[0], subs[0]); + 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 @@ -2489,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); From 5d020082275c2923ba24be75d50387bb0833fd02 Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Fri, 18 Oct 2024 11:42:00 +0200 Subject: [PATCH 061/221] Remove PartDesign Datums commands from the UI. --- src/Mod/PartDesign/Gui/Workbench.cpp | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/Mod/PartDesign/Gui/Workbench.cpp b/src/Mod/PartDesign/Gui/Workbench.cpp index 5f49add30949..bfacf1758d6e 100644 --- a/src/Mod/PartDesign/Gui/Workbench.cpp +++ b/src/Mod/PartDesign/Gui/Workbench.cpp @@ -380,14 +380,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 +421,6 @@ Gui::MenuItem* Workbench::setupMenuBar() const *part << "PartDesign_Body" << "Separator" - << datums - << "PartDesign_CoordinateSystem" << "PartDesign_ShapeBinder" << "PartDesign_SubShapeBinder" << "PartDesign_Clone" @@ -490,8 +480,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"); From 024fee7f9774c0a327371875f7055e1c00afc9d5 Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Tue, 15 Oct 2024 18:37:34 +0200 Subject: [PATCH 062/221] Assembly: Enable the use of App::Datums --- src/Mod/Assembly/App/AssemblyObject.cpp | 117 +++++++----------- src/Mod/Assembly/App/AssemblyObject.h | 1 - src/Mod/Assembly/App/AssemblyUtils.cpp | 5 +- src/Mod/Assembly/CommandCreateJoint.py | 6 +- src/Mod/Assembly/Gui/ViewProviderAssembly.cpp | 6 - src/Mod/Assembly/JointObject.py | 51 ++++---- src/Mod/Assembly/UtilsAssembly.py | 55 ++++---- 7 files changed, 96 insertions(+), 145 deletions(-) diff --git a/src/Mod/Assembly/App/AssemblyObject.cpp b/src/Mod/Assembly/App/AssemblyObject.cpp index ee82a21e4e0c..b98b56e42c00 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,6 +94,9 @@ FC_LOG_LEVEL_INIT("Assembly", true, true, true) using namespace Assembly; using namespace MbD; + +namespace PartApp = Part; + /* static void printPlacement(Base::Placement plc, const char* name) { @@ -370,7 +375,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()) { + std::vector groundedParts = getGroundedParts(); + for (auto* obj : groundedParts) { auto* propPlacement = dynamic_cast(obj->getPropertyByName("Placement")); if (propPlacement) { @@ -386,7 +392,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; } } @@ -783,34 +790,54 @@ std::vector AssemblyObject::getGroundedParts() if (propObj) { App::DocumentObject* objToGround = propObj->getValue(); - groundedObjs.push_back(objToGround); + if (objToGround) { + if (std::find(groundedObjs.begin(), groundedObjs.end(), objToGround) + == groundedObjs.end()) { + groundedObjs.push_back(objToGround); + } + } } } + + // 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; + } + } + if (std::find(groundedObjs.begin(), groundedObjs.end(), obj) == groundedObjs.end()) { + groundedObjs.push_back(obj); + } + } + } + + // Origin is not in Group so we add it separately + groundedObjs.push_back(Origin.getValue()); + return groundedObjs; } std::vector AssemblyObject::fixGroundedParts() { - std::vector groundedJoints = getGroundedJoints(); + std::vector 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, @@ -1984,29 +2011,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 +2041,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 a5f7df556c05..f4c1c2589d64 100644 --- a/src/Mod/Assembly/App/AssemblyObject.h +++ b/src/Mod/Assembly/App/AssemblyObject.h @@ -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/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..de098764b69d 100644 --- a/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp +++ b/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp @@ -233,12 +233,6 @@ 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(); diff --git a/src/Mod/Assembly/JointObject.py b/src/Mod/Assembly/JointObject.py index 5c6f8d655955..fdac6ed8247d 100644 --- a/src/Mod/Assembly/JointObject.py +++ b/src/Mod/Assembly/JointObject.py @@ -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 @@ -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 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 not ( - selected_object.isDerivedFrom("Part::Feature") - or selected_object.isDerivedFrom("App::Part") + 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/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() From 1ce8f2c859ed741928222a1b4b0abadcf7da2bf5 Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Wed, 11 Dec 2024 09:57:04 +0100 Subject: [PATCH 063/221] AssemblyObject: Use std::unordered_set instead of vector. --- src/Mod/Assembly/App/AssemblyObject.cpp | 33 +++++++++++-------------- src/Mod/Assembly/App/AssemblyObject.h | 6 ++--- 2 files changed, 17 insertions(+), 22 deletions(-) diff --git a/src/Mod/Assembly/App/AssemblyObject.cpp b/src/Mod/Assembly/App/AssemblyObject.cpp index b98b56e42c00..45905162c77f 100644 --- a/src/Mod/Assembly/App/AssemblyObject.cpp +++ b/src/Mod/Assembly/App/AssemblyObject.cpp @@ -159,7 +159,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; @@ -202,7 +202,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; @@ -375,7 +375,7 @@ 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. - std::vector groundedParts = getGroundedParts(); + auto groundedParts = getGroundedParts(); for (auto* obj : groundedParts) { auto* propPlacement = dynamic_cast(obj->getPropertyByName("Placement")); @@ -775,11 +775,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; @@ -791,10 +791,7 @@ std::vector AssemblyObject::getGroundedParts() if (propObj) { App::DocumentObject* objToGround = propObj->getValue(); if (objToGround) { - if (std::find(groundedObjs.begin(), groundedObjs.end(), objToGround) - == groundedObjs.end()) { - groundedObjs.push_back(objToGround); - } + groundedSet.insert(objToGround); } } } @@ -812,21 +809,19 @@ std::vector AssemblyObject::getGroundedParts() continue; } } - if (std::find(groundedObjs.begin(), groundedObjs.end(), obj) == groundedObjs.end()) { - groundedObjs.push_back(obj); - } + groundedSet.insert(obj); } } // Origin is not in Group so we add it separately - groundedObjs.push_back(Origin.getValue()); + groundedSet.insert(Origin.getValue()); - return groundedObjs; + return groundedSet; } -std::vector AssemblyObject::fixGroundedParts() +std::unordered_set AssemblyObject::fixGroundedParts() { - std::vector groundedParts = getGroundedParts(); + auto groundedParts = getGroundedParts(); for (auto obj : groundedParts) { if (!obj) { @@ -948,7 +943,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; @@ -1040,7 +1035,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()) { @@ -1057,7 +1052,7 @@ bool AssemblyObject::isPartConnected(App::DocumentObject* obj) return false; } - std::vector groundedObjs = getGroundedParts(); + auto groundedObjs = getGroundedParts(); std::vector joints = getJoints(false); std::vector connectedParts; diff --git a/src/Mod/Assembly/App/AssemblyObject.h b/src/Mod/Assembly/App/AssemblyObject.h index f4c1c2589d64..b8ea59049c81 100644 --- a/src/Mod/Assembly/App/AssemblyObject.h +++ b/src/Mod/Assembly/App/AssemblyObject.h @@ -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); From e517400ed9ea35d3a7e4523b22e4301b37ce3a4c Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Wed, 11 Dec 2024 11:22:47 +0100 Subject: [PATCH 064/221] LCS migration : replace warning by a QMessageBox. --- src/App/Datums.cpp | 22 +++--------- src/App/Datums.h | 2 ++ src/Gui/ViewProviderCoordinateSystem.cpp | 46 ++++++++++++++++++++++++ src/Gui/ViewProviderCoordinateSystem.h | 4 +++ 4 files changed, 57 insertions(+), 17 deletions(-) diff --git a/src/App/Datums.cpp b/src/App/Datums.cpp index 3157ea4cd3c7..7afcf4b754e6 100644 --- a/src/App/Datums.cpp +++ b/src/App/Datums.cpp @@ -292,13 +292,11 @@ void LocalCoordinateSystem::migrateOriginPoint() { auto features = OriginFeatures.getValues(); - auto featIt = std::find_if(features.begin(), features.end(), - [](App::DocumentObject* obj) { - return obj->isDerivedFrom(App::DatumElement::getClassTypeId()) && + auto isOrigin = [](App::DocumentObject* obj) { + return obj->isDerivedFrom() && strcmp(static_cast(obj)->Role.getValue(), PointRoles[0]) == 0; - }); - if (featIt == features.end()) { - // origin point not found let's add it + }; + if (std::none_of(features.begin(), features.end(), isOrigin)) { auto data = getData(PointRoles[0]); auto* origin = createDatum(data); features.push_back(origin); @@ -310,7 +308,7 @@ void LocalCoordinateSystem::migrateXAxisPlacement() { auto features = OriginFeatures.getValues(); - bool migrated = false; + migrated = false; const auto& setupData = getSetupData(); for (auto* obj : features) { @@ -326,16 +324,6 @@ void LocalCoordinateSystem::migrateXAxisPlacement() } } } - - static bool warnedUser = false; - if (!warnedUser && migrated) { - Base::Console().Warning("This file was created with an older version of FreeCAD." - "It had some origin's X axis with incorrect placement, which is being fixed now.\n" - "But if you save the file here and open this file back in an " - "older version of FreeCAD, you will find the origin objects axis looking incorrect." - "And if your file is using the origin axis as references it will likely be broken.\n"); - warnedUser = true; - } } // ---------------------------------------------------------------------------- diff --git a/src/App/Datums.h b/src/App/Datums.h index 286e7353f341..43c08a285e6c 100644 --- a/src/App/Datums.h +++ b/src/App/Datums.h @@ -205,6 +205,8 @@ class AppExport LocalCoordinateSystem: public App::GeoFeature // Axis links PropertyLinkList OriginFeatures; + bool migrated; + protected: /// Checks integrity of the LCS App::DocumentObjectExecReturn* execute() override; diff --git a/src/Gui/ViewProviderCoordinateSystem.cpp b/src/Gui/ViewProviderCoordinateSystem.cpp index 15c686a0239d..45d870752403 100644 --- a/src/Gui/ViewProviderCoordinateSystem.cpp +++ b/src/Gui/ViewProviderCoordinateSystem.cpp @@ -26,6 +26,8 @@ #ifndef _PreComp_ # include # include +# include +# include #endif #include @@ -83,6 +85,50 @@ void ViewProviderCoordinateSystem::attach(App::DocumentObject* pcObject) addDisplayMaskMode(pcGroupChildren, "Base"); } +void ViewProviderCoordinateSystem::finishRestoring() +{ + showMigrationDialog(); +} + +void ViewProviderCoordinateSystem::showMigrationDialog() +{ + auto lcs = dynamic_cast(getObject()); + if (!lcs || !lcs->migrated) { + return; + } + + static bool userWarned = false; + + if (userWarned || !App::GetApplication().GetParameterGroupByPath( + "User parameter:BaseApp/Preferences/View")->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 FreeCAD. " + "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 FreeCAD, the origin axes will be misaligned. Additionally, " + "if your file references these origin axes, your file will likely be broken."), + QMessageBox::Ok); + + QCheckBox* checkBox = new QCheckBox(QObject::tr("Don't show this warning again")); + msgBox.setCheckBox(checkBox); + + msgBox.exec(); + + // Update static flag if the user has seen the warning + userWarned = true; + + // Save preference if the user selects "Don't show again" + if (checkBox->isChecked()) { + App::GetApplication().GetParameterGroupByPath( + "User parameter:BaseApp/Preferences/View")->SetBool("ShowLCSMigrationWarning", false); + } +} + std::vector ViewProviderCoordinateSystem::getDisplayModes() const { return { "Base" }; diff --git a/src/Gui/ViewProviderCoordinateSystem.h b/src/Gui/ViewProviderCoordinateSystem.h index 02a392d4e1b4..2448bc6acfa8 100644 --- a/src/Gui/ViewProviderCoordinateSystem.h +++ b/src/Gui/ViewProviderCoordinateSystem.h @@ -83,7 +83,11 @@ class GuiExport ViewProviderCoordinateSystem : public ViewProviderGeoFeatureGrou void updateData(const App::Property*) override; bool onDelete(const std::vector &) override; + void finishRestoring() override; + private: + void showMigrationDialog(); + SoGroup *pcGroupChildren; std::map tempVisMap; From 7620e0a9589e5d83b78d4fc854ebd7abb9a1f823 Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Wed, 11 Dec 2024 13:47:58 +0100 Subject: [PATCH 065/221] TaskAttacher: Refactoring --- src/Mod/Part/Gui/TaskAttacher.cpp | 107 ++++++++++++++---------------- src/Mod/Part/Gui/TaskAttacher.h | 10 ++- 2 files changed, 57 insertions(+), 60 deletions(-) diff --git a/src/Mod/Part/Gui/TaskAttacher.cpp b/src/Mod/Part/Gui/TaskAttacher.cpp index 3dac3f92d9f6..053403e7566c 100644 --- a/src/Mod/Part/Gui/TaskAttacher.cpp +++ b/src/Mod/Part/Gui/TaskAttacher.cpp @@ -359,7 +359,7 @@ QLineEdit* TaskAttacher::getLine(unsigned idx) } } -void TaskAttacher::processSelection(App::DocumentObject*& rootObj, std::string& sub) +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 @@ -369,7 +369,7 @@ void TaskAttacher::processSelection(App::DocumentObject*& rootObj, std::string& // - Part // - - Cube // - - Sketch - // In this example if must store Cube:Face3 because Sketch is inside Part, sibling of Cube. + // 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 @@ -415,6 +415,7 @@ void TaskAttacher::processSelection(App::DocumentObject*& rootObj, std::string& return; } + bool groupPassed = false; for (size_t i = 0; i < names.size(); ++i) { App::DocumentObject* obj = doc->getObject(names[i].c_str()); if (!obj) { @@ -425,21 +426,7 @@ void TaskAttacher::processSelection(App::DocumentObject*& rootObj, std::string& 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) { - ++i; - obj = doc->getObject(names[i].c_str()); - if (!obj) { - return; - } - + if (groupPassed) { rootObj = obj; // Rebuild 'sub' starting from the next element after the current 'name' @@ -452,6 +439,18 @@ void TaskAttacher::processSelection(App::DocumentObject*& rootObj, std::string& } 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 @@ -475,20 +474,19 @@ void TaskAttacher::handleInitialSelection() if (!refs.empty()) { return; } - std::vector objNames; - std::vector subNames; + std::vector subAndObjNamePairs; auto sel = Gui::Selection().getSelectionEx("", App::DocumentObject::getClassTypeId(), Gui::ResolveMode::NoResolve); for (auto& selObj : sel) { std::vector subs = selObj.getSubNames(); - const char* objName = selObj.getFeatName(); + std::string objName = selObj.getFeatName(); for (auto& sub : subs) { - objNames.push_back(objName); - subNames.push_back(sub); + SubAndObjName objSubName = { objName, sub }; + subAndObjNamePairs.push_back(objSubName); } } - addToReference(objNames, subNames); + addToReference(subAndObjNamePairs); } void TaskAttacher::onSelectionChanged(const Gui::SelectionChanges& msg) @@ -498,13 +496,14 @@ void TaskAttacher::onSelectionChanged(const Gui::SelectionChanges& msg) } if (msg.Type == Gui::SelectionChanges::AddSelection) { - addToReference(msg.pObjectName, msg.pSubName); + SubAndObjName pair = { msg.pObjectName, msg.pSubName }; + addToReference(pair); } } -void TaskAttacher::addToReference(std::vector objNames, std::vector subNames) +void TaskAttacher::addToReference(const std::vector& pairs) { - if (iActiveRef < 0 || objNames.size() != subNames.size()) { + if (iActiveRef < 0) { return; } @@ -512,13 +511,13 @@ void TaskAttacher::addToReference(std::vector objNames, std::vector App::DocumentObject* obj = ViewProvider->getObject(); Part::AttachExtension* pcAttach = obj->getExtensionByType(); - for (size_t i = 0; i < objNames.size(); ++i) { + for (auto& pair : pairs) { std::vector refs = pcAttach->AttachmentSupport.getValues(); std::vector refnames = pcAttach->AttachmentSupport.getSubValues(); - App::DocumentObject* selObj = obj->getDocument()->getObject(objNames[i].c_str()); - std::string subname = subNames[i]; - processSelection(selObj, subname); + App::DocumentObject* selObj = obj->getDocument()->getObject(pair.objName.c_str()); + std::string subname = pair.subName; + findCorrectObjAndSubInThisContext(selObj, subname); if (!selObj) { return; } @@ -556,29 +555,6 @@ void TaskAttacher::addToReference(std::vector objNames, std::vector pcAttach->AttachmentSupport.setValues(refs, refnames); - if (i == objNames.size() - 1) { - // We check for the moed only for the last ref added. This is to avoid unnecessary warnings - // when we handle initial selection. - 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;}")); - } - } - QLineEdit* line = getLine(iActiveRef); if (line) { line->blockSignals(true); @@ -600,14 +576,31 @@ void TaskAttacher::addToReference(std::vector objNames, std::vector } } + 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(const char* objName, const char* subName) +void TaskAttacher::addToReference(SubAndObjName pair) { - std::string objname = objName; - std::string subname = subName; - addToReference({ objname }, { subname }); + addToReference({ pair }); } void TaskAttacher::onAttachmentOffsetChanged(double /*val*/, int idx) diff --git a/src/Mod/Part/Gui/TaskAttacher.h b/src/Mod/Part/Gui/TaskAttacher.h index 2833bf3ab87b..ce63d6cc210a 100644 --- a/src/Mod/Part/Gui/TaskAttacher.h +++ b/src/Mod/Part/Gui/TaskAttacher.h @@ -113,10 +113,14 @@ private Q_SLOTS: void updateRefButton(int idx); void updateAttachmentOffsetUI(); - void processSelection(App::DocumentObject*& obj, std::string& sub); + void findCorrectObjAndSubInThisContext(App::DocumentObject*& obj, std::string& sub); void handleInitialSelection(); - void addToReference(const char* objName, const char* subName); - void addToReference(std::vector objNames, std::vector subNames); + 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 From f12999724bacd5aa01b88f0fc334338b86550490 Mon Sep 17 00:00:00 2001 From: WandererFan Date: Fri, 13 Dec 2024 12:07:54 -0500 Subject: [PATCH 066/221] [TD]respect locale for date autofill (#18132) * [TD]respect locale for date autofill * [TD]fix merge conflict * Apply suggestions from code review --------- Co-authored-by: Chris Hennes --- src/Mod/TechDraw/App/DrawTemplate.cpp | 10 +- src/Mod/TechDraw/App/Preferences.cpp | 5 + src/Mod/TechDraw/App/Preferences.h | 1 + .../Gui/DlgPrefsTechDrawAnnotation.ui | 422 +++++++++--------- .../Gui/DlgPrefsTechDrawAnnotationImp.cpp | 2 + src/Mod/TechDraw/Gui/TemplateTextField.cpp | 9 +- 6 files changed, 243 insertions(+), 206 deletions(-) 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/Preferences.cpp b/src/Mod/TechDraw/App/Preferences.cpp index 7962467cd0ee..9515e7b2d698 100644 --- a/src/Mod/TechDraw/App/Preferences.cpp +++ b/src/Mod/TechDraw/App/Preferences.cpp @@ -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. diff --git a/src/Mod/TechDraw/App/Preferences.h b/src/Mod/TechDraw/App/Preferences.h index b93889f1bdc5..2d1a99476fcf 100644 --- a/src/Mod/TechDraw/App/Preferences.h +++ b/src/Mod/TechDraw/App/Preferences.h @@ -151,6 +151,7 @@ class TechDrawExport Preferences static Qt::KeyboardModifiers balloonDragModifiers(); static void setBalloonDragModifiers(Qt::KeyboardModifiers newModifiers); + static bool enforceISODate(); static bool switchOnClick(); static bool checkShapesBeforeUse(); diff --git a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotation.ui b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotation.ui index 5f49c6a9126a..eb5d49432331 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 @@ -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/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()) { From e7e410323eeb6f9291299f4aa53345c84d59da3c Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 9 Dec 2024 11:05:14 +0100 Subject: [PATCH 067/221] Sketch: Fix possible crash in BSpline::splineValue There is an underflow of an unsigned int in the calling instance that sets the parameter 'p' to 2**32-1. But the size of the passed vector is 0. To fix the crash first check if p is less then the size of the vector. See: https://forum.freecad.org/viewtopic.php?t=92815 --- src/Mod/Sketcher/App/planegcs/Geo.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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() From 00f6fbeaa3a717d61b5391a98e855377108679e8 Mon Sep 17 00:00:00 2001 From: wmayer Date: Wed, 11 Dec 2024 19:12:49 +0100 Subject: [PATCH 068/221] PD: Fix possible crash in up to shape --- src/Mod/PartDesign/App/FeatureExtrude.cpp | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) 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) { From 1955f280536488ae08ccb25080086d490f5ad5c3 Mon Sep 17 00:00:00 2001 From: David Kaufman Date: Fri, 13 Dec 2024 12:20:32 -0500 Subject: [PATCH 069/221] [CAM] implement multipass profile operations (#17326) * implement multipass profile operations * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- src/Mod/CAM/App/Area.cpp | 4 -- .../Resources/panels/PageOpProfileFullEdit.ui | 37 ++++++++++ src/Mod/CAM/Path/Op/Gui/Profile.py | 11 +++ src/Mod/CAM/Path/Op/Profile.py | 68 ++++++++++++++++++- 4 files changed, 115 insertions(+), 5 deletions(-) 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/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/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) From 9efa615fb4eafe679efcf16df43a424b5fc72352 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Fri, 13 Dec 2024 15:07:32 +0100 Subject: [PATCH 070/221] BIM: Fixed shape loading - fixes #18391 --- src/Mod/BIM/nativeifc/ifc_viewproviders.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Mod/BIM/nativeifc/ifc_viewproviders.py b/src/Mod/BIM/nativeifc/ifc_viewproviders.py index 3d7558ec318a..9880e1dc3ab1 100644 --- a/src/Mod/BIM/nativeifc/ifc_viewproviders.py +++ b/src/Mod/BIM/nativeifc/ifc_viewproviders.py @@ -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 From 29d685b452749cbe2827030ccdea89c45b62eecf Mon Sep 17 00:00:00 2001 From: mosfet80 Date: Tue, 10 Dec 2024 08:03:32 +0100 Subject: [PATCH 071/221] Clean ViewProviderAssembly.cpp --- src/Mod/Assembly/Gui/ViewProviderAssembly.cpp | 21 ------------------- 1 file changed, 21 deletions(-) diff --git a/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp b/src/Mod/Assembly/Gui/ViewProviderAssembly.cpp index 1f3016927d2d..40a24c423707 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; } @@ -245,7 +241,6 @@ bool ViewProviderAssembly::setEdit(int mode) return true; } - return ViewProviderPart::setEdit(mode); } @@ -257,7 +252,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 +268,6 @@ void ViewProviderAssembly::unsetEdit(int mode) PARTKEY); return; } - ViewProviderPart::unsetEdit(mode); } @@ -325,7 +318,6 @@ App::DocumentObject* ViewProviderAssembly::getActivePart() const if (!activeView) { return nullptr; } - return activeView->getActiveObject(PARTKEY); } @@ -347,7 +339,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 +403,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 +416,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 +443,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 +457,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 +470,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 +531,6 @@ bool ViewProviderAssembly::mouseButtonPressed(int Button, } } } - return false; } @@ -589,7 +573,6 @@ bool ViewProviderAssembly::canDragObjectIn3d(App::DocumentObject* obj) const return true; } } - return false; } @@ -688,9 +671,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 +1120,6 @@ bool ViewProviderAssembly::canDelete(App::DocumentObject* objBeingDeleted) const joint->getNameInDocument()); } } - return res; } From d4b7d074ee201357c86589a164454d9716a87be1 Mon Sep 17 00:00:00 2001 From: Vincent Belpois Date: Mon, 2 Dec 2024 21:28:41 -0600 Subject: [PATCH 072/221] Sketcher: Fix double RMB to quite polyline after closed shape --- src/Mod/Sketcher/Gui/DrawSketchHandlerLineSet.h | 1 + 1 file changed, 1 insertion(+) 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(); From a4c85232c92fc5b36327e5be2fe9bb551f6d0907 Mon Sep 17 00:00:00 2001 From: kwahoo2 Date: Fri, 13 Dec 2024 18:32:37 +0100 Subject: [PATCH 073/221] Gui: add method to select objects with a 3D ray (#16789) * Implementation of ray picking method for 3d picking * Ray picking logic moved to C++ (cherry picked from commit ed23214c0bce7b70fd1003a7c4612e2d0d7da4cb) * formatting, do not return unecessary dict keys, near plane clipping --- src/Gui/View3DInventor.cpp | 95 ++++++++++++++++++++++++++++++++++++++ src/Gui/View3DInventor.h | 13 ++++++ src/Gui/View3DPy.cpp | 56 ++++++++++++++++++++++ src/Gui/View3DPy.h | 1 + 4 files changed, 165 insertions(+) diff --git a/src/Gui/View3DInventor.cpp b/src/Gui/View3DInventor.cpp index 0b134306347c..1c542629c590 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 near = 0.1; + + RayPickInfo ret = {.isValid = false, + .point = Base::Vector3d(), + .document = "", + .object = "", + .parentObject = std::nullopt, + .component = std::nullopt, + .subName = std::nullopt}; + SoRayPickAction action(getViewer()->getSoRenderManager()->getViewportRegion()); + action.setRay(SbVec3f(vsx, vsy, vsz), SbVec3f(vdx, vdy, vdz), near); + 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..882265183acb 100644 --- a/src/Gui/View3DInventor.h +++ b/src/Gui/View3DInventor.h @@ -31,6 +31,7 @@ #include "MDIView.h" +#include "Base/Vector3D.h" class QPrinter; class QStackedWidget; @@ -43,6 +44,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 +109,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/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&); From f5a4ec01f8b095051355226be735104ce8eb8b44 Mon Sep 17 00:00:00 2001 From: Andrea Date: Sun, 1 Dec 2024 11:29:03 +0100 Subject: [PATCH 074/221] [Mod] Clean AssemblyObject.cpp Removed dead code [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci . --- src/Mod/Assembly/App/AssemblyObject.cpp | 28 +------------------------ 1 file changed, 1 insertion(+), 27 deletions(-) diff --git a/src/Mod/Assembly/App/AssemblyObject.cpp b/src/Mod/Assembly/App/AssemblyObject.cpp index ee82a21e4e0c..6dad79caa079 100644 --- a/src/Mod/Assembly/App/AssemblyObject.cpp +++ b/src/Mod/Assembly/App/AssemblyObject.cpp @@ -92,25 +92,6 @@ 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); -}*/ // ================================ Assembly Object ============================ @@ -1595,8 +1576,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 +1818,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 +1838,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; } From 8ad0395e213e4c9d909ac8472d95e73b17707ae9 Mon Sep 17 00:00:00 2001 From: marioalexis Date: Fri, 13 Dec 2024 15:34:46 -0300 Subject: [PATCH 075/221] Gui: Add missing header --- src/Gui/View3DInventor.h | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Gui/View3DInventor.h b/src/Gui/View3DInventor.h index 882265183acb..e02d49a54b28 100644 --- a/src/Gui/View3DInventor.h +++ b/src/Gui/View3DInventor.h @@ -24,6 +24,7 @@ #define GUI_VIEW3DINVENTOR_H #include +#include #include #include From 032a70140ef6353653ad776b498dd781a3eb68dd Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Fri, 13 Dec 2024 14:23:50 -0500 Subject: [PATCH 076/221] CI: Remove readability-identifier-length check (#18403) --- .clang-tidy | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.clang-tidy b/.clang-tidy index 8e18d3a74907..2ca5ee7bcc51 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -1,7 +1,7 @@ --- 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, @@ -150,8 +150,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 From 21411fcf3ae33b76ceb57ebabab7ab8adc996c16 Mon Sep 17 00:00:00 2001 From: Chris Mayo Date: Fri, 13 Dec 2024 19:26:24 +0000 Subject: [PATCH 077/221] Remove LibPack FLANN comment cMake/UseLibPack10x.cmake was removed in: e0220e7830 ("Remove unused cMakes", 2022-02-22) --- cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake b/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake index fcb66a95e219..7cbf64d7bb98 100644 --- a/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake +++ b/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake @@ -169,7 +169,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) From 5a6535d9082f2387e21c3ebf1f5f420fbc84c58f Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 13 Dec 2024 21:18:14 +0100 Subject: [PATCH 078/221] Fix several compiler warnings: * Fix [-Wsign-compare] * Fix [-Wc++20-designator]: designated initializers are a C++20 extension * Fix [-Wunused-parameter] --- src/Base/Tools.cpp | 4 ++-- src/Base/Tools.h | 2 +- src/Gui/View3DInventor.cpp | 14 +++++++------- src/Mod/Spreadsheet/Gui/SheetTableView.cpp | 2 ++ 4 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/Base/Tools.cpp b/src/Base/Tools.cpp index 374a15b237c2..24c5856e7787 100644 --- a/src/Base/Tools.cpp +++ b/src/Base/Tools.cpp @@ -156,7 +156,7 @@ void Base::UniqueNameManager::addExactName(const std::string& name) baseNameAndDigitCountEntry.Add(digitsValue); } std::string Base::UniqueNameManager::makeUniqueName(const std::string& modelName, - int minDigits) const + std::size_t minDigits) const { std::string namePrefix; std::string nameSuffix; @@ -169,7 +169,7 @@ std::string Base::UniqueNameManager::makeUniqueName(const std::string& modelName } // We don't care about the digit count of the suggested name, we always use at least the most // digits ever used before. - int digitCount = baseNameEntry->second.size() - 1; + std::size_t digitCount = baseNameEntry->second.size() - 1; uint digitsValue; if (digitCount < minDigits) { // Caller is asking for more digits than we have in any registered name. diff --git a/src/Base/Tools.h b/src/Base/Tools.h index ca76945e8a78..1295475ba165 100644 --- a/src/Base/Tools.h +++ b/src/Base/Tools.h @@ -344,7 +344,7 @@ class BaseExport UniqueNameManager // name more than once. The effect if undetected is that the second registration will have no // effect void addExactName(const std::string& name); - std::string makeUniqueName(const std::string& modelName, int minDigits = 0) const; + std::string makeUniqueName(const std::string& modelName, std::size_t minDigits = 0) const; // Remove a registered name so it can be generated again. // Nothing happens if you try to remove a non-registered name. diff --git a/src/Gui/View3DInventor.cpp b/src/Gui/View3DInventor.cpp index 1c542629c590..f518c9e1f204 100644 --- a/src/Gui/View3DInventor.cpp +++ b/src/Gui/View3DInventor.cpp @@ -790,13 +790,13 @@ RayPickInfo View3DInventor::getObjInfoRay(Base::Vector3d* startvec, Base::Vector // near plane clipping is required to avoid false intersections float near = 0.1; - RayPickInfo ret = {.isValid = false, - .point = Base::Vector3d(), - .document = "", - .object = "", - .parentObject = std::nullopt, - .component = std::nullopt, - .subName = std::nullopt}; + 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), near); action.apply(getViewer()->getSoRenderManager()->getSceneGraph()); diff --git a/src/Mod/Spreadsheet/Gui/SheetTableView.cpp b/src/Mod/Spreadsheet/Gui/SheetTableView.cpp index e95637084316..403fe5b136ce 100644 --- a/src/Mod/Spreadsheet/Gui/SheetTableView.cpp +++ b/src/Mod/Spreadsheet/Gui/SheetTableView.cpp @@ -119,6 +119,7 @@ SheetTableView::SheetTableView(QWidget* parent) setHorizontalScrollMode(QAbstractItemView::ScrollPerPixel); connect(verticalHeader(), &QWidget::customContextMenuRequested, [this](const QPoint& point) { + Q_UNUSED(point) QMenu menu {nullptr}; const auto selection = selectionModel()->selectedRows(); const auto& [min, max] = selectedMinMaxRows(selection); @@ -145,6 +146,7 @@ SheetTableView::SheetTableView(QWidget* parent) }); connect(horizontalHeader(), &QWidget::customContextMenuRequested, [this](const QPoint& point) { + Q_UNUSED(point) QMenu menu {nullptr}; const auto selection = selectionModel()->selectedColumns(); const auto& [min, max] = selectedMinMaxColumns(selection); From f663e4fce4882402d0c5f023dc7c16582b3a1e81 Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Fri, 13 Dec 2024 16:07:24 -0600 Subject: [PATCH 079/221] Gui: Rename variable to eliminate macro conflict Windows.h defines 'near' and 'far' macros, and they are actually used in the Inventor codebase (so we can't just undefine them). --- src/Gui/View3DInventor.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Gui/View3DInventor.cpp b/src/Gui/View3DInventor.cpp index f518c9e1f204..d56e71743572 100644 --- a/src/Gui/View3DInventor.cpp +++ b/src/Gui/View3DInventor.cpp @@ -788,7 +788,7 @@ RayPickInfo View3DInventor::getObjInfoRay(Base::Vector3d* startvec, Base::Vector vdy = dirvec->y; vdz = dirvec->z; // near plane clipping is required to avoid false intersections - float near = 0.1; + float nearClippingPlane = 0.1; RayPickInfo ret = {false, Base::Vector3d(), @@ -798,7 +798,7 @@ RayPickInfo View3DInventor::getObjInfoRay(Base::Vector3d* startvec, Base::Vector std::nullopt, std::nullopt}; SoRayPickAction action(getViewer()->getSoRenderManager()->getViewportRegion()); - action.setRay(SbVec3f(vsx, vsy, vsz), SbVec3f(vdx, vdy, vdz), near); + action.setRay(SbVec3f(vsx, vsy, vsz), SbVec3f(vdx, vdy, vdz), nearClippingPlane); action.apply(getViewer()->getSoRenderManager()->getSceneGraph()); SoPickedPoint* Point = action.getPickedPoint(); From 15002640791ef15cde6df0075f15a20007726a61 Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Fri, 13 Dec 2024 15:33:37 -0600 Subject: [PATCH 080/221] Base: Add missing PCH include to ServiceProvider --- src/Base/ServiceProvider.cpp | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Base/ServiceProvider.cpp b/src/Base/ServiceProvider.cpp index f1d583e69abc..1f99a531008a 100644 --- a/src/Base/ServiceProvider.cpp +++ b/src/Base/ServiceProvider.cpp @@ -22,6 +22,8 @@ * * ***************************************************************************/ +#include "PreCompiled.h" + #include "ServiceProvider.h" Base::ServiceProvider& Base::ServiceProvider::get() From b25b83c1a58bf0ae95cbd502d0ccae27e8127cad Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Fri, 13 Dec 2024 08:16:14 -0600 Subject: [PATCH 081/221] Addon Manager: Support case of repo=None in worker --- src/Mod/AddonManager/addonmanager_workers_startup.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) 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: From 7c1d984b7a6341f27ed4427f2503036227f3117c Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Fri, 13 Dec 2024 15:38:11 -0600 Subject: [PATCH 082/221] App: Fix encoding of Datums.cpp --- src/App/Datums.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/App/Datums.cpp b/src/App/Datums.cpp index 7afcf4b754e6..7421d4d6a1e2 100644 --- a/src/App/Datums.cpp +++ b/src/App/Datums.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (c) 2015 Stefan Tröger * + * Copyright (c) 2015 Stefan Tröger * * Copyright (c) 2015 Alexander Golubev (Fat-Zer) * * Copyright (c) 2024 Ondsel (PL Boyer) * * * From e3d81eaf69730dd1842e777d4fac948a0cad8f68 Mon Sep 17 00:00:00 2001 From: Jacob Oursland Date: Fri, 13 Dec 2024 16:33:43 -0800 Subject: [PATCH 083/221] CI: Enable GitHub Problem Matchers for compiler warnings. --- .github/problemMatcher/gcc.json | 18 ++++++++++++++++++ .github/problemMatcher/msvc.json | 19 +++++++++++++++++++ .github/workflows/sub_buildPixi.yml | 15 +++++++++++++++ 3 files changed, 52 insertions(+) create mode 100644 .github/problemMatcher/gcc.json create mode 100644 .github/problemMatcher/msvc.json 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/sub_buildPixi.yml b/.github/workflows/sub_buildPixi.yml index 0889c2421646..6e5d3d014d82 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: | From e458526279e3cf440a8f14f2424e707983de2fc1 Mon Sep 17 00:00:00 2001 From: Furgo <148809153+furgo16@users.noreply.github.com> Date: Sat, 14 Dec 2024 10:10:18 +0100 Subject: [PATCH 084/221] Disable external zipios usage for Debian builds --- cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake b/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake index 7cbf64d7bb98..d34b42a4f846 100644 --- a/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake +++ b/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake @@ -178,7 +178,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) From aa228f2b329793326589b760767e48f49cb7eb1c Mon Sep 17 00:00:00 2001 From: wmayer Date: Sat, 14 Dec 2024 21:36:25 +0100 Subject: [PATCH 085/221] Core: Fix false-positive in migrateXAxisPlacement() Use a looser tolerance to compare the rotations of the axes and planes of the coordinate system --- src/App/Datums.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/App/Datums.cpp b/src/App/Datums.cpp index 7421d4d6a1e2..ab972e35067d 100644 --- a/src/App/Datums.cpp +++ b/src/App/Datums.cpp @@ -306,6 +306,7 @@ void LocalCoordinateSystem::migrateOriginPoint() void LocalCoordinateSystem::migrateXAxisPlacement() { + constexpr const double tolerance = 1e-5; auto features = OriginFeatures.getValues(); migrated = false; @@ -317,10 +318,11 @@ void LocalCoordinateSystem::migrateXAxisPlacement() 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)) { + if (!feature->Placement.getValue().getRotation().isSame(data.rot, tolerance)) { feature->Placement.setValue(Base::Placement(Base::Vector3d(), data.rot)); migrated = true; } + break; } } } From e698c73a3a1ec36bf6b735b2cd681d43b95ee0c1 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sat, 14 Dec 2024 17:25:04 +0100 Subject: [PATCH 086/221] Part: Fix crash due to infinite recursion --- src/Mod/Part/Gui/TaskAttacher.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Mod/Part/Gui/TaskAttacher.cpp b/src/Mod/Part/Gui/TaskAttacher.cpp index 053403e7566c..5f3ebe9b7786 100644 --- a/src/Mod/Part/Gui/TaskAttacher.cpp +++ b/src/Mod/Part/Gui/TaskAttacher.cpp @@ -600,7 +600,7 @@ void TaskAttacher::addToReference(const std::vector& pairs) void TaskAttacher::addToReference(SubAndObjName pair) { - addToReference({ pair }); + addToReference({{{ pair }}}); } void TaskAttacher::onAttachmentOffsetChanged(double /*val*/, int idx) From 844d88fb7a5fee77a7def3e131a17806052ac646 Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Sat, 14 Dec 2024 22:15:17 +0100 Subject: [PATCH 087/221] BIM: Fix ArchReference problem caused by TNP code Due to TNP code Document.xml can contain (for example)` ` instead of ``. --- src/Mod/BIM/ArchReference.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 " Date: Mon, 16 Dec 2024 14:30:49 +0100 Subject: [PATCH 088/221] Revert "Address the poor performance of the existing unique-name generation (#17944)" This reverts commit 83202d8ad67a719cb62e29d9dc3496a076999f1f. # Conflicts: # src/Base/Tools.cpp # src/Base/Tools.h --- src/App/Application.cpp | 156 ++++++++-------- src/App/Application.h | 4 +- src/App/Document.cpp | 156 ++++++---------- src/App/Document.h | 22 +-- src/App/DocumentObject.cpp | 73 -------- src/App/DocumentObject.h | 11 +- src/App/DynamicProperty.cpp | 42 ++--- src/App/DynamicProperty.h | 2 - src/App/Extension.cpp | 4 - src/App/Extension.h | 2 - src/App/ExtensionContainer.cpp | 7 - src/App/ExtensionContainer.h | 2 - src/App/PropertyContainer.cpp | 16 +- src/App/PropertyContainer.h | 7 - src/App/PropertyStandard.cpp | 96 +++++++++- src/App/private/DocumentP.h | 7 - src/Base/Reader.cpp | 5 +- src/Base/Reader.h | 5 +- src/Base/Tools.cpp | 296 +++++++++++------------------- src/Base/Tools.h | 96 +--------- src/Base/Writer.cpp | 47 ++++- src/Base/Writer.h | 25 +-- src/Gui/Document.cpp | 2 +- src/Gui/ViewProviderLink.cpp | 11 +- src/Gui/ViewProviderLink.h | 4 +- src/Mod/Spreadsheet/App/Sheet.cpp | 13 +- src/Mod/Spreadsheet/App/Sheet.h | 3 - tests/src/Base/Tools.cpp | 32 +--- 28 files changed, 430 insertions(+), 716 deletions(-) diff --git a/src/App/Application.cpp b/src/App/Application.cpp index 9b9a0b7f56b8..56ef0a38b2ba 100644 --- a/src/App/Application.cpp +++ b/src/App/Application.cpp @@ -450,16 +450,41 @@ void Application::renameDocument(const char *OldName, const char *NewName) throw Base::RuntimeError("Renaming document internal name is no longer allowed!"); } -Document* Application::newDocument(const char * proposedName, const char * proposedLabel, bool createView, bool tempDoc) +Document* Application::newDocument(const char * Name, const char * UserName, bool createView, bool tempDoc) { - std::string name; - bool useDefaultName = (!proposedName || proposedName[0] == '\0'); - // get a valid name anyway! - if (useDefaultName) { - proposedName = "Unnamed"; - } + auto getNameAndLabel = [this](const char * Name, const char * UserName) -> std::tuple { + bool defaultName = (!Name || Name[0] == '\0'); + + // get a valid name anyway! + if (defaultName) { + Name = "Unnamed"; + } + + std::string userName; + if (UserName && UserName[0] != '\0') { + userName = UserName; + } + else { + userName = defaultName ? QObject::tr("Unnamed").toStdString() : Name; + + std::vector names; + names.reserve(DocMap.size()); + for (const auto& pos : DocMap) { + names.emplace_back(pos.second->Label.getValue()); + } + + if (!names.empty()) { + userName = Base::Tools::getUniqueName(userName, names); + } + } + + return std::make_tuple(std::string(Name), userName); + }; - name = getUniqueDocumentName(proposedName, tempDoc); + auto tuple = getNameAndLabel(Name, UserName); + std::string name = std::get<0>(tuple); + std::string userName = std::get<1>(tuple); + name = getUniqueDocumentName(name.c_str(), tempDoc); // return the temporary document if it exists if (tempDoc) { @@ -468,65 +493,53 @@ Document* Application::newDocument(const char * proposedName, const char * propo return it->second; } - // Determine the document's Label - std::string label; - if (proposedLabel && proposedLabel[0] != '\0') { - label = proposedLabel; - } - else { - label = useDefaultName ? QObject::tr("Unnamed").toStdString() : proposedName; - - if (!DocMap.empty()) { - // The assumption here is that there are not many documents and - // documents are rarely created so the cost - // of building this manager each time is inconsequential - Base::UniqueNameManager names; - for (const auto& pos : DocMap) { - names.addExactName(pos.second->Label.getValue()); - } - - label = names.makeUniqueName(label); - } - } // create the FreeCAD document - Document* doc = new Document(name.c_str()); - doc->setStatus(Document::TempDoc, tempDoc); + std::unique_ptr newDoc(new Document(name.c_str())); + newDoc->setStatus(Document::TempDoc, tempDoc); + + auto oldActiveDoc = _pActiveDoc; + auto doc = newDoc.release(); // now owned by the Application // add the document to the internal list DocMap[name] = doc; + _pActiveDoc = doc; //NOLINTBEGIN // clang-format off // connect the signals to the application for the new document - doc->signalBeforeChange.connect(std::bind(&App::Application::slotBeforeChangeDocument, this, sp::_1, sp::_2)); - doc->signalChanged.connect(std::bind(&App::Application::slotChangedDocument, this, sp::_1, sp::_2)); - doc->signalNewObject.connect(std::bind(&App::Application::slotNewObject, this, sp::_1)); - doc->signalDeletedObject.connect(std::bind(&App::Application::slotDeletedObject, this, sp::_1)); - doc->signalBeforeChangeObject.connect(std::bind(&App::Application::slotBeforeChangeObject, this, sp::_1, sp::_2)); - doc->signalChangedObject.connect(std::bind(&App::Application::slotChangedObject, this, sp::_1, sp::_2)); - doc->signalRelabelObject.connect(std::bind(&App::Application::slotRelabelObject, this, sp::_1)); - doc->signalActivatedObject.connect(std::bind(&App::Application::slotActivatedObject, this, sp::_1)); - doc->signalUndo.connect(std::bind(&App::Application::slotUndoDocument, this, sp::_1)); - doc->signalRedo.connect(std::bind(&App::Application::slotRedoDocument, this, sp::_1)); - doc->signalRecomputedObject.connect(std::bind(&App::Application::slotRecomputedObject, this, sp::_1)); - doc->signalRecomputed.connect(std::bind(&App::Application::slotRecomputed, this, sp::_1)); - doc->signalBeforeRecompute.connect(std::bind(&App::Application::slotBeforeRecompute, this, sp::_1)); - doc->signalOpenTransaction.connect(std::bind(&App::Application::slotOpenTransaction, this, sp::_1, sp::_2)); - doc->signalCommitTransaction.connect(std::bind(&App::Application::slotCommitTransaction, this, sp::_1)); - doc->signalAbortTransaction.connect(std::bind(&App::Application::slotAbortTransaction, this, sp::_1)); - doc->signalStartSave.connect(std::bind(&App::Application::slotStartSaveDocument, this, sp::_1, sp::_2)); - doc->signalFinishSave.connect(std::bind(&App::Application::slotFinishSaveDocument, this, sp::_1, sp::_2)); - doc->signalChangePropertyEditor.connect(std::bind(&App::Application::slotChangePropertyEditor, this, sp::_1, sp::_2)); + _pActiveDoc->signalBeforeChange.connect(std::bind(&App::Application::slotBeforeChangeDocument, this, sp::_1, sp::_2)); + _pActiveDoc->signalChanged.connect(std::bind(&App::Application::slotChangedDocument, this, sp::_1, sp::_2)); + _pActiveDoc->signalNewObject.connect(std::bind(&App::Application::slotNewObject, this, sp::_1)); + _pActiveDoc->signalDeletedObject.connect(std::bind(&App::Application::slotDeletedObject, this, sp::_1)); + _pActiveDoc->signalBeforeChangeObject.connect(std::bind(&App::Application::slotBeforeChangeObject, this, sp::_1, sp::_2)); + _pActiveDoc->signalChangedObject.connect(std::bind(&App::Application::slotChangedObject, this, sp::_1, sp::_2)); + _pActiveDoc->signalRelabelObject.connect(std::bind(&App::Application::slotRelabelObject, this, sp::_1)); + _pActiveDoc->signalActivatedObject.connect(std::bind(&App::Application::slotActivatedObject, this, sp::_1)); + _pActiveDoc->signalUndo.connect(std::bind(&App::Application::slotUndoDocument, this, sp::_1)); + _pActiveDoc->signalRedo.connect(std::bind(&App::Application::slotRedoDocument, this, sp::_1)); + _pActiveDoc->signalRecomputedObject.connect(std::bind(&App::Application::slotRecomputedObject, this, sp::_1)); + _pActiveDoc->signalRecomputed.connect(std::bind(&App::Application::slotRecomputed, this, sp::_1)); + _pActiveDoc->signalBeforeRecompute.connect(std::bind(&App::Application::slotBeforeRecompute, this, sp::_1)); + _pActiveDoc->signalOpenTransaction.connect(std::bind(&App::Application::slotOpenTransaction, this, sp::_1, sp::_2)); + _pActiveDoc->signalCommitTransaction.connect(std::bind(&App::Application::slotCommitTransaction, this, sp::_1)); + _pActiveDoc->signalAbortTransaction.connect(std::bind(&App::Application::slotAbortTransaction, this, sp::_1)); + _pActiveDoc->signalStartSave.connect(std::bind(&App::Application::slotStartSaveDocument, this, sp::_1, sp::_2)); + _pActiveDoc->signalFinishSave.connect(std::bind(&App::Application::slotFinishSaveDocument, this, sp::_1, sp::_2)); + _pActiveDoc->signalChangePropertyEditor.connect(std::bind(&App::Application::slotChangePropertyEditor, this, sp::_1, sp::_2)); // clang-format on //NOLINTEND - // (temporarily) make this the active document for the upcoming notifications. - // Signal NewDocument rather than ActiveDocument - auto oldActiveDoc = _pActiveDoc; - setActiveDocumentNoSignal(doc); - signalNewDocument(*doc, createView); + // make sure that the active document is set in case no GUI is up + { + Base::PyGILStateLocker lock; + Py::Object active(_pActiveDoc->getPyObject(), true); + Py::Module("FreeCAD").setAttr(std::string("ActiveDocument"), active); + } - doc->Label.setValue(label); + signalNewDocument(*_pActiveDoc, createView); + + // set the UserName after notifying all observers + _pActiveDoc->Label.setValue(userName); // set the old document active again if the new is temporary if (tempDoc && oldActiveDoc) @@ -616,17 +629,13 @@ std::string Application::getUniqueDocumentName(const char *Name, bool tempDoc) c return CleanName; } else { - // The assumption here is that there are not many documents and - // documents are rarely created so the cost - // of building this manager each time is inconsequential - Base::UniqueNameManager names; - for (const auto& pos : DocMap) { - if (!tempDoc || !pos.second->testStatus(Document::TempDoc)) { - names.addExactName(pos.first); - } + std::vector names; + names.reserve(DocMap.size()); + for (pos = DocMap.begin(); pos != DocMap.end(); ++pos) { + if (!tempDoc || !pos->second->testStatus(Document::TempDoc)) + names.push_back(pos->first); } - - return names.makeUniqueName(CleanName); + return Base::Tools::getUniqueName(CleanName, names); } } @@ -1044,14 +1053,6 @@ Document* Application::getActiveDocument() const } void Application::setActiveDocument(Document* pDoc) -{ - setActiveDocumentNoSignal(pDoc); - - if (pDoc) - signalActiveDocument(*pDoc); -} - -void Application::setActiveDocumentNoSignal(Document* pDoc) { _pActiveDoc = pDoc; @@ -1059,15 +1060,18 @@ void Application::setActiveDocumentNoSignal(Document* pDoc) if (pDoc) { Base::PyGILStateLocker lock; Py::Object active(pDoc->getPyObject(), true); - Py::Module("FreeCAD").setAttr(std::string("ActiveDocument"), active); + Py::Module("FreeCAD").setAttr(std::string("ActiveDocument"),active); } else { Base::PyGILStateLocker lock; - Py::Module("FreeCAD").setAttr(std::string("ActiveDocument"), Py::None()); + Py::Module("FreeCAD").setAttr(std::string("ActiveDocument"),Py::None()); } + + if (pDoc) + signalActiveDocument(*pDoc); } -void Application::setActiveDocument(const char* Name) +void Application::setActiveDocument(const char *Name) { // If no active document is set, resort to a default. if (*Name == '\0') { diff --git a/src/App/Application.h b/src/App/Application.h index 2a19bd80fd34..e2a32adefe2d 100644 --- a/src/App/Application.h +++ b/src/App/Application.h @@ -160,7 +160,7 @@ class AppExport Application std::vector getDocuments() const; /// Set the active document void setActiveDocument(App::Document* pDoc); - void setActiveDocument(const char* Name); + void setActiveDocument(const char *Name); /// close all documents (without saving) void closeAllDocuments(); /// Add pending document to open together with the current opening document @@ -505,8 +505,6 @@ class AppExport Application static void cleanupUnits(); - void setActiveDocumentNoSignal(App::Document* pDoc); - /** @name member for parameter */ //@{ static Base::Reference _pcSysParamMngr; diff --git a/src/App/Document.cpp b/src/App/Document.cpp index b834a4777bfe..131a18ba855f 100644 --- a/src/App/Document.cpp +++ b/src/App/Document.cpp @@ -645,11 +645,8 @@ void Document::clearDocument() setStatus(Document::PartialDoc, false); d->clearRecomputeLog(); - d->objectLabelCounts.clear(); - d->objectLabelManager.clear(); d->objectArray.clear(); d->objectMap.clear(); - d->objectNameManager.clear(); d->objectIdMap.clear(); d->lastObjectId = 0; } @@ -2253,59 +2250,6 @@ bool Document::saveToFile(const char* filename) const return true; } -void Document::registerLabel(const std::string& newLabel) -{ - if (newLabel.empty()) { - return; - } - if (!d->objectLabelManager.containsName(newLabel)) { - // First occurrence of label. We make no entry in objectLabelCounts when the count is one. - d->objectLabelManager.addExactName(newLabel); - } - else { - auto it = d->objectLabelCounts.find(newLabel); - if (it != d->objectLabelCounts.end()) { - // There is a count already greater then one, so increment it - it->second++; - } - else { - // There is no count entry, which implies one, so register a count of two - d->objectLabelCounts.insert(std::pair(newLabel, 2)); - } - } -} - -void Document::unregisterLabel(const std::string& oldLabel) -{ - if (oldLabel.empty()) { - return; - } - auto it = d->objectLabelCounts.find(oldLabel); - if (it == d->objectLabelCounts.end()) { - // Missing count implies a count of one, or an unregistered name - d->objectLabelManager.removeExactName(oldLabel); - return; - } - if (--it->second == 1) { - // Decremented to one, remove the count entry - d->objectLabelCounts.erase(it); - } -} - -bool Document::containsLabel(const std::string& label) -{ - return d->objectLabelManager.containsName(label); -} - -std::string Document::makeUniqueLabel(const std::string& modelLabel) -{ - if (modelLabel.empty()) { - return std::string(); - } - - return d->objectLabelManager.makeUniqueName(modelLabel, 3); -} - bool Document::isAnyRestoring() { return globalIsRestoring; @@ -2332,10 +2276,7 @@ void Document::restore(const char* filename, setStatus(Document::PartialDoc, false); d->clearRecomputeLog(); - d->objectLabelCounts.clear(); - d->objectLabelManager.clear(); d->objectArray.clear(); - d->objectNameManager.clear(); d->objectMap.clear(); d->objectIdMap.clear(); d->lastObjectId = 0; @@ -3644,7 +3585,6 @@ DocumentObject* Document::addObject(const char* sType, // insert in the name map d->objectMap[ObjectName] = pcObject; - d->objectNameManager.addExactName(ObjectName); // generate object id and add to id map; pcObject->_Id = ++d->lastObjectId; d->objectIdMap[pcObject->_Id] = pcObject; @@ -3653,8 +3593,6 @@ DocumentObject* Document::addObject(const char* sType, pcObject->pcNameInDocument = &(d->objectMap.find(ObjectName)->first); // insert in the vector d->objectArray.push_back(pcObject); - // Register the current Label even though it is (probably) about to change - registerLabel(pcObject->Label.getStrValue()); // If we are restoring, don't set the Label object now; it will be restored later. This is to // avoid potential duplicate label conflicts later. @@ -3715,6 +3653,13 @@ Document::addObjects(const char* sType, const std::vector& objectNa return objects; } + // get all existing object names + std::vector reservedNames; + reservedNames.reserve(d->objectMap.size()); + for (const auto& pos : d->objectMap) { + reservedNames.push_back(pos.first); + } + for (auto it = objects.begin(); it != objects.end(); ++it) { auto index = std::distance(objects.begin(), it); App::DocumentObject* pcObject = *it; @@ -3729,19 +3674,29 @@ Document::addObjects(const char* sType, const std::vector& objectNa } } - // get unique name. We don't use getUniqueObjectName because it takes a char* not a std::string + // get unique name std::string ObjectName = objectNames[index]; if (ObjectName.empty()) { ObjectName = sType; } ObjectName = Base::Tools::getIdentifier(ObjectName); - if (d->objectNameManager.containsName(ObjectName)) { - ObjectName = d->objectNameManager.makeUniqueName(ObjectName, 3); + if (d->objectMap.find(ObjectName) != d->objectMap.end()) { + // remove also trailing digits from clean name which is to avoid to create lengthy names + // like 'Box001001' + if (!testStatus(KeepTrailingDigits)) { + std::string::size_type index = ObjectName.find_last_not_of("0123456789"); + if (index + 1 < ObjectName.size()) { + ObjectName = ObjectName.substr(0, index + 1); + } + } + + ObjectName = Base::Tools::getUniqueName(ObjectName, reservedNames, 3); } + reservedNames.push_back(ObjectName); + // insert in the name map d->objectMap[ObjectName] = pcObject; - d->objectNameManager.addExactName(ObjectName); // generate object id and add to id map; pcObject->_Id = ++d->lastObjectId; d->objectIdMap[pcObject->_Id] = pcObject; @@ -3750,8 +3705,6 @@ Document::addObjects(const char* sType, const std::vector& objectNa pcObject->pcNameInDocument = &(d->objectMap.find(ObjectName)->first); // insert in the vector d->objectArray.push_back(pcObject); - // Register the current Label even though it is about to change - registerLabel(pcObject->Label.getStrValue()); pcObject->Label.setValue(ObjectName); @@ -3812,7 +3765,6 @@ void Document::addObject(DocumentObject* pcObject, const char* pObjectName) // insert in the name map d->objectMap[ObjectName] = pcObject; - d->objectNameManager.addExactName(ObjectName); // generate object id and add to id map; if (!pcObject->_Id) { pcObject->_Id = ++d->lastObjectId; @@ -3823,8 +3775,6 @@ void Document::addObject(DocumentObject* pcObject, const char* pObjectName) pcObject->pcNameInDocument = &(d->objectMap.find(ObjectName)->first); // insert in the vector d->objectArray.push_back(pcObject); - // Register the current Label even though it is about to change - registerLabel(pcObject->Label.getStrValue()); pcObject->Label.setValue(ObjectName); @@ -3848,14 +3798,12 @@ void Document::_addObject(DocumentObject* pcObject, const char* pObjectName) { std::string ObjectName = getUniqueObjectName(pObjectName); d->objectMap[ObjectName] = pcObject; - d->objectNameManager.addExactName(ObjectName); // generate object id and add to id map; if (!pcObject->_Id) { pcObject->_Id = ++d->lastObjectId; } d->objectIdMap[pcObject->_Id] = pcObject; d->objectArray.push_back(pcObject); - registerLabel(pcObject->Label.getStrValue()); // cache the pointer to the name string in the Object (for performance of // DocumentObject::getNameInDocument()) pcObject->pcNameInDocument = &(d->objectMap.find(ObjectName)->first); @@ -3884,15 +3832,6 @@ void Document::_addObject(DocumentObject* pcObject, const char* pObjectName) signalActivatedObject(*pcObject); } -bool Document::containsObject(const DocumentObject* pcObject) const -{ - // We could look for the object in objectMap (keyed by object name), - // or search in objectArray (a O(n) vector search) but looking by Id - // in objectIdMap would be fastest. - auto found = d->objectIdMap.find(pcObject->getID()); - return found != d->objectIdMap.end() && found->second == pcObject; -} - /// Remove an object out of the document void Document::removeObject(const char* sName) { @@ -3980,7 +3919,6 @@ void Document::removeObject(const char* sName) } } - unregisterLabel(pos->second->Label.getStrValue()); for (std::vector::iterator obj = d->objectArray.begin(); obj != d->objectArray.end(); ++obj) { @@ -3994,7 +3932,6 @@ void Document::removeObject(const char* sName) if (tobedestroyed) { tobedestroyed->pcNameInDocument = nullptr; } - d->objectNameManager.removeExactName(pos->first); d->objectMap.erase(pos); } @@ -4064,8 +4001,6 @@ void Document::_removeObject(DocumentObject* pcObject) // remove from map pcObject->setStatus(ObjectStatus::Remove, false); // Unset the bit to be on the safe side d->objectIdMap.erase(pcObject->_Id); - d->objectNameManager.removeExactName(pos->first); - unregisterLabel(pos->second->Label.getStrValue()); d->objectMap.erase(pos); for (std::vector::iterator it = d->objectArray.begin(); @@ -4342,29 +4277,50 @@ const char* Document::getObjectName(DocumentObject* pFeat) const return nullptr; } -std::string Document::getUniqueObjectName(const char* proposedName) const +std::string Document::getUniqueObjectName(const char* Name) const { - if (!proposedName || *proposedName == '\0') { + if (!Name || *Name == '\0') { return {}; } - std::string cleanName = Base::Tools::getIdentifier(proposedName); + std::string CleanName = Base::Tools::getIdentifier(Name); + + // name in use? + auto pos = d->objectMap.find(CleanName); - if (!d->objectNameManager.containsName(cleanName)) { - // Not in use yet, name is OK - return cleanName; + if (pos == d->objectMap.end()) { + // if not, name is OK + return CleanName; } - return d->objectNameManager.makeUniqueName(cleanName, 3); -} + else { + // remove also trailing digits from clean name which is to avoid to create lengthy names + // like 'Box001001' + if (!testStatus(KeepTrailingDigits)) { + std::string::size_type index = CleanName.find_last_not_of("0123456789"); + if (index + 1 < CleanName.size()) { + CleanName = CleanName.substr(0, index + 1); + } + } - std::tuple -Document::decomposeName(const std::string& name, std::string& baseName, std::string& nameExtension) -{ - return d->objectNameManager.decomposeName(name, baseName, nameExtension); + std::vector names; + names.reserve(d->objectMap.size()); + for (pos = d->objectMap.begin(); pos != d->objectMap.end(); ++pos) { + names.push_back(pos->first); + } + return Base::Tools::getUniqueName(CleanName, names, 3); + } } -std::string Document::getStandardObjectLabel(const char* modelName, int digitCount) const +std::string Document::getStandardObjectName(const char* Name, int d) const { - return d->objectLabelManager.makeUniqueName(modelName, digitCount); + std::vector mm = getObjects(); + std::vector labels; + labels.reserve(mm.size()); + + for (auto it : mm) { + std::string label = it->Label.getValue(); + labels.push_back(label); + } + return Base::Tools::getUniqueName(Name, labels, d); } std::vector Document::getDependingObjects() const diff --git a/src/App/Document.h b/src/App/Document.h index a740c2e5303f..36a878ee1043 100644 --- a/src/App/Document.h +++ b/src/App/Document.h @@ -287,10 +287,6 @@ class AppExport Document: public App::PropertyContainer */ void addObject(DocumentObject*, const char* pObjectName = nullptr); - /// returns whether this is actually contains the DocumentObject. - /// Testing the DocumentObject's pDoc pointer is not sufficient because the object - /// removeObject and _removeObject leave _pDoc unchanged - bool containsObject(const DocumentObject*) const; /** Copy objects from another document to this document * @@ -322,14 +318,11 @@ class AppExport Document: public App::PropertyContainer /// Returns true if the DocumentObject is contained in this document bool isIn(const DocumentObject* pFeat) const; /// Returns a Name of an Object or 0 - const char *getObjectName(DocumentObject* pFeat) const; - /// Returns a Name for a new Object or empty if proposedName is null or empty. - std::string getUniqueObjectName(const char* proposedName) const; - /// Returns a name different from any of the Labels of any objects in this document, based on the given modelName. - std::string getStandardObjectLabel(const char* modelName, int d) const; - /// Break an object Name or Label into its base parts, returning tuple(digitCount, digitsValue) - std::tuple - decomposeName(const std::string& name, std::string& baseName, std::string& nameExtension); + const char* getObjectName(DocumentObject* pFeat) const; + /// Returns a Name of an Object or 0 + std::string getUniqueObjectName(const char* Name) const; + /// Returns a name of the form prefix_number. d specifies the number of digits. + std::string getStandardObjectName(const char* Name, int d) const; /// Returns a list of document's objects including the dependencies std::vector getDependingObjects() const; /// Returns a list of all Objects @@ -574,11 +567,6 @@ class AppExport Document: public App::PropertyContainer /// Indicate if there is any document restoring/importing static bool isAnyRestoring(); - void registerLabel(const std ::string& newLabel); - void unregisterLabel(const std::string& oldLabel); - bool containsLabel(const std::string& label); - std::string makeUniqueLabel(const std::string& modelLabel); - friend class Application; /// because of transaction handling friend class TransactionalObject; diff --git a/src/App/DocumentObject.cpp b/src/App/DocumentObject.cpp index 8c2ad17b92c5..bd2b3b395eec 100644 --- a/src/App/DocumentObject.cpp +++ b/src/App/DocumentObject.cpp @@ -814,74 +814,6 @@ void DocumentObject::onBeforeChange(const Property* prop) signalBeforeChange(*this, *prop); } -std::vector>> -DocumentObject::onProposedLabelChange(std::string& newLabel) -{ - // Note that this work can't be done in onBeforeChangeLabel because FeaturePython overrides this - // method and does not initially base-call it. - - // We re only called if the new label differs from the old one, and our code to check duplicates - // may not work if this is not the case. - std::string oldLabel = Label.getStrValue(); - assert(newLabel != oldLabel); - std::string label; - if (!isAttachedToDocument() - || (getDocument()->testStatus(App::Document::Restoring) - && !getDocument()->testStatus(App::Document::Importing)) - || getDocument()->isPerformingTransaction()) { - return {}; - } - static ParameterGrp::handle _hPGrp; - if (!_hPGrp) { - _hPGrp = GetApplication().GetUserParameter().GetGroup("BaseApp"); - _hPGrp = _hPGrp->GetGroup("Preferences")->GetGroup("Document"); - } - App::Document* doc = getDocument(); - if (doc && newLabel.size() > 0 && !_hPGrp->GetBool("DuplicateLabels") && !allowDuplicateLabel() - && doc->containsLabel(newLabel)) { - // We must ensure the Label is unique in the document (well, sort of...). - // If the base name of the proposed label equals the base name of the object Name, we use - // the (uniquefied) object Name, which could actually be identical to another object's Label, - // but probably isn't. - // Otherwise we generate a unique Label using newLabel as a prototype name. In doing so, - // we must also act as if the current value of the property is not an existing Label entry. - std::string objName = getNameInDocument(); - std::string objBaseName; - std::string objSuffix; - doc->decomposeName(objName, objBaseName, objSuffix); - std::string newBaseName; - std::string newSuffix; - doc->decomposeName(newLabel, newBaseName, newSuffix); - if (newBaseName == objBaseName && newSuffix == objSuffix) { - newLabel = objName; - } - else { - // We deregister the old label so it does not interfere with making the new label, - // and re-register it after. This is probably a bit less efficient that having a special - // make-unique-label-as-if-this-one-did-not-exist method, but such a method would be a real - // ugly wart. - doc->unregisterLabel(oldLabel); - newLabel = doc->makeUniqueLabel(newLabel); - doc->registerLabel(oldLabel); - } - } - - // Despite our efforts to make a unique label, onBeforeLabelChange can change it. - onBeforeChangeLabel(newLabel); - - if (oldLabel == newLabel || getDocument()->testStatus(App::Document::Restoring)) { - // Don't update label reference if we are restoring or if the label is unchanged. - // When importing (which also counts as restoring), it is possible the - // new object changes its label. However, we cannot update label - // references here, because object being restored is not based on - // dependency order. It can only be done in afterRestore(). - // - // See PropertyLinkBase::restoreLabelReference() for more details. - return {}; - } - return PropertyLinkBase::updateLabelReferences(this, newLabel.c_str()); -} - void DocumentObject::onEarlyChange(const Property* prop) { if (GetApplication().isClosingAll()) { @@ -904,11 +836,6 @@ void DocumentObject::onEarlyChange(const Property* prop) /// get called by the container when a Property was changed void DocumentObject::onChanged(const Property* prop) { - if (prop == &Label && _pDoc && _pDoc->containsObject(this) && oldLabel != Label.getStrValue()) { - _pDoc->unregisterLabel(oldLabel); - _pDoc->registerLabel(Label.getStrValue()); - } - if (isFreezed() && prop != &Visibility) { return; } diff --git a/src/App/DocumentObject.h b/src/App/DocumentObject.h index 666f066dfb6f..72f78fe13d91 100644 --- a/src/App/DocumentObject.h +++ b/src/App/DocumentObject.h @@ -513,14 +513,7 @@ class AppExport DocumentObject: public App::TransactionalObject { return false; } - /// Handle Label changes, including forcing unique label values, - /// signalling OnBeforeLabelChange, and arranging to update linked references, - /// on the assumption that after returning the label will indeed be changed to - /// the (altered) value of newLabel. - /// Returns a vector of referenging (linking) properties as produced by - /// PropertyLinkBase::updateLabelReferences which is needed for undo/redo purposes. - std::vector>> - onProposedLabelChange(std::string& newLabel); + /*** Called to let object itself control relabeling * * @param newLabel: input as the new label, which can be modified by object itself @@ -772,10 +765,10 @@ class AppExport DocumentObject: public App::TransactionalObject /// Old label; used for renaming expressions std::string oldLabel; -private: // pointer to the document name string (for performance) const std::string* pcNameInDocument {nullptr}; +private: // accessed by App::Document to record and restore the correct view provider type std::string _pcViewProviderName; diff --git a/src/App/DynamicProperty.cpp b/src/App/DynamicProperty.cpp index c9bdb89981ef..f79ecd565098 100644 --- a/src/App/DynamicProperty.cpp +++ b/src/App/DynamicProperty.cpp @@ -70,13 +70,7 @@ void DynamicProperty::getPropertyNamedList( } } -void DynamicProperty::visitProperties(std::function visitor) const { - for (auto& v : props.get<0>()) { - visitor(v.property); - } -} - -void DynamicProperty::getPropertyMap(std::map& Map) const +void DynamicProperty::getPropertyMap(std::map& Map) const { for (auto& v : props.get<0>()) { Map[v.name] = v.property; @@ -304,21 +298,25 @@ bool DynamicProperty::removeDynamicProperty(const char* name) std::string DynamicProperty::getUniquePropertyName(PropertyContainer& pc, const char* Name) const { - std::string cleanName = Base::Tools::getIdentifier(Name); - - // We test if the property already exists by finding it, which is not much more expensive than - // having a separate propertyExists(name) method. This avoids building the UniqueNameManager - // (which could also tell if the name exists) except in the relatively rare condition of - // the name already existing. - if (pc.getPropertyByName(cleanName.c_str()) == nullptr) { - return cleanName; - } - Base::UniqueNameManager names; - // Build the index of existing names. - pc.visitProperties([&](Property* prop) { - names.addExactName(prop->getName()); - }); - return names.makeUniqueName(cleanName); + std::string CleanName = Base::Tools::getIdentifier(Name); + + // name in use? + std::map objectProps; + pc.getPropertyMap(objectProps); + auto pos = objectProps.find(CleanName); + + if (pos == objectProps.end()) { + // if not, name is OK + return CleanName; + } + else { + std::vector names; + names.reserve(objectProps.size()); + for (pos = objectProps.begin(); pos != objectProps.end(); ++pos) { + names.push_back(pos->first); + } + return Base::Tools::getUniqueName(CleanName, names); + } } void DynamicProperty::save(const Property* prop, Base::Writer& writer) const diff --git a/src/App/DynamicProperty.h b/src/App/DynamicProperty.h index 0e24c63ca566..29936fa66563 100644 --- a/src/App/DynamicProperty.h +++ b/src/App/DynamicProperty.h @@ -87,8 +87,6 @@ class AppExport DynamicProperty void getPropertyList(std::vector& List) const; /// get all properties with their names void getPropertyNamedList(std::vector>& List) const; - /// See PropertyContainer::visitProperties for semantics - void visitProperties(std::function visitor) const; /// Get all properties of the class (including parent) void getPropertyMap(std::map& Map) const; /// Find a dynamic property by its name diff --git a/src/App/Extension.cpp b/src/App/Extension.cpp index c942a0e5cb19..c84e613de49d 100644 --- a/src/App/Extension.cpp +++ b/src/App/Extension.cpp @@ -181,10 +181,6 @@ void Extension::extensionGetPropertyMap(std::map& Map) c extensionGetPropertyData().getPropertyMap(this, Map); } -void Extension::extensionVisitProperties(std::function visitor) const -{ - extensionGetPropertyData().visitProperties(this, visitor); -} void Extension::initExtensionSubclass(Base::Type& toInit, const char* ClassName, const char* ParentName, diff --git a/src/App/Extension.h b/src/App/Extension.h index b4395d870407..7c1545435e3b 100644 --- a/src/App/Extension.h +++ b/src/App/Extension.h @@ -254,8 +254,6 @@ class AppExport Extension virtual const char* extensionGetPropertyName(const Property* prop) const; /// get all properties of the class (including properties of the parent) virtual void extensionGetPropertyMap(std::map &Map) const; - /// See PropertyContainer::visitProperties for semantics - virtual void extensionVisitProperties(std::function visitor) const; /// get all properties of the class (including properties of the parent) virtual void extensionGetPropertyList(std::vector &List) const; diff --git a/src/App/ExtensionContainer.cpp b/src/App/ExtensionContainer.cpp index e16f7bcac931..2fd642990d17 100644 --- a/src/App/ExtensionContainer.cpp +++ b/src/App/ExtensionContainer.cpp @@ -176,13 +176,6 @@ void ExtensionContainer::getPropertyMap(std::map& Map) c entry.second->extensionGetPropertyMap(Map); } } -void ExtensionContainer::visitProperties(std::function visitor) const -{ - App::PropertyContainer::visitProperties(visitor); - for(const auto &entry : _extensions) { - entry.second->extensionVisitProperties(visitor); - }; -} Property* ExtensionContainer::getPropertyByName(const char* name) const { diff --git a/src/App/ExtensionContainer.h b/src/App/ExtensionContainer.h index 957c8a34d7fb..9fb5d6284fef 100644 --- a/src/App/ExtensionContainer.h +++ b/src/App/ExtensionContainer.h @@ -182,8 +182,6 @@ class AppExport ExtensionContainer: public App::PropertyContainer const char* getPropertyName(const Property* prop) const override; /// get all properties of the class (including properties of the parent) void getPropertyMap(std::map& Map) const override; - /// See PropertyContainer::visitProperties for semantics - void visitProperties(std::function visitor) const override; /// get all properties of the class (including properties of the parent) void getPropertyList(std::vector& List) const override; diff --git a/src/App/PropertyContainer.cpp b/src/App/PropertyContainer.cpp index 3b33044d76c1..10100e65a3ae 100644 --- a/src/App/PropertyContainer.cpp +++ b/src/App/PropertyContainer.cpp @@ -92,12 +92,6 @@ void PropertyContainer::getPropertyList(std::vector &List) const getPropertyData().getPropertyList(this,List); } -void PropertyContainer::visitProperties(std::function visitor) const -{ - dynamicProps.visitProperties(visitor); - getPropertyData().visitProperties(this, visitor); -} - void PropertyContainer::getPropertyNamedList(std::vector > &List) const { dynamicProps.getPropertyNamedList(List); @@ -625,15 +619,7 @@ void PropertyData::getPropertyNamedList(OffsetBase offsetBase, } } -void PropertyData::visitProperties(OffsetBase offsetBase, - std::function visitor) const -{ - merge(); - char* offset = offsetBase.getOffset(); - for (const auto& spec : propertyData.get<0>()) { - visitor(reinterpret_cast(spec.Offset + offset)); - }; -} + /** \defgroup PropFrame Property framework \ingroup APP diff --git a/src/App/PropertyContainer.h b/src/App/PropertyContainer.h index bbec1ab618f2..b8b5ac91ae1d 100644 --- a/src/App/PropertyContainer.h +++ b/src/App/PropertyContainer.h @@ -134,8 +134,6 @@ struct AppExport PropertyData void getPropertyMap(OffsetBase offsetBase,std::map &Map) const; void getPropertyList(OffsetBase offsetBase,std::vector &List) const; void getPropertyNamedList(OffsetBase offsetBase, std::vector > &List) const; - /// See PropertyContainer::visitProperties for semantics - void visitProperties(OffsetBase offsetBase, std::function visitor) const; void merge(PropertyData *other=nullptr) const; void split(PropertyData *other); @@ -174,11 +172,6 @@ class AppExport PropertyContainer: public Base::Persistence virtual void getPropertyMap(std::map &Map) const; /// get all properties of the class (including properties of the parent) virtual void getPropertyList(std::vector &List) const; - /// Call the given visitor for each property. The visiting order is undefined. - /// This method is necessary because PropertyContainer has no begin and end methods - /// and it is not practical to implement these. - /// What gets visited is undefined if the collection of Properties is changed during this call. - virtual void visitProperties(std::function visitor) const; /// get all properties with their names, may contain duplicates and aliases virtual void getPropertyNamedList(std::vector > &List) const; /// set the Status bit of all properties at once diff --git a/src/App/PropertyStandard.cpp b/src/App/PropertyStandard.cpp index 1d91a97edaea..696afa0ec496 100644 --- a/src/App/PropertyStandard.cpp +++ b/src/App/PropertyStandard.cpp @@ -1385,13 +1385,101 @@ void PropertyString::setValue(const char* newLabel) return; } + std::string _newLabel; + std::vector>> propChanges; - std::string label = newLabel; + std::string label; auto obj = dynamic_cast(getContainer()); bool commit = false; - if (obj && this == &obj->Label) { - propChanges = obj->onProposedLabelChange(label); + if (obj && obj->isAttachedToDocument() && this == &obj->Label + && (!obj->getDocument()->testStatus(App::Document::Restoring) + || obj->getDocument()->testStatus(App::Document::Importing)) + && !obj->getDocument()->isPerformingTransaction()) { + // allow object to control label change + + static ParameterGrp::handle _hPGrp; + if (!_hPGrp) { + _hPGrp = GetApplication().GetUserParameter().GetGroup("BaseApp"); + _hPGrp = _hPGrp->GetGroup("Preferences")->GetGroup("Document"); + } + App::Document* doc = obj->getDocument(); + if (doc && !_hPGrp->GetBool("DuplicateLabels") && !obj->allowDuplicateLabel()) { + std::vector objectLabels; + std::vector::const_iterator it; + std::vector objs = doc->getObjects(); + bool match = false; + for (it = objs.begin(); it != objs.end(); ++it) { + if (*it == obj) { + continue; // don't compare object with itself + } + std::string objLabel = (*it)->Label.getValue(); + if (!match && objLabel == newLabel) { + match = true; + } + objectLabels.push_back(objLabel); + } + + // make sure that there is a name conflict otherwise we don't have to do anything + if (match && *newLabel) { + label = newLabel; + // remove number from end to avoid lengthy names + size_t lastpos = label.length() - 1; + while (label[lastpos] >= 48 && label[lastpos] <= 57) { + // if 'lastpos' becomes 0 then all characters are digits. In this case we use + // the complete label again + if (lastpos == 0) { + lastpos = label.length() - 1; + break; + } + lastpos--; + } + + bool changed = false; + label = label.substr(0, lastpos + 1); + if (label != obj->getNameInDocument() + && boost::starts_with(obj->getNameInDocument(), label)) { + // In case the label has the same base name as object's + // internal name, use it as the label instead. + const char* objName = obj->getNameInDocument(); + const char* c = &objName[lastpos + 1]; + for (; *c; ++c) { + if (*c < 48 || *c > 57) { + break; + } + } + if (*c == 0 + && std::find(objectLabels.begin(), + objectLabels.end(), + obj->getNameInDocument()) + == objectLabels.end()) { + label = obj->getNameInDocument(); + changed = true; + } + } + if (!changed) { + label = Base::Tools::getUniqueName(label, objectLabels, 3); + } + } + } + + if (label.empty()) { + label = newLabel; + } + obj->onBeforeChangeLabel(label); + newLabel = label.c_str(); + + if (!obj->getDocument()->testStatus(App::Document::Restoring)) { + // Only update label reference if we are not restoring. When + // importing (which also counts as restoring), it is possible the + // new object changes its label. However, we cannot update label + // references here, because object restoring is not based on + // dependency order. It can only be done in afterRestore(). + // + // See PropertyLinkBase::restoreLabelReference() for more details. + propChanges = PropertyLinkBase::updateLabelReferences(obj, newLabel); + } + if (!propChanges.empty() && !GetApplication().getActiveTransaction()) { commit = true; std::ostringstream str; @@ -1401,7 +1489,7 @@ void PropertyString::setValue(const char* newLabel) } aboutToSetValue(); - _cValue = label; + _cValue = newLabel; hasSetValue(); for (auto& change : propChanges) { diff --git a/src/App/private/DocumentP.h b/src/App/private/DocumentP.h index a6006be3b8e7..64d3b6697d3f 100644 --- a/src/App/private/DocumentP.h +++ b/src/App/private/DocumentP.h @@ -30,7 +30,6 @@ #include #include #include -#include #include #include #include @@ -66,9 +65,6 @@ struct DocumentP std::vector objectArray; std::unordered_set touchedObjs; std::unordered_map objectMap; - Base::UniqueNameManager objectNameManager; - Base::UniqueNameManager objectLabelManager; - std::unordered_map objectLabelCounts; std::unordered_map objectIdMap; std::unordered_map partialLoadObjects; std::vector pendingRemove; @@ -133,8 +129,6 @@ struct DocumentP void clearDocument() { - objectLabelCounts.clear(); - objectLabelManager.clear(); objectArray.clear(); for (auto& v : objectMap) { v.second->setStatus(ObjectStatus::Destroy, true); @@ -142,7 +136,6 @@ struct DocumentP v.second = nullptr; } objectMap.clear(); - objectNameManager.clear(); objectIdMap.clear(); } diff --git a/src/Base/Reader.cpp b/src/Base/Reader.cpp index 2cbbf032d752..63b85bfa81a5 100644 --- a/src/Base/Reader.cpp +++ b/src/Base/Reader.cpp @@ -463,13 +463,14 @@ const char* Base::XMLReader::addFile(const char* Name, Base::Persistence* Object temp.Object = Object; FileList.push_back(temp); + FileNames.push_back(temp.FileName); return Name; } -bool Base::XMLReader::hasFilenames() const +const std::vector& Base::XMLReader::getFilenames() const { - return FileList.size() > 0; + return FileNames; } bool Base::XMLReader::hasReadFailed(const std::string& filename) const diff --git a/src/Base/Reader.h b/src/Base/Reader.h index 005114027da9..a11b1966a25b 100644 --- a/src/Base/Reader.h +++ b/src/Base/Reader.h @@ -251,8 +251,8 @@ class BaseExport XMLReader: public XERCES_CPP_NAMESPACE_QUALIFIER DefaultHandler const char* addFile(const char* Name, Base::Persistence* Object); /// process the requested file writes void readFiles(zipios::ZipInputStream& zipstream) const; - /// Returns whether reader has any registered filenames - bool hasFilenames() const; + /// get all registered file names + const std::vector& getFilenames() const; /// returns true if reading the file \a filename has failed bool hasReadFailed(const std::string& filename) const; bool isRegistered(Base::Persistence* Object) const; @@ -364,6 +364,7 @@ class BaseExport XMLReader: public XERCES_CPP_NAMESPACE_QUALIFIER DefaultHandler std::vector FileList; private: + std::vector FileNames; mutable std::vector FailedFiles; std::bitset<32> StatusBits; diff --git a/src/Base/Tools.cpp b/src/Base/Tools.cpp index 24c5856e7787..71f6021bee1e 100644 --- a/src/Base/Tools.cpp +++ b/src/Base/Tools.cpp @@ -33,214 +33,130 @@ #include "Interpreter.h" #include "Tools.h" -void Base::UniqueNameManager::PiecewiseSparseIntegerSet::Add(uint value) +namespace Base { - etype newSpan(value, 1); - iterator above = Spans.lower_bound(newSpan); - if (above != Spans.end() && above->first <= value) { - // The found span includes value so there is nothing to do as it is already in the set. - return; - } +struct string_comp +{ + // s1 and s2 must be numbers represented as string + bool operator()(const std::string& s1, const std::string& s2) + { + if (s1.size() < s2.size()) { + return true; + } + if (s1.size() > s2.size()) { + return false; + } - // Set below to the next span down, if any - iterator below; - if (above == Spans.begin()) { - below = Spans.end(); - } - else { - below = above; - --below; + return s1 < s2; } + static std::string increment(const std::string& s) + { + std::string n = s; + int addcarry = 1; + for (std::string::reverse_iterator it = n.rbegin(); it != n.rend(); ++it) { + if (addcarry == 0) { + break; + } + int d = *it - 48; + d = d + addcarry; + *it = ((d % 10) + 48); + addcarry = d / 10; + } + if (addcarry > 0) { + std::string b; + b.resize(1); + b[0] = addcarry + 48; + n = b + n; + } - if (above != Spans.end() && below != Spans.end() - && above->first - below->first + 1 == below->second) { - // below and above have a gap of exactly one between them, and this must be value - // so we coalesce the two spans (and the gap) into one. - newSpan = etype(below->first, below->second + above->second + 1); - Spans.erase(above); - above = Spans.erase(below); - } - if (below != Spans.end() && value - below->first == below->second) { - // value is adjacent to the end of below, so just expand below by one - newSpan = etype(below->first, below->second + 1); - above = Spans.erase(below); + return n; } - else if (above != Spans.end() && above->first - value == 1) { - // value is adjacent to the start of above, so juse expand above down by one - newSpan = etype(above->first - 1, above->second + 1); - above = Spans.erase(above); - } - // else value is not adjacent to any existing span, so just make anew span for it - Spans.insert(above, newSpan); -} -void Base::UniqueNameManager::PiecewiseSparseIntegerSet::Remove(uint value) -{ - etype newSpan(value, 1); - iterator at = Spans.lower_bound(newSpan); - if (at == Spans.end() || at->first > value) { - // The found span does not include value so there is nothing to do, as it is already not in - // the set. - return; - } - if (at->second == 1) { - // value is the only in this span, just remove the span - Spans.erase(at); - } - else if (at->first == value) { - // value is the first in this span, trim the lower end - etype replacement(at->first + 1, at->second - 1); - Spans.insert(Spans.erase(at), replacement); - } - else if (value - at->first == at->second - 1) { - // value is the last in this span, trim the upper end - etype replacement(at->first, at->second - 1); - Spans.insert(Spans.erase(at), replacement); - } - else { - // value is in the moddle of the span, so we must split it. - etype firstReplacement(at->first, value - at->first); - etype secondReplacement(value + 1, at->second - ((value + 1) - at->first)); - // Because erase returns the iterator after the erased element, and insert returns the - // iterator for the inserted item, we want to insert secondReplacement first. - Spans.insert(Spans.insert(Spans.erase(at), secondReplacement), firstReplacement); - } -} -bool Base::UniqueNameManager::PiecewiseSparseIntegerSet::Contains(uint value) const -{ - iterator at = Spans.lower_bound(etype(value, 1)); - return at != Spans.end() && at->first <= value; -} +}; -std::tuple Base::UniqueNameManager::decomposeName(const std::string& name, - std::string& baseNameOut, - std::string& nameSuffixOut) const +class unique_name { - auto suffixStart = std::make_reverse_iterator(GetNameSuffixStartPosition(name)); - nameSuffixOut = name.substr(name.crend() - suffixStart); - auto digitsStart = std::find_if_not(suffixStart, name.crend(), [](char c) { - return std::isdigit(c); - }); - baseNameOut = name.substr(0, name.crend() - digitsStart); - uint digitCount = digitsStart - suffixStart; - if (digitCount == 0) { - // No digits in name - return std::tuple {0, 0}; - } - else { - return std::tuple { - digitCount, - std::stoul(name.substr(name.crend() - digitsStart, digitCount))}; - } -} -void Base::UniqueNameManager::addExactName(const std::string& name) -{ - std::string baseName; - std::string nameSuffix; - uint digitCount; - uint digitsValue; - std::tie(digitCount, digitsValue) = decomposeName(name, baseName, nameSuffix); - baseName += nameSuffix; - auto baseNameEntry = UniqueSeeds.find(baseName); - if (baseNameEntry == UniqueSeeds.end()) { - // First use of baseName - baseNameEntry = - UniqueSeeds.emplace(baseName, std::vector()).first; - } - if (digitCount >= baseNameEntry->second.size()) { - // First use of this digitCount - baseNameEntry->second.resize(digitCount + 1); - } - PiecewiseSparseIntegerSet& baseNameAndDigitCountEntry = baseNameEntry->second[digitCount]; - // Name should not already be there - assert(!baseNameAndDigitCountEntry.Contains(digitsValue)); - baseNameAndDigitCountEntry.Add(digitsValue); -} -std::string Base::UniqueNameManager::makeUniqueName(const std::string& modelName, - std::size_t minDigits) const -{ - std::string namePrefix; - std::string nameSuffix; - decomposeName(modelName, namePrefix, nameSuffix); - std::string baseName = namePrefix + nameSuffix; - auto baseNameEntry = UniqueSeeds.find(baseName); - if (baseNameEntry == UniqueSeeds.end()) { - // First use of baseName, just return it with no unique digits - return baseName; - } - // We don't care about the digit count of the suggested name, we always use at least the most - // digits ever used before. - std::size_t digitCount = baseNameEntry->second.size() - 1; - uint digitsValue; - if (digitCount < minDigits) { - // Caller is asking for more digits than we have in any registered name. - // We start the longer digit string at 000...0001 even though we might have shorter strings - // with larger numeric values. - digitCount = minDigits; - digitsValue = 1; +public: + unique_name(std::string name, const std::vector& names, int padding) + : base_name {std::move(name)} + , padding {padding} + { + removeDigitsFromEnd(); + findHighestSuffix(names); + } + + std::string get() const + { + return appendSuffix(); + } + +private: + void removeDigitsFromEnd() + { + std::string::size_type pos = base_name.find_last_not_of("0123456789"); + if (pos != std::string::npos && (pos + 1) < base_name.size()) { + num_suffix = base_name.substr(pos + 1); + base_name.erase(pos + 1); + } } - else { - digitsValue = baseNameEntry->second[digitCount].Next(); + + void findHighestSuffix(const std::vector& names) + { + for (const auto& name : names) { + if (name.substr(0, base_name.length()) == base_name) { // same prefix + std::string suffix(name.substr(base_name.length())); + if (!suffix.empty()) { + std::string::size_type pos = suffix.find_first_not_of("0123456789"); + if (pos == std::string::npos) { + num_suffix = std::max(num_suffix, suffix, Base::string_comp()); + } + } + } + } } - std::string digits = std::to_string(digitsValue); - if (digitCount > digits.size()) { - namePrefix += std::string(digitCount - digits.size(), '0'); + + std::string appendSuffix() const + { + std::stringstream str; + str << base_name; + if (padding > 0) { + str.fill('0'); + str.width(padding); + } + str << Base::string_comp::increment(num_suffix); + return str.str(); } - return namePrefix + digits + nameSuffix; -} -void Base::UniqueNameManager::removeExactName(const std::string& name) +private: + std::string num_suffix; + std::string base_name; + int padding; +}; + +} // namespace Base + +std::string +Base::Tools::getUniqueName(const std::string& name, const std::vector& names, int pad) { - std::string baseName; - std::string nameSuffix; - uint digitCount; - uint digitsValue; - std::tie(digitCount, digitsValue) = decomposeName(name, baseName, nameSuffix); - baseName += nameSuffix; - auto baseNameEntry = UniqueSeeds.find(baseName); - if (baseNameEntry == UniqueSeeds.end()) { - // name must not be registered, so nothing to do. - return; - } - auto& digitValueSets = baseNameEntry->second; - if (digitCount >= digitValueSets.size()) { - // First use of this digitCount, name must not be registered, so nothing to do. - return; - } - digitValueSets[digitCount].Remove(digitsValue); - // an element of digitValueSets may now be newly empty and so may other elements below it - // Prune off all such trailing empty entries. - auto lastNonemptyEntry = - std::find_if(digitValueSets.crbegin(), digitValueSets.crend(), [](auto& it) { - return it.Any(); - }); - if (lastNonemptyEntry == digitValueSets.crend()) { - // All entries are empty, so the entire baseName can be forgotten. - UniqueSeeds.erase(baseName); - } - else { - digitValueSets.resize(digitValueSets.crend() - lastNonemptyEntry); + if (names.empty()) { + return name; } + + Base::unique_name unique(name, names, pad); + return unique.get(); } -bool Base::UniqueNameManager::containsName(const std::string& name) const +std::string Base::Tools::addNumber(const std::string& name, unsigned int num, int d) { - std::string baseName; - std::string nameSuffix; - uint digitCount; - uint digitsValue; - std::tie(digitCount, digitsValue) = decomposeName(name, baseName, nameSuffix); - baseName += nameSuffix; - auto baseNameEntry = UniqueSeeds.find(baseName); - if (baseNameEntry == UniqueSeeds.end()) { - // base name is not registered - return false; - } - if (digitCount >= baseNameEntry->second.size()) { - // First use of this digitCount, name must not be registered, so not in collection - return false; + std::stringstream str; + str << name; + if (d > 0) { + str.fill('0'); + str.width(d); } - return baseNameEntry->second[digitCount].Contains(digitsValue); + str << num; + return str.str(); } + std::string Base::Tools::getIdentifier(const std::string& name) { if (name.empty()) { diff --git a/src/Base/Tools.h b/src/Base/Tools.h index 1295475ba165..baf61e872e91 100644 --- a/src/Base/Tools.h +++ b/src/Base/Tools.h @@ -33,7 +33,6 @@ #include #include #include -#include #include #include @@ -265,100 +264,11 @@ class ConnectionBlocker // ---------------------------------------------------------------------------- - -class BaseExport UniqueNameManager -{ -protected: - // This method returns the position of the start of the suffix (or name.cend() if no - // suffix). It must return the same suffix lentgh (name.size() - returnValue) for both - // unique names (one containing digits) and the corresponding base name (with no digits). - virtual std::string::const_iterator GetNameSuffixStartPosition(const std::string& name) const - { - return name.cend(); - } - -private: - class PiecewiseSparseIntegerSet - { - public: - PiecewiseSparseIntegerSet() - {} - - private: - // Each pair being represents the span of integers from lowest to - // (lowest+count-1) inclusive - using etype = std::pair; - // This span comparer class is analogous to std::less and treats overlapping spans as being - // neither greater nor less than each other - class comparer - { - public: - bool operator()(const etype& lhs, const etype& rhs) const - { - // The equality case here is when lhs is below and directly adjacent to rhs. - return rhs.first - lhs.first >= lhs.second; - } - }; - // Spans is the set of spans. Adjacent spans are coalesced so there are always gaps between - // the entries. - std::set Spans; - using iterator = typename std::set::iterator; - using const_iterator = typename std::set::const_iterator; - - public: - void Add(uint value); - void Remove(uint value); - bool Contains(uint value) const; - bool Any() const - { - return Spans.size() != 0; - } - void Clear() - { - Spans.clear(); - } - uint Next() const - { - if (Spans.size() == 0) { - return 0; - } - iterator last = Spans.end(); - --last; - return last->first + last->second; - } - }; - // Keyed as UniqueSeeds[baseName][digitCount][digitValue] iff that seed is taken. - // We need the double-indexing so that Name01 and Name001 can both be indexed, although we only - // ever allocate off the longest for each name i.e. UniqueSeeds[baseName].size()-1 digits. - std::map> UniqueSeeds; - -public: - std::tuple decomposeName(const std::string& name, - std::string& baseNameOut, - std::string& nameSuffixOut) const; - - UniqueNameManager() - {} - - // Register a name in the collection. It is an error (detected only by assertions) to register a - // name more than once. The effect if undetected is that the second registration will have no - // effect - void addExactName(const std::string& name); - std::string makeUniqueName(const std::string& modelName, std::size_t minDigits = 0) const; - - // Remove a registered name so it can be generated again. - // Nothing happens if you try to remove a non-registered name. - void removeExactName(const std::string& name); - - bool containsName(const std::string& name) const; - - void clear() - { - UniqueSeeds.clear(); - } -}; struct BaseExport Tools { + static std::string + getUniqueName(const std::string&, const std::vector&, int d = 0); + static std::string addNumber(const std::string&, unsigned int, int d = 0); static std::string getIdentifier(const std::string&); static std::wstring widen(const std::string& str); static std::string narrow(const std::wstring& str); diff --git a/src/Base/Writer.cpp b/src/Base/Writer.cpp index 17aa16d5072f..d80af5a74326 100644 --- a/src/Base/Writer.cpp +++ b/src/Base/Writer.cpp @@ -247,19 +247,56 @@ std::string Writer::addFile(const char* Name, const Base::Persistence* Object) assert(!isForceXML()); FileEntry temp; - temp.FileName = Name ? Name : ""; - if (FileNameManager.containsName(temp.FileName)) { - temp.FileName = FileNameManager.makeUniqueName(temp.FileName); - } + temp.FileName = getUniqueFileName(Name); temp.Object = Object; FileList.push_back(temp); - FileNameManager.addExactName(temp.FileName); + + FileNames.push_back(temp.FileName); // return the unique file name return temp.FileName; } +std::string Writer::getUniqueFileName(const char* Name) +{ + // name in use? + std::string CleanName = (Name ? Name : ""); + std::vector::const_iterator pos; + pos = find(FileNames.begin(), FileNames.end(), CleanName); + + if (pos == FileNames.end()) { + // if not, name is OK + return CleanName; + } + + std::vector names; + names.reserve(FileNames.size()); + FileInfo fi(CleanName); + CleanName = fi.fileNamePure(); + std::string ext = fi.extension(); + for (pos = FileNames.begin(); pos != FileNames.end(); ++pos) { + fi.setFile(*pos); + std::string FileName = fi.fileNamePure(); + if (fi.extension() == ext) { + names.push_back(FileName); + } + } + + std::stringstream str; + str << Base::Tools::getUniqueName(CleanName, names); + if (!ext.empty()) { + str << "." << ext; + } + + return str.str(); +} + +const std::vector& Writer::getFilenames() const +{ + return FileNames; +} + void Writer::incInd() { if (indent < 1020) { diff --git a/src/Base/Writer.h b/src/Base/Writer.h index 0b5981581447..5ca61be9df12 100644 --- a/src/Base/Writer.h +++ b/src/Base/Writer.h @@ -39,8 +39,6 @@ #include #include -#include - #include "FileInfo.h" @@ -58,24 +56,6 @@ class Persistence; */ class BaseExport Writer { -private: - // This overrides UniqueNameManager's suffix-locating function so thet the last '.' and - // everything after it is considered suffix. - class UniqueFileNameManager: public UniqueNameManager - { - protected: - virtual std::string::const_iterator - GetNameSuffixStartPosition(const std::string& name) const override - { - // This is an awkward way to do this, because the FileInfo class only yields pieces of - // the path, not delimiter positions. We can't just use fi.extension().size() because - // both "xyz" and "xyz." would yield three; we need the length of the extension - // *including its delimiter* so we use the length difference between the fileName and - // fileNamePure. - FileInfo fi(name); - return name.end() - (fi.fileName().size() - fi.fileNamePure().size()); - } - }; public: Writer(); @@ -104,6 +84,8 @@ class BaseExport Writer std::string addFile(const char* Name, const Base::Persistence* Object); /// process the requested file storing virtual void writeFiles() = 0; + /// get all registered file names + const std::vector& getFilenames() const; /// Set mode void setMode(const std::string& mode); /// Set modes @@ -169,13 +151,14 @@ class BaseExport Writer std::string ObjectName; protected: + std::string getUniqueFileName(const char* Name); struct FileEntry { std::string FileName; const Base::Persistence* Object; }; std::vector FileList; - UniqueFileNameManager FileNameManager; + std::vector FileNames; std::vector Errors; std::set Modes; diff --git a/src/Gui/Document.cpp b/src/Gui/Document.cpp index e7df35552d0b..d75604d5b098 100644 --- a/src/Gui/Document.cpp +++ b/src/Gui/Document.cpp @@ -1938,7 +1938,7 @@ void Document::importObjects(const std::vector& obj, Base: localreader->readEndElement("Document"); // In the file GuiDocument.xml new data files might be added - if (localreader->hasFilenames()) + if (!localreader->getFilenames().empty()) reader.initLocalReader(localreader); } diff --git a/src/Gui/ViewProviderLink.cpp b/src/Gui/ViewProviderLink.cpp index 39447e29be82..a2cad7a67fe4 100644 --- a/src/Gui/ViewProviderLink.cpp +++ b/src/Gui/ViewProviderLink.cpp @@ -3408,16 +3408,7 @@ void ViewProviderLink::getPropertyMap(std::map &Map) } } -void ViewProviderLink::visitProperties(std::function visitor) const -{ - inherited::visitProperties(visitor); - if (childVp != nullptr) { - childVp->visitProperties(visitor); - } -} - -void ViewProviderLink::getPropertyList(std::vector& List) const -{ +void ViewProviderLink::getPropertyList(std::vector &List) const { std::map Map; getPropertyMap(Map); List.reserve(List.size()+Map.size()); diff --git a/src/Gui/ViewProviderLink.h b/src/Gui/ViewProviderLink.h index 67c355991cd8..fc296f256182 100644 --- a/src/Gui/ViewProviderLink.h +++ b/src/Gui/ViewProviderLink.h @@ -265,9 +265,7 @@ class GuiExport ViewProviderLink : public ViewProviderDocumentObject App::Property *getPropertyByName(const char* name) const override; void getPropertyMap(std::map &Map) const override; - /// See PropertyContainer::visitProperties for semantics - void visitProperties(std::function visitor) const override; - void getPropertyList(std::vector& List) const override; + void getPropertyList(std::vector &List) const override; ViewProviderDocumentObject *getLinkedViewProvider( std::string *subname=nullptr, bool recursive=false) const override; diff --git a/src/Mod/Spreadsheet/App/Sheet.cpp b/src/Mod/Spreadsheet/App/Sheet.cpp index 71d32b42e51b..0171fd1eee4b 100644 --- a/src/Mod/Spreadsheet/App/Sheet.cpp +++ b/src/Mod/Spreadsheet/App/Sheet.cpp @@ -872,17 +872,6 @@ void Sheet::getPropertyNamedList(std::vector>& } } -void Sheet::visitProperties(std::function visitor) const -{ - DocumentObject::visitProperties(visitor); - for (const auto& v : cells.aliasProp) { - auto prop = getProperty(v.first); - if (prop != nullptr) { - visitor(prop); - } - }; -} - void Sheet::touchCells(Range range) { do { @@ -1145,7 +1134,7 @@ DocumentObjectExecReturn* Sheet::execute() catch (std::exception&) { // TODO: evaluate using a more specific exception (not_a_dag) // Cycle detected; flag all with errors Base::Console().Error("Cyclic dependency detected in spreadsheet : %s\n", - getNameInDocument()); + *pcNameInDocument); std::ostringstream ss; ss << "Cyclic dependency"; int count = 0; diff --git a/src/Mod/Spreadsheet/App/Sheet.h b/src/Mod/Spreadsheet/App/Sheet.h index 217f4f7efea7..9b6ae0f6dc37 100644 --- a/src/Mod/Spreadsheet/App/Sheet.h +++ b/src/Mod/Spreadsheet/App/Sheet.h @@ -189,9 +189,6 @@ class SpreadsheetExport Sheet: public App::DocumentObject void getPropertyNamedList(std::vector>& List) const override; - /// See PropertyContainer::visitProperties for semantics - void visitProperties(std::function visitor) const override; - short mustExecute() const override; App::DocumentObjectExecReturn* execute() override; diff --git a/tests/src/Base/Tools.cpp b/tests/src/Base/Tools.cpp index fa219b31eed6..f2385433d335 100644 --- a/tests/src/Base/Tools.cpp +++ b/tests/src/Base/Tools.cpp @@ -5,58 +5,42 @@ // NOLINTBEGIN(cppcoreguidelines-*,readability-*) TEST(BaseToolsSuite, TestUniqueName1) { - EXPECT_EQ(Base::UniqueNameManager().makeUniqueName("Body"), "Body"); + EXPECT_EQ(Base::Tools::getUniqueName("Body", {}), "Body"); } TEST(BaseToolsSuite, TestUniqueName2) { - Base::UniqueNameManager manager; - manager.addExactName("Body"); - EXPECT_EQ(manager.makeUniqueName("Body", 1), "Body1"); + EXPECT_EQ(Base::Tools::getUniqueName("Body", {"Body"}, 1), "Body1"); } TEST(BaseToolsSuite, TestUniqueName3) { - Base::UniqueNameManager manager; - manager.addExactName("Body"); - EXPECT_EQ(manager.makeUniqueName("Body", 3), "Body001"); + EXPECT_EQ(Base::Tools::getUniqueName("Body", {"Body"}, 3), "Body001"); } TEST(BaseToolsSuite, TestUniqueName4) { - Base::UniqueNameManager manager; - manager.addExactName("Body001"); - EXPECT_EQ(manager.makeUniqueName("Body", 3), "Body002"); + EXPECT_EQ(Base::Tools::getUniqueName("Body", {"Body001"}, 3), "Body002"); } TEST(BaseToolsSuite, TestUniqueName5) { - Base::UniqueNameManager manager; - manager.addExactName("Body"); - manager.addExactName("Body001"); - EXPECT_EQ(manager.makeUniqueName("Body", 3), "Body002"); + EXPECT_EQ(Base::Tools::getUniqueName("Body", {"Body", "Body001"}, 3), "Body002"); } TEST(BaseToolsSuite, TestUniqueName6) { - Base::UniqueNameManager manager; - manager.addExactName("Body"); - manager.addExactName("Body001"); - EXPECT_EQ(manager.makeUniqueName("Body001", 3), "Body002"); + EXPECT_EQ(Base::Tools::getUniqueName("Body001", {"Body", "Body001"}, 3), "Body002"); } TEST(BaseToolsSuite, TestUniqueName7) { - Base::UniqueNameManager manager; - manager.addExactName("Body"); - EXPECT_EQ(manager.makeUniqueName("Body001", 3), "Body001"); + EXPECT_EQ(Base::Tools::getUniqueName("Body001", {"Body"}, 3), "Body002"); } TEST(BaseToolsSuite, TestUniqueName8) { - Base::UniqueNameManager manager; - manager.addExactName("Body"); - EXPECT_EQ(manager.makeUniqueName("Body12345", 3), "Body001"); + EXPECT_EQ(Base::Tools::getUniqueName("Body12345", {"Body"}, 3), "Body12346"); } TEST(Tools, TestIota) From 8fdbdccd8f3e8fbd88d89420cf3eeb95a7feb383 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sun, 15 Dec 2024 16:46:03 +0100 Subject: [PATCH 089/221] Core: Move LCS migration warning to Std_Open command --- src/App/Datums.cpp | 4 +- src/App/Datums.h | 4 +- src/App/Document.h | 1 + src/Gui/CommandDoc.cpp | 66 ++++++++++++++++++++---- src/Gui/ViewProviderCoordinateSystem.cpp | 44 ---------------- src/Gui/ViewProviderCoordinateSystem.h | 4 -- 6 files changed, 59 insertions(+), 64 deletions(-) diff --git a/src/App/Datums.cpp b/src/App/Datums.cpp index ab972e35067d..a551381c457f 100644 --- a/src/App/Datums.cpp +++ b/src/App/Datums.cpp @@ -309,8 +309,6 @@ void LocalCoordinateSystem::migrateXAxisPlacement() constexpr const double tolerance = 1e-5; auto features = OriginFeatures.getValues(); - migrated = false; - const auto& setupData = getSetupData(); for (auto* obj : features) { auto* feature = dynamic_cast (obj); @@ -320,7 +318,7 @@ void LocalCoordinateSystem::migrateXAxisPlacement() 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)); - migrated = true; + getDocument()->setStatus(App::Document::MigrateLCS, true); } break; } diff --git a/src/App/Datums.h b/src/App/Datums.h index 43c08a285e6c..b199ffebd8ef 100644 --- a/src/App/Datums.h +++ b/src/App/Datums.h @@ -200,13 +200,11 @@ class AppExport LocalCoordinateSystem: public App::GeoFeature virtual bool isOrigin() { return false; - }; + } // Axis links PropertyLinkList OriginFeatures; - bool migrated; - protected: /// Checks integrity of the LCS App::DocumentObjectExecReturn* execute() override; 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/Gui/CommandDoc.cpp b/src/Gui/CommandDoc.cpp index b38065d1514e..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); } } } diff --git a/src/Gui/ViewProviderCoordinateSystem.cpp b/src/Gui/ViewProviderCoordinateSystem.cpp index 45d870752403..689c51aef49b 100644 --- a/src/Gui/ViewProviderCoordinateSystem.cpp +++ b/src/Gui/ViewProviderCoordinateSystem.cpp @@ -85,50 +85,6 @@ void ViewProviderCoordinateSystem::attach(App::DocumentObject* pcObject) addDisplayMaskMode(pcGroupChildren, "Base"); } -void ViewProviderCoordinateSystem::finishRestoring() -{ - showMigrationDialog(); -} - -void ViewProviderCoordinateSystem::showMigrationDialog() -{ - auto lcs = dynamic_cast(getObject()); - if (!lcs || !lcs->migrated) { - return; - } - - static bool userWarned = false; - - if (userWarned || !App::GetApplication().GetParameterGroupByPath( - "User parameter:BaseApp/Preferences/View")->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 FreeCAD. " - "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 FreeCAD, the origin axes will be misaligned. Additionally, " - "if your file references these origin axes, your file will likely be broken."), - QMessageBox::Ok); - - QCheckBox* checkBox = new QCheckBox(QObject::tr("Don't show this warning again")); - msgBox.setCheckBox(checkBox); - - msgBox.exec(); - - // Update static flag if the user has seen the warning - userWarned = true; - - // Save preference if the user selects "Don't show again" - if (checkBox->isChecked()) { - App::GetApplication().GetParameterGroupByPath( - "User parameter:BaseApp/Preferences/View")->SetBool("ShowLCSMigrationWarning", false); - } -} - std::vector ViewProviderCoordinateSystem::getDisplayModes() const { return { "Base" }; diff --git a/src/Gui/ViewProviderCoordinateSystem.h b/src/Gui/ViewProviderCoordinateSystem.h index 2448bc6acfa8..02a392d4e1b4 100644 --- a/src/Gui/ViewProviderCoordinateSystem.h +++ b/src/Gui/ViewProviderCoordinateSystem.h @@ -83,11 +83,7 @@ class GuiExport ViewProviderCoordinateSystem : public ViewProviderGeoFeatureGrou void updateData(const App::Property*) override; bool onDelete(const std::vector &) override; - void finishRestoring() override; - private: - void showMigrationDialog(); - SoGroup *pcGroupChildren; std::map tempVisMap; From d1e65a47f3cc96ec9e98d18eb1ac59d5ffb1d36d Mon Sep 17 00:00:00 2001 From: marioalexis84 <53127171+marioalexis84@users.noreply.github.com> Date: Mon, 16 Dec 2024 13:40:02 -0300 Subject: [PATCH 090/221] Fem: Add smoothing filter extension to contours filter (#18088) * Fem: Add smoothing filter extension to contours filter --- src/Mod/Fem/App/AppFem.cpp | 2 + src/Mod/Fem/App/FemPostFilter.cpp | 103 +++++++++++++++++++++++++++- src/Mod/Fem/App/FemPostFilter.h | 36 ++++++++++ src/Mod/Fem/Gui/TaskPostBoxes.cpp | 37 ++++++++-- src/Mod/Fem/Gui/TaskPostBoxes.h | 2 + src/Mod/Fem/Gui/TaskPostContours.ui | 58 +++++++++++++--- 6 files changed, 221 insertions(+), 17 deletions(-) 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/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/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 - - - From 74abfd39d9e7314908807787ff8370c9b5c204f1 Mon Sep 17 00:00:00 2001 From: Syres916 <46537884+Syres916@users.noreply.github.com> Date: Fri, 13 Dec 2024 07:09:16 +0000 Subject: [PATCH 091/221] [Gui] Show Preferences page by name rather than index --- src/Gui/Application.h | 1 + src/Gui/ApplicationPy.cpp | 42 ++++++++++++++++++++---- src/Gui/DlgPreferencesImp.cpp | 32 ++++++++++++++++++ src/Gui/DlgPreferencesImp.h | 1 + src/Mod/BIM/importers/exportIFC.py | 2 +- src/Mod/BIM/importers/importIFCHelper.py | 2 +- src/Mod/Draft/importDXF.py | 2 +- 7 files changed, 73 insertions(+), 9 deletions(-) diff --git a/src/Gui/Application.h b/src/Gui/Application.h index 0e77b81d498c..09d832e1af28 100644 --- a/src/Gui/Application.h +++ b/src/Gui/Application.h @@ -354,6 +354,7 @@ class GuiExport Application 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); diff --git a/src/Gui/ApplicationPy.cpp b/src/Gui/ApplicationPy.cpp index f3215511e0b1..f7d0fe301fa2 100644 --- a/src/Gui/ApplicationPy.cpp +++ b/src/Gui/ApplicationPy.cpp @@ -345,6 +345,13 @@ PyMethodDef Application::Methods[] = { "\n" "grp: str\n Group to show.\n" "index : int\n Page index."}, + {"showPreferencesByName", (PyCFunction) Application::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) Application::sCreateViewer, METH_VARARGS, "createViewer(views=1, name) -> View3DInventorPy or AbstractSplitViewPy\n" "\n" @@ -1428,16 +1435,39 @@ PyObject* Application::sShowDownloads(PyObject * /*self*/, PyObject *args) Py_Return; } -PyObject* Application::sShowPreferences(PyObject * /*self*/, PyObject *args) +PyObject* Application::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* Application::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(); diff --git a/src/Gui/DlgPreferencesImp.cpp b/src/Gui/DlgPreferencesImp.cpp index 0aea952f0392..b2296a331e4b 100644 --- a/src/Gui/DlgPreferencesImp.cpp +++ b/src/Gui/DlgPreferencesImp.cpp @@ -503,6 +503,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/Mod/BIM/importers/exportIFC.py b/src/Mod/BIM/importers/exportIFC.py index e710208a64f8..39a3e594408e 100644 --- a/src/Mod/BIM/importers/exportIFC.py +++ b/src/Mod/BIM/importers/exportIFC.py @@ -111,7 +111,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 diff --git a/src/Mod/BIM/importers/importIFCHelper.py b/src/Mod/BIM/importers/importIFCHelper.py index deae2fec1928..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"), 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 From e6e281e29535bdde36d99cd42008534e5c06a5b2 Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Fri, 13 Dec 2024 19:45:17 -0600 Subject: [PATCH 092/221] Addon Manager: Arch->BIM in list of known internal WBs --- src/Mod/AddonManager/Addon.py | 2 +- .../AddonManagerTest/data/depends_on_all_workbenches.xml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Mod/AddonManager/Addon.py b/src/Mod/AddonManager/Addon.py index a6cac82e2644..87f7c75aefcc 100644 --- a/src/Mod/AddonManager/Addon.py +++ b/src/Mod/AddonManager/Addon.py @@ -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", 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 From fa327ec15298648ed44ca9bec7a37d722867827e Mon Sep 17 00:00:00 2001 From: WandererFan Date: Mon, 16 Dec 2024 11:47:08 -0500 Subject: [PATCH 093/221] [TD]Fix transparent area in pdf (fix #18443) (#18507) * [TD]fix transparent areas in pdf (#18443) * [TD]restore use of PDF/A-1b format - was not working in older versions of QPdfWriter --- src/Mod/TechDraw/Gui/PagePrinter.cpp | 8 ++++---- src/Mod/TechDraw/Gui/QGIViewBalloon.cpp | 1 + 2 files changed, 5 insertions(+), 4 deletions(-) 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/QGIViewBalloon.cpp b/src/Mod/TechDraw/Gui/QGIViewBalloon.cpp index acdda7b4c1a2..f137ebd864bc 100644 --- a/src/Mod/TechDraw/Gui/QGIViewBalloon.cpp +++ b/src/Mod/TechDraw/Gui/QGIViewBalloon.cpp @@ -925,6 +925,7 @@ void QGIViewBalloon::setPens(void) { balloonLines->setWidth(m_lineWidth); balloonShape->setWidth(m_lineWidth); + balloonShape->setFillColor(PreferencesGui::pageQColor()); arrow->setWidth(m_lineWidth); } From e607b5757e6f2ccbb3f806d974741672a88fb963 Mon Sep 17 00:00:00 2001 From: Florian Foinant-Willig Date: Sun, 8 Dec 2024 20:50:01 +0100 Subject: [PATCH 094/221] PartDesign: Add Std_ToggleFreeze to context menu --- src/Mod/PartDesign/Gui/Workbench.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/Mod/PartDesign/Gui/Workbench.cpp b/src/Mod/PartDesign/Gui/Workbench.cpp index bfacf1758d6e..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"; } From 6254cb910b57df9aa100578b999a8e103526bf8b Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Sun, 8 Dec 2024 17:47:06 -0600 Subject: [PATCH 095/221] Addon Manager: Correct run_interruptable_subprocess communicate() has to be called after a final kill() to get the output --- .../AddonManagerTest/app/test_utilities.py | 122 +++++++++++++++--- .../AddonManager/addonmanager_utilities.py | 24 +++- 2 files changed, 120 insertions(+), 26 deletions(-) diff --git a/src/Mod/AddonManager/AddonManagerTest/app/test_utilities.py b/src/Mod/AddonManager/AddonManagerTest/app/test_utilities.py index 63f5239358f9..688571cbf3f2 100644 --- a/src/Mod/AddonManager/AddonManagerTest/app/test_utilities.py +++ b/src/Mod/AddonManager/AddonManagerTest/app/test_utilities.py @@ -22,16 +22,26 @@ # *************************************************************************** import unittest +from unittest.mock import MagicMock, patch 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, + run_interruptable_subprocess, ) @@ -40,9 +50,7 @@ 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" - ) + pass @classmethod def tearDownClass(cls): @@ -59,7 +67,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 +77,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 +98,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) @@ -125,14 +133,88 @@ def test_get_assigned_string_literal(self): 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") - - 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 FreeCAD: + test_dir = os.path.join( + FreeCAD.getHomePath(), "Mod", "AddonManager", "AddonManagerTest", "data" + ) + good_file = os.path.join(test_dir, "good_macro_metadata.FCStd") + version = get_macro_version_from_file(good_file) + self.assertEqual(version, "1.2.3") + + bad_file = os.path.join(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(test_dir, "missing_macro_metadata.FCStd") + version = get_macro_version_from_file(empty_file) + 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_ten_times(self, mock_popen): + """Ten times is the limit for an error to be raised (e.g. the real timeout is ten seconds)""" + + def raises_first_ten_times(timeout=0): + raises_first_ten_times.counter += 1 + if not raises_first_ten_times.mock_access.kill.called: + if raises_first_ten_times.counter <= 10: + raise subprocess.TimeoutExpired("Test", timeout) + return "Mocked stdout", "Mocked stderr" + + raises_first_ten_times.counter = 0 + + mock_process = MagicMock() + mock_process.communicate = raises_first_ten_times + raises_first_ten_times.mock_access = mock_process + mock_process.returncode = None + mock_popen.return_value = mock_process + + with self.assertRaises(subprocess.CalledProcessError): + run_interruptable_subprocess(["arg0", "arg1"], 10) + + +if __name__ == "__main__": + unittest.main() diff --git a/src/Mod/AddonManager/addonmanager_utilities.py b/src/Mod/AddonManager/addonmanager_utilities.py index 8b3f2582f618..5e9a2d497819 100644 --- a/src/Mod/AddonManager/addonmanager_utilities.py +++ b/src/Mod/AddonManager/addonmanager_utilities.py @@ -38,9 +38,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 +398,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 +418,25 @@ def run_interruptable_subprocess(args) -> subprocess.CompletedProcess: stdout = "" stderr = "" return_code = None + counter = 0 while return_code is None: + counter += 1 try: - stdout, stderr = p.communicate(timeout=10) + stdout, stderr = p.communicate( + timeout=1 + ) # one second timeout allows interrupting the run once per second 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 counter >= 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 From b2619f339c398869aad2017f2bb05d42ab33df9d Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Sun, 8 Dec 2024 22:32:45 -0600 Subject: [PATCH 096/221] Addon Manager: PythonDeps Cleanup and Testing --- src/Mod/AddonManager/AddonManager.py | 2 +- .../AddonManagerTest/app/test_utilities.py | 31 ++- .../AddonManagerTest/gui/gui_mocks.py | 12 +- .../gui/test_python_deps_gui.py | 139 +++++++++++ src/Mod/AddonManager/CMakeLists.txt | 28 +-- .../addonmanager_freecad_interface.py | 15 +- ...ies.py => addonmanager_python_deps_gui.py} | 224 ++++++++++-------- .../AddonManager/addonmanager_utilities.py | 11 +- 8 files changed, 323 insertions(+), 139 deletions(-) create mode 100644 src/Mod/AddonManager/AddonManagerTest/gui/test_python_deps_gui.py rename src/Mod/AddonManager/{manage_python_dependencies.py => addonmanager_python_deps_gui.py} (75%) 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 688571cbf3f2..cc00fd8dfd87 100644 --- a/src/Mod/AddonManager/AddonManagerTest/app/test_utilities.py +++ b/src/Mod/AddonManager/AddonManagerTest/app/test_utilities.py @@ -194,26 +194,33 @@ def raises_first_five_times(timeout): self.assertEqual(result.returncode, 0) @patch("subprocess.Popen") - def test_run_interruptable_subprocess_timeout_ten_times(self, mock_popen): - """Ten times is the limit for an error to be raised (e.g. the real timeout is ten seconds)""" + def test_run_interruptable_subprocess_timeout_exceeded(self, mock_popen): + """Exceeding the set timeout gives a CalledProcessError exception""" - def raises_first_ten_times(timeout=0): - raises_first_ten_times.counter += 1 - if not raises_first_ten_times.mock_access.kill.called: - if raises_first_ten_times.counter <= 10: - raise subprocess.TimeoutExpired("Test", timeout) - return "Mocked stdout", "Mocked stderr" + 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 - raises_first_ten_times.counter = 0 + fake_time.time = 0.0 mock_process = MagicMock() - mock_process.communicate = raises_first_ten_times - raises_first_ten_times.mock_access = mock_process + 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): - run_interruptable_subprocess(["arg0", "arg1"], 10) + with patch("time.time", fake_time): + run_interruptable_subprocess(["arg0", "arg1"], 0.1) if __name__ == "__main__": 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..d376834d1c6a 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) 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 5e9a2d497819..517d0fbbd668 100644 --- a/src/Mod/AddonManager/addonmanager_utilities.py +++ b/src/Mod/AddonManager/addonmanager_utilities.py @@ -29,6 +29,7 @@ import shutil import stat import subprocess +import time import re import ctypes from typing import Optional, Any @@ -418,13 +419,11 @@ def run_interruptable_subprocess(args, timeout_secs: int = 10) -> subprocess.Com stdout = "" stderr = "" return_code = None - counter = 0 + start_time = time.time() while return_code is None: - counter += 1 try: - stdout, stderr = p.communicate( - timeout=1 - ) # one second timeout allows interrupting the run once per second + # one second timeout allows interrupting the run once per second + stdout, stderr = p.communicate(timeout=1) return_code = p.returncode except subprocess.TimeoutExpired: if ( @@ -433,7 +432,7 @@ def run_interruptable_subprocess(args, timeout_secs: int = 10) -> subprocess.Com ): p.kill() raise ProcessInterrupted() - if counter >= timeout_secs: # The real timeout + if time.time() - start_time >= timeout_secs: # The real timeout p.kill() stdout, stderr = p.communicate() return_code = -1 From 973ad7b5c87cc49169242770df1fe60de568e96e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ji=C5=99=C3=AD=20Pinkava?= Date: Mon, 9 Sep 2024 13:37:32 +0200 Subject: [PATCH 097/221] Sketcher: clean-up geometry history configuation Keep code almost 1:1 with LS3 branch, just ensure the variable is initialized and code is documented --- src/Mod/Sketcher/App/SketchObject.cpp | 5 +---- src/Mod/Sketcher/App/SketchObject.h | 3 ++- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/Mod/Sketcher/App/SketchObject.cpp b/src/Mod/Sketcher/App/SketchObject.cpp index a3f7336cbacb..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, 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; From 23354b57cbca98372fc999bead811eba0d4cf3de Mon Sep 17 00:00:00 2001 From: luzpaz Date: Mon, 16 Dec 2024 12:09:17 -0500 Subject: [PATCH 098/221] CAM: Linting Path/Post/Processor.py (#18539) Added various docstrings + fixed a typo --- src/Mod/CAM/Path/Post/Processor.py | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) 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)}") From a92acbd457f709d8523b88f83f7029cd075d3d34 Mon Sep 17 00:00:00 2001 From: wandererfan Date: Tue, 19 Nov 2024 18:59:39 -0500 Subject: [PATCH 099/221] [TD]fix leader autohorizontal on rotated base view --- src/Mod/TechDraw/App/DrawLeaderLine.cpp | 62 ++++++++++++++----------- src/Mod/TechDraw/App/DrawLeaderLine.h | 6 +-- src/Mod/TechDraw/Gui/QGIDecoration.cpp | 3 ++ src/Mod/TechDraw/Gui/QGILeaderLine.cpp | 20 ++++---- src/Mod/TechDraw/Gui/QGIWeldSymbol.cpp | 5 +- src/Mod/TechDraw/Gui/TaskLeaderLine.cpp | 40 +++++++++------- src/Mod/TechDraw/Gui/TaskLeaderLine.h | 2 +- 7 files changed, 75 insertions(+), 63 deletions(-) diff --git a/src/Mod/TechDraw/App/DrawLeaderLine.cpp b/src/Mod/TechDraw/App/DrawLeaderLine.cpp index 0e1f8c2dcefa..99b821382507 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,35 +195,39 @@ 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 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(); @@ -273,7 +270,7 @@ Base::Vector3d DrawLeaderLine::getTailPoint() const //! 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 +335,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 +374,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 +409,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 +440,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..427e07c7596c 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,7 @@ 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); private: diff --git a/src/Mod/TechDraw/Gui/QGIDecoration.cpp b/src/Mod/TechDraw/Gui/QGIDecoration.cpp index 8461d40539ec..f1c456a65d0d 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..e7c4ce2fb52c 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"; @@ -419,7 +416,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 +465,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 +478,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 +488,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 +501,19 @@ 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(); @@ -628,8 +624,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/QGIWeldSymbol.cpp b/src/Mod/TechDraw/Gui/QGIWeldSymbol.cpp index 7d61d7f39d13..929af6dd22bd 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 @@ -546,8 +547,8 @@ 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); } 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(); From 3cadb489d98f305c9cb9afb69b25c3349188b6b9 Mon Sep 17 00:00:00 2001 From: wandererfan Date: Sat, 23 Nov 2024 10:06:52 -0500 Subject: [PATCH 100/221] [TD]allow weld symbol on rotated leader --- src/Mod/TechDraw/App/DrawLeaderLine.cpp | 40 ++++- src/Mod/TechDraw/App/DrawLeaderLine.h | 4 + src/Mod/TechDraw/Gui/QGILeaderLine.cpp | 62 +++++-- src/Mod/TechDraw/Gui/QGILeaderLine.h | 1 + src/Mod/TechDraw/Gui/QGITile.cpp | 166 ++++++++++-------- src/Mod/TechDraw/Gui/QGITile.h | 53 +++--- src/Mod/TechDraw/Gui/QGIWeldSymbol.cpp | 223 ++++++++++++++++-------- src/Mod/TechDraw/Gui/QGIWeldSymbol.h | 17 +- 8 files changed, 358 insertions(+), 208 deletions(-) diff --git a/src/Mod/TechDraw/App/DrawLeaderLine.cpp b/src/Mod/TechDraw/App/DrawLeaderLine.cpp index 99b821382507..fad7be8e3e3c 100644 --- a/src/Mod/TechDraw/App/DrawLeaderLine.cpp +++ b/src/Mod/TechDraw/App/DrawLeaderLine.cpp @@ -226,45 +226,71 @@ std::vector DrawLeaderLine::horizLastSegment(const 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. diff --git a/src/Mod/TechDraw/App/DrawLeaderLine.h b/src/Mod/TechDraw/App/DrawLeaderLine.h index 427e07c7596c..0e1bb332589e 100644 --- a/src/Mod/TechDraw/App/DrawLeaderLine.h +++ b/src/Mod/TechDraw/App/DrawLeaderLine.h @@ -89,6 +89,10 @@ class TechDrawExport DrawLeaderLine : public TechDraw::DrawView 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/Gui/QGILeaderLine.cpp b/src/Mod/TechDraw/Gui/QGILeaderLine.cpp index e7c4ce2fb52c..0e87207234cc 100644 --- a/src/Mod/TechDraw/Gui/QGILeaderLine.cpp +++ b/src/Mod/TechDraw/Gui/QGILeaderLine.cpp @@ -258,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); @@ -287,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() @@ -334,7 +341,6 @@ void QGILeaderLine::updateView(bool update) void QGILeaderLine::draw() { - // Base::Console().Message("QGILL::draw()- %s\n", getViewObject()->getNameInDocument()); if (m_blockDraw) { return; } @@ -370,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()); @@ -570,6 +567,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; +} + //****************************************************************************** @@ -624,8 +648,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/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/QGIWeldSymbol.cpp b/src/Mod/TechDraw/Gui/QGIWeldSymbol.cpp index 929af6dd22bd..e20398e3d10f 100644 --- a/src/Mod/TechDraw/Gui/QGIWeldSymbol.cpp +++ b/src/Mod/TechDraw/Gui/QGIWeldSymbol.cpp @@ -29,6 +29,7 @@ #endif #include +#include #include #include @@ -58,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); @@ -86,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); @@ -95,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()); @@ -106,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(); @@ -121,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(); @@ -139,7 +136,6 @@ void QGIWeldSymbol::updateView(bool update) void QGIWeldSymbol::draw() { -// Base::Console().Message("QGIWS::draw()- %s\n", getFeature()->getNameInDocument()); if (!isVisible()) { return; } @@ -164,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()); @@ -185,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(); @@ -199,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); @@ -225,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())); @@ -237,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); @@ -267,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); @@ -293,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())); @@ -343,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; } } @@ -361,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); } @@ -404,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()); @@ -420,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()); @@ -437,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()); @@ -488,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() { @@ -495,7 +563,7 @@ QColor QGIWeldSymbol::prefNormalColor() return getNormalColor(); } -double QGIWeldSymbol::prefArrowSize() +double QGIWeldSymbol::prefArrowSize() const { return PreferencesGui::dimArrowSize(); } @@ -530,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; @@ -547,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; }; From a88f30877c57bc5dde1ea3620361ea364e30eacc Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Mon, 9 Dec 2024 10:49:47 -0600 Subject: [PATCH 101/221] Update src/Mod/TechDraw/Gui/QGILeaderLine.cpp --- src/Mod/TechDraw/Gui/QGILeaderLine.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Mod/TechDraw/Gui/QGILeaderLine.cpp b/src/Mod/TechDraw/Gui/QGILeaderLine.cpp index 0e87207234cc..40eab380e082 100644 --- a/src/Mod/TechDraw/Gui/QGILeaderLine.cpp +++ b/src/Mod/TechDraw/Gui/QGILeaderLine.cpp @@ -505,7 +505,6 @@ std::vector QGILeaderLine::getWayPointsFromFeature() if (qPoints.empty()) { Base::Console().Warning("QGILeaderLine::getWayPointsFromFeature - no points\n"); } - return qPoints; } From bbb5b45133883fe3dc81b031670814a423b4d071 Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 16 Dec 2024 14:58:35 +0100 Subject: [PATCH 102/221] Part: Fix segmentation fault in Feature::getExportElementName Calling ShapeType() on a null shape is not allowed and causes a segmentation fault. So, check beforehand if the shape is not null. Fixes #18537 --- src/Mod/Part/App/PartFeature.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Mod/Part/App/PartFeature.cpp b/src/Mod/Part/App/PartFeature.cpp index 65ae266de81d..31a5c3f9b3c4 100644 --- a/src/Mod/Part/App/PartFeature.cpp +++ b/src/Mod/Part/App/PartFeature.cpp @@ -365,7 +365,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; From e657ce9473841e5d09309532e313d4f60241cdbe Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Mon, 16 Dec 2024 18:22:26 +0100 Subject: [PATCH 103/221] TechDraw: Assembly exploded views : revert #17726 --- src/Mod/TechDraw/App/ShapeExtractor.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Mod/TechDraw/App/ShapeExtractor.cpp b/src/Mod/TechDraw/App/ShapeExtractor.cpp index 8acb890674cf..e7b97426e396 100644 --- a/src/Mod/TechDraw/App/ShapeExtractor.cpp +++ b/src/Mod/TechDraw/App/ShapeExtractor.cpp @@ -135,7 +135,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)); } From 2afdd58a888f2b34a201b38f68b867510063b272 Mon Sep 17 00:00:00 2001 From: Ladislav Michl Date: Mon, 16 Dec 2024 09:45:51 +0100 Subject: [PATCH 104/221] TechDraw: Ensure tolerance font size is > 0 --- src/Mod/TechDraw/Gui/QGIViewDimension.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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(); From db12b31b76bba19a9a7f6114be118fdada3e6339 Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Mon, 16 Dec 2024 18:24:36 +0100 Subject: [PATCH 105/221] Draft: Fix handling of coin nodes Fixes #18523. --- .../Draft/draftguitools/gui_subelements.py | 30 ++++++++++--------- src/Mod/Draft/draftguitools/gui_trackers.py | 14 ++++----- src/Mod/Draft/draftutils/gui_utils.py | 8 +++++ src/Mod/Draft/draftviewproviders/view_base.py | 9 +++--- 4 files changed, 36 insertions(+), 25 deletions(-) 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/draftutils/gui_utils.py b/src/Mod/Draft/draftutils/gui_utils.py index 3d965e8a87b2..16c28fe01040 100644 --- a/src/Mod/Draft/draftutils/gui_utils.py +++ b/src/Mod/Draft/draftutils/gui_utils.py @@ -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/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) From 1289997dfd604cb24f060f905f04ec3728d964e4 Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Fri, 13 Dec 2024 17:44:54 +0100 Subject: [PATCH 106/221] Placement: Adds a helper to print the value of the placement. --- src/Base/Placement.cpp | 21 +++++++++++++++++++++ src/Base/Placement.h | 5 +++++ 2 files changed, 26 insertions(+) diff --git a/src/Base/Placement.cpp b/src/Base/Placement.cpp index 6e335d495e72..d894abe3869a 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,22 @@ 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() +{ + Base::Vector3d pos = getPosition(); + Base::Rotation rot = getRotation(); + + Base::Vector3d axis; + double angle; + rot.getRawValue(axis, angle); + + 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); +} diff --git a/src/Base/Placement.h b/src/Base/Placement.h index 39c11d470f4c..ca4f47ce5fa4 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(); + private: Vector3 _pos; Base::Rotation _rot; From 82c7d013fb341ec5f83ec5943c94b2cf319bbb6a Mon Sep 17 00:00:00 2001 From: luzpaz Date: Tue, 17 Dec 2024 07:13:41 -0500 Subject: [PATCH 107/221] BIM: add docstrings to Arch.py Closes #18560 --- src/Mod/BIM/Arch.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/src/Mod/BIM/Arch.py b/src/Mod/BIM/Arch.py index e9537176d8a8..02af3dd92040 100644 --- a/src/Mod/BIM/Arch.py +++ b/src/Mod/BIM/Arch.py @@ -798,6 +798,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: @@ -890,6 +891,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 From b64549b348824653ef7880203ec6cefe031c5d1f Mon Sep 17 00:00:00 2001 From: marioalexis Date: Sat, 14 Dec 2024 17:04:21 -0300 Subject: [PATCH 108/221] Fem: Add electrostatic constraint symbol --- src/Mod/Fem/Gui/CMakeLists.txt | 1 + .../ConstraintElectrostaticPotential.iv | 73 +++++++++++++++++++ .../view_constraint_electrostaticpotential.py | 10 +++ 3 files changed, 84 insertions(+) create mode 100644 src/Mod/Fem/Gui/Resources/symbols/ConstraintElectrostaticPotential.iv 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/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/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") From 7d2c10f4c103e565c377b2bacd7388e60d2f6e4d Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Sat, 14 Dec 2024 16:30:05 +0100 Subject: [PATCH 109/221] BIM: fix Wiki links in BIM Tutorial --- src/Mod/BIM/bimcommands/BimTutorial.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Mod/BIM/bimcommands/BimTutorial.py b/src/Mod/BIM/bimcommands/BimTutorial.py index 1467b2786c32..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 From 8e0bf192df2e22f29904a80f5e91252eea193a27 Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Wed, 18 Dec 2024 10:10:31 +0100 Subject: [PATCH 110/221] Placement::tostring Fix fmt expression --- src/Base/Placement.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Base/Placement.cpp b/src/Base/Placement.cpp index d894abe3869a..f1cacf43a718 100644 --- a/src/Base/Placement.cpp +++ b/src/Base/Placement.cpp @@ -221,7 +221,7 @@ std::string Placement::toString() double angle; rot.getRawValue(axis, angle); - return fmt::format("position ({.1f}, {.1f}, {.1f}), axis ({.1f}, {.1f}, {.1f}), angle {.1f}\n", + return fmt::format("position ({:.1f}, {:.1f}, {:.1f}), axis ({:.1f}, {:.1f}, {:.1f}), angle {:.1f}\n", pos.x, pos.y, pos.z, From 44065bfff434456c4780d8c4234331e3acbd3b2d Mon Sep 17 00:00:00 2001 From: wmayer Date: Thu, 19 Dec 2024 11:13:28 +0100 Subject: [PATCH 111/221] Core: Format Placement::toString() and fix const correctness --- src/Base/Placement.cpp | 14 +++++--------- src/Base/Placement.h | 2 +- 2 files changed, 6 insertions(+), 10 deletions(-) diff --git a/src/Base/Placement.cpp b/src/Base/Placement.cpp index f1cacf43a718..e9b66932e186 100644 --- a/src/Base/Placement.cpp +++ b/src/Base/Placement.cpp @@ -212,21 +212,17 @@ Placement Placement::sclerp(const Placement& p0, const Placement& p1, double t, return p0 * trf.pow(t, shorten); } -std::string Placement::toString() +std::string Placement::toString() const { Base::Vector3d pos = getPosition(); Base::Rotation rot = getRotation(); Base::Vector3d axis; - double angle; + 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); + 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 ca4f47ce5fa4..41bafc4faab2 100644 --- a/src/Base/Placement.h +++ b/src/Base/Placement.h @@ -108,7 +108,7 @@ class BaseExport 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(); + std::string toString() const; private: Vector3 _pos; From 0609fa2335b0a4a3277875a986618c226a3edbe1 Mon Sep 17 00:00:00 2001 From: Jacob Oursland Date: Mon, 16 Dec 2024 16:28:38 -0800 Subject: [PATCH 112/221] pixi: Add run freecad configuration for Windows. Windows requires running from an installed FreeCAD, not simply the build environment. This commit performs the install and execution from the installation environment. --- pixi.toml | 1 + 1 file changed, 1 insertion(+) diff --git a/pixi.toml b/pixi.toml index 331b69c734fd..f2c17fa8fc4f 100644 --- a/pixi.toml +++ b/pixi.toml @@ -142,6 +142,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] From 401f01a9a3210ba224b81aeb2749a729d2d69828 Mon Sep 17 00:00:00 2001 From: marioalexis Date: Thu, 19 Dec 2024 01:27:15 -0300 Subject: [PATCH 113/221] Fem: Add preference entry to set Netgen log verbosity --- src/Mod/Fem/CMakeLists.txt | 7 + .../Fem/Gui/Resources/ui/DlgSettingsNetgen.ui | 43 +++- src/Mod/Fem/InitGui.py | 3 +- src/Mod/Fem/femmesh/netgentools.py | 210 ++++++++++-------- src/Mod/Fem/fempreferencepages/__init__.py | 1 + .../fempreferencepages/dlg_settings_netgen.py | 61 +++++ 6 files changed, 226 insertions(+), 99 deletions(-) create mode 100644 src/Mod/Fem/fempreferencepages/__init__.py create mode 100644 src/Mod/Fem/fempreferencepages/dlg_settings_netgen.py 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/Resources/ui/DlgSettingsNetgen.ui b/src/Mod/Fem/Gui/Resources/ui/DlgSettingsNetgen.ui index d803a33c5dd3..8e0699b552df 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,45 @@ + + + + Options + + + + + + + + Log verbosity + + + + + + + Level of verbosity printed on the task panel + + + QComboBox::AdjustToContents + + + LogVerbosity + + + Mod/Fem/Netgen + + + + + + + + + + + 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/netgentools.py b/src/Mod/Fem/femmesh/netgentools.py index f63a3a2f6ebd..1ed55efdfe70 100644 --- a/src/Mod/Fem/femmesh/netgentools.py +++ b/src/Mod/Fem/femmesh/netgentools.py @@ -33,6 +33,7 @@ import FreeCAD import Fem +from freecad import utils try: from netgen import occ, meshing, config as ng_config @@ -95,16 +96,12 @@ 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() + grp = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem/Netgen") self.mesh_params = { "brep_file": self.brep_file, "threads": self.obj.Threads, @@ -114,117 +111,138 @@ def prepare(self): "second_order_linear": self.obj.SecondOrderLinear, "result_file": self.result_file, "mesh_region": self.get_mesh_region(), + "verbosity": 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() 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..a5186dd1053c --- /dev/null +++ b/src/Mod/Fem/fempreferencepages/dlg_settings_netgen.py @@ -0,0 +1,61 @@ +# 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" + +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.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()) + + 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) From d9c117a1512671fd833fd4db51f820e2841682fb Mon Sep 17 00:00:00 2001 From: marioalexis Date: Thu, 19 Dec 2024 14:34:59 -0300 Subject: [PATCH 114/221] Fem: Add preference entry to set Netgen number of threads --- .../Fem/Gui/Resources/ui/DlgSettingsNetgen.ui | 31 +++++++++++++++++++ src/Mod/Fem/femmesh/netgentools.py | 10 +++--- src/Mod/Fem/femobjects/mesh_netgen.py | 9 ------ .../fempreferencepages/dlg_settings_netgen.py | 4 +++ 4 files changed, 40 insertions(+), 14 deletions(-) diff --git a/src/Mod/Fem/Gui/Resources/ui/DlgSettingsNetgen.ui b/src/Mod/Fem/Gui/Resources/ui/DlgSettingsNetgen.ui index 8e0699b552df..95d00eb5dc6d 100644 --- a/src/Mod/Fem/Gui/Resources/ui/DlgSettingsNetgen.ui +++ b/src/Mod/Fem/Gui/Resources/ui/DlgSettingsNetgen.ui @@ -79,6 +79,32 @@ + + + + Number of threads + + + + + + + Qt::AlignLeft|Qt::AlignTrailing|Qt::AlignVCenter + + + Number of threads used for meshing + + + 1 + + + NumOfThreads + + + Mod/Fem/Netgen + + + @@ -99,6 +125,11 @@ QCheckBox
Gui/PrefWidgets.h
+ + Gui::PrefSpinBox + QSpinBox +
Gui/PrefWidgets.h
+
diff --git a/src/Mod/Fem/femmesh/netgentools.py b/src/Mod/Fem/femmesh/netgentools.py index 1ed55efdfe70..488f9967711f 100644 --- a/src/Mod/Fem/femmesh/netgentools.py +++ b/src/Mod/Fem/femmesh/netgentools.py @@ -29,7 +29,7 @@ import shutil import sys import tempfile -from PySide.QtCore import QProcess +from PySide.QtCore import QProcess, QThread import FreeCAD import Fem @@ -84,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: @@ -101,17 +102,16 @@ def write_geom(self): def prepare(self): self.write_geom() - grp = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/Fem/Netgen") 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": grp.GetInt("LogVerbosity", 2), + "verbosity": self.param_grp.GetInt("LogVerbosity", 2), } with open(self.script_file, "w") as file: @@ -319,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, } 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/dlg_settings_netgen.py b/src/Mod/Fem/fempreferencepages/dlg_settings_netgen.py index a5186dd1053c..695f7252c2b6 100644 --- a/src/Mod/Fem/fempreferencepages/dlg_settings_netgen.py +++ b/src/Mod/Fem/fempreferencepages/dlg_settings_netgen.py @@ -25,6 +25,8 @@ __author__ = "Mario Passaglia" __url__ = "https://www.freecad.org" +from PySide.QtCore import QThread + import FreeCAD import FreeCADGui @@ -37,11 +39,13 @@ def __init__(self): 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 = { From ad414a1878634c82a773ec6a9f95a29f2914b625 Mon Sep 17 00:00:00 2001 From: marioalexis Date: Thu, 19 Dec 2024 14:36:12 -0300 Subject: [PATCH 115/221] Fem: Add preference entry to set Gmsh number of threads --- src/Mod/Fem/Gui/DlgSettingsFemGmsh.ui | 31 +++++++++++++++++++++++ src/Mod/Fem/Gui/DlgSettingsFemGmshImp.cpp | 7 +++++ src/Mod/Fem/femmesh/gmshtools.py | 13 +++++----- 3 files changed, 45 insertions(+), 6 deletions(-) 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/femmesh/gmshtools.py b/src/Mod/Fem/femmesh/gmshtools.py index 33093165b2d0..1ea5a11813cd 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 @@ -737,11 +737,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 From bfa0998eb1c8b96ef904e261741554e278906b21 Mon Sep 17 00:00:00 2001 From: marioalexis Date: Thu, 19 Dec 2024 14:38:12 -0300 Subject: [PATCH 116/221] Fem: Set default CalculiX number of threads to Qt idealThreadCount --- src/Mod/Fem/Gui/DlgSettingsFemCcx.ui | 4 ++-- src/Mod/Fem/Gui/DlgSettingsFemCcxImp.cpp | 8 +++++--- src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py | 7 ++----- 3 files changed, 9 insertions(+), 10 deletions(-) diff --git a/src/Mod/Fem/Gui/DlgSettingsFemCcx.ui b/src/Mod/Fem/Gui/DlgSettingsFemCcx.ui index 9289ba959a02..bde7af6c61f7 100644 --- a/src/Mod/Fem/Gui/DlgSettingsFemCcx.ui +++ b/src/Mod/Fem/Gui/DlgSettingsFemCcx.ui @@ -301,10 +301,10 @@ Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - Set to zero to automatically use maximum number of available cores + Number of threads used for analysis - 0 + 1 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/femtaskpanels/task_solver_ccxtools.py b/src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py index 55162bdb05e6..a55c7c9790a6 100644 --- a/src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py +++ b/src/Mod/Fem/femtaskpanels/task_solver_ccxtools.py @@ -381,11 +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", 0) - if num_cpu_pref >= 1: - env.insert("OMP_NUM_THREADS", str(num_cpu_pref)) - else: - env.insert("OMP_NUM_THREADS", str(QtCore.QThread.idealThreadCount())) + 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() From bcdfcce95c9b34a2053927663069f4ddb329dec4 Mon Sep 17 00:00:00 2001 From: JULIEN MASNADA Date: Fri, 20 Dec 2024 09:46:39 +0100 Subject: [PATCH 117/221] Improved SweetHome 3D importer (#17165) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fixed access to Addon::Metadat::Url attributes * Fixed invalid vector in distance calculation * SH3D importer initial version * Cleaned up and added baseboard * Make sure notificationWidth is properly enabled/disabled * Added furnitureGroup, color prefs, light weight mesh object * Allow to join walls * Prepare to join wall, improved status feedback * Removing trailing white space * SH3D importer initial version * Cleaned up and added baseboard * Make sure notificationWidth is properly enabled/disabled * Added furnitureGroup, color prefs, light weight mesh object * Allow to join walls * Prepare to join wall, improved status feedback * Removing trailing white space * fixing tipo, 80 charlines, etc * Adding a basic import test * Work in local but fails on pipeline. Commenting out. * Adding testcase and join wall path * Use ruled surface to fix failed sweep * Fixed faces order when joining walls * Fixed missing sample importer file * Allow to change pref just before import * Fixed excessive debug output * Allow to import from string. Test use embedded string * Fixed tipo in comment Co-authored-by: João Matos * Improved door import Also added coloring for wall section's edges when debuging * Moved debug init script to FreeCAD-Docker repo --------- Co-authored-by: João Matos Co-authored-by: Yorik van Havre --- src/Mod/BIM/CMakeLists.txt | 16 + src/Mod/BIM/Init.py | 2 +- src/Mod/BIM/InitGui.py | 1 + src/Mod/BIM/Resources/Arch.qrc | 1 + .../Resources/ui/preferences-sh3d-import.ui | 337 ++++ src/Mod/BIM/TestArch.py | 85 +- src/Mod/BIM/importers/importSH3D.py | 155 +- src/Mod/BIM/importers/importSH3DHelper.py | 1711 +++++++++++++++++ src/Mod/BIM/importers/samples/Sample.sh3d | Bin 0 -> 87826 bytes src/Mod/Draft/draftgeoutils/arcs.py | 18 +- src/Mod/Draft/draftgeoutils/general.py | 13 +- src/Mod/Draft/draftgeoutils/intersections.py | 37 +- src/Mod/Draft/draftgeoutils/offsets.py | 15 + src/Mod/Draft/draftutils/params.py | 3 +- 14 files changed, 2246 insertions(+), 148 deletions(-) create mode 100644 src/Mod/BIM/Resources/ui/preferences-sh3d-import.ui create mode 100644 src/Mod/BIM/importers/importSH3DHelper.py create mode 100644 src/Mod/BIM/importers/samples/Sample.sh3d diff --git a/src/Mod/BIM/CMakeLists.txt b/src/Mod/BIM/CMakeLists.txt index 1e50d4be6600..1607425e3664 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 @@ -198,6 +200,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} @@ -210,6 +216,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}) @@ -223,6 +233,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 fb104f377b55..2add05b4918d 100644 --- a/src/Mod/BIM/InitGui.py +++ b/src/Mod/BIM/InitGui.py @@ -677,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/Resources/Arch.qrc b/src/Mod/BIM/Resources/Arch.qrc index 04568cfbbab8..ec428c2d43e8 100644 --- a/src/Mod/BIM/Resources/Arch.qrc +++ b/src/Mod/BIM/Resources/Arch.qrc @@ -268,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/ui/preferences-sh3d-import.ui b/src/Mod/BIM/Resources/ui/preferences-sh3d-import.ui new file mode 100644 index 000000000000..79f891e788eb --- /dev/null +++ b/src/Mod/BIM/Resources/ui/preferences-sh3d-import.ui @@ -0,0 +1,337 @@ + + + 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 Site + + + Create Render Project (requires Render) + + + sh3dCreateRenderProject + + + Mod/Arch + + + + + + + Fit view while importing. + + + Fit view while importing + + + sh3dFitView + + + 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
+
+
+ + +
\ No newline at end of file diff --git a/src/Mod/BIM/TestArch.py b/src/Mod/BIM/TestArch.py index 27bbb9bff26f..a8042084b111 100644 --- a/src/Mod/BIM/TestArch.py +++ b/src/Mod/BIM/TestArch.py @@ -759,6 +759,20 @@ 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.Project + 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""" @@ -804,8 +818,77 @@ def testViewGeneration(self): view.Y = "15cm" App.ActiveDocument.recompute() assert True - def tearDown(self): App.closeDocument("ArchTest") pass + + +SH3D_HOME = """ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +""" 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..4d982fcfc789 --- /dev/null +++ b/src/Mod/BIM/importers/importSH3DHelper.py @@ -0,0 +1,1711 @@ +# *************************************************************************** +# * 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.project: + Project.create(doc, renderer="Povray", template="povray_standard.pov") + Gui.Selection.clearSelection() + Gui.Selection.addSelection(self.project) + 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"), + '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') + else: + 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) + 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) + 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/samples/Sample.sh3d b/src/Mod/BIM/importers/samples/Sample.sh3d new file mode 100644 index 0000000000000000000000000000000000000000..44ee9213355833b83d3cac93c223521c9a4eef41 GIT binary patch literal 87826 zcmeFa2V7KF(>Q!-3Wx}Zir7#=6j|6_R20|?f?X*J#IltlO<0Q9keJxJ*n1a5Blg}4 zwurq(qQ-(HioNp9xn;S#?CP34d4BKr9Vw6e&qQDvfGzx=(tRN~MW|>pZ1TQi@WQ=!1Z% z`^_w{7SWi!T$Zltl_*Q@mZBJ}QbuD9)fs8Y@tTY@6|PEGsFIcO$+2N6X&RL>6sr}R zmXeXIl%^!6q=jO(iSe;<8meHOK6ohcvkO);Qn?Ym($6tW~$noNVafAvNw0R`|i z0ez}0Jzax&eEkLz4DPU3#wV$gQA@hTC#&E_hi(b7Oqp+nCO*-(TYS0(U}~w7Gvm`z zk^xZjtu`Ru2UUT?-8NcY55Y!amff%h+6t28z0y)rRcV@`8ch0Cq7mv|@hXL?r#hGx zpF2V!lP9WZB=EpSM)3ClE@?0)vVEWovA$uNG!Q)8;;OwRGCn=N3SGP^og%u45s0A( zD-G0G3)DAW6Njgyq@@QWEBnSLD^s#)n7TSJok7=9=}WaqT?toZBhA!cZNAA43KUvU zBT*(-CDNE`B&ss2N|wn$BWg!YkavnaU6lsPOX`dU^Zx2Xdg?$UX{M$m4oyU=LNUfF z6?h10;rUfOgzOL?ps-CP1rE&BV09Sk)?Jngm#xxLQj%!wwbNCJDh2e*Zm2;TtmRjq zLI44Z+Uc5Yt*8&1ihbHgJPQ|dw?PGE5 z+_`hu>3g3@tJ2s_nnV6d1yj`GYo>^NAZ?7yG239QmO5UQsO+hZj8|m^V^*p08bw?e z%u)mWFc>q-hQFb~n8i>TTr|t+hFK><_e4rY36LpF>ohQ3sx(y^aVBY_I2<0CUCczBvdl?Fc(Wg0NhO5ll2VoGu> z_1iuf`gwsa1lhG;3(1Dy8$`wx4w$DawtE0i{0(Hn%5>2D1 zNew)KVV(GSUH1OCb{rzj>=0B0hF};p$2C18*$3H0AB7BrqLiiipvQzJt5e)dFPz1i z3|U}~S%+fQia3>GaC$}(cn@W|CQOzIMkYNJvq_U>^;E0VRhm$&w)Qt3uU1E6b+h6V z6FYYgC$CH6z&fd7u$n0ZICK;9n9vx^IXylpHBm*kq?asBMs}12F<324nheZ1VhRD? z1+>8lS#pwM`X0{aN3XN+^~=mLGmv~JPAU$_xpq(n>Xp9TWy-X8WyrpE{+RGtF7b!> zkdcN+=)P-EtIYD^RpuCmdIn~Nu2)v%l_3xUHt80Yfp9j4vMv0XSHcJWHKQ=WotTY& z9f7<{wwvWvr%f3%Y2+&^Z(lEKasV@{EbA4+&IMEt{pW?bVC>3=*^A1F@@Aj&MERM^ zXMec<*gWmkRk;3Gk{g2_{rKtbTy*_O%hIi={AADyCA$7(?gu$hzUmN)LHVhJ;tIO| zY0u1_{ZRR*Nn=p?g?+bvbD{i#5w)>$;ppvp=@b6uup5aZrSnWTB1C3Y$Z|N*1yR^ zbp6>c>rvUNO^`XdZl$;uMU)pOZ6wOq%xj=>jk>dcK;;@eyfzc%arM7ezERaCb2u=hn}>w(LEBFgiHH;MAaQ(RQGsWWgq zD%*s^uOFgv-i)?H`B_g&{?#?ApM_1C?Dv=0_9dDQWZL zPBRBk$W0@fOpH#W~A%4Nkx zsNBrGi#wFT71gb>>;Y+MvY{wY&mMig$-LvTMHZM@C}x=+pQ9pdG?sp5-4G~E%xCJY!7fubdXoKVa@GhV4m2?iIc>Lb&r03T67;e(MJQ4C8}p)ny@ zAdu^g@odTXsFzF=hx{H4Z)z#Qw?nhL!&p>u#7c z(awPMREU6p@c0x)Y-kJ3riKJGG|>t}&~zBoh%vY$LLmk{$j3wEOGm(Fpby@JT3}|= zs={HcA*$=-RZs}m{n2kCcy5kqdm0p5J;J#U=^?sJR`);(#_$6^$ZvjRqtbkfxFaV>RN4u|33Si7K@w zJf#m(=bmZtFc?-T;ihyH4Z^=!NcDoTn%QIw2fv1rzhKa$kZELzDY2n+q+L@1s9}tP zqy&R9t9UX!@U1~RJdqedRgD42E{+A`g+qp2-ZQWbL`ShUDUgYlO=8Bs%U?F(@2vr(9DN5}-K(5F5k>M&}>I)itx7qZR`=yJ!m84aLJlv?V;KS5>J-NKk0! zkZ}59&B)NO(7OTm?yYIPI-;MOCZmnra|07-zG(q{Jup z1#|C{9>-IHaJ|098QtsvLtUaF>l2@?QX->Eu)|)1HP^N8gsss)Zf4LJTVd zL&(9G|Hh|fQZEdHVP$pOf>hA4${&V+%0VK*s^;~BhwBe2wZP25Vkf4^l)*9u^f(xX zY2wmU>2WEE%Iwrm{shr3S=R8c8~g#C62mPHLup22uX(r+N+tG^C9CjwWM0!Ct4Me% z&_01!s4?be^)ZAY!=b@!I6gu?pU)GEAh-7IXNQ65P$d(t2vm$C;ey_?zkM6w=(@|Y z3*zEd+sd`1bRpq-{5>4?He3w)MA>5G;a+T5vfaPg8Gz z=9x=C1}1P5($*PCq}o7!z+TMt77DzDd~cx;{x?bS2oh;=SV*{>Dyvh2Fr+o0BYrh6 z-v<(VM1LdV%6gF5k%1cwpqwuHO+}HABtxZsv?nD>QDh0+GZj|`Ly9OEbD&CLaq-D0 zEtwAKeyU1~&0d`dxmX5-9Z{jZZi5n}1Rd~X^t+Png5p6)<2#fSp}2p$A4*#9aQOgN2F$T(ukkpZC!^-L#T7i+0h^=1IG2Jqy)%xBb~XZ>_Pkx_%_8F%g_vj%9M_)99I2DNKS9-mQz+CE*n zm{EiHGqZx(F2uvx6I(H05TEDSMKWrTEEc3QIgjMEXzy(X%#KHw@FkBfGHQ_Am%U~& zYLITM_>IX8q(7^ck72+d9a|Gnmr;ZCaP1B+Moocq30_bmfl-6>xzK9?qh{qVL-6%2 znc9o`#ro%47%+?PC*eiYUNdS?|Jq=2g;9h0;D(UrjGEaPhHn_eY{g8=QazYyb_sfT zCO4d^_pAxNwe{#3+jFWO&0|KK(ree~JuT2Jl+a5K=2a0Z^}UGG4Dn7zC2i0hzZ%)S#ob-kV*_I~ND zr>i{+PJ%uQ7?`{7SgWV=-I~tP>la;qYoOP6Lf`e#>tCVC&7cqVXJ7_Lpw~|kjBZ~> zc#>T%G44Xo(zOYQ9$mYEX#QbIbH-h$U6CK>GHOuUduJbI)FA%o+OfVPu7Ry%YH#$e zw|e$)0IqK{k-WrXqzueRrnH4AK5m-bU_C#G`XKm9U01G9am7lRlFQ<7xk?tF zBj&JV3W0>h5h#R8E=Q>lsTKbzSI&$^t{*V-zZ1kX5$~Jqf=P612D`39VD={S38Q9@ zyfd0;*J}a>lWSjm-1lu%__6HrJD zAL4;10%W?jx;~5a!Y8LK9(aS}Othf!1O z-9+4d-~nb$Ll@lh#yLif?TprV+xX$k8kG(1%VZahV7RlH&aM{V5xV;_?n2L!EcIv9 zAbR}Fn=oqZw@<|V1BNha9Hxcg(#ZCV8r1e+aT%kgUXxvT$emzDO@sc;@vi+_Flrjc zjK_P_X1e}H&NcB~Pnh&H&g+kdRh(tq)ntVw-nZd+MorUnJ|5kV>3o|$e~R~CD`LPj zbA5};bohf{lzmGWFbGfV8m4nW&q}zT&45AlB-iFLY8pA$z=zaj%Bx|_I6S?gkO70* zp1J%tMoqo7Tkz~LN=A)S&q_S2jT@t;_O%E+v)L;~jZNnOJmd6fMvdjR8F(gVE29R( z9r3Jg3<{<18ce{4*6UdXBYoa$Dn4v9BOsSPQi}1Bc|R~k3asC3&yCq*6ATWHjE)t>D77j@bL==F<}%5_{4kL88tWND)A{z-ZE-#do9MN zwQI_#xo0s8pV9Uvqo&+)2R`$D1*7JLH3!chl*y=ht5}K8j+n}*d2`(ppYv(}qvqAq zmiW9I^%*rUj>X~&R{zeZc{=PBzNjmoQS-3v0etbEd5oIhKm36&dH#t}bHjNFzVtRD zkd|Ip*BD=x_kjU(>PcIC*(HW;kshggS+8bKWVcuZX6rTQ>fqBhEDNs0{ zQL}uEJ+y)m6RWh=6PJx42Qs!fqBk}VtnT1H;kJ6H6{4; zy%vm`8Q#tDsRv3KHItKTyXO z9jl%dc%^5qZc7782K@%yFlWFVxFy!*Sl~Vg^>w&P)GRAw(1TJSc=ei`$&BGrK;Mu_ zc=qz!RnH1ISg;$6KH?964yLt=wVFb+;3K-;sG?9By`~;MDy4`~qy8Ylb62)w)TFe0M!eI~SPJp<;*kVATHFFBF}{OQGjIXhHMmtLOs2v1{11=4FPy5K3y$U%D3z8oLCl-av)ojHfcF(VM^Z#RCymCPtbdRy?P zuBRqo`ZJ>)DZ&%QjELY_kMKxl)I`wJ=kr}gyAaJinbDUNwW}L5LX)Dlhccr$X~~hv zc;_ZeDIX2mkK;^lEtkoULv0=dX2;I=xR@DTNVhkf ziwl?$h;&<1Pn^q)Qlwi?I_gGx0MiO@%Zzpa&m6pUKc+sTXL&HACW4;k%*aZ*_sUDW zDKq*a+SQmDp-GPh?Zq4RZ^>vyiR&5^3BzPH%9J*TIGLUUMP&z~wl_5uh!InP4hW`d ze#4!Z-*Erd{05pgMK{6+t(ytP9MOt_Fqk6LPCW!;PHAZUfKDaMmZlF)f`zYX@d}s} z(Zt0o2BVpbV9YW*C>hom)W{Cgz!DZH4<*Y(i83)Ep$N)Gs{%BbBV%467$!W?Qfq4M z0yNWX6Rb=jS26@>00~v4r7#e7NXS!UX)rbT^_dMVAX=b8w~skPQHQSl$|Ob2RG9{r z`6g>Hudl9;p->RJC*XNiywg&F+EEPCCt9vDNpaBD>e6D3mV%@G9Z3E#sbYgxd=qTZ zU@g8%5E3yEQj5HSkOHD$i*_yrU0|sd5`~D%7O+He375r}D3mOTKp|o&L?RVepcF{> z5*abTBUB~84a202bsMM>O`_DPnj9hIdHre0@*5qVKY=L}SZ+d2p`Zq2p%EsvtRWMv zwk1};7?~4{Pw~N3YFS3229_)#5m1~#4}}ltEv)sZnnOZMz-z|IV2OGJBFV$>OeVSQ zMk^B%6~bkyT|UFqYgq82U~s>thTQOg+G3rZ8UUQ}2NXoN%&f!~E~n>!uu9+yf`VGC z68$p!1?E`@mWu^qv4jU{0XAO*^DGLnge6wNj0;!H=L!^Ru3E__r>_ukW&v*C;_8!Z zm%<_g^dV52ZLiKu^qk$q)As%~+LUUTPGhTJR*fweu=pZ{fF%}4L})%m!Q}~+90gyg zs}6`ZCVl@LZ9)#vCgR9h0*(kKcVuh@OD1ANk;ehG<*H!TkFQG`QdKQ&@cW;m4H7y^ znMfvMNw{(u&?e!tK*k)FP@xnnxFR-WOAK@)M4$8nDcgUJHVK=@Rm;^J7FPySVSF)P z#F9xkpm}_un#r48u&=V%iOgc2bageX#~fi{I)%#w-KJeEu* zW{bppIa?wU=*kq)Mt>0R{*$z!?z0tr-9ca1(bswObrO9YLSMwya&3{gK!6ay#BJre zy`8UAv)O76D1}fd1_R57Syd&64ZU3;5=wYVkx)p^s-i}by?rBSE%fw5pdIMLXd!`m zyA%M3O0X`34Mp_)t!}SSs-fF+p`WXG;05>`CCsSv`5+aph%ey@6+)h#`r^xTF&yYX zB0z-FL_!rsWX^w_NP$eQ=CQ>n1q`~vWph~)AtY8gd_djrKiV;i-=I7kLl{l zKgCIyL{~^eJQ0g60}Ibr!!)#nFHo^W5~YwQ5sNqyeM3MH3522#Q=$K(oJ1N@0bk~p z=+{SWu{K>KE|}NW)m^b#Ae4c#VyWeF$o`6ja+X9SLn{K<0=81gQHuq7YJogdoBjP0 z(2NZFBiY=kq|S{ht@x){FNPGgK*CkCxB>~J+rb@x4Hk=7JT`|b5i9v@@UptLgs^c) zM|7y&Uq!7+GVnje<8?~EVvE{^{Jm*W08gS8@Wp721(yx(R>+6>4YrEUl1PLiSh4_< zA3T)-YEJ;Q6vZST8Pq~6bYm+d+}*UL_*zIJU@JhL3N*zc2FJivgCkQzPgBVSDmF)^ z;IkEaZl7QsA_lpCAc!PJSJ0`cK!CXq@ej~}3ckcQn}F5^L=rAvDdX}L5QEB5#|G;o zQ>!>EIk-&~S0Y!bIC@TicIw2_fdbn45F9Y}P~y=Xbkz%exuLK6x|G235w1e0fb}C1 z9vEu@R{=x_I3N_BQUbr^K##6akg}tmOQ;Z-8XZay^1orD4G;*yB3I1@+Jvy01q`)P z#*%Y|LY9!nk+C^)fmkiq(;7q^T53%g?0@^m?fh|>}{TThn%0S@}>5~z}>cruQf3o(#fh?GsjlFJ2h7KhDM@+3-y z1RP&=0;ND0N++T}0^jxnu=tn!^&bhtk*q^>DdkH^XTl(XSfUbg`7#zy z&IRYK)G$L16SFD~9|CK!NLP~yN)g3C)qmSN^VBK0hOs3yIuofdTApeyC(6W6qB56|tkz|TL=pi^jLTU< zt{lZ00vPX!6f%~Q%atoZvH5a^zFxzk0ep8Z(sN8Y6t;v=N=&${ze&3;ZAuyNl>N&!#8m+|#XFpg{nTGRlM4grkvxS$GrHdtS= z0%CXxM<5r0w_rmCL{DcC-+(?MhDXf$$M_}`ao8%60ET8V5x6de1lBr;xS*>L6e+}V zHc!SA>(K`CB=`pMWQOjD%)e`ykP=QnU-Qw|3~h0_wn$u9t}A4!|HjLaj$ll6S zauy7yVZ8>7q`BbhWUx9`w+(0|NRWlULH-iBzmZ8o{iG_$M0Ob6h2miSycet}=BZ%( z1A55=y%fVrV~H3Xu|xnKLdaD>^s5(K1+~bVy4#WP?@;@1Vua;fWrnG8ARSd z7GI%~K|VylWeLCy@wi+*TdCH|4I{Bt*VH+NXoQ{oO&0NGX!5TLFz}OtEd^9leCy&i_+ghr`;{5#fbLI z{VkNlCO9oR4s3<{Tj=^}QAs3!3sIC75$r$vtC);z6x5=I?Sg+5wUG^%TGX)Z^6#J~ zc4BIgY4>CP9hBM~h+4F0AL4%kW0kCgqQ8odxwleFAlhO1_Ymr-H|$NN@M+IHqqf{p zXKvAk32l@%4U*VJZ5k-C#o9Dba{skyu+-*k3Yc+tf*W~S12M1c=NTLvC=!eKd`~y} zCAJxrb6UJS16`~-oPu_30*sKXlxeTehDk~Q{@pJ%Vo9w9xu1$iR!Nt(69=K$3rvOTgaxaxy)Tw)QBK%6aysNzV3V0{Hp#W;M9 z2tFiGi$D>z2oG1n7PH9@MJX9>FezjN9@UBCaQPA+n1lz30EJvJm**pd9FM0PB9kxV z`oL5vs1lrS=jSQ$;R|^JF@sRP045v6JOKE9LQxRp7O(X4G_ei~}-|Bb!RG>%r6 z-}lJ9N`9s+@i8htsxum}oz#_oqx?+cXm$C0kKC)|XUa0DD*5SIPvi0v{Cn-EX&kLC zzweQImHbSLcIdc8Pkxk?$o@zAMFR7`SbC=Mv%2)YN9tA5GcDqwrKc0Q7?a(h?WqGd-~Q%E5gH>i{db;SB_8e%9+Vsv$}evdj-iPf|Y zP8(UR;3%=`*jc(C6UYsFNgbj7oBFD0Y&Ia&?@)#+p_a$P)Z-y7Oh}Nl!Bl#H%*N4|{)%gr zrBR#oP{vgtVv8g~cdutamDNRO%IeW7(NT6&D>I!ej*i>pn3#rR$cN{{fpupR zuIPVLKBjTHx{>{Bay4bya+O?Z(b0WTN3QgQ4bk8Kf?QeuQ#*iT`B1(C5vvv&W=~z{? zK9#ukuNY9mM%!=h3Z(lIvk!ic+^ghgTF<2oF2uN`kf;Y!axv8Z3{R8%DHDgrXv%)jDmx0h zeT?@*E*0C56CnR=Kcto&8(5G`Emi*7f@FGm^FOp6*)*0`?}nyq8?G)uQ?}1C1W3z> zGNd})kV_9o$ZkmbzJI6-{$CcLX)LWS!0!=!RSz_+-_mweDK^Unob@I9pwg-y{DjIhxjewQ|(!h`Pce-J;go{@eSb31^DYhLIVWnwIn?@2m96l#@oP^or&I)sKzy=l?(5*fa(hP%IM;h%vx!6OL9f%5I%*OpAgLC2dgu z@AqR<&X%Fs#*9i#6BFH!Y33O8H#%t(dQ##$IQQRJ;cAKq$1T9=7rk1wVeDCGFSvF3c9ffn<* z04RoM5u6tB!GOS;@al|)6Xbk^U@QnQF`RKBG}v4|dK3>0l0a}GL2k;I1w z_J;)I0%O2(8G0`C8KICvHdw?H!-Iu}_$+|6krEy{%L6@F00T9NkZtI}ASSST$j~A{ z5nzW?=?%3Q4s-K?GyEt(M1}xPcr!pEoKEZ`5(vnqh&iA%aNeFFI3b9OP4Q67L%Irz zQJvNB{sLedu`=J!6V9`Rc2P%p>4;b$5`oI_NzRDHTpu`09ae4|z=w2(%Ox5NhvOpU z=NY6=EJn&t>MBSBDWO5x!3uFOT_ipM7t}{=nA6aixFQLu)Dn@?1KS>Ozq=vX!~FQkg3mLh6w{V5DNaG;XhD+l&0LZXg93D-u0XU`|CigruD?07iFU3XJO91^}siB$x&xktTFC%CLM37o6{g zOci0a02^T^sy~rK**yx(cvCr)C8YsLJ5e1Wo3hLloN-~WDN9eb!?<+Wr01X;Vq9I= zq$@(Zd5~>2u7MD15YCN)Gpf??;vD2HsorV4k3i@G?ib$kMIj`6odHt=Z$u#dIYFTD zUJOU+k?{cuXVfgfDaBO4K?2f7qMB6T1tdfSLppcLbQvHJ&afi`A`%~MBdX&=Pa+~L z5|FkL)dA^{jes+5t;O0HkOVYl{$Up%8B&s9l!2)JSZ#z#!Ws2XMEF9)yab?ek0;hf z(IlWz7YZ+3LP0qRMVp7}1VV2jV|)^jG!TX)LW~$lAi_9&1C{Z(gFzT1`3cid9hXik zzY-Ja^6e{8mRLs;RM=*yolL<}L7<@_i>{)OQKf+(P|Vaj<1wn3(qlqga2`D}3kHH{ zs#}nT;43jS-OWgJ#)ER*eoIC92A->92S8nn3>tLI%2x& z5gct3s%Z;lM=5kPE31KVD8o#lqa|YijNEMFQ zhj+oi8;9Uc1@J~MA-vK=sSv3Z|DDVRu_lboriQdI$b|Fp4Gp^Y(oQNcmoE?@uGFsYfN?mPiZn3DfERD+ajW_Wl7Wci6iR_sQ!iM5Ks<)jR#P|y zZ5f~ih>TnHZ zpdfi<02wI)I{yS=KAUSOlSYY@%2|rU97yMhfY;Tj(@_!;^cJxg*i#)&0(M-;Clh31 zHgJ(=D4T^;5ssmyvrilzDjAT25MAN1xug>lLuAZliw)=!you9?2MKLLUZ5=CvJK@I z!R!FPs5~j0kqfyeo&k{|?u<*74cAp(*Wz>^j#m3 zkgrXl34Mg<6$;gP2PgRYz-zro%ONqWbh^kSz#g86V<=~>OC4m`(3r{~b&R%3!2Ju^ z90T1;hjS>9g-p32d69CUIu0Dc0htv;nP^(BguGDTBa%S!wVF2Rs)+=2P{8LK5E#6M z$%i=q7_6KGvJH^zGQeMfSOAG^xK2J5Y$Kd5Z3s>%LIX>3G$9f5!Q!C9DymV3GP00O zhb$+uIdIeo903i%nE^o1CrI22$&d|U6p83_<(V1ZRJEDXWyoSpFPOzX7Nad4i z%7It(0?h`xB%d#UJTILBC(@)Mc#)_9gfKh@K~VhW05V8n83LmPfw;{;3>S`=hW=$pDlnWus!eGF%rwG`nnBi}v>(j9Q~5_OXa`_5@L)9V z5sJYq6HNiN0KW>+Zgrs`;{t&=1qU32_f{Kfi2x-{sCb!3_6ooz8Ndf>$bm^d3Ln@S zP$5GsgrotF3kg9A5L_X=bIAZcH2&ZVs9_)YCO)v*P-iBRgkVdw2#o^5z(pt$lf51g z8hJ1ehJ?UBYDNSGPsUmTGk4I*wH*cJ!GSdfdMM1aL98dHWlXZ#01Js+9gjm#JyWtX zp#A^@4xeHmsR;%ojPmHHL(+^fs#`p;YheFqIHSr6uMD6T1W@Zfswou@MJy1yQcdMR zuYz|J8cQQiR&apl zFz7O%&|FA@!ITbV(_uX718=%EfDeVrT7wP|J*cU{mO!Y<5y3n^)e_)<7z~~PgfLqH zev1TSgU3aoN;M8bdKnsQKZjou+awb&?YP~rh*+#%v1%__la=zrB3jb`Ftk_}!tPC=5wGoTJ= zbSQ*SmzJ_obwF+laz)gd1DKg36wH9$pnx0RDncVPsyc@KSfBDM60l(qwHQ)N zD%vN74lgy)0Sq&%@f+UuN#r?byT|2#xrG-+8-N7=gfbnJ?_hHwXoNt)03em?pdSt@%oRcS zTm9Kowu5pqY?yaJhQI(IxCA2KLD(q>+d!U>f2ocTMnFWugMtJ8b0Bo921g$ghvIBL zF(@^_8CW|)raZodjLdmZrqMWYJTm7|HH%}cwLCKGL5GrTl7EJ51E?~}dr+>;xI}o` z#0S|HO2`HnLnS_F85`FdSeysZls2j(RS|~0)p7E*NYKMk+7_i&3<1()5pY_Pt4R;M zKB;*G9K{0z&n5XrStetdBtE5dqz+0b85z()a_JV8^+R)5M)F)}Tu5jgK^?6_)f++T z9W`_{k`2+p1)kbSHcy8%@D4_DgLG2~mm@ZsY2-8c2B8u-5(811ju6oNso^9jk?0E<&jh&+hrv0!=wE!0Y;^f4A~ai2@!Bcvr;^*QzPJvCb=MvAp9<=>ku9o%bLM^ z(vjb#yuXpeFO7{f0+4Dlme8ZgBl`{vw22I%A@(twD>RmH)M1{`X!eqp1))+XUuZZN zsv}u=cf66zDy1jX;E%}LLHKH*4G@A6K_AuFs<{Swil~DxdjD!i^jg=m_5rPzWnkDs z_%r@mS9^G^t28B9qe|A`@v*9OO}bfcY(u4P6)RGemL8vy+|CVl?%LY+fY-UUb7R|v zg#@rTEb_K?ZaoCS(SmN>!vnhcrgc{4q{`*d!707i?Bv)8KU-Twk+-MYfJk^=Z}>A# zkr`ZNV_0tGsLHFAWtc;k;Lu>q%pAj%@E=zB1arhQ6oZFiW|$>Fa-r%OW*?wTk*hG} z0jM#nyn&6utZSeTd|TUD*R-~?x3#vmwRfmp+rD;f2S+>jwzqSv<5btVu2UTs7gtvo zmzFJBv}oz6{g~NUTie*$)UvUuWnZgyEqh0M_&C-j5Y%;XtOFlMm--Eyot+!hN4LAW zHgE3Myt(#%&&mUsqqW&$tD6>PEiiLOGYdzv$|Kk`3^TVdGed2pKW63@mR2=tLM8gp zweT--!2vTjH?xHQEG#Un;I{>4=4fuwoa1B}&|6m5s>Kkl^XTa{mIb!lbg)lYy;Ave z>F;Uv9f_OF(FY!eP?9$VIQ6b8vmDZ5I(M}5vcNv2^2+O&orM{YXW@u-!d_0Z$nE(4 z1ztOWZRt=OGoSj*0_$y$4azgiZN0Q+nVXq^8OX&2Yi;dMsD6X`j-8q!$*3>XO|V7yErdz zu63*O)@`hhPe0h&8EZW{A*7pGq2S((Q=>l3!_2!zCQkf(_*&AU7L1| z$sSc&Yv!wgS0}iSu~Ftf*>;XK>_(pHe=PBHg$XRKG_qH@8ojc+;rX5Nz9l~}7zGb*w7T((1VhdCvqKF!^U>f9XMhZmI} zUi2wy+#si@G~c(Ko`uGq-ByzFtS=TapqBT}%-zjCCIML^mVCbQ~2c~4+LZ>&-$1*7}LI!$8CUqvi)s~m-k-|8o$862vGA6^UYeN6Fx5PXXzFeuh zBG<*-vDs$~b2xxG+nINmg&;6@%h^X-FYWGxS^JmG!Yng}jhnmF+^vhnYpi$6JCa7& zq&SDJR}+>x^Y{SOko|!J8*#4#c9zKmgYept6{aE$nQ!1beVj-9+E z@}6OvG%RQOgS1oOV=Zv|EGr*n!itESxdkUC)xYMTYU$>{zPL2i!odyrfgNz})vOY8 z9|?WdA{Uclm|G3EUS_#&(~db{OKV_DEi6Y{+1+}5t4n6O*X)i}K&MyW;vo z<2kQ0w*3S%GFLsu*#^*TSJGMf; ze$rIe4!3r-$>zpByxb}NA@@S0{Pc_-neFQk#F zk3CX<{mhFc%U6#(sM^wUS#OuTnhq_dxlO8Tjg4u}_d8@8fcays&2r7mEbyh~4why9 zj@BOLSfGa)=9mj#)-~bJ#($}qrF~7Z#xd7rSgwNuXWGhW=ejKp)X!^d7UJfDHMavT zcQeDT0=D;vWC{rss@?+G7L?*?soR*8izI1^E!*-)#~ zk7ut~Jz33v-q_Vo@nL<&M%OE&T4lWw?!7W$V-3I8_a1%OJ=wl#(?!KQE3x?P%`R`> zs`2xwQ?Q}k#$%4F_jd8D*SUS{^W+^J7Aq>Tx#vqAwg*0XlJo1GH6Qzy2fb3CD_xQ< zc+`33i1w^fFHKR>pw~llvUfaQKA=a&3$OTr*B9S=b0WKsc;l+0kK zbKB-7T%OI{23H<8nbUULl1;b!hu=Jy@Yuccyq|tbOKlJk`OBQg?Wc|CT-B$NgAj8?{9?Ev{FWPD_`$x|QK$tlb)eOINsn zNWoBImX1pgnAz39azUi27-qMoZ?V z_s;q0bC>=*-h0HXSvGSZRv39Ie!|9p$i}WiRt6ubH>&BrymxIM4o-3pnsRzk?QkE(6zVSD}E*M}?&h~Hi5Iqpe`KAl*);Ob z)Xb(E*1hWxrHb0n5c^Rza`)zxH;?MJdN%fgx@5-oU7unVnI-t@ZdYpG7{`0HZ=q` zfBfZv@bmCR!>7zkxX>|wX5oE-hwnX(bsYinkmvXKIXU9f+rH$_E z*`TR?C6-b?cw+7K+d@kobXdGFt8b4wKGC}b9%sKS*|Pd<(W7PjD=w;@pY6vtzHzSp z%Ja_yoPxOB13gNXuX9!Aop|=1%UOGD??EfK`Zt3t99vHxl4k2w6kO`Q)VtIy1`j?^ zIvp!>!x}?4Jg;?&@vQ=v-U(WZFKA(bjcM&ZD;e|mKkAL;j-KK<$ofD)tDmexT3R%! zzt|reJ;~fb>|x!_3=0Wy+g8_Qf@O<9%%2VaTRPa;f>G*?9T)?q26td%0T$-d0xZs1 zTjmbJeuf|r?28-vW!pU09R9Ji9)zKgz$}Ta+Vv^!?!^mJA3u9q|MI@Ir}joZxqdvh zm_4S!ACHwsVd6?UbUpR}Paq9o>JV;^a^38=jm$EH!w3m!a@9O9ytY6$}6n zAsoyi2K$7$*19=rE!I32vwU%3(c`|GbEXI1-mrYTEb?S;@85;d>*9wm=(zpyzL+Q5 zFYW&{VrusR`C_jZpN9Kd=JadJozlDJl>A55{E+2WSLL{ez1Z?9_}Jpp z^_=?jIQpYchaMT8iSb?YZqI3=DZX;Z?#jkv4?>+vtnX&NY=1lN{MJ{Tdy{P*44Hm7 zzx}M}iloH!&6j2$6NJy+rU>=ga{A=+lEU`RW6JZ_4=A+a_qw-B(^3^uyveop^cC*c zX5!v`W0$q>w{E9b^ZpZ(Cth#6Y0K#?ijpYqy=D7e^ZK_eiaL3Ttz7-H_u7YlM7!`> zZf$t%#8FM3($x=_A6E{E+hAom-*I`ZR2S#GIxVe1aJkq3e~?Zx2JXZhB6n~s7{?R^7|1R zDzS67Ci1srKke&Tyse$4i{pyMtV!7wErWcfbSs~?)xFef2k%Prge`N`Gd+@q+ZNb_ zY_sx=5v&`*^$lxV>{Mcx*Bv6Gu{@_U&pOSW=6)^iYE$_E`tXZqC z)pl1EKNw+~G$JIX)lWU{&uFPW851xt%#ZtV#(Q`F84dkTZ`~cYmDba7+?P#}U`GmEjGhP&IPFSBX zC3DN7!Qs<844xDh)o-&hvhZft7uz?D=l6Fku%6W=Y+d~mcJq>s-KZB+5fe9fn;_PE zqet8DGp$0z0}~hJycf4gO3Y6A`B#s14p-Ja8~LkOc-+gmABJ-84~_m5Q<3w0U_shY z-j%I$4xT8P@b3Km<(XdXMyU%+6stGv8!Na}RQh<;s;(X8tdCk%>@dF8)zVy7C+RqU z>%9t?KkP*R+6e+DQu00Cv;NKjZ*5&vpH{K{Y1gjvJP; zdyOfrx2#QF%sd*iv>D`vp=dhI4U;Q!ArdzqEm-@ro4FVZ>(;5w}2ph6oj62GqO9_nGRE-)rLYNS1F%%ba>`l-#m?o^=LlI_}yi zDZY34)Xj(OHk|K%C1_Re!gZyO?`{{qekJMf%lvJXSWVT0=#12T-QIEDu-f@$c2?AP zIW}|PtOj=v_v_v=Xvo?Qb4oe{l&==w@9B5r!;>kW%5QIRxpL)LM7PNsqEGsDOxQA| zXY8WH;~evsVrcQ272|%Wms{pmKE!fCX~KXH^Tcge-YyRM?9CGuUpaX7_~hZyEvIzbo7w)( zk)ooV9ZvPw;Ocn(&)1K`|BODoDC+EwtGw5*d@y5CV{12AjY*D;F|7GgR}46dnLWW0 zGdoVKy>Z6-mM;eMXcxVBNqM_#Z2706Rr_1NiuJxcq0`I_u4k?seE1G9wWG<<;1AB6+MgSU9)ENbxXu{t90WOgOCZr+=xNy8gfWXiAaja7K9 z%Jesanm3bve>jQ2UUF~CiO(gg3Gv>(*e#1tI zvAfP~d&|4GbJxNrs?&o`-McpXnD?YVr9YkC-g?uBlZjdDj^-D4JaVnB+FxouP1+bU zzvw2n#LV)>p)eJKnz1k}WakF>A217^=aD%hWRkht%*du^yX;83J#}Z!wazoA%}e42 z-aNW?NzE?z2G2ZS_N>FUt{2kRO!Qf>xNFhXem|UE)OeJ9%f*+AoA27) zcr$z9N$1w*jz$*_^?P-B-Qq@-n0mTdK*o@>+n(1ywtd|?-lZecR;eCuYSg;aDQ0|8 z*Aj6H$F*f{4!sTx>IIP}`qX*l2wpk}b0A6%7H$q;5HO5mhZ7Z*m_N#>p>fFpvti@l zHkVv*$X08?Qjq`KW9SkL>xnX-@X=z-%EB76WKRypwpq{UGUfKx(9%a`$A=HeDc{p@ zYkv5GRl~$r?{8^$ckA_t!lb9xPx?N7@!(11#4da9rl0%$!`b}-uDC zyE(lk%?lfARXBE;_m&^0FP?pP!tF-4rS&`RI(cb%%b~&tj|X^P7Xwb$sLPQ*Pc;lsp>T`PhIjV>@k{!aBL-az@;aikHhX6;fqG@T`(*Cqaf7t^sL;wy#pR~SPss9^is^iKMov2 z4a|P(#K>0{Uw0aKZPoLYPgXsf>KnbAKWFASO~>uO7nckcwM|isz54h{-*@c?J-zX| z67!6yH#8=Az%PG9<|joB;1}$#XSHQpk3PSR{b}(ZpQi6?a4P@liJz7)*&G=&_+4N) z?(2onWDVH1>vrIjws_pplLZbkR@X(YG4r^JE*I1Z6Z;ih^^IjcR5iMlDBsuW z=JHyFN!LYJ8vAw4=ljYtBwNczc3Awy`iAYg{q4)PaGq~nxUFu>(6|ZpMLUKpn%rgb zBddv)tTE%*yC&2Y9o=|m+^6o(+^6+k>$R(5(6ltu3No8lUc1mmgu;H3@ z^wG#oD`lH*G!J@qTpbZFoD`L>+%*5mzWc)#6{KwnI=Q~Td_j})A4?ebx#@0|{_u5Z}TEU(M3dY4ueIJx+n z+lLl%EoWE-Pa2xIc+#Z-mkOVjE03<2-Q(H1lP`CkED>$GT(oNE`QtZV`}Uvx`@#(M z#hG8EUF=hwpJ<|5rf(i_Xk_T{l7$}Ew?7=%cyO`rv>9HH#@}k`7o~EV(P3Vl*&9PI#;gAb{^ewqm^kVDr#+^4!nll)md}mcs;i$4R6DdS07z|8Ir6BV4U2u~<9;2VQK9Z0U>m;a5UvVYv?j2Df8lHQajX()8=EKfl#Sop z{<_SpeaykG=ZcRe&8jzG>-M~QM`p5=8Q#SX*^5ufu2^+gUUH##dPrAShvJCyYp1r_ z>RIB~ZRg9#sgd!mUU9GAT(Nulr_8XO53XN)s@l#kheTt^sm?L{oagbaD;`{KmN$J; zudEJtavNKkgRO9T<8Z(^WMuG6<+|Y8kgbm|PmOAQ(|z9Kb{D(4&Ybvquj`A*lERx$ z3%xEo-uc*|`=PQoWh=T2bpJiu^Nfe}>5B5mm%-2M9X*E%PR^@WeCXWqPfO|*Zhqr2 z;mzrH+?0{t{BFlZ=D{q%WGTU zZlzanjQ6&{I?cNmJ8V4@;J)Zt?B+(BRhg>bnC9xpk}YjQ&IiYM#ZQZ$?|sqv+QTFl zb>g^F={w)rzh2L^9MU>mJ2Foi8KlHt_)H( zn0fe$y)!xwtP@k;3d6 z>e8J1rMr$5mgGOvY*^Da?yc|pn7r$;5i5C3e+yK$bK7vH>t^Mv9IM?~DN^q-JDN1e z%i2D(?}?{%O1xsXMhCfE?{nkJPZK@7uM}_}A88bMU$&s_^|1G?eK+J>J9P7?^QjL@ z3&OW7T-5emyTVS~$Ads&jyay~mBSm|P8hh{d!r)w!qo@D8G);w_FcBIPu?)s*uD)ClHMmKyx(*~ zI`N0edo`?k_dDdw-R7RWv*Cr!1FYM>P}{y~(yacyO%Eb_$?nFTKe6QA`IjHqL$9p+ zb?f|`y~j^qS-bdf%83Q}zq~)cA%+*`5djIbbYZt`iQZ|4OKiJ;p7i>6e(GntfhXgZ zUE98{{=LUP#J8MWEc_#G@X*H@bxM{9yl$@fY&-2t!LeigZ}d7b_F+ix8k4MRT40kb zhdGVLT01-C=2}lmbue@AFtf58w<`21FfB!@9sLTAzQ~R`REQBlp?Gw7&T0P!~JD`R(CIu9~jbb|+_KgeInQ&ri8M zQJ{IT>r4AJ_c)r_kqeSM${yZ%967;j|GLZXo%*YLgdh8u8Qq!o426a>@Q6`6^`LQ(7_m2ws6q zHVa3OVi=`Br^DER@Qz2lM^d!rJK|Skz>7Ed-;#|u5gXPAqSx8iGHWUTs-;P()5qct(b z5_g7X&R|D8!{MKO%2xX>*9}v v+h(0M6b=nsRu9HEe$rXlE^Iy710MpwX3ZG7CQ zRt)Tr`Pc_4NR1YCL z8rwFhU~WpC49jD)OI>NZ&ai98 z%GGMtD_lQ}A(vd)*tLoGb5~+M-13u$bU3_~} z4EDS!fx_ka=~DPe_S&Fdzn7xYo=`w z5fJ}RzxzOlUvg4U!Tgz1+p%o}8JtDX797E|xRvAzC@$+<&qF(~hc#7UA#2F%d$a*WRd8GxnOFMv^1nt=c_2n(lASIk`S~ zu5j4Sv$NOH5%I2UqJJz+u>_fsGtTbJHL5j{=el=y}uwES*y9zpi^#9nhYJnU(oeGl9S#oM_$*St=yBBJ&cYg ztF+(Qz^6yU12FYy?eVmCP~B&a;#P#>frl9fY~RR{(Pb0+9b@*>B~yvt>wAJ_cF#i9 zx+9&dImIlRlr>taStiIm6+4)@4+i6}AB17gXX#l!KOzb~+7#jmzgP9=UXP^fc(zNA&)3AoqgD+sisr%@; zuYY0W5~|J1Ue0!?s~4GHA|PJUkt$dt0#2&_wMo8|f!HN^MtYAz7t$oeC9kj{)7rz9^%4x=HDC%0 zO+M^D=zXysLp|RUnt0d4QHvbOZG9I+SL#LAJc#N$u7;a>r%LU*zE$3~Ozz#vgxcjn zzlMt3;98vIla^_GRcNamLGIJm&PKn4V8Ythuj%ILn7-}Evs-!QWpo$r-AFmT6+ah8 zS|)`D5$ff|m_;v4guh^9dd~#B;eZ5C29T!Uj^cpzE%%1Z?_W-7Vg6IOM3=*sjskRk+aURmIYTquuWwa#g~`9IF{_17D={z};8nKmF{c zI~`G9j$r#**?rTvDtn%o=TPIm;Ei}%oL#&P>rB6^e9|CbI(q-fv>e&91iailfphZ< z4f^R(*=Ve4$%*Qd38@;(dJWRM?GKJ^%FC3Ys`{Q=$C1cW{>*h^XmzaD$>ppNxf8P18_6P%)OdXupMZ%; zB~v0THPd^lm@|Ns0L~wPDE~)7sObO@;Hw0px%GMt1mcK!bOH1LbQ6?F9}y$U5eWhn z!P)D6zwk4s)uQoK|KQ^dr?l0?u_FZWOiU@{{t2gRw0ypR`;vG8WT<&@1JL^q=|Slg zx8B8o9s|B&=GvneV5m~Xe9(9cOj_-@|7SiAn3T9#p99#05fpbDo<#c#p78A5&$S-& zCEE<0si(KhM%V&f>J(Q=+}uqr)^(K7f#k(uH^!h7#*qQ|dK8wEP<6u z+p7a*G{NvXwq#j`{7^Ulo~ff6sfdmIOD7Whl2jieZ%M)|vqj}tqph5t@p!+S#fKhF z%q78Unq`MmR#``%uBNFz{GM`9*v+XD_4K|2b#n>BT+aKmq@zP`?j|Qp(<{jGRs;Hn z`r9SXd&zkcQZF00HJqm%n}f^yPfH`uynRL$j_y6ns40^w37Bkc(+xTZJg7qzc6rbA z{kUaSSA>Uw!~Rs@bGi?nMB>mrNX*pgBT~;S+FIHSdV=Owf1;*K!&~qd^dj`TV!aXi zF9@fMOc#mV`J;ZN;f7Q3Q>iZv&fP(lpCo*ucq7;FdW$3G!b(6WA-;U*C5^}Z2lS%c z*AD1unGAk&YEm%?{nPiUI5_?T#pKd60p1WmtOtPad( zxbd5euEs}Bc(yUG(G(I6yC;>>aB^ezTZN)GfrVHRzh{(XGrZVKmF;dRSMzS=hVB?^ zN2%_dXH9v2_6uE?lIzPoACZZhE6x77GFA}PVVqs*mK@9K2i#J`t0(CFcw=yO!7{o2 ztHd@IrLy_)Kq;!i?P2E)L&0lw@y4peT^lJnN^@35^EHZoU3hrC;dW4~a5`?dpxq@` z+R`Z;H~AN&y+|w>-S?Pt@yPUL;6-3xS#&PV1MckVRfWb7soQSdc1Gaz@9JT)lPE=u zrje^!SK6XQyeG0NQ#vZkB-w$%P>OIlM_`#0OC^|@IO1v0uAuwkA-`R;vB2d#4ITz^ zZ0(J>8!lN;!%Rb#AeXG*Z5yNG$n@VypjcOmQiMMF>(iRK^%0xGLKte;!7SkiE26Xb zFNoMS!t1EQbLY^^t1lJD>?&3oQp;SS$T2iEiI_A+V_It_%q)I=hZYG^Ph`HH%%Wig zWC|sE5cNeS?G(DJvEm+wg5r{c39SY7XhjL^4uj#;GR~k#u=%q~L@m0-E<1vxKmLA+ z-{X#zclF$?#*7%7bGH}RYm#TSc5U-vqrC~cmZ`^ATPHV}J>Q(672O=&8O* zT#?LNE@sIb-Za!S)Phc~)J`0+H2m?ROs^k-;)mAM-*W&oga){%bwHqh;u#Qkaz3M` zr#%5?9q5o-g9O}l8xLY=m;k+)lZJ%}h|t8wWyQY#0NiaKsOVolV&Kz>(PW?l$rnX{ z_~P~NVRtwBaKQn4N$sgFShKtV_xeFu9IjP6F}+pAY0%;7GplHf~*`I6V zH)ebtSK3h#ZgZ$<9Z6zCG){FyJkgbvIXZ&AZJk&@Cy>j9(nofjF(p37O79|gqThVc zyGNc&uAGv>$Nsp5(yoA>F`7+x=F~i#-{%qE2(fEZ_$*j)>ZHak`E)S#dPQsH+uu@I zb)f`xp|3mmo@E~JQjan2_H5Hj_3@lWU#Ks8vRs(it2?%*DTvvPu_(EZ7;{S#b>_!` z0Rjh;OgQMd?aV_7FZtXPrl%Ss)(-!X9uFkIp&s?}uN)c8qC7X8O;vtdo9$S0i96D2 zaNjKx2>7~J4d&!G_cgWn6oUkq?rYNPzSd*_5GE6F#!|=r^Gft9K!7?KN2NLY@*+ra zf%zpXEIn8gp4t#q_#Y%((9_qtD1vRovs(XZM(vhqa(%oX+{1kV0wm`OVpxzK<8wz* z}>2sSOOO4)jkCi!Q5J&D=NKTm^u_31@ z#_K&9f=TOi*RnsSs`%Aok5%&AKIA>Ul^BjRR5#~ld)%Mysw@wIVgnp!29x!ckM3IX zjs0FVHf@a?xMpstSi=N`xL`e%dFU~B@JyK(=aFj+*Jr3n&@fkYM;_!mZEt%}B=&{1 zJuCp8Wr)#4$2E@ITAA#&oIOi-C&!!HwkB$7YnJZu7@8(IR z$mH9KhjSJ1eeYbJLZuHhNNxxI@k%s<8;P9e885(toyQ|xJEPTjUp`!H+4IL|so?N* z$XUW}3i(($7I&+*yfinTuAud|z(4SV=b%Z}1nGHPiT(m&pyQ?ErF|PrL{JUlIGb)>C7h~{H`B7Vu= zt0tc3Gq|fF^sY;a3m4Dj(9i;L-EbPq#>xX2 zOz%&Ip8e^o9gm4tkKcPiIBQaRUUS--403LPbXlnXFDOtvLyMF2x}>=99t`G%7(JHi z@8|K63A%BXOgRv&PO#yuYCm_2tH3ii;If;z^qi8hazh zz_F>Zvb1{C_6`wS?A88ZuEWptnx1D`WxLYveuPp)f|%{;vXFg_K&t_lH@o47eU;FF z29bMcJAb%ALcKVrUIx2rw0M@Pta_9@c6xamn!Q=<=MiDJn2f9A9_^M^I+l^v&`~tG zc}J(?`JsFH6O2pF(nLdZV%uP!?h!bsZjc9Az}+D0Q(3c5EHZnzUsWJx`iZX`MQef&=+rZ0E$`Mirt3o;{cd?L>-e#|69Q)$RJ{pi+hJNxMV!AmQ?x zNl((caues@xL4>-(-pG7PKp+=b;10-|$3#x?uZ&%%>yD^ZA}GO4M_tUT^6*JP&0v6sT z+bRbe!&hb@7p4amY=-x`y}o3Q8I5@LeX0&iqnKMG&TUlwG__p6KEakGkzT3PJt0<& zl{eJVbL5ycMl8*Y&@AdHvj{Kgg+0EYfML&7in}R=a+Sh+wKp*bbTQkZt2DM@Q(2;B zxAs~1#gd3e*G!xcRlUvB@UD^HPIiV!UM+~?utEew}X=Ym<>we zLhYS{=ybLAmpi+@}JgC&-~nfyjS{|m~w(Pymeb)@#0@RZxd zRyCDk{&VmzC^X`wy|-trq5gmD;(=k6)xTvb5+s6d%EETx3h8-oQr?t~In~$xJZq@_ z?lPVOwoFwvz;!^y@ac`W?`#G~1j;&N|AHESb;>)wJ2U>CznATkNbQgJ!nN4RQBAgLZ6wL z)&dp{_!eraK*CiaFsMhu%2?){?Y$1SrdIQ-=Xc)I=-`DDKyiR-u}00O#0}E*R{~jR zY6->i(NfxxyxR!T_kc{4RYR&?xn$^|u{f4X zq!1(Zq(P+gcW6@y^S3HCtF+;cZ*FK$ZHj$#^BW)a;g0=>QrBy8eUHT=`cm6eyb&l} zcu*=5JKQtyWCymQvjP+-Fu1gZmR8XQ=vd$@2eX5w9ZY;0`j1ED?%IfBI!e?n`Xe3k z+mauB#Z@d^%4HiOQR;ruZV>WE)XjbN&Bq-U=NcpFmE}J?l4#PfqOK40K+nd@z1`kw z#rqL?e~$L2)YD5(pBaNiz`Zx8lY4n3;34JJukxU=n~3`6c6GxAm?DoC>wV(WJnZcy z$MVGmZpTLCUl7^-#&7+mzaSmnE6Jj6r_d5J1U6(!&~njjqq5|OA%R=WV|m-8u~T%p z|1_JOtgI|)@{MeutzVGCXy8)WMl{?tfEKgaDu91o2-OP`zdugAuON($M0S3=h*)G= z8EvYeA@m9yJmtfWSUL&{U6MH#bdnxJQLIMUbz3Aa@nC6{Wh;vtfec4Q*}@RckQ7`6 ze%1ZOP$G0X%8M8tbQ=5@bhzgXNx=6`B$P=lmnNh)^<2|vL>Kre3tpL@)Ut9&su%x3`5j(H4XPP~x8&$}2SO7$GX|IdGj z0nDmo&DYd|Adt56BPwPVW-WFmMPbmZWCki4Q6W*#i+_LUpQXhJqP76paw7Ek5?s_? zKBnb+&GZozM^_7y0T6l&Uor=E>Lcze)chA>-~Yc%1{^J-+yJc61iBl*7cEhGkoLsC zS_p{dkuyC=w~cAY;*J&{NH@>@ee&#>H-`nDYc82X4;e9X)v;Ve8;9a>I+V7KR^UhI zJpNGV6Cg~koOUH!Z?5=`vF_X>HHeWc8to^%H zlL%+qySpWP-<-CdlrR(evk6}+4RR8{Bhyv>j4~i*JvYl5Y3* zv`1T_x>tt=X9v^w6aRwrlj|6eo1G5ka`98uj7Z7hPXaevGjwv|+FH%5E-!zRz?t&* zT3uNLBhX_7dQt}N&;u@;v5KiT4farelBVrLlOmiGbkngmP?Kf7elxBD<77*<8AI!9 z?vE`A6`(NY6F|Wy$d9P{#A4(?U+WjGPvLBL#>>aZzni|ELX+vUZoBU~0J%H`tM;P& zjoRI!Wo(7Vh@hKoItj~G#gBG-;eBlN;FiRF{22aT1VT%=keDxww$&QLekl~oOk?9D zTVyY?goD{!n&L&P;p)b3?M*axA)znUTWq=H@YsdBujS`=u2~{b1vz>)n8^hG-ie-> z2UdR`7BJaMgq-Q_X2E(k!`{UTHH7;o7?~{m1vw>!$)=S=-xMWa8Sg6eiC8kQuoxM9 zDk_!h%;y*r-9_@%b zHA6xSt`u~zJIIkB&noEm&IVOX z{7O&r1l6t%zHZZYz&%K5IN13xJwNq_P4I-gzSnZU1h&ExHqq2nwy-UEW@epGd1J*^ zcVEd}vCSWI2i(#kiXj~H7u^`VjEDIk5Nx>>ETjX4HNT?#vxk(;j%TT7CO_m}z}PzP zc8VAVj*tztWzJ1=R!uoNuM!YJ_}Sez^V7QZ1}a70bH;ib#fjCrJ70=_Bgda=t**+; zktRO3%)vhMtTuJ=n05aJ(USa;#$Z%i!=iP9o3pUuT+R~;G>YfxZ%(uu?9h`dyT*^J z?WWp_&)R-iLyi;LkR{YuI|< z(c?e)iWyN^3niRi4H12t=m@zIe70$~ZBl}-k87mXbiM7ZA*X8V*5yW*X{(%%)AOYI zGU1FY*}G(M8>mw_b|mmdXJ<~8|M4B~p1TV7R-bDi7c%8lBq4i2;Znq@=9Q5W20xbr ziqO6bcOJx$r}*kZw;I!#KAmp5&yYz9&_n}HNf1y$`)95KaUJ?wZ$Y|rL_R9bYk(SY zA$Us^agt$#;ylQ+_TuiNzo7k)hq4+c z#iFdd7@*x(r%)N_yIOVgFKBSbBq-g!d-N};`Q_Y6`@L(*7a%^Bxy{&&?LR>1dH7ue zoma(yQpCHjxXmoApAT?m`jsYoq9hJ>mlf!LeoF7K)!DypQ1j!dqRDZzp;65A~U30kU5V z{c~W{bIe@Qd_zSa%Ma2A4scjTFFi&4{F-~cS@ zOn_p%|KG(Q^PUM%asDw5;N7C40x1Db2w=};@PU#*x9Ler|JcZTE#S=I^Z-&)wA5NO zuj%Q_%is6uouqm5fwG&meM2ZR0WVk>bU$W-L^-a28rppot7;3x{{h~iWKZ8 zQPaGVh-KIAv2MwSWnW2Ig}*;yY(1-Q-5oSPS}qMOvZ${qmoGkATbkc_jGHxv>$W&- zKKvE^pft6gUHU`!4W(#>pJ4VuFZuCW9?IK{*;m3Ab9LxD0UuCIbk`zf;3#5 zfbQBvB}5UKCP!1dwo}e^ExfawDzB;)D7bXJI)7x#75LwUP?PV|ak8C4(t&y(*VtAU z@p^T(S>bYvrh<~n{X$Kws??2dIJw}d1&&hm6i{374J%0wBHJR9(00@i`gqh&Vm=N#_;%&yNtHNc6FR>fv z%`gSIS=lAvhEfc(?8O`Wt13eEfAdS_F&EWtda#>du15-dn|L|JKc1`~HiooCSY)+} z3(il^?ucQLKb}o|bNUNP`CPxHQR5E9ohR1&&c(s~TNO5a$d7jqdQ8l)|5f-X5{EYJ z(5_1IQ6uCCBq`J<9p4`WJ$i6F> zf=K?XS3M?J*0X=pDs1dVAq0dL%m#v+&bRncBF4DO!L0@oPUcosfeU_(+i$lT^4nXH zP=li5O$_8e-_Vl2_KBoG;YAznclk$Cc}{J-57pRcMF@2;v~ z6%EXOKR7cJnRnd^fvl}u_x`A#E$h~A^QQ|D6le=u6m?)sa+l%u#hyc#_LT?QSOO$} zx_P;t-yh86(3)9OFxD-Kc*1Vf6EaD5JLXL$BLC; zy#001&M#$VzNfG4no}2{+EoGes-ojrOW)LrWZA1Rh@I9BwveRbtzXKgMrT!o|4?g1rCM2Ak~t;wqcsLNdI5|>7n z3WM@ZE8!-UTHWA1PZx@zRVr~HwDd!(fh!8$SY?CfK@LH64HX4FzWxWI6-rY~8q1=h zH|8FSp%U`4xPzr44T1&9id`{U_xZT5Fui2F_`l={h?(j=HIT!Oqx$z?1Ns3ykSuw@ z*LlrRF>LTE&*vtUvs*uRXN@IGo}(PuB6$b_#k@0ckQdTghj-}k@%0`| z&{co9zc+!Vh)6hpS}uJNH=Y>9{M1wAm#uo*Ls{n`+|=sxnQFS}Yz;adKGNdbn!Y4y z#MGFkX`&lGHeh}vx~D@hjDqqs)nz_zRNyrglU-CQX+RH@4j;3ANH{aQ<@HS}Bd>AM zag)lFp$ zqE`z42Yf{_7c#hU^EXdZMaeG}kD+^02XZrWEG@;3+6zMc zr&($nwPc@TrdjJQ!09NtU-sBqlN`eCN;2Lw*#M%$mR@a@j1}!OVHj8eMPY5wmq>>A zjznu?7>A~YMsFgY1=KZ{*UE`b0}Y_@QN%h;e&CHekf9Z=`-{YIE$ORi8)E!fHj-5f z#t-l|npZ=HM#7uHerp|V2eOkcZ8?18z6EAqEuGx!whT^V|6M<7;N*Wj)6_Q8gS2cB z?~fZhH`cKk7}R~SC~lG`ndL4t`u(SiPu3ePlr%o%q8f6>RyG$d)IFSq919-%c$4sL zwZNmS43P1KD*Wc$yJdKJw_7b=V6XgGQL)ic{~p}pR!FpYyuy(I_c@t$U7bm${rd>Q9F*{@AM6KBey5n=8IbPA?W;PQb!Mm)R^ zBWwdL-wvnD!VGGzKVMj|4NX)o6Op*#l}~bX`1E#RE7-GSR(CSmyS_pH(TJ|gpktxj4`--n7f^hJ4wSj)FiBX?CeL{SFT?1 zJuu_x;_YnMxAzSliNL5TA3By#?F0vepng7X;QYb+)#q@^5j{u5okWb4meIZJJJxu-MokGyq9XmNW*YB(D?~@ z`@l<^DZ(mect*+P(M5oK#J+#e^kU6<{p=E0km_QWx-l$O(6SWo8yw-Nmvhg|HlI6M zyzP!Ru5M(0B>*;gIVeBAVu3t|lQO!9V|!759tdXHq!!sezi3C_lPl1m75!{DFn`V@KvDRAQ!t|)L^+X&76 z{8lqkA?3Saw3=7osx?gDAG9=U8j;9I?_b|CDEIbwoxuOI8VAekLcAR_>hQJ7tE7V3 z%?6(a-*yRY4kRx9$tnYLy6T%`Ze}&bn_sh3EJq35{Kf|Rv8`G;)2BL-A$Izx$?b~r zcHy0#bXsFQo2}j)Ob#c4S#JhXOCbBU?ipAOAD%dVBrGUL2sy_)`Y040_=YS^d?Kwo z>wMNfK?RA#3!D`i@jYj_%m()aW9am;gLu>(T7M=}0+!=7^*dH}EnYA`{Vf&?8UkF` z8^sntFBKv%k=25m=`NgI)XsuDrkTDzV;C&RnQ}=}HuJ?G6(}x4^Ir-GXh>3Xyk}*&qzN1Z z{z^hW7lki@??0zOC;{3?+$AmX^)S;D=6B+zdG9qhEUNgJWBa1-;dXP-c|_Yg9ky@6 ztZ28_ZQ<$nh>vm^7__eVtIR&k)aC14Yqsnyr%NZSTyKiXBh=Fq`oRzP^f~(Jr|pnf zc=gx%wg^rv@fJA@Y%%X$nS?m59T{W{HVI2$|^i?>^@N+JSZza5& za|;gG#27AAj!U6Q5ttBXH#I0TxsLdQ>*uTe&eH=vX)vDui?OkTUAgQpHPHhKP5=_`u`ZjO4_g zPyu442qiL=C=sal_A=qjP%_ciaYi{-n2>kf_KG;U#FwUo!9|ZSlpYeuJ|}in*bi!w zZTM;@x3%4nHpi%61u01r;9!Aa)ewd&zObq+tvWc_KagLC!14q2c?xO`?yUgIJoHw5 z6-IG+@?m7Ycj%xhZA8>*vWv_>A#c@8%7trl#;J1Aj3og${AG5;?#ND- zZ6M{7PqU}=)nKfc{phjeGVYB)Q@D#CvK7T(K?&$Oa+6-QUQK-2pg$RZml%wm8F=aF zoaWZ&2P0)D&B%2x4x?<$Wt@|PON!J#!z{hx`wv4rDNvf%4&;Sj>aJHEwTn=i(%!2Gv#ky-rQ#$K;)Ts5bXa_pdFsBmmsu9* z+1ly+1=0Af6gSCOYO7S_IK^;iX~sMP#R0olm{_Q(fl8+iD2C>}|0NKgai6qcNPtjw zpURg_=v-WNp})t@;>`3+Vw7(_L6`Kh=8um2%&ZMpZehonL1{g=GR3`qd;7r0ddin$ zXc2bBQ`PHjne7)ZUJZ?o@gN&>T35vuU&B)fAZnqS(dgv}UbuZ93CmizSM!nWF}oGk zH>xysVloaFx3!(2+DL*tu=we0#3GD=&S1Nc0m7K_(vPoG5}E`NpQ^?L6m>H_cATMT zx2`7`pRCbpyH|_rpUND;i$+V?tJ-@GZ=oqhGU;}GRSvTc23TAsGuEJH7Dc#O=pcez zn5<%!S#5IcCE9eYB<#Fn{?AQzjm2Ux@vBP9mm_r`p;(@@8D8>CMv~&_6`$di#-4Fl z)&8TetOatUcFUQ@bgm@bg@(tsZF+Tov+QTtqQiN^4V4YY4%c4i=5gJPpp?GQ8bAC8 zNc2ktve^jLI&RX_c|8gu&|u)H_~l#3&#LrfpEEN*ay|3pQ=1W`m21^i7)t0fvBgwp z++Wc6&T1J?BLT{Cez|Gs}?arBzl(TRumm!;kajsR4M03KK9$f2D zwztim{DGW=qM3fZE`pWy%k} z@0(1x7E!+6Y`K>fjmS$hY&qhdqxm*Y>}QLYB-v`sIG0BjF^Q!0tIA-nZL2KI-13x5 z^fkeSLD%_iZ=9ds%;MXqcM|F7rmn(Bd%7GE@!j9@AtxiWN~J}v_N=}c;{Tnc?TtQt zRtJfqXiV6uux%<$PBr^!O|dMr z1^e)=1le-5GW0MC^Og-)bu)AAH$f+G4mDvLSZgpn25imsTlvnnIvwT9Xk_b5YMn<~ z`;B63}+m{DJ%l zA5i9c4D3|75Cb4}O`!P*#Ot&e_@7^|R<-~6CN!EwFa|dfqqXwwDQz>fZFI#wq5@_9 z^HUXK+HCCDd&93ez5cE`+etfT{$zTh&D9k@zcV)mycC6Fj-K$=xa(Xl16_}fp;_FLpl<> zWKV5MSYF-r@|3VD@v6H^%RcC{cwSMjqOyZgQDehwJL8l@2IMXaeQTWDNDCAA36Y9t zN%e*sc8BN|hFH2TkVgoaUQKfK1IQGYcs1wh+x@q5#@3~))hV+IQd^J;Sqdyz5#?ayXoT*# z87*RxIXh^Eg#H3{mZYb(ab~wmR;e5PB=o~LNJ{~nm&I#%!uI7=z>N+jYRCkr)!GOq z2|xZq7$w@iHf=hjVy~2zzLK+09HG!5xVIS0)gM8^kD+t?EEiq2xLj1k&R14Jj7EZWxkHvRK-z#)|D+L3V2*mdHfO;qF%+vK_);*MuTbDG2Y zfpkqsL=HyAB}^hq=xzzO-N@}#1BV@NC`tbN^txj9t zeLl*YqAh)s?i7MaAr>x6&cX=0BRWj%O6DjC5EC7jun+nkG z!SsC8g8xKXAd-FcBZwK`!a$E4c$Ase_+q>s8nQ=)`MzZ3KEAPrW54%i4!QjS?@0cwq89oLJ-=m;J*upvaRRI& znJr6MIhN?*WqTDw3jPk4!H-t~;mV7nH!+by%l2f%0A*U>5k58E$Qyc=vm^Px#-4tD6V1H(X@9-z6=h?sYIkgE%p}l_ zU?vi;iiQ|_2!23O8g?lkrY0@zxT}3Qp2h3gTh5e;3zt8$67LilpJbsaoV{`>QpG^JXW4R z(;r9URu7L}^4hhxVTj_2XMtfaY>_N?bvEs?y)|?E)D2IQ1=aoZaZ**HXL!-KcZ2md ztyoka*LjTo{`j+7;rFFC@{`YoUUU}p++Ths;PKW_n)s?n?D#>c?vSPLB+8zm1)=o8 zJBA9Ggi3w|PN2Gj=h5FMGqSywryS@%Un#C6`h5DljImZ(VPy}{e$G8(c-gKnrrD6y z;a9mZHjK^E{3skYkJ0vP%v)vn;i*sBm%WSj$lex1EOA2h?QI7;a$VaOzX#jg=+_T= zmYS2#9$MjGb{C`1{z5(&OEA3oBlTrTUKXD4s?aIX-t|hoLQY^%+-)YM3;IA4I0k4B zfc_bwApZB7!$6#oo{x#~A{F!dH4qEc%l~m@C&-}thPI-0(R>=vEfw?YBc12(G_DWY zAss39ULssOdm`CS71SNg539#T7KS!}`%a{7$JzKWa?ht)ys9P+ij#0Kt(_M?_J})b zT+p%ldhG`B;QZo`)D&O5a8M_5ARAdN-*mSIt-^8g>KHa=6s>*d#@YZ=19_-YUk>2tAHu1bRBxteWO$PQswA^ zE0C(O#O3=fo@!i#??=pam(l?v{%4xO{7BJ7jg(npX>xb4GI!wPp(f!SmrZ#m)DLj; zx;&BGWoHT9Q!_)M<;4GhBhDeGe?iNwmx;bzq>ACJYuSf(JR%0}mj<3P$gUaQ+&fFH zw9zOjRCELby>i2=vegA!(Q`XHrNakPBcWZzW$RrxEXNHNo6Y!$htT@beP_JKPTv;Z zXxw9_de)+P)2wUXInPHMD@>e`ce7gVyhwvKmx1S5dq~<^!JbGRXRj3aP7CKhj0bm| zTHmCsZ=iY>JoZa$^^Guskj@el7z%qu?YqS(7OTI9t0&5siIj)9(=D(^ed5EePRr^) ztVE-3hI&tCG$MBK(*54U@(Vl?YZ!1>kyl~x!jWL)qF%BHgarQxWImROU)0mluw|5l zVy_H=9Rq-#_=>t?noUG}BBUH@Z}%S?q0i0Kj(L5O;2qfdwU`|`StJ%wQ$B+IZl9(k z8|WX1H(i+KHO-o>htNnBEu$N+gKawY#x<;_=bIKnmXn4oykyn>V=-l1Cyt)Z2LYRM z?zh^Enys#10%uFZ@_t=!e`I*~v7$~U`z5~REdMK}cc|~nUd{2$Yr%tFrsz)#OfykG zFlMEZeJ|8-VRKiTLx<@yy8+42CHkh_oyz~HH}g(%Y_TMZ+L`n>rV^?L!kz36CMa2* z3Kw!#!!i2-CmB97A_#rp2;Wm}5N;sa9^V-Av(k_WP|b6Wrl-gVXXGV~kw%M`lZ5@I zf)0-qPtP}V$vEOx(Bn@d_@|Ds1s5Pe>_EVR=nGxI_vcM($}lSdrA5a@qgUY8GOLULT2$c$mV`26()`u}-T zvFRW|s{eUc0LT+C{NF~(JSdr-r6Te|g~QbqZ)=3r9A52J4y@SWVGGYrqL*yYjz0d> z;l^(%>y6uv>1aZtRJH=!U_XC6tCT{v_0HXF`191C1jvUy#}C#OsY9EmC9?{bo-m*- z#B>m8W5M27%0l`1N)-24PMbpkE3VOT0B%v;DsMUM=ydmak%Mk`>gAxEqHA0YI%Zrd z-&C0Ku2S%@M&qIF^pi!DTztwxORz?6ZSq`eU3a&c%^1m?C(sok4@BjY!SxA;t^0Fp z-)*D|Z%D4*Ohm3{?@QV!$%mO1c_J@k^0+rc;Uj}=rIu4}wBu-@L_rlQ zF|9h39kDQ&1zRc}eTp+cRfS4CwGuQz<>0CiW*V0$mRRs-A)yym!UldMNOqu9n0{vm zP@956(u@lD`hK>qCBjs8Ur)NBH(7~86lKMNeA>(NT&_9RtrDB43h=wdXQ(%6T1mO; zmn916C#~Yk;WwrQC_&ICI=19dEf-Q?{id=kqml!l&^5ez938onLH=%k=?=aAAb#`S=z?hkS(wrjQclyGRq?*yy&|Q~eUM$=p8vu~!f^SF_$dw13%hZuV=n5r#1IohkV3ms2Z%jqX51 z?s}*KVfU|AJN2Y0Es3XLoS%M7kSB$^U)X!Skz2?|D|h?8G4p-b;#cF)^Snnnsw^!F z(Iuth^Za%7Jj=eUTb0*sFTC4@ow~eVCd?LY>babu)i}V0r6q~PUM09 zw~XdFoqQ@fV~x3`;xDreXADx4BM>P~Tg2>_^^Ua>Dq7?qLa8Zke4Xf(JwN95I8AB2K}*J{~_HbyxiA0Z$0ezOzN!33BS7`tx%2MQCNp z7$9Uzoqq9!6o+8lL~&H`{(g0LO>LOSqX} zS3?AddoBJmw4Iqd6!iI}=5y zsbQ(l5p7ORahi`OKPCS8CYe%uR33{<4h#x^_>OP#2?ysxl0n|viNFMqL*AabYgdM5 zmL}u>UZrbmUey+HqpAhP-MOu6umS?eviH3 zip9vCUC4X;V6{f|XiQ;5*XE;RlgiVSz&e{yxAF9MKZhq1oH~x~v=mL0NN{-!=gf2h z6^l4X)mN+Y8Usc%H8}83h?_*9r_GX6DtX^U-b4ZM8?c<}RN9jmt5|wlK_BLJ`kF>~_+86Z7v#01!BBdk`1ao-2 zTW)ZfB^*Gk=YoRhl)SfGFb*a+)5|>naM#VMb1WCjiryiLQQ)Bv;*Y-m?Aqw7N&(*F z2dUqXcW->>yz(9Nsi`1a?W1OL%*e>mH_=61Nq(USYNf%KJtmOmw4CD;SyC2B8I#w#>j zzYaWdLM98M728zj1e(+i2NAtsLmKwQ;!uIy!W>4dl1Rcpnt1U`LW;7yB+fVpsk@XL z`f=*P5nTe@{6G-q|M*ugHPnZ4zMTxuv2wV|@oTX#f39WuW={QTWwx@d44v-h9K`pZ zLEzM`pcz96QOn6BYaiQV#lN7t%NnKmIYsWOY_QQ_ole!@KQyPv`t<`f65eHB(msip zaTBT^_ADQ&uxO0`aISN3i*gI4?mQnRHQ$hEPAU=eES5xG^(JX$V#fY z>6+xRJX(L`d$!R^Wd-rZkdL5LexSo8BQGnJX4gD7Qo2w4$G@OOwI?g}xh(ljJb@kU zDr2v=*mB&YyS?gwS|3kwNYkX(+MTVm!6;lrv4*RsdpM>}unh5kUA=cy6J6NujXtP! zQHs(OrAb$sR1u_ifdrBWQ96X)t0-8(fRqI3QUWF+Lvw6t^RNtqqjK+Dz|{}=GoVuCfchEmbMT6C{c}P9 zHNNA|?)@kJk510z_Rmzo3aFU=FW~SW+z`;I{woWf}62J`7z4ptH&WVL^|j z`R*s)(x}CuXGeVznmBaWkc>rGQ)%$zbMM!k+byvgtJ5uyb5^vs5$bAlWL?p=@yfGN ze_6nP-l;?!HFNtDvVNHd{IDTtkK@x6)2fjHY`D~<;omWe;O61>1u_7T0hHO`X8^n*wz0}FUDfi zU>SbX!_T5X@SxA1k|_6w|5y=f6VdV>tvh!A*3Sm4Gf(P=jUdS)*#6TVH{Sm+@jN>W z2qTs5!BQwc+p zUo~n}oTn_kbL}b;$i3Kll4lre?$ z$&sNiJ*xiiB}!}O8rDXLQdyqSIVW~kZL;evt$aL3Wj1{wWGu|aV$E{}+w#M%ym~rT z&z_@8o5b3zZ=__cseW)qq4IlK$b5btDIaX)IB~{(#q0T83F$OU?6UfOYpllWc|^31 zeXGsIcGT)q*J8JQFwvnJyETdKcpviy|GhoOyB%Xp`ADQjUT=C7w4C52#;EHn?*D?& z4XN(%M>`i&OnI5uT+-l@RLWM>Ij{W#P+9bdYBKFWiB8MkSQG5Pw&gTw?&*k5-mh4K zDN^D_-@vkBPB8cx!rr&CbMX1Gv^n#E4+S4qvQj0CwP#eSni?}(ha-?3#!?_YoY($SyjcWDiBj+`!n=W^r7tEtA<bvgy$(|2 zRF6rsSoeY}X8c!qaE_b0qDz;Fi?w`VLlJoXdT;1o7IgbgK11MCSZOUoN=BvSSzJ!_ zM?~(#*ptyQ)@xo4s%z2bx z{BUD-Y;N=*8I_~^yyes`xv?O=7<)ktgkm`FE@zy4bZNzCM+JI}SACGL`8?YxN1d9G z3~h=g>+8ZZ2`>n9Zo9N_9`?a=DP5%QB3qXv*u@9!eBMq2>{ks!C08cyMT!1ux?8EHwtGpJ+ z|EZY#%6|Ml3q)}Mx9KCU?Bi8!!E7H!T?#;!JKFDVEo-q z1^Bc)|AOdicfNi-J23rLZVWuXtM!&$1GeQ6nWmH=zI5nxYrY3DkG~U%H?{O2I8wS_ ztsx}Q3)j!VG`!C*u9|N*t3!X(=P$;tx~M;C+j_I3XtyMqsP!bKcp|LSE;eVR%5SPj zV6^gr@hL22yRI*TPSMRTR5QvMon67xKsR6&(#>>7ou{M7YVR|DKgNZA7WvDa3LN|o(L!^2q*A?#)tjvu?@37y+|#^Wt%~tEIm54 z)JgVXwe}+vPm%N0KiA&koz(`fSm&b1#<)$SibTnC85iCO6N^Yq!$LjwNvY!btM5f8 z019)4NrghAJ&N9}6iI!0gGy?UJ$kbIK9?jBpAH`Uy6PZSEIm7xHwf-MN9hTV4UuWm z&CR1_>wCU7xDGjN`Xk)b!Wjv(nMydb7-eqhU3i=JapcRfQy~c_rti20%ndYSn3|ik zNi~m#$KOR~#yfdL3!SJGIY;w$XBC>pn;$sWBJM-|s){?d*F7gv53#<0!J;kag4B~O z2+1x}E3lQgFIqfK&a%8!yFZGzKAJi0F4fw=7lfR-c-A-}!m%0Bne5Rqk(%!(R2*=S z$8`V8LP`J2Qfy=4zq_BSIvZUzL?y8o7N@P5gSM!{FyU&13_k1JC+9(fFAp?!w4FK% zSN7~WPgT@|?b8*pe(yY>Y)N*!J|7;lz83#~_Y2EER3Hy$NW?EMU-z<5lc7J0Yp*6kw+JXWyXHAt>YRt^JEJ!37OcYPTe<@eIQ`~Je-;BtL^upq{)5BZ37lzff&_o#7N}EF zEgAaICLrJb^qdpjxA_P^wMcz$Z@n5*t6r<;JUm@GlSUAj6a$wJbAOdd5Hjq9RbP3! zc{Uz5;WcVhZ~XlAI`#8n(f%tuaya4865$3po0&ap^$eLBs@APsn)7zeH!hpTutB24 zY3My%Z6CP3xF%4;F{BICwBPlO<0GTb$4#^VK^?}jg|S;|L#~awx*Nz1B2LmjL0@Uk z3}n)gNbL9vhXJ!>ed&i9v@+zyBulaQ%Vw(gUD@S4{M>H^!K*iXk=(cxEMAJ!O-C4% z^=NZ?_mY1kcCx9;|3wr=grl9xa%bKJ`T zT&<~(y)`5~i+SmCmWz;1>1folxhH~BWC#JVt@|C_ay5g!J+xwcreR+6biw=y*$v_} zJ`CcN4%DDl@{!Mn+2E^5FYS2MfIb%RNH;lo^#SWuQ6C^8hnMB)F@R~wqIQ)HI0;x9 zvjZ02Q^0EZ1d9zh(^h2qOr0;N<+j~KvWsFxqaGs zWjZ3yosmkC%*?bXdnWlzqT@Jw^yv})7hK{ZtU`hxjl_|Uo&^JQ+YbifSAYfkO%@>8 ziS3_0iUmk?V&%T{ffbNBi30BnXl3xTo=pn>5|4JoxK!r1vD0UiRn>6#xb}dw+NG{?P=zHPX50vf1;1* zzujXap{Gqi06GfW_aNEie)aw47b6i{H#lBT)cS!d#GrtEftMFz71azXjSTvzKDOM9 zHb00x^9>)Ffv|+_SM*-h9;AJQ7Fs3RW{$+yHDsjmu5zLM5M`72( zN%IY&5s{lSB}47oLIKqX)7p{6yJhVW6))D@tIG3qfB!i*cWcm=VBCZbjh(qQhC%Hz z(p^%U^=~IjUEVfVw&v-R!@Wz@)0&Gl)YJuhW8M)K7}*1_r4pAo3lM3 zWM5?%t7n~weyrs~&}RK)BBDLPz+(gKU!{-o)PdSwdyw#XZSJ97Y~Ee(bVHgRnG%Of z(<~Woq$uB(WuH!j26zI>mZOlrLVY<3ZjDC|RpYk?Umw&3Il90nWi)7S&WS*lr_PoG zBI?mh^O}jbWXbG;p{1=@La$z`l0tr04P;+c*=;7-cioXJp?Y1R@`fe2TFsIo;wrdb zE2Ka`5@<9DRMCQ5zqG6Mr15){L7NOjF0^_B{35dILK8&q%nynQ*)tfDa-dL<@j!!V z7iJ?`h9gPi#wsx5{)B*d|1_{}O=YsTE3?QlVwUkOL#8&DFBt=?=;QAyQRImNs=}eM zs#&Iiorx#5jdTRc0#_1cbOaOBJ*le|4O-050Ej`BUJ$YyDxh#w(KAmNQJ0Q$$GjJ@ zrJx(F(!b_U)lWC!K6&}Sx`Ix3P=E6+3wuvhWe_)wIh}ebjoRZg-di(KaYVjksq`!b zc6k%LG1pd@r+#-ojf}W{kU#y_ktlgkW*urI-L>J9@=gs4L1%HnLDaH9GIZ6&re49; z2-P-{)r&Q+x?Yn9t82hto9K`1`vRtjC-;>H=7&&O31d=2!^`1G|v}>$*__cfjsYGbr5>!9-BhFM)pfR zU&>qrA|&vN0zokn52CbWUUyn*t~cK@kE?|;tJf}%i4hJRytR+>^uw2mrJF^fe*lDP z4gkBI7PRVq2cVdOn833hp4ESIc64%Sl9)SZ-n1KRNgSl0nJ`&u0{0(zvGSi=F0d-U zr^EXPg-@!+W@BxNp|6(TWSg{)eYxWc#v37JrK&rhDmi(JUN~?@oukM{;Kt_K&|W12ZlCd&8d>*S>@@b=Q_xywV+}`)rZ#UJcn^ zF9c1K={pH=dJek9zS3E+?3-spW&v>@FH$d-+JP>oxiD^1DWnDFnNV9NW;J@xXbk6L!{|Dt48*C%PN z5M%Zp6Ym_NAmm@%rJV8HF0)h(FB$bP)IU?WiiZbPE=q_QxOwbkuh}Cr192KJfH!?) z%=$frgYCoXmocp8Z_cty@pJjI>KjM`UoD{f$&PN8tm5Lug2|}>8Q_I@5&$TSd(L|^ z*nC7{%1q)I>+b86=e!0y?1rLejn1%=6&`7q=Sq%2#BnrbWV>4gCzLCa6r9nTZQ+W! zbL!(6w^|;MG9p?GL3du_u>{%M8M~IFaA6HzUr~$b`SBm*;9F7xZziFsbW1OJ&n#J} z$1vHAt03ZpJ+=I--r1PE5v1L2si9Yl`sXu;Cs-d#zj#o`;I27tmcM=G${DjOtQIV< z|Iq*esL@TJfXxcvT!7F+0IIJEs8k-d>qgglgrrsXPdWsi#;z>{;{lq$&Ojd#x;}LM zPGkeqx?orILfff<2rN=Jn?46Vv~(H{|GkTsIkkiRP8w(}Y^>FV^O^AExWAnf)Pa3d zJ6gb3j)vF#gxrvv7*xJkC8p!no-FKlNqOSMPiuPC!dsiFL*~kACj@^s|6YraYlQ-x zIORPCr#seE`<%O#`nEXs;F*x9}aU_>Dgb zd$B5s6h|DUK>s+W^!*MUyk*?#0Xkx(BS!0jKbai$TlM{Z_f%8XEzqu3VK>N8&!Q-1 zCYUgAqHY^#^*GvQjqcYzj`mEK^EnRo1swTn*ifwVbj3BA85SC*jdU#Xe4m*gON{@bdAyCks~7v+;L z&V}Jo!qL|v<=$V>vB-9OW~$$8#Kb*nP|`X2q^J)LyDOgmMouGk{(@5V-4q4Pv<6?N z=eu_qpX63s+27a4cE#5-?+5_D7m~ywYha&wbe+;(M)ueWte|0&rX`GzT} ze`5809u=W}!l`#h{>b|5VD^l5+zI%DwTk&_>V4zuGwr!Q-S@VW?Rs}i>Tp#03aIXt z{!84&9^Xu%IEjjPMlr@(iqJ|0%0UfWxyPBKO6PUg+R<2}I<;k_p)%_RPF;gZ>}XmI zSggAW)Qtbk_E5I)5wBjUMYJ|fSLPTmMqC-Iew;RNa5IL$TgQ1qh7{@oOcFn~aS$Qe zYNg{nNy~y2xNp~WcLG}O6s44BE1rlKn7SY**W;nGQ#1EGE|*CASz6md;i^q(9_d)B zYZ*-E2NAfHB}h-opIAukNd{=z-NTNxSMsUJgX)Tti>*?9AL{O}n~)U><>zsBWZ9_O z(w;@PMO?x3BuaH-M0TG*t)Gpx%BRr2^S?S@4p=SXx2zU+;zAPJ8@Cnr9EMD=PgamP zGQ+sUO1>uUXpFTL(X>TUPZT*m)Feb=mRO7Ct-kogKrC1Jh6K6v)q!XR?Oz!3fn$wr zf{AHusB*Ni^{&QNX>(yW35-?qZ1D1*@Cc2R@}r!{(vLd*W4F;ZJowkWv8h$KYFPD) z&P*~Xr*THC&_+wHD(r^*ndr4^rwqrJ(fO#Rx+qBQLiFwQx!TxLTTTlIW|RPxZz;@H zOkE8WFT!C}JIctH7A^4hzF0-VNraIdYAo4Cq={g%f>?Zfa3|%?M=ecnk78kTJj(vl z9D;U!=Z&H>#YKlo5ENH6HsudM*4tMg~FLMiH?7)cGJanErAk;>qrt znzY#A6Ji2KDk~654xBd)qdG&(h(`w& z-5!dO&wM@xZOQG}V+4PX7h6d_3$xtQ{ia;nX{k+*U+^8`R5?_XPkq86?@^!0OeSR_ zv4ZkdfzW}@`VENsO6f4pgr{wn%JCftvHjKcJI-{`Qf4?p4)0_vpiR`!&0BT4uek0_ zi)512hf@8@zV6(}5hQZ@Nv+_tgx=0@Pb<{_nq}^QLaXM+XAhH{;zd#_@jBmoe4o(2 z=L@*mKM8eSv9ZywaqH~7?5C79z8c=7);G0B;6RN%ZTz+;;CLV^i==f@x?OZpIet1e zl*_$|x5p`IH2+q$dN7nk8zzDT{p=XuJ3R#_2Yw}z0#DoS*U|T;amy2a!qXh54Swsx zVUV94L$%*pJ5RjPi)P4EZ~vemhX$KwpYa^$d3x>NjDV#RSiAot9s*avzeW6tQ-ENV zS<+SBz)#Gbt{j;!M@2kO^zolSa1CgEXuTgXiyZ7aW$-D&Ps(Uj+r8dW&MB&9s)yR{ zt)>3MVQhJrzF={rc%-;1(`eLAWX|~HUOx1*Ub>uO{4vVp z;p+TdT_+MLfDwm7*;^*V-5XNH?)l|B3SIlwRlVlKzUwJOa)FHM=~>9S1|=Bc%#ihc zBWtc>W1wY7{^cf%`eH{fLV%gC&-4ClQ_*t_HG=S4f}$d(M9QNlg!~0NVwP0!z7Pu4 z94t8Kx$M^%sZgOGa&@yJ7bND6XKgkSLLmJ=PeTRjYHc%e6G&@p8ytmY0Xdzv^w0 z8^>ctv)Mgi=3RggmajTaHm=+?xp6oq8|BdwI2>12^oRTTJjq`B+O$aF5H0)QB`s&c z|AtXF&Zc7q{Z=`T3x0)adwU>KLw6Cb-*B zuB}BH4fNhSNomwGVzfL-D0nvV$=N;_gV~GAR(SNzGD;oi$1&X z{vK!$Te0o7dH}zzhkq29FxHUN92pbnb%qGCdQVj#XVDCSPYisr$(Q}rMpYdQAq~=g zAV_|Q=+bzk$)6eQ)T%-Zitc=cLd( zqBRwV#*ON%zLEenr{H`HKpBbW-@dXkeZ?LTX%|cijrGYE3XMRtgv(V35~?dIGu7Ok zuu>@85nFYu%pU9y_t?p9oGD^(q_2k&7|yOCV(Ft$&!ILkRl1TkxA$Y_4Z(xDpJ&dv zN7GBfXQ&5q=n8-bo`>OYA9fGss>QEkL*iB;cc=~Pp<#v70T66_^@NpBAdw4QqwccwuY zFzw#AwiunNtf5)FeX*gGAq~tYyg=|vlZJ_uhl%nI5}7LKpWj9QsFobm$xPT%zLJ4& z5+J)q6?>3fG@n}6Vxue{`;?MU9xfA^w(!e74n4O4j?!JwF_+4me2P3b-f#2g`D$0| z5L1`2I_>lHpr9hbc&D(9?lgjI<{SYi=$B_1bWdj1L`3mD2dB1%*J#yto*vGIUkDZg%?)*2Aq2h#u*2$Ec9Yv^;=tyC^M14sM|u zIX#ZM+w#(w3*O*@YjT+&RvW^Zw=dBelz7{Lrt0!W$4?|}If?6?t1>Uf)cEH9d$;Ho zE_HzDlr9lQK#7!f7(=?GR5v|oOc>ys^*j4dNnuH+t-*>3@X90$idIs80lFn`*ldpq0w~7i{KgnDWvetVl&$N@++}p-Tdk+4Qg}CoyqncxF4KL zj!qf13g$xS6RfURG`9Xt2A8BAfUs_R{#=HSZ`Xpm9{IXMVG4}Tqw00Cwgi`Ttx~Ul zs>ut^EdD>-DJ=YdSpTpXn3TU}zi9x}V*eRD#RpS~{zW|_k87IhpVO?&tJ9l>vHSiu7|Q1xaj-b-~0BGao7>T>h60!|<@IIsa^|6(F-U8ryQ(6d&%E^jPs zAR_kNCgv|oPL`K~=H{FuZlF>+K0N+*H%&1N;|o>fR>@3O_M*sU;&H?h7+n@ZSPDZ}n zQOsuj#1^BvhQ6Q;x#h=41EO_N_z}i@Cw1cTG1g3l3Qn3xq-7WfVKwD${2eQikZr|) z9>Qn}j%M1}H%}BU6y!8&;YqkQ@kcQ=@oAo;;>D~8S*wUg+53-cG3<;O^m=olP-d-L5yIBtHE9&IqL}U3wXs`2oj|#RF0}M_MDnW&_^l3Ef+L$Q z!l6fzqa+^P2rxa32(R%gFEr1Q@RKhI{$bunj_2#^k8$R zCFrB}X)%~w4-{PDtX-zu@q1f7X2V)H#+V#9$uT~2&I==QQ1E*^sf*B%6$KXv#Js{H zT|SGoR%km3XM3#+K3T*p-#!qAc8|i}kRoI)tihA{Qvpuwfle9JZt2?;NTGIFp({Z+ z@T<(-1R1|0B}hP{Eb`^nJn}#|VAD&!PDtfPh1d#Z-`t@>-uGx>ZeR&wzit6{I;Z5o zg*!4^n(cROl?%kQyn^m-5#+L%3Vi@VLc{fo;EGpmvN=)GmylsyYd_qRXir4aS|xf$ zd#wFU(#DzEqaO$6{Jt)x;-S|BT^J(|sr6aN6%n?RCtq-|nz5pYtcE8~sE7*#^dwfm zdj+{jWF8@|^!C!tLQ5uJG zA*3qiQA17V+pxUK7P}HH#S#law{>76H(l}VI{KHCOet@Vu|>MmKRPFWcu0HH^_S)L zG4Ym0wfIp``en$EYOaF_))%pZ!{a?pZaomGz`m-KyTRIyaYFj2{frn9eztIjnKS{%8z)dnU#}p`%vJS|;Z%M*KFO4E zV_w;v*yMOY138sR_?3G%v{$Fbs2*6|5mqK-BW6iIB8hT)%H9<1${K5t>is-lG~tb1 z_kA7Em+W(HE6r`~s)etYAhV;E%dg3_c7+5}$Ksc*np#UT5TCyIBFy#P!9eKw4aGva zjBcv?Uc}T5H#GUe#Cj0!8ZE2dOTXw$(b(AS`wJ!ZMuA`cvUK?-uWG#50g%?xO^*F> zmnY%qdAqCrSOfGzh??SaanFb1`Jy%4eiROi{D)XIw@*DzSi>pWlRvWK3sJL6#?@uf zXIyGJI`Sd>&4k=Xw83&GXwOK^z3Md}6BBHPA~+8|`Dmu;zWMCEudK1(nx&i5^d+uH zqdfz4@3y2T-+&VQadv4`ma*hFlR6c=^y@nlu{9%+Nh?;3lOu&HWjZ~lt(`KJGmkI_ z>Fu?9{8qUHzXk=Q=+RF>Tx=6w}6UYkvVqq#YbDKB`L4Z6A4Be5yNs%>ATpB*ljSU-qqpd~QK-F6nrf8&#EtM{_6y9z_Kq8a|; zGI{F9Q~`4$!p?~i>V>k>X_G#fE+2{*-17vle%m+CXEM}f7t7y1oAh=l8|lnt^m~^Z z-=6u)l2!*QHIKXCebPHMs-%rLgQ-=piOkjdMp%x-WZteTbQL8-+r4B?8xu=7=mcN+ z&MaldO5X~$TjcuH2<5!)9$VppgZ0|gXC7m(rjLq%7Q*jau z>}%t+R3e~$M%)|?(a+)=-PI|`E84(1Y zsaBb##J8(E0Q)6L#BTY2YvsD%8X-Hc#I3nGxZG=N(j!|mYUexJ@dT6^TPW=Ixg<~4KVsnLSdFaZ zK#glX{2hIHPa9t?zNEViQz_0PG+u31K6us|R+bsA92vgi4~AX3Zd}s`Ziz=LW z;>_#A@Z(LitRv&Ka=>jH`Ym=H{#5xK{+hhL!7tAw^U(y%3618S`l1e~>*zs7g6jP& zdcX5{OJx|`6$MHSqSueFB!1C*Vf%K)$HEEg-RD>ByKa&n>I;#&zA&iR()mrX5DNHGWy$^pJOvB);WiP|DHw&)&Vh`CllXQ z>{$DJM|rJQ)}Z&q-sd@b1!TTIcjF80ho$WJd`ZUbreDa5nXBg~LpnSO2}o@!7an?_ zb1he@wUxD5hv7vYEVJ#+zELgZ8zNvo^2(;tr0NANPM|GIU;WH%n+z09lml7}_D_?g zqToQ3daKR#$gRu4T`D&9uo8nIoR$`JhF2Vj8S%cx@}V4%6^NSw@OvPl^O*RpV-Lh1 zK43Kk;%5F|winyke==OaJYlE#FB@7MXr~zbi-q{i0&LgL-elzlBvIxPiuq>gpT`S9 z;a(|f*Nu83wIfuvY$?jf%kz(AR18Pz-ibZ6Z}{SW%fxwWdRLyT?9!bpX0~;Y6*n;z zAdRRgdSo}7iIZZ#bm=m?f#mpgR*xP}vl>4etiTmf67bq&GPvBSX_~*)mMIW5nycp9 zPNn2gMvdc1c-ICF+^hY@U8>%NPSXqUEN_K{IQ`8Cf}=p9kOs!bZ-rSix>S;Y0GZc_ z#vq)&m*tbZjU7`1ES6j9u6hu%(0)BdD2KX5x4t5R(Yi&KuTU7BU=>Lsp^;9wuDXFI zI`IxLYJ!N43@4qwqC8vn0}RzXx3%&8=V z2>3~s(CsIHJSk6CHjP!X_%fvIa^ENkHRNZ;mCd#!a|K9eX3Mlk2Iu{m2#b$5mFOQ6+*jvI_^*QtvtFv&~#~!RPCABle8)btb?KbDqApvFuc% z1P%10kS}nAxqbIQV_!!5X9F#OYAnS16(KgDNo;({rFZ#j#zrF-iqIxI(jZZZv>3)u zf3STyG?}FNR=2^?Hms7mZ(9V)uZp=eu%f#TOCc2J>g?9Ew%&-jxV9YxAL+27(lotl zzE`hVXdWh3Rl+17c-TaEVfZG{%KFJ{g%>~e(%9PnP!t%Wh%lXBgnhcme(f8hU^#rr zECR`)QZe%*g{t$00$%YXK~>h=eLNu-?&~ANnLAg@CzIeeyh>?el_Lu~Z*{-gj|LuE zCdv-MI78DD!y;yGX*?VGsVj(o@;YAG6sLY<;SC>oycY~uymKgD&t;tp5UwoG|T z7l;gBiRc-#Nvh#k!1Cvv9Wl^_ohKaDUi5ca__)B7wu@XS?}5i~spq)Wrwpl@iz0r; zZEpOe`L>5udxA)zspr2QR(=?x4+oB6i}nyvi{J$csLj6o*(AO2FxQyiW}AZrl@DDt z>C4zts2BMyQJG~VV@1s}R*B6WyU3L{f1&+@hLao|E8DeBOt&;mmWnZNI8loscn>>z z9tgu_Oi$j)`HV)?QS91njY!j< zYMXNF&(DtCC$en-pE zY0S-3a>XR(WP<0v7!JIZtY4SslM3%%{w>#_FKHD2dghbP`R3Sn2 zZ_m$@ilxO6^NG@<1fV{Aa%vjI9dpgIr{7+yQRhBXpbR4qzcL>ObGf+5U4N#WMJ!yi z@#W2z?cAEuB&_zwi;8B)&^cM9Bp|_KTP$=-{!9^>;Y$6kKU+(Kji>9xW*noo+N~v? z-j$;4@fh7Sj(<%E;>z<~@0uWf;^o0p;$ZEdx6{i8-y5-^n>-2Z7q5^udu_S9be$%6 zQX-LOPtIgNDYMPW+j0ps?!G>gp4qS!6K2 zcWNYIuh}FI&V7$YMbj*qA{G2QvJTojQwOhBs(=1@2hfs_WxY7k5ttmg8^|B%POi9H z#D&$Y&9+stf%z`lmwnJb8H=43Uh{dD_+kFRKw6V%1h=6xw-MsqfS+XkI7v);nP6L^ zaE)R<@VV&#-Ii063L#_xl{JgodaF6~hSSEbI7dnAD!uUUad~j%)FWlvo^7qey4^9x zfxfLw&Q8!ycDn2H`)_G3&F5-=)G?WI7Oq>Yj{S!{s5fX-v5QTL=CwW9$cX!IBAnXR zp_jqV`GZ@o`FZl~4l#V2W_$9x0!tsUmQ2|m=7yLSczNe9%NH?SUCrI%Q1EWa9>Pr;cla=$Ur2~HuWH9M_VC{f3$!0=N9;m zYfZvwlNL}2SvHk2vPoDKv-aB%AB$d z{YURu9e+|r30HlSDyVl6eFo6EN`Rsb^7YxK&(6P^mIytqQvJAb0S-SYZ?xQd-=;W; zS*QVlNe`=lWT(is4_|A@D?3Xi*Y48@-ioSHF*X%diRb>5=!Yq3sbN~wyxsS5D9HE- zATaA)FN2OBY>urk72UieMZ6bE(Qi1s-Dk=h5ypVWsk=so7Of0?$-nG$CsMJS5gg*c zW8<(V;b=+8Z}_M-*C%(LaNp)a>l44;RiCnklFCglxYTY9cwlBn(CU2Flc7+PFv~e- z`MUo3L#t1PeHO@MX$3IJJfKvywPl1{s~n$oaOdgI--9Cf+DV5(lzd{ziTEUYowL)5UF#sy*9Xt%=m5dN}2!Reg4+_nwC%yex6sCx($cyB^XIpd38lYnRI-d7LxNXi!5MawFj;! z36;Kbq)Qx3An|mEuHeKT4eWN7$By#@-6J+OHkPYVAc&*m 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/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) From a7c550da98035a9a33e62a5fd8947f8455fe49a7 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Tue, 17 Dec 2024 17:03:33 +0100 Subject: [PATCH 118/221] BIM: Several fixes to nativeIFC lock/unlock system - fixes #17862 --- src/Mod/BIM/ArchSite.py | 13 ++++++++++-- src/Mod/BIM/nativeifc/ifc_diff.py | 7 ++++++- src/Mod/BIM/nativeifc/ifc_export.py | 32 +++++++++++++++++++++++++++++ src/Mod/BIM/nativeifc/ifc_status.py | 13 ++++++------ src/Mod/BIM/nativeifc/ifc_tools.py | 24 +++++++++++++++++----- 5 files changed, 74 insertions(+), 15 deletions(-) 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/nativeifc/ifc_diff.py b/src/Mod/BIM/nativeifc/ifc_diff.py index be418fca63c5..404328fac50e 100644 --- a/src/Mod/BIM/nativeifc/ifc_diff.py +++ b/src/Mod/BIM/nativeifc/ifc_diff.py @@ -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 index d55e159c9c9a..4d52f9dd059e 100644 --- a/src/Mod/BIM/nativeifc/ifc_export.py +++ b/src/Mod/BIM/nativeifc/ifc_export.py @@ -20,6 +20,8 @@ # * * # *************************************************************************** +import tempfile + import FreeCAD import Draft import ifcopenshell @@ -29,6 +31,10 @@ 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): @@ -354,8 +360,34 @@ def get_scaled_point(point, ifcfile=None, is2d=False): 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_status.py b/src/Mod/BIM/nativeifc/ifc_status.py index 72381b8a16fd..c4c782327681 100644 --- a/src/Mod/BIM/nativeifc/ifc_status.py +++ b/src/Mod/BIM/nativeifc/ifc_status.py @@ -414,15 +414,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_export.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() @@ -443,7 +442,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 1c3dd9aa39bb..9eaa5737bef4 100644 --- a/src/Mod/BIM/nativeifc/ifc_tools.py +++ b/src/Mod/BIM/nativeifc/ifc_tools.py @@ -66,7 +66,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 """ @@ -86,7 +86,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 """ @@ -199,10 +199,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 @@ -225,9 +233,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 @@ -1608,6 +1621,7 @@ def recompute(children): stime = time.time() for c in children: c.touch() - FreeCAD.ActiveDocument.recompute() + if not FreeCAD.ActiveDocument.Recomputing: + FreeCAD.ActiveDocument.recompute() endtime = "%02d:%02d" % (divmod(round(time.time() - stime, 1), 60)) print("DEBUG: Extra recomputing of",len(children),"objects took",endtime) From db1b0c56bf6bc85fbd782ea2e7074392c2302ac5 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Fri, 26 Jul 2024 11:40:14 -0300 Subject: [PATCH 119/221] fix(PD): complete ISO-273 --- src/Mod/PartDesign/App/FeatureHole.cpp | 19 +++++++++++++++++-- src/Mod/PartDesign/App/FeatureHole.h | 2 +- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/Mod/PartDesign/App/FeatureHole.cpp b/src/Mod/PartDesign/App/FeatureHole.cpp index cd46abc5195a..1001efb4506b 100644 --- a/src/Mod/PartDesign/App/FeatureHole.cpp +++ b/src/Mod/PartDesign/App/FeatureHole.cpp @@ -401,7 +401,7 @@ const Hole::ThreadDescription Hole::threadDescription[][171] = }; -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} @@ -442,7 +442,22 @@ const double Hole::metricHoleDiameters[36][4] = { 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} + { 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] = diff --git a/src/Mod/PartDesign/App/FeatureHole.h b/src/Mod/PartDesign/App/FeatureHole.h index 662dde2b6cdb..5a5f9dc0b076 100644 --- a/src/Mod/PartDesign/App/FeatureHole.h +++ b/src/Mod/PartDesign/App/FeatureHole.h @@ -94,7 +94,7 @@ class PartDesignExport Hole : public ProfileBased }; static const ThreadDescription threadDescription[][171]; - static const double metricHoleDiameters[36][4]; + static const double metricHoleDiameters[51][4]; using UTSClearanceDefinition = struct { std::string designation; From acf04c7f1e51bc98841c69db5ad7e6ba307cf4dd Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Fri, 26 Jul 2024 19:02:08 -0300 Subject: [PATCH 120/221] feat(PD): BSP - British standard pipe threads --- src/Mod/PartDesign/App/FeatureHole.cpp | 140 ++++++++++++++---- src/Mod/PartDesign/App/FeatureHole.h | 4 + src/Mod/PartDesign/Gui/TaskHoleParameters.cpp | 1 + 3 files changed, 118 insertions(+), 27 deletions(-) diff --git a/src/Mod/PartDesign/App/FeatureHole.cpp b/src/Mod/PartDesign/App/FeatureHole.cpp index 1001efb4506b..c678818ae0f9 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", "BSP", nullptr}; const char* Hole::ClearanceMetricEnums[] = { "Standard", "Close", "Wide", nullptr}; const char* Hole::ClearanceUTSEnums[] = { "Normal", "Close", "Loose", nullptr }; const char* Hole::DrillPointEnums[] = { "Flat", "Angled", nullptr}; @@ -397,8 +399,36 @@ 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 }, + }, + /* BSP */ + // Parallel - ISO 228-1 + // Tapered - ISO 7-1 + { + { "1/16", 7.723, 0.907, 6.6 }, // G + { "1/8", 9.728, 0.907, 8.8 }, // 11/32 + { "1/4", 13.157, 1.337, 11.8 }, // 29/64 + { "3/8", 16.662, 1.337, 15.25 }, // 19/32 + { "1/2", 20.955, 1.814, 19.00 }, // 3/4 + { "5/8", 22.911, 1.814, 21.00 }, // 53/64 + { "3/4", 26.441, 1.814, 24.50 }, // 31/32 + { "7/8", 30.201, 1.814, 28.25 }, // 1 7/64 + { "1", 33.249, 2.309, 30.75 }, // 1 13/64 + { "1 1/8", 37.897, 2.309, 0.0 }, + { "1 1/4", 41.910, 2.309, 39.50 }, // 1 35/64 + { "1 1/2", 47.803, 2.309, 45.50 }, // 1 25/32 + { "1 3/4", 53.743, 2.309, 51.00 }, // 2 + { "2", 59.614, 2.309, 57.00 }, // 2 1/4 + { "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 }, } - }; const double Hole::metricHoleDiameters[51][4] = @@ -652,6 +682,14 @@ 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 }; +/* 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 }; + const char* Hole::ThreadDirectionEnums[] = { "Right", "Left", nullptr}; PROPERTY_SOURCE(PartDesign::Hole, PartDesign::ProfileBased) @@ -1108,11 +1146,14 @@ std::optional Hole::determineDiameter() const // use normed diameters if possible std::string threadTypeStr = ThreadType.getValueAsString(); - if (threadTypeStr == "ISOMetricProfile" || threadTypeStr == "UNC" - || threadTypeStr == "UNF" || threadTypeStr == "UNEF") { + if (threadDescription[threadType][threadSize].CoreHole > 0) { diameter = threadDescription[threadType][threadSize].CoreHole + clearance; + } // if nothing is available, we must calculate + else if (threadTypeStr == "BSP") { + double thread = 2 * (0.640327 * pitch); + // truncation is allowed by ISO-228 and BS 84 + 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; @@ -1373,6 +1414,20 @@ 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()); + } if (holeCutTypeStr == "None") { HoleCutCustomValues.setReadOnly(true); @@ -2100,34 +2155,65 @@ 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 + // Note that in the ISO standard, Dmaj is called D. + double Dmaj = threadDescription[threadType][threadSize].diameter / 2; // major diameter position 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; 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") { + H = 0.960491 * Pitch; // Height of Sharp V + double radius = 0.137329 * Pitch; // radius of the crest + double h = 0.640627 * Pitch; // height of the thread + // construct the cross section going counter-clockwise + + gp_Pnt p1 = toPnt((Dmaj - h + clearance) * xDir + Pitch / 8 * zDir); + gp_Pnt p4 = toPnt((Dmaj - h + clearance) * xDir + 7 * Pitch / 8 * zDir); + gp_Pnt p5 = toPnt(0.9 * (Dmaj - h) * xDir + 7 * Pitch / 8 * zDir); + gp_Pnt p6 = toPnt(0.9 * (Dmaj - h) * xDir + Pitch / 8 * zDir); + + // Calculate positions for p2 and p3 based on the arc radius + double p23x = Dmaj + clearance - radius * (1 - std::cos(M_PI / 4)); + + gp_Pnt p2 = toPnt(p23x * xDir + 7 * Pitch / 16 * zDir); + gp_Pnt p3 = toPnt(p23x * xDir + 9 * Pitch / 16 * zDir); + gp_Pnt crest = toPnt((Dmaj + clearance) * 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, p5).Edge()); + mkThreadWire.Add(BRepBuilderAPI_MakeEdge(p5, p6).Edge()); + mkThreadWire.Add(BRepBuilderAPI_MakeEdge(p6, p1).Edge()); + } else { + H = sqrt(3) / 2 * Pitch; // height of fundamental triangle + double h = 5 * H / 8; // height of the thread + // 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((Dmaj - h + clearance) * xDir + Pitch / 8 * zDir); + gp_Pnt p2 = toPnt((Dmaj + clearance) * xDir + 7 * Pitch / 16 * zDir); + gp_Pnt p3 = toPnt((Dmaj + clearance) * xDir + 9 * Pitch / 16 * zDir); + gp_Pnt p4 = toPnt((Dmaj - h + clearance) * xDir + 7 * Pitch / 8 * zDir); + gp_Pnt p5 = toPnt(0.9 * (Dmaj - h) * xDir + 7 * Pitch / 8 * zDir); + gp_Pnt p6 = toPnt(0.9 * (Dmaj - h) * xDir + Pitch / 8 * 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, p5).Edge()); + mkThreadWire.Add(BRepBuilderAPI_MakeEdge(p5, p6).Edge()); + mkThreadWire.Add(BRepBuilderAPI_MakeEdge(p6, p1).Edge()); + } + mkThreadWire.Build(); TopoDS_Wire threadWire = mkThreadWire.Wire(); @@ -2162,7 +2248,7 @@ 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); + TopoDS_Shape helix = TopoShape().makeLongHelix(Pitch, helixLength, Dmaj, 0.0, 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 5a5f9dc0b076..d77d13543368 100644 --- a/src/Mod/PartDesign/App/FeatureHole.h +++ b/src/Mod/PartDesign/App/FeatureHole.h @@ -152,6 +152,10 @@ class PartDesignExport Hole : public ProfileBased static const char* ThreadSize_UNEF_Enums[]; static const char* ThreadClass_UNEF_Enums[]; + /* BSP profile */ + static const char* HoleCutType_BSP_Enums[]; + static const char* ThreadSize_BSP_Enums[]; + static const double ThreadRunout[ThreadRunout_size][2]; /* Counter-xxx */ diff --git a/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp b/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp index 4d3a4938798f..1b60b4448a6e 100644 --- a/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp @@ -66,6 +66,7 @@ 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("BSP pipe profile"), QByteArray("BSP")); // read values from the hole properties auto pcHole = getObject(); From 588f4c3b00f7f84afaba2b2c1f1e8544cfff5336 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sat, 3 Aug 2024 06:58:24 -0300 Subject: [PATCH 121/221] feat(PD): ANSI pipe threads --- src/Mod/PartDesign/App/FeatureHole.cpp | 51 ++++++++++++++++++- src/Mod/PartDesign/App/FeatureHole.h | 4 ++ src/Mod/PartDesign/Gui/TaskHoleParameters.cpp | 1 + 3 files changed, 55 insertions(+), 1 deletion(-) diff --git a/src/Mod/PartDesign/App/FeatureHole.cpp b/src/Mod/PartDesign/App/FeatureHole.cpp index c678818ae0f9..1e84a16f2ec7 100644 --- a/src/Mod/PartDesign/App/FeatureHole.cpp +++ b/src/Mod/PartDesign/App/FeatureHole.cpp @@ -67,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", "BSP", nullptr}; +const char* Hole::ThreadTypeEnums[] = { "None", "ISOMetricProfile", "ISOMetricFineProfile", "UNC", "UNF", "UNEF", "NPT", "BSP", nullptr}; const char* Hole::ClearanceMetricEnums[] = { "Standard", "Close", "Wide", nullptr}; const char* Hole::ClearanceUTSEnums[] = { "Normal", "Close", "Loose", nullptr }; const char* Hole::DrillPointEnums[] = { "Flat", "Angled", nullptr}; @@ -400,6 +400,29 @@ const Hole::ThreadDescription Hole::threadDescription[][171] = { "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 @@ -682,6 +705,14 @@ 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", @@ -1154,6 +1185,10 @@ std::optional Hole::determineDiameter() const // 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; + } else { // this fits exactly the definition for ISO metric fine diameter = diameter - pitch + clearance; @@ -1428,6 +1463,20 @@ void Hole::onChanged(const App::Property* prop) 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()); + } if (holeCutTypeStr == "None") { HoleCutCustomValues.setReadOnly(true); diff --git a/src/Mod/PartDesign/App/FeatureHole.h b/src/Mod/PartDesign/App/FeatureHole.h index d77d13543368..e1ee95e69db7 100644 --- a/src/Mod/PartDesign/App/FeatureHole.h +++ b/src/Mod/PartDesign/App/FeatureHole.h @@ -152,6 +152,10 @@ 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[]; diff --git a/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp b/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp index 1b60b4448a6e..6be7519f899b 100644 --- a/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp @@ -66,6 +66,7 @@ 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")); // read values from the hole properties From df22f8060dec34d4ee6f5d8dd1c8f8b8d78268e6 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sat, 3 Aug 2024 19:18:32 -0300 Subject: [PATCH 122/221] feat(PD): tapered threads support, NPT and BSPT are now possible --- src/Mod/PartDesign/App/FeatureHole.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Mod/PartDesign/App/FeatureHole.cpp b/src/Mod/PartDesign/App/FeatureHole.cpp index 1e84a16f2ec7..3cafc412cfd8 100644 --- a/src/Mod/PartDesign/App/FeatureHole.cpp +++ b/src/Mod/PartDesign/App/FeatureHole.cpp @@ -2297,7 +2297,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, Dmaj, 0.0, leftHanded); + double helixAngle = + Tapered.getValue() ? TaperedAngle.getValue() - 90 : 0.0; + TopoDS_Shape helix = TopoShape().makeLongHelix(Pitch, helixLength, Dmaj, 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. From 3e161f9c9635d903a2660bdf4aa61f8fec86d6fe Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sun, 4 Aug 2024 14:07:57 -0300 Subject: [PATCH 123/221] refactor(PD): change tabs to whitespaces --- src/Mod/PartDesign/App/FeatureHole.cpp | 184 ++++++++++++------------- 1 file changed, 92 insertions(+), 92 deletions(-) diff --git a/src/Mod/PartDesign/App/FeatureHole.cpp b/src/Mod/PartDesign/App/FeatureHole.cpp index 3cafc412cfd8..79c651dd4f44 100644 --- a/src/Mod/PartDesign/App/FeatureHole.cpp +++ b/src/Mod/PartDesign/App/FeatureHole.cpp @@ -88,53 +88,53 @@ 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} { - { "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) */ { @@ -458,59 +458,59 @@ 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, 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} + { 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] = From 80d4185c097d9e45dc2f4ca64f542f9fcece44af Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Mon, 5 Aug 2024 19:16:14 -0300 Subject: [PATCH 124/221] refactor(PD): new cut profile for threads fixes tapered threds removing 2 points increases performance around 10% when doing an M1 in my imprecise testing --- src/Mod/PartDesign/App/FeatureHole.cpp | 87 +++++++++++++++++--------- 1 file changed, 56 insertions(+), 31 deletions(-) diff --git a/src/Mod/PartDesign/App/FeatureHole.cpp b/src/Mod/PartDesign/App/FeatureHole.cpp index 79c651dd4f44..180c05058589 100644 --- a/src/Mod/PartDesign/App/FeatureHole.cpp +++ b/src/Mod/PartDesign/App/FeatureHole.cpp @@ -2204,8 +2204,8 @@ 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. - double Dmaj = threadDescription[threadType][threadSize].diameter / 2; // major diameter position + // Rmaj is half of the major diameter + double Rmaj = threadDescription[threadType][threadSize].diameter / 2; double Pitch = getThreadPitch(); double clearance; // clearance to be added on the diameter @@ -2213,6 +2213,8 @@ TopoDS_Shape Hole::makeThread(const gp_Vec& xDir, const gp_Vec& zDir, double len clearance = CustomThreadClearance.getValue() / 2; else clearance = getThreadClassClearance() / 2; + double RmajC = Rmaj + clearance; + double marginZ = 0.001; BRepBuilderAPI_MakeWire mkThreadWire; double H; @@ -2220,47 +2222,70 @@ TopoDS_Shape Hole::makeThread(const gp_Vec& xDir, const gp_Vec& zDir, double len if (threadTypeStr == "BSP") { H = 0.960491 * Pitch; // Height of Sharp V double radius = 0.137329 * Pitch; // radius of the crest - double h = 0.640627 * Pitch; // height of the thread // construct the cross section going counter-clockwise - - gp_Pnt p1 = toPnt((Dmaj - h + clearance) * xDir + Pitch / 8 * zDir); - gp_Pnt p4 = toPnt((Dmaj - h + clearance) * xDir + 7 * Pitch / 8 * zDir); - gp_Pnt p5 = toPnt(0.9 * (Dmaj - h) * xDir + 7 * Pitch / 8 * zDir); - gp_Pnt p6 = toPnt(0.9 * (Dmaj - h) * xDir + Pitch / 8 * zDir); - - // Calculate positions for p2 and p3 based on the arc radius - double p23x = Dmaj + clearance - radius * (1 - std::cos(M_PI / 4)); - - gp_Pnt p2 = toPnt(p23x * xDir + 7 * Pitch / 16 * zDir); - gp_Pnt p3 = toPnt(p23x * xDir + 9 * Pitch / 16 * zDir); - gp_Pnt crest = toPnt((Dmaj + clearance) * xDir + Pitch / 2 * zDir); + // -------------- + // 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, p5).Edge()); - mkThreadWire.Add(BRepBuilderAPI_MakeEdge(p5, p6).Edge()); - mkThreadWire.Add(BRepBuilderAPI_MakeEdge(p6, p1).Edge()); + mkThreadWire.Add(BRepBuilderAPI_MakeEdge(p4, p1).Edge()); } else { H = sqrt(3) / 2 * Pitch; // height of fundamental triangle - double h = 5 * H / 8; // height of the thread + double h = 7 * H / 8; // distance from Rmaj to the base // 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((Dmaj - h + clearance) * xDir + Pitch / 8 * zDir); - gp_Pnt p2 = toPnt((Dmaj + clearance) * xDir + 7 * Pitch / 16 * zDir); - gp_Pnt p3 = toPnt((Dmaj + clearance) * xDir + 9 * Pitch / 16 * zDir); - gp_Pnt p4 = toPnt((Dmaj - h + clearance) * xDir + 7 * Pitch / 8 * zDir); - gp_Pnt p5 = toPnt(0.9 * (Dmaj - h) * xDir + 7 * Pitch / 8 * zDir); - gp_Pnt p6 = toPnt(0.9 * (Dmaj - h) * xDir + Pitch / 8 * zDir); + // 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, p5).Edge()); - mkThreadWire.Add(BRepBuilderAPI_MakeEdge(p5, p6).Edge()); - mkThreadWire.Add(BRepBuilderAPI_MakeEdge(p6, p1).Edge()); + mkThreadWire.Add(BRepBuilderAPI_MakeEdge(p4, p1).Edge()); } mkThreadWire.Build(); @@ -2299,7 +2324,7 @@ TopoDS_Shape Hole::makeThread(const gp_Vec& xDir, const gp_Vec& zDir, double len } double helixAngle = Tapered.getValue() ? TaperedAngle.getValue() - 90 : 0.0; - TopoDS_Shape helix = TopoShape().makeLongHelix(Pitch, helixLength, Dmaj, helixAngle, leftHanded); + 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. From 17283b62905c54365a63564fa9e7a50ab6989160 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sat, 10 Aug 2024 13:50:16 -0300 Subject: [PATCH 125/221] fix(Test): sketcher external geometry removed test --- .../SketcherTests/TestSketcherSolver.py | 46 ++++++++----------- 1 file changed, 20 insertions(+), 26 deletions(-) diff --git a/src/Mod/Sketcher/SketcherTests/TestSketcherSolver.py b/src/Mod/Sketcher/SketcherTests/TestSketcherSolver.py index 0e92ad22ff66..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,24 @@ def testRemovedExternalGeometryReference(self): hole.DepthType = 0 hole.DrillPoint = 1 hole.DrillForDepth = 0 - hole.Tapered = 0 self.Doc.recompute() - self.assertEqual(len(hole.Shape.Edges), 12) - hole.Threaded = True - hole.ModelThread = True - # body.addObject(hole) # Commented out as this is a duplicate - # (already performed after hole = self.Doc.addObject("PartDesign::Hole", "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), 32) - 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), 12) + self.assertEqual(len(hole.Shape.Edges), 17) self.assertEqual(len(sketch2.ExternalGeometry), 0) def testSaveLoadWithExternalGeometryReference(self): From edb565046d9f6d0a2642f4c55b45a668f5e8c9a1 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Thu, 8 Aug 2024 15:15:42 -0300 Subject: [PATCH 126/221] feat(PD): BSW threads --- src/Mod/PartDesign/App/FeatureHole.cpp | 93 +++++++++++++++---- src/Mod/PartDesign/App/FeatureHole.h | 6 ++ src/Mod/PartDesign/Gui/TaskHoleParameters.cpp | 1 + 3 files changed, 84 insertions(+), 16 deletions(-) diff --git a/src/Mod/PartDesign/App/FeatureHole.cpp b/src/Mod/PartDesign/App/FeatureHole.cpp index 180c05058589..465821c3a38d 100644 --- a/src/Mod/PartDesign/App/FeatureHole.cpp +++ b/src/Mod/PartDesign/App/FeatureHole.cpp @@ -67,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", "NPT", "BSP", nullptr}; +const char* Hole::ThreadTypeEnums[] = { "None", "ISOMetricProfile", "ISOMetricFineProfile", "UNC", "UNF", "UNEF", "NPT", "BSP", "BSW", nullptr}; const char* Hole::ClearanceMetricEnums[] = { "Standard", "Close", "Wide", nullptr}; const char* Hole::ClearanceUTSEnums[] = { "Normal", "Close", "Loose", nullptr }; const char* Hole::DrillPointEnums[] = { "Flat", "Angled", nullptr}; @@ -427,20 +427,20 @@ const Hole::ThreadDescription Hole::threadDescription[][171] = // Parallel - ISO 228-1 // Tapered - ISO 7-1 { - { "1/16", 7.723, 0.907, 6.6 }, // G - { "1/8", 9.728, 0.907, 8.8 }, // 11/32 - { "1/4", 13.157, 1.337, 11.8 }, // 29/64 - { "3/8", 16.662, 1.337, 15.25 }, // 19/32 - { "1/2", 20.955, 1.814, 19.00 }, // 3/4 - { "5/8", 22.911, 1.814, 21.00 }, // 53/64 - { "3/4", 26.441, 1.814, 24.50 }, // 31/32 - { "7/8", 30.201, 1.814, 28.25 }, // 1 7/64 - { "1", 33.249, 2.309, 30.75 }, // 1 13/64 + { "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 35/64 - { "1 1/2", 47.803, 2.309, 45.50 }, // 1 25/32 - { "1 3/4", 53.743, 2.309, 51.00 }, // 2 - { "2", 59.614, 2.309, 57.00 }, // 2 1/4 + { "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 }, @@ -451,6 +451,40 @@ const Hole::ThreadDescription Hole::threadDescription[][171] = { "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 }, } }; @@ -721,6 +755,16 @@ const char* Hole::ThreadSize_BSP_Enums[] = { "1/16", "1/8", "1/4", "3/8", "1/2 "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 }; + const char* Hole::ThreadDirectionEnums[] = { "Right", "Left", nullptr}; PROPERTY_SOURCE(PartDesign::Hole, PartDesign::ProfileBased) @@ -1180,7 +1224,10 @@ std::optional Hole::determineDiameter() const if (threadDescription[threadType][threadSize].CoreHole > 0) { diameter = threadDescription[threadType][threadSize].CoreHole + clearance; } // if nothing is available, we must calculate - else if (threadTypeStr == "BSP") { + else if ( + threadTypeStr == "BSP" + || threadTypeStr == "BSW" + ) { double thread = 2 * (0.640327 * pitch); // truncation is allowed by ISO-228 and BS 84 diameter = diameter - thread * 0.75 + clearance; @@ -1477,6 +1524,20 @@ void Hole::onChanged(const App::Property* prop) 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()); + } if (holeCutTypeStr == "None") { HoleCutCustomValues.setReadOnly(true); @@ -2219,7 +2280,7 @@ TopoDS_Shape Hole::makeThread(const gp_Vec& xDir, const gp_Vec& zDir, double len BRepBuilderAPI_MakeWire mkThreadWire; double H; std::string threadTypeStr = ThreadType.getValueAsString(); - if (threadTypeStr == "BSP") { + if (threadTypeStr == "BSP" || threadTypeStr == "BSW") { H = 0.960491 * Pitch; // Height of Sharp V double radius = 0.137329 * Pitch; // radius of the crest // construct the cross section going counter-clockwise diff --git a/src/Mod/PartDesign/App/FeatureHole.h b/src/Mod/PartDesign/App/FeatureHole.h index e1ee95e69db7..9390c2d4d450 100644 --- a/src/Mod/PartDesign/App/FeatureHole.h +++ b/src/Mod/PartDesign/App/FeatureHole.h @@ -160,6 +160,12 @@ class PartDesignExport Hole : public ProfileBased 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[]; + + static const double ThreadRunout[ThreadRunout_size][2]; /* Counter-xxx */ diff --git a/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp b/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp index 6be7519f899b..33988bb33755 100644 --- a/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp @@ -68,6 +68,7 @@ TaskHoleParameters::TaskHoleParameters(ViewProviderHole* HoleView, QWidget* pare 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")); // read values from the hole properties auto pcHole = getObject(); From ce91285e4de73acf4a434a4ef4f729c00fe30a65 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Tue, 13 Aug 2024 14:52:06 -0300 Subject: [PATCH 127/221] feat(PD): BSF threads --- src/Mod/PartDesign/App/FeatureHole.cpp | 64 ++++++++++++++++++- src/Mod/PartDesign/App/FeatureHole.h | 4 ++ src/Mod/PartDesign/Gui/TaskHoleParameters.cpp | 1 + 3 files changed, 67 insertions(+), 2 deletions(-) diff --git a/src/Mod/PartDesign/App/FeatureHole.cpp b/src/Mod/PartDesign/App/FeatureHole.cpp index 465821c3a38d..2ea7f705a2bb 100644 --- a/src/Mod/PartDesign/App/FeatureHole.cpp +++ b/src/Mod/PartDesign/App/FeatureHole.cpp @@ -67,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", "NPT", "BSP", "BSW", 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}; @@ -485,6 +485,41 @@ const Hole::ThreadDescription Hole::threadDescription[][171] = { "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 }, } }; @@ -765,6 +800,16 @@ const char* Hole::ThreadSize_BSW_Enums[] = { "1/8", "3/16", "1/4", "5/16", "3/ "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) @@ -1227,6 +1272,7 @@ std::optional Hole::determineDiameter() const else if ( threadTypeStr == "BSP" || threadTypeStr == "BSW" + || threadTypeStr == "BSF" ) { double thread = 2 * (0.640327 * pitch); // truncation is allowed by ISO-228 and BS 84 @@ -1538,6 +1584,20 @@ void Hole::onChanged(const App::Property* prop) 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); @@ -2280,7 +2340,7 @@ TopoDS_Shape Hole::makeThread(const gp_Vec& xDir, const gp_Vec& zDir, double len BRepBuilderAPI_MakeWire mkThreadWire; double H; std::string threadTypeStr = ThreadType.getValueAsString(); - if (threadTypeStr == "BSP" || threadTypeStr == "BSW") { + 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 diff --git a/src/Mod/PartDesign/App/FeatureHole.h b/src/Mod/PartDesign/App/FeatureHole.h index 9390c2d4d450..aaba92262353 100644 --- a/src/Mod/PartDesign/App/FeatureHole.h +++ b/src/Mod/PartDesign/App/FeatureHole.h @@ -165,6 +165,10 @@ class PartDesignExport Hole : public ProfileBased 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]; diff --git a/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp b/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp index 33988bb33755..06e55429d5a7 100644 --- a/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp @@ -69,6 +69,7 @@ TaskHoleParameters::TaskHoleParameters(ViewProviderHole* HoleView, QWidget* pare 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(); From 003e239dafdd7d8450e1514e8354c8a72f65161b Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Wed, 7 Aug 2024 22:37:41 -0300 Subject: [PATCH 128/221] feat(PD): set the proper angle for threads and countersinks apply the recommended thread angle only if the user hasn't set an angle --- src/Mod/PartDesign/App/FeatureHole.cpp | 49 ++++++++++++++++++-------- src/Mod/PartDesign/App/FeatureHole.h | 2 ++ 2 files changed, 37 insertions(+), 14 deletions(-) diff --git a/src/Mod/PartDesign/App/FeatureHole.cpp b/src/Mod/PartDesign/App/FeatureHole.cpp index 2ea7f705a2bb..06770a4baf6f 100644 --- a/src/Mod/PartDesign/App/FeatureHole.cpp +++ b/src/Mod/PartDesign/App/FeatureHole.cpp @@ -1084,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 @@ -1103,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); @@ -1125,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(); @@ -1425,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) { @@ -1657,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); @@ -1691,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(); diff --git a/src/Mod/PartDesign/App/FeatureHole.h b/src/Mod/PartDesign/App/FeatureHole.h index aaba92262353..8164c9a7dcb6 100644 --- a/src/Mod/PartDesign/App/FeatureHole.h +++ b/src/Mod/PartDesign/App/FeatureHole.h @@ -236,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); From 58344a5904602bd8b6ae70d5edf01584f72a3547 Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Sat, 14 Dec 2024 09:52:01 -0300 Subject: [PATCH 129/221] refactor(PD): rename CoreHole to TapDrill using a drill and cutting tap is not the only method to create a thread, and this sizes should be optional. i would prefer using the minor diameter of threads, leaving full thread depth and let the user adjust according to their needs using the custom clearance --- src/Mod/PartDesign/App/FeatureHole.cpp | 10 +++++----- src/Mod/PartDesign/App/FeatureHole.h | 2 +- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/Mod/PartDesign/App/FeatureHole.cpp b/src/Mod/PartDesign/App/FeatureHole.cpp index 06770a4baf6f..d4329b4a3109 100644 --- a/src/Mod/PartDesign/App/FeatureHole.cpp +++ b/src/Mod/PartDesign/App/FeatureHole.cpp @@ -92,8 +92,8 @@ const Hole::ThreadDescription Hole::threadDescription[][171] = }, /* 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 }, @@ -136,7 +136,7 @@ const Hole::ThreadDescription Hole::threadDescription[][171] = { "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 }, @@ -1275,8 +1275,8 @@ std::optional Hole::determineDiameter() const // use normed diameters if possible std::string threadTypeStr = ThreadType.getValueAsString(); - if (threadDescription[threadType][threadSize].CoreHole > 0) { - 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" diff --git a/src/Mod/PartDesign/App/FeatureHole.h b/src/Mod/PartDesign/App/FeatureHole.h index 8164c9a7dcb6..b239f44e1b8c 100644 --- a/src/Mod/PartDesign/App/FeatureHole.h +++ b/src/Mod/PartDesign/App/FeatureHole.h @@ -90,7 +90,7 @@ class PartDesignExport Hole : public ProfileBased const char * designation; double diameter; double pitch; - double CoreHole; + double TapDrill; }; static const ThreadDescription threadDescription[][171]; From 939506007dcdb8a60fa458eb3d3de2129e3e164e Mon Sep 17 00:00:00 2001 From: Bas Ruigrok Date: Wed, 4 Dec 2024 21:49:15 +0100 Subject: [PATCH 130/221] Gui: Fix Blender and Revit navigation issues with shift key in sketcher --- src/Gui/BlenderNavigationStyle.cpp | 9 +++++++-- src/Gui/RevitNavigationStyle.cpp | 4 ++-- 2 files changed, 9 insertions(+), 4 deletions(-) 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/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; } From 7e1b1abddd3f0ecc87e97cd809d8ff83a139cc2d Mon Sep 17 00:00:00 2001 From: David Carter Date: Wed, 11 Dec 2024 09:26:06 -0500 Subject: [PATCH 131/221] Materials: Change display of Quantity values The default display type of quantity objects is fixed point resulting in insufficient accuracy when changing unit systems, or when the values are small. This fix changes the default format from 'Fixed' to the more apt 'Default' format. This allows the displayed values to scale as appropriate. Fixes #18149 --- src/App/PropertyUnits.cpp | 8 +- src/App/PropertyUnits.h | 10 + src/Mod/Material/App/MaterialLoader.cpp | 8 +- src/Mod/Material/App/MaterialValue.cpp | 5 + src/Mod/Material/App/MaterialValue.h | 5 + src/Mod/Material/App/Materials.cpp | 14 +- src/Mod/Material/App/Materials.h | 5 - src/Mod/Material/Gui/ArrayModel.cpp | 7 +- .../materialtests/TestMaterialCreation.py | 9 +- .../Material/materialtests/TestMaterials.py | 186 +++++++++++------- src/Mod/Part/App/PartFeature.cpp | 9 +- tests/src/Mod/Material/App/TestMaterials.cpp | 5 +- 12 files changed, 182 insertions(+), 89 deletions(-) diff --git a/src/App/PropertyUnits.cpp b/src/App/PropertyUnits.cpp index 69e887039fae..b9fec4fd413a 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 @@ -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; } //************************************************************************** diff --git a/src/App/PropertyUnits.h b/src/App/PropertyUnits.h index b67c82f74014..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 diff --git a/src/Mod/Material/App/MaterialLoader.cpp b/src/Mod/Material/App/MaterialLoader.cpp index 9ee6f773535a..a32e1baf1849 100644 --- a/src/Mod/Material/App/MaterialLoader.cpp +++ b/src/Mod/Material/App/MaterialLoader.cpp @@ -117,6 +117,7 @@ std::shared_ptr MaterialYamlEntry::read2DArray(const YAML::Node for (std::size_t j = 0; j < yamlRow.size(); j++) { Base::Quantity qq = Base::Quantity::parse(QString::fromStdString(yamlRow[j].as())); + qq.setFormat(MaterialValue::getQuantityFormat()); row->push_back(QVariant::fromValue(qq)); } array2d->addRow(row); @@ -143,6 +144,7 @@ std::shared_ptr MaterialYamlEntry::read3DArray(const YAML::Node for (auto it = yamlDepth.begin(); it != yamlDepth.end(); it++) { auto depthValue = Base::Quantity::parse(QString::fromStdString(it->first.as())); + depthValue.setFormat(MaterialValue::getQuantityFormat()); array3d->addDepth(depth, depthValue); @@ -152,8 +154,10 @@ 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( + QString::fromStdString(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..49a4410e0a59 100644 --- a/src/Mod/Material/App/MaterialValue.cpp +++ b/src/Mod/Material/App/MaterialValue.cpp @@ -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) 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..24edb1a16aad 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); @@ -134,7 +132,7 @@ QString MaterialProperty::getString() const 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,7 +178,7 @@ 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.getValue(), 0, 'g', MaterialValue::PRECISION) .arg(quantity.getUnit().getString()); return string; } @@ -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(); } @@ -387,7 +385,9 @@ 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) @@ -1046,7 +1046,7 @@ Material::getValueString(const std::mapgetValue().toString(); } 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/ArrayModel.cpp b/src/Mod/Material/Gui/ArrayModel.cpp index a6b7bac366fc..fc6f2e7ea4a4 100644 --- a/src/Mod/Material/Gui/ArrayModel.cpp +++ b/src/Mod/Material/Gui/ArrayModel.cpp @@ -94,6 +94,7 @@ QVariant Array2DModel::data(const QModelIndex& index, int role) const auto column = _property->getColumnType(index.column()); if (column == Materials::MaterialValue::Quantity) { Base::Quantity qq = Base::Quantity(0, _property->getColumnUnits(index.column())); + qq.setFormat(Materials::MaterialValue::getQuantityFormat()); return QVariant::fromValue(qq); } } @@ -237,6 +238,7 @@ QVariant Array3DDepthModel::data(const QModelIndex& index, int role) const try { Base::Quantity qq = Base::Quantity(0, _property->getColumnUnits(0)); + 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)); + qq.setFormat(Materials::MaterialValue::getQuantityFormat()); + _value->addDepth(row, qq); } endInsertRows(); @@ -392,6 +396,7 @@ QVariant Array3DModel::data(const QModelIndex& index, int role) const try { Base::Quantity qq = Base::Quantity(0, _property->getColumnUnits(index.column() + 1)); + qq.setFormat(Materials::MaterialValue::getQuantityFormat()); return QVariant::fromValue(qq); } catch (const Materials::InvalidIndex&) { 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/Part/App/PartFeature.cpp b/src/Mod/Part/App/PartFeature.cpp index 31a5c3f9b3c4..b4550f49a3e8 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) @@ -106,18 +108,24 @@ Feature::Feature() static_cast(App::Prop_ReadOnly | App::Prop_Output | App::Prop_NoRecompute | App::Prop_NoPersist), "Feature density"); + Density.setFormat( + Base::QuantityFormat(Base::QuantityFormat::NumberFormat::Default, MaterialPrecision)); ADD_PROPERTY_TYPE(Mass, (0.0), group, static_cast(App::Prop_ReadOnly | App::Prop_Output | App::Prop_NoRecompute | App::Prop_NoPersist), "Feature mass"); + Mass.setFormat( + Base::QuantityFormat(Base::QuantityFormat::NumberFormat::Default, MaterialPrecision)); ADD_PROPERTY_TYPE(Volume, (1.0), group, static_cast(App::Prop_ReadOnly | App::Prop_Output | App::Prop_NoRecompute | App::Prop_NoPersist), "Feature volume"); + Volume.setFormat( + Base::QuantityFormat(Base::QuantityFormat::NumberFormat::Default, MaterialPrecision)); } Feature::~Feature() = default; @@ -1553,7 +1561,6 @@ void Feature::updatePhysicalProperties() Mass.setValue(Volume.getValue() * Density.getValue()); } else { // No shape - Base::Console().Log("No shape defined\n"); Volume.setValue(0.0); Mass.setValue(0.0); } diff --git a/tests/src/Mod/Material/App/TestMaterials.cpp b/tests/src/Mod/Material/App/TestMaterials.cpp index bdbc7d3d3a7c..695e979e053b 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 @@ -223,7 +224,9 @@ TEST_F(TestMaterial, TestAddAppearanceModel) QString parseQuantity(const char *string) { QString value = QString::fromStdString(string); - return Base::Quantity::parse(value).getUserString(); + auto quantity = Base::Quantity::parse(value); + quantity.setFormat(Materials::MaterialValue::getQuantityFormat()); + return quantity.getUserString(); } TEST_F(TestMaterial, TestCalculiXSteel) From cac8eb0859880db9be5770e0a441c211368b1dff Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Mon, 16 Dec 2024 14:43:58 +0100 Subject: [PATCH 132/221] Assembly: Joint creation presolve: move part2 rather than part1 when both are unconnected. --- src/Mod/Assembly/JointObject.py | 36 ++++++++++++++++----------------- 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/Mod/Assembly/JointObject.py b/src/Mod/Assembly/JointObject.py index fdac6ed8247d..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 From b62f971ed4fb4f165168240c870157d2e8f49ed0 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Tue, 17 Dec 2024 17:27:08 +0100 Subject: [PATCH 133/221] BIM: Fixed structures calculation mode - fixes #18453 --- src/Mod/BIM/ArchStructure.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) 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: From a0e1a31623e334d7186e687c33fad3887e91ee2e Mon Sep 17 00:00:00 2001 From: wwmayer Date: Fri, 20 Dec 2024 17:42:02 +0100 Subject: [PATCH 134/221] Test: Support of parallel execution of reader tests (#18587) * Tests: Initialize xerces sub-system in order to parse XML files * Test: Support of parallel execution of reader tests Fixes #18549 --- tests/src/App/Property.cpp | 12 +- tests/src/Base/Reader.cpp | 222 ++++++++++++++++------------ tests/src/Mod/Mesh/App/Importer.cpp | 12 +- 3 files changed, 146 insertions(+), 100 deletions(-) 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/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/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"); From a58c3caac1e672247066fa273c7058ea5b3e299d Mon Sep 17 00:00:00 2001 From: marioalexis Date: Wed, 18 Sep 2024 00:31:52 -0300 Subject: [PATCH 135/221] Fem: Fix mesh export to vtk formats --- src/Mod/Fem/App/AppFemPy.cpp | 25 +++++- src/Mod/Fem/App/FemMesh.cpp | 14 ++-- src/Mod/Fem/App/FemMesh.h | 1 + src/Mod/Fem/App/FemVTKTools.cpp | 76 ++++++++++--------- src/Mod/Fem/App/FemVTKTools.h | 6 +- src/Mod/Fem/Gui/DlgSettingsFemInOutVtk.ui | 35 +++++++++ src/Mod/Fem/Gui/DlgSettingsFemInOutVtkImp.cpp | 19 +++++ src/Mod/Fem/Gui/DlgSettingsFemInOutVtkImp.h | 1 + 8 files changed, 131 insertions(+), 46 deletions(-) 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/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/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; }; From a8f2ddb03841134bf28bf292648a3a6861d28165 Mon Sep 17 00:00:00 2001 From: wmayer Date: Tue, 17 Dec 2024 17:08:28 +0100 Subject: [PATCH 136/221] Gui: Move Python functions from Application to ApplicationPy This reduces build time when adding new Python functions because only one file must be compiled. Handles also many linter warnings. --- src/Gui/Application.cpp | 5 +- src/Gui/Application.h | 83 +---- src/Gui/ApplicationPy.cpp | 673 ++++++++++++++++++++++---------------- src/Gui/ApplicationPy.h | 120 +++++++ 4 files changed, 512 insertions(+), 369 deletions(-) create mode 100644 src/Gui/ApplicationPy.h diff --git a/src/Gui/Application.cpp b/src/Gui/Application.cpp index 80bf156e5937..17da60bd3026 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"), diff --git a/src/Gui/Application.h b/src/Gui/Application.h index 09d832e1af28..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; @@ -293,89 +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* 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[]; - 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 f7d0fe301fa2..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,126 +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."}, - {"showPreferencesByName", (PyCFunction) Application::sShowPreferencesByName, 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) Application::sCreateViewer, METH_VARARGS, + {"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" @@ -421,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" @@ -430,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; @@ -490,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; @@ -519,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; @@ -536,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); } @@ -544,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; @@ -557,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; @@ -571,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); @@ -645,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); @@ -667,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); @@ -683,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; @@ -708,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); @@ -722,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(); @@ -738,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); @@ -757,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 @@ -778,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 @@ -799,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())); @@ -812,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(); @@ -860,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; @@ -876,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) { @@ -895,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()) { @@ -911,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 @@ -922,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) { @@ -965,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 @@ -1000,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; @@ -1021,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; @@ -1057,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) { @@ -1079,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; @@ -1090,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); @@ -1110,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); @@ -1129,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); @@ -1148,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)) { @@ -1164,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); } @@ -1184,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); @@ -1236,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); @@ -1253,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) { @@ -1292,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; @@ -1314,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; @@ -1332,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; @@ -1358,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; @@ -1409,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); @@ -1425,17 +1505,18 @@ 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; @@ -1456,7 +1537,7 @@ PyObject* Application::sShowPreferences(PyObject* /*self*/, PyObject* args) Py_Return; } -PyObject* Application::sShowPreferencesByName(PyObject* /*self*/, PyObject* args) +PyObject* ApplicationPy::sShowPreferencesByName(PyObject* /*self*/, PyObject* args) { char* pstr = nullptr; const char* prefType = ""; @@ -1477,40 +1558,45 @@ PyObject* Application::sShowPreferencesByName(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"); @@ -1539,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); @@ -1584,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()); @@ -1596,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)); @@ -1609,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)); @@ -1622,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)); @@ -1635,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)); @@ -1648,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; @@ -1668,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 From 344b655f16d3fea1f457312205776a0f5b47cb8a Mon Sep 17 00:00:00 2001 From: Benjamin Nauck Date: Wed, 18 Dec 2024 16:16:15 +0100 Subject: [PATCH 137/221] Move where icons in menus attribute is set Without this, icons are not visible on macOS --- src/Gui/Application.cpp | 4 ++++ src/Gui/StartupProcess.cpp | 2 -- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/Gui/Application.cpp b/src/Gui/Application.cpp index 17da60bd3026..dec82e9aa098 100644 --- a/src/Gui/Application.cpp +++ b/src/Gui/Application.cpp @@ -2283,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/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() From d4f6fda0555b48a2ad9c140e32de7bd7bf441454 Mon Sep 17 00:00:00 2001 From: Andrea Date: Thu, 19 Dec 2024 20:54:29 +0100 Subject: [PATCH 138/221] [Mod] clean DrawingExport.cpp Removed dead code [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- src/Mod/Drawing/App/DrawingExport.cpp | 50 +-------------------------- 1 file changed, 1 insertion(+), 49 deletions(-) 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&) { From ca3cb78ad5816900ba1965535c62c6ed17cb725b Mon Sep 17 00:00:00 2001 From: Alfredo Monclus Date: Wed, 18 Dec 2024 17:53:03 -0300 Subject: [PATCH 139/221] fix(PD): size should be enabled if profile is not none --- src/Mod/PartDesign/Gui/TaskHoleParameters.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp b/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp index 4d3a4938798f..0173d7cdc328 100644 --- a/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp +++ b/src/Mod/PartDesign/Gui/TaskHoleParameters.cpp @@ -81,7 +81,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(); From 0d628cb5fcb6a8c18ae46370e43d8a192ac3a9df Mon Sep 17 00:00:00 2001 From: Tobias Frost Date: Mon, 16 Dec 2024 17:55:49 +0100 Subject: [PATCH 140/221] Fix SPDX Identifier to match license --- src/Mod/Part/App/MeasureInfo.h | 2 +- src/Mod/TechDraw/App/DimensionAutoCorrect.cpp | 2 +- src/Mod/TechDraw/App/DimensionAutoCorrect.h | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/Mod/Part/App/MeasureInfo.h b/src/Mod/Part/App/MeasureInfo.h index 678dd9e1d51d..f389454f6416 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 * diff --git a/src/Mod/TechDraw/App/DimensionAutoCorrect.cpp b/src/Mod/TechDraw/App/DimensionAutoCorrect.cpp index 02ff03fa318f..51b2b0807c1e 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 * * * 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 * * * From 3c367b85cd0b98ec400a1e912dac7f19d53e3cf2 Mon Sep 17 00:00:00 2001 From: wmayer Date: Thu, 19 Dec 2024 19:52:49 +0100 Subject: [PATCH 141/221] Part: Fix getIcon() of several view providers to return full path name of the icon file --- src/Mod/Part/BOPTools/JoinFeatures.py | 6 +++--- src/Mod/Part/BOPTools/SplitFeatures.py | 6 +++--- src/Mod/Part/BOPTools/ToleranceFeatures.py | 2 +- src/Mod/Part/CompoundTools/CompoundFilter.py | 2 +- src/Mod/Part/JoinFeatures.py | 19 ++++++------------- 5 files changed, 14 insertions(+), 21 deletions(-) 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/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 - From 2b201dd19ab468624a6adac9918774ba4363e124 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Fri, 20 Dec 2024 14:02:17 +0100 Subject: [PATCH 142/221] BIM: Added frame to welcome dialog - supersedes #17393 --- src/Mod/BIM/Resources/ui/dialogWelcome.ui | 179 ++++++++++++---------- 1 file changed, 99 insertions(+), 80 deletions(-) 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 + + + + + From cad2f33b4e02b92659de3fb27f686f91c94b447f Mon Sep 17 00:00:00 2001 From: wmayer Date: Wed, 18 Dec 2024 19:02:10 +0100 Subject: [PATCH 143/221] MSVC: Fix linking error when 3Dconnexion support is set to 'Raw input' --- cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake | 2 ++ 1 file changed, 2 insertions(+) diff --git a/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake b/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake index d34b42a4f846..9ebfaef1ba21 100644 --- a/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake +++ b/cMake/FreeCAD_Helpers/InitializeFreeCADBuildOptions.cmake @@ -165,6 +165,8 @@ macro(InitializeFreeCADBuildOptions) elseif(FREECAD_3DCONNEXION_SUPPORT STREQUAL "Both" AND FREECAD_USE_3DCONNEXION) set(FREECAD_USE_3DCONNEXION_NAVLIB ON) set(FREECAD_USE_3DCONNEXION_RAWINPUT ON) + elseif(FREECAD_3DCONNEXION_SUPPORT STREQUAL "Raw input" AND FREECAD_USE_3DCONNEXION) + set(FREECAD_USE_3DCONNEXION_RAWINPUT ON) endif() if(MSVC) From ab508f99c7f08b24d86d41124ae5446cd50f95f5 Mon Sep 17 00:00:00 2001 From: marcuspollio Date: Sat, 21 Dec 2024 18:58:27 +0100 Subject: [PATCH 144/221] GUI: cleanup Privacy Policy formatting --- PRIVACY_POLICY.md | 12 ++++-------- 1 file changed, 4 insertions(+), 8 deletions(-) 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 From 07586301039731fd4c3f72bcd653f6fa990ba55f Mon Sep 17 00:00:00 2001 From: luzpaz Date: Wed, 18 Dec 2024 22:58:42 +0000 Subject: [PATCH 145/221] Fix various typos --- src/Mod/BIM/ArchCommands.py | 4 ++-- src/Mod/BIM/nativeifc/ifc_export.py | 2 +- src/Mod/BIM/nativeifc/ifc_tools.py | 2 +- src/Mod/CAM/CAMTests/PathTestUtils.py | 2 +- src/Mod/Measure/Gui/TaskMeasure.cpp | 4 ++-- src/Mod/Spreadsheet/App/Sheet.cpp | 2 +- 6 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/Mod/BIM/ArchCommands.py b/src/Mod/BIM/ArchCommands.py index 0fcf73776503..2aad5db3e9dd 100644 --- a/src/Mod/BIM/ArchCommands.py +++ b/src/Mod/BIM/ArchCommands.py @@ -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: @@ -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 diff --git a/src/Mod/BIM/nativeifc/ifc_export.py b/src/Mod/BIM/nativeifc/ifc_export.py index 4d52f9dd059e..1fcf0694f1db 100644 --- a/src/Mod/BIM/nativeifc/ifc_export.py +++ b/src/Mod/BIM/nativeifc/ifc_export.py @@ -234,7 +234,7 @@ def get_text(annotation): def get_dimension(annotation): """Determines if an IfcAnnotation is representing a dimension. Returns a list containing the representation, two points indicating - the mesured points, and optionally a third point indicating where + the measured points, and optionally a third point indicating where the dimension line is located, if available""" if annotation.is_a("IfcAnnotation"): diff --git a/src/Mod/BIM/nativeifc/ifc_tools.py b/src/Mod/BIM/nativeifc/ifc_tools.py index 9eaa5737bef4..5e46436bf190 100644 --- a/src/Mod/BIM/nativeifc/ifc_tools.py +++ b/src/Mod/BIM/nativeifc/ifc_tools.py @@ -408,7 +408,7 @@ def get_children( def get_freecad_children(obj): - """Returns the childen of this object that exist in the documemt""" + """Returns the children of this object that exist in the document""" objs = [] children = get_children(obj) 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/Measure/Gui/TaskMeasure.cpp b/src/Mod/Measure/Gui/TaskMeasure.cpp index 0098f1e8bee1..7e02214c17c9 100644 --- a/src/Mod/Measure/Gui/TaskMeasure.cpp +++ b/src/Mod/Measure/Gui/TaskMeasure.cpp @@ -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/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. */ From 7782fd68271a88b330f789596574b34648283716 Mon Sep 17 00:00:00 2001 From: luzpaz Date: Sun, 22 Dec 2024 12:57:15 +0000 Subject: [PATCH 146/221] Trim lines ending with superfluous whitespace --- CONTRIBUTING.md | 4 ++-- SECURITY.md | 10 +++++----- cMake/FindPyCXX.cmake | 2 +- src/Doc/sphinx/DocumentObject.rst | 10 +++++----- src/Doc/sphinx/Matrix.rst | 2 +- src/Doc/sphinx/Placement.rst | 2 +- src/Doc/sphinx/Vector.rst | 2 +- src/Gui/DlgCheckableMessageBox.cpp | 2 +- src/Gui/Inventor/SoFCTransform.h | 4 ++-- src/Mod/BIM/ArchComponent.py | 2 +- src/Mod/BIM/ArchWall.py | 6 +++--- src/Mod/BIM/Resources/ui/dialogConvertDocument.ui | 2 +- src/Mod/BIM/TestArch.py | 4 ++-- src/Mod/Part/App/FCBRepAlgoAPI_BooleanOperation.cpp | 2 +- src/Mod/Part/App/MeasureClient.cpp | 8 ++++---- src/Mod/Part/App/MeasureInfo.h | 4 ++-- src/Mod/Part/App/ShapeFix/ShapeFix_FixSmallFacePy.xml | 2 +- src/Mod/Part/Gui/TaskSweep.cpp | 2 +- src/Mod/Part/parttests/ColorTransparencyTest.py | 2 +- src/Mod/PartDesign/App/FeatureHelix.cpp | 2 +- src/Mod/PartDesign/PartDesignTests/TestHelix.py | 2 +- src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotation.ui | 2 +- src/Mod/TechDraw/Gui/Resources/fonts/osifont.license | 8 ++++---- .../TechDraw/LineGroup/ASME.Y14.2.2008.ElementDef.csv | 2 +- src/Mod/TechDraw/Templates/locale/README.md | 2 +- src/XDGData/org.freecad.FreeCAD.metainfo.xml.in | 2 +- tools/build/MacOS/BUILD_OSX.md | 2 +- tools/build/WindowsInstaller/README.md | 2 +- 28 files changed, 48 insertions(+), 48 deletions(-) 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/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/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/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/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/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/ArchWall.py b/src/Mod/BIM/ArchWall.py index 17eb4c24e1bf..6f33182f8885 100644 --- a/src/Mod/BIM/ArchWall.py +++ b/src/Mod/BIM/ArchWall.py @@ -337,7 +337,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 +613,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 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/TestArch.py b/src/Mod/BIM/TestArch.py index a8042084b111..690a4c37c896 100644 --- a/src/Mod/BIM/TestArch.py +++ b/src/Mod/BIM/TestArch.py @@ -793,7 +793,7 @@ def testViewGeneration(self): level = Arch.makeFloor() level.addObjects([wall, column]) App.ActiveDocument.recompute() - + # Create a drawing view section = Arch.makeSectionPlane(level) drawing = Arch.make2DDrawing() @@ -803,7 +803,7 @@ def testViewGeneration(self): 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") 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 f389454f6416..30482a1b8986 100644 --- a/src/Mod/Part/App/MeasureInfo.h +++ b/src/Mod/Part/App/MeasureInfo.h @@ -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/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/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/parttests/ColorTransparencyTest.py b/src/Mod/Part/parttests/ColorTransparencyTest.py index 273220ef8390..bf2786327a65 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') diff --git a/src/Mod/PartDesign/App/FeatureHelix.cpp b/src/Mod/PartDesign/App/FeatureHelix.cpp index 0fe36104fe1f..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); diff --git a/src/Mod/PartDesign/PartDesignTests/TestHelix.py b/src/Mod/PartDesign/PartDesignTests/TestHelix.py index 824693da786c..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) diff --git a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotation.ui b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotation.ui index eb5d49432331..ef51dadf78ef 100644 --- a/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotation.ui +++ b/src/Mod/TechDraw/Gui/DlgPrefsTechDrawAnnotation.ui @@ -696,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. 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/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/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/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/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" From 3b502359353e2a74dee8a8bcfed5750b69f32cdc Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 16 Dec 2024 10:56:43 +0100 Subject: [PATCH 147/221] smesh: Fix build failure with vtk 9.4 Fixes #18423 --- .../src/SMDS/SMDS_UnstructuredGrid.cpp | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) 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(); From b137c6c3f429ed0708ec5acfd7bd56d0f1e3582b Mon Sep 17 00:00:00 2001 From: Julien Masnada Date: Sat, 21 Dec 2024 19:46:58 +0100 Subject: [PATCH 148/221] Removing IFC project by default --- .../BIM/Resources/ui/preferences-sh3d-import.ui | 16 ++++++++++++++++ src/Mod/BIM/importers/importSH3DHelper.py | 12 ++++++++---- 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/src/Mod/BIM/Resources/ui/preferences-sh3d-import.ui b/src/Mod/BIM/Resources/ui/preferences-sh3d-import.ui index 79f891e788eb..347db98a3331 100644 --- a/src/Mod/BIM/Resources/ui/preferences-sh3d-import.ui +++ b/src/Mod/BIM/Resources/ui/preferences-sh3d-import.ui @@ -290,6 +290,22 @@ + + + + Create a default IFC project with the newly created Site. + + + Create IFC Project + + + sh3dCreateIFCProject + + + Mod/Arch + + + diff --git a/src/Mod/BIM/importers/importSH3DHelper.py b/src/Mod/BIM/importers/importSH3DHelper.py index 4d982fcfc789..1555978d4431 100644 --- a/src/Mod/BIM/importers/importSH3DHelper.py +++ b/src/Mod/BIM/importers/importSH3DHelper.py @@ -277,10 +277,10 @@ def _import_home(self, home): self._import_elements(home, 'camera') self._refresh() - if self.preferences["CREATE_RENDER_PROJECT"] and self.project: + 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.project) + Gui.Selection.addSelection(self.site) Gui.runCommand('Render_View', 0) self._refresh() @@ -308,6 +308,7 @@ def _get_preferences(self): '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")), } @@ -449,7 +450,7 @@ def _setup_project(self, elm): """ if 'Project' in self.fc_objects: self.project = self.fc_objects.get('Project') - else: + elif self.preferences["CREATE_IFC_PROJECT"]: self.project = self._create_project() if 'Site' in self.fc_objects: self.site = self.fc_objects.get('Site') @@ -459,7 +460,10 @@ def _setup_project(self, elm): self.building = self.fc_objects.get(elm.get('name')) else: self.building = self._create_building(elm) - self.project.addObject(self.site) + + if self.preferences["CREATE_IFC_PROJECT"]: + self.project.addObject(self.site) + self.site.addObject(self.building) def _create_project(self): From e930fd6f17bdb95ac98ef041c774850d7a7359b1 Mon Sep 17 00:00:00 2001 From: Julien Masnada Date: Sun, 22 Dec 2024 08:58:26 +0100 Subject: [PATCH 149/221] Remove invalid assert on unit test --- src/Mod/BIM/TestArch.py | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Mod/BIM/TestArch.py b/src/Mod/BIM/TestArch.py index 690a4c37c896..c937f7dc5048 100644 --- a/src/Mod/BIM/TestArch.py +++ b/src/Mod/BIM/TestArch.py @@ -767,7 +767,6 @@ def testImportSH3D(self): import BIM.importers.importSH3DHelper importer = BIM.importers.importSH3DHelper.SH3DImporter(None) importer.import_sh3d_from_string(SH3D_HOME) - assert App.ActiveDocument.Project assert App.ActiveDocument.Site assert App.ActiveDocument.BuildingPart.Label == "Building" assert App.ActiveDocument.BuildingPart001.Label == "Level" From 970beb4457e564a4a16b3bfedfa07dad5ad1b3bb Mon Sep 17 00:00:00 2001 From: FEA-eng <59876896+FEA-eng@users.noreply.github.com> Date: Mon, 23 Dec 2024 17:38:12 +0100 Subject: [PATCH 150/221] Fix typos in TechDraw advanced preferences - tooltips (#18510) --- src/Mod/TechDraw/Gui/DlgPrefsTechDrawAdvanced.ui | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) 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 From 2d0ce2449665c00ed49cc86f758e9de306998cc5 Mon Sep 17 00:00:00 2001 From: Ladislav Michl Date: Sun, 7 Jul 2024 21:09:59 +0200 Subject: [PATCH 151/221] Base: Units: hide internals --- src/App/Expression.cpp | 54 +-- src/Base/Unit.cpp | 556 ++++++++++++++++++------------ src/Base/Unit.h | 42 +-- src/Base/UnitPyImp.cpp | 41 +-- src/Gui/DlgUnitsCalculatorImp.cpp | 4 +- 5 files changed, 376 insertions(+), 321 deletions(-) diff --git a/src/App/Expression.cpp b/src/App/Expression.cpp index 7ec87852da8c..a664624149b5 100644 --- a/src/App/Expression.cpp +++ b/src/App/Expression.cpp @@ -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/Base/Unit.cpp b/src/Base/Unit.cpp index d60c3178d7eb..ac276af5737a 100644 --- a/src/Base/Unit.cpp +++ b/src/Base/Unit.cpp @@ -35,24 +35,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 +67,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 +77,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,37 +105,21 @@ 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 @@ -125,218 +128,335 @@ Unit::Unit(const QString& expr) // NOLINT *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.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; +} + +Unit Unit::sqrt() const +{ + 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.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("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::isEmpty()const +Unit Unit::cbrt() 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 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; } -bool Unit::operator ==(const Unit& that) const +int Unit::length() const +{ + UnitSignature sig; + memcpy(&sig, &Val, sizeof(Val)); + return sig.Length; +} + +int Unit::mass() 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)); + return sig.Mass; } -Unit Unit::operator *(const Unit &right) const +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 +{ + 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 { - 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)); + + 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::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 +464,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); } } diff --git a/src/Base/Unit.h b/src/Base/Unit.h index 81ec17ec514a..fa9204f446a6 100644 --- a/src/Base/Unit.h +++ b/src/Base/Unit.h @@ -31,29 +31,6 @@ 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. */ @@ -76,11 +53,11 @@ class BaseExport Unit /// 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,12 +68,17 @@ 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; @@ -177,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..14be93f5242c 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().toUtf8().constData() << " ("; + 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().toUtf8().constData(); if (!type.empty()) { ret << " [" << type << "]"; } - return ret.str(); } @@ -211,20 +212,16 @@ Py::String UnitPy::getType() const 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/Gui/DlgUnitsCalculatorImp.cpp b/src/Gui/DlgUnitsCalculatorImp.cpp index 0718370ac234..df857745e190 100644 --- a/src/Gui/DlgUnitsCalculatorImp.cpp +++ b/src/Gui/DlgUnitsCalculatorImp.cpp @@ -201,11 +201,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)); } From 6b6e1fbd261a790a442ac806ab7dfe2475221840 Mon Sep 17 00:00:00 2001 From: Ladislav Michl Date: Mon, 8 Jul 2024 02:47:05 +0200 Subject: [PATCH 152/221] Base: Units: reimplement getTypeString() using container --- src/Base/Unit.cpp | 237 ++++++++++++++-------------------------------- 1 file changed, 70 insertions(+), 167 deletions(-) diff --git a/src/Base/Unit.cpp b/src/Base/Unit.cpp index ac276af5737a..7c03a9ce4474 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" @@ -584,173 +587,73 @@ QString Unit::getString() const QString 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::ElectromagneticPotential) { - return QString::fromLatin1("ElectromagneticPotential"); - } - 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 QString(); + + return QString::fromStdString(spec->second); } // SI base units From 0907c7bfda9fd4330832be04d04ae6f4f8e9f162 Mon Sep 17 00:00:00 2001 From: Ladislav Michl Date: Fri, 12 Jul 2024 20:51:54 +0200 Subject: [PATCH 153/221] Base: Units: return std::string --- src/Base/Quantity.cpp | 2 +- src/Base/QuantityPyImp.cpp | 4 +- src/Base/Unit.cpp | 14 +- src/Base/Unit.h | 8 +- src/Base/UnitPyImp.cpp | 6 +- src/Base/UnitsApi.cpp | 38 +++-- src/Base/UnitsApi.h | 12 +- src/Base/UnitsApiPy.cpp | 3 +- src/Base/UnitsSchemaCentimeters.cpp | 2 +- src/Base/UnitsSchemaFemMilliMeterNewton.cpp | 2 +- src/Base/UnitsSchemaImperial1.cpp | 10 +- src/Base/UnitsSchemaInternal.cpp | 2 +- src/Base/UnitsSchemaMKS.cpp | 2 +- src/Base/UnitsSchemaMeterDecimal.cpp | 2 +- src/Base/UnitsSchemaMmMin.cpp | 2 +- src/Gui/DlgExpressionInput.cpp | 4 +- src/Gui/DlgUnitsCalculatorImp.cpp | 7 +- src/Gui/propertyeditor/PropertyItem.cpp | 47 +++--- src/Mod/Material/App/Materials.cpp | 4 +- src/Mod/Measure/App/MeasurePosition.cpp | 2 +- src/Mod/Mesh/Gui/DlgRegularSolidImp.cpp | 158 ++++++++++---------- src/Mod/Sketcher/Gui/EditDatumDialog.cpp | 2 +- tests/src/App/PropertyExpressionEngine.cpp | 2 +- tests/src/Base/Unit.cpp | 20 +-- 24 files changed, 181 insertions(+), 174 deletions(-) diff --git a/src/Base/Quantity.cpp b/src/Base/Quantity.cpp index fe4c0e1e9538..56bc661cdcaa 100644 --- a/src/Base/Quantity.cpp +++ b/src/Base/Quantity.cpp @@ -253,7 +253,7 @@ QString Quantity::getSafeUserString() const auto feedbackQty = parse(retString); auto feedbackVal = feedbackQty.getValue(); if (feedbackVal == 0) { - retString = QStringLiteral("%1 %2").arg(this->myValue).arg(this->getUnit().getString()); + retString = QStringLiteral("%1 %2").arg(this->myValue).arg(QString::fromStdString(this->getUnit().getString())); } } retString = diff --git a/src/Base/QuantityPyImp.cpp b/src/Base/QuantityPyImp.cpp index 4a59496f42b9..f20650e782a5 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()); diff --git a/src/Base/Unit.cpp b/src/Base/Unit.cpp index 7c03a9ce4474..9034907e1649 100644 --- a/src/Base/Unit.cpp +++ b/src/Base/Unit.cpp @@ -125,10 +125,10 @@ Unit::Unit() //NOLINT Val = 0; } -Unit::Unit(const QString& expr) // NOLINT +Unit::Unit(const std::string& expr) // NOLINT { try { - *this = Quantity::parse(expr).getUnit(); + *this = Quantity::parse(QString::fromStdString(expr)).getUnit(); } catch (const Base::ParserError&) { Val = 0; @@ -358,7 +358,7 @@ Unit Unit::operator /(const Unit &right) const return result; } -QString Unit::getString() const +std::string Unit::getString() const { if (isEmpty()) { return {}; @@ -582,10 +582,10 @@ QString Unit::getString() const } } - return QString::fromUtf8(ret.str().c_str()); + return ret.str(); } -QString Unit::getTypeString() const +std::string Unit::getTypeString() const { static std::array, 55> unitSpecs {{ { Unit::Acceleration, "Acceleration" }, @@ -651,9 +651,9 @@ QString Unit::getTypeString() const }); if (spec == std::end(unitSpecs)) - return QString(); + return ""; - return QString::fromStdString(spec->second); + return spec->second; } // SI base units diff --git a/src/Base/Unit.h b/src/Base/Unit.h index fa9204f446a6..670cf6752694 100644 --- a/src/Base/Unit.h +++ b/src/Base/Unit.h @@ -25,7 +25,7 @@ #define BASE_Unit_H #include -#include +#include #include namespace Base @@ -49,7 +49,7 @@ 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; @@ -81,9 +81,9 @@ class BaseExport Unit 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. */ //@{ diff --git a/src/Base/UnitPyImp.cpp b/src/Base/UnitPyImp.cpp index 14be93f5242c..4cd43b67a267 100644 --- a/src/Base/UnitPyImp.cpp +++ b/src/Base/UnitPyImp.cpp @@ -38,7 +38,7 @@ std::string UnitPy::representation() const Unit* self = getUnitPtr(); ret << "Unit: "; - ret << self->getString().toUtf8().constData() << " ("; + ret << self->getString() << " ("; ret << (*self).length() << ","; ret << (*self).mass() << ","; ret << (*self).time() << ","; @@ -48,7 +48,7 @@ std::string UnitPy::representation() const ret << (*self).luminousIntensity() << ","; ret << (*self).angle() << ")"; - std::string type = self->getTypeString().toUtf8().constData(); + std::string type = self->getTypeString(); if (!type.empty()) { ret << " [" << type << "]"; } @@ -207,7 +207,7 @@ 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 diff --git a/src/Base/UnitsApi.cpp b/src/Base/UnitsApi.cpp index 5dc5c955707b..43355e10e894 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" @@ -139,23 +141,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) diff --git a/src/Base/UnitsApi.h b/src/Base/UnitsApi.h index 66a0e1848730..e729d2bda57a 100644 --- a/src/Base/UnitsApi.h +++ b/src/Base/UnitsApi.h @@ -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..25d0aab1903b 100644 --- a/src/Base/UnitsApiPy.cpp +++ b/src/Base/UnitsApiPy.cpp @@ -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/UnitsSchemaCentimeters.cpp b/src/Base/UnitsSchemaCentimeters.cpp index 033e5584347e..a83486ba23e6 100644 --- a/src/Base/UnitsSchemaCentimeters.cpp +++ b/src/Base/UnitsSchemaCentimeters.cpp @@ -72,7 +72,7 @@ QString UnitsSchemaCentimeters::schemaTranslate(const Base::Quantity& quant, } else { // default action for all cases without special treatment: - unitString = quant.getUnit().getString(); + unitString = QString::fromStdString(quant.getUnit().getString()); factor = 1.0; } diff --git a/src/Base/UnitsSchemaFemMilliMeterNewton.cpp b/src/Base/UnitsSchemaFemMilliMeterNewton.cpp index 9baf47a9208a..7dceb03a9285 100644 --- a/src/Base/UnitsSchemaFemMilliMeterNewton.cpp +++ b/src/Base/UnitsSchemaFemMilliMeterNewton.cpp @@ -52,7 +52,7 @@ QString UnitsSchemaFemMilliMeterNewton::schemaTranslate(const Quantity& quant, } else { // default action for all cases without special treatment: - unitString = quant.getUnit().getString(); + unitString = QString::fromStdString(quant.getUnit().getString()); factor = 1.0; } return toLocale(quant, factor, unitString); diff --git a/src/Base/UnitsSchemaImperial1.cpp b/src/Base/UnitsSchemaImperial1.cpp index 37c6d3086077..a5a5e7f213a2 100644 --- a/src/Base/UnitsSchemaImperial1.cpp +++ b/src/Base/UnitsSchemaImperial1.cpp @@ -123,7 +123,7 @@ UnitsSchemaImperial1::schemaTranslate(const Quantity& quant, double& factor, QSt } else { // default action for all cases without special treatment: - unitString = quant.getUnit().getString(); + unitString = QString::fromStdString(quant.getUnit().getString()); factor = 1.0; } @@ -184,7 +184,7 @@ QString UnitsSchemaImperialDecimal::schemaTranslate(const Base::Quantity& quant, } else { // default action for all cases without special treatment: - unitString = quant.getUnit().getString(); + unitString = QString::fromStdString(quant.getUnit().getString()); factor = 1.0; } @@ -312,7 +312,7 @@ QString UnitsSchemaImperialBuilding::schemaTranslate(const Quantity& quant, factor = 25.4 / 60; } else { - unitString = quant.getUnit().getString(); + unitString = QString::fromStdString(quant.getUnit().getString()); factor = 1.0; } @@ -392,11 +392,11 @@ 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 QString::fromStdString(output.str()); } else { // default action for all cases without special treatment: - unitString = quant.getUnit().getString(); + unitString = QString::fromStdString(quant.getUnit().getString()); factor = 1.0; } diff --git a/src/Base/UnitsSchemaInternal.cpp b/src/Base/UnitsSchemaInternal.cpp index 99824bb44bf3..c6a738107f42 100644 --- a/src/Base/UnitsSchemaInternal.cpp +++ b/src/Base/UnitsSchemaInternal.cpp @@ -630,7 +630,7 @@ UnitsSchemaInternal::schemaTranslate(const Quantity& quant, double& factor, QStr } else { // default action for all cases without special treatment: - unitString = quant.getUnit().getString(); + unitString = QString::fromStdString(quant.getUnit().getString()); factor = 1.0; } diff --git a/src/Base/UnitsSchemaMKS.cpp b/src/Base/UnitsSchemaMKS.cpp index c575b81e9e84..b10e61d1ada5 100644 --- a/src/Base/UnitsSchemaMKS.cpp +++ b/src/Base/UnitsSchemaMKS.cpp @@ -617,7 +617,7 @@ QString UnitsSchemaMKS::schemaTranslate(const Quantity& quant, double& factor, Q } else { // default action for all cases without special treatment: - unitString = quant.getUnit().getString(); + unitString = QString::fromStdString(quant.getUnit().getString()); factor = 1.0; } diff --git a/src/Base/UnitsSchemaMeterDecimal.cpp b/src/Base/UnitsSchemaMeterDecimal.cpp index c3cb27d5aeb0..3dfbde5eb684 100644 --- a/src/Base/UnitsSchemaMeterDecimal.cpp +++ b/src/Base/UnitsSchemaMeterDecimal.cpp @@ -83,7 +83,7 @@ QString UnitsSchemaMeterDecimal::schemaTranslate(const Base::Quantity& quant, } else { // default action for all cases without special treatment: - unitString = quant.getUnit().getString(); + unitString = QString::fromStdString(quant.getUnit().getString()); factor = 1.0; } diff --git a/src/Base/UnitsSchemaMmMin.cpp b/src/Base/UnitsSchemaMmMin.cpp index be3196361e40..ab91816d7f5d 100644 --- a/src/Base/UnitsSchemaMmMin.cpp +++ b/src/Base/UnitsSchemaMmMin.cpp @@ -52,7 +52,7 @@ UnitsSchemaMmMin::schemaTranslate(const Quantity& quant, double& factor, QString } else { // default action for all cases without special treatment: - unitString = quant.getUnit().getString(); + unitString = QString::fromStdString(quant.getUnit().getString()); factor = 1.0; } diff --git a/src/Gui/DlgExpressionInput.cpp b/src/Gui/DlgExpressionInput.cpp index 62dd1e3d1391..24610179c031 100644 --- a/src/Gui/DlgExpressionInput.cpp +++ b/src/Gui/DlgExpressionInput.cpp @@ -174,7 +174,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 +187,7 @@ Base::Type DlgExpressionInput::determineTypeVarSet() bool DlgExpressionInput::typeOkForVarSet() { - std::string unitType = impliedUnit.getTypeString().toStdString(); + std::string unitType = impliedUnit.getTypeString(); return determineTypeVarSet() != Base::Type::badType(); } diff --git a/src/Gui/DlgUnitsCalculatorImp.cpp b/src/Gui/DlgUnitsCalculatorImp.cpp index df857745e190..0ec0e211f3b1 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,14 +138,15 @@ 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); } diff --git a/src/Gui/propertyeditor/PropertyItem.cpp b/src/Gui/propertyeditor/PropertyItem.cpp index ef2707bce59e..b351fb83cd4a 100644 --- a/src/Gui/propertyeditor/PropertyItem.cpp +++ b/src/Gui/propertyeditor/PropertyItem.cpp @@ -1186,8 +1186,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)); } } @@ -1801,11 +1800,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 @@ -2557,12 +2556,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, @@ -2872,17 +2871,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/Material/App/Materials.cpp b/src/Mod/Material/App/Materials.cpp index 24edb1a16aad..f1e6fab79662 100644 --- a/src/Mod/Material/App/Materials.cpp +++ b/src/Mod/Material/App/Materials.cpp @@ -179,7 +179,7 @@ QString MaterialProperty::getDictionaryString() const auto quantity = getValue().value(); auto string = QString(QLatin1String("%1 %2")) .arg(quantity.getValue(), 0, 'g', MaterialValue::PRECISION) - .arg(quantity.getUnit().getString()); + .arg(QString::fromStdString(quantity.getUnit().getString())); return string; } if (getType() == MaterialValue::Float) { @@ -1701,4 +1701,4 @@ App::Material Material::getMaterialAppearance() const } return material; -} \ No newline at end of file +} 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/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/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/tests/src/App/PropertyExpressionEngine.cpp b/tests/src/App/PropertyExpressionEngine.cpp index 19554c49361f..7799e15c5dde 100644 --- a/tests/src/App/PropertyExpressionEngine.cpp +++ b/tests/src/App/PropertyExpressionEngine.cpp @@ -80,7 +80,7 @@ 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)); 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) From c11b37e31281010b38c38fe431aa5d47dde469da Mon Sep 17 00:00:00 2001 From: Ladislav Michl Date: Wed, 7 Aug 2024 09:58:47 +0200 Subject: [PATCH 154/221] Base: Units: remove unused defines --- src/Base/UnitsApi.cpp | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/src/Base/UnitsApi.cpp b/src/Base/UnitsApi.cpp index 43355e10e894..3e663a42874f 100644 --- a/src/Base/UnitsApi.cpp +++ b/src/Base/UnitsApi.cpp @@ -42,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 ================================================ From 2ea8a633ac800d2cdc8b518bf814a1217fbad132 Mon Sep 17 00:00:00 2001 From: Ladislav Michl Date: Sat, 13 Jul 2024 13:07:27 +0200 Subject: [PATCH 155/221] Base: Quantity: return std::string --- src/App/Expression.cpp | 2 +- src/App/PropertyStandard.cpp | 4 +- src/App/PropertyUnits.cpp | 2 +- src/Base/Quantity.cpp | 38 +-- src/Base/Quantity.h | 16 +- src/Base/QuantityPyImp.cpp | 20 +- src/Base/Unit.cpp | 2 +- src/Base/UnitPyImp.cpp | 4 +- src/Base/UnitsApi.cpp | 4 +- src/Base/UnitsApiPy.cpp | 4 +- src/Gui/DlgExpressionInput.cpp | 22 +- src/Gui/DlgUnitsCalculatorImp.cpp | 2 +- src/Gui/EditableDatumLabel.cpp | 6 +- src/Gui/InputField.cpp | 76 +++-- src/Gui/QuantitySpinBox.cpp | 27 +- src/Gui/SoFCCSysDragger.cpp | 8 +- src/Gui/TaskView/TaskImage.cpp | 6 +- src/Gui/propertyeditor/PropertyItem.cpp | 81 +++--- src/Mod/Fem/Gui/TaskFemConstraintContact.cpp | 6 +- .../Fem/Gui/TaskFemConstraintDisplacement.cpp | 12 +- src/Mod/Fem/Gui/TaskFemConstraintForce.cpp | 2 +- src/Mod/Fem/Gui/TaskFemConstraintHeatflux.cpp | 19 +- .../TaskFemConstraintInitialTemperature.cpp | 2 +- src/Mod/Fem/Gui/TaskFemConstraintPressure.cpp | 2 +- .../Fem/Gui/TaskFemConstraintRigidBody.cpp | 14 +- src/Mod/Fem/Gui/TaskFemConstraintSpring.cpp | 4 +- .../Fem/Gui/TaskFemConstraintTemperature.cpp | 4 +- .../Fem/Gui/TaskFemConstraintTransform.cpp | 4 +- src/Mod/Material/App/MaterialLoader.cpp | 10 +- src/Mod/Material/App/MaterialValue.cpp | 8 +- src/Mod/Material/App/Materials.cpp | 12 +- src/Mod/Material/Gui/ArrayDelegate.cpp | 11 +- src/Mod/Material/Gui/ArrayModel.cpp | 8 +- src/Mod/Material/Gui/BaseDelegate.cpp | 8 +- src/Mod/Measure/App/MeasureBase.cpp | 3 +- src/Mod/Measure/Gui/QuickMeasure.cpp | 48 ++-- .../Measure/Gui/ViewProviderMeasureBase.cpp | 2 +- .../Gui/ViewProviderMeasureDistance.cpp | 9 +- src/Mod/Part/Gui/DlgFilletEdges.cpp | 2 +- src/Mod/Part/Gui/DlgPrimitives.cpp | 269 +++++++++--------- .../Gui/TaskPrimitiveParameters.cpp | 190 ++++++------- src/Mod/Sketcher/App/SketchObjectPyImp.cpp | 7 +- .../Gui/EditModeConstraintCoinManager.cpp | 32 ++- .../Gui/PropertyConstraintListItem.cpp | 5 +- .../Sketcher/Gui/TaskSketcherConstraints.cpp | 3 +- src/Mod/Sketcher/Gui/Utils.cpp | 38 ++- src/Mod/Sketcher/Gui/ViewProviderSketch.cpp | 3 +- src/Mod/Spreadsheet/Gui/SheetModel.cpp | 2 +- src/Mod/TechDraw/App/DimensionFormatter.cpp | 8 +- src/Mod/TechDraw/App/DrawSVGTemplate.cpp | 4 +- src/Mod/TechDraw/App/DrawViewSpreadsheet.cpp | 3 +- src/Mod/TechDraw/Gui/CommandExtensionPack.cpp | 2 +- tests/src/App/ExpressionParser.cpp | 8 +- tests/src/App/PropertyExpressionEngine.cpp | 2 +- tests/src/Base/Quantity.cpp | 24 +- tests/src/Gui/QuantitySpinBox.cpp | 6 +- .../Mod/Material/App/TestMaterialValue.cpp | 29 +- tests/src/Mod/Material/App/TestMaterials.cpp | 16 +- 58 files changed, 573 insertions(+), 592 deletions(-) diff --git a/src/App/Expression.cpp b/src/App/Expression.cpp index a664624149b5..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: { 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 b9fec4fd413a..b18ea6b65f89 100644 --- a/src/App/PropertyUnits.cpp +++ b/src/App/PropertyUnits.cpp @@ -68,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); diff --git a/src/Base/Quantity.cpp b/src/Base/Quantity.cpp index 56bc661cdcaa..deca91629a02 100644 --- a/src/Base/Quantity.cpp +++ b/src/Base/Quantity.cpp @@ -28,6 +28,7 @@ #include #endif +#include #include #include "Quantity.h" #include "Exception.h" @@ -81,10 +82,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 +237,34 @@ 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 str = QString::fromStdString(unitString); + QString ret = Base::UnitsApi::schemaTranslate(*this, factor, str); + unitString = str.toStdString(); + return ret.toStdString(); } -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 str = QString::fromStdString(unitString); + QString ret = schema->schemaTranslate(*this, factor, str); + unitString = str.toStdString(); + return ret.toStdString(); } -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(QString::fromStdString(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 @@ -562,11 +568,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 f20650e782a5..5cf751485252 100644 --- a/src/Base/QuantityPyImp.cpp +++ b/src/Base/QuantityPyImp.cpp @@ -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/Unit.cpp b/src/Base/Unit.cpp index 9034907e1649..a3c2a12c87a9 100644 --- a/src/Base/Unit.cpp +++ b/src/Base/Unit.cpp @@ -128,7 +128,7 @@ Unit::Unit() //NOLINT Unit::Unit(const std::string& expr) // NOLINT { try { - *this = Quantity::parse(QString::fromStdString(expr)).getUnit(); + *this = Quantity::parse(expr).getUnit(); } catch (const Base::ParserError&) { Val = 0; diff --git a/src/Base/UnitPyImp.cpp b/src/Base/UnitPyImp.cpp index 4cd43b67a267..b6d907f01d2b 100644 --- a/src/Base/UnitPyImp.cpp +++ b/src/Base/UnitPyImp.cpp @@ -84,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) { diff --git a/src/Base/UnitsApi.cpp b/src/Base/UnitsApi.cpp index 3e663a42874f..97e2bf96723f 100644 --- a/src/Base/UnitsApi.cpp +++ b/src/Base/UnitsApi.cpp @@ -184,7 +184,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) { @@ -207,7 +207,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/UnitsApiPy.cpp b/src/Base/UnitsApiPy.cpp index 25d0aab1903b..9acbbf8f2042 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"); diff --git a/src/Gui/DlgExpressionInput.cpp b/src/Gui/DlgExpressionInput.cpp index 24610179c031..61798c8fa421 100644 --- a/src/Gui/DlgExpressionInput.cpp +++ b/src/Gui/DlgExpressionInput.cpp @@ -28,6 +28,8 @@ #include #endif +#include + #include #include #include @@ -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/DlgUnitsCalculatorImp.cpp b/src/Gui/DlgUnitsCalculatorImp.cpp index 0ec0e211f3b1..c1a0276c725a 100644 --- a/src/Gui/DlgUnitsCalculatorImp.cpp +++ b/src/Gui/DlgUnitsCalculatorImp.cpp @@ -152,7 +152,7 @@ void DlgUnitsCalculator::valueChanged(const Base::Quantity& quant) } 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 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/QuantitySpinBox.cpp b/src/Gui/QuantitySpinBox.cpp index 1f93be55c185..e34e4d0b66c8 100644 --- a/src/Gui/QuantitySpinBox.cpp +++ b/src/Gui/QuantitySpinBox.cpp @@ -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/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/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/propertyeditor/PropertyItem.cpp b/src/Gui/propertyeditor/PropertyItem.cpp index b351fb83cd4a..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 @@ -1769,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)}; } @@ -2515,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}; } @@ -2533,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}; } @@ -2817,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}; } @@ -2841,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}; } 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/Material/App/MaterialLoader.cpp b/src/Mod/Material/App/MaterialLoader.cpp index a32e1baf1849..59edc5081486 100644 --- a/src/Mod/Material/App/MaterialLoader.cpp +++ b/src/Mod/Material/App/MaterialLoader.cpp @@ -115,8 +115,7 @@ 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)); } @@ -142,10 +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; @@ -154,8 +151,7 @@ std::shared_ptr MaterialYamlEntry::read3DArray(const YAML::Node auto row = std::make_shared>(); for (std::size_t j = 0; j < yamlRow.size(); j++) { - auto qq = Base::Quantity::parse( - QString::fromStdString(yamlRow[j].as())); + auto qq = Base::Quantity::parse(yamlRow[j].as()); qq.setFormat(MaterialValue::getQuantityFormat()); row->push_back(qq); } diff --git a/src/Mod/Material/App/MaterialValue.cpp b/src/Mod/Material/App/MaterialValue.cpp index 49a4410e0a59..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(); @@ -500,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("\""); } @@ -814,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("\": ["); @@ -844,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/Materials.cpp b/src/Mod/Material/App/Materials.cpp index f1e6fab79662..0ad893c4a442 100644 --- a/src/Mod/Material/App/Materials.cpp +++ b/src/Mod/Material/App/Materials.cpp @@ -125,7 +125,7 @@ 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(); @@ -266,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); } @@ -306,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", @@ -392,12 +392,12 @@ void MaterialProperty::setQuantity(const Base::Quantity& value) 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(); 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 fc6f2e7ea4a4..13f7bd137599 100644 --- a/src/Mod/Material/Gui/ArrayModel.cpp +++ b/src/Mod/Material/Gui/ArrayModel.cpp @@ -93,7 +93,7 @@ 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); } @@ -237,7 +237,7 @@ 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); } @@ -293,7 +293,7 @@ bool Array3DDepthModel::insertRows(int row, int count, const QModelIndex& parent beginInsertRows(parent, row, row + count - 1); for (int i = 0; i < count; i++) { - auto qq = Base::Quantity(0, _property->getColumnUnits(0)); + auto qq = Base::Quantity(0, _property->getColumnUnits(0).toStdString()); qq.setFormat(Materials::MaterialValue::getQuantityFormat()); _value->addDepth(row, qq); } @@ -395,7 +395,7 @@ 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); } 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/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/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/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/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/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/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/Sketcher/App/SketchObjectPyImp.cpp b/src/Mod/Sketcher/App/SketchObjectPyImp.cpp index 6887c95a6fd9..1344f15bb6e5 100644 --- a/src/Mod/Sketcher/App/SketchObjectPyImp.cpp +++ b/src/Mod/Sketcher/App/SketchObjectPyImp.cpp @@ -765,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; @@ -778,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/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/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..206cba0de635 100644 --- a/src/Mod/Sketcher/Gui/Utils.cpp +++ b/src/Mod/Sketcher/Gui/Utils.cpp @@ -719,10 +719,10 @@ 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 @@ -734,26 +734,26 @@ std::string SketcherGui::lengthToDisplayFormat(double value, int digits) // 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.toStdString()); } - 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 @@ -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/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/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/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/DrawViewSpreadsheet.cpp b/src/Mod/TechDraw/App/DrawViewSpreadsheet.cpp index d5d00e4b16f6..2e722514afef 100644 --- a/src/Mod/TechDraw/App/DrawViewSpreadsheet.cpp +++ b/src/Mod/TechDraw/App/DrawViewSpreadsheet.cpp @@ -272,8 +272,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/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/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/PropertyExpressionEngine.cpp b/tests/src/App/PropertyExpressionEngine.cpp index 7799e15c5dde..582d80bf3a57 100644 --- a/tests/src/App/PropertyExpressionEngine.cpp +++ b/tests/src/App/PropertyExpressionEngine.cpp @@ -82,7 +82,7 @@ TEST_F(PropertyExpressionEngineTest, executeCrossPropertyReference) auto target_value = target_quant.getValue(); 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/Quantity.cpp b/tests/src/Base/Quantity.cpp index d4a27059f562..4e88e469037b 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); @@ -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/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/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 695e979e053b..3843d5f1997a 100644 --- a/tests/src/Mod/Material/App/TestMaterials.cpp +++ b/tests/src/Mod/Material/App/TestMaterials.cpp @@ -221,12 +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); auto quantity = Base::Quantity::parse(value); quantity.setFormat(Materials::MaterialValue::getQuantityFormat()); - return quantity.getUserString(); + return QString::fromStdString(quantity.getUserString()); } TEST_F(TestMaterial, TestCalculiXSteel) @@ -343,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) From 4d6ed9d5315354967604896eaeba1604f298909f Mon Sep 17 00:00:00 2001 From: Ladislav Michl Date: Sat, 13 Jul 2024 17:19:27 +0200 Subject: [PATCH 156/221] Base: UnitsSchema: return std::string --- src/Base/Quantity.cpp | 10 +- src/Base/UnitsApi.cpp | 3 +- src/Base/UnitsApi.h | 8 +- src/Base/UnitsApiPy.cpp | 8 +- src/Base/UnitsSchema.cpp | 11 +- src/Base/UnitsSchema.h | 13 +- src/Base/UnitsSchemaCentimeters.cpp | 68 ++--- src/Base/UnitsSchemaCentimeters.h | 7 +- src/Base/UnitsSchemaFemMilliMeterNewton.cpp | 43 ++-- src/Base/UnitsSchemaFemMilliMeterNewton.h | 10 +- src/Base/UnitsSchemaImperial1.cpp | 137 +++++----- src/Base/UnitsSchemaImperial1.h | 30 +-- src/Base/UnitsSchemaInternal.cpp | 270 ++++++++++---------- src/Base/UnitsSchemaInternal.h | 10 +- src/Base/UnitsSchemaMKS.cpp | 269 ++++++++++--------- src/Base/UnitsSchemaMKS.h | 10 +- src/Base/UnitsSchemaMeterDecimal.cpp | 72 ++---- src/Base/UnitsSchemaMeterDecimal.h | 6 +- src/Base/UnitsSchemaMmMin.cpp | 43 ++-- src/Base/UnitsSchemaMmMin.h | 10 +- src/Gui/QuantitySpinBox.cpp | 2 +- src/Gui/Selection.cpp | 8 +- src/Gui/View3DInventorViewer.cpp | 12 +- src/Mod/Sketcher/Gui/Utils.cpp | 10 +- tests/src/Base/Quantity.cpp | 12 +- 25 files changed, 493 insertions(+), 589 deletions(-) diff --git a/src/Base/Quantity.cpp b/src/Base/Quantity.cpp index deca91629a02..a5b1d747196a 100644 --- a/src/Base/Quantity.cpp +++ b/src/Base/Quantity.cpp @@ -239,19 +239,13 @@ Quantity Quantity::operator-() const std::string Quantity::getUserString(double& factor, std::string& unitString) const { - QString str = QString::fromStdString(unitString); - QString ret = Base::UnitsApi::schemaTranslate(*this, factor, str); - unitString = str.toStdString(); - return ret.toStdString(); + return Base::UnitsApi::schemaTranslate(*this, factor, unitString); } std::string Quantity::getUserString(UnitsSchema* schema, double& factor, std::string& unitString) const { - QString str = QString::fromStdString(unitString); - QString ret = schema->schemaTranslate(*this, factor, str); - unitString = str.toStdString(); - return ret.toStdString(); + return schema->schemaTranslate(*this, factor, unitString); } std::string Quantity::getSafeUserString() const diff --git a/src/Base/UnitsApi.cpp b/src/Base/UnitsApi.cpp index 97e2bf96723f..2cf72552001a 100644 --- a/src/Base/UnitsApi.cpp +++ b/src/Base/UnitsApi.cpp @@ -176,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); } diff --git a/src/Base/UnitsApi.h b/src/Base/UnitsApi.h index e729d2bda57a..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); } diff --git a/src/Base/UnitsApiPy.cpp b/src/Base/UnitsApiPy.cpp index 9acbbf8f2042..730d915f4371 100644 --- a/src/Base/UnitsApiPy.cpp +++ b/src/Base/UnitsApiPy.cpp @@ -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); } 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 a83486ba23e6..bd75f99fb7c2 100644 --- a/src/Base/UnitsSchemaCentimeters.cpp +++ b/src/Base/UnitsSchemaCentimeters.cpp @@ -22,57 +22,41 @@ #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 = QString::fromStdString(quant.getUnit().getString()); + 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 7dceb03a9285..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 = QString::fromStdString(quant.getUnit().getString()); + 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 a5a5e7f213a2..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,157 +46,156 @@ 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 { // default action for all cases without special treatment: - unitString = QString::fromStdString(quant.getUnit().getString()); + unitString = quant.getUnit().getString(); factor = 1.0; } 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 { // default action for all cases without special treatment: - unitString = QString::fromStdString(quant.getUnit().getString()); + unitString = quant.getUnit().getString(); factor = 1.0; } 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,77 +289,76 @@ 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 { - unitString = QString::fromStdString(quant.getUnit().getString()); + unitString = quant.getUnit().getString(); factor = 1.0; } 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,11 +387,11 @@ QString UnitsSchemaImperialCivil::schemaTranslate(const Base::Quantity& quant, // output << std::setprecision(Base::UnitsApi::getDecimals()) << std::fixed << // rawSeconds << secondString.toStdString(); // } - return QString::fromStdString(output.str()); + return output.str(); } else { // default action for all cases without special treatment: - unitString = QString::fromStdString(quant.getUnit().getString()); + unitString = quant.getUnit().getString(); factor = 1.0; } 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 c6a738107f42..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,585 +48,585 @@ 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 = QString::fromLatin1("Wb/m"); + 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; } } else { // default action for all cases without special treatment: - unitString = QString::fromStdString(quant.getUnit().getString()); + unitString = quant.getUnit().getString(); 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 b10e61d1ada5..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,581 +40,581 @@ 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 = QString::fromLatin1("Wb/m"); + 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; } } else { // default action for all cases without special treatment: - unitString = QString::fromStdString(quant.getUnit().getString()); + unitString = quant.getUnit().getString(); 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 3dfbde5eb684..e80bd7af7f83 100644 --- a/src/Base/UnitsSchemaMeterDecimal.cpp +++ b/src/Base/UnitsSchemaMeterDecimal.cpp @@ -29,61 +29,41 @@ */ #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 = QString::fromStdString(quant.getUnit().getString()); + 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 ab91816d7f5d..dece178cd1bd 100644 --- a/src/Base/UnitsSchemaMmMin.cpp +++ b/src/Base/UnitsSchemaMmMin.cpp @@ -22,37 +22,36 @@ #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 = QString::fromStdString(quant.getUnit().getString()); + 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/Gui/QuantitySpinBox.cpp b/src/Gui/QuantitySpinBox.cpp index e34e4d0b66c8..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)); } } 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/View3DInventorViewer.cpp b/src/Gui/View3DInventorViewer.cpp index e27592adb42f..72d2515be543 100644 --- a/src/Gui/View3DInventorViewer.cpp +++ b/src/Gui/View3DInventorViewer.cpp @@ -35,6 +35,8 @@ # include # endif +# include + # include # include # include @@ -2510,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 @@ -2518,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/Mod/Sketcher/Gui/Utils.cpp b/src/Mod/Sketcher/Gui/Utils.cpp index 206cba0de635..fd29f90d9710 100644 --- a/src/Mod/Sketcher/Gui/Utils.cpp +++ b/src/Mod/Sketcher/Gui/Utils.cpp @@ -727,9 +727,9 @@ std::string SketcherGui::lengthToDisplayFormat(double value, int digits) // 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( @@ -745,7 +745,7 @@ std::string SketcherGui::lengthToDisplayFormat(double value, int digits) if (dpPos < 0) { // no decimal separator (ie an integer), return all the digits if (!hideUnits()) { - smatched.append(unitPart.toStdString()); + smatched.append(unitPart); } return smatched; } @@ -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; } diff --git a/tests/src/Base/Quantity.cpp b/tests/src/Base/Quantity.cpp index 4e88e469037b..525c57541be4 100644 --- a/tests/src/Base/Quantity.cpp +++ b/tests/src/Base/Quantity.cpp @@ -190,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) @@ -205,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) From c0f0376ac647a096fd4686bcdde2200a58e78a78 Mon Sep 17 00:00:00 2001 From: Ladislav Michl Date: Wed, 7 Aug 2024 10:09:24 +0200 Subject: [PATCH 157/221] Base: Quantity: use std::nan --- src/Base/Quantity.cpp | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/src/Base/Quantity.cpp b/src/Base/Quantity.cpp index a5b1d747196a..41002c6f66cb 100644 --- a/src/Base/Quantity.cpp +++ b/src/Base/Quantity.cpp @@ -22,18 +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 @@ -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() From 4ba6e8e15015826fccd90fa7540805c110295287 Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 20 Dec 2024 22:18:10 +0100 Subject: [PATCH 158/221] App: Fix possible crash when postponing the destruction of a removed property Fixes #18601 --- src/App/Property.cpp | 1 + src/Mod/Test/Document.py | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+) 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/Mod/Test/Document.py b/src/Mod/Test/Document.py index e59ab99e781f..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") From 9db4e89467c264802f79f9638d273e58e5141a36 Mon Sep 17 00:00:00 2001 From: mwganson Date: Mon, 16 Dec 2024 17:14:33 -0600 Subject: [PATCH 159/221] [PythonEditor] Make converting tabs to spaces the default --- src/Gui/PreferencePages/DlgSettingsEditor.ui | 5 +- src/Gui/PythonConsole.cpp | 20 ++- src/Gui/PythonConsole.h | 2 +- src/Gui/PythonEditor.cpp | 4 +- src/Gui/PythonEditor.h | 2 +- src/Gui/TextEdit.cpp | 154 ++++++++++--------- src/Gui/TextEdit.h | 16 ++ 7 files changed, 115 insertions(+), 88 deletions(-) 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/PythonConsole.cpp b/src/Gui/PythonConsole.cpp index 0722240e80cb..4a9db3e19bbf 100644 --- a/src/Gui/PythonConsole.cpp +++ b/src/Gui/PythonConsole.cpp @@ -435,7 +435,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; @@ -467,7 +467,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,7 +511,6 @@ PythonConsole::~PythonConsole() saveHistory(); Base::PyGILStateLocker lock; d->hGrpSettings->Detach(this); - getWindowParameter()->Detach(this); delete pythonSyntax; Py_XDECREF(d->_stdoutPy); Py_XDECREF(d->_stderrPy); @@ -613,13 +611,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 +669,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 +705,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..4ec20d6dad9a 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)); @@ -205,7 +205,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..8e442c9d46cd 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 diff --git a/src/Gui/TextEdit.cpp b/src/Gui/TextEdit.cpp index 79acc4672988..faa508295dc3 100644 --- a/src/Gui/TextEdit.cpp +++ b/src/Gui/TextEdit.cpp @@ -257,6 +257,11 @@ TextEditor::TextEditor(QWidget* parent) highlightCurrentLine(); } +void TextEditor::keyPressEvent(QKeyEvent *e) +{ + TextEdit::keyPressEvent( e ); +} + /** Destroys the object and frees any allocated resources */ TextEditor::~TextEditor() { @@ -359,12 +364,85 @@ 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) { + 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 ); +} + +// ------------------------------------------------------------------------------ +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 +467,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 +520,10 @@ void TextEditor::keyPressEvent (QKeyEvent * e) return; } - TextEdit::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); - } + TextEditor::keyPressEvent( e ); } -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..ec17c852edf6 100644 --- a/src/Gui/TextEdit.h +++ b/src/Gui/TextEdit.h @@ -118,6 +118,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 From 5688e81ed48145f73468b5e3b68ea612603dd63a Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Fri, 20 Dec 2024 21:32:03 -0600 Subject: [PATCH 160/221] Measure: Pass empty arg to QStringLiteral macro Silences compiler warning about missing expected macro argument (MSVC warning C4003). --- src/Mod/Measure/Gui/TaskMeasure.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Mod/Measure/Gui/TaskMeasure.cpp b/src/Mod/Measure/Gui/TaskMeasure.cpp index 7e02214c17c9..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); From b7cae5466610135f67070edb6cdbe392a2364806 Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Thu, 19 Dec 2024 12:03:20 +0100 Subject: [PATCH 161/221] Part: remove rogue margins from ui file --- src/Mod/Part/Gui/DlgPartImportStep.ui | 1 - 1 file changed, 1 deletion(-) 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 From 9ef57818bec730db893338434fa78c6268bad245 Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Mon, 23 Dec 2024 12:01:02 -0500 Subject: [PATCH 162/221] Addon Manager: refactor process_string_to_datetime (#18492) * Addon Manager: Refactor utilities tests to remove filesystem use * Addon Manager: Move process_date_string_to_python_datetime to utilities Also add unit tests and modify the exception type * Addon Manager: Add tests for other date separators * Addon Manager: Refactor to reduce duplication * Addon Manager: add explanation of why the function exists * Addon Manager: use exception chaining * Addon Manager: Remove unused test files --- src/Mod/AddonManager/Addon.py | 40 +------- .../AddonManagerTest/app/test_utilities.py | 94 +++++++++++++++---- .../data/bad_macro_metadata.FCStd | 37 -------- .../data/good_macro_metadata.FCStd | 37 -------- src/Mod/AddonManager/CMakeLists.txt | 2 - .../AddonManager/addonmanager_utilities.py | 35 +++++++ 6 files changed, 115 insertions(+), 130 deletions(-) delete mode 100644 src/Mod/AddonManager/AddonManagerTest/data/bad_macro_metadata.FCStd delete mode 100644 src/Mod/AddonManager/AddonManagerTest/data/good_macro_metadata.FCStd diff --git a/src/Mod/AddonManager/Addon.py b/src/Mod/AddonManager/Addon.py index 87f7c75aefcc..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, @@ -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/AddonManagerTest/app/test_utilities.py b/src/Mod/AddonManager/AddonManagerTest/app/test_utilities.py index cc00fd8dfd87..66035acc7406 100644 --- a/src/Mod/AddonManager/AddonManagerTest/app/test_utilities.py +++ b/src/Mod/AddonManager/AddonManagerTest/app/test_utilities.py @@ -21,8 +21,9 @@ # * * # *************************************************************************** +from datetime import datetime import unittest -from unittest.mock import MagicMock, patch +from unittest.mock import MagicMock, patch, mock_open import os import sys import subprocess @@ -37,10 +38,11 @@ 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, ) @@ -49,9 +51,6 @@ class TestUtilities(unittest.TestCase): MODULE = "test_utilities" # file name without extension - def setUp(self): - pass - @classmethod def tearDownClass(cls): try: @@ -132,21 +131,22 @@ def test_get_assigned_string_literal(self): result = get_assigned_string_literal(line) self.assertIsNone(result) - def test_get_macro_version_from_file(self): - if FreeCAD: - test_dir = os.path.join( - FreeCAD.getHomePath(), "Mod", "AddonManager", "AddonManagerTest", "data" - ) - good_file = os.path.join(test_dir, "good_macro_metadata.FCStd") - version = get_macro_version_from_file(good_file) + 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") - bad_file = os.path.join(test_dir, "bad_macro_metadata.FCStd") - version = get_macro_version_from_file(bad_file) + 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") - empty_file = os.path.join(test_dir, "missing_macro_metadata.FCStd") - version = get_macro_version_from_file(empty_file) + 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") @@ -222,6 +222,66 @@ def fake_time(): 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") + 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/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/CMakeLists.txt b/src/Mod/AddonManager/CMakeLists.txt index d376834d1c6a..58b15d132b38 100644 --- a/src/Mod/AddonManager/CMakeLists.txt +++ b/src/Mod/AddonManager/CMakeLists.txt @@ -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/addonmanager_utilities.py b/src/Mod/AddonManager/addonmanager_utilities.py index 517d0fbbd668..b0e66ca00b4b 100644 --- a/src/Mod/AddonManager/addonmanager_utilities.py +++ b/src/Mod/AddonManager/addonmanager_utilities.py @@ -24,8 +24,12 @@ """ 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 @@ -443,6 +447,37 @@ def run_interruptable_subprocess(args, timeout_secs: int = 10) -> subprocess.Com 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: From 300f3bca4cbd39382920987227f12b0a74d56032 Mon Sep 17 00:00:00 2001 From: WandererFan Date: Mon, 23 Dec 2024 12:03:31 -0500 Subject: [PATCH 163/221] [TD]Section line and rotation fix 17831 (#18663) * [TD]fix SectionLine colour (fix 17831 part 1) * [TD]fix wrong rotation in Section task (fix 17831 part 2) --- src/Mod/TechDraw/Gui/QGIDecoration.cpp | 4 +-- src/Mod/TechDraw/Gui/QGISectionLine.cpp | 2 +- src/Mod/TechDraw/Gui/TaskSectionView.cpp | 44 ++++++++++-------------- src/Mod/TechDraw/Gui/TaskSectionView.h | 3 ++ 4 files changed, 24 insertions(+), 29 deletions(-) diff --git a/src/Mod/TechDraw/Gui/QGIDecoration.cpp b/src/Mod/TechDraw/Gui/QGIDecoration.cpp index f1c456a65d0d..422ad3f7a5c4 100644 --- a/src/Mod/TechDraw/Gui/QGIDecoration.cpp +++ b/src/Mod/TechDraw/Gui/QGIDecoration.cpp @@ -60,8 +60,8 @@ 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 + // painter->setPen(Qt::green); + // painter->drawRect(boundingRect()); //good for debugging QGraphicsItemGroup::paint (painter, &myOption, widget); } 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/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 From c0210c2d3c3771ee09a635c5a661394900013fc1 Mon Sep 17 00:00:00 2001 From: Mark Ganson TheMarkster <39143564+mwganson@users.noreply.github.com> Date: Mon, 23 Dec 2024 11:18:30 -0600 Subject: [PATCH 164/221] [Spreadsheet] fix isValidAlias() (#18567) --- src/Mod/Spreadsheet/App/PropertySheet.cpp | 26 ++++++++++--------- .../src/Mod/Spreadsheet/App/PropertySheet.cpp | 7 ++++- 2 files changed, 20 insertions(+), 13 deletions(-) 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/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"; From 9cd919d0b9d685d9265499754fb02e0176612a23 Mon Sep 17 00:00:00 2001 From: wmayer Date: Sat, 21 Dec 2024 21:53:24 +0100 Subject: [PATCH 165/221] Gui: Fix copying elements in the tree view by holding CTRL key In older versions it was possible to copy elements with drag and drop by holding the CTRL key. Since v0.20 or v0.21 this wasn't possible any more so that elements are always moved. Note: Copying is only allowed for elements that have a parent object. --- src/Gui/Tree.cpp | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Gui/Tree.cpp b/src/Gui/Tree.cpp index 4a65c594219b..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); From 98fbe71a549680534bf5b5300a9d9c1d0172ac83 Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Sun, 22 Dec 2024 17:15:38 -0600 Subject: [PATCH 166/221] Clang-Tidy: Remove AnalyzeTemporaryDtors Deprecated in clang-tidy 16 and removed in clang-tidy 18. --- .clang-tidy | 1 - 1 file changed, 1 deletion(-) diff --git a/.clang-tidy b/.clang-tidy index 2ca5ee7bcc51..b76cba3e828c 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -8,7 +8,6 @@ concurrency-*,-modernize-use-trailing-return-type, -modernize-use-nodiscard,-rea -cppcoreguidelines-pro-type-static-cast-downcast' WarningsAsErrors: '' HeaderFilterRegex: '' -AnalyzeTemporaryDtors: false FormatStyle: file User: florians CheckOptions: From 8edb649d972640a7161e1bcbb239c20cdd8ca8b4 Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Sun, 22 Dec 2024 17:44:13 -0600 Subject: [PATCH 167/221] Addon Manager: Add fallbacks for PySide to WidgetFilterSelector Ensure that this part of the Addon Manager can be tested outside FreeCAD by falling back to explicit PySide imports. --- .../Widgets/addonmanager_widget_filter_selector.py | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) 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): From 40681a9d3d0d0293ef3f37817016869d50883c7e Mon Sep 17 00:00:00 2001 From: Chris Hennes Date: Sun, 22 Dec 2024 08:29:19 -0600 Subject: [PATCH 168/221] CI: Add missing C++ tests to CI run The current structure of the CI system explicitly lists the tests to run, and several recently-added test executables were not included in the list. --- .../runCPPTests/runAllTests/action.yml | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) 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} From 8e653ca7fb17b873ab5b5534c3efb3091ba757d1 Mon Sep 17 00:00:00 2001 From: wandererfan Date: Mon, 23 Dec 2024 09:06:43 -0500 Subject: [PATCH 169/221] [TD]fix highlight style preference --- src/Mod/TechDraw/App/Preferences.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Mod/TechDraw/App/Preferences.cpp b/src/Mod/TechDraw/App/Preferences.cpp index 9515e7b2d698..53096b691088 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() From 0d128517dedd154bbecfbabe67094ad56c8d46f5 Mon Sep 17 00:00:00 2001 From: FEA-eng <59876896+FEA-eng@users.noreply.github.com> Date: Mon, 23 Dec 2024 13:44:06 +0100 Subject: [PATCH 170/221] FEM: Update checksanalysis.py --- src/Mod/Fem/femtools/checksanalysis.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Mod/Fem/femtools/checksanalysis.py b/src/Mod/Fem/femtools/checksanalysis.py index ee6f5c003130..a3cc34480db2 100644 --- a/src/Mod/Fem/femtools/checksanalysis.py +++ b/src/Mod/Fem/femtools/checksanalysis.py @@ -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) From abb50a4daa43abee9e6b263dd82e5e876c978c6a Mon Sep 17 00:00:00 2001 From: WandererFan Date: Mon, 23 Dec 2024 17:36:22 -0500 Subject: [PATCH 171/221] [TD]Long and link dim refs (fix #13375) (#18641) * [Meas]Changes for TD dimension refs for links * [TD]App changes for dim refs to links * [TD]Gui changes for dim refs to links * [TD]fix 2 lint messages * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- src/Mod/Measure/App/AppMeasurePy.cpp | 170 +++++++ src/Mod/Measure/App/CMakeLists.txt | 6 + src/Mod/Measure/App/Measurement.cpp | 38 +- src/Mod/Measure/App/ShapeFinder.cpp | 416 ++++++++++++++++++ src/Mod/Measure/App/ShapeFinder.h | 126 ++++++ src/Mod/Measure/App/SubnameHelper.cpp | 178 ++++++++ src/Mod/Measure/App/SubnameHelper.h | 57 +++ src/Mod/TechDraw/App/DimensionAutoCorrect.cpp | 29 +- src/Mod/TechDraw/App/DimensionReferences.cpp | 56 +-- src/Mod/TechDraw/App/DimensionReferences.h | 2 +- src/Mod/TechDraw/App/DrawViewDimension.cpp | 56 +-- src/Mod/TechDraw/App/DrawViewDimension.h | 6 +- src/Mod/TechDraw/App/ShapeExtractor.cpp | 32 +- src/Mod/TechDraw/App/ShapeExtractor.h | 14 +- src/Mod/TechDraw/Gui/DimensionValidators.cpp | 79 ++-- src/Mod/TechDraw/Gui/DimensionValidators.h | 23 +- 16 files changed, 1091 insertions(+), 197 deletions(-) create mode 100644 src/Mod/Measure/App/AppMeasurePy.cpp create mode 100644 src/Mod/Measure/App/ShapeFinder.cpp create mode 100644 src/Mod/Measure/App/ShapeFinder.h create mode 100644 src/Mod/Measure/App/SubnameHelper.cpp create mode 100644 src/Mod/Measure/App/SubnameHelper.h 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/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/TechDraw/App/DimensionAutoCorrect.cpp b/src/Mod/TechDraw/App/DimensionAutoCorrect.cpp index 51b2b0807c1e..a18edac90c17 100644 --- a/src/Mod/TechDraw/App/DimensionAutoCorrect.cpp +++ b/src/Mod/TechDraw/App/DimensionAutoCorrect.cpp @@ -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/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/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/ShapeExtractor.cpp b/src/Mod/TechDraw/App/ShapeExtractor.cpp index e7b97426e396..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; @@ -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/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); From 7fb80448f2748beec21a270cab2af0c967587c00 Mon Sep 17 00:00:00 2001 From: Tobias Frost Date: Tue, 24 Dec 2024 09:33:33 +0100 Subject: [PATCH 172/221] Remove unused ifndefs for GL_MULTISAMPLE (found while searching for the build error on armhf/armel on Debian buildds, once resolved will make an additional PR for that.) $grep -r GL_MULTISAMPLE src/ yields: src/Mod/Sandbox/Gui/Overlay.cpp: #ifndef GL_MULTISAMPLE src/Mod/Sandbox/Gui/Overlay.cpp: #define GL_MULTISAMPLE 0x809D src/Mod/Sandbox/Gui/GLGraphicsView.cpp:#ifndef GL_MULTISAMPLE src/Mod/Sandbox/Gui/GLGraphicsView.cpp:#define GL_MULTISAMPLE 0x809D -> The defines are defined, but never used in the compilation unit --- src/Mod/Sandbox/Gui/GLGraphicsView.cpp | 4 ---- src/Mod/Sandbox/Gui/Overlay.cpp | 3 --- 2 files changed, 7 deletions(-) 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(); From 5957a9118e73e67471f48c12c12e93b1ec1444b9 Mon Sep 17 00:00:00 2001 From: Tobias Frost Date: Tue, 24 Dec 2024 11:28:23 +0100 Subject: [PATCH 173/221] Fix compilation issue if KuKa files have been removed. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit (Background is issue #18622) CMake errors out when the Kuka files are removed with: ``` CMake Error at cMake/FreeCadMacros.cmake:79 (ADD_CUSTOM_COMMAND): ADD_CUSTOM_COMMAND called with wrong number of arguments. Call Stack (most recent call first): src/Mod/Robot/CMakeLists.txt:47 (fc_target_copy_resource) ``` The problem is that while the CMake code checks whether /src/Mod/Robot/Lib/Kuka is there befor setting Robot_Resources, but then later still uses the variable, even if it hasn't been set. The patch just guards the failing fc_target_copy_resource with another if that checks whether the variable has been defined. CMake install would also fail when Lib is empty, so another guard is required for the `INSTALL( DIRECTORY Lib` … section. --- src/Mod/Robot/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) 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() From 6bb424b5d16adffb1896187a0725945f9635d144 Mon Sep 17 00:00:00 2001 From: Paul Lee Date: Sat, 21 Dec 2024 17:27:25 +0800 Subject: [PATCH 174/221] [ArchStairs] Regression-fix : EnsureBase preventcreation Stairs can do without Base. Base validity is tested in code. EnsureBase() is remarked out. --- src/Mod/BIM/ArchStairs.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Mod/BIM/ArchStairs.py b/src/Mod/BIM/ArchStairs.py index b3c208239002..bf2b76b00c5a 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 = [] From 9b8b962f56654c888d22fe8fbcc30d1b588de833 Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Thu, 26 Dec 2024 12:06:29 +0100 Subject: [PATCH 175/221] Draft: Remove unnecessary CamelCase names The related functions were introduced in V0.19. They should not be also available under CamelCase names. --- src/Mod/Draft/Draft.py | 22 +++++++--------------- src/Mod/Draft/draftfunctions/move.py | 13 ++----------- src/Mod/Draft/draftfunctions/rotate.py | 16 ++-------------- src/Mod/Draft/draftfunctions/scale.py | 15 --------------- src/Mod/Draft/draftutils/utils.py | 6 ------ 5 files changed, 11 insertions(+), 61 deletions(-) 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/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/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. From e977eb49e37ef836f695809263fa1f56a17cc657 Mon Sep 17 00:00:00 2001 From: PaddleStroke Date: Fri, 13 Dec 2024 10:01:13 +0100 Subject: [PATCH 176/221] Core datums: Rework to improve new sketch --- src/Gui/ViewProviderCoordinateSystem.cpp | 45 +++++- src/Gui/ViewProviderCoordinateSystem.h | 7 +- src/Gui/ViewProviderDatum.cpp | 27 ++-- src/Gui/ViewProviderDatum.h | 8 +- src/Gui/ViewProviderLine.cpp | 11 +- src/Gui/ViewProviderLine.h | 5 + src/Gui/ViewProviderPlane.cpp | 137 ++++++++++++------ src/Gui/ViewProviderPlane.h | 14 +- .../Part/parttests/ColorTransparencyTest.py | 4 +- src/Mod/PartDesign/Gui/TaskFeaturePick.cpp | 4 + 10 files changed, 185 insertions(+), 77 deletions(-) diff --git a/src/Gui/ViewProviderCoordinateSystem.cpp b/src/Gui/ViewProviderCoordinateSystem.cpp index 689c51aef49b..2d57a94c8e35 100644 --- a/src/Gui/ViewProviderCoordinateSystem.cpp +++ b/src/Gui/ViewProviderCoordinateSystem.cpp @@ -97,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(); @@ -137,7 +137,7 @@ void ViewProviderCoordinateSystem::setTemporaryVisibility(bool axis, bool plane) if (saveState) { tempVisMap[vp] = vp->isVisible(); } - vp->setVisible(plane); + vp->setVisible(points); } } @@ -170,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) { @@ -181,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 1e30a3ea66e0..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(); } @@ -132,20 +126,27 @@ void ViewProviderDatum::attach(App::DocumentObject* pcObject) sep->addChild(visible); - - // Scale feature to the given size - float sz = App::GetApplication() - .GetParameterGroupByPath("User parameter:BaseApp/Preferences/View") - ->GetFloat("LocalCoordinateSystemSize", 1.0); // NOLINT - soScale->setPart("shape", sep); - soScale->scaleFactor = sz; + resetTemporarySize(); highlight->addChild(soScale); addDisplayMaskMode(highlight, "Base"); } +void ViewProviderDatum::setTemporaryScale(double factor) +{ + soScale->scaleFactor = soScale->scaleFactor.getValue() * factor; +} + +void ViewProviderDatum::resetTemporarySize() +{ + float sz = App::GetApplication() + .GetParameterGroupByPath("User parameter:BaseApp/Preferences/View") + ->GetFloat("LocalCoordinateSystemSize", 1.0); // NOLINT + + soScale->scaleFactor = sz; +} void ViewProviderDatum::onChanged(const App::Property* prop) { ViewProviderGeometryObject::onChanged(prop); diff --git a/src/Gui/ViewProviderDatum.h b/src/Gui/ViewProviderDatum.h index e2c25559d0ff..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 @@ -46,9 +45,6 @@ namespace Gui /// Get point derived classes will add their specific stuff SoSeparator* getDatumRoot() const { return pRoot; } - /// Get pointer to the text label associated with the feature - SoText2* getLabel() const { return pLabel; } - void attach(App::DocumentObject*) override; std::vector getDisplayModes() const override; void setDisplayMode(const char* ModeName) 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 3cf3fdb85b25..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,17 +64,17 @@ 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; @@ -114,5 +115,5 @@ void ViewProviderLine::attach(App::DocumentObject *obj) { 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 a0ea2c40bb9f..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 = 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 = getDatumRoot(); - 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); - sep->addChild(getLabel()); + pLabel->string.setValue(getLabelText(role).c_str()); + + 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/Mod/Part/parttests/ColorTransparencyTest.py b/src/Mod/Part/parttests/ColorTransparencyTest.py index bf2786327a65..ec306914d93f 100644 --- a/src/Mod/Part/parttests/ColorTransparencyTest.py +++ b/src/Mod/Part/parttests/ColorTransparencyTest.py @@ -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/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); } } From c7630ac06566bc715c8b2a4cefcdf0bb7104807d Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Fri, 3 Jan 2025 11:38:51 +0100 Subject: [PATCH 177/221] Draft: Make test_modification tests independent of fillmode Fixes #18315. In the issue discussion the more obvious solution (change the MakeFace property of the Draft_Wires) was missed. --- src/Mod/Draft/drafttests/test_modification.py | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/src/Mod/Draft/drafttests/test_modification.py b/src/Mod/Draft/drafttests/test_modification.py index 166d98031b51..2f4e9c217f81 100644 --- a/src/Mod/Draft/drafttests/test_modification.py +++ b/src/Mod/Draft/drafttests/test_modification.py @@ -283,31 +283,37 @@ def test_upgrade(self): line_2.Shape = shape_line_2 App.ActiveDocument.recompute() + # upgrade to wire obj = Draft.upgrade([line_1, line_2], delete=True) App.ActiveDocument.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() 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() 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) + # when draftifying, upgrade doesn't return a new object + wire = App.ActiveDocument.ActiveObject + wire.MakeFace = True # make test independent of fillmode parameter App.ActiveDocument.recompute() - wire = App.ActiveDocument.Wire _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() _msg(" The last object cannot be upgraded further") @@ -324,20 +330,24 @@ 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]) + wire.MakeFace = True # make test independent of fillmode parameter App.ActiveDocument.recompute() + # downgrade to face obj = Draft.downgrade(wire, delete=True) App.ActiveDocument.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() 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() s3 = obj3[0][0] @@ -345,6 +355,7 @@ def test_downgrade(self): 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() s4 = obj4[0] From 0bc9737ca61e23dc9b38b27c038aa2a842e581b2 Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Fri, 3 Jan 2025 16:51:42 +0100 Subject: [PATCH 178/221] Draft: Introduce base classes for Draft tests To avoid code duplication. --- src/Mod/Draft/drafttests/test_airfoildat.py | 29 +--- src/Mod/Draft/drafttests/test_array.py | 28 +--- src/Mod/Draft/drafttests/test_base.py | 56 +++++++ src/Mod/Draft/drafttests/test_creation.py | 35 +---- .../Draft/drafttests/test_draftgeomutils.py | 13 +- src/Mod/Draft/drafttests/test_dwg.py | 28 +--- src/Mod/Draft/drafttests/test_dxf.py | 29 +--- src/Mod/Draft/drafttests/test_import.py | 15 +- src/Mod/Draft/drafttests/test_import_gui.py | 15 +- src/Mod/Draft/drafttests/test_import_tools.py | 15 +- src/Mod/Draft/drafttests/test_modification.py | 144 ++++++++---------- src/Mod/Draft/drafttests/test_oca.py | 29 +--- src/Mod/Draft/drafttests/test_pivy.py | 33 +--- src/Mod/Draft/drafttests/test_svg.py | 33 +--- 14 files changed, 157 insertions(+), 345 deletions(-) create mode 100644 src/Mod/Draft/drafttests/test_base.py diff --git a/src/Mod/Draft/drafttests/test_airfoildat.py b/src/Mod/Draft/drafttests/test_airfoildat.py index 34905b724d78..7311a9175099 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. * # * * @@ -29,35 +30,18 @@ ## \addtogroup drafttests # @{ import os -import unittest import FreeCAD as App import Draft import drafttests.auxiliary as aux from draftutils.messages import _msg +from drafttests import test_base -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" @@ -87,11 +71,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..b0a4e7175257 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. * # * * @@ -25,7 +26,6 @@ ## \addtogroup drafttests # @{ -import unittest import math import FreeCAD as App @@ -33,27 +33,12 @@ 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") @@ -81,11 +66,4 @@ def test_link_array(self): 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..9d07424d088f --- /dev/null +++ b/src/Mod/Draft/drafttests/test_base.py @@ -0,0 +1,56 @@ +# 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 * +# * . * +# * * +# *************************************************************************** + +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..30a484c41027 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. * # * * @@ -28,7 +29,6 @@ ## \addtogroup drafttests # @{ -import unittest import math import FreeCAD as App @@ -37,28 +37,12 @@ from FreeCAD import Vector from draftutils.messages import _msg +from drafttests import test_base -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 +266,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 +362,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 +378,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..12e671b1914e 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. * # * * @@ -22,20 +23,16 @@ # *************************************************************************** """Unit test for the DraftGeomUtils module.""" -import unittest import FreeCAD import Part import DraftGeomUtils import drafttests.auxiliary as aux from draftutils.messages import _msg +from drafttests import test_base -class TestDraftGeomUtils(unittest.TestCase): +class TestDraftGeomUtils(test_base.DraftTestCaseNoDoc): """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() - def check_wire(self, wire): offset_values = (2000.0, 0.0, -1000, -2000, -3000, -5500) for offset_start in offset_values: @@ -215,9 +212,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..3a62989023c8 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. * # * * @@ -29,7 +30,6 @@ ## \addtogroup drafttests # @{ import os -import unittest import FreeCAD as App import Draft @@ -38,26 +38,9 @@ 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" @@ -87,11 +70,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..ddb73c58b798 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. * # * * @@ -29,35 +30,18 @@ ## \addtogroup drafttests # @{ import os -import unittest import FreeCAD as App import Draft import drafttests.auxiliary as aux from draftutils.messages import _msg +from drafttests import test_base -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" @@ -87,11 +71,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..08f69191d96f 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. * # * * @@ -28,23 +29,13 @@ ## \addtogroup drafttests # @{ -import unittest - import drafttests.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..b145029b03c6 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. * # * * @@ -28,23 +29,13 @@ ## \addtogroup drafttests # @{ -import unittest - import drafttests.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..2e0dfe9bd444 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. * # * * @@ -28,23 +29,13 @@ ## \addtogroup drafttests # @{ -import unittest - import drafttests.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 2f4e9c217f81..9bf41bdfe9d3 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. * # * * @@ -28,8 +29,6 @@ ## \addtogroup drafttests # @{ -import unittest - import FreeCAD as App import Draft import drafttests.auxiliary as aux @@ -37,28 +36,12 @@ from FreeCAD import Vector from draftutils.messages import _msg, _wrn +from drafttests import test_base -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 +51,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 +86,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 +108,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 +132,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 +151,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 +179,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 +200,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 +243,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,29 +260,29 @@ 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)) @@ -307,15 +290,15 @@ def test_upgrade(self): # upgrade to Draft_Wire Draft.upgrade(obj3[0], delete=True) # when draftifying, upgrade doesn't return a new object - wire = App.ActiveDocument.ActiveObject + wire = self.doc.ActiveObject wire.MakeFace = True # make test independent of fillmode parameter - App.ActiveDocument.recompute() + 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)) @@ -331,25 +314,25 @@ def test_downgrade(self): _msg(" c={0}, a={1}".format(c, a)) wire = Draft.make_wire([a, b, c, a]) wire.MakeFace = True # make test independent of fillmode parameter - App.ActiveDocument.recompute() + 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)) @@ -357,7 +340,7 @@ def test_downgrade(self): # 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") @@ -376,7 +359,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)) @@ -388,7 +371,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) @@ -414,16 +397,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)) @@ -437,7 +420,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) @@ -466,7 +449,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 @@ -487,7 +470,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 @@ -574,8 +557,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) @@ -592,18 +575,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)) @@ -611,7 +594,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) @@ -620,14 +603,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) @@ -644,7 +627,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) @@ -691,12 +674,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), @@ -735,12 +718,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), @@ -764,9 +747,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 @@ -796,9 +779,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), @@ -822,9 +805,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), @@ -835,11 +818,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..695adb9ec135 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. * # * * @@ -29,35 +30,18 @@ ## \addtogroup drafttests # @{ import os -import unittest import FreeCAD as App import Draft import drafttests.auxiliary as aux from draftutils.messages import _msg +from drafttests import test_base -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" @@ -87,11 +71,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..b2f10f0eca31 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. * # * * @@ -28,35 +29,16 @@ ## \addtogroup drafttests # @{ -import unittest - -import FreeCAD as App import FreeCADGui as Gui import drafttests.auxiliary as aux from draftutils.messages import _msg +from drafttests import test_base -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 +50,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..b872a04242e0 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. * # * * @@ -29,13 +30,13 @@ ## \addtogroup drafttests # @{ import os -import unittest import FreeCAD as App import Draft import drafttests.auxiliary as aux from draftutils.messages import _msg +from drafttests import test_base try: import Arch @@ -45,26 +46,9 @@ 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" @@ -101,11 +85,11 @@ def test_get_svg_from_arch_space_with_zero_vector(self): import Draft sb = Part.makeBox(1,1,1) - b = App.ActiveDocument.addObject('Part::Feature','Box') + 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)) @@ -116,11 +100,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) - ## @} From 4d37256877204ca0c4eb9e14314feaf42a2dc7a3 Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Fri, 3 Jan 2025 19:56:20 +0100 Subject: [PATCH 179/221] Update CMakeLists.txt --- src/Mod/Draft/CMakeLists.txt | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) 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 From 4ba16cebb7f0f6c9d5a4219effca5030a728149c Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Fri, 3 Jan 2025 20:10:47 +0100 Subject: [PATCH 180/221] Add missing import --- src/Mod/Draft/drafttests/test_svg.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Mod/Draft/drafttests/test_svg.py b/src/Mod/Draft/drafttests/test_svg.py index b872a04242e0..88e77e338852 100644 --- a/src/Mod/Draft/drafttests/test_svg.py +++ b/src/Mod/Draft/drafttests/test_svg.py @@ -30,6 +30,7 @@ ## \addtogroup drafttests # @{ import os +import unittest import FreeCAD as App import Draft From 28d177a7250c7f0193110e57ffb46569a94c3f59 Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Fri, 3 Jan 2025 20:32:17 +0100 Subject: [PATCH 181/221] Add another missing import --- src/Mod/Draft/drafttests/test_dwg.py | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Mod/Draft/drafttests/test_dwg.py b/src/Mod/Draft/drafttests/test_dwg.py index 3a62989023c8..195d6f9135d7 100644 --- a/src/Mod/Draft/drafttests/test_dwg.py +++ b/src/Mod/Draft/drafttests/test_dwg.py @@ -36,6 +36,7 @@ import drafttests.auxiliary as aux from draftutils.messages import _msg +from drafttests import test_base class DraftDWG(test_base.DraftTestCaseDoc): From 2b35ad22816de62f3adc8276bb647e613016b005 Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Fri, 3 Jan 2025 22:11:05 +0100 Subject: [PATCH 182/221] Draft: Minor cosmetic changes to test files --- src/Mod/Draft/drafttests/auxiliary.py | 3 + .../Draft/drafttests/draft_test_objects.py | 9 ++- src/Mod/Draft/drafttests/test_airfoildat.py | 12 +-- src/Mod/Draft/drafttests/test_array.py | 22 +++-- src/Mod/Draft/drafttests/test_base.py | 2 + src/Mod/Draft/drafttests/test_creation.py | 7 +- .../Draft/drafttests/test_draftgeomutils.py | 81 ++++++++++--------- src/Mod/Draft/drafttests/test_dwg.py | 11 +-- src/Mod/Draft/drafttests/test_dxf.py | 12 +-- src/Mod/Draft/drafttests/test_import.py | 5 +- src/Mod/Draft/drafttests/test_import_gui.py | 5 +- src/Mod/Draft/drafttests/test_import_tools.py | 4 +- src/Mod/Draft/drafttests/test_modification.py | 10 ++- src/Mod/Draft/drafttests/test_oca.py | 12 +-- src/Mod/Draft/drafttests/test_pivy.py | 8 +- src/Mod/Draft/drafttests/test_svg.py | 17 ++-- 16 files changed, 124 insertions(+), 96 deletions(-) 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 7311a9175099..f336b177230f 100644 --- a/src/Mod/Draft/drafttests/test_airfoildat.py +++ b/src/Mod/Draft/drafttests/test_airfoildat.py @@ -22,21 +22,23 @@ # * 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 FreeCAD as App import Draft -import drafttests.auxiliary as aux - -from draftutils.messages import _msg +from drafttests import auxiliary as aux from drafttests import test_base +from draftutils.messages import _msg class DraftAirfoilDAT(test_base.DraftTestCaseDoc): @@ -48,7 +50,7 @@ def test_read_airfoildat(self): _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))) @@ -62,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))) diff --git a/src/Mod/Draft/drafttests/test_array.py b/src/Mod/Draft/drafttests/test_array.py index b0a4e7175257..1e49cb4d66e3 100644 --- a/src/Mod/Draft/drafttests/test_array.py +++ b/src/Mod/Draft/drafttests/test_array.py @@ -19,20 +19,18 @@ # * . * # * * # *************************************************************************** + """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 math -import FreeCAD as App import Draft - from FreeCAD import Vector -from draftutils.messages import _msg from drafttests import test_base @@ -41,29 +39,29 @@ class DraftArray(test_base.DraftTestCaseDoc): 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) ## @} diff --git a/src/Mod/Draft/drafttests/test_base.py b/src/Mod/Draft/drafttests/test_base.py index 9d07424d088f..df29f665394f 100644 --- a/src/Mod/Draft/drafttests/test_base.py +++ b/src/Mod/Draft/drafttests/test_base.py @@ -21,6 +21,8 @@ # * * # *************************************************************************** +"""Unit tests for the Draft Workbench, base classes.""" + import unittest import FreeCAD as App diff --git a/src/Mod/Draft/drafttests/test_creation.py b/src/Mod/Draft/drafttests/test_creation.py index 30a484c41027..0a224a8dd853 100644 --- a/src/Mod/Draft/drafttests/test_creation.py +++ b/src/Mod/Draft/drafttests/test_creation.py @@ -22,22 +22,23 @@ # * 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 math import FreeCAD as App import Draft -import drafttests.auxiliary as aux - from FreeCAD import Vector -from draftutils.messages import _msg from drafttests import test_base +from draftutils.messages import _msg class DraftCreation(test_base.DraftTestCaseDoc): diff --git a/src/Mod/Draft/drafttests/test_draftgeomutils.py b/src/Mod/Draft/drafttests/test_draftgeomutils.py index 12e671b1914e..3523ba086a26 100644 --- a/src/Mod/Draft/drafttests/test_draftgeomutils.py +++ b/src/Mod/Draft/drafttests/test_draftgeomutils.py @@ -21,14 +21,15 @@ # * USA * # * * # *************************************************************************** -"""Unit test for the DraftGeomUtils module.""" -import FreeCAD +"""Unit tests for the Draft Workbench, DraftGeomUtils module tests.""" + import Part import DraftGeomUtils -import drafttests.auxiliary as aux -from draftutils.messages import _msg +from FreeCAD import Vector from drafttests import test_base +from draftutils.messages import _msg + class TestDraftGeomUtils(test_base.DraftTestCaseNoDoc): """Testing the functions in the file DraftGeomUtils.py""" @@ -62,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:]): @@ -80,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:]): @@ -99,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:]): @@ -119,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:]): @@ -138,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:]): @@ -157,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:]): @@ -177,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:]): @@ -198,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:]): diff --git a/src/Mod/Draft/drafttests/test_dwg.py b/src/Mod/Draft/drafttests/test_dwg.py index 195d6f9135d7..5605aa919752 100644 --- a/src/Mod/Draft/drafttests/test_dwg.py +++ b/src/Mod/Draft/drafttests/test_dwg.py @@ -23,20 +23,21 @@ # * * # *************************************************************************** """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 FreeCAD as App import Draft -import drafttests.auxiliary as aux - -from draftutils.messages import _msg +from drafttests import auxiliary as aux from drafttests import test_base +from draftutils.messages import _msg class DraftDWG(test_base.DraftTestCaseDoc): @@ -48,7 +49,7 @@ def test_read_dwg(self): _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))) @@ -62,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))) diff --git a/src/Mod/Draft/drafttests/test_dxf.py b/src/Mod/Draft/drafttests/test_dxf.py index ddb73c58b798..e64486a5303f 100644 --- a/src/Mod/Draft/drafttests/test_dxf.py +++ b/src/Mod/Draft/drafttests/test_dxf.py @@ -22,21 +22,23 @@ # * 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 FreeCAD as App import Draft -import drafttests.auxiliary as aux - -from draftutils.messages import _msg +from drafttests import auxiliary as aux from drafttests import test_base +from draftutils.messages import _msg class DraftDXF(test_base.DraftTestCaseDoc): @@ -48,7 +50,7 @@ def test_read_dxf(self): _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))) @@ -62,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))) diff --git a/src/Mod/Draft/drafttests/test_import.py b/src/Mod/Draft/drafttests/test_import.py index 08f69191d96f..9a5007295f9e 100644 --- a/src/Mod/Draft/drafttests/test_import.py +++ b/src/Mod/Draft/drafttests/test_import.py @@ -22,14 +22,17 @@ # * 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 drafttests.auxiliary as aux + +from drafttests import auxiliary as aux from drafttests import test_base diff --git a/src/Mod/Draft/drafttests/test_import_gui.py b/src/Mod/Draft/drafttests/test_import_gui.py index b145029b03c6..eb686eb702ae 100644 --- a/src/Mod/Draft/drafttests/test_import_gui.py +++ b/src/Mod/Draft/drafttests/test_import_gui.py @@ -22,14 +22,17 @@ # * 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 drafttests.auxiliary as aux + +from drafttests import auxiliary as aux from drafttests import test_base diff --git a/src/Mod/Draft/drafttests/test_import_tools.py b/src/Mod/Draft/drafttests/test_import_tools.py index 2e0dfe9bd444..757bacc583cd 100644 --- a/src/Mod/Draft/drafttests/test_import_tools.py +++ b/src/Mod/Draft/drafttests/test_import_tools.py @@ -23,13 +23,15 @@ # * * # *************************************************************************** """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 drafttests.auxiliary as aux + +from drafttests import auxiliary as aux from drafttests import test_base diff --git a/src/Mod/Draft/drafttests/test_modification.py b/src/Mod/Draft/drafttests/test_modification.py index 9bf41bdfe9d3..2fb0a57ba7f1 100644 --- a/src/Mod/Draft/drafttests/test_modification.py +++ b/src/Mod/Draft/drafttests/test_modification.py @@ -22,21 +22,23 @@ # * 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 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(test_base.DraftTestCaseDoc): diff --git a/src/Mod/Draft/drafttests/test_oca.py b/src/Mod/Draft/drafttests/test_oca.py index 695adb9ec135..1b2b7b90b898 100644 --- a/src/Mod/Draft/drafttests/test_oca.py +++ b/src/Mod/Draft/drafttests/test_oca.py @@ -22,21 +22,23 @@ # * 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 FreeCAD as App import Draft -import drafttests.auxiliary as aux - -from draftutils.messages import _msg +from drafttests import auxiliary as aux from drafttests import test_base +from draftutils.messages import _msg class DraftOCA(test_base.DraftTestCaseDoc): @@ -48,7 +50,7 @@ def test_read_oca(self): _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))) @@ -62,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))) diff --git a/src/Mod/Draft/drafttests/test_pivy.py b/src/Mod/Draft/drafttests/test_pivy.py index b2f10f0eca31..8adcf3bd1037 100644 --- a/src/Mod/Draft/drafttests/test_pivy.py +++ b/src/Mod/Draft/drafttests/test_pivy.py @@ -22,18 +22,20 @@ # * 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 FreeCADGui as Gui -import drafttests.auxiliary as aux -from draftutils.messages import _msg +import FreeCADGui as Gui +from drafttests import auxiliary as aux from drafttests import test_base +from draftutils.messages import _msg class DraftPivy(test_base.DraftTestCaseDoc): diff --git a/src/Mod/Draft/drafttests/test_svg.py b/src/Mod/Draft/drafttests/test_svg.py index 88e77e338852..9619b010253d 100644 --- a/src/Mod/Draft/drafttests/test_svg.py +++ b/src/Mod/Draft/drafttests/test_svg.py @@ -23,21 +23,22 @@ # * * # *************************************************************************** """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 draftutils.messages import _msg +from drafttests import auxiliary as aux from drafttests import test_base +from draftutils.messages import _msg try: import Arch @@ -56,7 +57,7 @@ def test_read_svg(self): _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))) @@ -70,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))) @@ -85,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 = self.doc.addObject('Part::Feature','Box') + sb = Part.makeBox(1, 1, 1) + b = self.doc.addObject("Part::Feature", "Box") b.Shape = sb s = Arch.makeSpace(b) 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: From 19b4470ce9044eb9c723a8e42e4de9a504323cfa Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Sat, 4 Jan 2025 12:20:33 +0100 Subject: [PATCH 183/221] Draft: comment out 3 test files with only dummy tests Some Draft test files contain only dummy tests (`aux.fake_function`). Running them will just open a new file and then immediately close it. This can result in issues with code that is called with a delay. See #18679. Disabling these tests by commenting them out avoids this. --- src/Mod/Draft/TestDraft.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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 From 03c167ec47f78460907be7c47e8dd7fd6383670d Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Thu, 26 Dec 2024 14:43:28 +0100 Subject: [PATCH 184/221] BIM: getDefaultColor: change transparency to alpha --- src/Mod/BIM/ArchCommands.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/Mod/BIM/ArchCommands.py b/src/Mod/BIM/ArchCommands.py index 2aad5db3e9dd..95c82d668989 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 From e15285ae41bd2a261fd93090a7df03726f39839c Mon Sep 17 00:00:00 2001 From: SurajDadral Date: Fri, 3 Jan 2025 00:24:17 +0530 Subject: [PATCH 185/221] BIM: fixes stirrups placement in ifc export Fixes: https://github.com/amrit3701/FreeCAD-Reinforcement/issues/223 --- src/Mod/BIM/ArchRebar.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) 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 From 23284cd08da712bf19b31e238caaf9b855e09ea1 Mon Sep 17 00:00:00 2001 From: Paul Lee Date: Sun, 5 Jan 2025 11:47:19 +0800 Subject: [PATCH 186/221] [ArchStairs] Improve Stairs Creation and ensureBase Refer to discussion at - https://github.com/FreeCAD/FreeCAD/pull/18864 https://github.com/FreeCAD/FreeCAD/pull/18651 https://github.com/FreeCAD/FreeCAD/issues/16409 Like Wall, Stairs should do without Base. Base validity tested in execute() prevented the desired and documented behaviour. With this improvement, EnsureBase() is now only to be run when there is Base. If there is no Base, or Base is not valid, Stairs would be created as declared. --- src/Mod/BIM/Arch.py | 8 +------- src/Mod/BIM/ArchStairs.py | 7 ++++--- src/Mod/BIM/bimcommands/BimStairs.py | 16 +++++++++++----- 3 files changed, 16 insertions(+), 15 deletions(-) diff --git a/src/Mod/BIM/Arch.py b/src/Mod/BIM/Arch.py index 02af3dd92040..6ea04f1b4774 100644 --- a/src/Mod/BIM/Arch.py +++ b/src/Mod/BIM/Arch.py @@ -832,7 +832,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 @@ -841,17 +840,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] diff --git a/src/Mod/BIM/ArchStairs.py b/src/Mod/BIM/ArchStairs.py index bf2b76b00c5a..a8f7dee292d6 100644 --- a/src/Mod/BIM/ArchStairs.py +++ b/src/Mod/BIM/ArchStairs.py @@ -287,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: @@ -334,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/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() From 742ca3204c74ee35700ac230e9846710e5305241 Mon Sep 17 00:00:00 2001 From: Paul Lee Date: Sat, 4 Jan 2025 19:12:11 +0800 Subject: [PATCH 187/221] [ArchWall] Fix Regression - EnsureBase prevent creation without Base Refer to discussion at - https://github.com/FreeCAD/FreeCAD/pull/18651 https://github.com/FreeCAD/FreeCAD/issues/16409 Wall should do without Base. Base validity tested in execute() prevented the desired and documented behaviour. EnsureBase() is remarked out in execute() and to be run in getExtrusionData(). With this fix, if there is no Base, or Base is not valid, Wall would be created as declared. --- src/Mod/BIM/ArchWall.py | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/src/Mod/BIM/ArchWall.py b/src/Mod/BIM/ArchWall.py index 6f33182f8885..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 @@ -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]) From 2a726471ce6d48b84ca7f1e4991856991393feca Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Tue, 24 Dec 2024 13:50:44 +0100 Subject: [PATCH 188/221] BIM: Fixed nativeIFC license - issue #18622 --- src/Mod/BIM/ifc_objects.py | 6 +++--- src/Mod/BIM/ifc_viewproviders.py | 6 +++--- src/Mod/BIM/nativeifc/ifc_commands.py | 14 +++++++------- src/Mod/BIM/nativeifc/ifc_diff.py | 14 +++++++------- src/Mod/BIM/nativeifc/ifc_export.py | 14 +++++++------- src/Mod/BIM/nativeifc/ifc_generator.py | 14 +++++++------- src/Mod/BIM/nativeifc/ifc_geometry.py | 14 +++++++------- src/Mod/BIM/nativeifc/ifc_import.py | 14 +++++++------- src/Mod/BIM/nativeifc/ifc_layers.py | 14 +++++++------- src/Mod/BIM/nativeifc/ifc_materials.py | 14 +++++++------- src/Mod/BIM/nativeifc/ifc_objects.py | 14 +++++++------- src/Mod/BIM/nativeifc/ifc_observer.py | 14 +++++++------- src/Mod/BIM/nativeifc/ifc_openshell.py | 8 ++++---- src/Mod/BIM/nativeifc/ifc_performance_test.py | 14 +++++++------- src/Mod/BIM/nativeifc/ifc_psets.py | 14 +++++++------- src/Mod/BIM/nativeifc/ifc_selftest.py | 14 +++++++------- src/Mod/BIM/nativeifc/ifc_status.py | 14 +++++++------- src/Mod/BIM/nativeifc/ifc_tools.py | 6 +++--- src/Mod/BIM/nativeifc/ifc_tree.py | 14 +++++++------- src/Mod/BIM/nativeifc/ifc_types.py | 6 +++--- src/Mod/BIM/nativeifc/ifc_viewproviders.py | 6 +++--- 21 files changed, 124 insertions(+), 124 deletions(-) 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/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 404328fac50e..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 * # * * # *************************************************************************** diff --git a/src/Mod/BIM/nativeifc/ifc_export.py b/src/Mod/BIM/nativeifc/ifc_export.py index 1fcf0694f1db..a5b8901b7272 100644 --- a/src/Mod/BIM/nativeifc/ifc_export.py +++ b/src/Mod/BIM/nativeifc/ifc_export.py @@ -3,20 +3,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 * # * * # *************************************************************************** diff --git a/src/Mod/BIM/nativeifc/ifc_generator.py b/src/Mod/BIM/nativeifc/ifc_generator.py index 583dac7a24d3..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 * # * * # *************************************************************************** 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 ea8f097c2493..6a4c3ea33556 100644 --- a/src/Mod/BIM/nativeifc/ifc_objects.py +++ b/src/Mod/BIM/nativeifc/ifc_objects.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_observer.py b/src/Mod/BIM/nativeifc/ifc_observer.py index 71638c0ca4f9..d75e46d7045c 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 * # * * # *************************************************************************** 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..d6dd7bae7f1c 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 * # * * # *************************************************************************** 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 c4c782327681..8c0ed11012e9 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 * # * * # *************************************************************************** diff --git a/src/Mod/BIM/nativeifc/ifc_tools.py b/src/Mod/BIM/nativeifc/ifc_tools.py index 5e46436bf190..6b62a241714e 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 * 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..ea31ba6c4906 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 * diff --git a/src/Mod/BIM/nativeifc/ifc_viewproviders.py b/src/Mod/BIM/nativeifc/ifc_viewproviders.py index 9880e1dc3ab1..9402bf66104e 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 * From b359a2c46c6ee0df9918021ebd797036113acb86 Mon Sep 17 00:00:00 2001 From: Roy-043 <70520633+Roy-043@users.noreply.github.com> Date: Mon, 6 Jan 2025 14:56:53 +0100 Subject: [PATCH 189/221] Draft: make_sketch.py: Use sketcher methods to add constraints (#18805) * Draft: make_sketch.py: Use sketcher methods to add constraints A sketch object has its own methods to add coincident, horizontal and vertical constraints. Using those methods allows to simplify the make_sketch.py code. The new code applies the mentioned constraints to the whole sketch, instead of per object. The old code would not add coincident constraints between seperate, but connected, objects. the new code does. Note that the code for point objects (not changed in this PR) does not work properly. * Fix 2 issues * The Sketcher detect functions need a tolerance argument. * obj.Shape.copy() does not work properly for a Draft_Point. As a workaround a Part Vertex is created instead. --- src/Mod/Draft/draftmake/make_sketch.py | 192 ++++++------------------- 1 file changed, 43 insertions(+), 149 deletions(-) diff --git a/src/Mod/Draft/draftmake/make_sketch.py b/src/Mod/Draft/draftmake/make_sketch.py index d9fe94c772b7..736b39a8c5a5 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 @@ -195,139 +189,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 +227,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 From f773dfad91e7b0923028a114eba35f9cd7172fbd Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Mon, 6 Jan 2025 17:23:37 +0100 Subject: [PATCH 190/221] Draft: props_changed_placement_only should ignore material props The new material related properties (Density, Volume and Mass) must be ignored by the `props_changed_placement_only` function. Without this moving a Draft_Point will fail for example. --- src/Mod/Draft/draftobjects/base.py | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) 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"} From 7566200f0aa5fd0c1aaa6554199614f6656455f7 Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 27 Dec 2024 14:43:29 +0100 Subject: [PATCH 191/221] Fix German translation until the next download from crowdin --- src/Gui/Language/FreeCAD_de.ts | 302 +++++++++--------- .../Gui/Resources/translations/Material_de.ts | 4 +- .../Gui/Resources/translations/Part_de.ts | 4 +- .../Resources/translations/PartDesign_de.ts | 2 +- .../Resources/translations/Spreadsheet_de.ts | 30 +- .../Resources/translations/StartPage_de.ts | 4 +- 6 files changed, 173 insertions(+), 173 deletions(-) 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/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/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/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/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/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 From 35700db40e384dd9b51ed6fbd43962a034afc57c Mon Sep 17 00:00:00 2001 From: wmayer Date: Mon, 23 Dec 2024 18:17:41 +0100 Subject: [PATCH 192/221] Sketcher: Add an option to always add ext. geometry as reference --- src/Mod/Sketcher/Gui/CommandCreateGeo.cpp | 18 ++++++++++++++---- .../Sketcher/Gui/DrawSketchHandlerExternal.h | 9 ++++++--- src/Mod/Sketcher/Gui/SketcherSettings.cpp | 2 ++ src/Mod/Sketcher/Gui/SketcherSettings.ui | 19 +++++++++++++++++++ 4 files changed, 41 insertions(+), 7 deletions(-) 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/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 + + + From 0dba0a3b319e2a0ada5ae31927894ab9375a2e33 Mon Sep 17 00:00:00 2001 From: wmayer Date: Wed, 25 Dec 2024 18:31:03 +0100 Subject: [PATCH 193/221] Gui: Hide line marker and do not highlight current line in Python console --- src/Gui/PythonConsole.cpp | 6 ++- src/Gui/TextEdit.cpp | 82 ++++++++++++++++++++++++++------------- src/Gui/TextEdit.h | 10 +++-- 3 files changed, 65 insertions(+), 33 deletions(-) diff --git a/src/Gui/PythonConsole.cpp b/src/Gui/PythonConsole.cpp index 4a9db3e19bbf..ceb206b69d32 100644 --- a/src/Gui/PythonConsole.cpp +++ b/src/Gui/PythonConsole.cpp @@ -450,7 +450,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); @@ -511,7 +514,6 @@ PythonConsole::~PythonConsole() saveHistory(); Base::PyGILStateLocker lock; d->hGrpSettings->Detach(this); - delete pythonSyntax; Py_XDECREF(d->_stdoutPy); Py_XDECREF(d->_stderrPy); Py_XDECREF(d->_stdinPy); diff --git a/src/Gui/TextEdit.cpp b/src/Gui/TextEdit.cpp index faa508295dc3..90dd2acc6cb0 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() { @@ -257,11 +259,6 @@ TextEditor::TextEditor(QWidget* parent) highlightCurrentLine(); } -void TextEditor::keyPressEvent(QKeyEvent *e) -{ - TextEdit::keyPressEvent( e ); -} - /** Destroys the object and frees any allocated resources */ TextEditor::~TextEditor() { @@ -270,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; @@ -277,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); @@ -332,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); @@ -404,31 +434,29 @@ void TextEditor::OnChange(Base::Subject &rCaller,const char* sReaso // Enables/Disables Line number in the Macro Editor from Edit->Preferences->Editor menu. if (strcmp(sReason, "EnableLineNumber") == 0) { + int width = 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 (hPrefGrp->GetBool("EnableLineNumber", true)) { + width = lineNumberAreaWidth(); + } + lineNumberArea->setGeometry(QRect(cr.left(), cr.top(), width, cr.height())); } if (strcmp(sReason, "EnableBlockCursor") == 0 || strcmp(sReason, "FontSize") == 0 || strcmp(sReason, "Font") == 0) { bool block = hPrefGrp->GetBool("EnableBlockCursor", false); - if (block) + if (block) { setCursorWidth(QFontMetrics(font()).averageCharWidth()); - else + } + else { setCursorWidth(1); + } } } -void TextEditor::paintEvent (QPaintEvent * e) -{ - TextEdit::paintEvent( e ); -} - // ------------------------------------------------------------------------------ + PythonTextEditor::PythonTextEditor(QWidget *parent) : TextEditor(parent) { diff --git a/src/Gui/TextEdit.h b/src/Gui/TextEdit.h index ec17c852edf6..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; } @@ -128,9 +130,9 @@ class GuiExport PythonTextEditor : public TextEditor public: explicit PythonTextEditor(QWidget *parent = nullptr); ~PythonTextEditor() override; + protected: void keyPressEvent(QKeyEvent *) override; - }; From d979235a489160e8f74a88af901792f261fb92de Mon Sep 17 00:00:00 2001 From: wmayer Date: Wed, 25 Dec 2024 19:19:23 +0100 Subject: [PATCH 194/221] Gui: Remove code duplication in PythonConsole class --- src/Gui/PythonConsole.cpp | 48 ++++----------------------------------- src/Gui/PythonEditor.cpp | 19 ++++++++++++++++ src/Gui/PythonEditor.h | 1 + src/Gui/TextEdit.cpp | 12 ---------- 4 files changed, 25 insertions(+), 55 deletions(-) diff --git a/src/Gui/PythonConsole.cpp b/src/Gui/PythonConsole.cpp index ceb206b69d32..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; } }; @@ -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); + } } /** diff --git a/src/Gui/PythonEditor.cpp b/src/Gui/PythonEditor.cpp index 4ec20d6dad9a..04f4f5dfc261 100644 --- a/src/Gui/PythonEditor.cpp +++ b/src/Gui/PythonEditor.cpp @@ -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; diff --git a/src/Gui/PythonEditor.h b/src/Gui/PythonEditor.h index 8e442c9d46cd..432975d9dfec 100644 --- a/src/Gui/PythonEditor.h +++ b/src/Gui/PythonEditor.h @@ -44,6 +44,7 @@ class GuiExport PythonEditor : public PythonTextEditor 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/TextEdit.cpp b/src/Gui/TextEdit.cpp index 90dd2acc6cb0..64c7d5698230 100644 --- a/src/Gui/TextEdit.cpp +++ b/src/Gui/TextEdit.cpp @@ -441,18 +441,6 @@ void TextEditor::OnChange(Base::Subject &rCaller,const char* sReaso } lineNumberArea->setGeometry(QRect(cr.left(), cr.top(), width, 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); - } - } } // ------------------------------------------------------------------------------ From 6acd1fe3d076b874a56e8280abb9178224d484ca Mon Sep 17 00:00:00 2001 From: MisterMaker Date: Mon, 6 Jan 2025 17:55:13 +0100 Subject: [PATCH 195/221] Stylesheets spreadsheets visual fix. (#18719) * this fixes the spreadsheet alignment and the corner button * missed a line --- src/Gui/Stylesheets/FreeCAD Dark.qss | 45 ++++++++++++++------------- src/Gui/Stylesheets/FreeCAD Light.qss | 42 +++++++++++++------------ 2 files changed, 45 insertions(+), 42 deletions(-) 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 { From 6edd0daa1e9e9ad7866b68997517163963a1158a Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Mon, 6 Jan 2025 17:55:50 +0100 Subject: [PATCH 196/221] BIM: Quantities support for nativeIFC objects (#18689) * BIM: Quantities support for nativeIFC objects * BIM: Added nativeIFC support for schedules --- src/Mod/BIM/Arch.py | 14 + src/Mod/BIM/ArchCommands.py | 4 +- src/Mod/BIM/ArchSchedule.py | 526 +- src/Mod/BIM/CMakeLists.txt | 1 + src/Mod/BIM/Presets/pset_definitions.csv | 530 +- src/Mod/BIM/Presets/qto_definitions.csv | 115 + src/Mod/BIM/Resources/ui/ArchSchedule.ui | 28 +- .../BIM/Resources/ui/dialogIfcQuantities.ui | 29 +- src/Mod/BIM/bimcommands/BimIfcQuantities.py | 368 +- src/Mod/BIM/importers/exportIFC.py | 14 +- src/Mod/BIM/nativeifc/ifc_export.py | 2 + src/Mod/BIM/nativeifc/ifc_objects.py | 7 + src/Mod/BIM/nativeifc/ifc_observer.py | 7 +- src/Mod/BIM/nativeifc/ifc_psets.py | 61 +- src/Mod/BIM/nativeifc/ifc_tools.py | 26 +- src/Mod/BIM/utils/buildPsets.py | 161 +- src/Mod/BIM/utils/convertPsets.py | 102 - src/Mod/BIM/utils/pset_definitions.csv | 351 - src/Mod/BIM/utils/pset_definitions.xml | 79288 ---------------- 19 files changed, 1410 insertions(+), 80224 deletions(-) create mode 100644 src/Mod/BIM/Presets/qto_definitions.csv delete mode 100644 src/Mod/BIM/utils/convertPsets.py delete mode 100644 src/Mod/BIM/utils/pset_definitions.csv delete mode 100644 src/Mod/BIM/utils/pset_definitions.xml diff --git a/src/Mod/BIM/Arch.py b/src/Mod/BIM/Arch.py index 6ea04f1b4774..bed653b0e584 100644 --- a/src/Mod/BIM/Arch.py +++ b/src/Mod/BIM/Arch.py @@ -696,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 diff --git a/src/Mod/BIM/ArchCommands.py b/src/Mod/BIM/ArchCommands.py index 95c82d668989..82714de28aeb 100644 --- a/src/Mod/BIM/ArchCommands.py +++ b/src/Mod/BIM/ArchCommands.py @@ -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.""" @@ -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/ArchSchedule.py b/src/Mod/BIM/ArchSchedule.py index 720dcb04410c..78c42e4ef524 100644 --- a/src/Mod/BIM/ArchSchedule.py +++ b/src/Mod/BIM/ArchSchedule.py @@ -49,7 +49,8 @@ def QT_TRANSLATE_NOOP(ctxt,txt): __url__ = "https://www.freecad.org" -verbose = True # change this for silent recomputes +PARAMS = FreeCAD.ParamGet("User parameter:BaseApp/Preferences/Mod/BIM") +VERBOSE = True # change this for silent recomputes @@ -94,28 +95,33 @@ def update_properties_0v21(self,obj): self.setSchedulePropertySpreadsheet(sp, obj) obj.removeProperty("Result") from draftutils.messages import _wrn + if "Description" in obj.PropertiesList: + if obj.getTypeOfProperty("Description") == "App::PropertyStringList": + obj.Operation = obj.Description + obj.removeProperty("Description") + _wrn("v0.21, " + sp.Label + ", " + translate("Arch", "renamed property 'Description' to 'Operation'")) _wrn("v0.21, " + obj.Label + ", " + translate("Arch", "removed property 'Result', and added property 'AutoUpdate'")) if sp is not None: _wrn("v0.21, " + sp.Label + ", " + translate("Arch", "added property 'Schedule'")) def setProperties(self,obj): - if not "Description" in obj.PropertiesList: - obj.addProperty("App::PropertyStringList","Description", "Arch",QT_TRANSLATE_NOOP("App::Property","The description column")) + if not "Operation" in obj.PropertiesList: + obj.addProperty("App::PropertyStringList","Operation", "Schedule",QT_TRANSLATE_NOOP("App::Property","The operation column")) if not "Value" in obj.PropertiesList: - obj.addProperty("App::PropertyStringList","Value", "Arch",QT_TRANSLATE_NOOP("App::Property","The values column")) + obj.addProperty("App::PropertyStringList","Value", "Schedule",QT_TRANSLATE_NOOP("App::Property","The values column")) if not "Unit" in obj.PropertiesList: - obj.addProperty("App::PropertyStringList","Unit", "Arch",QT_TRANSLATE_NOOP("App::Property","The units column")) + obj.addProperty("App::PropertyStringList","Unit", "Schedule",QT_TRANSLATE_NOOP("App::Property","The units column")) if not "Objects" in obj.PropertiesList: - obj.addProperty("App::PropertyStringList","Objects", "Arch",QT_TRANSLATE_NOOP("App::Property","The objects column")) + obj.addProperty("App::PropertyStringList","Objects", "Schedule",QT_TRANSLATE_NOOP("App::Property","The objects column")) if not "Filter" in obj.PropertiesList: - obj.addProperty("App::PropertyStringList","Filter", "Arch",QT_TRANSLATE_NOOP("App::Property","The filter column")) + obj.addProperty("App::PropertyStringList","Filter", "Schedule",QT_TRANSLATE_NOOP("App::Property","The filter column")) if not "CreateSpreadsheet" in obj.PropertiesList: - obj.addProperty("App::PropertyBool", "CreateSpreadsheet", "Arch",QT_TRANSLATE_NOOP("App::Property","If True, a spreadsheet containing the results is recreated when needed")) + obj.addProperty("App::PropertyBool", "CreateSpreadsheet", "Schedule",QT_TRANSLATE_NOOP("App::Property","If True, a spreadsheet containing the results is recreated when needed")) if not "DetailedResults" in obj.PropertiesList: - obj.addProperty("App::PropertyBool", "DetailedResults", "Arch",QT_TRANSLATE_NOOP("App::Property","If True, additional lines with each individual object are added to the results")) + obj.addProperty("App::PropertyBool", "DetailedResults", "Schedule",QT_TRANSLATE_NOOP("App::Property","If True, additional lines with each individual object are added to the results")) if not "AutoUpdate" in obj.PropertiesList: - obj.addProperty("App::PropertyBool", "AutoUpdate", "Arch",QT_TRANSLATE_NOOP("App::Property","If True, the schedule and the associated spreadsheet are updated whenever the document is recomputed")) + obj.addProperty("App::PropertyBool", "AutoUpdate", "Schedule",QT_TRANSLATE_NOOP("App::Property","If True, the schedule and the associated spreadsheet are updated whenever the document is recomputed")) obj.AutoUpdate = True # To add the doc observer: @@ -191,7 +197,7 @@ def setSpreadsheetData(self,obj,force=False): # clearAll removes the custom property, we need to re-add it: self.setSchedulePropertySpreadsheet(sp, obj) # set headers - sp.set("A1","Description") + sp.set("A1","Operation") sp.set("B1","Value") sp.set("C1","Unit") sp.setStyle('A1:C1', 'bold', 'add') @@ -209,26 +215,26 @@ def execute(self,obj): # verify the data - if not obj.Description: + if not obj.Operation: # empty description column return for p in [obj.Value,obj.Unit,obj.Objects,obj.Filter]: # different number of items in each column - if len(obj.Description) != len(p): + if len(obj.Operation) != len(p): return self.data = {} # store all results in self.data, so it lives even without spreadsheet - li = 1 # row index - starts at 2 to leave 2 blank rows for the title + self.li = 1 # row index - starts at 2 to leave 2 blank rows for the title - for i in range(len(obj.Description)): - li += 1 - if not obj.Description[i]: + for i in range(len(obj.Operation)): + self.li += 1 + if not obj.Operation[i]: # blank line continue # write description - self.data["A"+str(li)] = obj.Description[i] - if verbose: - l= "OPERATION: "+obj.Description[i] + self.data["A"+str(self.li)] = obj.Operation[i] + if VERBOSE: + l= "OPERATION: "+obj.Operation[i] print("") print (l) print (len(l)*"=") @@ -237,6 +243,10 @@ def execute(self,obj): objs = obj.Objects[i] val = obj.Value[i] + unit = obj.Unit[i] + details = obj.DetailedResults + ifcfile = None + elts = None if val: import Draft,Arch if objs: @@ -244,143 +254,316 @@ def execute(self,obj): objs = [FreeCAD.ActiveDocument.getObject(o) for o in objs] objs = [o for o in objs if o is not None] else: + if hasattr(getattr(FreeCAD.ActiveDocument, "Proxy", None), "ifcfile"): + ifcfile = FreeCAD.ActiveDocument.Proxy.ifcfile objs = FreeCAD.ActiveDocument.Objects if len(objs) == 1: + if hasattr(objs[0], "StepId"): + from nativeifc import ifc_tools + ifcfile = ifc_tools.get_ifcfile(objs[0]) # remove object itself if the object is a group if objs[0].isDerivedFrom("App::DocumentObjectGroup"): objs = objs[0].Group objs = Draft.get_group_contents(objs) - objs = Arch.pruneIncluded(objs,strict=True) + objs = Arch.pruneIncluded(objs,strict=True,silent=True) # Remove all schedules and spreadsheets: objs = [o for o in objs if Draft.get_type(o) not in ["Schedule", "Spreadsheet::Sheet"]] + + # filter elements + if obj.Filter[i]: - # apply filters - nobjs = [] - for o in objs: - props = [p.upper() for p in o.PropertiesList] - ok = True - for f in obj.Filter[i].split(";"): - args = [a.strip() for a in f.strip().split(":")] - if args[0][0] == "!": - inv = True - prop = args[0][1:].upper() - else: - inv = False - prop = args[0].upper() - fval = args[1].upper() - if prop == "TYPE": - prop = "IFCTYPE" - if inv: - if prop in props: - csprop = o.PropertiesList[props.index(prop)] - if fval in getattr(o,csprop).upper(): - ok = False - else: - if not (prop in props): - ok = False - else: - csprop = o.PropertiesList[props.index(prop)] - if not (fval in getattr(o,csprop).upper()): - ok = False - if ok: - nobjs.append(o) - objs = nobjs + if ifcfile: + elts = self.get_ifc_elements(ifcfile, obj.Filter[i]) + else: + objs = self.apply_filter(objs, obj.Filter[i]) # perform operation: count or retrieve property - if val.upper() == "COUNT": - val = len(objs) - if verbose: - print (val, ",".join([o.Label for o in objs])) - self.data["B"+str(li)] = str(val) - if obj.DetailedResults: - # additional blank line... - li += 1 - self.data["A"+str(li)] = " " + if ifcfile: + if elts: + self.update_from_elts(elts, val, unit, details) + elif objs: + self.update_from_objs(objs, val, unit, details) + + self.setSpreadsheetData(obj) + self.save_ifc_props(obj) + + def apply_filter(self, objs, filters): + """Applies the given filters to the given list of objects""" + + nobjs = [] + for o in objs: + props = [p.upper() for p in o.PropertiesList] + ok = True + for f in filters.split(";"): + args = [a.strip() for a in f.strip().split(":")] + if args[0][0] == "!": + inv = True + prop = args[0][1:].upper() else: - vals = val.split(".") - if vals[0][0].islower(): - # old-style: first member is not a property - vals = vals[1:] - sumval = 0 - - # get unit - tp = None - unit = None - q = None - if obj.Unit[i]: - unit = obj.Unit[i] - unit = unit.replace("^","") # get rid of existing power symbol - unit = unit.replace("2","^2") - unit = unit.replace("3","^3") - unit = unit.replace("²","^2") - unit = unit.replace("³","^3") - if "2" in unit: - tp = FreeCAD.Units.Area - elif "3" in unit: - tp = FreeCAD.Units.Volume - elif "deg" in unit: - tp = FreeCAD.Units.Angle - else: - tp = FreeCAD.Units.Length - - # format value - dv = params.get_param("Decimals",path="Units") - fs = "{:."+str(dv)+"f}" # format string - for o in objs: - if verbose: - l = o.Name+" ("+o.Label+"):" - print (l+(40-len(l))*" ",end="") - try: - d = o - for v in vals: - d = getattr(d,v) - if hasattr(d,"Value"): - d = d.Value - except Exception: - FreeCAD.Console.PrintWarning(translate("Arch","Unable to retrieve value from object")+": "+o.Name+"."+".".join(vals)+"\n") + inv = False + prop = args[0].upper() + fval = args[1].upper() + if prop == "TYPE": + prop = "IFCTYPE" + if inv: + if prop in props: + csprop = o.PropertiesList[props.index(prop)] + if fval in getattr(o,csprop).upper(): + ok = False + else: + if not (prop in props): + ok = False + else: + csprop = o.PropertiesList[props.index(prop)] + if not (fval in getattr(o,csprop).upper()): + ok = False + if ok: + nobjs.append(o) + return nobjs + + def get_ifc_elements(self, ifcfile, filters): + """Retrieves IFC elements corresponding to the given filters""" + + elts = [] + for el in ifcfile.by_type("IfcProduct"): + ok = True + for f in filters.split(";"): + args = [a.strip() for a in f.strip().split(":")] + if args[0][0] == "!": + inv = True + prop = args[0][1:] + else: + inv = False + prop = args[0] + fval = args[1] + if prop.upper() in ["CLASS", "IFCCLASS", "IFCTYPE"]: + prop = "is_a" + if inv: + if prop == "is_a": + if not fval.upper().startswith("IFC"): + fval = "Ifc" + fval + fval = fval.replace(" ","") + if el.is_a(fval): + ok = False + else: + if prop in dir(el): + rval = getattr(el, prop) + if hasattr(rval, "id"): + if fval.startswith("#"): + fval = int(fval[1:]) + if rval == fval: + ok = False + else: + if prop == "is_a": + if not fval.upper().startswith("IFC"): + fval = "Ifc" + fval + fval = fval.replace(" ","") + if not el.is_a(fval): + ok = False + else: + if prop in dir(el): + rval = getattr(el, prop) + if hasattr(rval, "id"): + if fval.startswith("#"): + fval = int(fval[1:]) + if rval != fval: + ok = False else: - if verbose: - if tp and unit: - v = fs.format(FreeCAD.Units.Quantity(d,tp).getValueAs(unit).Value) - print(v,unit) - else: - print(fs.format(d)) - if obj.DetailedResults: - li += 1 - self.data["A"+str(li)] = o.Name+" ("+o.Label+")" - if tp and unit: - q = FreeCAD.Units.Quantity(d,tp) - self.data["B"+str(li)] = str(q.getValueAs(unit).Value) - self.data["C"+str(li)] = unit - else: - self.data["B"+str(li)] = str(d) - - if not sumval: - sumval = d + ok = False + if ok: + elts.append(el) + return elts + + def update_from_objs(self, objs, val, unit, details): + """Updates the spreadsheet data from FreeCAD objects""" + + if val.upper() == "COUNT": + val = len(objs) + if VERBOSE: + print (val, ",".join([o.Label for o in objs])) + self.data["B"+str(self.li)] = str(val) + if details: + # additional blank line... + self.li += 1 + self.data["A"+str(self.li)] = " " + else: + vals = val.split(".") + if vals[0][0].islower(): + # old-style: first member is not a property + vals = vals[1:] + sumval = 0 + + # get unit + tp = None + unit = None + q = None + if unit: + unit = unit.replace("^","") # get rid of existing power symbol + unit = unit.replace("2","^2") + unit = unit.replace("3","^3") + unit = unit.replace("²","^2") + unit = unit.replace("³","^3") + if "2" in unit: + tp = FreeCAD.Units.Area + elif "3" in unit: + tp = FreeCAD.Units.Volume + elif "deg" in unit: + tp = FreeCAD.Units.Angle + else: + tp = FreeCAD.Units.Length + + # format value + dv = params.get_param("Decimals",path="Units") + fs = "{:."+str(dv)+"f}" # format string + for o in objs: + if VERBOSE: + l = o.Name+" ("+o.Label+"):" + print (l+(40-len(l))*" ",end="") + try: + d = o + for v in vals: + d = getattr(d,v) + if hasattr(d,"Value"): + d = d.Value + except Exception: + t = translate("Arch","Unable to retrieve value from object") + FreeCAD.Console.PrintWarning(t+": "+o.Name+"."+".".join(vals)+"\n") + else: + if VERBOSE: + if tp and unit: + v = fs.format(FreeCAD.Units.Quantity(d,tp).getValueAs(unit).Value) + print(v,unit) + elif isinstance(d, str): + if d.replace('.', '', 1).isdigit(): + print(fs.format(d)) else: - sumval += d - val = sumval - if tp: - q = FreeCAD.Units.Quantity(val,tp) - - # write data - if obj.DetailedResults: - li += 1 - self.data["A"+str(li)] = "TOTAL" - if q and unit: - self.data["B"+str(li)] = str(q.getValueAs(unit).Value) - self.data["C"+str(li)] = unit - else: - self.data["B"+str(li)] = str(val) - if verbose: + print(d) + else: + print(fs.format(d)) + if details: + self.li += 1 + self.data["A"+str(self.li)] = o.Name+" ("+o.Label+")" if tp and unit: - v = fs.format(FreeCAD.Units.Quantity(val,tp).getValueAs(unit).Value) - print("TOTAL:"+34*" "+v+" "+unit) + q = FreeCAD.Units.Quantity(d,tp) + self.data["B"+str(self.li)] = str(q.getValueAs(unit).Value) + self.data["C"+str(self.li)] = unit else: - v = fs.format(val) - print("TOTAL:"+34*" "+v) - self.setSpreadsheetData(obj) + self.data["B"+str(self.li)] = str(d) + + if sumval: + sumval += d + else: + sumval = d + val = sumval + if tp: + q = FreeCAD.Units.Quantity(val,tp) + + # write data + if details: + self.li += 1 + self.data["A"+str(self.li)] = "TOTAL" + if q and unit: + self.data["B"+str(self.li)] = str(q.getValueAs(unit).Value) + self.data["C"+str(self.li)] = unit + else: + self.data["B"+str(self.li)] = str(val) + if VERBOSE: + if tp and unit: + v = fs.format(FreeCAD.Units.Quantity(val,tp).getValueAs(unit).Value) + print("TOTAL:"+34*" "+v+" "+unit) + elif isinstance(val, str): + if val.replace('.', '', 1).isdigit(): + v = fs.format(val) + print("TOTAL:"+34*" "+v) + else: + print("TOTAL:"+34*" "+val) + else: + v = fs.format(val) + print("TOTAL:"+34*" "+v) + + def update_from_elts(self, elts, val, unit, details): + """Updates the spreadsheet data from IFC elements""" + + if val.upper() == "COUNT": + val = len(elts) + if VERBOSE: + print ("COUNT:", val, "(", ",".join(["#"+str(e.id()) for e in elts]), ")") + self.data["B"+str(self.li)] = str(val) + if details: + # additional blank line... + self.li += 1 + self.data["A"+str(self.li)] = " " + else: + total = 0 + for el in elts: + if val in dir(el): + elval = getattr(el, val, "") + if isinstance(elval, tuple): + if len(elval) == 1: + elval = elval[0] + elif len(elval) == 0: + elval = "" + if hasattr(elval, "is_a") and elval.is_a("IfcRelationship"): + for att in dir(elval): + if att.startswith("Relating"): + targ = getattr(elval, att) + if targ != el: + elval = targ + break + elif att.startswith("Related"): + if not elval in getattr(elval, att): + elval = str(getattr(elval, att)) + break + if details: + self.li += 1 + name = el.Name if el.Name else "" + self.data["A"+str(self.li)] = "#" + str(el.id()) + name + self.data["B"+str(self.li)] = str(elval) + if VERBOSE: + print("#"+str(el.id())+"."+val+" = "+str(elval)) + if isinstance(elval, str) and elval.replace('.', '', 1).isdigit(): + total += float(elval) + elif isinstance(elval, (int, float)): + total += elval + if total: + if details: + self.li += 1 + self.data["A"+str(self.li)] = "TOTAL" + self.data["B"+str(self.li)] = str(total) + if VERBOSE: + print("TOTAL:",str(total)) + + def create_ifc(self, obj, ifcfile, export=False): + """Creates an IFC element for this object""" + + from nativeifc import ifc_tools # lazy loading + + proj = ifcfile.by_type("IfcProject")[0] + elt = ifc_tools.api_run("root.create_entity", ifcfile, ifc_class="IfcControl") + ifc_tools.set_attribute(ifcfile, elt, "Name", obj.Label) + ifc_tools.api_run("project.assign_declaration", ifcfile, definitions=[elt], relating_context=proj) + if not export: + ifc_tools.add_properties(obj, ifcfile, elt) + return elt + + def save_ifc_props(self, obj, ifcfile=None, elt=None): + """Saves the object data to IFC""" + + from nativeifc import ifc_psets # lazy loading + + ifc_psets.edit_pset(obj, "Operation", "::".join(obj.Operation), ifcfile=ifcfile, element=elt) + ifc_psets.edit_pset(obj, "Value", "::".join(obj.Value), ifcfile=ifcfile, element=elt) + ifc_psets.edit_pset(obj, "Unit", "::".join(obj.Unit), ifcfile=ifcfile, element=elt) + ifc_psets.edit_pset(obj, "Objects", "::".join(obj.Objects), ifcfile=ifcfile, element=elt) + ifc_psets.edit_pset(obj, "Filter", "::".join(obj.Filter), ifcfile=ifcfile, element=elt) + + def export_ifc(self, obj, ifcfile): + """Exports the object to IFC (does not modify the FreeCAD object).""" + + elt = self.create_ifc(obj, ifcfile, export=True) + self.save_ifc_props(obj, ifcfile, elt) + return elt def dumps(self): @@ -417,8 +600,16 @@ def setEdit(self, vobj, mode=0): return None self.taskd = ArchScheduleTaskPanel(vobj.Object) + if not self.taskd.form.isVisible(): + from PySide import QtCore + QtCore.QTimer.singleShot(100, self.showEditor) return True + def showEditor(self): + + if hasattr(self, "taskd"): + self.taskd.form.show() + def unsetEdit(self, vobj, mode): if mode != 0: return None @@ -507,30 +698,37 @@ def __init__(self,obj=None): h = params.get_param_arch("ScheduleDialogHeight") self.form.resize(w,h) + # restore default states + self.form.checkAutoUpdate.setChecked(PARAMS.GetBool("ScheduleAutoUpdate", False)) + # set delegate - Not using custom delegates for now... #self.form.list.setItemDelegate(ScheduleDelegate()) #self.form.list.setEditTriggers(QtGui.QAbstractItemView.DoubleClicked) # connect slots - QtCore.QObject.connect(self.form.buttonAdd, QtCore.SIGNAL("clicked()"), self.add) - QtCore.QObject.connect(self.form.buttonDel, QtCore.SIGNAL("clicked()"), self.remove) - QtCore.QObject.connect(self.form.buttonClear, QtCore.SIGNAL("clicked()"), self.clear) - QtCore.QObject.connect(self.form.buttonImport, QtCore.SIGNAL("clicked()"), self.importCSV) - QtCore.QObject.connect(self.form.buttonExport, QtCore.SIGNAL("clicked()"), self.export) - QtCore.QObject.connect(self.form.buttonSelect, QtCore.SIGNAL("clicked()"), self.select) - QtCore.QObject.connect(self.form.buttonBox, QtCore.SIGNAL("accepted()"), self.accept) - QtCore.QObject.connect(self.form.buttonBox, QtCore.SIGNAL("rejected()"), self.reject) - QtCore.QObject.connect(self.form, QtCore.SIGNAL("rejected()"), self.reject) + self.form.buttonAdd.clicked.connect(self.add) + self.form.buttonDel.clicked.connect(self.remove) + self.form.buttonClear.clicked.connect(self.clear) + self.form.buttonImport.clicked.connect(self.importCSV) + self.form.buttonExport.clicked.connect(self.export) + self.form.buttonSelect.clicked.connect(self.select) + self.form.buttonBox.accepted.connect(self.accept) + self.form.buttonBox.rejected.connect(self.reject) + self.form.rejected.connect(self.reject) self.form.list.clearContents() if self.obj: - for p in [obj.Value,obj.Unit,obj.Objects,obj.Filter]: - if len(obj.Description) != len(p): - return - self.form.list.setRowCount(len(obj.Description)) + #for p in [obj.Value,obj.Unit,obj.Objects,obj.Filter]: + # if len(obj.Operation) != len(p): + # return + self.form.list.setRowCount(len(obj.Operation)) for i in range(5): - for j in range(len(obj.Description)): - item = QtGui.QTableWidgetItem([obj.Description,obj.Value,obj.Unit,obj.Objects,obj.Filter][i][j]) + for j in range(len(obj.Operation)): + try: + text = [obj.Operation,obj.Value,obj.Unit,obj.Objects,obj.Filter][i][j] + except: + text = "" + item = QtGui.QTableWidgetItem(text) self.form.list.setItem(j,i,item) self.form.lineEditName.setText(self.obj.Label) self.form.checkSpreadsheet.setChecked(self.obj.CreateSpreadsheet) @@ -646,7 +844,7 @@ def exportCSV(self,filename,delimiter="\t"): import csv with open(filename, 'w') as csvfile: csvfile = csv.writer(csvfile,delimiter=delimiter) - csvfile.writerow([translate("Arch","Description"),translate("Arch","Value"),translate("Arch","Unit")]) + csvfile.writerow([translate("Arch","Operation"),translate("Arch","Value"),translate("Arch","Unit")]) if self.obj.DetailedResults: csvfile.writerow(["","",""]) for i in self.getRows(): @@ -664,7 +862,7 @@ def exportMD(self,filename): """Exports the results as a Markdown file""" with open(filename, 'w') as mdfile: - mdfile.write("| "+translate("Arch","Description")+" | "+translate("Arch","Value")+" | "+translate("Arch","Unit")+" |\n") + mdfile.write("| "+translate("Arch","Operation")+" | "+translate("Arch","Value")+" | "+translate("Arch","Unit")+" |\n") mdfile.write("| --- | --- | --- |\n") if self.obj.DetailedResults: mdfile.write("| | | |\n") @@ -704,6 +902,9 @@ def accept(self): params.set_param_arch("ScheduleDialogWidth",self.form.width()) params.set_param_arch("ScheduleDialogHeight",self.form.height()) + # store default states + PARAMS.SetBool("ScheduleAutoUpdate", self.form.checkAutoUpdate.isChecked()) + # commit values self.writeValues() self.form.hide() @@ -723,13 +924,8 @@ def writeValues(self): """commits values and recalculate""" if not self.obj: - self.obj = FreeCAD.ActiveDocument.addObject("App::FeaturePython","Schedule") - self.obj.Label = translate("Arch","Schedule") - _ArchSchedule(self.obj) - if FreeCAD.GuiUp: - _ViewProviderArchSchedule(self.obj.ViewObject) - if hasattr(self.obj,"CreateSpreadsheet") and self.obj.CreateSpreadsheet: - self.obj.Proxy.getSpreadSheet(self.obj, force=True) + import Arch + self.obj = Arch.makeSchedule() lists = [ [], [], [], [], [] ] for i in range(self.form.list.rowCount()): for j in range(5): @@ -739,7 +935,7 @@ def writeValues(self): else: lists[j].append("") FreeCAD.ActiveDocument.openTransaction("Edited Schedule") - self.obj.Description = lists[0] + self.obj.Operation = lists[0] self.obj.Value = lists[1] self.obj.Unit = lists[2] self.obj.Objects = lists[3] diff --git a/src/Mod/BIM/CMakeLists.txt b/src/Mod/BIM/CMakeLists.txt index 1607425e3664..b4b13cd9c15e 100644 --- a/src/Mod/BIM/CMakeLists.txt +++ b/src/Mod/BIM/CMakeLists.txt @@ -78,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 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/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/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/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/importers/exportIFC.py b/src/Mod/BIM/importers/exportIFC.py index 39a3e594408e..3f2b6420a687 100644 --- a/src/Mod/BIM/importers/exportIFC.py +++ b/src/Mod/BIM/importers/exportIFC.py @@ -272,14 +272,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 +293,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']: @@ -1296,6 +1300,14 @@ def export(exportList, filename, colors=None, preferences=None): ann = create_annotation(anno, ifcfile, context, history, preferences) annos[anno.Name] = ann + # specials. Specials should take care of register themselves where needed under the project + + 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 sortedgroups = [] diff --git a/src/Mod/BIM/nativeifc/ifc_export.py b/src/Mod/BIM/nativeifc/ifc_export.py index a5b8901b7272..68c5efbb8dba 100644 --- a/src/Mod/BIM/nativeifc/ifc_export.py +++ b/src/Mod/BIM/nativeifc/ifc_export.py @@ -187,6 +187,8 @@ def get_object_type(ifcentity, objecttype=None): objecttype = "text" elif ifcentity.is_a("IfcGridAxis"): objecttype = "axis" + elif ifcentity.is_a("IfcControl"): + objecttype = "schedule" return objecttype diff --git a/src/Mod/BIM/nativeifc/ifc_objects.py b/src/Mod/BIM/nativeifc/ifc_objects.py index 6a4c3ea33556..d7cc61097142 100644 --- a/src/Mod/BIM/nativeifc/ifc_objects.py +++ b/src/Mod/BIM/nativeifc/ifc_objects.py @@ -84,6 +84,8 @@ def onChanged(self, obj, prop): obj.ViewObject.signalChangeIcon() elif hasattr(obj, prop) and obj.getGroupOfProperty(prop) == "Geometry": self.edit_geometry(obj, prop) + 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) @@ -353,6 +355,11 @@ def edit_type(self, obj): # Not doing anything right now because an unset Type property could screw the ifc file pass + + 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""" diff --git a/src/Mod/BIM/nativeifc/ifc_observer.py b/src/Mod/BIM/nativeifc/ifc_observer.py index d75e46d7045c..aba3de0252c3 100644 --- a/src/Mod/BIM/nativeifc/ifc_observer.py +++ b/src/Mod/BIM/nativeifc/ifc_observer.py @@ -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_psets.py b/src/Mod/BIM/nativeifc/ifc_psets.py index d6dd7bae7f1c..472a751e32be 100644 --- a/src/Mod/BIM/nativeifc/ifc_psets.py +++ b/src/Mod/BIM/nativeifc/ifc_psets.py @@ -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_tools.py b/src/Mod/BIM/nativeifc/ifc_tools.py index 6b62a241714e..c248d54856e3 100644 --- a/src/Mod/BIM/nativeifc/ifc_tools.py +++ b/src/Mod/BIM/nativeifc/ifc_tools.py @@ -46,6 +46,7 @@ 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 @@ -443,7 +444,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: @@ -453,7 +454,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 @@ -508,11 +509,14 @@ def add_object(document, otype=None, oname="IfcObject"): 'dimension', 'sectionplane', 'axis', + 'schedule' or anything else for a standard IFC object""" if not document: return None - if otype == "sectionplane": + if otype == "schedule": + obj = Arch.makeSchedule() + elif otype == "sectionplane": obj = Arch.makeSectionPlane() obj.Proxy = ifc_objects.ifc_object(otype) elif otype == "axis": @@ -746,6 +750,8 @@ def add_properties( 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"): @@ -1150,6 +1156,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 @@ -1163,7 +1170,6 @@ 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": @@ -1173,12 +1179,16 @@ def aggregate(obj, parent, mode=None): 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, 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 @@ -1524,6 +1534,12 @@ def get_orphan_elements(ifcfile): 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", []): 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. - 制御ダンパã®é–‹åº¦ï¼ˆï¼ï½žï¼‘) - - - - 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. - ターミナルã®å½¢çŠ¶ï¼ˆå††çŠ¶ã€å››è§’å½¢ã€æ­£æ–¹å½¢ã€ã‚¹ãƒ­ãƒƒãƒˆä»–)。 スロット(æºçŠ¶ï¼‰ã¯ä¸€èˆ¬çš„ã«ã‚¢ã‚¹ãƒšã‚¯ãƒˆæ¯”1ï¼ä»¥ä¸ŠãŒå…¸åž‹çš„ã§ã‚る。 - - - - 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 - æµã‚Œç¨®é¡žï¼ˆå˜ä¸€ç›´ç·šã€è…¹å¼ç›´ç·šã€ï¼”æ–¹å‘ã€æ”¾å°„状ã€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. - 水平翼ã®ä¸­å¿ƒç·šã‹ã‚‰ã®æ°´å¹³ï¼ˆãƒ­ãƒ¼ã‚«ãƒ«åº§æ¨™ã®ï¼¸è»¸ï¼‰é¢ã®ç¾½æ ¹è§’度 - - - - 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. - 垂直翼ã®ä¸­å¿ƒç·šã‹ã‚‰ã®åž‚直(ローカル座標ã®ï¼¹è»¸ï¼‰æ–¹å‘ã®ç¾½æ ¹è§’度 - - - - 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 (固定ã€ï¼’段階ã€æ¯”例...) - - - - 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") - - - - 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ã¨ã»ã¨ã‚“ã©ç­‰ã—ã„。é®è”½ä¿‚æ•°ã¯ï¼ã‹ã‚‰ï¼‘ã¾ã§ã®å˜ä½ç„¡ã—ã®å€¤ã€‚ - (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プロパティå‚照)ã ã‘ã«ã‚ã¦ã¯ã¾ã‚Šã¾ã™ã€‚å…¨ã¦ã®æŒ‡æ¨™ã®å€¤ã¯ã€æœŸå¾…ã•ã‚Œã‚‹è€ç”¨å¹´æ•°ã«ã‚ˆã£ã¦å¹´ã”ã¨ã«è¡¨ç¾ã•ã‚Œã¾ã™ã€‚åˆã‚ã®ï¼•ã¤ã®ãƒ—ロパティ㯠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 - æµé‡ - - - - 実際ã®æŽ’æ°´æµé‡ã€€ã€€ï¼.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度)方å‘çš„å¡åº¦è§’。 -建筑规范或其他规定è¦æ±‚的通é“的最大å¡åº¦ã€‚ - - - - 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 - 手洗ã„種類 - - - - 手洗ã„ã®ç¨®é¡žã¯è¨­ç½®ã•ã‚Œã‚‹å ´æ‰€ã§å®šç¾©ã•ã‚Œã¾ã™ã€‚ - -歯科用痰壷:å£ã‚’ゆã™ãéš›ã«å—ã‘ã¦æµã™å»ƒæ°´æ©Ÿå™¨ -手洗ã„:500ï½ï½ä»¥ä¸‹ã®å¹…ã®å£æŽ›ã‘型手洗ㄠ-病院用:サイフォンã‹æ°¾æ¿«é˜²æ­¢å¼ãŒä»˜ã„ãŸè¡›ç”ŸãŒæœ€å„ªå…ˆã¨ã•ã‚Œã‚‹å ´æ‰€ã§ä½¿ç”¨ã•ã‚Œã‚‹æ‰‹æ´—ã„æ´—é¢å™¨ -上ã’èµ·ã“ã—型:角度調整ã«ã‚ˆã£ã¦ç©ºã«ã§ãる軸上ã«è¨­ç½®ã•ã‚ŒãŸæ‰‹æ´—ã„ -化粧å°ï¼šåœ°å¹³é¢ã«è¨­ç½®ã•ã‚ŒãŸæ‰‹æ´—ã„å° -洗浄噴水型:一人以上ã®äººé–“ãŒåŒæ™‚ã«ä½¿ç”¨ã§ãる円・åŠå††ãƒ»å¤šè§’å½¢ã®æ´—é¢å° -洗浄ボウル:一人以上ã®äººé–“ãŒåŒæ™‚ã«ä½¿ç”¨ã§ãる多角形ã®æ´—é¢å° - - - - 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ã«ã‚ˆã£ã¦è¨­å®šã™ã‚‹ã€‚地ç†æƒ…å ±ã«é–¢ã™ã‚‹ç·¯åº¦ãƒ»çµŒåº¦ãƒ»æ¨™é«˜å€¤ã¯ï¼©fcSite.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 - 空気抵抗曲線 - - - - 空気抵抗曲線(é€é¢¨æ©Ÿã®ã¿ï¼‰åœ§åŠ›ï¼ï½†ï¼ˆæµé€Ÿï¼‰ - - - - 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 - 温度分類 - - - - 暖房用ヒーター表é¢æ¸©åº¦ã®æ¸©åº¦åˆ†é¡žã‚’定義。低温タイプ-ãŠæ¹¯ã¾ãŸï½ˆé›»æ°—ã«ã‚ˆã‚‹ã‚‚ã®ã®è¡¨é¢æ¸©åº¦ã¯ç›¸å¯¾çš„ã«ä½Žã„。高温タイプ-ガスã¾ãŸã¯è’¸æ°—ã«ã‚ˆã£ã¦ç†±ã™ã‚‹ã‚¿ã‚¤ãƒ—ã®è¡¨é¢æ¸©åº¦ã¯æ¯”較的高ã„。 - - - - 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 - å‚ç…§è¨˜å· - - - - ã“ã®è¦æ ¼(例ã€ï¼¡ï¼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 - 始動タイプ - 시작 유형 - - - - 以下よりé¸æŠžãŒå¿…è¦ã¨ãªã‚‹ã€å§‹å‹•ã®ä¸€è¦§ãƒªã‚¹ãƒˆï¼š - -自動: 自動トランスã‹ã‚‰å¼•ã出ã•ã‚ŒãŸï¼‘ã¤ä»¥ä¸Šã®ä½Žä¸‹ã—ãŸé›»åœ§ã§ã‚¹ã‚¿ãƒ¼ãƒˆã™ã‚‹ãŸã‚ã«ä½¿ç”¨ã™ã‚‹èª˜å°Žé›»å‹•æ©Ÿç”¨ã®ã‚¹ã‚¿ãƒ¼ã‚¿ãƒ¼ (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ã®ï¼’ã¤ã®ãƒã‚¸ã‚·ãƒ§ãƒ³ã®å‹•ä½œã§ã€é›»åŠ›ã‚’接続ã—ãŸã‚Šé®æ–­ã—ãŸã‚Šã™ã‚‹ã‚¹ã‚¤ãƒƒãƒã§ã‚る。 -履歴: 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 - å‚ç…§è¨˜å· - - - - ã“ã®è¦æ ¼(例ã€ï¼¡ï¼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 - 呼称躯体長 - - - - 防臭å¼ã®åŒºç”»ã®åŠå¾„ã‹å±€æ‰€åº§æ¨™ç³»ã®ï¼¸è»¸ã«æ²¿ã£ã¦æ¸¬å®šã•ã‚ŒãŸå‘¼ç§°ã‚‚ã—ãã¯ç©ç®—ã•ã‚ŒãŸé•·ã•ã€‚ - - - - NominalBodyWidth - Nominal or quoted length measured along the y-axis in the local coordinate system of the chamber of the trap. - - - - - - - Nominal Body Width - 呼称躯体幅 - - - - 防臭å¼ã®åŒºç”»ã®åŠå¾„ã‹å±€æ‰€åº§æ¨™ç³»ã®ï¼¹è»¸ã«æ²¿ã£ã¦æ¸¬å®šã•ã‚ŒãŸå‘¼ç§°ã‚‚ã—ãã¯ç©ç®—ã•ã‚ŒãŸé•·ã•ã€‚ - - - - 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 - 呼称躯体長 - - - - 廃棄物ã®åŒºç”»ã®åŠå¾„ã‹å±€æ‰€åº§æ¨™ç³»ã®ï¼¸è»¸ã«æ²¿ã£ã¦æ¸¬å®šã•ã‚ŒãŸå‘¼ç§°ã‚‚ã—ãã¯ç©ç®—ã•ã‚ŒãŸé•·ã•ã€‚ - - - - NominalBodyWidth - Nominal or quoted length measured along the y-axis in the local coordinate system of the waste. - - - - - - - Nominal Body Width - 呼称躯体幅 - - - - 廃棄物ã®åŠå¾„ã‹å±€æ‰€åº§æ¨™ç³»ã®ï¼¹è»¸ã«æ²¿ã£ã¦æ¸¬å®šã•ã‚ŒãŸå‘¼ç§°ã‚‚ã—ãã¯ç©ç®—ã•ã‚ŒãŸé•·ã•ã€‚ - - - - 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 - 呼称躯体長 - - - - æºé˜²è‡­å¼ã®åŠå¾„ã‹å±€æ‰€åº§æ¨™ç³»ã®ï¼¸è»¸ã«æ²¿ã£ã¦æ¸¬å®šã•ã‚ŒãŸå‘¼ç§°ã‚‚ã—ãã¯ç©ç®—ã•ã‚ŒãŸé•·ã•ã€‚ - - - - 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 - 呼称躯体幅 - - - - æºé˜²è‡­å¼ã®åŠå¾„ã‹å±€æ‰€åº§æ¨™ç³»ã®ï¼¹è»¸ã«æ²¿ã£ã¦æ¸¬å®šã•ã‚ŒãŸå‘¼ç§°ã‚‚ã—ãã¯ç©ç®—ã•ã‚ŒãŸé•·ã•ã€‚ - - - - 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 - 呼称躯体長 - - - - åŠå¾„ã‹å±€æ‰€åº§æ¨™ç³»ã®ï¼¸è»¸ã«æ²¿ã£ã¦æ¸¬å®šã•ã‚ŒãŸå‘¼ç§°ã‚‚ã—ãã¯ç©ç®—ã•ã‚ŒãŸé…管ã®é•·ã•ã€‚ - - - - NominalBodyWidth - Nominal or quoted length measured along the y-axis in the local coordinate system of the drain. - - - - - - - Nominal Body Width - 呼称躯体幅 - - - - åŠå¾„ã‹å±€æ‰€åº§æ¨™ç³»ã®ï¼¹è»¸ã«æ²¿ã£ã¦æ¸¬å®šã•ã‚ŒãŸå‘¼ç§°ã‚‚ã—ãã¯ç©ç®—ã•ã‚ŒãŸé…管ã®é•·ã•ã€‚ - - - - 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ã«é–¢ã™ã‚‹å…±é€šãƒ—ロパティセット定義。 - - From 3d830b5b2e36cb60fdd603ac41a5b3f612429a70 Mon Sep 17 00:00:00 2001 From: marioalexis Date: Fri, 20 Dec 2024 12:18:12 -0300 Subject: [PATCH 197/221] Fem: Add suppressible extension to objects - fixes #12115 --- src/Mod/Fem/App/FemMeshObject.cpp | 2 ++ src/Mod/Fem/App/FemMeshObject.h | 4 ++++ src/Mod/Fem/Gui/ViewProviderFemMesh.cpp | 2 ++ src/Mod/Fem/Gui/ViewProviderFemMesh.h | 2 ++ src/Mod/Fem/femobjects/base_femelement.py | 5 +++++ src/Mod/Fem/femobjects/material_common.py | 5 +++++ src/Mod/Fem/femobjects/material_mechanicalnonlinear.py | 4 ++++ src/Mod/Fem/femtools/checksanalysis.py | 2 +- src/Mod/Fem/femtools/membertools.py | 6 +----- src/Mod/Fem/femviewprovider/view_base_femelement.py | 4 ++++ src/Mod/Fem/femviewprovider/view_base_femmaterial.py | 4 ++++ 11 files changed, 34 insertions(+), 6 deletions(-) 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/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/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/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/femtools/checksanalysis.py b/src/Mod/Fem/femtools/checksanalysis.py index a3cc34480db2..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 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 From 9e6f3660e51663c7a29b2a20986f14685e90ca1f Mon Sep 17 00:00:00 2001 From: marioalexis Date: Tue, 24 Dec 2024 10:32:39 -0300 Subject: [PATCH 198/221] Fem: Add suppressible extension to mesh element objects --- src/Mod/Fem/femmesh/gmshtools.py | 6 ++++++ src/Mod/Fem/femmesh/netgentools.py | 2 ++ src/Mod/Fem/femobjects/base_femmeshelement.py | 5 +++++ src/Mod/Fem/femviewprovider/view_base_femmeshelement.py | 4 ++++ 4 files changed, 17 insertions(+) diff --git a/src/Mod/Fem/femmesh/gmshtools.py b/src/Mod/Fem/femmesh/gmshtools.py index 1ea5a11813cd..6c284dc81a92 100644 --- a/src/Mod/Fem/femmesh/gmshtools.py +++ b/src/Mod/Fem/femmesh/gmshtools.py @@ -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 = [] diff --git a/src/Mod/Fem/femmesh/netgentools.py b/src/Mod/Fem/femmesh/netgentools.py index 488f9967711f..5ffed44c66f0 100644 --- a/src/Mod/Fem/femmesh/netgentools.py +++ b/src/Mod/Fem/femmesh/netgentools.py @@ -366,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_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/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 From a3e49023d14464d81e5986b3e4fecebeb5d2d20e Mon Sep 17 00:00:00 2001 From: WandererFan Date: Mon, 6 Jan 2025 12:02:37 -0500 Subject: [PATCH 199/221] [TD]Symbol scaling (fix #14400) (#18757) * [TD]add legacy/new svg scaling pref * [TD]Change Svg scaling logic (fix 14400) --- src/Mod/TechDraw/App/Preferences.cpp | 6 ++ src/Mod/TechDraw/App/Preferences.h | 2 + src/Mod/TechDraw/Gui/QGIViewSymbol.cpp | 90 ++++++++++++++++++++++---- src/Mod/TechDraw/Gui/QGIViewSymbol.h | 2 + 4 files changed, 86 insertions(+), 14 deletions(-) diff --git a/src/Mod/TechDraw/App/Preferences.cpp b/src/Mod/TechDraw/App/Preferences.cpp index 53096b691088..6577a700fe53 100644 --- a/src/Mod/TechDraw/App/Preferences.cpp +++ b/src/Mod/TechDraw/App/Preferences.cpp @@ -676,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 2d1a99476fcf..2a62f585bc0e 100644 --- a/src/Mod/TechDraw/App/Preferences.h +++ b/src/Mod/TechDraw/App/Preferences.h @@ -157,6 +157,8 @@ class TechDrawExport Preferences static bool checkShapesBeforeUse(); static bool debugBadShape(); + static bool useLegacySvgScaling(); + }; 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; From d0eb91c4cca4a8239cbeb4ccee29af320ceaabce Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 27 Dec 2024 17:18:36 +0100 Subject: [PATCH 200/221] Part: Fix doc string of TopoShape.inTolerance --- src/Mod/Part/App/TopoShapePy.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 From d8794b3a148b00ff208ca3a8f82e2e6a305e1813 Mon Sep 17 00:00:00 2001 From: mosfet80 Date: Fri, 27 Dec 2024 21:29:52 +0100 Subject: [PATCH 201/221] Clean OpenSCAD2Dgeom.py --- src/Mod/OpenSCAD/OpenSCAD2Dgeom.py | 49 ++---------------------------- 1 file changed, 3 insertions(+), 46 deletions(-) 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)): From 35766406910e56b288a0a6bfea98a076767ec983 Mon Sep 17 00:00:00 2001 From: David Carter Date: Fri, 27 Dec 2024 16:47:49 -0500 Subject: [PATCH 202/221] Materials: Physical properties reversion Reverts PR #17438 The PR experienced sever performance issues when the file contained objects with errors. This PR removes the physical properties attributes and its associated calculations. It retains changes to the material filter funtions which were not affected by the errors. --- src/Mod/Part/App/PartFeature.cpp | 62 -------------------------------- src/Mod/Part/App/PartFeature.h | 10 ------ 2 files changed, 72 deletions(-) diff --git a/src/Mod/Part/App/PartFeature.cpp b/src/Mod/Part/App/PartFeature.cpp index b4550f49a3e8..46514b035ee3 100644 --- a/src/Mod/Part/App/PartFeature.cpp +++ b/src/Mod/Part/App/PartFeature.cpp @@ -93,39 +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"); - Density.setFormat( - Base::QuantityFormat(Base::QuantityFormat::NumberFormat::Default, MaterialPrecision)); - ADD_PROPERTY_TYPE(Mass, - (0.0), - group, - static_cast(App::Prop_ReadOnly | App::Prop_Output - | App::Prop_NoRecompute | App::Prop_NoPersist), - "Feature mass"); - Mass.setFormat( - Base::QuantityFormat(Base::QuantityFormat::NumberFormat::Default, MaterialPrecision)); - ADD_PROPERTY_TYPE(Volume, - (1.0), - group, - static_cast(App::Prop_ReadOnly | App::Prop_Output - | App::Prop_NoRecompute | App::Prop_NoPersist), - "Feature volume"); - Volume.setFormat( - Base::QuantityFormat(Base::QuantityFormat::NumberFormat::Default, MaterialPrecision)); } Feature::~Feature() = default; @@ -1533,40 +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 - 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 From b1d6a821785fd444d3cba102f73710583596f5df Mon Sep 17 00:00:00 2001 From: wmayer Date: Fri, 27 Dec 2024 15:25:10 +0100 Subject: [PATCH 203/221] Gui: Check for exising layout before accessing it It still must be checked if the crash in #18747 will be fixed. --- src/Gui/DlgPreferencesImp.cpp | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/Gui/DlgPreferencesImp.cpp b/src/Gui/DlgPreferencesImp.cpp index b2296a331e4b..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 From 93aa3b312f1656134f2835ad78eb349479a483a3 Mon Sep 17 00:00:00 2001 From: WandererFan Date: Mon, 6 Jan 2025 12:11:25 -0500 Subject: [PATCH 204/221] [TD]Fix RichText parent in scene (fix #18283) (#18768) * [TD]allow DrawViewAnno to be attached to another view * [TD]allow image and spreadsheet attach to view * [TD]ensure correct parent in scene * [TD]refactor command helpers to separate file - gathering the helpers in one place - helper redundancy to be address in another change * [TD]create symbol, spreadsheet, image with parent * [TD]fix claimChildren for some views - also includes many lint fixes --- src/Mod/TechDraw/App/DrawViewAnnotation.cpp | 19 +- src/Mod/TechDraw/App/DrawViewAnnotation.h | 6 + src/Mod/TechDraw/App/DrawViewImage.cpp | 2 + src/Mod/TechDraw/App/DrawViewImage.h | 4 + src/Mod/TechDraw/App/DrawViewSpreadsheet.cpp | 3 + src/Mod/TechDraw/App/DrawViewSpreadsheet.h | 4 + src/Mod/TechDraw/Gui/CMakeLists.txt | 2 + src/Mod/TechDraw/Gui/Command.cpp | 31 ++- src/Mod/TechDraw/Gui/CommandAnnotate.cpp | 64 +---- src/Mod/TechDraw/Gui/CommandDecorate.cpp | 10 + src/Mod/TechDraw/Gui/CommandHelpers.cpp | 228 +++++++++++++++++ src/Mod/TechDraw/Gui/CommandHelpers.h | 71 ++++++ src/Mod/TechDraw/Gui/QGIViewBalloon.cpp | 2 +- src/Mod/TechDraw/Gui/QGSPage.cpp | 230 ++++++++++-------- src/Mod/TechDraw/Gui/QGSPage.h | 11 +- src/Mod/TechDraw/Gui/ViewProviderBalloon.cpp | 50 ++-- src/Mod/TechDraw/Gui/ViewProviderBalloon.h | 10 +- .../TechDraw/Gui/ViewProviderDimension.cpp | 62 +++-- src/Mod/TechDraw/Gui/ViewProviderDimension.h | 5 +- src/Mod/TechDraw/Gui/ViewProviderLeader.cpp | 14 +- .../TechDraw/Gui/ViewProviderProjGroup.cpp | 71 +++--- src/Mod/TechDraw/Gui/ViewProviderProjGroup.h | 11 +- src/Mod/TechDraw/Gui/ViewProviderRichAnno.cpp | 45 +++- src/Mod/TechDraw/Gui/ViewProviderRichAnno.h | 10 +- src/Mod/TechDraw/Gui/ZVALUE.h | 3 +- 25 files changed, 697 insertions(+), 271 deletions(-) create mode 100644 src/Mod/TechDraw/Gui/CommandHelpers.cpp create mode 100644 src/Mod/TechDraw/Gui/CommandHelpers.h 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/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 2e722514afef..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); } 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/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..87f33de1ef15 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); @@ -1558,8 +1559,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 +1731,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 +1746,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 +1754,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/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/QGIViewBalloon.cpp b/src/Mod/TechDraw/Gui/QGIViewBalloon.cpp index f137ebd864bc..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); 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/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; } From f48ccba2d9f23d5e5de8541e0899409f6348758b Mon Sep 17 00:00:00 2001 From: Yury Shvedov Date: Sun, 15 Dec 2024 15:30:39 +0300 Subject: [PATCH 205/221] Macro: allow to specify extra system paths for macro This introduce new option `-E [ --macro-path]` to specify extra system paths of macros. The macro found in this paths will appear in `Macros` dialog at `System macros` tab. Change-Id: Ic21631ec0ebe8af5c7f42b4fe95400cfb67807d5 --- src/App/Application.cpp | 14 ++++++- src/App/FreeCADInit.py | 3 +- src/Gui/DlgMacroExecuteImp.cpp | 71 +++++++++++++++++++++------------- src/Gui/DlgMacroExecuteImp.h | 1 + 4 files changed, 59 insertions(+), 30 deletions(-) diff --git a/src/App/Application.cpp b/src/App/Application.cpp index 56ef0a38b2ba..1eb6ff50f858 100644 --- a/src/App/Application.cpp +++ b/src/App/Application.cpp @@ -2252,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") @@ -2294,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; @@ -2429,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) @@ -2593,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/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/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: From af1aa403e2be338995ec41392ccb4989b7f78bb7 Mon Sep 17 00:00:00 2001 From: Benjamin Nauck Date: Thu, 26 Dec 2024 11:59:35 +0100 Subject: [PATCH 206/221] Spreadsheet: Center text (v+h) vertical headers --- src/Mod/Spreadsheet/Gui/SheetTableView.cpp | 1 + 1 file changed, 1 insertion(+) diff --git a/src/Mod/Spreadsheet/Gui/SheetTableView.cpp b/src/Mod/Spreadsheet/Gui/SheetTableView.cpp index 403fe5b136ce..732e714bddca 100644 --- a/src/Mod/Spreadsheet/Gui/SheetTableView.cpp +++ b/src/Mod/Spreadsheet/Gui/SheetTableView.cpp @@ -182,6 +182,7 @@ SheetTableView::SheetTableView(QWidget* parent) horizontalHeader()->setContextMenuPolicy(Qt::CustomContextMenu); verticalHeader()->setContextMenuPolicy(Qt::CustomContextMenu); + verticalHeader()->setDefaultAlignment(Qt::AlignHCenter | Qt::AlignVCenter); contextMenu.addAction(actionProperties); connect(actionProperties, &QAction::triggered, this, &SheetTableView::cellProperties); From af667d6fd85fcab7a33124bcfb7de1653c13d560 Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Fri, 27 Dec 2024 18:57:45 +0100 Subject: [PATCH 207/221] Part: copy_visual_attributes did not handle Draft Link arrays Fixes #16541. Fixes #18760. --- src/Mod/Part/BOPTools/BOPFeatures.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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 From 73ce3b15d6a65c82c24a566f49e5596d8d210fb3 Mon Sep 17 00:00:00 2001 From: FEA-eng <59876896+FEA-eng@users.noreply.github.com> Date: Fri, 27 Dec 2024 14:36:45 +0100 Subject: [PATCH 208/221] FEM: Update magnetodynamic_writer.py --- .../Fem/femsolver/elmer/equations/magnetodynamic_writer.py | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) 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) From 52365410451a4bca7a2ab126b017fe4906843b86 Mon Sep 17 00:00:00 2001 From: FEA-eng <59876896+FEA-eng@users.noreply.github.com> Date: Mon, 6 Jan 2025 18:24:56 +0100 Subject: [PATCH 209/221] FEM: Add accuracy parameter for CalculiX buckling analysis (#18790) * FEM: Update solver.py * FEM: Update write_step_equation.py * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> --- src/Mod/Fem/femsolver/calculix/solver.py | 9 +++++++++ src/Mod/Fem/femsolver/calculix/write_step_equation.py | 5 ++++- 2 files changed, 13 insertions(+), 1 deletion(-) 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") From b86e1adb22c98cc89ced66032e237314f13411da Mon Sep 17 00:00:00 2001 From: Syres916 <46537884+Syres916@users.noreply.github.com> Date: Mon, 6 Jan 2025 17:32:56 +0000 Subject: [PATCH 210/221] [Techdraw] Import SVG files with UTF-8 encoding (#18816) * [Techdraw] Fix importing SVG files with UTF-8 encoding * [Techdraw] fix Lint feedback --- src/Mod/TechDraw/CMakeLists.txt | 1 + src/Mod/TechDraw/Gui/Command.cpp | 24 +++++++++++++------ src/Mod/TechDraw/TDTest/DrawViewSymbolTest.py | 23 +++++++++++++++++- .../TechDraw/TDTest/TestNonAsciiSymbol.svg | 23 ++++++++++++++++++ 4 files changed, 63 insertions(+), 8 deletions(-) create mode 100644 src/Mod/TechDraw/TDTest/TestNonAsciiSymbol.svg 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/Command.cpp b/src/Mod/TechDraw/Gui/Command.cpp index 87f33de1ef15..3d4bd35ebf3f 100644 --- a/src/Mod/TechDraw/Gui/Command.cpp +++ b/src/Mod/TechDraw/Gui/Command.cpp @@ -456,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"); @@ -1551,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')", 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 + + Ä + + Ö + + Ãœ + + From 013eb6e6353ab6e5077ab4696653c9b493442638 Mon Sep 17 00:00:00 2001 From: lorenz Date: Mon, 6 Jan 2025 18:34:17 +0100 Subject: [PATCH 211/221] pixi: update to py3.13 (#18832) * pixi: update to py3.13 * pixi: Update gh-action to use pixi v0.39.4 * Pixi: add dep. xorg-xproto for linux * update lock-file --- .github/workflows/sub_buildPixi.yml | 2 +- pixi.lock | 26520 ++++++++++---------------- pixi.toml | 6 +- 3 files changed, 9810 insertions(+), 16718 deletions(-) diff --git a/.github/workflows/sub_buildPixi.yml b/.github/workflows/sub_buildPixi.yml index 6e5d3d014d82..3c6d2cb5b03e 100644 --- a/.github/workflows/sub_buildPixi.yml +++ b/.github/workflows/sub_buildPixi.yml @@ -108,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/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 f2c17fa8fc4f..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] From 8c5a87e8943f392311c1d785303aa9c92327e4a7 Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Mon, 6 Jan 2025 20:28:00 +0100 Subject: [PATCH 212/221] Part: Rename new datum commands Fixes #18853. --- src/Mod/Part/Gui/Command.cpp | 80 ++++++++++++++++++------------------ 1 file changed, 40 insertions(+), 40 deletions(-) diff --git a/src/Mod/Part/Gui/Command.cpp b/src/Mod/Part/Gui/Command.cpp index eed34ee9debc..2baefb624ff9 100644 --- a/src/Mod/Part/Gui/Command.cpp +++ b/src/Mod/Part/Gui/Command.cpp @@ -2243,8 +2243,8 @@ CmdPartCoordinateSystem::CmdPartCoordinateSystem() : Command("Part_CoordinateSystem") { sGroup = QT_TR_NOOP("Part"); - sMenuText = QT_TR_NOOP("Create a coordinate system"); - sToolTipText = QT_TR_NOOP("A coordinate system object that can be attached to other objects."); + 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"; @@ -2269,100 +2269,100 @@ bool CmdPartCoordinateSystem::isActive() } //=========================================================================== -// Part_Plane +// Part_DatumPlane //=========================================================================== -DEF_STD_CMD_A(CmdPartPlane) +DEF_STD_CMD_A(CmdPartDatumPlane) -CmdPartPlane::CmdPartPlane() - : Command("Part_Plane") +CmdPartDatumPlane::CmdPartDatumPlane() + : Command("Part_DatumPlane") { sGroup = QT_TR_NOOP("Part"); - sMenuText = QT_TR_NOOP("Create a datum plane"); - sToolTipText = QT_TR_NOOP("A plane object that can be attached to other objects."); - sWhatsThis = "Part_Plane"; + 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 CmdPartPlane::activated(int iMsg) +void CmdPartDatumPlane::activated(int iMsg) { Q_UNUSED(iMsg); openCommand(QT_TRANSLATE_NOOP("Command", "Add a datum plane")); - std::string name = getUniqueObjectName("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 CmdPartPlane::isActive() +bool CmdPartDatumPlane::isActive() { return hasActiveDocument(); } //=========================================================================== -// Part_Line +// Part_DatumLine //=========================================================================== -DEF_STD_CMD_A(CmdPartLine) +DEF_STD_CMD_A(CmdPartDatumLine) -CmdPartLine::CmdPartLine() - : Command("Part_Line") +CmdPartDatumLine::CmdPartDatumLine() + : Command("Part_DatumLine") { sGroup = QT_TR_NOOP("Part"); - sMenuText = QT_TR_NOOP("Create a datum line"); - sToolTipText = QT_TR_NOOP("A line object that can be attached to other objects."); - sWhatsThis = "Part_Line"; + 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 CmdPartLine::activated(int iMsg) +void CmdPartDatumLine::activated(int iMsg) { Q_UNUSED(iMsg); openCommand(QT_TRANSLATE_NOOP("Command", "Add a datum line")); - std::string name = getUniqueObjectName("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 CmdPartLine::isActive() +bool CmdPartDatumLine::isActive() { return hasActiveDocument(); } //=========================================================================== -// Part_Point +// Part_DatumPoint //=========================================================================== -DEF_STD_CMD_A(CmdPartPoint) +DEF_STD_CMD_A(CmdPartDatumPoint) -CmdPartPoint::CmdPartPoint() - : Command("Part_Point") +CmdPartDatumPoint::CmdPartDatumPoint() + : Command("Part_DatumPoint") { sGroup = QT_TR_NOOP("Part"); - sMenuText = QT_TR_NOOP("Create a datum point"); - sToolTipText = QT_TR_NOOP("A point object that can be attached to other objects."); - sWhatsThis = "Part_Point"; + 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 CmdPartPoint::activated(int iMsg) +void CmdPartDatumPoint::activated(int iMsg) { Q_UNUSED(iMsg); openCommand(QT_TRANSLATE_NOOP("Command", "Add a datum point")); - std::string name = getUniqueObjectName("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 CmdPartPoint::isActive() +bool CmdPartDatumPoint::isActive() { return hasActiveDocument(); } @@ -2378,17 +2378,17 @@ class CmdPartDatums : public Gui::GroupCommand : GroupCommand("Part_Datums") { sGroup = QT_TR_NOOP("Part"); - sMenuText = QT_TR_NOOP("Create a datum"); - sToolTipText = QT_TR_NOOP("Create a datum object (LCS, Plane, Line, Point) that can be attached to other objects."); + 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_Plane"); - addCommand("Part_Line"); - addCommand("Part_Point"); + addCommand("Part_DatumPlane"); + addCommand("Part_DatumLine"); + addCommand("Part_DatumPoint"); } const char* className() const override @@ -2448,8 +2448,8 @@ void CreatePartCommands() rcCmdMgr.addCommand(new CmdPartSectionCut()); rcCmdMgr.addCommand(new CmdPartCoordinateSystem()); - rcCmdMgr.addCommand(new CmdPartPlane()); - rcCmdMgr.addCommand(new CmdPartLine()); - rcCmdMgr.addCommand(new CmdPartPoint()); + rcCmdMgr.addCommand(new CmdPartDatumPlane()); + rcCmdMgr.addCommand(new CmdPartDatumLine()); + rcCmdMgr.addCommand(new CmdPartDatumPoint()); rcCmdMgr.addCommand(new CmdPartDatums()); } From 049f42c8871594e6d696656386c9dddf6b8927ef Mon Sep 17 00:00:00 2001 From: JULIEN MASNADA Date: Tue, 7 Jan 2025 10:03:02 +0100 Subject: [PATCH 213/221] SH3DImporter: Fix walls Length attribute (#18854) * Make IFC project optional * make sure wall.Length is properly set --------- Co-authored-by: Yorik van Havre --- src/Mod/BIM/Resources/ui/preferences-sh3d-import.ui | 4 ++-- src/Mod/BIM/importers/importSH3DHelper.py | 3 +++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/Mod/BIM/Resources/ui/preferences-sh3d-import.ui b/src/Mod/BIM/Resources/ui/preferences-sh3d-import.ui index 347db98a3331..ffc9bcc6d30a 100644 --- a/src/Mod/BIM/Resources/ui/preferences-sh3d-import.ui +++ b/src/Mod/BIM/Resources/ui/preferences-sh3d-import.ui @@ -261,7 +261,7 @@ - Create a default Render project with the newly Site + Create a default Render project with the newly created Site Create Render Project (requires Render) @@ -350,4 +350,4 @@ - \ No newline at end of file + diff --git a/src/Mod/BIM/importers/importSH3DHelper.py b/src/Mod/BIM/importers/importSH3DHelper.py index 1555978d4431..34a0679fbb57 100644 --- a/src/Mod/BIM/importers/importSH3DHelper.py +++ b/src/Mod/BIM/importers/importSH3DHelper.py @@ -848,6 +848,9 @@ def _create_wall(self, floor, prev, next, elm): 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): From 6deb42453964d728bf260ce35b3a3a05fc4ebf1a Mon Sep 17 00:00:00 2001 From: Roy-043 <70520633+Roy-043@users.noreply.github.com> Date: Tue, 7 Jan 2025 10:23:33 +0100 Subject: [PATCH 214/221] Draft: Closed corners for extruded Facebinders (#18901) * Draft: props_changed_placement_only should ignore material props The new material related properties (Density, Volume and Mass) must be ignored by the `props_changed_placement_only` function. Without this moving a Draft_Point will fail for example. * Draft: Closed corners for extruded Facebinders Fixes #13816. The `makeOffsetShape` method that creates the extruded shape is quite picky. For example, it will work for a pyramidal shell (4 triangles) with a square floorplan, but not if the floorplan is slightly rectangular. To get closed corners the `Sew` property of the Facebinder must be set to `True`. If extruding does not work properly, the code will retry with `Sew` disabled. There is also some code that tries to convert flat B-spline faces created between the main offset faces into planar faces. In some cases that code will fail (the results of `makeOffsetShape` can already contain errors). If that is the case the original shape created by `makeOffsetShape` is used. * Rebase to restore base.py --- src/Mod/Draft/draftobjects/facebinder.py | 155 ++++++++++++++++------- 1 file changed, 108 insertions(+), 47 deletions(-) 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) From b5e2e8c007a32b1df4499b91bfb73939fce166a5 Mon Sep 17 00:00:00 2001 From: Yorik van Havre Date: Tue, 7 Jan 2025 10:35:37 +0100 Subject: [PATCH 215/221] BIM: Added classifications support to nativeifc (#18444) * BIM: Added classifications support to nativeifc * BIM: Fixed lint warnings --- src/Mod/BIM/ArchCurtainWall.py | 2 + src/Mod/BIM/CMakeLists.txt | 1 + src/Mod/BIM/bimcommands/BimClassification.py | 105 +++++++++++-------- src/Mod/BIM/bimcommands/BimMaterial.py | 11 +- src/Mod/BIM/importers/exportIFC.py | 35 ++++++- src/Mod/BIM/nativeifc/ifc_classification.py | 104 ++++++++++++++++++ src/Mod/BIM/nativeifc/ifc_objects.py | 51 +++------ src/Mod/BIM/nativeifc/ifc_status.py | 4 + src/Mod/BIM/nativeifc/ifc_tools.py | 21 ++-- src/Mod/BIM/nativeifc/ifc_types.py | 35 +++++++ src/Mod/BIM/nativeifc/ifc_viewproviders.py | 2 + 11 files changed, 279 insertions(+), 92 deletions(-) create mode 100644 src/Mod/BIM/nativeifc/ifc_classification.py 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/CMakeLists.txt b/src/Mod/BIM/CMakeLists.txt index b4b13cd9c15e..98756b73b6c5 100644 --- a/src/Mod/BIM/CMakeLists.txt +++ b/src/Mod/BIM/CMakeLists.txt @@ -193,6 +193,7 @@ SET(nativeifc_SRCS nativeifc/ifc_openshell.py nativeifc/ifc_types.py nativeifc/ifc_export.py + nativeifc/ifc_classification.py ) SOURCE_GROUP("" FILES ${Arch_SRCS}) 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/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/importers/exportIFC.py b/src/Mod/BIM/importers/exportIFC.py index 3f2b6420a687..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") @@ -339,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 @@ -934,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 @@ -2471,7 +2499,7 @@ def writeJson(filename,ifcfile): def create_annotation(anno, ifcfile, context, history, preferences): """Creates an annotation object""" - # uses global ifcbin, curvestyles + global curvestyles, ifcbin objectType = None ovc = None zvc = None @@ -2479,6 +2507,7 @@ def create_annotation(anno, ifcfile, context, history, preferences): reps = [] repid = "Annotation" reptype = "Annotation2D" + description = getattr(anno, "Description", None) if anno.isDerivedFrom("Part::Feature"): if Draft.getType(anno) == "Hatch": objectType = "HATCH" 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_objects.py b/src/Mod/BIM/nativeifc/ifc_objects.py index d7cc61097142..e2c1b2323fb8 100644 --- a/src/Mod/BIM/nativeifc/ifc_objects.py +++ b/src/Mod/BIM/nativeifc/ifc_objects.py @@ -23,6 +23,7 @@ """This module contains IFC object definitions""" import FreeCAD +import FreeCADGui translate = FreeCAD.Qt.translate # the property groups below should not be treated as psets @@ -59,7 +60,9 @@ 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 hasattr(obj, prop) and obj.getGroupOfProperty(prop) == "IFC": @@ -111,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): @@ -322,38 +321,10 @@ def edit_group(self, obj): def edit_type(self, obj): """Edits the type of this object""" - from nativeifc import ifc_tools # lazy import - from nativeifc import ifc_types + from nativeifc import ifc_types # lazy import + + ifc_types.edit_type(obj) - 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_quantity(self, obj, prop): @@ -403,6 +374,14 @@ def get_section_data(self, obj): return [], None + 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: """Holder for the document's IFC objects""" diff --git a/src/Mod/BIM/nativeifc/ifc_status.py b/src/Mod/BIM/nativeifc/ifc_status.py index 8c0ed11012e9..14d36894e8d7 100644 --- a/src/Mod/BIM/nativeifc/ifc_status.py +++ b/src/Mod/BIM/nativeifc/ifc_status.py @@ -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 diff --git a/src/Mod/BIM/nativeifc/ifc_tools.py b/src/Mod/BIM/nativeifc/ifc_tools.py index c248d54856e3..bc1599e0a854 100644 --- a/src/Mod/BIM/nativeifc/ifc_tools.py +++ b/src/Mod/BIM/nativeifc/ifc_tools.py @@ -185,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: @@ -1633,11 +1635,14 @@ def remove_tree(objs): def recompute(children): """Temporary function to recompute objects. Some objects don't get their shape correctly at creation""" - import time - stime = time.time() + #import time + #stime = time.time() + doc = None for c in children: - c.touch() - if not FreeCAD.ActiveDocument.Recomputing: - FreeCAD.ActiveDocument.recompute() - endtime = "%02d:%02d" % (divmod(round(time.time() - stime, 1), 60)) - print("DEBUG: Extra recomputing of",len(children),"objects took",endtime) + 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_types.py b/src/Mod/BIM/nativeifc/ifc_types.py index ea31ba6c4906..0a714fa6d5a1 100644 --- a/src/Mod/BIM/nativeifc/ifc_types.py +++ b/src/Mod/BIM/nativeifc/ifc_types.py @@ -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 9402bf66104e..77f99c20a924 100644 --- a/src/Mod/BIM/nativeifc/ifc_viewproviders.py +++ b/src/Mod/BIM/nativeifc/ifc_viewproviders.py @@ -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): From 278ce803907ef72548d7ac761613038ac435c481 Mon Sep 17 00:00:00 2001 From: je-cook <81617086+je-cook@users.noreply.github.com> Date: Tue, 7 Jan 2025 09:43:50 +0000 Subject: [PATCH 216/221] BIM: Speedup and refactor WebGL exporting (#18843) * Stylistic changes and slight refactor * speed up compression algorithm --- src/Mod/BIM/importers/importWebGL.py | 373 ++++++++++++++++----------- 1 file changed, 229 insertions(+), 144 deletions(-) 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) From c42031690377122a80ff574ef596b2a6cec5adbf Mon Sep 17 00:00:00 2001 From: Yury Shvedov Date: Sun, 15 Dec 2024 19:15:48 +0300 Subject: [PATCH 217/221] about: handle additional modules in clipboard We are able to pass extra modules path with command line arguments. Handle such modules when copying about information to clipboard. Change-Id: I158b6ea021cc0a5dfd27693d22f6c56a6bdcd239 --- src/Gui/DlgAbout.cpp | 64 +++++++++++++++++++++++++++++--------------- src/Gui/DlgAbout.h | 2 ++ 2 files changed, 45 insertions(+), 21 deletions(-) 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; From 89b95fc938d8fb7a40669bad323ed5b2639c411e Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Wed, 8 Jan 2025 14:36:07 +0100 Subject: [PATCH 218/221] Draft: fix selection for FacebinderTaskPanel See: https://forum.freecad.org/viewtopic.php?t=93682 --- src/Mod/Draft/DraftGui.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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: From f6f11ac4299fa96c7559f175b9fd66b9fc491738 Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Wed, 8 Jan 2025 18:11:42 +0100 Subject: [PATCH 219/221] Draft (and Pref Packs): fix snapcolor Fixes #17978. --- src/Gui/PreferencePacks/Dark behave/Dark behave.cfg | 2 +- src/Gui/PreferencePacks/FreeCAD Classic/FreeCAD Classic.cfg | 2 +- src/Gui/PreferencePacks/FreeCAD Dark/FreeCAD Dark.cfg | 2 +- src/Gui/PreferencePacks/FreeCAD Light/FreeCAD Light.cfg | 2 +- src/Mod/Draft/Resources/ui/preferences-draftsnap.ui | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) 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 8bac8f722dd2..5684929b53bf 100644 --- a/src/Gui/PreferencePacks/FreeCAD Dark/FreeCAD Dark.cfg +++ b/src/Gui/PreferencePacks/FreeCAD Dark/FreeCAD Dark.cfg @@ -50,7 +50,7 @@ - + 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/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 From bee46bca6865f01bc7fa3047ccca20ec9448af2f Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Wed, 8 Jan 2025 22:25:25 +0100 Subject: [PATCH 220/221] Core: fix sWhatsThis for Std_LinkActions --- src/Gui/CommandLink.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Gui/CommandLink.cpp b/src/Gui/CommandLink.cpp index f9bb92cbc6c4..875f5b093b5a 100644 --- a/src/Gui/CommandLink.cpp +++ b/src/Gui/CommandLink.cpp @@ -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; From 3b258b6178cbcd7fc2be0a8e5fe512b434f52e5d Mon Sep 17 00:00:00 2001 From: Roy-043 Date: Wed, 8 Jan 2025 17:50:02 +0100 Subject: [PATCH 221/221] Draft: fix axis calculation in make_sketch Fixes #18713. The code follows the suggestion by imm/webmite: https://forum.freecad.org/viewtopic.php?p=799014#p799014 @webmite Thank you. --- src/Mod/Draft/draftmake/make_sketch.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/Mod/Draft/draftmake/make_sketch.py b/src/Mod/Draft/draftmake/make_sketch.py index 736b39a8c5a5..72789b909366 100644 --- a/src/Mod/Draft/draftmake/make_sketch.py +++ b/src/Mod/Draft/draftmake/make_sketch.py @@ -176,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